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

imprv/121 Add option for recursive put back

ttaka66 8 лет назад
Родитель
Сommit
98e20ae475
4 измененных файлов с 67 добавлено и 10 удалено
  1. 20 0
      lib/models/page.js
  2. 8 1
      lib/routes/page.js
  3. 37 0
      lib/views/modal/put_back.html
  4. 2 9
      lib/views/page.html

+ 20 - 0
lib/models/page.js

@@ -932,6 +932,26 @@ module.exports = function(crowi) {
     });
   };
 
+  pageSchema.statics.revertDeletedPageRecursively = function (pageData, user, options) {
+    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.revertDeletedPage(page, user, options);
+          }))
+          .then(function (data) {
+            return resolve(data[0]);
+          });
+        });
+      });
+    };
+
   /**
    * This is danger.
    */

+ 8 - 1
lib/routes/page.js

@@ -1045,11 +1045,18 @@ module.exports = function(crowi, app) {
   api.revertRemove = function(req, res){
     var pageId = req.body.page_id;
 
+    // get recursively flag
+    const isRecursively = (req.body.recursively !== undefined);
+
     Page.findPageByIdAndGrantedUser(pageId, req.user)
     .then(function(pageData) {
 
+      if (isRecursively) {
+        return Page.revertDeletedPageRecursively(pageData, req.user);
+      } else {
       // TODO: これでいいんだっけ
-      return Page.revertDeletedPage(pageData, req.user);
+        return Page.revertDeletedPage(pageData, req.user);
+      }
     }).then(function(data) {
       debug('Complete to revert deleted page', data.path);
       var result = {};

+ 37 - 0
lib/views/modal/put_back.html

@@ -0,0 +1,37 @@
+<div class="modal" id="putBackPage">
+  <div class="modal-dialog">
+    <div class="modal-content">
+
+      <form role="form" id="revert-delete-page-form" onsubmit="return false;">
+
+        <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <h4 class="modal-title"><i class="fa fa-trash-o"></i> Put Back Page</h4>
+        </div>
+        <div class="modal-body">
+          <div class="form-group">
+            <label for="">Put back page:</label><br>
+            <code>{{ page.path }}</code>
+          </div>
+        </div>
+        <div class="modal-footer">
+          <p><small class="pull-left" id="put_back-errors"></small></p>
+          <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() }}">
+          <label class="checkbox-inline text-danger">
+            <input type="checkbox" name="recursively" checked>recursively
+          </label>
+          <button type="submit" class="btn btn-default btn-sm">
+            <i class="fa fa-undo" aria-hidden="true"></i>
+            Put Back
+          </button>
+        </div>
+
+      </form>
+    </div>
+    <!-- /.modal-content -->
+  </div>
+  <!-- /.mod<div class="modal" id="deletePage">al-dialog -->
+</div>
+<!-- /.modal -->

+ 2 - 9
lib/views/page.html

@@ -83,15 +83,7 @@
       {% if user %}
       <ul class="list-inline pull-right">
         <li>
-          <form role="form" id="revert-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() }}">
-            <button type="submit" class="btn btn-default btn-sm">
-              <i class="fa fa-undo" aria-hidden="true"></i>
-              Put Back
-            </button>
-          </form>
+          <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;">
@@ -284,6 +276,7 @@
 <div id="crowi-modals">
   {% include 'modal/rename.html' %}
   {% include 'modal/delete.html' %}
+  {% include 'modal/put_back.html' %}
   {% include 'modal/page_name_warning.html' %}
 </div>
 {% endblock %}