[Pkg-owncloud-commits] [owncloud] 207/223: Fix appending of rows after upload
David Prévot
taffit at moszumanska.debian.org
Sun Jun 22 01:54:26 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository owncloud.
commit 8ae2468345d5c5a090098a7477121f71992abaa0
Author: Vincent Petry <pvince81 at owncloud.com>
Date: Thu Jun 19 17:19:28 2014 +0200
Fix appending of rows after upload
When uploading files or folders, they only need to be appended or
updated when their path or a section of their path is inside the current
directory (which happens for folder upload)
Fixes issue where file was appended when dragging on a parent directory
onto the breadcrumb.
Fixes appending issue when uploading folders.
---
apps/files/js/filelist.js | 47 ++++++++++++++++++++++++-------------
apps/files/tests/js/filelistSpec.js | 26 ++------------------
2 files changed, 33 insertions(+), 40 deletions(-)
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index cb6c3dc..241997b 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1649,15 +1649,34 @@
data.context.find('td.filesize').text(humanFileSize(size));
} else {
// only append new file if uploaded into the current folder
- if (file.directory !== '/' && file.directory !== self.getCurrentDirectory()) {
+ if (file.directory !== self.getCurrentDirectory()) {
+ // Uploading folders actually uploads a list of files
+ // for which the target directory (file.directory) might lie deeper
+ // than the current directory
+
+ var fileDirectory = file.directory.replace('/','').replace(/\/$/, "");
+ var currentDirectory = self.getCurrentDirectory().replace('/','').replace(/\/$/, "") + '/';
+
+ if (currentDirectory !== '/') {
+ // abort if fileDirectory does not start with current one
+ if (fileDirectory.indexOf(currentDirectory) !== 0) {
+ return;
+ }
+
+ // remove the current directory part
+ fileDirectory = fileDirectory.substr(currentDirectory.length);
+ }
- var fileDirectory = file.directory.replace('/','').replace(/\/$/, "").split('/');
+ // only take the first section of the path
+ fileDirectory = fileDirectory.split('/');
- if (fileDirectory.length === 1) {
+ var fd;
+ // if the first section exists / is a subdir
+ if (fileDirectory.length) {
fileDirectory = fileDirectory[0];
- // Get the directory
- var fd = self.findFileEl(fileDirectory);
+ // See whether it is already in the list
+ fd = self.findFileEl(fileDirectory);
if (fd.length === 0) {
var dir = {
name: fileDirectory,
@@ -1667,19 +1686,15 @@
size: 0,
id: file.parentId
};
- self.add(dir, {insert: true});
+ fd = self.add(dir, {insert: true});
}
- } else {
- fileDirectory = fileDirectory[0];
- }
- fileDirectory = self.findFileEl(fileDirectory);
-
- // update folder size
- size = parseInt(fileDirectory.attr('data-size'), 10);
- size += parseInt(file.size, 10);
- fileDirectory.attr('data-size', size);
- fileDirectory.find('td.filesize').text(humanFileSize(size));
+ // update folder size
+ size = parseInt(fd.attr('data-size'), 10);
+ size += parseInt(file.size, 10);
+ fd.attr('data-size', size);
+ fd.find('td.filesize').text(OC.Util.humanFileSize(size));
+ }
return;
}
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 7d3bc94..011e73d 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -1730,20 +1730,6 @@ describe('OCA.Files.FileList tests', function() {
return ev;
}
- /**
- * Convert form data to a flat list
- *
- * @param formData form data array as used by jquery.upload
- * @return map based on the array's key values
- */
- function decodeFormData(data) {
- var map = {};
- _.each(data.formData(), function(entry) {
- map[entry.name] = entry.value;
- });
- return map;
- }
-
beforeEach(function() {
// simulate data structure from jquery.upload
uploadData = {
@@ -1803,11 +1789,7 @@ describe('OCA.Files.FileList tests', function() {
ev = dropOn(fileList.findFileEl('somedir').find('td:eq(2)'), uploadData);
expect(ev.result).not.toEqual(false);
- expect(uploadData.formData).toBeDefined();
- formData = decodeFormData(uploadData);
- expect(formData.dir).toEqual('/subdir/somedir');
- expect(formData.file_directory).toEqual('fileToUpload.txt');
- expect(formData.requesttoken).toBeDefined();
+ expect(uploadData.targetDir).toEqual('/subdir/somedir');
});
it('drop on a breadcrumb inside the table triggers upload to target folder', function() {
var ev, formData;
@@ -1815,11 +1797,7 @@ describe('OCA.Files.FileList tests', function() {
ev = dropOn(fileList.$el.find('.crumb:eq(2)'), uploadData);
expect(ev.result).not.toEqual(false);
- expect(uploadData.formData).toBeDefined();
- formData = decodeFormData(uploadData);
- expect(formData.dir).toEqual('/a/b');
- expect(formData.file_directory).toEqual('fileToUpload.txt');
- expect(formData.requesttoken).toBeDefined();
+ expect(uploadData.targetDir).toEqual('/a/b');
});
});
});
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git
More information about the Pkg-owncloud-commits
mailing list