"use strict";
var wcuf_is_force_reloading = false;
var wcuf_max_uploaded_files_number_considered_as_sum_of_quantities = true;
var wcuf_wpml_language = "none";
var wcuf_enable_select_quantity_per_file = false ;
var wcuf_show_required_upload_add_to_cart_warning_message = true ;
var wcuf_quantity_per_file_label = "Select quantity:";
var wcuf_single_crop_button_label = "Crop";
var wcuf_force_require_check_before_adding_item_to_cart = false;
var wcuf_allow_user_to_leave_page_in_case_of_required_field = 'no';
var wcuf_progressbar_color = "#808080";
var wcuf_crop_disable_zoom_controller = false;
var wcuf_ajax_reloading_fields_text = "Loading, please wait...";
var wcuf_current_prduct_id = wcuf_options.current_page == 'product' ? wcuf_options.current_product_id : 0;
var wcuf_is_order_detail_page = false;
var wcuf_order_id = "0";
var wcuf_ajax_action = "upload_file_during_checkout_or_product_page";
var wcuf_ajax_delete_action = "delete_file_during_checkout_or_product_page";
var wcuf_ajax_delete_single_file_action = "delete_single_file_during_checkout_or_product_page";
var wcuf_is_deleting = false;
var wcuf_current_page = wcuf_options.current_page;
var wcuf_minimum_required_files_message = "You have to upload at least: ";
var wcuf_checkout_required_message = "Please upload all the required files before proceding to checkout";
var wcuf_user_feedback_required_message = "Please fill all required text fields before uploading file(s).";
var wcuf_multiple_uploads_error_message = "Your file upload is incomplete – click on the 'Upload selected files' button or remove the file(s)";
var wcuf_unload_confirm_message = "Please upload all the required files before leaving the page";
var wcuf_disclaimer_must_be_accepted_message = "You must accept the disclaimer";
var wcuf_unload_check = wcuf_options.current_page == 'product' || wcuf_options.current_page == 'cart' || wcuf_options.current_page == 'shortcode';
var wcuf_exist_a_field_before_add_to_cart = wcuf_options.current_page == 'product' && wcuf_options.exists_a_field_to_show_before_adding_item_to_cart == 'true';
var wcuf_item_has_been_added_to_cart = wcuf_options.current_page == 'product' && wcuf_options.has_already_added_to_cart == 'true';
var wcuf_file_size_type_header_error = " size is incorrect or its type is not allowed. ";
var wcuf_mandatory_crop_error = "Before uploading, you need to crop all the images.";
var wcuf_file_size_error = " Max allowed size: ";
var wcuf_file_min_size_error = " Min file size: ";
var wcuf_image_size_error = "One (or more) file is not an image or it has wrong sizes/DPI. Sizes/DPI allowed:";
var wcuf_media_length_error = "One (or more) media file length is not valid. ";
var wcuf_image_exact_size_error = " file is not an image or size to big. Size must be: ";
var wcuf_media_file_type_error = "One (or more) is not a valid media. ";
var wcuf_image_height_text = "max height";
var wcuf_image_width_text = "max width";
var wcuf_image_min_height_text = "min height";
var wcuf_image_min_width_text = "min width";
var wcuf_image_min_dip_text = "min DPI";
var wcuf_image_max_dip_text = "max DPI";
var wcuf_image_aspect_ratio_text = "Aspect ratio";
var wcuf_media_min_length_text = "Min allowed length: ";
var wcuf_media_max_length_text = "Max allowed length: ";
var wcuf_type_allowed_error = "Allowed file types: ";
var wcuf_image_file_error = "Input file must be an image";
var wcuf_file_num_error = "Maximum of file upload error. You can upload max : ";
var wcuf_removed_files_text = "Following files have been removed: ";
var wcuf_removed_bad_encoded_images_text = "Bad econdoding deteceted. The following files have been removed because are not valid images: ";
var wcuf_ajaxurl = 'https://mumunplugged.co.za/wp-admin/admin-ajax.php';
var wcuf_success_msg = 'Done! ';
var wcuf_loading_msg = 'Save in progress, please wait...';
var wcuf_delete_msg = 'Deleting, pelase wait... ';
var wcuf_failure_msg = 'An error has occurred.';
var wcuf_delete_file_msg = 'Delete uploaded file(s)';
var wcuf_html5_error = "The HTML5 standards are not fully supported in this browser, please upgrade it or use a more moder browser like Google Chrome or FireFox.";
var wcuf_file_sizes_error = "The sum of file sizes cannot be greater than %s MB!";
var wcuf_file_sizes_min_error = "The sum of file sizes cannot be minor than %s MB!";
var wcuf_max_file_sizes = 536870912;
var wcuf_max_chunk_size = 536870912;
var wcuf_exists_at_least_one_upload_field_bounded_to_variations = wcuf_options.exists_at_least_one_upload_field_bounded_to_variations == 'true';
var wcuf_exists_at_least_one_upload_field_bounded_to_gateway = wcuf_options.exists_at_least_one_upload_field_bounded_to_gateway == 'true';
var wcuf_required_upload_add_to_cart_warning_message = '
Please upload all the required file(s). Once done you will be able to add the product to cart.
';
var wcuf_delete_single_file_warning_msg = "Are sure you want to delete the file?";
var wcuf_multiple_file_list_tile = "To upload:";
var wcuf_auto_upload_for_multiple_files_upload_field = false;
/*
Workflow:
-- upload: wcuf_backgroud_file_upload -> wcuf_append_file_delete() -> wcuf_ajax_reload_upload_fields_container()
-- delete: wcuf_delete_file -> wcuf_ajax_reload_upload_fields_container()
*/
jQuery(document).ready(function()
{
jQuery('.wcuf_file_input').val('');
//Shows upload field area after page load
wcuf_show_upload_field_area();
if(typeof wcuf_unload_check === 'undefined')
{
console.log("[WCUF] javascript libraries have not properly loaded due to 3rd party plugin interference.");
return;
}
if(wcuf_unload_check) //not performed in checkout page. For that one is used the '#place_order' click event.
wcuf_before_unload();
jQuery(document).on('click','.delete_button', wcuf_delete_file);
jQuery(document).on('click', '.wcuf_delete_single_file_stored_on_server', wcuf_delete_single_file_on_server);
jQuery(document).on('click','.wcuf_upload_field_button', wcuf_browse_file);
jQuery(document).on('click','button.single_add_to_cart_button', wcuf_check_multiple_upload_status); //Product page: deny add to cart if selected files have not been uploaded
jQuery(document).on('click', '#place_order', wcuf_checkout_check_required_fields); //only during checkout
jQuery('#wcuf_show_popup_button').magnificPopup({
type: 'inline',
showCloseBtn:false,
preloader: false,
callbacks: {
}
});
jQuery('#wcuf_close_popup_alert').on('click',function(event){ event.preventDefault(); event.stopImmediatePropagation(); jQuery.magnificPopup.close(); return false});
jQuery('#wcuf_leave_page').on('click', wcuf_leave_the_page_after_warning_popup_prompt); //see method comment
if (window.File && window.FileReader && window.FileList && window.Blob)
{
jQuery(document).on('change','.wcuf_file_input', wcuf_file_input_check);
jQuery(document).on('drop','.wcuf_upload_drag_and_drop_area', wcuf_on_files_dragged);
jQuery(document).on('dragover','.wcuf_upload_drag_and_drop_area', wcuf_on_drag_over_event);
jQuery(document).on('dragleave','.wcuf_upload_drag_and_drop_area', wcuf_on_drag_leave_event);
jQuery(document).on('click','.wcuf_upload_multiple_files_button', wcuf_start_checks_on_files_info);
}
else
{
jQuery('#wcuf_file_uploads_container').hide();
wcuf_show_popup_alert(wcuf_html5_error);
}
//Required uploads warning message
if(wcuf_show_required_upload_add_to_cart_warning_message)
jQuery(".product_meta").prepend(wcuf_required_upload_add_to_cart_warning_message);
//Hide add to cart in case of required field
wcuf_hide_add_to_cart_button_in_case_of_required_upload(0, 0);
});
function wcuf_browse_file(event)
{
event.preventDefault();
event.stopImmediatePropagation();
var id = jQuery(event.currentTarget).data('id');
jQuery("#wcuf_upload_field_"+id).trigger('click');
return false;
}
function wcuf_delete_single_file_on_server(event)
{
var id = jQuery(event.currentTarget).data('id');
var field_id = jQuery(event.currentTarget).data('field-id');
wcuf_ui_delete_file();
event.preventDefault();
event.stopImmediatePropagation();
jQuery.post( wcuf_ajaxurl , { action: wcuf_ajax_delete_single_file_action, id: id, field_id:field_id } ).done(wcuf_ui_after_delete);
}
function wcuf_delete_file(event)
{
wcuf_is_deleting = true;
wcuf_ui_delete_file();
event.preventDefault();
event.stopImmediatePropagation();
//UI
wcuf_show_hide_add_to_cart_area(false, false, 100,100);
jQuery.post( wcuf_ajaxurl , { action: wcuf_ajax_delete_action, id: jQuery(event.target).data('id')} ).done(wcuf_ui_after_delete);
return false;
}
function wcuf_reset_data()
{
wcuf_multiple_files_queues = new Array();
wcuf_multiple_files_mandatory_crop = new Array();
}
function wcuf_ajax_reload_upload_fields_container()
{
wcuf_reset_data();
var action = 'reload_upload_fields_on_checkout';
if(wcuf_current_page == 'product')
action = 'reload_upload_fields';
else if(wcuf_current_page == 'cart')
action = 'reload_upload_fields_on_cart';
else if(wcuf_current_page == 'shortcode')
action = 'reload_shortcode_upload_fields';
if(wcuf_current_page == 'checkout')
jQuery( document.body ).trigger( 'update_checkout' );
var random = Math.floor((Math.random() * 1000000) + 999);
//ajax_reload_upload_fields event
jQuery('.wcuf_'+wcuf_current_page+'_ajax_container').animate({ opacity: 0 }, 500, function()
{
jQuery('.wcuf_'+wcuf_current_page+'_ajax_container_loading_container').html("
"+unescape(wcuf_ajax_reloading_fields_text)+"
");
var variation_id = jQuery('input[name=variation_id]').val();
var formData = new FormData();
formData.append('action', action);
if( wcuf_current_page == 'checkout')
{
if(typeof wcuf_current_payment_method !== 'unedfined')
formData.append('payment_method', wcuf_current_payment_method);
if(typeof wcuf_current_shipping_method !== 'unedfined')
formData.append('shipping_method', wcuf_current_shipping_method);
}
formData.append('product_id', wcuf_current_prduct_id);
formData.append('variation_id', jQuery.isNumeric(variation_id) ? variation_id : 0);
formData.append('wcuf_wpml_language', wcuf_wpml_language);
formData.append('current_item_cart_id', wcuf_options.current_item_cart_id);
jQuery.ajax({
url: wcuf_ajaxurl+"?nocache="+random,
type: 'POST',
data: formData,
dataType : "html",
contentType: "application/json; charset=utf-8",
async: true,
success: function (data)
{
jQuery('.wcuf_'+wcuf_current_page+'_ajax_container_loading_container').html("");
jQuery('.wcuf_'+wcuf_current_page+'_ajax_container').html(data);
createPDFThumbnails(); //external library that manages PDF preview
wcuf_show_upload_field_area()
//Hide add to cart in case of required field
wcuf_hide_add_to_cart_button_in_case_of_required_upload(600, 400);
},
error: function (data) {
},
cache: false,
contentType: false,
processData: false
});
});
}
function wcuf_append_file_delete(id) //after file upload
{
if(wcuf_current_page == "cart" )
{
wcuf_reload_page(500);
return false;
}
else
{
wcuf_ajax_reload_upload_fields_container();
return false;
}
//Not used any more ------------------------------------------------------
var delete_id = wcuf_is_order_detail_page ? id : 'wcufuploadedfile_'+id;
jQuery('.wcuf_file_name').delay(320).fadeIn(300);
jQuery('#wcuf_upload_status_box_'+id).delay(300).hide(500);
wcuf_show_control_buttons(id);
jQuery('#wcuf_upload_field_button_'+id+', #wcuf_upload_multiple_files_button_'+id+', #wcuf_file_name_'+id+', #wcuf_max_size_notice_'+id+', #wcuf_feedback_textarea_'+id).remove();
jQuery('#wcuf_delete_button_box_'+id).append('');
jQuery(document).on('click', '#wcuf_delete_button_box_'+id, wcuf_delete_file);
}
function wcuf_set_bar_background()
{
jQuery('.wcuf_bar').css('background-color',wcuf_progressbar_color);
}
function wcuf_hide_control_buttons()
{
jQuery('.wcuf_crop_container, .wcuf_multiple_files_actions_button_container, .wcuf_disclaimer_label, .wcuf_upload_field_button, .wcuf_feedback_textarea, .wcuf_max_size_notice, .wcuf_upload_multiple_files_button, .delete_button').fadeOut(0);
}
function wcuf_show_control_buttons(id)
{
var current_elem = jQuery('#wcuf_upload_field_'+id);
var is_multiple = jQuery(current_elem).data('is-multiple-files');
jQuery('.wcuf_upload_field_button, .wcuf_disclaimer_label, .wcuf_max_size_notice, .wcuf_feedback_textarea, .delete_button').fadeIn(200);
if(is_multiple)
jQuery('.wcuf_multiple_files_actions_button_container').fadeIn(200);
jQuery('.wcuf_upload_multiple_files_button').each(function(index,elem)
{
var id = jQuery(this).data('id');
if(typeof wcuf_multiple_files_queues !== 'undefined' && typeof wcuf_multiple_files_queues[id] !=='undefined' && wcuf_multiple_files_queues[id].length > 0)
jQuery(this).fadeIn(500);
});
}
function wcuf_show_multiple_files_progress_area(id)
{
jQuery('#wcuf_multiple_file_progress_container_'+id).fadeIn();
}
function wcuf_reset_loading_ui(id)
{
wcuf_set_bar_background();
jQuery('#wcuf_file_name_'+id).html("");
jQuery('.wcuf_file_name, wcuf_multiple_file_progress_container_'+id).fadeOut(0);
jQuery('#wcuf_bar_'+id+", #wcuf_multiple_file_bar_"+id).css('width', "0%");
wcuf_hide_control_buttons();
jQuery('#wcuf_upload_status_box_'+id).show(400,function()
{
//Smooth scroll
try{
jQuery('html, body').animate({
scrollTop: jQuery('#wcuf_upload_status_box_'+id).offset().top - 200 //#wcmca_address_form_container ?
}, 500);
}catch(error){}
});
jQuery('#wcuf_delete_button_box_'+id).empty();
jQuery('#wcuf_status_'+id).html(unescape(wcuf_loading_msg));
}
function wcuf_on_drag_over_event(event)
{
event.preventDefault();
event.stopPropagation();
jQuery(event.currentTarget).addClass('wcuf_dragover');
}
function wcuf_on_drag_leave_event(event)
{
event.preventDefault();
event.stopPropagation();
jQuery(event.currentTarget).removeClass('wcuf_dragover');
}
function wcuf_on_files_dragged(event)
{
event.preventDefault();
event.stopPropagation();
wcuf_on_drag_leave_event(event);
var id = jQuery(event.currentTarget).data('id');
var current_elem = jQuery('#wcuf_upload_field_'+id);
var is_multiple = jQuery(current_elem).data('is-multiple-files');
event.target.files = new Array();
event.currentTarget = current_elem;
if (event.originalEvent.dataTransfer.items)
{
const end_loop = is_multiple ? event.originalEvent.dataTransfer.items.length : 1;
// Use DataTransferItemList interface to access the file(s)
for (var i = 0; i < end_loop; i++)
{
// If dropped items aren't files, reject them
if (event.originalEvent.dataTransfer.items[i].kind === 'file') {
var file = event.originalEvent.dataTransfer.items[i].getAsFile();
event.target.files.push(file);
}
}
}
else
{
// Use DataTransfer interface to access the file(s)
event.target.files = event.originalEvent.dataTransfer.files;
}
wcuf_file_input_check(event);
}
function wcuf_file_input_check(evt)
{
evt.preventDefault();
evt.stopImmediatePropagation();
var id = jQuery(evt.target).data('id');
var is_multiple = jQuery(evt.currentTarget).data('is-multiple-files');
if(is_multiple && !wcuf_auto_upload_for_multiple_files_upload_field)
{
evt.dot_not_invoke_the_callback = true; //this triggers the autoupload feature (autoupload automatic upload)
}
if(is_multiple)
{
wcuf_manage_multiple_file_browse(evt);
{
wcuf_start_checks_on_files_info(evt);
}
}
else
wcuf_start_checks_on_files_info(evt);
return false;
}
function wcuf_start_checks_on_files_info(evt)
{
evt.preventDefault();
evt.stopImmediatePropagation();
var id = jQuery(evt.currentTarget).data('id');
var current_elem = jQuery('#wcuf_upload_field_'+id);
var dimensions_logical_operator = current_elem.data("dimensions-logical-operator");
var max_image_width = current_elem.data("max-width");
var max_image_height = current_elem.data("max-height");
var min_image_width = current_elem.data("min-width");
var min_image_height = current_elem.data("min-height");
var min_image_dpi = current_elem.data("min-dpi");
var max_image_dpi = current_elem.data("max-dpi");
var is_multiple = current_elem.data('is-multiple-files');
var files;
if(is_multiple)
{
if(typeof wcuf_multiple_files_queues === 'undefined' || typeof wcuf_multiple_files_queues[id] === 'undefined')
return false;
files = wcuf_multiple_files_queues[id];
}
else
{
files = evt.target.files;
}
//For not image files, error is not rised if min/max width/wight are not set.
wcuf_check_image_file_width_and_height(files, evt, current_elem, wcuf_result_on_files_info, max_image_width, max_image_height, min_image_width, min_image_height, min_image_dpi ,max_image_dpi, dimensions_logical_operator);
return false;
}
//this method is eventually invoked by the "wcuf_check_image_file_width_and_height" method according the "autoupload" option
function wcuf_result_on_files_info(evt, error, img, data)
{
if(!error)
{
//Check if audio/video file respects length limit (if any)
new WCUFAudioAndVideoLenghtChecker( evt, wcuf_check_if_show_cropping_area);
}
else
{
var size_string = " ";
size_string += typeof data.min_image_width !== 'undefined' && data.min_image_width != 0 ? data.min_image_width+"px "+wcuf_image_min_width_text+" " : "";
size_string += typeof data.max_image_width !== 'undefined' && data.max_image_width != 0 ? data.max_image_width+"px "+wcuf_image_width_text+" " : "";
size_string += typeof data.min_image_height !== 'undefined' && data.min_image_height != 0 ? data.min_image_height+"px "+wcuf_image_min_height_text+" ": "";
size_string += typeof data.max_image_height !== 'undefined' && data.max_image_height != 0 ? data.max_image_height+"px "+wcuf_image_height_text+" " : "";
size_string += typeof data.min_dpi !== 'undefined' && data.min_dpi != 0 ? data.min_dpi+" "+wcuf_image_min_dip_text+" " : "";
size_string += typeof data.max_dpi !== 'undefined' && data.max_dpi != 0 ? data.max_dpi+" "+wcuf_image_max_dip_text+" " : "";
size_string += typeof data.ratio_x !== 'undefined' && data.ratio_x != 0 && typeof data.ratio_y !== 'undefined' && data.ratio_y != 0 ? wcuf_image_aspect_ratio_text+" "+data.ratio_x+":"+data.ratio_y+" " : "";
if(data.images_to_remove.length != 0)
{
size_string += " "+wcuf_removed_files_text+"";
jQuery.each(data.images_to_remove, function(index, file_data)
{
jQuery("#wcuf_delete_single_file_in_multiple_list_"+file_data.unique_id).trigger('click');
size_string += "
"+file_data.name+"
";
});
size_string += "";
}
//This kind of images (or maybe they were not images) were not properly encoded
if(data.bad_encoded_images.length != 0)
{
size_string += " "+wcuf_removed_bad_encoded_images_text+"";
jQuery.each(data.bad_encoded_images, function(index, file_data)
{
jQuery("#wcuf_delete_single_file_in_multiple_list_"+file_data.unique_id).trigger('click');
size_string += "
"+file_data.name+"
";
});
size_string += "";
}
wcuf_show_popup_alert(wcuf_image_size_error+" "+size_string);
return false;
}
}
function wcuf_check_if_show_cropping_area(evt)
{
var id = jQuery(evt.currentTarget).data('id');
var enable_crop = jQuery("#wcuf_upload_field_"+id).data('enable-crop-editor');
var is_multiple = jQuery("#wcuf_upload_field_"+id).data('is-multiple-files');
if(!is_multiple && enable_crop)
{
new wcuf_image_crop(evt, id, wcuf_backgroud_file_upload);
}
else
wcuf_backgroud_file_upload(evt);
}
function wcuf_backgroud_file_upload(evt)
{
evt.preventDefault();
evt.stopImmediatePropagation();
var id = jQuery(evt.currentTarget).data('id');
var current_elem = jQuery('#wcuf_upload_field_'+id);
var file_wcuf_user_feedback = jQuery('#wcuf_feedback_textarea_'+id).val();
var size = current_elem.data('size');
var min_size = current_elem.data('min-size');
var file_wcuf_name = current_elem.attr('name');
var file_wcuf_title = current_elem.data('title');
var detect_pdf = current_elem.data('detect-pdf');
var disable_cart_quantity_as_num_of_files = current_elem.data('data-disable-cart-quantity-as-num-of-files');
var check_disclaimer = current_elem.data('disclaimer');
var extension = current_elem.val().replace(/^.*\./, '');
var extension_accepted = current_elem.attr('accept');
var max_image_width = current_elem.data("max-width");
var max_image_height = current_elem.data("max-height");
var is_crop_editor_enabled = current_elem.data("enable-crop-editor");
var files;
var file;
var is_multiple = current_elem.data('is-multiple-files');
if(is_multiple)
{
if(typeof wcuf_multiple_files_queues === 'undefined' || typeof wcuf_multiple_files_queues[id] === 'undefined')
return false;
files = wcuf_multiple_files_queues[id];
file = wcuf_multiple_files_queues[id][0];
}
else
{
files = evt.target.files;
if(typeof evt.blob === 'undefined')
file = files[0];
else //in case the file (image) has been cropped
file = evt.blob;
}
extension = extension.toLowerCase();
if(typeof extension_accepted !== 'undefined')
extension_accepted = extension_accepted.toLowerCase();
if (location.host.indexOf("sitepointstatic") >= 0) return;
var xhr = new XMLHttpRequest();
//Checkes
if(check_disclaimer && !jQuery('#wcuf_disclaimer_checkbox_'+id).prop('checked'))
{
wcuf_show_popup_alert(wcuf_disclaimer_must_be_accepted_message);
if(!is_multiple && !is_crop_editor_enabled) //On Chrome if the input field is not cleared, it doesn't allow the file selection
{
jQuery("#wcuf_upload_field_"+id).val("");
}
return false;
}
{
//size and filetypecheck
if(!wcuf_check_multiple_file_uploads_limit_and_crop(id, files, file))
{
return false;
}
}
if(jQuery('#wcuf_feedback_textarea_'+id).val() == "" && jQuery('#wcuf_feedback_textarea_'+id).prop('required'))
{
wcuf_show_popup_alert(wcuf_user_feedback_required_message);
return;
}
jQuery('#wcuf_feedback_textarea_'+id).prop('disabled', true);
if (xhr.upload)
{
//UI
wcuf_reset_loading_ui(id);
wcuf_show_hide_add_to_cart_area(false, false, 100,100);
var formData = {'action': wcuf_ajax_action,
'title': file_wcuf_title,
'detect_pdf': detect_pdf,
'user_feedback': file_wcuf_user_feedback,
'order_id': wcuf_order_id,
'disable_cart_quantity_as_num_of_files': disable_cart_quantity_as_num_of_files,
'wcuf_wpml_language': wcuf_wpml_language
};
var multiple_file_uploader = new WCUFMultipleFileUploader({ upload_field_id:id, form_data: formData, files: files, file: file, file_name:file_wcuf_name, security:wcuf_options.security});
document.addEventListener('onWCUFMultipleFileUploaderComplete', function(){wcuf_append_file_delete(id);});
if(typeof wcuf_multiple_files_queues !== 'undefined' && typeof wcuf_multiple_files_queues[id] !== 'undefined')
wcuf_multiple_files_queues[id] = new Array();
multiple_file_uploader.continueUploading();
}
else
{
console.log("here");
wcuf_display_file_size_or_ext_error(file, size, extension_accepted, min_size, size);
}
return false;
}
function wcuf_replace_bad_char(text)
{
text = text.replace(/'/g,"");
text = text.replace(/"/g,"");
text = text.replace(/ /g,"_");
text = text.replace(/\+/g,"_");
text = text.replace(/%/g,"_");
text = text.replace(/#/g,"_");
return text;
}
function wcuf_display_file_size_or_ext_error(file, size, extension_accepted, min_size, max_size)
{
var msg = "";
if(min_size != 0)
msg += file.name+wcuf_file_min_size_error+(min_size/(1024*1024))+" MB ";
if(max_size != 0)
msg += file.name+wcuf_file_size_error+(size/(1024*1024))+" MB ";
if(typeof extension_accepted !== 'undefined')
msg += wcuf_type_allowed_error+" "+extension_accepted;
wcuf_show_popup_alert(msg);
}
function wcuf_check_multiple_file_uploads_limit_and_crop(id, files, file)
{
var fileUpload = jQuery('#wcuf_upload_field_'+id);
var max_size = fileUpload.data('size');
var min_size = fileUpload.data('min-size');
var multiple_files_sum_max_size = fileUpload.data('multiple-files-max-sum-size');
var multiple_files_sum_min_size = fileUpload.data('multiple-files-min-sum-size');
var is_multiple_files_field = fileUpload.data('is-multiple-files');
var max_num = fileUpload.data('max-files');
var min_num = fileUpload.data('min-files');
var extension_accepted = fileUpload.attr('accept');
var error = false;
var files = is_multiple_files_field ? wcuf_multiple_files_queues[id] : [file];
var all_files_quantity_sum = 0;
var sum_all_file_sizes = 0;
if(typeof extension_accepted !== 'undefined')
extension_accepted = extension_accepted.toLowerCase();
//Computing number of files and their quantity
all_files_quantity_sum = files.length;
if(wcuf_max_uploaded_files_number_considered_as_sum_of_quantities)
{
for (var i=0; i 1 ? parseInt(files[i].quantity) - 1 : 0;
}
}
if (max_num != 0 && all_files_quantity_sum > max_num)
{
wcuf_show_popup_alert(wcuf_file_num_error+max_num);
error = true;
}
else if(min_num != 0 && all_files_quantity_sum < min_num)
{
wcuf_show_popup_alert(wcuf_minimum_required_files_message+min_num);
error = true;
}
else
{
var msg="";
for(var i = 0; i < files.length; i++)
{
var name = files[i].name;
var extension = name.replace(/^.*\./, '');
extension = extension.toLowerCase();
sum_all_file_sizes += files[i].size;
if((min_size != 0 && files[i].size < min_size) || (max_size != 0 && files[i].size > max_size) || (extension_accepted != undefined && extension_accepted.indexOf(extension) == -1))
{
msg += name+wcuf_file_size_type_header_error;
if(max_size != 0)
msg += wcuf_file_size_error+(max_size/(1024*1024))+" MB ";
if(min_size != 0)
msg += wcuf_file_min_size_error+(min_size/(1024*1024))+" MB ";
if(typeof extension_accepted !== 'undefined')
msg += wcuf_type_allowed_error+" "+extension_accepted+" ";
}
}
if(msg =="" && is_multiple_files_field && multiple_files_sum_max_size != 0 && sum_all_file_sizes > multiple_files_sum_max_size)
{
var size_error_message = wcuf_file_sizes_error.replace("%s", (multiple_files_sum_max_size/(1024*1024)));
msg = size_error_message;
}
if(msg =="" && is_multiple_files_field && multiple_files_sum_min_size != 0 && sum_all_file_sizes < multiple_files_sum_min_size)
{
var size_error_message = wcuf_file_sizes_min_error.replace("%s", (multiple_files_sum_min_size/(1024*1024)));
msg = size_error_message;
}
if(msg != "")
{
wcuf_show_popup_alert(msg);
error = true;
}
}
//Crop
for (var element in wcuf_multiple_files_mandatory_crop)
{
for (var element2 in wcuf_multiple_files_mandatory_crop[element])
{
if(!error && wcuf_multiple_files_mandatory_crop[element][element2])
{
wcuf_show_popup_alert(wcuf_mandatory_crop_error);
error = true;
}
}
}
if(error)
{
return false;
}
return true;
}
function wcuf_check_multiple_upload_status(evt)
{
if(typeof wcuf_multiple_files_queues !== 'undefined')
for (var key in wcuf_multiple_files_queues)
{
if ((!isNaN(key) || key.indexOf('-') > -1) && wcuf_multiple_files_queues[key].length != 0) //In some instalaltion keys contains some other window/dom elements
{
if(evt != null)
{
evt.preventDefault();
evt.stopImmediatePropagation();
wcuf_show_popup_alert(wcuf_multiple_uploads_error_message);
}
return false;
}
}
return true;
}
function wcuf_all_required_uploads_have_been_performed(bypass_page_leave_check)
{
var ok = true;
if(!bypass_page_leave_check && wcuf_allow_user_to_leave_page_in_case_of_required_field == 'always')
return true;
jQuery('.wcuf_file_input').each(function(index,value)
{
var min_files = parseInt(jQuery(this).data('min-files'));
var data_is_required = jQuery(this).data('required');
if(data_is_required && min_files != 0)
ok = false;
});
return ok;
}
function wcuf_checkout_check_required_fields(event)
{
if(!wcuf_all_required_uploads_have_been_performed(false))
{
event.preventDefault();
event.stopImmediatePropagation();
wcuf_show_popup_alert(wcuf_checkout_required_message);
return false;
}
wcuf_check_multiple_upload_status(event);
}
function wcuf_is_edge()
{
return /Edge\/\d+/i.test(navigator.userAgent);
}
function wcuf_is_IE()
{
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number
{
return true;
}
}
//In case of 'allow_user_to_leave_page_in_case_of_required_field', popup ok button (alert_popup.php) has id "wcuf_leave_page". So the click
//is detected via this handler and user can leave page on next leave attempt
function wcuf_leave_the_page_after_warning_popup_prompt(event)
{
jQuery.magnificPopup.close();
wcuf_is_force_reloading = true;
return false;
}
function wcuf_before_unload()
{
jQuery(window).bind("beforeunload", function (e)
{
if(wcuf_is_force_reloading)
return;
var can_exit = true;
var multiple_uploads_status = wcuf_check_multiple_upload_status(null);
var confirmationMessage = wcuf_unload_confirm_message;
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
if(!multiple_uploads_status)
{
can_exit = multiple_uploads_status;
confirmationMessage = wcuf_multiple_uploads_error_message;
}
if( wcuf_current_page != 'product' ||
(wcuf_force_require_check_before_adding_item_to_cart && wcuf_exist_a_field_before_add_to_cart) ||
(wcuf_current_page == 'product' && wcuf_item_has_been_added_to_cart))
can_exit = wcuf_all_required_uploads_have_been_performed(false);
if(can_exit || wcuf_is_deleting)
return undefined;
{
if(isChrome)
{
wcuf_show_popup_alert(confirmationMessage);
return confirmationMessage;
}
else if(!wcuf_is_IE() && confirm(confirmationMessage))
history.go();
else
{
if(!wcuf_is_edge() && !wcuf_is_IE())
wcuf_show_popup_alert(confirmationMessage);
window.setTimeout(function() {
window.stop();
}, 1);
if(wcuf_is_edge() || wcuf_is_IE())
{
e.preventDefault();
e.stopImmediatePropagation();
(e || window.event).returnValue = confirmationMessage; //Gecko + IE
return confirmationMessage;
}
}
}
});
};