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

Merge pull request #151 from weseek/imprv/put-back-recursively

Imprv/121 recursive delete completely
Yuki Takei 8 лет назад
Родитель
Сommit
203913c38b
4 измененных файлов с 37 добавлено и 15 удалено
  1. 21 0
      lib/models/page.js
  2. 6 1
      lib/routes/page.js
  3. 9 4
      lib/views/modal/delete.html
  4. 1 10
      lib/views/page.html

+ 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

+ 9 - 4
lib/views/modal/delete.html

@@ -23,10 +23,15 @@
           <label class="checkbox-inline text-danger">
             <input type="checkbox" name="recursively" checked>recursively
           </label>
-          <label class="checkbox-inline text-danger">
-            <input type="checkbox" name="completely">completely
-          </label>
-          <button type="submit" class="btn btn-danger delete-button">Delete</button>
+          {% if page.isDeleted() %}
+            <input type="hidden" name="completely" value="true">
+            <button type="submit" class="btn btn-danger delete-button"><i class="fa fa-times-circle" aria-hidden="true"></i> Delete Completely</button>
+          {% else %}
+            <label class="checkbox-inline text-danger">
+              <input type="checkbox" name="completely">completely
+            </label>
+            <button type="submit" class="btn btn-danger delete-button">Delete</button>
+          {% endif %}
         </div>
 
       </form>

+ 1 - 10
lib/views/page.html

@@ -86,16 +86,7 @@
           <a href="#" class="btn btn-default btn-sm" data-target="#putBackPage" data-toggle="modal"><i class="fa fa-undo" aria-hidden="true"></i> Put Back</a>
         </li>
         <li>
-          <form role="form" id="delete-page-form" onsubmit="return false;">
-            <input type="hidden" name="_csrf" value="{{ csrf() }}">
-            <input type="hidden" name="path" value="{{ page.path }}">
-            <input type="hidden" name="page_id" value="{{ page._id.toString() }}">
-            <input type="hidden" name="completely" value="true">
-            <button type="submit" class="btn btn-danger btn-sm">
-              <i class="fa fa-times-circle" aria-hidden="true"></i>
-              Delete Completely
-            </button>
-          </form>
+          <a href="#" class="btn btn-danger btn-sm" data-target="#deletePage" data-toggle="modal"><i class="fa fa-times-circle" aria-hidden="true"></i> Delete Completely</a>
         </li>
       </ul>{# /.pull-right #}
       {% endif %}