|
@@ -292,7 +292,6 @@
|
|
constructor: FileInput,
|
|
constructor: FileInput,
|
|
init: function (options) {
|
|
init: function (options) {
|
|
var self = this, $el = self.$element, content;
|
|
var self = this, $el = self.$element, content;
|
|
- self.locked = false;
|
|
|
|
$.each(options, function (key, value) {
|
|
$.each(options, function (key, value) {
|
|
self[key] = value;
|
|
self[key] = value;
|
|
});
|
|
});
|
|
@@ -459,18 +458,6 @@
|
|
self.uploadSingle(i, self.filestack, true);
|
|
self.uploadSingle(i, self.filestack, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- setTimeout(function () {
|
|
|
|
- $(document).off('.kvfileinput').on('ajaxStop.kvfileinput', function () {
|
|
|
|
- if (!self.locked) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- self.setProgress(100);
|
|
|
|
- self.$preview.find('file-preview-frame').removeClass('file-loading');
|
|
|
|
- self.unlock();
|
|
|
|
- self.clearFileInput();
|
|
|
|
- self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]);
|
|
|
|
- });
|
|
|
|
- }, 100);
|
|
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
self.uploadBatch();
|
|
self.uploadBatch();
|
|
@@ -485,11 +472,13 @@
|
|
if (self.showCancel) {
|
|
if (self.showCancel) {
|
|
self.$container.find('.fileinput-cancel').removeClass('hide');
|
|
self.$container.find('.fileinput-cancel').removeClass('hide');
|
|
}
|
|
}
|
|
- self.locked = true;
|
|
|
|
self.raise('filelock', [self.filestack, self.getExtraData()]);
|
|
self.raise('filelock', [self.filestack, self.getExtraData()]);
|
|
},
|
|
},
|
|
- unlock: function () {
|
|
|
|
|
|
+ unlock: function (reset) {
|
|
var self = this;
|
|
var self = this;
|
|
|
|
+ if (reset === undefined) {
|
|
|
|
+ reset = true;
|
|
|
|
+ }
|
|
self.enable();
|
|
self.enable();
|
|
if (self.showCancel) {
|
|
if (self.showCancel) {
|
|
addCss(self.$container.find('.fileinput-cancel'), 'hide');
|
|
addCss(self.$container.find('.fileinput-cancel'), 'hide');
|
|
@@ -497,8 +486,9 @@
|
|
if (self.showRemove) {
|
|
if (self.showRemove) {
|
|
self.$container.find('.fileinput-remove').removeClass('hide');
|
|
self.$container.find('.fileinput-remove').removeClass('hide');
|
|
}
|
|
}
|
|
- self.resetFileStack();
|
|
|
|
- self.locked = false;
|
|
|
|
|
|
+ if (reset) {
|
|
|
|
+ self.resetFileStack();
|
|
|
|
+ }
|
|
self.raise('fileunlock', [self.filestack, self.getExtraData()]);
|
|
self.raise('fileunlock', [self.filestack, self.getExtraData()]);
|
|
},
|
|
},
|
|
resetFileStack: function () {
|
|
resetFileStack: function () {
|
|
@@ -506,16 +496,19 @@
|
|
self.$preview.find('.file-preview-frame').each(function () {
|
|
self.$preview.find('.file-preview-frame').each(function () {
|
|
var $thumb = $(this), ind = $thumb.attr('data-fileindex'),
|
|
var $thumb = $(this), ind = $thumb.attr('data-fileindex'),
|
|
file = self.filestack[ind];
|
|
file = self.filestack[ind];
|
|
|
|
+ if (ind == -1) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (file !== undefined) {
|
|
if (file !== undefined) {
|
|
newstack[i] = file;
|
|
newstack[i] = file;
|
|
$thumb.attr({
|
|
$thumb.attr({
|
|
'id': self.previewInitId + '-' + i,
|
|
'id': self.previewInitId + '-' + i,
|
|
'data-fileindex': i
|
|
'data-fileindex': i
|
|
});
|
|
});
|
|
- i = i + 1;
|
|
|
|
|
|
+ i += 1;
|
|
} else {
|
|
} else {
|
|
$thumb.attr({
|
|
$thumb.attr({
|
|
- 'id': $thumb.attr('id') + '-1',
|
|
|
|
|
|
+ 'id': 'uploaded-' + uniqId(),
|
|
'data-fileindex': '-1'
|
|
'data-fileindex': '-1'
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -606,7 +599,7 @@
|
|
$el.off('click').on('click', function () {
|
|
$el.off('click').on('click', function () {
|
|
var $frame = $el.closest('.file-preview-frame'),
|
|
var $frame = $el.closest('.file-preview-frame'),
|
|
ind = $frame.attr('data-fileindex');
|
|
ind = $frame.attr('data-fileindex');
|
|
- self.uploadSingle(ind, self.filestack);
|
|
|
|
|
|
+ self.uploadSingle(ind, self.filestack, false);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
},
|
|
},
|
|
@@ -843,7 +836,6 @@
|
|
}
|
|
}
|
|
self.unlock();
|
|
self.unlock();
|
|
});
|
|
});
|
|
- self.locked = false;
|
|
|
|
},
|
|
},
|
|
clear: function (trig) {
|
|
clear: function (trig) {
|
|
var self = this, cap;
|
|
var self = this, cap;
|
|
@@ -983,7 +975,7 @@
|
|
},
|
|
},
|
|
uploadSingle: function (i, files, allFiles) {
|
|
uploadSingle: function (i, files, allFiles) {
|
|
var self = this, total = self.getFileStack().length, formdata = new FormData(), outData,
|
|
var self = this, total = self.getFileStack().length, formdata = new FormData(), outData,
|
|
- previewId = self.previewInitId + "-" + i, $thumb = $('#' + previewId), cap, pct,
|
|
|
|
|
|
+ previewId = self.previewInitId + "-" + i, $thumb = $('#' + previewId), cap, pct, chkComplete,
|
|
$btnUpload = $thumb.find('.kv-file-upload'), $btnDelete = $thumb.find('.kv-file-remove'),
|
|
$btnUpload = $thumb.find('.kv-file-upload'), $btnDelete = $thumb.find('.kv-file-remove'),
|
|
$indicator = $thumb.find('.file-upload-indicator'), config = self.fileActionSettings,
|
|
$indicator = $thumb.find('.file-upload-indicator'), config = self.fileActionSettings,
|
|
hasPostData = self.filestack.length > 0 || !$.isEmptyObject(self.uploadExtraData),
|
|
hasPostData = self.filestack.length > 0 || !$.isEmptyObject(self.uploadExtraData),
|
|
@@ -992,7 +984,16 @@
|
|
if (total === 0 || !hasPostData || $btnUpload.hasClass('disabled')) {
|
|
if (total === 0 || !hasPostData || $btnUpload.hasClass('disabled')) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- allFiles = allFiles || false;
|
|
|
|
|
|
+ chkComplete = function () {
|
|
|
|
+ var $thumbs = self.$preview.find('.file-preview-frame.file-uploading'), chk = $thumbs.length;
|
|
|
|
+ if (chk > 0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ self.setProgress(100);
|
|
|
|
+ self.unlock();
|
|
|
|
+ self.clearFileInput();
|
|
|
|
+ self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]);
|
|
|
|
+ };
|
|
setIndicator = function (icon, msg) {
|
|
setIndicator = function (icon, msg) {
|
|
$indicator.html(config[icon]);
|
|
$indicator.html(config[icon]);
|
|
$indicator.attr('title', config[msg]);
|
|
$indicator.attr('title', config[msg]);
|
|
@@ -1031,6 +1032,9 @@
|
|
$btnUpload.hide();
|
|
$btnUpload.hide();
|
|
$btnDelete.hide();
|
|
$btnDelete.hide();
|
|
self.filestack[i] = undefined;
|
|
self.filestack[i] = undefined;
|
|
|
|
+ if (!allFiles) {
|
|
|
|
+ self.resetFileStack();
|
|
|
|
+ }
|
|
self.raise('fileuploaded', [outData, previewId, i]);
|
|
self.raise('fileuploaded', [outData, previewId, i]);
|
|
} else {
|
|
} else {
|
|
setIndicator('indicatorError', 'indicatorErrorTitle');
|
|
setIndicator('indicatorError', 'indicatorErrorTitle');
|
|
@@ -1042,10 +1046,12 @@
|
|
setTimeout(function () {
|
|
setTimeout(function () {
|
|
updateProgress();
|
|
updateProgress();
|
|
resetActions();
|
|
resetActions();
|
|
|
|
+ if (!allFiles) {
|
|
|
|
+ self.unlock(false);
|
|
|
|
+ } else {
|
|
|
|
+ chkComplete();
|
|
|
|
+ }
|
|
}, 100);
|
|
}, 100);
|
|
- if (!allFiles) {
|
|
|
|
- self.unlock();
|
|
|
|
- }
|
|
|
|
};
|
|
};
|
|
fnError = function (jqXHR, textStatus, errorThrown) {
|
|
fnError = function (jqXHR, textStatus, errorThrown) {
|
|
setIndicator('indicatorError', 'indicatorErrorTitle');
|
|
setIndicator('indicatorError', 'indicatorErrorTitle');
|