itizawa 5 лет назад
Родитель
Сommit
33221c8956
2 измененных файлов с 7 добавлено и 15 удалено
  1. 1 9
      src/server/routes/apiv3/pages.js
  2. 6 6
      src/server/service/page.js

+ 1 - 9
src/server/routes/apiv3/pages.js

@@ -542,15 +542,7 @@ module.exports = (crowi) => {
       return res.apiv3Err(new ErrorV3('Not Founded the page', 'notfound_or_forbidden'), 404);
     }
 
-    let newParentPage;
-
-    if (isRecursively) {
-      newParentPage = await crowi.pageService.duplicateRecursively(page, newPagePath, req.user);
-    }
-    else {
-      newParentPage = await crowi.pageService.duplicate(page, newPagePath, req.user);
-    }
-
+    const newParentPage = await crowi.pageService.duplicate(page, newPagePath, req.user, isRecursively);
     const result = { page: serializePageSecurely(newParentPage) };
 
     page.path = newPagePath;

+ 6 - 6
src/server/service/page.js

@@ -44,7 +44,7 @@ class PageService {
     return attachmentService.removeAttachment(attachments);
   }
 
-  async duplicate(page, newPagePath, user) {
+  async duplicate(page, newPagePath, user, isRecursively) {
     const Page = this.crowi.model('Page');
     const PageTagRelation = mongoose.model('PageTagRelation');
     // populate
@@ -60,6 +60,10 @@ class PageService {
       newPagePath, page.revision.body, user, options,
     );
 
+    if (isRecursively) {
+      this.duplicateDescendantPages(page, newPagePath, user);
+    }
+
     // take over tags
     const originTags = await page.findRelatedTagsById();
     let savedTags = [];
@@ -74,7 +78,7 @@ class PageService {
     return result;
   }
 
-  async duplicateRecursively(page, newPagePath, user) {
+  async duplicateDescendantPages(page, newPagePath, user) {
 
     const Page = this.crowi.model('Page');
     const Revision = this.crowi.model('Revision');
@@ -145,10 +149,6 @@ class PageService {
 
     pages.forEach(page => readable.push(page));
     readable.push(null);
-
-    const parentPage = await this.duplicate(page, newPagePath, user);
-
-    return parentPage;
   }
 
   // delete multiple pages