Эх сурвалжийг харах

[home2] Add droppable for moving selected files and folders into another folder

Johan Ahlen 9 жил өмнө
parent
commit
21b3e12ad2

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

@@ -279,6 +279,30 @@
       .fail(self.assistErrorCallback(options));
   };
 
+  /**
+   *
+   * @param {Function} options.successCallback
+   * @param {Function} [options.errorCallback]
+   * @param {boolean} [options.silenceErrors]
+   *
+   * @param {number} options.sourceId - The ID of the source document
+   * @param {number} options.destinationId - The ID of the target document
+   */
+  AssistHelper.prototype.moveDocument = function (options) {
+    var self = this;
+    $.post("/desktop/api2/doc/move", {
+      source_doc_id: ko.mapping.toJSON(options.sourceId),
+      destination_doc_id: ko.mapping.toJSON(options.destinationId)
+    }, function (data) {
+      if (! self.successResponseIsError(data)) {
+        options.successCallback(data);
+      } else {
+        self.assistErrorCallback(options)(data);
+      }
+    })
+      .fail(self.assistErrorCallback(options));
+  };
+
   /**
    * @param {Object} options
    * @param {Function} options.successCallback

+ 28 - 0
desktop/core/src/desktop/static/desktop/js/fileBrowser/hueFileEntry.js

@@ -75,6 +75,34 @@
     }
   }
 
+
+  /**
+   * @param {HueFileEntry[]} entries
+   */
+  HueFileEntry.prototype.moveHere = function (entries) {
+    var self = this;
+    if (self.app === "documents") {
+      var moveNext = function () {
+        if (entries.length > 0) {
+          var nextId = entries.shift().definition.id;
+          self.assistHelper.moveDocument({
+            successCallback: function () {
+              moveNext();
+            },
+            errorCallback: function () {
+              self.activeEntry().load();
+            },
+            sourceId: nextId,
+            destinationId: self.definition.id
+          });
+        } else {
+          self.activeEntry().load();
+        }
+      };
+    };
+    moveNext();
+  };
+
   HueFileEntry.prototype.toggleSelected = function () {
     var self = this;
     self.selected(! self.selected());

+ 11 - 1
desktop/core/src/desktop/templates/file_browser.mako

@@ -376,6 +376,17 @@ from desktop.views import _ko
 
           var allEntries = valueAccessor();
 
+          if (boundEntry.isDirectory) {
+            $element.droppable({
+              drop: function (ev, ui) {
+                boundEntry.moveHere($.grep(allEntries(), function (entry) {
+                  return entry.selected();
+                }));
+              },
+              hoverClass: 'fb-drop-hover'
+            })
+          }
+
           $element.draggable({
             helper: function () {
               var selectedEntries = $.grep(allEntries(), function (entry) {
@@ -400,7 +411,6 @@ from desktop.views import _ko
                 $helper.find('.drag-text').text(boundEntry.name);
                 $helper.find('i').removeClass().addClass($element.find('.fb-primary-col i').attr('class'));
               }
-              console.log($helper);
               return $helper;
             },
             appendTo: "body",