1 line
3.6 KiB
JavaScript
1 line
3.6 KiB
JavaScript
var AjaxFileUpload= function () {
|
|
/// <summary>Constructor function of the event AjaxFileUpload class.</summary>
|
|
/// <returns type="Home" />
|
|
return {
|
|
///<summary>
|
|
///Initializes the ajax file upload.
|
|
///</summary>
|
|
///<returns type="initialization settings" />
|
|
/// <since>1.0.0</since>
|
|
|
|
init: function()
|
|
{
|
|
Common.logInfo("AjaxFileUpload.init...");
|
|
jQuery('.wp-event-manager-file-upload').each(function(){
|
|
jQuery(this).fileupload({
|
|
dataType: 'json',
|
|
dropZone: jQuery(this),
|
|
url: event_manager_ajax_file_upload.ajax_url.toString().replace( "%%endpoint%%", "upload_file" ),
|
|
maxNumberOfFiles: 1,
|
|
formData: {
|
|
script: true
|
|
},
|
|
|
|
add: function (e, data) {
|
|
var $file_field = jQuery( this );
|
|
var $form = $file_field.closest( 'form' );
|
|
var $uploaded_files = $file_field.parent().find('.event-manager-uploaded-files');
|
|
var uploadErrors = [];
|
|
// Validate type
|
|
var allowed_types = jQuery(this).data('file_types');
|
|
if ( allowed_types ) {
|
|
var acceptFileTypes = new RegExp( "(\.|\/)(" + allowed_types + ")$", "i" );
|
|
if ( data.originalFiles[0]['name'].length && ! acceptFileTypes.test( data.originalFiles[0]['name'] ) ) {
|
|
uploadErrors.push( event_manager_ajax_file_upload.i18n_invalid_file_type + ' ' + allowed_types );
|
|
}
|
|
}
|
|
if ( uploadErrors.length > 0 ) {
|
|
alert( uploadErrors.join( "\n" ) );
|
|
} else {
|
|
$form.find(':input[type="submit"]').attr( 'disabled', 'disabled' );
|
|
data.context = jQuery('<progress value="" max="100"></progress>').appendTo( $uploaded_files );
|
|
data.submit();
|
|
}
|
|
},
|
|
|
|
progress: function (e, data) {
|
|
var $file_field = jQuery( this );
|
|
var $uploaded_files = $file_field.parent().find('.event-manager-uploaded-files');
|
|
var progress = parseInt(data.loaded / data.total * 100, 10);
|
|
data.context.val( progress );
|
|
},
|
|
|
|
fail: function (e, data) {
|
|
var $file_field = jQuery( this );
|
|
var $form = $file_field.closest( 'form' );
|
|
$form.find(':input[type="submit"]').removeAttr( 'disabled' );
|
|
},
|
|
|
|
done: function (e, data) {
|
|
var $file_field = jQuery( this );
|
|
var $form = $file_field.closest( 'form' );
|
|
var $uploaded_files = $file_field.parent().find('.event-manager-uploaded-files');
|
|
var multiple = $file_field.attr( 'multiple' ) ? 1 : 0;
|
|
var image_types = [ 'jpg', 'gif', 'png', 'jpeg', 'jpe' ];
|
|
data.context.remove();
|
|
jQuery.each(data.result.files, function(index, file) {
|
|
if ( file.error ) {
|
|
alert( file.error );
|
|
} else {
|
|
if ( jQuery.inArray( file.extension, image_types ) >= 0 ) {
|
|
var html = jQuery.parseHTML( event_manager_ajax_file_upload.js_field_html_img );
|
|
jQuery( html ).find('.event-manager-uploaded-file-preview img').attr( 'src', file.url );
|
|
} else {
|
|
var html = jQuery.parseHTML( event_manager_ajax_file_upload.js_field_html );
|
|
jQuery( html ).find('.event-manager-uploaded-file-name code').text( file.name );
|
|
}
|
|
jQuery( html ).find('.input-text').val( file.url );
|
|
jQuery( html ).find('.input-text').attr( 'name', 'current_' + $file_field.attr( 'name' ) );
|
|
if ( multiple ) {
|
|
$uploaded_files.append( html );
|
|
} else {
|
|
$uploaded_files.html( html );
|
|
}
|
|
}
|
|
});
|
|
$form.find(':input[type="submit"]').removeAttr( 'disabled' );
|
|
}
|
|
});
|
|
});
|
|
}
|
|
} //enf of return
|
|
}; //end of class
|
|
|
|
AjaxFileUpload= AjaxFileUpload();
|
|
jQuery(document).ready(function($)
|
|
{
|
|
AjaxFileUpload.init();
|
|
}); |