@@ -1202,20 +1202,6 @@ module.exports = function(crowi) {
return pageData;
};
- /**
- * Delete Bookmarks, Attachments, Revisions, Pages and emit delete
- */
- // TODO: transplant to service/page.js because page deletion affects various models data
- pageSchema.statics.completelyDeletePageRecursively = async function(targetPage, user, options = {}) {
- const findOpts = { includeTrashed: true };
-
- // find manageable descendants (this array does not include GRANT_RESTRICTED)
- const pages = await this.findManageableListWithDescendants(targetPage, user, findOpts);
- await Promise.all(pages.map((page) => {
- return this.completelyDeletePage(page, user, options);
- }));
- };
pageSchema.statics.removeByPath = function(path) {
if (path == null) {
@@ -432,7 +432,7 @@ module.exports = (crowi) => {
*/
router.delete('/empty-trash', loginRequired, adminRequired, csrf, async(req, res) => {
try {
- const pages = await Page.completelyDeletePageRecursively({ path: '/trash' }, req.user);
+ const pages = await crowi.pageService.completelyDeletePageRecursively({ path: '/trash' }, req.user);
return res.apiv3({ pages });
}
catch (err) {
@@ -1194,7 +1194,7 @@ module.exports = function(crowi, app) {
return res.json(ApiResponse.error('You can not delete completely', 'user_not_admin'));
if (isRecursively) {
- await Page.completelyDeletePageRecursively(page, req.user, options);
+ await crowi.pageService.completelyDeletePageRecursively(page, req.user, options);
else {
await Page.completelyDeletePage(page, req.user, options);
@@ -94,6 +94,22 @@ class PageService {
return newParentpage;
+ /**
+ * Delete Bookmarks, Attachments, Revisions, Pages and emit delete
+ */
+ // TODO: transplant to service/page.js because page deletion affects various models data
+ async completelyDeletePageRecursively(targetPage, user, options = {}) {
+ const findOpts = { includeTrashed: true };
+ const Page = this.crowi.model('Page');
+
+ // find manageable descendants (this array does not include GRANT_RESTRICTED)
+ const pages = await Page.findManageableListWithDescendants(targetPage, user, findOpts);
+ await Promise.all(pages.map((page) => {
+ return Page.completelyDeletePage(page, user, options);
+ }));
+ }