Browse Source

Fetch updatePost setting

Sotaro KARASAWA 10 years ago
parent
commit
08dc547643
4 changed files with 43 additions and 8 deletions
  1. 10 2
      lib/routes/page.js
  2. 2 1
      lib/views/_form.html
  3. 30 4
      resource/js/crowi-form.js
  4. 1 1
      resource/js/crowi.js

+ 10 - 2
lib/routes/page.js

@@ -505,11 +505,19 @@ module.exports = function(crowi, app) {
    * @apiParam {String} path
    * @apiParam {String} path
    */
    */
   api.getUpdatePost = function(req, res) {
   api.getUpdatePost = function(req, res) {
-    var path = req.body.path;
+    var path = req.query.path;
     var UpdatePost = crowi.model('UpdatePost');
     var UpdatePost = crowi.model('UpdatePost');
 
 
-    UpdatePost.findSettingsByPath(pageData.path)
+    if (!path) {
+      return res.json(ApiResponse.error({}));
+    }
+
+    UpdatePost.findSettingsByPath(path)
     .then(function(data) {
     .then(function(data) {
+      data = data.map(function(e) {
+        return e.channel;
+      });
+      debug('Found updatePost data', data);
       var result = {updatePost: data};
       var result = {updatePost: data};
       return res.json(ApiResponse.success(result));
       return res.json(ApiResponse.success(result));
     }).catch(function(err) {
     }).catch(function(err) {

+ 2 - 1
lib/views/_form.html

@@ -20,7 +20,7 @@
         ファイルを追加 ...
         ファイルを追加 ...
       </button>#}
       </button>#}
 
 
-      <div class="pull-right form-inline page-form-setting">
+      <div class="pull-right form-inline page-form-setting" id="page-form-setting" data-slack-configured="{{ slackConfigured() }}">
         {% if slackConfigured() %}
         {% if slackConfigured() %}
         <span class="input-group extended-setting">
         <span class="input-group extended-setting">
           <span class="input-group-addon">
           <span class="input-group-addon">
@@ -30,6 +30,7 @@
             </label>
             </label>
           </span>
           </span>
           <input class="form-control" type="text" name="pageForm[notify][slack][channel]" value="{{ page.extented.slack|default('') }}" placeholder="slack-channel-name"
           <input class="form-control" type="text" name="pageForm[notify][slack][channel]" value="{{ page.extented.slack|default('') }}" placeholder="slack-channel-name"
+            id="page-form-slack-channel"
             data-toggle="popover"
             data-toggle="popover"
             title="Slack通知"
             title="Slack通知"
             data-content="通知するにはチェックを入れてください。カンマ区切りで複数チャンネルに通知することができます。"
             data-content="通知するにはチェックを入れてください。カンマ区切りで複数チャンネルに通知することができます。"

+ 30 - 4
resource/js/crowi-form.js

@@ -1,14 +1,40 @@
 $(function() {
 $(function() {
+  var pageId = $('#content-main').data('page-id');
+  var pagePath= $('#content-main').data('path');
 
 
   // show/hide
   // show/hide
+  function FetchPagesUpdatePostAndInsert(path) {
+    $.get('/_api/pages.updatePost', {path: path}, function(res) {
+      if (res.ok) {
+        var $slackChannels = $('#page-form-slack-channel');
+        $slackChannels.val(res.updatePost.join(','));
+      }
+    });
+  }
+
+  var slackConfigured = $('#page-form-setting').data('slack-configured');
+
+  // for new page
+  if (!pageId) {
+    if (slackConfigured) {
+      FetchPagesUpdatePostAndInsert(pagePath);
+    }
+  }
+
   $('a[data-toggle="tab"][href="#edit-form"]').on('show.bs.tab', function() {
   $('a[data-toggle="tab"][href="#edit-form"]').on('show.bs.tab', function() {
     $('.content-main').addClass('on-edit');
     $('.content-main').addClass('on-edit');
 
 
-    var pathData = $('#content-main').data('path');
-    $.get('/_api/pages.updatePost', {path: pathData}, function(res) {
-      console.log(res);
-    });
+    if (slackConfigured) {
+      var $slackChannels = $('#page-form-slack-channel');
+      var slackChannels = $slackChannels.val();
+      // if slackChannels is empty, then fetch default (admin setting)
+      // if not empty, it means someone specified this setting for the page.
+      if (slackChannels === '') {
+        FetchPagesUpdatePostAndInsert(pagePath);
+      }
+    }
   });
   });
+
   $('a[data-toggle="tab"][href="#edit-form"]').on('hide.bs.tab', function() {
   $('a[data-toggle="tab"][href="#edit-form"]').on('hide.bs.tab', function() {
     $('.content-main').removeClass('on-edit');
     $('.content-main').removeClass('on-edit');
   });
   });

+ 1 - 1
resource/js/crowi.js

@@ -224,7 +224,7 @@ $(function() {
   var revisionCreatedAt = $('#content-main').data('page-revision-created');
   var revisionCreatedAt = $('#content-main').data('page-revision-created');
   var currentUser = $('#content-main').data('current-user');
   var currentUser = $('#content-main').data('current-user');
   var isSeen = $('#content-main').data('page-is-seen');
   var isSeen = $('#content-main').data('page-is-seen');
-  var pagePath= $('#content-main').data('page-path');
+  var pagePath= $('#content-main').data('path');
 
 
   Crowi.linkPath();
   Crowi.linkPath();