Yuki Takei 9 лет назад
Родитель
Сommit
2ace8681bc
6 измененных файлов с 113 добавлено и 66 удалено
  1. 1 0
      lib/models/user.js
  2. 92 65
      lib/views/me/index.html
  3. 1 0
      locales/en-US/translation.json
  4. 1 0
      locales/ja/translation.json
  5. 1 0
      package.json
  6. 17 1
      yarn.lock

+ 1 - 0
lib/models/user.js

@@ -27,6 +27,7 @@ module.exports = function(crowi) {
   userSchema = new mongoose.Schema({
     userId: String,
     image: String,
+    isGravaterEnabled: { type: Boolean, default: false },
     googleId: String,
     name: { type: String },
     username: { type: String, index: true },

+ 92 - 65
lib/views/me/index.html

@@ -94,81 +94,108 @@
   </div>
 
   <div class="form-box">
-    <fieldset>
-      <legend>{{ t('Set Profile Image') }}</legend>
-        <div class="form-group">
-          <div id="pictureUploadFormMessage"></div>
-          <label for="" class="col-sm-3 control-label">
-            {{ t('Current Image') }}
-          </label>
-          <div class="col-sm-9">
-            <p>
-            <img src="{{ user|picture }}" width="64" id="settingUserPicture"><br>
-            </p>
-            <p>
-            {% if user.image %}
-            <form action="/me/picture/delete" method="post" class="form-horizontal" role="form" onsubmit="return window.confirm('{{ t('Delete this image?') }}');">
-              <button type="submit" class="btn btn-danger">{{ t('Delete Image') }}</button>
-            </form>
-            {% endif %}
-            </p>
+    <form action="/me/imagetype" method="post" class="form" role="form">
+      <fieldset>
+        <legend>{{ t('Set Profile Image') }}</legend>
+        <div class="form-group col-sm-offset-1 col-sm-4">
+          <div class="radio">
+            <h4>
+              <input type="radio" name="userForm[isGravaterEnabled]" value="true" {% if user.isGravaterEnabled %}checked="checked"{% endif %}>
+              <img src="https://www.gravatar.com/avatar/00000000000000000000000000000000?s=24" /> Gravater
+            </h4>
+          </div>
+        </div><!-- /.col-sm* -->
+        <div class="form-group col-sm-4">
+          <div class="radio">
+            <h4>
+              <input type="radio" name="userForm[isGravaterEnabled]" value="false" {% if !user.isGravaterEnabled  %}checked="checked"{% endif %}>{{ t('Upload Image') }}
+            </h4>
           </div>
-        </div> {# /.form-group# #}
+
+          <div class="form-group">
+            <div id="pictureUploadFormMessage"></div>
+            <label for="" class="col-sm-6 control-label">
+              {{ t('Current Image') }}
+            </label>
+            <div class="col-sm-6">
+              <p>
+              <img src="{{ user|picture }}" width="64" id="settingUserPicture"><br>
+              </p>
+              <p>
+              {% if user.image %}
+              <form action="/me/picture/delete" method="post" class="form-horizontal" role="form" onsubmit="return window.confirm('{{ t('Delete this image?') }}');">
+                <button type="submit" class="btn btn-danger">{{ t('Delete Image') }}</button>
+              </form>
+              {% endif %}
+              </p>
+            </div>
+          </div><!-- /.form-group -->
+
+          <div class="form-group">
+            <label for="" class="col-sm-6 control-label">
+              {{ t('Upload new image') }}
+            </label>
+            <div class="col-sm-6">
+              {% if isUploadable() %}
+              <form action="/_api/me/picture/upload" id="pictureUploadForm" method="post" class="form-horizontal" role="form" enctype="multipart/form-data">
+                <input name="userPicture" type="file" accept="image/*">
+                <div id="pictureUploadFormProgress">
+                </div>
+              </form>
+              {% else %}
+              * {{ t('page_me.form_help.profile_image1') }}<br>
+              * {{ t('page_me.form_help.profile_image2') }}<br>
+              {% endif %}
+            </div>
+          </div><!-- /.form-group -->
+
+        </div><!-- /.col-sm- -->
 
         <div class="form-group">
-          <label for="" class="col-sm-3 control-label">
-            {{ t('Upload new image') }}
-          </label>
-          <div class="col-sm-9">
-            {% if isUploadable() %}
-            <form action="/_api/me/picture/upload" id="pictureUploadForm" method="post" class="form-horizontal" role="form" enctype="multipart/form-data">
-              <input name="userPicture" type="file" accept="image/*">
-              <div id="pictureUploadFormProgress">
-              </div>
-            </form>
-            {% else %}
-            * {{ t('page_me.form_help.profile_image1') }}<br>
-            * {{ t('page_me.form_help.profile_image2') }}<br>
-            {% endif %}
+          <div class="col-sm-offset-4 col-sm-6">
+            <button type="submit" class="btn btn-primary">{{ t('Update') }}</button>
           </div>
         </div>
+
       </fieldset>
-    </div>
-    <script>
-    $(function()
-    {
-      $("#pictureUploadForm input[name=userPicture]").on('change', function(){
-        var $form = $('#pictureUploadForm');
-        var fd = new FormData($form[0]);
-        if ($(this).val() == '') {
-          return false;
-        }
+    </form>
+  </div><!-- /.form-box -->
 
-        $('#pictureUploadFormProgress').html('<img src="/images/loading_s.gif"> アップロード中...');
-        $.ajax($form.attr("action"), {
-          type: 'post',
-          processData: false,
-          contentType: false,
-          data: fd,
-          dataType: 'json',
-          success: function(data){
-            if (data.status) {
-              $('#settingUserPicture').attr('src', data.url + '?time=' + (new Date()));
-              $('#pictureUploadFormMessage')
-                .addClass('alert alert-success')
-                .html('変更しました');
-            } else {
-              $('#pictureUploadFormMessage')
-                .addClass('alert alert-danger')
-                .html('変更中にエラーが発生しました。');
-            }
-            $('#pictureUploadFormProgress').html('');
-          }
-        });
+  <script>
+  $(function()
+  {
+    $("#pictureUploadForm input[name=userPicture]").on('change', function(){
+      var $form = $('#pictureUploadForm');
+      var fd = new FormData($form[0]);
+      if ($(this).val() == '') {
         return false;
+      }
+
+      $('#pictureUploadFormProgress').html('<img src="/images/loading_s.gif"> アップロード中...');
+      $.ajax($form.attr("action"), {
+        type: 'post',
+        processData: false,
+        contentType: false,
+        data: fd,
+        dataType: 'json',
+        success: function(data){
+          if (data.status) {
+            $('#settingUserPicture').attr('src', data.url + '?time=' + (new Date()));
+            $('#pictureUploadFormMessage')
+              .addClass('alert alert-success')
+              .html('変更しました');
+          } else {
+            $('#pictureUploadFormMessage')
+              .addClass('alert alert-danger')
+              .html('変更中にエラーが発生しました。');
+          }
+          $('#pictureUploadFormProgress').html('');
+        }
       });
+      return false;
     });
-    </script>
+  });
+  </script>
 
   <div class="row">
     {% if googleLoginEnabled() %}

+ 1 - 0
locales/en-US/translation.json

@@ -51,6 +51,7 @@
   "English": "English",
   "Japanese": "Japanese",
   "Set Profile Image": "Set Profile Image",
+  "Upload Image": "Upload Image",
   "Current Image": "Current Image",
   "Delete Image": "Delete Image",
   "Delete this image?": "Delete this image?",

+ 1 - 0
locales/ja/translation.json

@@ -51,6 +51,7 @@
   "English": "英語",
   "Japanese": "日本語",
   "Set Profile Image": "プロフィール画像の設定",
+  "Upload Image": "画像をアップロード",
   "Current Image": "現在の画像",
   "Delete Image": "画像を削除",
   "Delete this image?": "削除してよろしいですか?",

+ 1 - 0
package.json

@@ -89,6 +89,7 @@
     "inline-attachment": "git+https://github.com/Rovak/InlineAttachment.git#2.0.3",
     "jquery.cookie": "~1.4.1",
     "marked": "~0.3.6",
+    "md5": "^2.2.1",
     "method-override": "~2.3.1",
     "mkdirp": "~0.5.1",
     "moment": "^2.18.0",

+ 17 - 1
yarn.lock

@@ -1133,6 +1133,10 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
+charenc@~0.0.1:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
+
 chokidar@^1.4.3:
   version "1.6.1"
   resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
@@ -1541,6 +1545,10 @@ crowi-pluginkit@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/crowi-pluginkit/-/crowi-pluginkit-1.1.0.tgz#c423f812a1d5198f57ba0180230b6be53120595d"
 
+crypt@~0.0.1:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
+
 cryptiles@2.x.x:
   version "2.0.5"
   resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
@@ -2796,7 +2804,7 @@ is-binary-path@^1.0.0:
   dependencies:
     binary-extensions "^1.0.0"
 
-is-buffer@^1.0.2:
+is-buffer@^1.0.2, is-buffer@~1.1.1:
   version "1.1.5"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
 
@@ -3441,6 +3449,14 @@ math-expression-evaluator@^1.2.14:
   version "1.2.16"
   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9"
 
+md5@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
+  dependencies:
+    charenc "~0.0.1"
+    crypt "~0.0.1"
+    is-buffer "~1.1.1"
+
 media-typer@0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"