Просмотр исходного кода

imprv/121 Add option for recursive delete completely

ttaka66 8 лет назад
Родитель
Сommit
cf5a89ca1a
2 измененных файлов с 27 добавлено и 1 удалено
  1. 21 0
      lib/models/page.js
  2. 6 1
      lib/routes/page.js

+ 21 - 0
lib/models/page.js

@@ -987,6 +987,27 @@ module.exports = function(crowi) {
     });
   };
 
+  pageSchema.statics.completelyDeletePageRecursively = function (pageData, user, options) {
+    // Delete Bookmarks, Attachments, Revisions, Pages and emit delete
+    var Page = this
+      , path = pageData.path
+      , options = options || { includeDeletedPage: true }
+      ;
+
+    return new Promise(function (resolve, reject) {
+      Page
+      .generateQueryToListByStartWith(path, user, options)
+      .then(function (pages) {
+        Promise.all(pages.map(function (page) {
+          return Page.completelyDeletePage(page, user, options);
+        }))
+        .then(function (data) {
+          return resolve(data[0]);
+        });
+      });
+    });
+  };
+
   pageSchema.statics.removePageById = function(pageId) {
     var Page = this;
 

+ 6 - 1
lib/routes/page.js

@@ -1009,7 +1009,12 @@ module.exports = function(crowi, app) {
       debug('Delete page', pageData._id, pageData.path);
 
       if (isCompletely) {
-        return Page.completelyDeletePage(pageData, req.user);
+        if (isRecursively) {
+          return Page.completelyDeletePageRecursively(pageData, req.user);
+        }
+        else {
+          return Page.completelyDeletePage(pageData, req.user);
+        }
       }
 
       // else