wcs/wcs/qommon/static/js/qommon.fileupload.js

66 lines
3.0 KiB
JavaScript

$.WcsFileUpload = {
prepare: function() {
var base_widget = $(this);
if ($(base_widget).find('input[type=hidden]').val()) {
$(base_widget).find('input[type=file]').hide();
$(base_widget).find('.use-file-from-fargo').hide();
$(base_widget).addClass('has-file');
} else {
$(base_widget).find('.fileinfo').hide();
$(base_widget).addClass('has-no-file');
}
$(this).find('input[type=file]').fileupload({
dropZone: base_widget,
pasteZone: base_widget,
dataType: 'json',
add: function (e, data) {
$(base_widget).find('.fileprogress').removeClass('upload-error');
$(base_widget).find('.fileprogress .bar').text(
$(base_widget).find('.fileprogress .bar').data('upload'));
$(base_widget).find('.fileprogress .bar').css('width', '0%');
$(base_widget).find('.fileprogress').show();
$(base_widget).find('.fileinfo').hide();
$(base_widget).parents('form').find('input[name=submit]').prop('disabled', true);
var jqXHR = data.submit();
},
done: function(e, data) {
$(base_widget).find('.fileprogress').hide();
$(base_widget).find('.filename').text(data.result[0].name);
$(base_widget).find('.fileinfo').show();
$(base_widget).find('input[type=hidden]').val(data.result[0].token);
$(base_widget).parents('form').find('input[name=submit]').prop('disabled', false);
$(this).hide();
$(base_widget).find('.use-file-from-fargo').hide();
$(base_widget).addClass('has-file').removeClass('has-no-file');
$(this).trigger('change');
},
fail: function(e, data) {
$(base_widget).find('.fileprogress').addClass('upload-error');
$(base_widget).find('.fileprogress .bar').text(
$(base_widget).find('.fileprogress .bar').data('error'));
},
progress: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$(base_widget).find('.fileprogress .bar').css('width', progress + '%');
}
});
$(this).find('a.remove').click(function() {
$(base_widget).find('input[type=hidden]').val('');
$(base_widget).find('.fileinfo').hide();
$(base_widget).find('input[type=file]').show();
$(base_widget).find('.use-file-from-fargo').show();
$(base_widget).removeClass('has-file').addClass('has-no-file');
$(base_widget).find('input[type=file]').trigger('change');
return false;
});
$(this).find('a.change').click(function() {
$(base_widget).find('input[type=file]').click();
return false;
});
}
}
$(function() {
$('.file-upload-widget').each($.WcsFileUpload.prepare);
});