]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fixed drag and drop upload to breadcrumb
authorVincent Petry <pvince81@owncloud.com>
Tue, 15 Oct 2013 14:14:23 +0000 (16:14 +0200)
committerVincent Petry <pvince81@owncloud.com>
Tue, 15 Oct 2013 14:14:23 +0000 (16:14 +0200)
apps/files/js/filelist.js

index 02de2f2415e75846578b9b65784a5cd7e62800c5..fa26e2bfb7e27b93d43d90cf0f9255b6759fa75c 100644 (file)
@@ -684,40 +684,32 @@ $(document).ready(function(){
        file_upload_start.on('fileuploaddrop', function(e, data) {
                OC.Upload.log('filelist handle fileuploaddrop', e, data);
 
-               var dropTarget = $(e.originalEvent.target).closest('tr');
-               if(dropTarget && dropTarget.data('type') === 'dir') { // drag&drop upload to folder
+               var dropTarget = $(e.originalEvent.target).closest('tr, .crumb');
+               if(dropTarget && (dropTarget.data('type') === 'dir' || dropTarget.hasClass('crumb'))) { // drag&drop upload to folder
 
                        // remember as context
                        data.context = dropTarget;
 
                        var dir = dropTarget.data('file');
+                       // if from file list, need to prepend parent dir
+                       if (dir){
+                               var parentDir = $('#dir').val() || '/';
+                               if (parentDir[parentDir.length - 1] != '/'){
+                                       parentDir += '/';
+                               }
+                               dir = parentDir + dir;
+                       }
+                       else{
+                               // read full path from crumb
+                               dir = dropTarget.data('dir') || '/';
+                       }
 
                        // update folder in form
                        data.formData = function(form) {
-                               var formArray = form.serializeArray();
-                               // array index 0 contains the max files size
-                               // array index 1 contains the request token
-                               // array index 2 contains the directory
-                               if (formArray.length){
-                                       var parentDir = formArray[2]['value'];
-                                       if (parentDir === '/') {
-                                               formArray[2]['value'] += dir;
-                                       } else {
-                                               formArray[2]['value'] += '/' + dir;
-                                       }
-                               }
-                               else{
-                                       var parentDir = $('#dir').val() || '';
-                                       if (parentDir[parentDir.length - 1] != '/'){
-                                               parentDir += '/';
-                                       }
-                                       return [
-                                               {name: 'dir', value: parentDir + dir},
-                                               {name: 'requesttoken', value: oc_requesttoken}
-                                       ];
-                               }
-
-                               return formArray;
+                               return [
+                                       {name: 'dir', value: dir},
+                                       {name: 'requesttoken', value: oc_requesttoken}
+                               ];
                        };
                } 
 
@@ -795,6 +787,10 @@ $(document).ready(function(){
                                data.context.find('td.filesize').text(humanFileSize(size));
 
                        } else {
+                               // only append new file if dragged onto current dir's crumb (last)
+                               if (data.context && data.context.hasClass('crumb') && !data.context.hasClass('last')){
+                                       return;
+                               }
 
                                // add as stand-alone row to filelist
                                var size=t('files', 'Pending');