]> source.dussan.org Git - nextcloud-server.git/commitdiff
backport of PR #471
authorThomas Mueller <thomas.mueller@tmit.eu>
Fri, 16 Nov 2012 09:23:40 +0000 (10:23 +0100)
committerThomas Mueller <thomas.mueller@tmit.eu>
Fri, 16 Nov 2012 16:10:40 +0000 (17:10 +0100)
apps/files/ajax/upload.php
apps/files/js/filelist.js
apps/files/js/files.js

index a4dcd80a2e2209bb5c87a436229e0c4ebc85aa2a..1eb08426f81503b318355d0c61958fa1f7bf21d8 100644 (file)
@@ -48,10 +48,12 @@ if(strpos($dir, '..') === false) {
        $fileCount=count($files['name']);
        for($i=0;$i<$fileCount;$i++) {
         $target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]);
+               // $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder
+               $target = OC_Filesystem::normalizePath($target);
                if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
                        $meta = OC_FileCache::get($target);
                        $id = OC_FileCache::getId($target);
-                       $result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'], 'id'=>$id, 'name'=>basename($target));
+                       $result[]=array( "status" => "success", 'mime'=>$meta['mimetype'], 'size'=>$meta['size'], 'id'=>$id, 'name'=>basename($target));
                }
        }
        OCP\JSON::encodedPrint($result);
index ed2db12b9de980a03773910268a680f563302f54..fb17825085ac5e7e4d55acdd668ccfb34fdfe13c 100644 (file)
@@ -137,7 +137,7 @@ var FileList={
                tr=$('tr').filterAttr('data-file',name);
                tr.data('renaming',true);
                td=tr.children('td.filename');
-               input=$('<input class="filename"></input>').val(name);
+               input=$('<input class="filename"/>').val(name);
                form=$('<form></form>');
                form.append(input);
                td.children('a.name').text('');
index 64919acb5dd6ca0d63cf5ca1fa98ef95004ddc01..d454a74f06e7db8e2fec7a75b12803bd21e2b5f8 100644 (file)
@@ -233,7 +233,12 @@ $(document).ready(function() {
                                                }
                                        });
                                }else{
-                                       var date=new Date();
+                    var dropTarget = $(e.originalEvent.target).closest('tr');
+                    if(dropTarget && dropTarget.attr('data-type') === 'dir') { // drag&drop upload to folder
+                        var dirName = dropTarget.attr('data-file')
+                    }
+
+                    var date=new Date();
                                        if(files){
                                                for(var i=0;i<files.length;i++){
                                                        if(files[i].size>0){
@@ -286,7 +291,10 @@ $(document).ready(function() {
                                                                var jqXHR =  $('.file_upload_start').fileupload('send', {files: files[i],
                                                                                formData: function(form) {
                                                                                        var formArray = form.serializeArray();
-                                                                                       formArray[1]['value'] = dirName;
+                                            // array index 0 contains the max files size
+                                            // array index 1 contains the request token
+                                            // array index 2 contains the directory
+                                                                                       formArray[2]['value'] = dirName;
                                                                                        return formArray;
                                                                                }}).success(function(result, textStatus, jqXHR) {
                                                                                        var response;
@@ -296,7 +304,13 @@ $(document).ready(function() {
                                                                                                $('#notification').fadeIn();
                                                                                        }
                                                                                        var file=response[0];
+                                            // TODO: this doesn't work if the file name has been changed server side
                                                                                        delete uploadingFiles[dirName][file.name];
+                                            if ($.assocArraySize(uploadingFiles[dirName]) == 0) {
+                                                delete uploadingFiles[dirName];
+                                            }
+
+                                            var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext')
                                                                                        var currentUploads = parseInt(uploadtext.attr('currentUploads'));
                                                                                        currentUploads -= 1;
                                                                                        uploadtext.attr('currentUploads', currentUploads);
@@ -826,7 +840,7 @@ function getSelectedFiles(property){
                        name:$(element).attr('data-file'),
                        mime:$(element).data('mime'),
                        type:$(element).data('type'),
-                       size:$(element).data('size'),
+                       size:$(element).data('size')
                };
                if(property){
                        files.push(file[property]);