Sotaro KARASAWA 9 лет назад
Родитель
Сommit
15ff1517ba
2 измененных файлов с 20 добавлено и 20 удалено
  1. 19 19
      lib/models/page.js
  2. 1 1
      lib/routes/page.js

+ 19 - 19
lib/models/page.js

@@ -582,7 +582,7 @@ module.exports = function(crowi) {
     });
   };
 
-  pageSchema.statics.updatePage = function(page, updateData) {
+  pageSchema.statics.updatePageProperty = function(page, updateData) {
     var Page = this;
     return new Promise(function(resolve, reject) {
       // TODO foreach して save
@@ -597,27 +597,24 @@ module.exports = function(crowi) {
   };
 
   pageSchema.statics.updateGrant = function(page, grant, userData) {
-    var self = this;
+    var Page = this;
 
     return new Promise(function(resolve, reject) {
-      self.update({_id: page._id}, {$set: {grant: grant}}, function(err, data) {
+      page.grant = grant;
+      if (grant == GRANT_PUBLIC) {
+        page.grantedUsers = [];
+      } else {
+        page.grantedUsers = [];
+        page.grantedUsers.push(userData._id);
+      }
+
+      page.save(function(err, data) {
+        debug('Page.updateGrant, saved grantedUsers.', err, data);
         if (err) {
           return reject(err);
         }
 
-        if (grant == GRANT_PUBLIC) {
-          page.grantedUsers = [];
-        } else {
-          page.grantedUsers = [];
-          page.grantedUsers.push(userData._id);
-        }
-        page.save(function(err, data) {
-          if (err) {
-            return reject(err);
-          }
-
-          return resolve(data);
-        });
+        return resolve(data);
       });
     });
   };
@@ -718,7 +715,7 @@ module.exports = function(crowi) {
       });
   };
 
-  pageSchema.statics.update = function(pageData, body, user, options) {
+  pageSchema.statics.updatePage = function(pageData, body, user, options) {
     var Page = this
       , Revision = crowi.model('Revision')
       , grant = options.grant || null
@@ -731,15 +728,17 @@ module.exports = function(crowi) {
       .then(function(revision) {
         if (grant != pageData.grant) {
           return Page.updateGrant(pageData, grant, user).then(function(data) {
+            debug('Page grant update:', data);
             resolve(data);
             pageEvent.emit('update', data, user);
           });
         } else {
           resolve(pageData);
-          pageEvent.emit('update', data, user);
+          pageEvent.emit('update', pageData, user);
         }
       }).catch(function(err) {
         debug('Error on update', err);
+        debug('Error on update', err.stack);
       });
     });
   };
@@ -753,7 +752,7 @@ module.exports = function(crowi) {
 
     return new Promise(function(resolve, reject) {
       // pageData の path を変更
-      Page.updatePage(pageData, {updatedAt: Date.now(), path: newPagePath})
+      Page.updatePageProperty(pageData, {updatedAt: Date.now(), path: newPagePath})
       .then(function(data) {
         debug('Before ', pageData);
         // reivisions の path を変更
@@ -762,6 +761,7 @@ module.exports = function(crowi) {
         debug('After ', pageData);
         pageData.path = newPagePath;
 
+        pageEvent.emit('update', data, user); // update as renamed page
         if (createRedirectPage) {
           var body = 'redirect ' + newPagePath;
           return Page.create(path, body, user, {redirectTo: newPagePath}).then(resolve).catch(reject);

+ 1 - 1
lib/routes/page.js

@@ -319,7 +319,7 @@ module.exports = function(crowi, app) {
 
       if (data) {
         previousRevision = data.revision;
-        return Page.update(data, body, req.user, {grant: grant});
+        return Page.updatePage(data, body, req.user, {grant: grant});
       } else {
         // new page
         updateOrCreate = 'create';