itizawa 6 лет назад
Родитель
Сommit
4829869a1f

+ 6 - 10
src/client/js/legacy/crowi.js

@@ -370,19 +370,15 @@ $(() => {
       nameValueMap[obj.name] = obj.value;
     });
     $.ajax({
-      type: 'POST',
-      url: '/_api/empty-trash',
+      type: 'DELETE',
+      url: '/_api/v3/pages/empty-trash',
       data: nameValueMap,
       dataType: 'json',
     }).done((res) => {
-      // error
-      if (!res.ok) {
-        $('#emptyTrash .msg').hide();
-        $(`#emptyTrash .msg-${res.code}`).show();
-      }
-      else {
-        window.location.href = '/trash';
-      }
+      window.location.href = '/trash';
+    }).fail((jqXHR, textStatus, errorThrown) => {
+      $('#emptyTrash .msg').hide();
+      $('#emptyTrash .msg-unknown').show();
     });
 
     return false;

+ 2 - 0
src/server/routes/apiv3/index.js

@@ -39,5 +39,7 @@ module.exports = (crowi) => {
 
   router.use('/search', require('./search')(crowi));
 
+  router.use('/pages', require('./pages')(crowi));
+
   return router;
 };

+ 42 - 0
src/server/routes/apiv3/pages.js

@@ -0,0 +1,42 @@
+const loggerFactory = require('@alias/logger');
+
+const logger = loggerFactory('growi:routes:apiv3:pages'); // eslint-disable-line no-unused-vars
+
+const express = require('express');
+
+
+const router = express.Router();
+
+/**
+ * @swagger
+ *  tags:
+ *    name: Pages
+ */
+module.exports = (crowi) => {
+  const loginRequired = require('../../middleware/login-required')(crowi);
+  const adminRequired = require('../../middleware/admin-required')(crowi);
+  const csrf = require('../../middleware/csrf')(crowi);
+
+  const Page = crowi.model('Page');
+
+  /**
+   * @api {post} /empty.trash Empty trash
+   * @apiName EmptyTrash
+   * @apiGroup Page
+   */
+  router.delete('/empty-trash', loginRequired, adminRequired, csrf, async(req, res) => {
+    try {
+      const pages = await Page.deleteMany({
+        path: { $in: /^\/trash/ },
+      });
+      return res.apiv3({ pages, ok: true });
+    }
+    catch (err) {
+      res.code = 'unknown';
+      logger.error('Failed to delete trash pages', err);
+      return res.apiv3Err(err, 500);
+    }
+  });
+
+  return router;
+};

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

@@ -149,7 +149,6 @@ module.exports = function(crowi, app) {
   app.post('/_api/pages.seen'         , accessTokenParser , loginRequired , page.api.seen);
   app.post('/_api/pages.rename'       , accessTokenParser , loginRequiredStrictly , csrf, page.api.rename);
   app.post('/_api/pages.remove'       , loginRequiredStrictly , csrf, page.api.remove); // (Avoid from API Token)
-  app.post('/_api/empty-trash'       , loginRequiredStrictly , adminRequired, csrf, page.api.emptyTrash); // (Avoid from API Token)
   app.post('/_api/pages.revertRemove' , loginRequiredStrictly , csrf, page.api.revertRemove); // (Avoid from API Token)
   app.post('/_api/pages.unlink'       , loginRequiredStrictly , csrf, page.api.unlink); // (Avoid from API Token)
   app.post('/_api/pages.duplicate'    , accessTokenParser, loginRequiredStrictly, csrf, page.api.duplicate);

+ 0 - 19
src/server/routes/page.js

@@ -1508,25 +1508,6 @@ module.exports = function(crowi, app) {
     }
   };
 
-  /**
-   * @api {post} /empty.trash Empty trash
-   * @apiName EmptyTrash
-   * @apiGroup Page
-   */
-  api.emptyTrash = async function(req, res) {
-
-    try {
-      const pages = await Page.deleteMany({
-        path: { $in: /^\/trash/ },
-      });
-      res.json(ApiResponse.success({ pages }));
-    }
-    catch (err) {
-      logger.error('Delete trash pages failed', err);
-      return res.json(ApiResponse.error('Failed to delete trash pages.', 'unknown'));
-    }
-  };
-
   /**
    * @api {post} /pages.revertRemove Revert removed page
    * @apiName RevertRemovePage