Bläddra i källkod

[home2] Enable delete of the current directory

Johan Ahlen 10 år sedan
förälder
incheckning
b228fc9

+ 24 - 0
desktop/core/src/desktop/static/desktop/js/assist/assistHelper.js

@@ -242,6 +242,30 @@
       .fail(self.assistErrorCallback(options));
   };
 
+  /**
+   * @param {Object} options
+   * @param {Function} options.successCallback
+   * @param {Function} [options.errorCallback]
+   * @param {boolean} [options.silenceErrors]
+   *
+   * @param {string} options.id
+   * @param {string} [options.skipTrash] - Default false
+   */
+  AssistHelper.prototype.deleteDocument = function (options) {
+    var self = this;
+    $.post("/desktop/api2/doc/delete", {
+      doc_id: ko.mapping.toJSON(options.id),
+      skip_trash: ko.mapping.toJSON(options.skipTrash || false)
+    }, function (data) {
+      if (! self.successResponseIsError(data)) {
+        options.successCallback(data);
+      } else {
+        self.assistErrorCallback(options)(data);
+      }
+    })
+      .fail(self.assistErrorCallback(options));
+  };
+
   /**
    *
    * @param {Object} options

+ 10 - 0
desktop/core/src/desktop/static/desktop/js/documents/hueDirectory.js

@@ -106,6 +106,16 @@
     }
   };
 
+  HueDirectory.prototype.delete = function () {
+    var self = this;
+    if (self.app === 'documents') {
+      self.assistHelper.deleteDocument({
+        successCallback: self.parent.load.bind(self.parent),
+        id: self.definition.id
+      });
+    }
+  };
+
   HueDirectory.prototype.createDirectory = function (name) {
     var self = this;
     if (self.app === 'documents') {

+ 0 - 16
desktop/core/src/desktop/static/desktop/js/home2.vm.js

@@ -46,25 +46,9 @@
 
     self.currentDirectory().open();
 
-    self.deleteFormPath = ko.observable('');
     self.shareFormDocId = ko.observable('');
     self.exportFormDocIds = ko.observable('');
 
-    self.deleteDocument = function() {
-      $.post("/desktop/api2/doc/delete", {
-        doc_id: ko.mapping.toJSON(self.deleteFormPath),
-        skip_trash: ko.mapping.toJSON(false)
-      }, function (data) {
-        if (data.status == 0) {
-          self.currentDirectory().load();
-        } else {
-          $(document).trigger("error", data.message);
-        }
-      }).fail(function (xhr) {
-        $(document).trigger("error", xhr.responseText);
-      });
-    };
-
     self.exportDocuments = function() {
       $('#export-documents').find('input[name=\'documents\']').val(ko.mapping.toJSON(self.exportFormDocIds().split(",")));
       $('#export-documents').find('form').submit();

+ 24 - 16
desktop/core/src/desktop/templates/file_browser.mako

@@ -152,15 +152,27 @@ from desktop.views import _ko
       <!-- ko with: currentDirectory -->
       <div class="modal-body form-horizontal">
         <div class="control-group">
-          <label class="control-label" for="newDirectoryName">Name</label>
+          <label class="control-label" for="newDirectoryName">${ _('Name') }</label>
           <div class="controls">
             <input id="newDirectoryName" type="text" /></label>
           </div>
         </div>
       </div>
       <div class="modal-footer">
-        <input type="button" class="btn" data-dismiss="modal" value="Cancel">
-        <input type="button" class="btn" value="Create" data-bind="click: function () { $data.createDirectory($('#newDirectoryName').val()); $('#createDirectoryModal').modal('hide'); }"/>
+        <input type="button" class="btn" data-dismiss="modal" value="${ _('Cancel') }">
+        <input type="button" class="btn" value="${ _('Create') }" data-bind="click: function () { $data.createDirectory($('#newDirectoryName').val()); $('#createDirectoryModal').modal('hide'); }"/>
+      </div>
+      <!-- /ko -->
+    </div>
+    <div id="deleteDirectoryModal" class="modal hide fade">
+      <!-- ko with: currentDirectory -->
+      <div class="modal-header">
+        <a href="#" class="close" data-dismiss="modal">&times</a>
+        <h3>${ _('Do you really want to delete:') } <span data-bind="text: name"></span></h3>
+      </div>
+      <div class="modal-footer">
+        <input type="button" class="btn" data-dismiss="modal" value="${ _('Cancel') }">
+        <input type="submit" data-bind="click: function () { $parents[1].currentDirectory($data.parent); $data.delete(); $('#deleteDirectoryModal').modal('hide'); }" class="btn btn-danger" value="${_('Yes')}"/>
       </div>
       <!-- /ko -->
     </div>
@@ -181,10 +193,12 @@ from desktop.views import _ko
               <!-- /ko -->
             </ul>
           </div>
-          <div class="fb-folder-actions">
+          <div class="fb-folder-actions" data-bind="with: currentDirectory">
             <a class="inactive-action" href="javascript:void(0);"><span class="fa-stack fa-fw fb-action"><i class="fa fa-file-o fa-stack-1x"></i><i class="fa fa-plus-circle fa-stack-1x" style="font-size: 14px; margin-left: 6px; margin-top: 6px;"></i></span></a>
             <a class="inactive-action" href="javascript:void(0);" data-bind="click: function () { $('#createDirectoryModal').modal('show'); }"><span class="fa-stack fa-fw fb-action"><i class="fa fa-folder-o fa-stack-1x" ></i><i class="fa fa-plus-circle fa-stack-1x" style="font-size: 14px; margin-left: 7px; margin-top: 3px;"></i></span></a>
-            <a class="inactive-action" href="javascript:void(0);"><i class="fa fa-fw fa-times fb-action"></i></a>
+            <!-- ko ifnot: isRoot -->
+            <a class="inactive-action" href="javascript:void(0);" data-bind="click: function () { $('#deleteDirectoryModal').modal('show'); }"><i class="fa fa-fw fa-times fb-action"></i></a>
+            <!-- /ko -->
             <a class="inactive-action" href="javascript:void(0);"><i class="fa fa-fw fa-users fb-action"></i></a>
             <a class="inactive-action" href="javascript:void(0);"><i class="fa fa-fw fa-download fb-action"></i></a>
             <a class="inactive-action" href="javascript:void(0);"><i class="fa fa-fw fa-upload fb-action"></i></a>
@@ -192,17 +206,11 @@ from desktop.views import _ko
         </h4>
       </div>
       <div class="fb-header">
-        <div class="fb-primary-col">Name</div>
+        <div class="fb-primary-col">${ _('Name') }</div>
         <div class="fb-attr-group">
-          <div class="fb-attr-col fb-type">
-            Type
-          </div>
-          <div class="fb-attr-col fb-owner">
-            Owner
-          </div>
-          <div class="fb-attr-col fb-modified">
-            Last Modified
-          </div>
+          <div class="fb-attr-col fb-type">${ _('Type') }</div>
+          <div class="fb-attr-col fb-owner">${ _('Owner') }</div>
+          <div class="fb-attr-col fb-modified">${ _('Last Modified') }</div>
         </div>
       </div>
       <div class="fb-list" data-bind="with: currentDirectory">
@@ -220,7 +228,7 @@ from desktop.views import _ko
             <div class="fb-attr-group">
               <!-- ko with: definition -->
               <div class="fb-attr-col fb-type" data-bind="text: type"></div>
-              <div class="fb-attr-col fb-owner" data-bind="text: owner">me</div>
+              <div class="fb-attr-col fb-owner" data-bind="text: owner"></div>
               <div class="fb-attr-col fb-modified" data-bind="text: last_modified"></div>
               <!-- /ko -->
             </div>

+ 0 - 6
desktop/core/src/desktop/templates/home2.mako

@@ -228,12 +228,6 @@ ${ fileBrowser.fileBrowser() }
 ##           </div>
 ##           <h2 class="card-heading simple">${_('My Documents')}</h2>
 ##           <br/>
-##           <input data-bind="value: mkdirFormPath" placeholder="dir name, e.g. projects" />
-##           <a href="javascript:void(0);" class="btn" data-bind="click: mkdir"><i class="fa fa-plus-circle"></i> ${ _('Create Directory') }</a>
-##
-##           <input data-bind="value: deleteFormPath" placeholder="doc id, e.g. 50491" />
-##           <a href="javascript:void(0);" class="btn" data-bind="click: deleteDocument"><i class="fa fa-times"></i> ${ _('Delete') }</a>
-##
 ##           <input data-bind="value: shareFormDocId" placeholder="doc id, e.g. 50491" />
 ##           <a class="share-link btn" rel="tooltip" data-placement="bottom" style="margin-left:20px" data-bind="click: function(e){ prepareShareModal(e) },
 ##             attr: {'data-original-title': '${ _ko("Share") } ' + name}">