Преглед изворни кода

[API] Added option of getting revisions.list by page_id

Sotaro KARASAWA пре 9 година
родитељ
комит
d0d385a1e2
1 измењених фајлова са 20 додато и 5 уклоњено
  1. 20 5
      lib/routes/revision.js

+ 20 - 5
lib/routes/revision.js

@@ -2,6 +2,7 @@ module.exports = function(crowi, app) {
   'use strict';
 
   var debug = require('debug')('crowi:routes:revision')
+    , Page = crowi.model('Page')
     , Revision = crowi.model('Revision')
     , ApiResponse = require('../util/apiResponse')
     , actions = {}
@@ -34,18 +35,32 @@ module.exports = function(crowi, app) {
    * @apiGroup Revision
    *
    * @apiParam {String} revision_ids Revision Ids.
+   * @apiParam {String} page_id      Page Id.
    */
   actions.api.list = function(req, res) {
-    var revisionIds = req.query.revision_ids.split(',');
+    var revisionIds = (req.query.revision_ids || '').split(',');
+    var pageId = req.query.page_id || null;
 
-    Revision
-      .findRevisions(revisionIds)
+    if (pageId) {
+      Page.findPageByIdAndGrantedUser(pageId, req.user)
+      .then(function(pageData) {
+        debug('Page found', pageData._id, pageData.path);
+        return Revision.findRevisionList(pageData.path, {});
+      }).then(function(revisions) {
+        return res.json(ApiResponse.success(revisions));
+      }).catch(function(err) {
+        return res.json(ApiResponse.error(err));
+      });
+    } else if (revisionIds.length > 0) {
+      Revision.findRevisions(revisionIds)
       .then(function(revisions) {
         return res.json(ApiResponse.success(revisions));
-      })
-      .catch(function(err) {
+      }).catch(function(err) {
         return res.json(ApiResponse.error(err));
       });
+    } else {
+      return res.json(ApiResponse.error('Parameter error.'));
+    }
   };
 
   return actions;