Просмотр исходного кода

Merge remote-tracking branch 'origin/feat/292-customize-email'

# Conflicts:
#	lib/views/user_page.html
Yuki Takei 8 лет назад
Родитель
Сommit
74b922dbe2

+ 2 - 1
lib/form/me/user.js

@@ -6,5 +6,6 @@ var form = require('express-form')
 module.exports = form(
   field('userForm.name').trim().required(),
   field('userForm.email').trim().isEmail().required(),
-  field('userForm.lang').required()
+  field('userForm.lang').required(),
+  field('userForm.isEmailPublished').trim().toBooleanStrict().required()
 );

+ 5 - 0
lib/locales/en-US/translation.json

@@ -66,6 +66,11 @@
   "Google Setting": "Google Setting",
   "Connected": "Connected",
   "Disconnect": "Disconnect",
+  "Show": "Show",
+  "Hide": "Hide",
+  "Disclose E-mail": "Disclose E-mail",
+  
+  
 
   "Create today's": "Create today's ...",
   "Memo": "memo",

+ 6 - 0
lib/locales/ja/translation.json

@@ -63,6 +63,12 @@
   "Google Setting": "Google設定",
   "Connected": "接続されています",
   "Disconnect": "接続を解除",
+  "Show": "公開",
+  "Hide": "非公開",
+  "Disclose E-mail": "メールアドレスの公開",
+  
+ 
+  
 
   "Create today's": "今日の◯◯を作成",
   "Memo": "メモ",

+ 9 - 0
lib/models/user.js

@@ -29,6 +29,7 @@ module.exports = function(crowi) {
     userId: String,
     image: String,
     isGravatarEnabled: { type: Boolean, default: false },
+    isEmailPublished: { type: Boolean, default: true },
     googleId: String,
     name: { type: String },
     username: { type: String, required: true, unique: true },
@@ -155,6 +156,14 @@ module.exports = function(crowi) {
     });
   };
 
+
+  userSchema.methods.updateIsEmailPublished = function(isEmailPublished, callback) {
+    this.isEmailPublished = isEmailPublished;
+    this.save(function(err, userData) {
+      return callback(err, userData);
+    });
+  };
+
   userSchema.methods.updatePassword = function(password, callback) {
     this.setPassword(password);
     this.save(function(err, userData) {

+ 3 - 2
lib/routes/me.js

@@ -83,7 +83,8 @@ module.exports = function(crowi, app) {
     if (req.method == 'POST' && req.form.isValid) {
       var name = userForm.name;
       var email = userForm.email;
-      var lang= userForm.lang;
+      var lang = userForm.lang;
+      var isEmailPublished = userForm.isEmailPublished;
 
       /*
        * disabled because the system no longer allows undefined email -- 2017.10.06 Yuki Takei
@@ -96,7 +97,7 @@ module.exports = function(crowi, app) {
 
       User.findOneAndUpdate(
         { email: userData.email },                  // query
-        { name, email, lang },                      // updating data
+        { name, email, lang, isEmailPublished },                      // updating data
         { runValidators: true, context: 'query' },  // for validation
                                                     //   see https://www.npmjs.com/package/mongoose-unique-validator#find--updates -- 2017.09.24 Yuki Takei
         (err) => {

+ 2 - 2
lib/views/me/api_token.html

@@ -28,13 +28,13 @@
 
   {% set message = req.flash('successMessage') %}
   {% if message.length %}
-  <div class="alert alert-success">
+  <div class="alert alert-success m-t-10">
     {{ message }}
   </div>
   {% endif %}
 
   {% if req.form.errors.length > 0 %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     <ul>
     {% for error in req.form.errors %}
       <li>{{ error }}</li>

+ 4 - 4
lib/views/me/external-accounts.html

@@ -24,7 +24,7 @@
 
   {% set couldntDisassociateError = req.flash('couldntDisassociateError') %}
   {% if couldntDisassociateError != null %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     <b>Couldn't disassociate External Account</b><br>
     You have not set a password and have only one External Account.
   </div>
@@ -33,7 +33,7 @@
   {% set error = req.flash('errorMessage') %}
   {% if error.length %}
   {% for e in error %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     <b>Server Error occured:</b><br>
     {{ e }}
   </div>
@@ -43,7 +43,7 @@
   {% set warn = req.flash('warningMessage') %}
   {% if warn.length %}
   {% for w in warn %}
-  <div class="alert alert-warning">
+  <div class="alert alert-warning m-t-10">
     {{ w }}
   </div>
   {% endfor %}
@@ -51,7 +51,7 @@
 
   {% set message = req.flash('successMessage') %}
   {% if message.length %}
-  <div class="alert alert-success">
+  <div class="alert alert-success m-t-10">
     <b>{{ message }}</b>
   </div>
   {% endif %}

+ 17 - 3
lib/views/me/index.html

@@ -26,20 +26,20 @@
 
   {% set smessage = req.flash('successMessage') %}
   {% if smessage.length %}
-  <div class="alert alert-success">
+  <div class="alert alert-success m-t-10">
     {{ smessage }}
   </div>
   {% endif %}
 
   {% set wmessage = req.flash('warningMessage') %}
   {% if wmessage.length %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     {{ wmessage }}
   </div>
   {% endif %}
 
   {% if req.form.errors.length > 0 %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     <ul>
     {% for error in req.form.errors %}
       <li>{{ error }}</li>
@@ -77,6 +77,19 @@
           {% endif %}
         </div>
       </div>
+      <div class="form-group">
+        <label for="userForm[isEmailPublished]" class="col-sm-2 control-label">{{ t('Disclose E-mail') }}</label>
+        <div class="col-sm-4">
+          <div class="radio radio-primary radio-inline">
+            <input type="radio" id="radioEmailShow" name="userForm[isEmailPublished]" value="{{ true }}" {% if user.isEmailPublished == true %}checked="checked"{% endif %}>
+            <label for="radioEmailShow">{{ t('Show') }}</label>
+          </div>
+          <div class="radio radio-primary radio-inline">
+            <input type="radio" id="radioEmailHide" name="userForm[isEmailPublished]" value="{{ false }}" {% if user.isEmailPublished == false %}checked="checked"{% endif %}>
+            <label for="radioEmailHide">{{ t('Hide') }}</label>
+          </div>
+        </div>
+      </div>
       <div class="form-group {% if not user.lang %}has-error{% endif %}">
         <label for="userForm[lang]" class="col-sm-2 control-label">{{ t('Language') }}</label>
         <div class="col-sm-4">
@@ -90,6 +103,7 @@
           </div>
         </div>
       </div>
+
       <div class="form-group">
         <div class="col-sm-offset-2 col-sm-10">
           <button type="submit" class="btn btn-primary">{{ t('Update') }}</button>

+ 3 - 3
lib/views/me/password.html

@@ -25,20 +25,20 @@
   <div class="tab-content">
 
   {% if not user.password %}
-  <div class="alert alert-warning">
+  <div class="alert alert-warning m-t-10">
     {{ t('Password is not set') }}
   </div>
   {% endif %}
 
   {% set message = req.flash('successMessage') %}
   {% if message.length %}
-  <div class="alert alert-success">
+  <div class="alert alert-success m-t-10">
     {{ message }}
   </div>
   {% endif %}
 
   {% if req.form.errors.length > 0 %}
-  <div class="alert alert-danger">
+  <div class="alert alert-danger m-t-10">
     <ul>
     {% for error in req.form.errors %}
       <li>{{ error }}</li>

+ 8 - 1
lib/views/widget/user_page_header.html

@@ -14,7 +14,14 @@
         <div class="user-page-meta">
           <ul>
             <li class="user-page-username"><i class="icon-user"></i> {{ pageUser.username }}</li>
-            <li class="user-page-email"><i class="icon-envelope"></i> {{ pageUser.email }}</li>
+            <li class="user-page-email">
+              <i class="icon-envelope"></i>
+              {% if pageUser.isEmailPublished %}
+                {{ pageUser.email }}
+              {% else %}
+                *****
+              {% endif %}
+            </li>
             {% if pageUser.introduction %}
             <li class="user-page-introduction"><p>{{ pageUser.introduction|nl2br }}</p></li>
             {% endif %}