summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/js/file-upload.js68
-rw-r--r--core/js/oc-dialogs.js7
2 files changed, 42 insertions, 33 deletions
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index efd3c0d59ed..9af09fcdd92 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -157,25 +157,6 @@ OC.Upload = {
}
return this._selections[originalFiles.selectionKey];
},
- deleteSelection:function(selectionKey) {
- if (this._selections[selectionKey]) {
- jQuery.each(this._selections[selectionKey].uploads, function(i, upload) {
- upload.abort();
- });
- delete this._selections[selectionKey];
- } else {
- console.log('OC.Upload: selection ' + selectionKey + ' does not exist');
- }
- },
- deleteSelectionUpload:function(selection, filename) {
- if(selection.uploads[filename]) {
- selection.uploads[filename].abort();
- return true;
- } else {
- console.log('OC.Upload: selection ' + selection.selectionKey + ' does not contain upload for ' + filename);
- }
- return false;
- },
cancelUpload:function(dir, filename) {
var self = this;
var deleted = false;
@@ -244,24 +225,48 @@ OC.Upload = {
});
return total;
},
- onCancel:function(data){
+ onCancel:function(data) {
//TODO cancel all uploads of this selection
var selection = this.getSelection(data.originalFiles);
OC.Upload.deleteSelection(selection.selectionKey);
//FIXME hide progressbar
},
+ onContinue:function(conflicts) {
+ var self = this;
+ //iterate over all conflicts
+ jQuery.each(conflicts, function (i, conflict) {
+ conflict = $(conflict);
+ var keepOriginal = conflict.find('.original input[type="checkbox"]:checked').length === 1;
+ var keepReplacement = conflict.find('.replacement input[type="checkbox"]:checked').length === 1;
+ if (keepOriginal && keepReplacement) {
+ // when both selected -> autorename
+ self.onAutorename(conflict.data('data'));
+ } else if (keepReplacement) {
+ // when only replacement selected -> overwrite
+ self.onReplace(conflict.data('data'));
+ } else {
+ // when only original seleted -> skip
+ // when none selected -> skip
+ self.onSkip(conflict.data('data'));
+ }
+ });
+ },
onSkip:function(data){
- var selection = this.getSelection(data.originalFiles);
- selection.loadedBytes += data.loaded;
- this.nextUpload();
+ OC.Upload.logStatus('skip', null, data);
+ //var selection = this.getSelection(data.originalFiles);
+ //selection.loadedBytes += data.loaded;
+ //this.nextUpload();
+ //TODO trigger skip? what about progress?
},
onReplace:function(data){
+ OC.Upload.logStatus('replace', null, data);
data.data.append('replace', true);
data.submit();
},
- onRename:function(data, newName){
- data.data.append('newname', newName);
+ onAutorename:function(data){
+ OC.Upload.logStatus('autorename', null, data);
+ data.data.append('autorename', true);
data.submit();
},
logStatus:function(caption, e, data) {
@@ -446,16 +451,19 @@ $(document).ready(function() {
var result=$.parseJSON(response);
//var selection = OC.Upload.getSelection(data.originalFiles);
- if(typeof result[0] !== 'undefined'
- && result[0].status === 'existserror'
- ) {
+ if(typeof result[0] === 'undefined') {
+ data.textStatus = 'servererror';
+ data.errorThrown = t('files', 'Could not get result from server.');
+ var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
+ fu._trigger('fail', e, data);
+ } else if (result[0].status === 'existserror') {
//show "file already exists" dialog
var original = result[0];
var replacement = data.files[0];
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
OC.dialogs.fileexists(data, original, replacement, OC.Upload, fu);
- } else {
- OC.Upload.deleteSelectionUpload(selection, data.files[0].name);
+ } else if (result[0].status !== 'success') {
+ delete data.jqXHR;
data.textStatus = 'servererror';
data.errorThrown = t('files', result.data.message);
var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload');
diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js
index 08afbfd42f2..77af1a2dde5 100644
--- a/core/js/oc-dialogs.js
+++ b/core/js/oc-dialogs.js
@@ -224,6 +224,8 @@ var OCdialogs = {
var conflict = conflicts.find('.conflict.template').clone();
+ conflict.data('data',data);
+
conflict.find('.filename').text(original.name);
conflict.find('.original .size').text(humanFileSize(original.size));
conflict.find('.original .mtime').text(formatDate(original.mtime*1000));
@@ -312,9 +314,8 @@ var OCdialogs = {
classes: 'continue',
click: function(){
self._fileexistsshown = false;
- if ( typeof controller.onRename !== 'undefined') {
- //TODO use autorename when repeat is checked
- controller.onRename(data, $(dialog_id + ' #newname').val());
+ if ( typeof controller.onContinue !== 'undefined') {
+ controller.onContinue($(dialog_id + ' .conflict:not(.template)'));
}
$(dialog_id).ocdialog('close');
}