var invInlineUpload = (function() {
var animationMs = 250;
function appendAjaxUploadHTML($file, $form) {
var html = [
'
',
''
].join('');
$file.after(html);
html = [
''
].join('');
$form.append(html);
}
function init($pane) {
var uploadHandlers = [];
$.each($pane.find('.inlineupload input:file') , function(index , element) {
uploadHandlers.push(new uploadHandler($(element)));
})
}
var uploadHandler = function ($element) {
var dataobjs = [];
var uploaderrors = [];
//var clashes = [];
var addcount = 0;
var donecount = 0;
var lastprogress = 0;
var $file = $element;
var $form = $element.closest('.inlineupload');
appendAjaxUploadHTML($file, $form);
/*
var formdata = [];
if($form.data('basepath')){
//formdata.base_path = $form.data('basepath');
formdata.push({
"name": "base_path" ,
"value": $form.data('basepath')
});
}
if($form.data('subpath')){
//formdata.sub_path = $form.data('subpath');
formdata.push({
"name": "sub_path" ,
"value": $form.data('subpath')
});
}
*/
var formdata = {
"token": $form.find("[name='token']").val() ,
"fieldname": $form.find("[name='fieldname']").val() ,
"base_path": $form.find("[name='base_path']").val() ,
"sub_path": $form.find("[name='sub_path']").val()
};
$file.fileupload({
url: $form.attr('data-uploadhandler'),
dataType: 'json',
form: $form ,
formData: formdata ,
add: function (e, data) {
var file = data.files[0];
// check file size
if($form.attr('data-uploadmaxfilesize') && (file.size > $form.attr('data-uploadmaxfilesize'))) {
alert(file.name + ' exceeds the maximum individual file upload size and will not be uploaded.');
return;
}
dataobjs.push(data);
addcount++;
if($form.data('instantupload') == 1){
$form.data('do-upload')();
} else {
$form.find('.file-feedback').html('' + addcount + ' files selected.').show();
}
},
done: function (e, data) {
// individual upload finished
donecount++;
var responseJSON = data.jqXHR.responseJSON;
if (responseJSON.status) {
// success
if(typeof($form.data('upload-finished-callback')) === 'function') {
$form.data('upload-finished-callback')($form, responseJSON);
} else if(typeof(window[$form.data('upload-finished-callback')]) === 'function') {
window[$form.data('upload-finished-callback')]($form, responseJSON);
} else {
$form.append('');
}
} else {
// error
if(responseJSON.files) {
uploaderrors.push(responseJSON.files[0].error);
} else {
uploaderrors.push(null);
}
}
if (donecount == addcount) {
// all files done
if (!uploaderrors.length) {
// all ok - run callback!
if(typeof($form.data('upload-finished-done-callback')) === 'function'){
$form.data('upload-finished-done-callback')($form);
} else if(typeof(window[$form.data('upload-finished-done-callback')]) === 'function') {
window[$form.data('upload-finished-done-callback')]($form, responseJSON);
}
return;
}
if (uploaderrors.length) {
$('Some or all files could not be uploaded.
').appendTo($form);
}
$form.data('resetUI')();
}
},
fileuploadsubmit: function (e, data) {
alert('here');
data.formData.uploadtype = $form.find("[name='uploadtype']").val();
data.formData.uploadnote = $form.find("[name='uploadnote']").val();
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
if (progress > lastprogress) {
$form.find('.ajaxupload__progress .bar').css('width', progress + '%');
lastprogress = progress;
}
},
error: function(){
alert('Oops, something went wrong.');
$form.data('resetUI')();
} ,
stop: function (e) {
$form.data('resetUI')();
}
}).on('fileuploadsubmit' , function(e, data){
data.formData = {
"token": $form.find("[name='token']").val() ,
"fieldname": $form.find("[name='fieldname']").val() ,
"base_path": $form.find("[name='base_path']").val() ,
"sub_path": $form.find("[name='sub_path']").val() ,
"uploadtype": $form.find("[name='uploadtype']").val() ,
"uploadnote": $form.find("[name='uploadnote']").val()
}
});
$form.data('resetUI' , function () {
// reset gui
$form.find('.ajaxupload__progress').hide();
$form.find('.ajaxupload__progress .bar').css('width', '0%');
$form.find('.file-feedback').html('');
$form.find('.pseudosubmit').attr('disabled', false);
// reset data
dataobjs = [];
uploaderrors = [];
addcount = 0;
donecount = 0;
lastprogress = 0;
});
$form.data('do-upload', function() {
// disable submit button
$form.find('.pseudosubmit').attr('disabled', true);
// start uploading files
$.each(dataobjs, function (i, dataobj) {
dataobj.submit();
});
// hide error
$form.find('.files-not-uploaded').remove();
// show progress bar
$form.find('.ajaxupload__progress').show();
});
}
return {
init: init
}
})();