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

fix pageForm[grant] when save with Ctrl-S

Yuki Takei 7 лет назад
Родитель
Сommit
a95cc766ab
4 измененных файлов с 16 добавлено и 24 удалено
  1. 10 19
      lib/models/page.js
  2. 2 2
      lib/routes/page.js
  3. 1 1
      resource/js/app.js
  4. 3 2
      resource/js/legacy/crowi.js

+ 10 - 19
lib/models/page.js

@@ -1053,32 +1053,23 @@ module.exports = function(crowi) {
       });
       });
   };
   };
 
 
-  pageSchema.statics.updatePage = function(pageData, body, user, options) {
+  pageSchema.statics.updatePage = async function(pageData, body, user, options) {
     var Page = this
     var Page = this
       , Revision = crowi.model('Revision')
       , Revision = crowi.model('Revision')
       , grant = options.grant || null
       , grant = options.grant || null
       , grantUserGroupId = options.grantUserGroupId || null
       , grantUserGroupId = options.grantUserGroupId || null
       ;
       ;
     // update existing page
     // update existing page
-    var newRevision = Revision.prepareRevision(pageData, body, user);
+    var newRevision = await Revision.prepareRevision(pageData, body, user);
 
 
-    let savedPage = undefined;
-    return Page.pushRevision(pageData, newRevision, user)
-      .then((revision) => {
-        // fetch Page
-        return Page.findPageByPath(revision.path).populate('revision');
-      })
-      .then((page) => {
-        savedPage = page;
-      })
-      .then(() => {
-        return Page.updateGrant(savedPage, grant, user, grantUserGroupId);
-      })
-      .then((data) => {
-        debug('Page grant update:', data);
-        pageEvent.emit('update', savedPage, user);
-        return savedPage;
-      });
+    const revision = await Page.pushRevision(pageData, newRevision, user);
+    const savedPage = await Page.findPageByPath(revision.path).populate('revision');
+    if (grant != null) {
+      const grantData = await Page.updateGrant(savedPage, grant, user, grantUserGroupId);
+      debug('Page grant update:', grantData);
+    }
+    pageEvent.emit('update', savedPage, user);
+    return savedPage;
   };
   };
 
 
   pageSchema.statics.deletePage = function(pageData, user, options) {
   pageSchema.statics.deletePage = function(pageData, user, options) {

+ 2 - 2
lib/routes/page.js

@@ -839,8 +839,8 @@ module.exports = function(crowi, app) {
         throw new Error('Revision error.');
         throw new Error('Revision error.');
       }
       }
 
 
-      var grantOption = {grant: pageData.grant};
-      if (grant !== null) {
+      var grantOption = {};
+      if (grant != null) {
         grantOption.grant = grant;
         grantOption.grant = grant;
       }
       }
       if (grantUserGroupId != null) {
       if (grantUserGroupId != null) {

+ 1 - 1
resource/js/app.js

@@ -160,7 +160,7 @@ if (pageEditorElem) {
   // create onSave event handler
   // create onSave event handler
   const onSaveSuccess = function(page) {
   const onSaveSuccess = function(page) {
     // modify the revision id value to pass checking id when updating
     // modify the revision id value to pass checking id when updating
-    crowi.getCrowiForJquery().updateCurrentRevision(page.revision._id);
+    crowi.getCrowiForJquery().updatePageForm(page);
     // re-render Page component if exists
     // re-render Page component if exists
     if (componentInstances.page != null) {
     if (componentInstances.page != null) {
       componentInstances.page.setMarkdown(page.revision.body);
       componentInstances.page.setMarkdown(page.revision.body);

+ 3 - 2
resource/js/legacy/crowi.js

@@ -137,8 +137,9 @@ Crowi.modifyScrollTop = function() {
   }, timeout);
   }, timeout);
 };
 };
 
 
-Crowi.updateCurrentRevision = function(revisionId) {
-  $('#page-form [name="pageForm[currentRevision]"]').val(revisionId);
+Crowi.updatePageForm = function(page) {
+  $('#page-form [name="pageForm[currentRevision]"]').val(page.revision._id);
+  $('#page-form [name="pageForm[grant]"]').val(page.grant);
 };
 };
 
 
 Crowi.handleKeyEHandler = (event) => {
 Crowi.handleKeyEHandler = (event) => {