Current File : //var/www/prestashop/modules/mbeshipping/views/js/16/front.js |
/**
* 2017-2022 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author MBE Worldwide
* @copyright 2017-2024 MBE Worldwide
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of MBE Worldwide
*/
;(function () {
let IS_CONSOLE_LOG_ENABLED = true;
let $gel_prx_delivery_option_radio = '';
let $gel_prx_delivery_option_radio_wrapper = '';
let $gel_prx_delivery_option_form = '';
let $gel_prx_delivery_option_form_submit = '';
let isAjaxInit = false;
let isPageReloadNeeded = true;
/* Log utility */
function console_log(obj) {
if (IS_CONSOLE_LOG_ENABLED) {
console.log('GEL PROXIMITY >', obj);
}
}
function console_error(obj) {
if (IS_CONSOLE_LOG_ENABLED) {
console.error('GEL PROXIMITY >', obj);
}
}
console_log('PS16');
function validateEmail(email) {
if (email.length == 0) {
return true;
}
let re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function gelprx_fancybox_alert(message, is_modal = false) {
$.fancybox({
'modal': is_modal,
"padding": 5,
"margin": 5,
"autoSize": true,
"autoCenter": true,
'content': "<div style=\"width:300px;\" class=\"text-center\"><strong>" + message + "</strong></div>",
});
}
function gelPrxSetPickUpPointForCurrentCart(payload) {
console_log('gelPrxSetPickUpPointForCurrentCart');
$.ajax({
url: gelprx_conf.ajax_url,
type: 'POST',
dataType: 'json',
cache: false,
data: {
'token': gelprx_conf.ajax_token,
'action': 'setPickUpPointForCurrentCart',
'status': 'ok',
'payload': payload,
}
}).done(function (response) {
console_log(response);
if ($('div.gelproximity-app__selection-details').length) {
$('div.gelproximity-app__selection-details').html(response.data.html);
if($('div.gelproximity-app__selection-details').html().trim() === ''){
$gel_prx_delivery_option_form_submit.hide();
}else{
$gel_prx_delivery_option_form_submit.show();
}
if ($gel_prx_delivery_option_radio_wrapper.find('.delivery_option_price').length) {
$('.gelproximity-app__pick-button-text').text(gelprx_conf.buttonEditText);
$gel_prx_delivery_option_radio_wrapper.find('.delivery_option_price').text(response.data.cost);
} else {
if (isPageReloadNeeded) {
location.reload();
}
}
}
}).fail(function (response, err) {
console_error(response);
console_error(err);
if ($('div.gelproximity-app__selection-details').length) {
$('div.gelproximity-app__selection-details-error').removeClass('gelproximity-app__hidden');
$('#payment-confirmation').addClass('gelproximity-app__hidden');
}
});
}
function disableCheckoutPaymentStep() {
$('div.payment-options ').addClass('gelproximity-app__hidden');
$('#conditions-to-approve').addClass('gelproximity-app__hidden');
$('#payment-confirmation').addClass('gelproximity-app__hidden');
$('#HOOK_PAYMENT').addClass('gelproximity-app__hidden');
}
function enableCheckoutPaymentStep() {
$('div.payment-options ').removeClass('gelproximity-app__hidden');
$('#conditions-to-approve').removeClass('gelproximity-app__hidden');
$('#payment-confirmation').removeClass('gelproximity-app__hidden');
$('#HOOK_PAYMENT').removeClass('gelproximity-app__hidden');
}
function init()
{
console_log('init');
if (typeof gelprx_conf !== 'undefined') {
const options = {
apiKey: gelprx_conf.apiKey,
merchantCode: gelprx_conf.merchantCode,
reference: gelprx_conf.reference,
redirectMode: gelprx_conf.redirectMode,
locale: gelprx_conf.locale,
urlEndUser: gelprx_conf.urlEndUser,
urlRedirectOk: gelprx_conf.urlRedirectOk,
urlRedirectCancel: gelprx_conf.urlRedirectCancel,
networks: gelprx_conf.networkCode,
prices: gelprx_conf.prices,
};
const gelSDK = new GelSDK(options);
const gelUIModalOptions = {
callbackOk: (data) => {
// Funzione nel caso venga selezionato un punto di ritiro
console_log('modal pick-up point selected');
console_log(data);
gelPrxSetPickUpPointForCurrentCart(data);
},
callbackKo: () => {
// Funzione nel caso venga chiusa la modale della mappa
console_log('modal closed');
}
};
function renderButtonModal() {
gelSDK.createUIModal(gelUIModalOptions);
}
$('#gelproximity-app-pick-point-select-button').on('click', function () {
renderButtonModal();
});
}
}
function mainInit(){
// If is showed the alert about no pick up selected remove every payment option and block the checkout process
if ($('#gelproximity-app-no-pick-point-selected').length) {
disableCheckoutPaymentStep();
}
if ($('#gelproximity-app__selection-button-sdk-wrapper').length) {
if (typeof gelprx_conf !== 'undefined') {
init();
// Find and manage carrier's input radio
$gel_prx_delivery_option_radio = '';
$gel_prx_delivery_option_radio_wrapper = '';
if ($('.delivery_option_radio input[value="' + gelprx_conf.id_carrier + '"]').length) {
$gel_prx_delivery_option_radio = $('.delivery_option_radio input[value="' + gelprx_conf.id_carrier + '"]');
} else if ($('.delivery_option_radio input[value="' + gelprx_conf.id_carrier + ',"]').length) {
$gel_prx_delivery_option_radio = $('.delivery_option_radio input[value="' + gelprx_conf.id_carrier + ',"]');
}
$('.delivery_option_radio input').on('change', function () {
$('.gelproximity-app--16').parent().addClass('gelproximity-app__hidden');
// Fix for keep PS 16 style
setTimeout(function () {
$('#gelproximity-app-pick-point-select-button').removeClass('button button-small');
}, 1000);
});
$('.gelproximity-app--16').parent().addClass('gelproximity-app__hidden');
if ($gel_prx_delivery_option_radio.length) {
$gel_prx_delivery_option_radio_wrapper = $gel_prx_delivery_option_radio.closest('div.delivery_option');
// Default carrier price and edit button
if ($gel_prx_delivery_option_radio_wrapper.length) {
// + Detect parent form and submit button
$gel_prx_delivery_option_form = $gel_prx_delivery_option_radio_wrapper.closest('form');
console.log($gel_prx_delivery_option_form);
$gel_prx_delivery_option_form_submit = $gel_prx_delivery_option_form.find('[type="submit"]');
console.log($gel_prx_delivery_option_form_submit);
if ($gel_prx_delivery_option_form.length && $gel_prx_delivery_option_form_submit.length) {
if ($gel_prx_delivery_option_radio.is(':checked')) {
if($('div.gelproximity-app__selection-details').html().trim() === ''){
// $gel_prx_delivery_option_form_submit.hide();
$gel_prx_delivery_option_form_submit.css('opacity','0.3');
$gel_prx_delivery_option_form_submit.prop('disabled',true);
}else{
// $gel_prx_delivery_option_form_submit.show();
$gel_prx_delivery_option_form_submit.css('opacity','1');
$gel_prx_delivery_option_form_submit.prop('disabled',false);
}
}else{
// $gel_prx_delivery_option_form_submit.show();
$gel_prx_delivery_option_form_submit.css('opacity','1');
$gel_prx_delivery_option_form_submit.prop('disabled',false);
}
$gel_prx_delivery_option_form.find('input[type="radio"]').on('change', function () {
if ($gel_prx_delivery_option_radio.is(':checked')) {
if($('div.gelproximity-app__selection-details').html().trim() === ''){
// $gel_prx_delivery_option_form_submit.hide();
$gel_prx_delivery_option_form_submit.css('opacity','0.3');
$gel_prx_delivery_option_form_submit.prop('disabled',true);
}else{
// $gel_prx_delivery_option_form_submit.show();
$gel_prx_delivery_option_form_submit.css('opacity','1');
$gel_prx_delivery_option_form_submit.prop('disabled',false);
}
}else{
// $gel_prx_delivery_option_form_submit.show();
$gel_prx_delivery_option_form_submit.css('opacity','1');
$gel_prx_delivery_option_form_submit.prop('disabled',false);
}
});
}
// - Detect parent form and submit button
// Force carrier logo size
let $gel_prx_delivery_option_carrier_logo = $gel_prx_delivery_option_radio_wrapper.find('img.order_carrier_logo')
if ($gel_prx_delivery_option_carrier_logo.length) {
$gel_prx_delivery_option_carrier_logo.css('width', '50px');
$gel_prx_delivery_option_carrier_logo.css('height', '50px');
}
if ($('table.gelproximity-app__selection-pick-up-point-details-table').length <= 0) {
$gel_prx_delivery_option_radio_wrapper.find('.delivery_option_price').text(gelprx_conf.defaultCarrierCostLabel);
} else {
$('.gelproximity-app__pick-button-text').text(gelprx_conf.buttonEditText);
}
}
$gel_prx_delivery_option_radio_wrapper.after($('.gelproximity-app--16').parent());
if ($gel_prx_delivery_option_radio.is(':checked')) {
$('.gelproximity-app--16').parent().removeClass('gelproximity-app__hidden');
} else {
$('.gelproximity-app--16').parent().addClass('gelproximity-app__hidden');
}
// Fix for keep PS 16 style
setTimeout(function () {
$('#gelproximity-app-pick-point-select-button').removeClass('button button-small');
}, 1000);
$gel_prx_delivery_option_radio.on('change', function () {
if ($gel_prx_delivery_option_radio.is(':checked')) {
$('.gelproximity-app--16').parent().removeClass('gelproximity-app__hidden');
// Workaround need to re-init on carrier change
setTimeout(function () {
init();
}, 1000);
} else {
$('.gelproximity-app--16').parent().addClass('gelproximity-app__hidden');
}
});
}
}
}
}
$(document).ready(function ($) {
if (typeof gelprx_conf === 'undefined') {
console_error('CONFIGURATION NOT FOUND');
} else {
console_log('CONFIGURATION IS FOUND');
mainInit();
// Init configuration for The Checkout Plugin
// https://addons.prestashop.com/it/express-checkout/42005-the-checkout.html
if (gelprx_conf.checkoutPlugin === 'thecheckout') {
isPageReloadNeeded = false;
$(document).ajaxSuccess(function (event, xhr, settings) {
if (typeof settings !== "undefined" && typeof settings.url !== 'undefined' && settings.url.indexOf('selectDeliveryOption') !== -1) {
if (!isAjaxInit) {
mainInit();
}
isAjaxInit = true;
}
});
}
}
});
// $(window).load(function () {});
})();