geno/wp-content/plugins/cartflows/assets/js/frontend.js
2024-02-01 11:54:18 +00:00

177 lines
4.3 KiB
JavaScript

( function ( $ ) {
/* It will redirect if anyone clicked on link before ready */
$( document ).on( 'click', 'a[href*="wcf-next-step"]', function ( e ) {
e.preventDefault();
if (
'undefined' !== typeof cartflows.is_pb_preview &&
'1' === cartflows.is_pb_preview
) {
e.stopPropagation();
return;
}
window.location.href = cartflows.next_step;
return false;
} );
/* Once the link is ready this will work to stop conditional propogation*/
$( document ).on( 'click', '.wcf-next-step-link', function ( e ) {
if (
'undefined' !== typeof cartflows.is_pb_preview &&
'1' === cartflows.is_pb_preview
) {
e.preventDefault();
e.stopPropagation();
return false;
}
} );
// Remove css when oceanwp theme is enabled.
const remove_oceanwp_custom_style = function () {
if (
'OceanWP' === cartflows.current_theme &&
'default' !== cartflows.page_template
) {
const style = document.getElementById( 'oceanwp-style-css' );
if ( null !== style ) {
style.remove();
}
}
};
const trigger_facebook_events = function () {
if (
'enable' === cartflows.fb_setting.facebook_pixel_tracking &&
cartflows.fb_setting.facebook_pixel_id !== ''
) {
const add_payment_info_event =
cartflows.fb_setting.facebook_pixel_add_payment_info;
if (
'enable' === add_payment_info_event &&
cartflows.is_checkout_page
) {
jQuery( 'form.woocommerce-checkout' ).on(
'submit',
function () {
fbq(
'track',
'AddPaymentInfo',
JSON.parse( cartflows.fb_add_payment_info_data )
);
}
);
} else if (
cartflows.is_optin &&
'enable' === cartflows.fb_setting.facebook_pixel_optin_lead
) {
jQuery( 'form.woocommerce-checkout' ).on(
'submit',
function () {
fbq( 'track', 'Lead', { plugin: 'CartFlows' } );
}
);
}
}
};
const trigger_google_events = function () {
if ( cartflows.ga_setting.enable_google_analytics === 'enable' ) {
if (
cartflows.is_checkout_page &&
'enable' === cartflows.ga_setting.enable_add_payment_info
) {
jQuery( 'form.woocommerce-checkout' ).on(
'submit',
function () {
gtag(
'event',
'add_payment_info',
JSON.parse( cartflows.add_payment_info_data )
);
}
);
} else if (
cartflows.is_optin &&
'enable' === cartflows.ga_setting.enable_optin_lead
) {
jQuery( 'form.woocommerce-checkout' ).on(
'submit',
function () {
gtag( 'event', 'Lead', { plugin: 'CartFlows' } );
}
);
}
}
};
/**
*
* @param {string} next_step_url
* @return {string} next_step_url Modified string if query string is present.
*/
const may_be_append_query_string = function ( next_step_url ) {
// Get the URL parameters.
const urlParams = new URLSearchParams( window.location.search );
// Return the URL if no query string is present.
if ( urlParams.length <= 0 ) {
return next_step_url;
}
// Get all URL parameter keys.
const keys = urlParams.keys();
// Store all parameters temporary.
const params = {};
// Loop through all parameter as keys to make key-value pair array/object.
for ( const key of keys ) {
params[ key ] = urlParams.get( key );
}
// Convert the object to a query string.
const queryString = new URLSearchParams( params ).toString();
/**
* Append the query string to the URL
* If: No question mark is in the URL then: add the question mark before query string.
* Else: Question mark is found then: add '&' before query string..
*/
if ( next_step_url.indexOf( '?' ) === -1 ) {
next_step_url = next_step_url + '?' + queryString;
} else {
next_step_url = next_step_url + '&' + queryString;
}
return next_step_url;
};
/**
* Assign the class & link to specific button
*/
const setup_next_step_url = function () {
const next_links = $( 'a[href*="wcf-next-step"]' );
if (
next_links.length > 0 &&
'undefined' !== typeof cartflows.next_step
) {
next_links.addClass( 'wcf-next-step-link' );
next_links.attr(
'href',
may_be_append_query_string( cartflows.next_step )
);
}
};
$( function () {
setup_next_step_url();
remove_oceanwp_custom_style();
if ( '1' !== cartflows.is_pb_preview ) {
trigger_facebook_events();
trigger_google_events();
}
} );
} )( jQuery );