jQuery(function ($) {
'use strict';
$(document).ready(function ($) {
/**
* toggle password functionality on settings page
*/
$(".toggle-eye-icon").click(function() {
$('.toggle-eye-icon').removeClass('hide-eye-icon');
$(this).addClass('hide-eye-icon');
let input = $('#wpfnl-google-map-api-key');
if ( "password" === input.attr("type") ) {
input.attr("type", "text");
} else {
input.attr("type", "password");
}
});
function toggleLogOptions() {
const $checkbox = $('#enable-log-status');
const $logOptionsWrapper = $('.log-options-wrapper');
if (!$checkbox.length || !$logOptionsWrapper.length) return;
$checkbox.on('change', function () {
if ($(this).is(':checked')) {
$logOptionsWrapper.show();
} else {
$logOptionsWrapper.hide();
}
});
}
toggleLogOptions();
function enable_disable_recapcha() {
if ($("input[name='wpfnl-recapcha-enable']").prop("checked")) {
$("#wpfnl-recapcha").show()
} else {
$("#wpfnl-recapcha").hide()
}
}
// Toggle revenue report settings
function toggleRevenueReportSettings() {
if ($("#wpfnl-enable-revenue-report").is(':checked')) {
$("#wpfnl-revenue-report-settings").show();
} else {
$("#wpfnl-revenue-report-settings").hide();
}
}
toggleRevenueReportSettings();
$("#wpfnl-enable-revenue-report").on('change', function() {
toggleRevenueReportSettings();
});
$('#wpfunnels-page-builder').on('click', '.wpfnl-single-item', function() {
$('#wpfunnels-page-builder .wpfnl-single-item').removeClass('checked');
$(this).addClass('checked');
$('#clear-template').trigger('click');
});
$('#wpfunnels-funnel-type').on('click', '.wpfnl-single-item', function() {
$('#wpfunnels-funnel-type .wpfnl-single-item').removeClass('checked');
$(this).addClass('checked');
$('#clear-template').trigger('click');
});
$('#wpfunnels-canvas-mode').on('click', '.wpfnl-single-item', function() {
$('#wpfunnels-canvas-mode .wpfnl-single-item').removeClass('checked');
$(this).addClass('checked');
});
if ($("input[name='wpfnl-utm-enable']").prop("checked")) {
$("#wpfnl-utm").show()
} else {
$("#wpfnl-utm").hide()
}
$('#utm-enable').on('click', function () {
if ($("input[name='wpfnl-utm-enable']").prop("checked")) {
$("#wpfnl-utm").show()
} else {
$("#wpfnl-utm").hide()
}
})
if ($("input[name='wpfnl-gtm-enable']").prop("checked")) {
$("#wpfnl-gtm").show()
} else {
$("#wpfnl-gtm").hide()
}
$('#gtm-enable').on('click', function () {
if ($("input[name='wpfnl-gtm-enable']").prop("checked")) {
$("#wpfnl-gtm").show()
} else {
$("#wpfnl-gtm").hide()
}
})
if ($("input[name='enable-skip-cart']").prop("checked")) {
$(".wpfnl-skip-cart").show()
} else {
$(".wpfnl-skip-cart").hide()
}
$('#enable-skip-cart').on('click', function () {
if ($("input[name='enable-skip-cart']").prop("checked")) {
$(".wpfnl-skip-cart").show()
} else {
$(".wpfnl-skip-cart").hide()
}
})
if ($("input[name='wpfnl-facebook-pixel-enable']").prop("checked")) {
$("#wpfnl-facebook-pixel").show()
} else {
$("#wpfnl-facebook-pixel").hide()
}
$('#facebook-pixel-enable').on('click', function () {
if ($("input[name='wpfnl-facebook-pixel-enable']").prop("checked")) {
$("#wpfnl-facebook-pixel").show()
} else {
$("#wpfnl-facebook-pixel").hide()
}
})
enable_disable_recapcha()
$('#recapcha-pixel-enable').on('click', function () {
enable_disable_recapcha()
})
$('.wpfnl-log-view').on('click', function (e) {
e.preventDefault();
var thisElement = $(this);
show_log(thisElement);
})
$('.wpfnl-log-delete').on('click', function (e) {
e.preventDefault();
var thisElement = $(this);
delete_log(thisElement);
})
/**
* Show WPFunnels log
*/
function show_log(thisElement) {
thisElement.find('.wpfnl-loader').css('display', 'inline-block');
var log_key = $('#wpfnl-log option:selected').val();
var payload = {
'logKey': log_key
};
if (!log_key) {
$('#log-viewer pre').html('');
} else {
wpAjaxHelperRequest('wpfnl-show-log', payload)
.success(function (response) {
thisElement.find('.wpfnl-loader').hide();
if (response.success) {
$('#log-viewer pre').html(response.content);
}
})
.error(function (response) {
});
}
}
/**
* Show WPFunnels log
*/
function delete_log(thisElement) {
thisElement.find('.wpfnl-loader').css('display', 'inline-block');
localStorage.setItem("buttonClicked", true);
var log_key = $('#wpfnl-log option:selected').val();
var payload = {
'logKey': log_key
};
if (!log_key) {
$('#log-viewer').html('');
} else {
wpAjaxHelperRequest('wpfnl-delete-log', payload)
.success(function (response) {
if (response.success) {
$('#wpfnl-log option:selected').remove();
$('#log-viewer').empty();
}
thisElement.find('.wpfnl-loader').hide();
})
.error(function (response) {
});
}
}
var GeneralSettingsHandler = function () {
$(document.body)
.on('click', '#wpfnl-update-global-settings', this.updateGeneralSettings)
.on('click', '#clear-template', this.clearTemplates)
.on('click', '#clear-transients', this.clearTransients)
/**
* settings page Permalink Settings permalink
* change on keyup
*
* @since 1.0.0
*/
$('code.stepbase').text($('input[name="wpfnl-permalink-step-base"]').val());
$('code.funnelbase').text($('input[name="wpfnl-permalink-funnel-base"]').val());
$('input[name="wpfnl-permalink-step-base"]').keyup(function () {
if ($(this).val() != '') {
$('code.stepbase').text($(this).val());
} else {
$('code.stepbase').text('wpfunnels');
}
});
$('input[name="wpfnl-permalink-funnel-base"]').keyup(function () {
if ($(this).val() != '') {
$('code.funnelbase').text($(this).val());
} else {
$('code.funnelbase').text('step');
}
});
};
/**
* update general settings
*
* @param e
* @since 1.0.0
*/
GeneralSettingsHandler.prototype.updateGeneralSettings = function (e) {
e.preventDefault();
var userRole = {};
var permittedRole = {};
var gtmEvents = {};
var fbTrackEvent = {};
var advancedSettings = {};
$("input[name='analytics-role[]']").map(function () {
if ($(this).prop("checked")) {
userRole[$(this).data('role')] = 'true';
}
return $(this).prop("checked") ? 1 : 0;
}).get();
$("input[name='permission-role[]']").map(function () {
if ($(this).prop("checked")) {
permittedRole[$(this).data('role')] = 'true';
}
return $(this).prop("checked") ? 1 : 0;
}).get();
$("input[name='wpfnl-gtm-events[]']").map(function () {
if ($(this).prop("checked")) {
gtmEvents[$(this).data('role')] = 'true';
}
return $(this).prop("checked") ? 1 : 0;
}).get();
$("input[name='wpfnl-facebook_pixel_events[]']").map(function () {
if ($(this).prop("checked")) {
fbTrackEvent[$(this).data('role')] = 'true';
}
return $(this).prop("checked") ? 1 : 0;
}).get();
// get the role management values from settings
var checkboxes = $('input[name="user_role[]"]'),
userRoleManagement = window.WPFunnelVars.user_role_manager_data;
checkboxes.each(function(checkbox) {
var role = $(this).attr('data-role');
userRoleManagement[role] = $(this).is(":checked") ? 'yes' : 'no';
});
var payload = {
'funnel_type': $('#wpfunnels-funnel-type .wpfnl-single-item.checked').attr('data-value'),
'builder': $('#wpfunnels-page-builder .wpfnl-single-item.checked').attr('data-value'),
'funnel_builder_mode': $('#wpfunnels-canvas-mode .wpfnl-single-item.checked').attr('data-value') || 'horizontal',
'uninstall_cleanup': $('#wpfnl-data-cleanup').is(':checked') ? 'on' : 'off',
'paypal_reference': $('#wpfunnels-paypal-reference').is(':checked') ? 'on' : 'off',
'analytics_roles': userRole,
'permission_role': permittedRole,
'order_bump': $('#wpfunnels-order-bump').is(':checked') ? 'on' : 'off',
'ab_testing': $('#wpfunnels-ab-testing').is(':checked') ? 'on' : 'off',
'permalink_settings': $("input[name='wpfunnels-set-permalink']:checked").val(),
'permalink_step_base': $('#wpfunnels-permalink-step-base').val(),
'permalink_funnel_base': $('#wpfunnels-permalink-funnel-base').val(),
'sender_email': $('#wpfunnels-optin-sender-email').val(),
'sender_name': $('#wpfunnels-optin-sender-name').val(),
'email_subject': $('#wpfunnels-optin-email-subject').val(),
'set_permalink': $('input[name="wpfunnels-set-permalink"]:checked').val(),
'offer_orders': $('input[name="offer-orders"]:checked').val(),
'skip_offer_step': $('#wpfnl-skip-offer-step').is(':checked') ? 'on' : 'off',
'skip_offer_step_for_free': $('#wpfnl-skip-offer-step-for-free').is(':checked') ? 'on' : 'off',
'skip_offer_for_recurring_buyer': $('#wpfnl-skip-offer-for-recurring-buyer').is(':checked') ? 'on' : 'off',
'skip_offer_for_recurring_buyer_within_year': $('#wpfnl-skip-offer-for-recurring-buyer-within-year').is(':checked') ? 'on' : 'off',
'show_supported_payment_gateway': $('#wpfnl-show-supported-payment-gateway').is(':checked') ? 'on' : 'off',
'gtm_enable': $('input[name="wpfnl-gtm-enable"]:checked').val(),
'gtm_container_id': $('#wpfnl-gtm-container-id').val(),
'gtm_events': gtmEvents,
'enable_fb_pixel': $('input[name="wpfnl-facebook-pixel-enable"]:checked').val(),
'fb_tracking_code': $('#wpfnl-facebook-tracking-code').val(),
'fb_tracking_events': fbTrackEvent,
'utm_enable': $('input[name="wpfnl-utm-enable"]:checked').val(),
'utm_source': $('#wpfnl-utm-source').val(),
'utm_medium': $('#wpfnl-utm-medium').val(),
'utm_campaign': $('#wpfnl-utm-campaign').val(),
'utm_content': $('#wpfnl-utm-content').val(),
'disable_theme_style': $('#disable-theme-style').is(':checked') ? 'on' : 'off',
'enable_log_status': $('#enable-log-status').is(':checked') ? 'on' : 'off',
'enable_skip_cart': $('#enable-skip-cart').is(':checked') ? 'on' : 'off',
'skip_cart_for': $('input[name="skip-cart"]:checked').val(),
'enable_recaptcha': $('input[name="wpfnl-recapcha-enable"]:checked').val(),
'recaptcha_site_key': $('#wpfnl-recapcha-site-key').val(),
'recaptcha_site_secret': $('#wpfnl-recapcha-site-secret').val(),
'user_role_management': { roles: userRoleManagement },
'google_map_api_key' : $('#wpfnl-google-map-api-key').val(),
'enable_global_thankyou' : $('#wpfnl-enable-global-thankyou').is(':checked') ? 'on' : 'off',
'lms_provider' : $('#lms-provider-select').val(),
'enable_revenue_report' : $('#wpfnl-enable-revenue-report').is(':checked') ? 'yes' : 'no',
'revenue_report_frequency' : $('input[name="wpfnl-revenue-report-frequency"]:checked').val(),
'revenue_report_recipient' : $('#wpfnl-revenue-report-recipient').val(),
'revenue_report_subject' : $('#wpfnl-revenue-report-subject').val(),
'send_time' : $('#wpfnl-send-time').val(),
};
var thisLoader = $(this).find('.wpfnl-loader');
var thisAlert = $(this).siblings('.wpfnl-alert');
thisLoader.fadeIn(); //show loader
wpAjaxHelperRequest("update-general-settings", payload)
.success(function (response) {
thisLoader.fadeOut();
$('#wpfnl-toaster-wrapper').addClass('quick-toastify-successful-notification');
$('#wpfnl-toaster-icon').html('');
$('#wpfnl-toaster-message').html('Saved Successfully')
$('#wpfnl-toaster-wrapper').show();
setTimeout(function() {
$('#wpfnl-toaster-wrapper').removeClass('quick-toastify-successful-notification');
$('#wpfnl-toaster-wrapper').hide();
}, 2000);
})
.error(function (response) {
thisLoader.fadeOut();
$('#wpfnl-toaster-wrapper').addClass('quick-toastify-warn-notification');
$('#wpfnl-toaster-icon').html('');
$('#wpfnl-toaster-message').html('Erorr occurred')
$('#wpfnl-toaster-wrapper').show();
setTimeout(function() {
$('#wpfnl-toaster-wrapper').removeClass('quick-toastify-warn-notification');
$('#wpfnl-toaster-wrapper').hide();
}, 2000);
});
};
GeneralSettingsHandler.prototype.clearTemplates = function (e) {
e.preventDefault();
var $btn = $(this);
var sync_icon = $btn.find('.icon-sync');
var check_icon = $btn.find('.check-icon');
var $textSpan = $btn.find('.sync-btn-text');
var thisAlert = $btn.siblings('.wpfnl-alert');
sync_icon.addClass('sync-icon');
var payload = {};
wpAjaxHelperRequest("clear-templates", payload)
.success(function (response) {
sync_icon.hide();
check_icon.fadeIn();
// Change text and add success style
$textSpan.addClass('success');
$textSpan.text('Templates synced successfully');
$btn.css({
'border-color': '#239654',
});
setTimeout(function () {
sync_icon.removeClass('sync-icon').show();
check_icon.hide();
// Restore original text and style
$textSpan.text('Sync Templates');
$textSpan.removeClass('success');
$btn.css({
'border-color': '',
});
}, 2000);
$("#wpfnl-update-global-settings").trigger("click");
})
.error(function (response) {
setTimeout(function () {
thisAlert.fadeOut().text('').removeClass('wpfnl-error');
}, 2000);
console.log('error');
});
};
/**
* clear all transients related to wpfunnels
*
* @param e
*/
GeneralSettingsHandler.prototype.clearTransients = function (e) {
e.preventDefault();
if (confirm('Are you sure you want to run this tool?')) {
var sync_icon = $(this).find('.sync-icon');
var check_icon = $(this).find('.check-icon');
var thisAlert = $(this).siblings('.wpfnl-alert');
sync_icon.show();
var payload = {};
wpAjaxHelperRequest("clear-transient", payload)
.success(function (response) {
sync_icon.hide();
check_icon.fadeIn();
thisAlert.text('Successful').addClass('wpfnl-success').fadeIn();
setTimeout(function () {
check_icon.hide();
thisAlert.fadeOut().text('').removeClass('wpfnl-success');
}, 4000);
$("#wpfnl-update-global-settings").trigger("click");
})
.error(function (response) {
thisAlert.text('Erorr occurred').addClass('wpfnl-error').fadeIn();
setTimeout(function () {
thisAlert.fadeOut().text('').removeClass('wpfnl-error');
}, 2000);
console.log('error');
});
}
};
GeneralSettingsHandler.prototype.clearTransients = function (e) {
e.preventDefault();
if (confirm('Are you sure you want to run this tool?')) {
var sync_icon = $(this).find('.sync-icon');
var check_icon = $(this).find('.check-icon');
var thisAlert = $(this).siblings('.wpfnl-alert');
sync_icon.show();
var payload = {};
wpAjaxHelperRequest("clear-transient", payload)
.success(function (response) {
sync_icon.hide();
check_icon.fadeIn();
thisAlert.text('Successful').addClass('wpfnl-success').fadeIn();
setTimeout(function () {
check_icon.hide();
thisAlert.fadeOut().text('').removeClass('wpfnl-success');
}, 4000);
$("#wpfnl-update-global-settings").trigger("click");
})
.error(function (response) {
thisAlert.text('Erorr occurred').addClass('wpfnl-error').fadeIn();
setTimeout(function () {
thisAlert.fadeOut().text('').removeClass('wpfnl-error');
}, 2000);
console.log('error');
});
}
};
new GeneralSettingsHandler();
$('.inner-tab').on('click', function () {
$('.inner-tab').removeClass('active');
$('.wpfnl-tab-content').removeClass('active');
$(this).addClass('active');
var tabId = $(this).data('tab');
$('#' + tabId).addClass('active');
});
// Send test notification
$('#wpfnl-send-test-notification').on('click', function(e) {
e.preventDefault();
var $button = $(this);
var $loader = $button.find('.wpfnl-loader');
var email = $('#wpfnl-test-notification-email').val();
if (!email || !isValidEmail(email)) {
showToaster('error', 'Please enter a valid email address');
return;
}
$button.prop('disabled', true);
$loader.fadeIn();
var payload = {
'email': email
};
wpAjaxHelperRequest('wpfnl-send-test-notification', payload)
.success(function(response) {
$loader.fadeOut();
$button.prop('disabled', false);
if (response.success) {
showToaster('success', response.message);
} else {
showToaster('error', response.message);
}
})
.error(function(response) {
$loader.fadeOut();
$button.prop('disabled', false);
showToaster('error', 'Error occurred while sending test email');
});
});
function isValidEmail(email) {
var regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
function showToaster(type, message) {
var iconHtml = type === 'success'
? ''
: '';
var notificationClass = type === 'success' ? 'quick-toastify-successful-notification' : 'quick-toastify-warn-notification';
$('#wpfnl-toaster-wrapper').addClass(notificationClass);
$('#wpfnl-toaster-icon').html(iconHtml);
$('#wpfnl-toaster-message').html(message);
$('#wpfnl-toaster-wrapper').show();
setTimeout(function() {
$('#wpfnl-toaster-wrapper').removeClass(notificationClass);
$('#wpfnl-toaster-wrapper').hide();
}, 3000);
}
});
});