yusuketk 7 лет назад
Родитель
Сommit
36c70247cf
2 измененных файлов с 24 добавлено и 0 удалено
  1. 1 0
      src/server/routes/index.js
  2. 23 0
      src/server/routes/tag.js

+ 1 - 0
src/server/routes/index.js

@@ -203,6 +203,7 @@ module.exports = function(crowi, app) {
   app.post('/_api/pages.unlink'       , loginRequired(crowi, app) , csrf, page.api.unlink); // (Avoid from API Token)
   app.post('/_api/pages.duplicate', accessTokenParser, loginRequired(crowi, app), csrf, page.api.duplicate);
   app.get('/_tags', loginRequired(crowi, app, false), tag.showPage);
+  app.get('/_api/tags.list'           , accessTokenParser, loginRequired(crowi, app, false), tag.api.list);
   app.get('/_api/tags.search'         , accessTokenParser, loginRequired(crowi, app, false), tag.api.search);
   app.get('/_api/comments.get'        , accessTokenParser , loginRequired(crowi, app, false) , comment.api.get);
   app.post('/_api/comments.add'       , form.comment, accessTokenParser , loginRequired(crowi, app) , csrf, comment.api.add);

+ 23 - 0
src/server/routes/tag.js

@@ -24,5 +24,28 @@ module.exports = function(crowi, app) {
     return res.json(ApiResponse.success({ tags }));
   };
 
+  /**
+   * @api {get} /tags.list get tagnames and count pages relate each tag
+   * @apiName tagList
+   * @apiGroup Tag
+   */
+  api.list = async function(req, res) {
+    const PageTagRelation = crowi.model('PageTagRelation');
+
+    const tags = await Tag.find();
+    const result = [];
+
+    /* eslint-disable no-await-in-loop */
+    for (const tag of tags) {
+      const data = {};
+      data.tagName = tag.name;
+      data.countPage = await PageTagRelation.count({ relatedTag: tag.id });
+      result.push(data);
+    }
+
+    return res.json(ApiResponse.success(result));
+  };
+
+
   return actions;
 };