var AjaxFileUpload= function () { /// Constructor function of the event AjaxFileUpload class. /// return { /// ///Initializes the ajax file upload. /// /// /// 1.0.0 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('').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(); });