Jelajahi Sumber

Fix #1204: Correct merging of ajax callbacks

Kartik Visweswaran 7 tahun lalu
induk
melakukan
cb3c632476
3 mengubah file dengan 13 tambahan dan 10 penghapusan
  1. 1 0
      CHANGE.md
  2. 12 10
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 1 - 0
CHANGE.md

@@ -6,6 +6,7 @@ Change Log: `bootstrap-fileinput`
 **Date:** _work in progress_
 
 - (enh #1210): Enhance support for Office Docs Preview and Google Docs Preview.
+- (bug #1204): Correct merging of ajax callbacks.
 - (bug #1201, #1200): Correct `elErrorContainer` validation for `browseOnZoneClick`.
 - (enh #1197): Add new Font Awesome 5 Theme.
 - (enh #1179): New property `reversePreviewOrder` to allow reversing files displayed in preview.

+ 12 - 10
js/fileinput.js

@@ -718,7 +718,7 @@
             tText = '<textarea class="kv-preview-data file-preview-text" title="{caption}" readonly' + tStyle + '>' +
                 '{data}</textarea>\n';
             tOffice = '<iframe class="kv-preview-data file-preview-office" ' +
-                'src="https://view.officeapps.live.com/op/embed.aspx?src={data}&embedded=true"' + tStyle + '></iframe>';
+                'src="https://view.officeapps.live.com/op/embed.aspx?src={data}"' + tStyle + '></iframe>';
             tGdocs = '<iframe class="kv-preview-data file-preview-gdocs" ' +
                 'src="https://docs.google.com/gview?url={data}&embedded=true"' + tStyle + '></iframe>';
             tVideo = '<video class="kv-preview-data file-preview-video" controls' + tStyle + '>\n' +
@@ -2010,10 +2010,15 @@
             }
             return xhrobj;
         },
+        _initAjaxSettings: function () {
+            var self = this;
+            self._ajaxSettings = $.extend(true, {}, self.ajaxSettings);
+            self._ajaxDeleteSettings = $.extend(true, {}, self.ajaxDeleteSettings);
+        },
         _mergeAjaxCallback: function (funcName, srcFunc, type) {
-            var self = this, settings = self.ajaxSettings, flag = self.mergeAjaxCallbacks, targFunc;
+            var self = this, settings = self._ajaxSettings, flag = self.mergeAjaxCallbacks, targFunc;
             if (type === 'delete') {
-                settings = self.ajaxDeleteSettings;
+                settings = self._ajaxDeleteSettings;
                 flag = self.mergeAjaxDeleteCallbacks;
             }
             targFunc = settings[funcName];
@@ -2032,11 +2037,6 @@
             } else {
                 settings[funcName] = srcFunc;
             }
-            if (type === 'delete') {
-                self.ajaxDeleteSettings = settings;
-            } else {
-                self.ajaxSettings = settings;
-            }
         },
         _ajaxSubmit: function (fnBefore, fnSuccess, fnComplete, fnError, previewId, index) {
             var self = this, settings;
@@ -2044,6 +2044,7 @@
                 return;
             }
             self._uploadExtra(previewId, index);
+            self._initAjaxSettings();
             self._mergeAjaxCallback('beforeSend', fnBefore);
             self._mergeAjaxCallback('success', fnSuccess);
             self._mergeAjaxCallback('complete', fnComplete);
@@ -2060,7 +2061,7 @@
                 cache: false,
                 processData: false,
                 contentType: false
-            }, self.ajaxSettings);
+            }, self._ajaxSettings);
             self.ajaxRequests.push($.ajax(settings));
         },
         _mergeArray: function (prop, content) {
@@ -2669,6 +2670,7 @@
                     $el.removeClass('disabled ' + origClass).addClass(errClass);
                     resetProgress();
                 };
+                self._initAjaxSettings();
                 self._mergeAjaxCallback('beforeSend', fnBefore, 'delete');
                 self._mergeAjaxCallback('success', fnSuccess, 'delete');
                 self._mergeAjaxCallback('error', fnError, 'delete');
@@ -2677,7 +2679,7 @@
                     type: 'POST',
                     dataType: 'json',
                     data: $.extend(true, {}, {key: vKey}, extraData)
-                }, self.ajaxDeleteSettings);
+                }, self._ajaxDeleteSettings);
                 self._handler($el, 'click', function () {
                     if (!self._validateMinCount()) {
                         return false;

File diff ditekan karena terlalu besar
+ 0 - 0
js/fileinput.min.js


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini