Sotaro KARASAWA 9 лет назад
Родитель
Сommit
b67e706474
3 измененных файлов с 34 добавлено и 1 удалено
  1. 7 0
      lib/models/revision.js
  2. 2 1
      lib/routes/index.js
  3. 25 0
      lib/routes/revision.js

+ 7 - 0
lib/models/revision.js

@@ -60,6 +60,13 @@ module.exports = function(crowi) {
     });
   };
 
+  revisionSchema.statics.findRevisionIdList = function(path) {
+    return this.find({path: path})
+      .select('_id author createdAt')
+      .sort({createdAt: -1})
+      .exec();
+  };
+
   revisionSchema.statics.findRevisionList = function(path, options) {
     var Revision = this,
         User = crowi.model('User');

+ 2 - 1
lib/routes/index.js

@@ -115,7 +115,8 @@ module.exports = function(crowi, app) {
   app.post('/_api/attachments.remove' , accessTokenParser , loginRequired(crowi, app) , csrf, attachment.api.remove);
 
   app.get( '/_api/revisions.get'      , accessTokenParser , loginRequired(crowi, app) , revision.api.get);
-  app.get( '/_api/revisions.list'     , accessTokenParser , loginRequired(crowi, app) ,revision.api.list);
+  app.get( '/_api/revisions.ids'      , accessTokenParser , loginRequired(crowi, app) , revision.api.ids);
+  app.get( '/_api/revisions.list'     , accessTokenParser , loginRequired(crowi, app) , revision.api.list);
 
   //app.get('/_api/revision/:id'     , user.useUserData()         , revision.api.get);
   //app.get('/_api/r/:revisionId'    , user.useUserData()         , page.api.get);

+ 25 - 0
lib/routes/revision.js

@@ -29,6 +29,31 @@ module.exports = function(crowi, app) {
       });
   };
 
+  /**
+   * @api {get} /revisions.ids Get revision id list of the page
+   * @apiName ids
+   * @apiGroup Revision
+   *
+   * @apiParam {String} page_id      Page Id.
+   */
+  actions.api.ids = function(req, res) {
+    var pageId = req.query.page_id || null;
+
+    if (pageId && crowi.isPageId(pageId)) {
+      Page.findPageByIdAndGrantedUser(pageId, req.user)
+      .then(function(pageData) {
+        debug('Page found', pageData._id, pageData.path);
+        return Revision.findRevisionIdList(pageData.path);
+      }).then(function(revisions) {
+        return res.json(ApiResponse.success({revisions}));
+      }).catch(function(err) {
+        return res.json(ApiResponse.error(err));
+      });
+    } else {
+      return res.json(ApiResponse.error('Parameter error.'));
+    }
+  };
+
   /**
    * @api {get} /revisions.list Get revisions
    * @apiName ListRevision