summaryrefslogtreecommitdiffstats
path: root/apps/files/js/file-upload.js
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-10-21 11:46:51 +0200
committerVincent Petry <pvince81@owncloud.com>2015-10-21 12:18:06 +0200
commitabd0ba1f2593770833ed6bf886c72b1c24817ecf (patch)
tree17f3f229556e30a415b38a85bfaf073cc8e8c2ca /apps/files/js/file-upload.js
parentd0aeb268d687f803e62069c852bcd7a1a86eadee (diff)
downloadnextcloud-server-abd0ba1f2593770833ed6bf886c72b1c24817ecf.tar.gz
nextcloud-server-abd0ba1f2593770833ed6bf886c72b1c24817ecf.zip
Fix file upload, conflict dialog, also in public link
- Use "FileList" instead of "OCA.Files.App.fileList" that doesn't exist in public link page. - Fix public link upload by properly adding the form data using a new utility function "addFormData". That one is needed because IE8 upload and regular upload use a different format...
Diffstat (limited to 'apps/files/js/file-upload.js')
-rw-r--r--apps/files/js/file-upload.js44
1 files changed, 33 insertions, 11 deletions
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index 77b85ecd7da..d419cb3a2c0 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -18,7 +18,7 @@
* - TODO music upload button
*/
-/* global jQuery, oc_requesttoken, humanFileSize */
+/* global jQuery, oc_requesttoken, humanFileSize, FileList */
/**
* Function that will allow us to know if Ajax uploads are supported
@@ -48,6 +48,26 @@ function supportAjaxUploadWithProgress() {
}
/**
+ * Add form data into the given form data
+ *
+ * @param {Array|Object} formData form data which can either be an array or an object
+ * @param {Object} newData key-values to add to the form data
+ *
+ * @return updated form data
+ */
+function addFormData(formData, newData) {
+ // in IE8, formData is an array instead of object
+ if (_.isArray(formData)) {
+ _.each(newData, function(value, key) {
+ formData.push({name: key, value: value});
+ });
+ } else {
+ formData = _.extend(formData, newData);
+ }
+ return formData;
+}
+
+/**
* keeps track of uploads in progress and implements callbacks for the conflicts dialog
* @namespace
*/
@@ -143,9 +163,9 @@ OC.Upload = {
data.data.append('resolution', 'replace');
} else {
if (!data.formData) {
- data.formData = [];
+ data.formData = {};
}
- data.formData.push({name:'resolution', value:'replace'}); //hack for ie8
+ addFormData(data.formData, {resolution: 'replace'});
}
data.submit();
},
@@ -159,9 +179,9 @@ OC.Upload = {
data.data.append('resolution', 'autorename');
} else {
if (!data.formData) {
- data.formData = [];
+ data.formData = {};
}
- data.formData.push({name:'resolution', value:'autorename'}); //hack for ie8
+ addFormData(data.formData, {resolution: 'autorename'});
}
data.submit();
},
@@ -185,7 +205,7 @@ OC.Upload = {
* @param {function} callbacks.onCancel
*/
checkExistingFiles: function (selection, callbacks) {
- var fileList = OCA.Files.App.fileList;
+ var fileList = FileList;
var conflicts = [];
// only keep non-conflicting uploads
selection.uploads = _.filter(selection.uploads, function(upload) {
@@ -402,17 +422,19 @@ OC.Upload = {
submit: function(e, data) {
OC.Upload.rememberUpload(data);
if (!data.formData) {
- data.formData = [];
+ data.formData = {};
}
var fileDirectory = '';
if(typeof data.files[0].relativePath !== 'undefined') {
fileDirectory = data.files[0].relativePath;
}
- // FIXME: prevent re-adding the same
- data.formData.push({name: 'requesttoken', value: oc_requesttoken});
- data.formData.push({name: 'dir', value: data.targetDir || FileList.getCurrentDirectory()});
- data.formData.push({name: 'file_directory', value: fileDirectory});
+
+ addFormData(data.formData, {
+ requesttoken: oc_requesttoken,
+ dir: data.targetDir || FileList.getCurrentDirectory(),
+ file_directory: fileDirectory
+ });
},
fail: function(e, data) {
OC.Upload.log('fail', e, data);