jQuery(document).ready(function(){
validate_simple_upload();
jQuery(document).on( 'click', '.wppb-rpf-add', function( event ){
validate_simple_upload();
});
if( typeof wp.media != "undefined" ){
// Uploading files
var wp_media_post_id = wp.media.model.settings.post.id; // Store the old id
jQuery(document).on( 'click', '.wppb_upload_button', function( event ){
event.preventDefault();
var set_to_post_id = ''; // Set this
var file_frame;
var uploadInputId = jQuery( this ).data( 'upload_input' );
var uploadButton = jQuery( this );
/* set default tab to upload file */
wp.media.controller.Library.prototype.defaults.contentUserSetting = false;
wp.media.controller.Library.prototype.defaults.router = false;
wp.media.controller.Library.prototype.defaults.searchable = true;
wp.media.controller.Library.prototype.defaults.sortable = false;
wp.media.controller.Library.prototype.defaults.date = false;
// If the media frame already exists, reopen it.
if ( file_frame ) {
// Set the post ID to what we want
file_frame.uploader.uploader.param( 'post_id', set_to_post_id );
// Open frame
file_frame.open();
return;
} else {
// Set the wp.media post id so the uploader grabs the ID we want when initialised
wp.media.model.settings.post.id = set_to_post_id;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: jQuery( this ).data( 'uploader_title' ),
button: {
text: jQuery( this ).data( 'uploader_button_text' )
},
multiple: false // Set to true to allow multiple files to be selected
});
/* send the meta_name of the field */
file_frame.uploader.options.uploader['params']['wppb_upload'] = 'true';
file_frame.uploader.options.uploader['params']['meta_name'] = jQuery( this ).data( 'upload_mn' );
// When an image is selected, run a callback.
file_frame.on( 'select', function() {
// We set multiple to false so only get one image from the uploader
attachments = file_frame.state().get('selection').toJSON();
var attids = [];
for( var i=0;i < attachments.length; i++ ){
// Do something with attachment.id and/or attachment.url here
attids.push( attachments[i].id );
result = '
';
// if multiple upload false remove previous upload details
if( uploadButton.data( 'multiple_upload' ) == false ){
jQuery( '.upload-field-details', uploadButton.parent() ).remove();
}
uploadButton.before( result );
uploadButton.hide();
}
// turn into comma separated string
attids = attids.join(',');
jQuery( 'input[id="'+uploadInputId+'"]', uploadButton.parent() ).val( attids );
// Restore the main post ID
wp.media.model.settings.post.id = wp_media_post_id;
jQuery(document).trigger( 'wppb_file_uploaded' )
});
// Finally, open the modal
file_frame.open();
// remove tabs from the top ( this is done higher in the code when setting router to false )
//jQuery('.media-frame-router').remove();
jQuery('.media-frame-title').append('');
});
// Restore the main ID when the add media button is pressed
jQuery('a.add_media').on('click', function() {
wp.media.model.settings.post.id = wp_media_post_id;
});
jQuery(document).on('keypress', '.wppb-remove-upload', function(e){
if(e.which == 13) {
jQuery(this).trigger('click');
}
});
jQuery(document).on('click', '.wppb-remove-upload', function(e){
if( confirm( 'Are you sure ?' ) ){
/* update hidden input */
simple_upload_button = jQuery(this).closest('li, td, p.form-row, div.form-row').find('input[type="file"]');
if (simple_upload_button.attr('name')) {
upload_input_id = simple_upload_button.attr('name').split('_').slice(2).join('_');
upload_input_id = upload_input_id.split('-').join('_');
upload_input = jQuery("#" + upload_input_id);
}
else{
upload_input = jQuery(this).closest('li, td, p.form-row, div.form-row').find('input[type="hidden"]');
}
removedAttachement = jQuery(this).parent().parent('.upload-field-details').data('attachment_id');
uploadAttachemnts = upload_input.val();
uploadAttachemntsArray = uploadAttachemnts.split(',');
newuploadAttachments = [];
for (var i = 0; i < uploadAttachemntsArray.length; i++) {
if (uploadAttachemntsArray[i] != removedAttachement)
newuploadAttachments.push(uploadAttachemntsArray[i]);
}
newuploadAttachments = newuploadAttachments.join(',');
upload_input.val(newuploadAttachments);
/* remove the attachment details */
jQuery(this).parent().parent('.upload-field-details').next('a').show();
simple_upload_button.show();
simple_upload_button.val('');
jQuery(this).parent().parent('.upload-field-details').remove();
jQuery(document).trigger( 'wppb_removed_uploaded_file' )
}
});
}
});
function validate_simple_upload(){
jQuery("input:file").on('change', function(e){
//handle simple upload
var uploadInputName = jQuery(this).attr('name');
var uploadButton = jQuery(this);
var oFReader = new FileReader();
var attachment = e.target.files[0];
oFReader.readAsDataURL(attachment);
oFReader.onload = function (oFREvent) {
var src = oFREvent.target.result;
var error = '';
jQuery("#p_" + uploadInputName).text(error);
uploadInputId = uploadInputName.split('-').join('_');
//Check allowed upload type by wordpress
allowed_mime_types = wppb_allowed_wordpress_formats.allowed_wordpress_formats;
allowed_by_wordpress = false;
for (var key in allowed_mime_types){
allowed_type = allowed_mime_types[key];
if (attachment.type === allowed_type){
allowed_by_wordpress = true;
possible_extensions = key.split('|');
}
}
if (allowed_by_wordpress) {
//Check allowed extensions
allowed_extensions = jQuery("#allowed_extensions_" + uploadInputId).val();
if (allowed_extensions !== '') {
var allowed = false;
allowed_extensions = allowed_extensions.split(',');
for (var i = 0; i < allowed_extensions.length; i++) {
if (possible_extensions.includes(allowed_extensions[i])) {
allowed = true;
}
}
if (allowed == false) {
error = wppb_error_messages.upload_type_error_message;
}
}
//Check size limit — prefer per-field limit, fall back to global
var perFieldLimit = jQuery("#size_limit_" + uploadInputId).val();
var allowed_size_limit = perFieldLimit ? parseFloat(perFieldLimit) : wppb_limit.size_limit;
if (attachment.size > allowed_size_limit) {
var limit = allowed_size_limit / (1024 * 1024);
error = wppb_error_messages.limit_error_message + limit + 'MB.';
}
}
else{
error = wppb_error_messages.upload_type_error_message;
}
if (error !== '') {
jQuery("#p_" + uploadInputName).text(error);
uploadButton.val('');
} else {
var fieldName = uploadInputName.replace(/^(simple_upload_)/,'').replace(/-/g,'_');
var formData = new FormData();
if (uploadButton.closest('.wppb-upload').length > 0) {
formData.append('action', 'wppb_ajax_simple_upload');
formData.append(fieldName, jQuery(e.target).prop('files')[0]);
} else {
formData.append('action', 'wppb_ajax_simple_avatar');
formData.append(fieldName, jQuery(e.target).prop('files')[0]);
}
formData.append('nonce', wppb_upload_script_vars.nonce);
formData.append('name', fieldName);
var simpleUploadFields = uploadButton.closest('.wppb-user-forms').find('.wppb_simple_upload');
simpleUploadFields.each(function() {
jQuery( this ).prop( 'disabled', true );
});
var submitAlreadyDisabled = false;
var submitButtonText = uploadButton.closest('.wppb-user-forms').find('.submit.button').val();
jQuery("input#"+fieldName).closest('.wppb-user-forms').find('.submit.button').val( 'Uploading file...' );
if ( jQuery( 'p.form-submit .submit.button' ).prop( 'disabled' ) ) {
submitAlreadyDisabled = true;
} else {
jQuery( 'p.form-submit .submit.button' ).prop( 'disabled', true );
}
jQuery.ajax({
url: wppb_upload_script_vars.ajaxUrl,
type: 'POST',
contentType: false,
processData: false,
data: formData,
success: function(response){
var parsed = JSON.parse(response);
if ( parsed && parsed.errors ) {
jQuery("input#"+fieldName).val(null);
jQuery('.wppb_simple_upload', jQuery("input#"+fieldName).parent()).val(null);
} else {
jQuery("input#"+fieldName).val(parsed);
}
if ( !submitAlreadyDisabled ) {
jQuery("p.form-submit .submit.button").prop('disabled', false);
}
simpleUploadFields.each(function() {
jQuery( this ).prop( 'disabled', false );
});
jQuery("input#"+fieldName).closest('.wppb-user-forms').find('.submit.button').val( submitButtonText );
},
});
}
};
});
}