Bladeren bron

Fix #173: Add ability to send extraData when no files are attached

Kartik Visweswaran 10 jaren geleden
bovenliggende
commit
a727324521
3 gewijzigde bestanden met toevoegingen van 40 en 5 verwijderingen
  1. 2 1
      CHANGE.md
  2. 38 4
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 2 - 1
CHANGE.md

@@ -1,8 +1,9 @@
 version 4.1.8
 =============
-**Date**: 20-Feb-2015
+**Date**: 21-Feb-2015
 
 1. (bug #171): Fix typo for files validation.
+2. (enh #173): Add ability to send extraData when no files are attached.
 
 version 4.1.7
 =============

+ 38 - 4
js/fileinput.js

@@ -73,7 +73,7 @@
             '   {caption}\n' +
             '   <div class="input-group-btn">\n' +
             '       {remove}\n' +
-                '       {cancel}\n' +
+            '       {cancel}\n' +
             '       {upload}\n' +
             '       {browse}\n' +
             '   </div>\n' +
@@ -383,7 +383,7 @@
             var self = this;
             jqXHR = jqXHR || {};
             responseData = responseData || {};
-            filesData = filesData || self.filestack.slice(0);
+            filesData = filesData || self.filestack.slice(0) || {};
             return {
                 form: self.formdata,
                 files: filesData,
@@ -443,8 +443,8 @@
         },
         upload: function () {
             var self = this, totLen = self.getFileStack().length,
-                i, outData, len;
-            if (!self.isUploadable || self.isDisabled || totLen === 0) {
+                i, outData, len, hasExtraData = !$.isEmptyObject(self.getExtraData());
+            if (!self.isUploadable || self.isDisabled || (totLen === 0 && !hasExtraData)) {
                 return;
             }
             self.resetUpload();
@@ -453,6 +453,10 @@
             self.uploadPercent = 0;
             self.lock();
             self.setProgress(0);
+            if (totLen === 0 && hasExtraData) {
+                self.uploadExtraOnly();
+                return;
+            }
             len = self.filestack.length;
             if ((self.uploadAsync || totLen === 1) && self.showPreview) {
                 outData = self.getOutData();
@@ -1179,6 +1183,36 @@
             });
             self.ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError);
         },
+        uploadExtraOnly: function () {
+            var self = this, fnBefore, fnSuccess, fnComplete, fnError;
+            fnBefore = function (jqXHR) {
+                self.lock();
+                var outData = self.getOutData(jqXHR);
+                self.raise('filebatchpreupload', [outData]);
+                self.setProgress(50);
+            };
+            fnSuccess = function (data, textStatus, jqXHR) {
+                var outData = self.getOutData(jqXHR, data),
+                    keys = isEmpty(data.errorkeys) ? [] : data.errorkeys;
+                if (data.error === undefined || isEmpty(data.error)) {
+                    self.raise('filebatchuploadsuccess', [outData]);
+                    self.clearFileInput();
+                } else {
+                    self.showUploadError(data.error, outData, null, null, 'filebatchuploaderror');
+                }
+            };
+            fnComplete = function () {
+                self.setProgress(100);
+                self.unlock();
+                self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]);
+                self.clearFileInput();
+            };
+            fnError = function (jqXHR, textStatus, errorThrown) {
+                var outData = self.getOutData(jqXHR);
+                self.showUploadError(errorThrown, outData, null, null, 'filebatchuploaderror');
+            };
+            self.ajaxSubmit(fnBefore, fnSuccess, fnComplete, fnError);
+        },
         hideFileIcon: function () {
             if (this.overwriteInitial) {
                 this.$captionContainer.find('.kv-caption-icon').hide();

File diff suppressed because it is too large
+ 0 - 0
js/fileinput.min.js


Some files were not shown because too many files changed in this diff