(function ($) {
$(document).ready(
function () {
// When we click outside, close the dropdown
$(document).on("click", function (event) {
var $trigger = $("#ig-es-add-tags-button");
if ($trigger !== event.target && !$trigger.has(event.target).length) {
$("#ig-es-tags-dropdown").hide();
}
});
// Toggle Dropdown
$('body')
.on('click', '#ig-es-add-tags-button', function (e) {
e.preventDefault();
$('#ig-es-tags-dropdown').toggle();
});
// When we click outside, close the dropdown
$(document).on("click", function (event) {
var $trigger = $("#ig-es-add-tag-icon");
if ($trigger !== event.target && !$trigger.has(event.target).length) {
$("#ig-es-tag-icon-dropdown").hide();
}
});
var clipboard = new ClipboardJS('.ig-es-merge-tag', {
text: function(trigger) {
let tag_text = $(trigger).data('tag-text');
if ( '' === tag_text ) {
tag_text = $(trigger).text();
}
return tag_text.trim();
}
});
clipboard.on('success', function(e) {
let sourceElem = e.trigger;
let clipBoardText = e.text;
let targetID = $(sourceElem).closest('.merge-tags-wrapper').data('target-elem-id');
var target = document.getElementById(targetID);
if (target.setRangeText) {
target.focus();
//if setRangeText function is supported by current browser
target.setRangeText(clipBoardText);
} else {
target.focus()
document.execCommand('insertText', false /*no UI*/, clipBoardText);
}
if ( 'undefined' !== typeof tinymce.activeEditor ) {
tinymce.activeEditor.execCommand('mceInsertContent', false, clipBoardText);
}
});
var $newDiv = $("
").addClass("pt-2 pb-2").html(``);
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
return false;
};
$('.es-audience-view table.contacts #cb-select-all-1').click(function (e) {
if($('.es-audience-view table.contacts #cb-select-all-1').prop('checked') == true){
flag = confirm( ig_es_js_data.i18n_data.confirm_select_all );
}
if( flag ) {
$('.es-audience-view .tablenav.top #doaction').click(function (e) {
e.preventDefault();
let actionData = $(this).closest('form').serializeArray();
let unchecked_subscriber_checkboxes = $('.es-audience-view form input[type="checkbox"][name="subscribers[]"]:not(:checked)');
let exclude_subscribers = [];
if ( unchecked_subscriber_checkboxes.length > 0 ) {
$(unchecked_subscriber_checkboxes).each((index,unchecked_subscriber_checkbox) => {
let unchecked_subscriber_id = $(unchecked_subscriber_checkbox).val();
exclude_subscribers.push(unchecked_subscriber_id);
});
}
actionData.push({ name: "exclude_subscribers", value: exclude_subscribers });
actionData.push({ name: "is_ajax", value: true });
let pageNumber = getUrlParameter('paged');
pageNumber = pageNumber ? pageNumber : 1;
ig_es_apply_contacts_bulk_action( actionData, pageNumber );
$(".es-audience-view table.contacts").addClass("ig_es_contacts_table");
});
}
});
function ig_es_apply_contacts_bulk_action( actionData, pageNumber ) {
jQuery.ajax({
method: 'POST',
url: location.href,
data: actionData,
dataType: 'json',
beforeSend: function () {
$($newDiv).find("#ig_es_page_number").text(pageNumber);
$('.es-audience-view .tablenav.top').append($newDiv);
},
success: function (response) {
if ( 'undefined' !== typeof response.success ) {
if (response.success) {
if ( ! response.data.completed ) {
actionData.push({name: 'paged', value: response.data.paged });
actionData.push({name: 'total_pages', value: response.data.total_pages });
actionData.push({name: 'start_page', value: response.data.start_page });
ig_es_apply_contacts_bulk_action( actionData, response.data.paged );
} else {
$('.ig_es_process_message').text('Process completed , reloading the page!');
let current_url = new URL(window.location.href);
let bulk_action = response.data.bulk_action;
setTimeout(()=>{
current_url.searchParams.append('bulk_action', bulk_action);
window.location.href = current_url;
},1000);
}
} else {
if( true !== response.data.errortype ) {
alert(response.data.message);
}
if( true == response.data.errortype ) {
if ( ! response.data.completed ) {
actionData.push({name: 'paged', value: response.data.paged });
actionData.push({name: 'total_pages', value: response.data.total_pages });
actionData.push({name: 'start_page', value: response.data.start_page });
ig_es_apply_contacts_bulk_action( actionData, response.data.paged );
} else
{
$('.ig_es_process_message').text('Process completed , reloading the page!');
let current_url = new URL(window.location.href);
let bulk_action = response.data.bulk_action;
setTimeout(()=>{
current_url.searchParams.append('bulk_action', bulk_action);
window.location.href = current_url;
},1000);
}
}
}
} else {
alert( response.i18n_data.ajax_error_message );
}
},
error: function (err) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
});
}
// Toggle Dropdown
$('#ig-es-add-tag-icon').click(function () {
$('#ig-es-tag-icon-dropdown').toggle();
});
$('.es-preview-report').click(function(){
let campaign_id = $(this).data('campaign-id');
let campaign_type = $(this).data('campaign-type');
let elem = $(this);
let preview_data = {
action : 'ig_es_preview_email_report',
security : ig_es_js_data.security,
campaign_id : campaign_id,
campaign_type: campaign_type,
};
jQuery.ajax({
method: 'POST',
url: ajaxurl,
data: preview_data,
dataType: 'json',
beforeSend: function() {
$(elem).next('.es-preview-loader').show();
},
success: function (response) {
if (response.success) {
if ( 'undefined' !== typeof response.data ) {
let response_data = response.data;
let template_html = response_data.template_html;
$('.report_preview_container').html(template_html);
$('#report_preview_template').load().show();
}
} else {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
},
error: function (err) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
}).always(function(){
$(elem).next('.es-preview-loader').hide();
});
});
$('.es_template_preview').click(function(){
let template_id = $(this).data('post-id');
let elem = $(this);
let preview_data = {
action : 'ig_es_preview_template',
security : ig_es_js_data.security,
template_id : template_id,
};
jQuery.ajax({
method: 'POST',
url: ajaxurl,
data: preview_data,
dataType: 'json',
beforeSend: function() {
$(elem).next('.es-template-preview-loader').show();
},
success: function (response) {
if (response.success) {
if ( 'undefined' !== typeof response.data ) {
let response_data = response.data;
let template_html = response_data.template_html;
$('.template_preview_container').html(template_html);
$('#es_preview_template').load().show();
}
} else {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
},
error: function (err) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
}).always(function(){
$(elem).next('.es-template-preview-loader').hide();
});
});
$(document).on('change', '.es_visible', function () {
if ($('.es_visible:checked').length >= 1) {
$('.es_required').prop('disabled', false);
$('.es_name_label').removeAttr('disabled');
} else {
$('.es_required').prop('disabled', true);
$('.es_name_label').attr('disabled', 'disabled');
}
});
$('.es_visible').change();
$('.setting-content').hide();
var settings_tab = window.location.hash;
var settings_tab_link = $('a[href="' + settings_tab +'"]');
if( settings_tab && settings_tab_link.length > 0 ){
settings_tab_link.addClass('active').parent('li').addClass('active');
$(settings_tab).show();
} else {
$('#menu-nav li:first-child').addClass('active').find('a').addClass('active');
$('.setting-content:first').show();
}
$('#menu-nav li').click(function(){
$('#menu-nav li,#menu-nav li a').removeClass('active');
$(this).addClass('active').find('a').addClass('active');
$('.setting-content').hide();
var activeTab = $(this).find('a').attr('href');
$(activeTab).show();
// Trigger resize event to fix scroll issue in the API tab.
$(document).trigger('resize');
return false;
});
if(jQuery('#es_allow_contact').is(":checked")){
jQuery('#es_list_label').show();
}
jQuery(document).on('change', '#es_allow_contact' , function(e) {
if(jQuery(this).is(":checked")){
jQuery('#es_list_label').show();
}else{
jQuery('#es_list_label').hide();
}
});
jQuery(document).on('change', '.es-email-status-container #es_email_status' , function(e) {
let send_optin_emails_toggle_container = jQuery('.step2-send-optin-emails');
if ('0' === jQuery(this).val() || 'unsubscribed' === jQuery(this).val()) {
send_optin_emails_toggle_container.hide();
jQuery("#send_optin_emails").prop("checked", false);
} else {
send_optin_emails_toggle_container.show();
}
});
if(jQuery('#show_in_popup').is(":checked")){
jQuery('#popup_input_block').show();
}
jQuery(document).on('change', '#show_in_popup' , function(e) {
if(jQuery(this).is(":checked")){
jQuery('#popup_input_block').show();
}else{
jQuery('#popup_input_block').hide();
}
});
let action_after_submit = $(".ig_es_action_after_submit:checked").val()
change_block_as_per_action(action_after_submit);
$("input:radio[name='form_data[settings][action_after_submit]']").click(function() {
let action_after_submit = $(this).val();
change_block_as_per_action(action_after_submit);
});
function change_block_as_per_action( action_after_submit = '' ) {
if ( 'show_success_message' === action_after_submit ) {
$('#show_message_block').removeClass('hidden');
$('#show_redirect_to_url_block').addClass('hidden');
} else {
$('#show_redirect_to_url_block').removeClass('hidden');
$('#show_message_block').addClass('hidden');
}
}
$("#broadcast_form .pre_btn, #broadcast_form #content_menu").click(function() {
var fieldset = $(this).closest('.es_fieldset');
fieldset.find('.es_broadcast_first').fadeIn('normal');
fieldset.next().find('.es_broadcast_second').hide();
fieldset.find('#broadcast_button').show();
fieldset.find('#broadcast_button1, #broadcast_button2').hide();
$('#summary_menu').removeClass("active");
$('#content_menu').addClass("active");
//$('.active').removeClass('active').prev().addClass('active');
});
$("#campaign_form #view_campaign_content_button,#campaign_form #campaign_content_menu,.es-first-step-tab, #view_form_content_button").click(function() {
var fieldset = $(this).closest('.es_fieldset');
fieldset.find('.es_campaign_first,.es-first-step').fadeIn('normal');
fieldset.next().find('.es_campaign_second,.es-second-step').hide();
fieldset.find('#view_campaign_summary_button, #view_campaign_preview_button,.es-first-step-buttons-wrapper').show();
fieldset.find('#view_campaign_content_button, #campaign_summary_actions_buttons_wrapper,.es-second-step-buttons-wrapper').hide();
$('#campaign_summary_menu,.es-second-step-tab').removeClass("active");
$('#campaign_content_menu,.es-first-step-tab').addClass("active");
});
let schedule_option = $('input:radio[name="data[scheduling_option]"]:checked').val()
broadcast_send_option_change_text(schedule_option);
$("input:radio[name='data[scheduling_option]']").click(function() {
let scheduling_option = $(this).val();
broadcast_send_option_change_text(scheduling_option);
});
function broadcast_send_option_change_text( scheduling_option = 'Schedule' ) {
if ( 'schedule_later' === scheduling_option ) {
$('.display_schedule').removeClass('hidden');
$('.ig_es_broadcast_send_option_text').text('Schedule');
} else {
$('.display_schedule').addClass('hidden');
$('.ig_es_broadcast_send_option_text').text('Send');
}
}
$('#preview_template').hide();
$('#spam_score_modal').hide();
$("#close_template").on('click', function (event) {
event.preventDefault();
$('#preview_template').hide();
});
$("#close-unsubscribe-feedback-popup").on('click', function (event) {
event.preventDefault();
$('#unsubscribe-feedback-popup').hide();
});
$("#close-campaign-preview-popup").on('click', function (event) {
event.preventDefault();
$('#campaign-preview-popup').hide();
});
if (jQuery('.statusesselect').length) {
var statusselect = jQuery('.statusesselect')[0].outerHTML;
}
if (jQuery('.groupsselect').length) {
var groupselect = jQuery('.groupsselect')[0].outerHTML;
}
// Audience filter switch for Advanced filter
jQuery('.ig-es-switch.js-toggle-collapse').click(function(event){
event.preventDefault();
let $switch, state, new_state;
$switch = jQuery(this);
state = $switch.attr( 'data-ig-es-switch' );
new_state = state === 'active' ? 'inactive' : 'active';
$switch.attr( 'data-ig-es-switch', new_state );
if(new_state === 'active'){
jQuery('.es-collapsible').show();
}
else{
jQuery('.es-collapsible').hide();
}
})
//Upsell Send confirmation email on Audience screen
$(".email-subscribers_page_es_subscribers #bulk-action-selector-top option[value=bulk_send_confirmation_email_upsell]").attr('disabled','disabled');
jQuery(".es-audience-view .bulkactions #bulk-action-selector-top").after(statusselect);
jQuery(".es-audience-view .bulkactions #bulk-action-selector-top").after(groupselect);
jQuery('.groupsselect').hide();
jQuery('.statusesselect').hide();
jQuery("#bulk-action-selector-top").change(function () {
if (jQuery('option:selected', this).attr('value') == 'bulk_list_update' || jQuery('option:selected', this).attr('value') == 'bulk_list_add') {
jQuery('.groupsselect').eq(1).show();
jQuery('.statusesselect').eq(1).hide();
} else if (jQuery('option:selected', this).attr('value') == 'bulk_status_update') {
jQuery('.statusesselect').eq(1).show();
jQuery('.groupsselect').eq(1).hide();
} else {
jQuery('.statusesselect').hide();
jQuery('.groupsselect').hide();
}
});
jQuery('.es-audience-view .tablenav.bottom #bulk-action-selector-bottom').hide();
jQuery('.es-audience-view .tablenav.bottom #doaction2').hide();
jQuery(document).on('change', "#base_template_id", function () {
var img = jQuery('option:selected', this).data('img-url');
jQuery('.es-templ-img').html('
');
});
//send test emails
$(document).on('click', '#es-send-test', function (e) {
e.preventDefault();
var test_email = $('#es-test-email').val();
if (test_email) {
var params = {
es_test_email: test_email,
action: 'es_send_test_email',
security: ig_es_js_data.security
};
$('#es-send-test').next('#spinner-image').show();
jQuery.ajax({
method: 'POST',
url: ajaxurl,
data: params,
dataType: 'json',
success: function (response) {
if (response && typeof response.status !== 'undefined' && response.status == "SUCCESS") {
let successMessageHTML = '' + response.message + '';
$('#es-send-test').parent().find('.helper').html(successMessageHTML);
} else {
let errorMessageHTML = '' + ig_es_js_data.i18n_data.sending_error_text + ': ' + ( Array.isArray( response.message ) ? response.message.join() : response.message ) + '';
$('#es-send-test').parent().find('.helper').html(errorMessageHTML);
}
$('#es-send-test').next('#spinner-image').hide();
},
error: function (err) {
$('#es-send-test').next('#spinner-image').hide();
}
});
} else {
confirm('Add test email ');
}
});
//klawoo form submit
jQuery("form[name=klawoo_subscribe]").submit(function (e) {
e.preventDefault();
var form = e.target;
jQuery(form).find('#klawoo_response').html('');
jQuery(form).find('#klawoo_response').show();
params = jQuery(form).serializeArray();
params.push({
name: 'action',
value: 'es_klawoo_subscribe',
});
// Add ajax security nonce.
params.push({
name: 'security',
value: ig_es_js_data.security,
});
jQuery.ajax({
method: 'POST',
type: 'text',
url: ajaxurl,
async: false,
data: params,
success: function (response) {
if (response != '') {
jQuery('#klawoo_response').html(response);
if (jQuery(form).hasClass('es-onboarding')) {
setTimeout(function () {
location.reload();
}, 2000);
} else {
jQuery('.es-emm-optin #name').val('');
jQuery('.es-emm-optin #email').val('');
jQuery('.es-emm-optin #es-gdpr-agree').attr('checked', false);
setTimeout(function () {
jQuery(form).find('#klawoo_response').hide('slow');
}, 2000);
}
} else {
jQuery('#klawoo_response').html('error!');
}
}
});
});
// Select List ID for Export
var _href = $('#ig_es_export_link_select_list').attr("href");
$('#ig_es_export_list_dropdown').change(function () {
var selected_list_id = $(this).val();
$('#ig_es_export_link_select_list').attr("href", _href + '&list_id=' + selected_list_id);
// Update total count in lists
var params = {
action: 'count_contacts_by_list',
list_id: selected_list_id,
security: ig_es_js_data.security,
};
$.ajax({
method: 'POST',
url: ajaxurl,
async: false,
data: params,
success: function (response) {
if (response != '') {
response = JSON.parse(response);
$('#ig_es_export_select_list .ig_es_total_contacts').text(response.total);
}
}
});
});
// Filtering campaign status based of type
var campaign_type = $('#ig_es_filter_campaign_type').val();
campaign_status(campaign_type);
$('#ig_es_filter_campaign_type').change(function (e) {
var campaign_type = $(this).val();
$('#ig_es_filter_campaign_status_by_type').val('');
campaign_status(campaign_type);
});
$('#ig_es_filter_reports_by_campaign_type option[value="sequence"]').hide();
function campaign_status( campaign_type ) {
var $status_id = $('#ig_es_filter_campaign_status_by_type');
switch (campaign_type) {
case 'newsletter':
$status_id.children('option').show();
$('#ig_es_filter_campaign_status_by_type option[value="0"]').html('Draft').show();
$('#ig_es_filter_campaign_status_by_type option[value="1"]').hide();
break;
case 'post_notification':
case 'post_digest':
case 'sequence':
$status_id.children('option').hide();
$('#ig_es_filter_campaign_status_by_type option[value=""],option[value="1"]').show();
$('#ig_es_filter_campaign_status_by_type option[value="0"]').html('In Active').show();
break;
default:
$status_id.children('option').show();
break;
}
}
jQuery('#ig-es-log-files').ig_es_select2();
// Broadcast Setttings
$('#ig_es_campaign_submit_button').attr("disabled", true);
let update_contacts_counts_xhr = {};
let edited_campaign_data = {}; // Variable to hold campaign id and name of edited campaign which is used in showing updated options select campaign field and updated HTML for conditions.
jQuery(document).on('bind_campaign_rules_events', function( e, data ){
if ( 'undefined' !== typeof data && 'undefined' !== typeof data.conditions_elem ) {
conditions_elem = data.conditions_elem;
} else {
conditions_elem = jQuery('.ig-es-conditions');
}
jQuery.each(jQuery(conditions_elem), function () {
var _self = jQuery(this),
conditions = _self.find('.ig-es-conditions-wrap'),
groups = _self.find('.ig-es-condition-group'),
cond = _self.find('.ig-es-condition');
jQuery.each(edited_campaign_data,function(campaign_id, campaign_name){
let option = jQuery(conditions_elem).find('.ig-es-campaign-select-field option[value="' + campaign_id + '"]');
let option_exists = jQuery(option).length > 0;
let new_option = new Option(campaign_name, campaign_id, false, false);
// Add new option don't exists else update option's text
if( ! option_exists ){
jQuery(conditions_elem).find('.ig-es-campaign-select-field').append(new_option);
} else {
jQuery(option).text(campaign_name);
}
});
groups.eq(0).appendTo(_self.find('.ig-es-condition-container'));
_self
.on('click', '.add-condition', function () {
ig_es_add_and_condtion();
})
.on('click', '.add-or-condition', function () {
var cont = jQuery(this).parent(),
id = cont.find('.ig-es-condition').last().data('id'),
clone = cond.eq(0).clone();
clone.removeAttr('id').appendTo(cont).data('id', ++id);
jQuery.each(clone.find('input, select'), function () {
var _this = jQuery(this),
name = _this.attr('name');
// match and replace regex '][any digit][any digit]' with '][AND rule counter][OR rule counter]'
_this.attr('name', name.replace(/\]\[\d+\]\[\d+\]/, '][' + cont.data('id') + '][' + id + ']')).prop('disabled', false);
name = _this.attr('name');
if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
jQuery(_this).ig_es_select2();
}
if( jQuery(_this).hasClass('condition-field')) {
ig_es_handle_list_condition();
}
});
clone.find('.condition-field').val('').trigger('focus');
cond = _self.find('.ig-es-condition');
})
jQuery(_self).closest('.ig-es-campaign-rules').find('.close-conditions').on('click', function(){
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
});
jQuery(_self).closest('.ig-es-campaign-rules').find('.remove-conditions').on('click', function () {
if (confirm(ig_es_js_data.i18n_data.remove_conditions_message)) {
jQuery(conditions).empty();
jQuery(_self).closest('.ig-es-campaign-rules').find('.ig-es-conditions-render-wrapper').empty();
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
}
return false;
});
conditions
.on('click', '.remove-condition', function () {
var c = jQuery(this).parent();
if (c.parent().find('.ig-es-condition').length == 1) {
c = c.parent();
}
c.slideUp(100, function () {
jQuery(this).remove();
ig_es_handle_list_condition();
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
});
})
.on('change', '.condition-field', function (event) {
var condition = jQuery(this).closest('.ig-es-condition'),
field = jQuery(this);
ig_es_show_operator_and_value_field(field);
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
})
.on('change', '.condition-operator', function () {
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
})
.on('change', '.condition-value', function () {
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
})
.on('click', '.ig-es-condition-add-multiselect', function () {
jQuery(this).parent().clone().insertAfter(jQuery(this).parent()).find('.condition-value').select().trigger('focus');
return false;
})
.on('click', '.ig-es-condition-remove-multiselect', function () {
jQuery(this).parent().remove();
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
return false;
})
.on('change', '.ig-es-conditions-value-field-multiselect > .condition-value', function () {
if (0 == jQuery(this).val() && jQuery(this).parent().parent().find('.condition-value').size() > 1) jQuery(this).parent().remove();
})
.find('.condition-field').prop('disabled', false).trigger('change');
jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
// Add one list condition if there are no conditions.
if( 0 === jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group').length ) {
ig_es_add_default_list_condition();
} else {
jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group .condition-value').each(function(){
if( jQuery(this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
jQuery(this).ig_es_select2();
}
});
}
function ig_es_add_and_condtion( condition_data ) {
let id = groups.length,
clone = groups.eq(0).clone();
clone.removeAttr('id').appendTo(conditions).data('id', id).show();
jQuery.each(clone.find('input, select'), function () {
let _this = jQuery(this);
name = _this.attr('name');
// match and replace regex '][any digit]' with '][id]' i.e. AND rule counter
_this.attr('name', name.replace(/\]\[\d+\]/, '][' + id + ']')).prop('disabled', false);
if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
jQuery(_this).ig_es_select2();
}
});
if ( 'undefined' === typeof condition_data ) {
condition_data = {
condition: '',
}
}
let condition = condition_data.condition;
let condition_field = clone.find('.condition-field');
jQuery(condition_field).val(condition).trigger('focus');
if ( '' !== condition ) {
ig_es_show_operator_and_value_field(condition_field);
}
groups = _self.find('.ig-es-condition-group');
cond = _self.find('.ig-es-condition');
ig_es_handle_list_condition();
}
function ig_es_handle_list_condition( selected_elem ) {
if ( ig_es_js_data.is_pro ) {
return;
}
var condition_fields = jQuery('.ig-es-conditions-wrap .condition-field');
var list_rule_count = 0;
jQuery(condition_fields).each(function(){
var selected_rule = jQuery(this).val();
if ( '_lists__in' === selected_rule ) {
list_rule_count++;
}
});
var disable_list_rule = list_rule_count > 0;
var campaign_rules = jQuery('.ig-es-conditions-wrap .condition-field');
jQuery(campaign_rules).each(function(index,elem){
var list_rule_option = jQuery(this).find('option[value = "_lists__in"]');
var list_rule_text = jQuery(list_rule_option).text();
list_rule_text = list_rule_text.replace(' [MAX]','');
if ( 'undefined' !== typeof selected_elem ) {
if( disable_list_rule && ! ( jQuery(selected_elem)[0] === elem ) ) {
list_rule_text += ' [MAX]';
jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
} else {
jQuery(list_rule_option).removeAttr('disabled');
}
} else {
if( index > 0 && disable_list_rule ) {
list_rule_text += ' [MAX]';
jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
} else {
jQuery(list_rule_option).removeAttr('disabled');
}
}
jQuery(list_rule_option).text(list_rule_text);
});
}
function ig_es_add_default_list_condition() {
ig_es_add_and_condtion({ condition: '_lists__in' });
}
function ig_es_show_operator_and_value_field( field ) {
var condition = jQuery(field).closest('.ig-es-condition'),
operator_field, value_field;
condition.find('div.ig-es-conditions-value-field').removeClass('active').find('.condition-value').prop('disabled', true);
condition.find('div.ig-es-conditions-operator-field').removeClass('active').find('.condition-operator').prop('disabled', true);
var field_value = jQuery(field).val();
condition.find('.ig-es-conditions-operator-fields,.ig-es-conditions-value-fields').attr('data-condition', field_value );
value_field = condition.find('div.ig-es-conditions-value-field[data-fields*=",' + field_value + ',"]').addClass('active').find('.condition-value').prop('disabled', false);
operator_field = condition.find('div.ig-es-conditions-operator-field[data-fields*=",' + field_value + ',"]').addClass('active').find('.condition-operator').prop('disabled', false);
if (!value_field.length) {
value_field = condition.find('div.ig-es-conditions-value-field-default').addClass('active').find('.condition-value').prop('disabled', false);
}
if (!operator_field.length) {
operator_field = condition.find('div.ig-es-conditions-operator-field-default').addClass('active').find('.condition-operator').prop('disabled', false);
}
if ( jQuery(field).hasClass('condition-field') ) {
ig_es_handle_list_condition(field);
}
}
});
});
$(document).on('ig_es_update_contacts_counts', function(e, data){
let condition_elem = data.condition_elem;
let condition_container_elem = $(condition_elem).closest('.ig-es-campaign-rules');
let selected_list_id = $('#ig_es_broadcast_list_ids').val();
let campaign_id = $(condition_container_elem).data('campaign-id');
let campaign_type = $(condition_container_elem).data('campaign-type');
let conditions = [],
groups = $(condition_elem).find('.ig-es-conditions-wrap > .ig-es-condition-group'),
i = 0;
$.each(groups, function () {
let c = $(this).find('.ig-es-condition');
$.each(c, function () {
let _this = $(this),
value,
field = _this.find('.condition-field').val(),
operator = _this.find('.ig-es-conditions-operator-field.active').find('.condition-operator').val();
if (!operator || !field) return;
value = _this.find('.ig-es-conditions-value-field.active').find('.condition-value').map(function () {
return $(this).val();
}).toArray();
if (value.length == 1) {
value = value[0];
}
if (!conditions[i]) {
conditions[i] = [];
}
conditions[i].push({
field: field,
operator: operator,
value: value,
});
});
i++;
});
// Return if no list or conditions selected.
if ( ! selected_list_id && 0 === conditions.length ) {
$('.ig_es_list_contacts_count').text(0);
$(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
return;
}
let get_count = 'newsletter' === campaign_type || 'post_notification' === campaign_type || 'post_digest' === campaign_type ? 'yes' : 'no'; // Get count only when on broadcast screen
// Update total count in lists
let params = {
action: 'count_contacts_by_list',
list_id: selected_list_id,
conditions: conditions,
status: 'subscribed',
get_count: get_count,
security: ig_es_js_data.security
};
if ( 'undefined' !== typeof update_contacts_counts_xhr && 'undefined' !== typeof update_contacts_counts_xhr[campaign_id] ) {
update_contacts_counts_xhr[campaign_id].abort();
}
update_contacts_counts_xhr[campaign_id] = $.ajax({
method: 'POST',
url: ajaxurl,
async: true,
data: params,
beforeSend: function() {
$('#spinner-image').show();
},
success: function (response) {
if (response !== '') {
response = JSON.parse(response);
if (get_count && response.hasOwnProperty('total')) {
let total = response.total;
let total_recipients_text = "" + total + " recipients
";
$('#ig_es_total_contacts .ig_es_list_contacts_count').html(total);
$('#ig_es_total_recipients').html(total_recipients_text);
$(condition_container_elem).find('.ig-es-total-contacts').text(total);
if (total == 0) {
$('#ig_es_campaign_submit_button').attr("disabled", true);
} else {
$('#ig_es_campaign_submit_button').attr("disabled", false);
}
}
$(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
if ( response.hasOwnProperty('conditions_html') ) {
let conditions = $.parseHTML(response.conditions_html);
$(conditions).find('.campaign-name').each(function(){
let campaign_id = $(this).data('campaign-id');
if (edited_campaign_data.hasOwnProperty(campaign_id)) {
let campaign_name = edited_campaign_data[campaign_id];
$(this).text(campaign_name);
}
});
$(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
}
if ( $(condition_container_elem).find('.ig-es-conditions-wrap .condition-field').length > 0 ) {
$(condition_container_elem).find('.remove-all-conditions-wrapper').removeClass('hidden');
} else {
$(condition_container_elem).find('.remove-all-conditions-wrapper').addClass('hidden');
}
}
}
}).always(function(){
$('#spinner-image').hide();
});;
});
// Add/update campaign option in select campaign rule
jQuery(document).on('ig_es_sequence_name_updated',function(e,seq_data){
let seq_id = seq_data.id;
let seq_name = seq_data.name;
let new_option = new Option(seq_name, seq_id, false, false);
edited_campaign_data[seq_id] = seq_name;
jQuery('.es_seq_right_wrapper:not([data-seq-id="' + seq_id + '"])').each(function(){
let current_seq_id = jQuery(this).data('seq-id');
// We are restricting admin to select sequence campaigns whose id is greater then current sequence id.
if ( current_seq_id > seq_id ) {
jQuery(this).find('.ig-es-campaign-select-field').each(function(){
let option = jQuery(this).find('option[value = ' + seq_id + ']');
let option_exists = jQuery(option).length > 0;
// Add new option don't exists else update option's text
if( ! option_exists ){
jQuery(this).append(new_option);
} else {
jQuery(option).text(seq_name);
}
jQuery(this).ig_es_select2().trigger('change');
});
}
});
});
jQuery(document).on('change', '#broadcast_form #base_template_id', function () {
var template_id = $(this).val();
// Update total count in lists
var params = {
action: 'get_template_content',
template_id: template_id,
};
$.ajax({
method: 'POST',
url: ajaxurl,
async: false,
data: params,
success: function (response) {
if (response !== '') {
response = JSON.parse(response);
if (response.hasOwnProperty('subject')) {
jQuery('.wp-editor-boradcast').val(response.body);
if ('undefined' !== typeof tinyMCE) {
var activeEditor = tinyMCE.get('edit-es-broadcast-body');
if (activeEditor !== null) { // Make sure we're not calling setContent on null
response.body = response.body.replace(/\n/g, "
");
activeEditor.setContent(response.body); // Update tinyMCE's content
}
}
if (response.inline_css && jQuery('#inline_css').length) {
jQuery('#inline_css').val(response.inline_css);
}
if (response.es_utm_campaign && jQuery('#es_utm_campaign').length) {
jQuery('#es_utm_campaign').val(response.es_utm_campaign);
}
if ( 1 === $('#edit-es-broadcast-body').length ) {
ig_es_sync_wp_editor_content();
$('#edit-es-broadcast-body').trigger('change');
}
}
}
}
});
});
jQuery(document).on('change', '#campaign_form #base_template_id, #campaign_form #post_digest_template_id', function () {
var template_id = $(this).val();
// Update total count in lists
var params = {
action: 'get_template_content',
template_id: template_id,
};
$.ajax({
method: 'POST',
url: ajaxurl,
async: false,
data: params,
success: function (response) {
if (response !== '') {
response = JSON.parse(response);
if (response.hasOwnProperty('subject')) {
jQuery('#ig_es_campaign_subject').val(response.subject);
jQuery('.wp-campaign-body-editor').val(response.body);
if ('undefined' !== typeof tinyMCE) {
var activeEditor = tinyMCE.get('edit-es-campaign-body');
if (activeEditor !== null) { // Make sure we're not calling setContent on null
response.body = response.body.replace(/\n/g, "
");
activeEditor.setContent(response.body); // Update tinyMCE's content
}
}
if (response.inline_css && jQuery('#inline_css').length) {
jQuery('#inline_css').val(response.inline_css);
}
if (response.es_utm_campaign && jQuery('#es_utm_campaign').length) {
jQuery('#es_utm_campaign').val(response.es_utm_campaign);
}
if ( 1 === $('#edit-es-campaign-body').length ) {
ig_es_sync_wp_editor_content();
$('#edit-es-campaign-body').trigger('change');
}
}
}
}
});
});
//post notification category select
jQuery(document).on('change', '.es-note-category-parent', function () {
var val = jQuery('.es-note-category-parent:checked').val();
if ( '{a}All{a}' === val || '{a}None{a}' === val ) {
jQuery('input[name="data[es_note_cat][]"]').not('.es_custom_post_type').closest('tr').hide();
} else {
jQuery('input[name="data[es_note_cat][]"]').not('.es_custom_post_type').closest('tr').show();
}
});
jQuery(document).trigger('bind_campaign_rules_events');
jQuery('.es-note-category-parent').trigger('change');
jQuery('#tabs-general input[name="ig_es_from_email"]').on('change', function () {
let from_email = jQuery(this).val();
let is_valid_email = ig_es_is_valid_email(from_email);
if ( is_valid_email ) {
let from_email_domain = from_email.split('@')[1].toLowerCase();
let is_popolar_domain = ig_es_js_data.popular_domains.indexOf(from_email_domain) > -1;
if ( is_popolar_domain ) {
jQuery('#ig-es-from-email-notice').removeClass('hidden');
} else {
jQuery('#ig-es-from-email-notice').addClass('hidden');
}
}
});
//es mailer settings
jQuery(document).on('change', '.es_mailer', function (e) {
var val = jQuery('.es_mailer:checked').val();
var wrapper_row = jQuery(this).closest('tr');
jQuery(wrapper_row).find('[name*="ig_es_mailer_settings"], .es_sub_headline, .field-desciption').not('.es_mailer').hide();
jQuery(wrapper_row).find('.' + val).show();
});
jQuery('.es_mailer').trigger('change');
jQuery('#ig_es_ess_opted_for_sending_service').on('change', function() {
if ( jQuery(this).is(':checked') ) {
jQuery('#sending_service_info').removeClass('hidden');
let fallback_mailer_html_text = `${ig_es_js_data.i18n_data.ess_fallback_text}`;
jQuery('#ig_es_mailer_settings-field-row td p:first').html(fallback_mailer_html_text);
} else {
jQuery('#sending_service_info').addClass('hidden');
jQuery('#ig_es_mailer_settings-field-row td p:first').html('');
}
});
jQuery('#ig_es_ess_opted_for_sending_service').trigger('change');
//preview broadcast
// ig_es_preview_broadcast
jQuery(document).on('click', '#ig_es_preview_broadcast', function (e) {
ig_es_sync_wp_editor_content();
if (jQuery('.wp-editor-boradcast').val() !== '') {
jQuery('.es-form').find('form').attr('target', '_blank');
jQuery('.es-form').find('form').find('#es_broadcast_preview').val('preview');
jQuery(this).unbind('submit').submit();
}
});
jQuery(document).on('click', '#ig_es_campaign_submit_button', function (e) {
if (jQuery('.wp-editor-boradcast').val() !== '') {
jQuery('.es-form').find('form').attr('target', '');
jQuery('.es-form').find('form').find('#es_broadcast_preview').val('');
}
});
$('.ig-es-campaign-status-toggle-label input[type="checkbox"]').change(function() {
let checkbox_elem = $(this);
let campaign_id = $(checkbox_elem).val();
let new_campaign_status = $(checkbox_elem).prop('checked') ? 1 : 0;
let data = {
action: 'ig_es_toggle_campaign_status',
campaign_id: campaign_id,
new_campaign_status: new_campaign_status,
security: ig_es_js_data.security
}
jQuery.ajax({
method: 'POST',
url: ajaxurl,
data: data,
dataType: 'json',
success: function (response) {
if ( !response.success ) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
// Revert back toggle status.
$(checkbox_elem).prop( 'checked', ! new_campaign_status );
}
},
error: function (err) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
});
});
$('.ig_es_save_campaign, .ig_es_draft_campaign, #view_campaign_summary_button, #campaign_summary_menu').on('click', function(e) {
let trigger_elem = $(this);
ig_es_draft_campaign( trigger_elem );
});
$('#ig_es_campaign_subject,#edit-es-campaign-body,#campaign_form #inline_css').on('change',function(e){
let trigger_elem = $(this);
ig_es_draft_campaign( trigger_elem );
});
$('#save_campaign_btn').on('click', function(e) {
let trigger_elem = $(this);
ig_es_save_campaign( trigger_elem );
});
$('#save__and_schedule_campaign_btn').on('click', function(e) {
let trigger_elem = $(this);
ig_es_save_and_schedule_campaign( trigger_elem );
});
$('#activate_campaign_btn').on('click', function(e) {
let trigger_elem = $(this);
ig_es_activate_campaign( trigger_elem );
});
$("#campaign_form #view_campaign_summary_button, #campaign_form #campaign_summary_menu, .es-second-step-tab, #view_form_summary_button").click(function() {
let fieldset = $(this).closest('.es_fieldset');
fieldset.next().find('div.es_campaign_second,.es-second-step').fadeIn('normal');
fieldset.find('.es_campaign_first,.es-first-step').hide();
fieldset.find('#view_campaign_content_button,#campaign_summary_actions_buttons_wrapper,.es-second-step-buttons-wrapper').show();
fieldset.find('#view_campaign_summary_button,#view_campaign_preview_button,.es-first-step-buttons-wrapper').hide();
$('#campaign_content_menu,.es-first-step-tab').removeClass("active");
$('#campaign_summary_menu,.es-second-step-tab').addClass("active");
//$('.active').removeClass('active').next().addClass('active');
// Trigger template content changed event to update email preview.
$('textarea[name="data[body]"]').trigger('change');
});
$('#edit-campaign-form-container').on('change','.wp-campaign-body-editor, #edit-es-campaign-body,textarea[name="data[body]"],#ig_es_campaign_subject',function(event){
ig_es_sync_wp_editor_content();
let form_data = $(this).closest('form').serialize();
//var formData = JSON.stringify($(this).closest('form').serializeArray());
var formData = $(this).closest('form').serializeArray()
.reduce(function (json, { name, value }) {
json[name] = value;
return json;
}, {});
// Add action to form data
form_data += form_data + '&action=ig_es_get_campaign_preview&preview_type=inline&security=' + ig_es_js_data.security;
jQuery.ajax({
method: 'POST',
url: ajaxurl,
data: form_data,
dataType: 'json',
beforeSend:function(){
if(jQuery('#campaign_summary_menu').hasClass('active')){
jQuery('.ig-es-ajax-loader').css("visibility","visible");
}
},
success: function (response) {
if (response.success) {
if ( 'undefined' !== typeof response.data ) {
let response_data = response.data;
let preview_html = response_data.preview_html;
let campaign_subject = response_data.campaign_subject;
let contact_name = response_data.contact_name;
let contact_email = response_data.contact_email;
$('.campaign_preview_subject').html(campaign_subject);
$('.campaign_preview_contact_name').html(contact_name);
if ( '' !== contact_email ) {
$('.campaign_preview_contact_email').html( '<' + contact_email + '>');
}
ig_es_load_iframe_preview('.campaign_preview_content', preview_html);
}
} else {
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
},
error: function (err) {
alert( ig_es_js_data.i18n_data.ajax_error_message );
},
complete:function(){
jQuery('.ig-es-ajax-loader').css("visibility","hidden");
}
});
});
$('#es_test_email_btn').on('click', function(){
let preview_option = $('[name="preview_option"]:checked').val();
let template_button = $('#es_test_email_btn');
$(template_button).parent().find('.es-send-success').hide();
$(template_button).parent().find('.es-send-error').hide();
if ( 'preview_in_popup' === preview_option ) {
ig_es_show_broadcast_preview_in_popup();
} else if ( 'preview_in_email' === preview_option ) {
ig_es_send_broadcast_preview_email();
}
});
$('#view_campaign_preview_button').on('click', function(){
let template_button = $('#view_campaign_preview_button');
$(template_button).parent().find('.es-send-success').hide();
$(template_button).parent().find('.es-send-error').hide();
jQuery(template_button).addClass('loading');
ig_es_process_campaign_action( 'save' ).then( response => {
if (response.success) {
let response_data = response.data;
let campaign_id = response_data.campaign_id;
$('#campaign_id').val( campaign_id );
ig_es_show_campaign_preview_in_popup();
} else {
alert( ig_es_js_data.i18n_data.campaign_preivew_error_message );
}
}, response => {
alert( ig_es_js_data.i18n_data.campaign_preivew_error_message );
});
});
$('#view_template_preview_button').on('click', function(){
let template_button = $('#view_template_preview_button');
$(template_button).parent().find('.es-send-success').hide();
$(template_button).parent().find('.es-send-error').hide();
ig_es_show_template_preview_in_popup();
});
$('#save_campaign_as_template_button').on('click', function(e){
e.preventDefault();
ig_es_save_campaign_as_template();
});
$('#campaign_form [name="preview_option"]').on('click',function(){
let preview_option = $('[name="preview_option"]:checked').val();
if ( 'preview_in_email' === preview_option ) {
$('#es_test_send_email').show();
} else {
$('#es_test_send_email').hide();
}
});
$('#toggle-sender-details').on('click',function(){
let toggle_control_element = $(this);
let sender_details_container_element = $('#sender-details-container');
let is_visible = $(sender_details_container_element).is(':visible');
if ( is_visible ) {
$(sender_details_container_element).hide();
$(toggle_control_element).removeClass('toggled');
} else {
$(sender_details_container_element).show();
$(toggle_control_element).addClass('toggled');
}
});
// Check email authentication headers
jQuery('#ig-es-verify-auth-headers').click(function(e){
e.preventDefault();
var params = {
type:'POST',
url:ajaxurl,
data:{
action:'es_send_auth_test_email',
security:ig_es_js_data.security,
},
dataType:'json',
beforeSend:function(){
jQuery('#ig-es-verify-auth-headers').next('#spinner-image').show();
},
success:function(res){
if( 'SUCCESS' === res['status'] ){
let time_delay = 5000;
setTimeout(function(){
getEmailAuthHeaders();
},time_delay);
}
else{
jQuery('#ig-es-verify-auth-headers').next('#spinner-image').hide();
jQuery('#ig-es-verify-auth-message').addClass('text-red-500').html(ig_es_js_data.i18n_data.error_send_test_email);
}
},
error:function(err){
jQuery('#ig-es-verify-auth-headers').next('#spinner-image').hide();
jQuery('#ig-es-verify-auth-message').addClass('text-red-500').html(ig_es_js_data.i18n_data.error_send_test_email);
},
}
jQuery.ajax(params);
});
function getEmailAuthHeaders(){
var params = {
type:'POST',
url:ajaxurl,
data:{
action:'es_get_auth_headers',
security:ig_es_js_data.security,
},
dataType:'json',
success:function(res){
let headerData = [];
let table_elem = jQuery('#ig-es-settings-authentication-table');
try {
headerData = JSON.parse(res.data);
if( 'undefined' !== table_elem && Array.isArray(headerData) && headerData.length > 0 ){
populateTableData( table_elem, headerData, false );
jQuery('#ig-es-verify-auth-message').addClass('text-green-500').html(ig_es_js_data.i18n_data.success_verify_email_headers);
}
else{
jQuery('#ig-es-verify-auth-message').addClass('text-red-500').html(ig_es_js_data.i18n_data.error_server_busy);
}
}
catch(err){
jQuery('#ig-es-verify-auth-message').addClass('text-red-500').html(ig_es_js_data.i18n_data.error_server_busy);
}
},
error:function(err){
jQuery('#ig-es-verify-auth-message').addClass('text-red-500').html(ig_es_js_data.i18n_data.error_server_busy);
},
complete:function(){
jQuery('#ig-es-verify-auth-headers').next('#spinner-image').hide();
}
}
jQuery.ajax(params);
}
function populateTableData(table_element, data_array,mapByIndex){
let table_row;
let row_id,cell_value='';
let row_data_keys={};
let table_body = table_element.find('tbody');
for (let index = 0; index < data_array.length; index++) {
row_id = (mapByIndex) ? data_array[index] : data_array[index]['key'];
table_row = table_body.find('tr[data-row-id="'+row_id+'"]');
row_data_keys = Object.keys(data_array[index]);
row_data_keys.forEach(key => {
cell_value = data_array[index][key];
if( cell_value.length > 30){
cell_value = cell_value.slice(0,30) + '...';
}
table_row.find('td[data-cell-id="'+row_id+"-"+key+'"]').html(cell_value );
});
}
}
jQuery(document).on( 'click', '#es_check_auth_header', function(e){
window.location.href = '?page=es_settings&btn=check_auth_header#tabs-email_sending';
jQuery('html, body').animate({
scrollTop: jQuery("#ig-es-settings-authentication-table").offset().top
}, 2000);
});
if(window.location.href.indexOf('page=es_settings&btn=check_auth_header#tabs-email_sending') !== -1){
jQuery('html, body').animate({
scrollTop: jQuery("#ig-es-settings-authentication-table").offset().top
}, 2000);
}
// Check spam score
jQuery(document).on('click', '.es_spam' , function(e) {
e.preventDefault();
var tmpl_id = jQuery('.es_spam').next().next('#es_template_id').val();
var subject = jQuery('#ig_es_broadcast_subject,#ig_es_campaign_subject').val();
var content = jQuery('.wp-editor-boradcast,.wp-campaign-body-editor').val();
jQuery('.es_spam').next('.es-loader-img').show();
let from_name = jQuery( '#from_name' ).val();
let from_email = jQuery( '#from_email' ).val();
var params = {
type: 'POST',
url: ajaxurl,
data: {
action: 'es_get_spam_score',
tmpl_id: tmpl_id,
subject: subject,
content: content,
from_name: from_name,
from_email: from_email,
security: ig_es_js_data.security
},
dataType: 'json',
success: function(res) {
if(res && typeof res.status !== 'undefined') {
jQuery('.es_spam').next('.es-loader-img').hide();
if( 'success' === res.status ) {
if(res.res.spamScoreData.score !== 'undefined') {
var score = res.res.spamScoreData.score;
score = (score < 0) ? 0 : score;
jQuery('.es-spam-score').text(score);
if(parseInt(score) < 4) {
jQuery('.es-spam-success').show();
jQuery('.es-spam-error').hide();
jQuery('.es-spam-error-log').hide();
jQuery('.es-spam-score').addClass('es-spam-score-success text-green-600').removeClass('es-spam-score-error');
} else {
jQuery('.es-spam-error').show();
jQuery('.es-spam-success').hide();
var rules = res.res.spamScoreData.rules;
jQuery('.es-spam-score').addClass('es-spam-score-error text-red-600').removeClass('es-spam-score-success');
jQuery('.es-spam-error-log').show();
jQuery('.es-spam-error-log').find('ul').empty();
let rule_classes = '';
if( 1 === jQuery('#spam_score_modal').length ) {
rule_classes = 'text-base pb-1 list-none text-center font-medium text-red-400';
}
for (var i = rules.length - 1; i >= 0; i--) {
if(rules[i].score > 1.2){
jQuery('.es-spam-error-log').find('ul').append(''+ rules[i].description + '');
}
}
}
jQuery('#spam_score_modal').show();
}
} else {
alert( res.error_message );
}
}
},
error: function(res) {
jQuery('#es_test_email_btn').next('.es-loader-img').hide();
}
};
jQuery.ajax(params);
});
// Close spam score popup
jQuery("#close_score").on('click', function (event) {
event.preventDefault();
jQuery('#spam_score_modal').hide();
});
// Show/hide utm campaign name field.
jQuery('#enable_utm_tracking').on('change', function() {
let enable_utm_tracking = jQuery(this).prop('checked') ? 'yes' : 'no';
if( 'yes' === enable_utm_tracking ) {
jQuery('.ig_es_utm_campaign_name_wrapper').removeClass('hidden');
} else {
jQuery('.ig_es_utm_campaign_name_wrapper').addClass('hidden');
}
});
// Hide trial to premium offer notice when accepted. This function just hide it from frontend, actual notice gets hidden when reloading page in new tab.
jQuery('#ig-es-optin-trial-to-premium-offer').on('click', function(){
jQuery(this).closest('.notice').hide('slow');
});
jQuery('#es_close_preview').on('click', function (event) {
event.preventDefault();
$('#report_preview_template').hide();
});
jQuery('#es_close_template_preview').on('click', function (event) {
event.preventDefault();
$('#es_preview_template').hide();
});
// Prevent campaign form submission on enter key press
jQuery('#campaign_form').on('keyup keypress', function(e) {
let pressedKeyCode = e.keyCode || e.which;
let enterKeyCode = 13;
let enterKeyPressed = pressedKeyCode === enterKeyCode;
if ( enterKeyPressed ) {
let targetType = e.target.type;
if ( 'textarea' !== targetType ) {
e.preventDefault();
}
}
});
// Create rest API key for selected user
jQuery('#ig-es-generate-rest-api-key').click(function(e){
e.preventDefault();
let user_id = jQuery('#ig-es-rest-api-user-id').val();
let message_class = '';
if ( '' === user_id ) {
message_class = 'text-red-600';
jQuery('#response-messages').removeClass('hidden').find('div').attr('class', message_class).html(ig_es_js_data.i18n_data.select_user);
return;
}
let btn_elem = $(this);
jQuery.ajax({
type:'POST',
url:ajaxurl,
data:{
action:'ig_es_generate_rest_api_key',
user_id: user_id,
security:ig_es_js_data.security,
},
dataType:'json',
beforeSend:function(){
jQuery(btn_elem).addClass('loading');
},
success:function(response){
if( response.status ){
let status = response.status;
let message = response.message;
jQuery('.rest-api-response').removeClass('hidden').addClass(status).html(message);
message_class = '';
jQuery('#response-messages').removeClass('hidden').find('div').attr('class', message_class).html(message);
} else{
message_class = 'text-red-600';
jQuery('#response-messages').removeClass('hidden').find('div').attr('class', message_class).html(ig_es_js_data.i18n_data.ajax_error_message);
}
},
error:function(err){
alert(ig_es_js_data.i18n_data.ajax_error_message);
},
}).always(function(){
jQuery(btn_elem).removeClass('loading');
});
});
// Delete rest API key for selected user
jQuery('.ig-es-delete-rest-api-key').click(function(e){
e.preventDefault();
let delete_rest_api = confirm( ig_es_js_data.i18n_data.delete_rest_api_confirmation );
if ( ! delete_rest_api ) {
return;
}
let rest_api_row = jQuery(this).closest('.ig-es-rest-api-row');
let user_id = jQuery(rest_api_row).data('user-id');
let api_index = jQuery(rest_api_row).data('api-index');
let btn_elem = $(this);
jQuery.ajax({
type:'POST',
url:ajaxurl,
data:{
action:'ig_es_delete_rest_api_key',
user_id: user_id,
api_index: api_index,
security:ig_es_js_data.security,
},
dataType:'json',
beforeSend:function(){
jQuery(btn_elem).addClass('loading');
},
success:function(response){
if( response.status ){
let status = response.status;
if ( 'success' === status ) {
jQuery(rest_api_row).remove();
} else {
alert( response.message );
}
} else{
alert( ig_es_js_data.i18n_data.ajax_error_message );
}
},
error:function(err){
alert( ig_es_js_data.i18n_data.ajax_error_message );
},
}).always(function(){
jQuery(btn_elem).removeClass('loading');
});
});
// Workflow JS
IG_ES_Workflows = {
$triggers_box: $('#ig_es_workflow_trigger'),
$actions_box : $('#ig_es_workflow_actions'),
$variables_box: $('#ig_es_workflow_variables'),
$trigger_select: $('.js-trigger-select').first(),
$actions_container: $('.ig-es-actions-container'),
init: function() {
IG_ES_Workflows.init_triggers_box();
IG_ES_Workflows.init_actions_box();
IG_ES_Workflows.init_rules_box();
IG_ES_Workflows.init_variables_box();
IG_ES_Workflows.init_show_hide();
IG_ES_Workflows.init_workflow_status_switch();
IG_ES_Workflows.init_workflow_gallery();
},
init_workflow_status_switch: function() {
$('.ig-es-switch.js-toggle-workflow-status').click(function(){
let $switch, state, new_state;
$switch = $(this);
if ( $switch.is('.ig-es-loading') ) {
return;
}
state = $switch.attr( 'data-ig-es-switch' );
new_state = state === 'active' ? 'inactive' : 'active';
$switch.addClass('ig-es-loading');
$.post( ajaxurl, {
action: 'ig_es_toggle_workflow_status',
workflow_id: $switch.attr( 'data-workflow-id' ),
new_state: new_state,
security: ig_es_js_data.security,
dataType: 'json'
}, function( response ) {
$switch.attr( 'data-ig-es-switch', new_state );
$switch.removeClass('ig-es-loading');
});
});
},
init_workflow_gallery: function() {
$('.ig-es-create-workflow-from-gallery-item').click(function(){
let $gallery_item = $(this);
if ( $gallery_item.is('.loading') ) {
return;
}
$gallery_item.addClass('loading');
$.post( ajaxurl, {
action: 'ig_es_create_workflow_from_gallery_item',
item_name: $gallery_item.attr( 'data-item-name' ),
security: ig_es_js_data.security,
dataType: 'json'
}, function( response ) {
if ( response.success ) {
window.location.href = response.data.redirect_url;
} else {
alert( response.data.error_message );
}
$gallery_item.removeClass('loading');
});
});
},
/**
* Show / hide logic with data attributes
*/
init_show_hide: function() {
let update = function( $el ) {
let id = $el.data( 'ig-es-bind' );
let value = $el.val();
let is_checkbox = $el.is('input[type="checkbox"]');
$('[data-ig-es-show]').each(function() {
if ( is_checkbox && $(this).data('ig-es-show') === id ) {
if ( $el.is(':checked') ) {
$(this).show();
} else {
$(this).hide();
}
} else {
let logic = $(this).data('ig-es-show').split('=');
if ( logic[0] !== id ) {
return;
}
let possible_values = logic[1].split('|');
if ( possible_values.indexOf( value ) !== -1 ) {
$(this).show();
} else {
$(this).hide();
}
}
});
$('[data-ig-es-hide]').each(function() {
if ( is_checkbox && $(this).data('ig-es-hide') === id ) {
if ( $el.is(':checked') ) {
$(this).hide();
} else {
$(this).show();
}
} else {
let logic = $(this).data('ig-es-hide').split('=');
if ( logic[0] !== id ) {
return;
}
let possible_values = logic[1].split('|');
if ( possible_values.indexOf( value ) !== -1 ) {
$(this).hide();
} else {
$(this).show();
}
}
});
};
$(document).on( 'change', '[data-ig-es-bind]', function() {
update( $(this) );
});
$('[data-ig-es-bind]').each(function() {
update( $(this) );
});
},
/**
*
*/
init_triggers_box: function() {
IG_ES_Workflows.$trigger_select.change(function(e){
IG_ES_Workflows.fill_trigger_fields( $(this).val() );
IG_ES_Workflows.maybe_show_run_option();
});
},
/**
* @param trigger_name
*/
fill_trigger_fields: function( trigger_name ) {
// Remove existing fields
IG_ES_Workflows.$triggers_box.find('tr.ig-es-trigger-option').remove();
if ( trigger_name ) {
IG_ES_Workflows.$triggers_box.addClass('ig-es-loading');
let workflow_id = $('#workflow_id').val();
$.ajax({
url: ajaxurl,
data: {
action: 'ig_es_fill_trigger_fields',
trigger_name: trigger_name,
security: ig_es_js_data.security,
workflow_id: workflow_id
}
})
.done(function(response){
if ( ! response.success ) {
return;
}
ig_es_workflows_data.trigger = response.data.trigger;
IG_ES_Workflows.refine_variables();
IG_ES_Workflows.$triggers_box.find('tbody').append( response.data.fields );
IG_ES_Workflows.$triggers_box.removeClass('ig-es-loading');
IG_ES_Workflows.$triggers_box.find('.js-trigger-description').html( '' + response.data.trigger.description + '
' );
$(document).trigger('ig_es_workflow_trigger_updated', [response.data]);
});
} else {
$('.ig-es-variables-group').addClass('hidden');
IG_ES_Workflows.toggle_no_variable_message();
}
},
init_rules_box: function () {
try {
//All rules avalilable in ES workflow
let rule_details = igEsWorkflowRules;
let all_rules = rule_details?.all_rules;
let grouped_rules = [];
let valid_rules = {};
let $meta_box_footer = $('.rules-metabox-footer');
let $rule_template_container = $('#rule-template-container');
let $rules_container = $('#ig-es-rules-container');
let $main_rule_container= $('.ig-es-rule-container');
//Add new rule group.
$(document).on('click', '.ig-es-add-rule-group', function () {
let $new_rule_group = add_new_rule_group();
$rules_container.append($new_rule_group);
});
//Add one more rules in respective rule group
$(document).on('click', '.ig-es-rule__add', function () {
let $rule_group = $(this).closest('.ig-es-rule-group');
let rule_id = get_unique_number();
let rule_group_id = $rule_group.data('group-id');
$new_rule_container = $rule_template_container.find('.ig-es-rule-container').clone();
$new_rule_container.data('rule-id', rule_id);
add_rule_container_to_rule_group($new_rule_container, rule_group_id, rule_id);
$rule_group.append($new_rule_container);
});
//Remove rule from the respective rule group..If there is no rules in the group, then remove entire rule group
$(document).on('click', '.ig-es-rule__remove', function () {
let $rule_group = $(this).closest('.ig-es-rule-group');
let rules_count = $rule_group.find('.ig-es-rule-container').length;
if (rules_count > 1) {
$(this).closest('.ig-es-rule-container').remove();
} else {
$rule_group.remove();
}
validate_and_show_option_to_add_rules(false);
});
//On selecting rule, reset the compare field and value field
$(document).on('change', '.rule-select-field', function () {
let $rule_group = $(this).closest('.ig-es-rule-group');
let $rule_container = $(this).closest('.ig-es-rule-container');
let $compare_field = $rule_container.find('.rule-compare-field');
let rule_name = $(this).val();
let rule_group_id = $rule_group.data('group-id');
let rule_id = $rule_container.data('rule-id');
render_compare_field($rule_container, $compare_field, rule_group_id, rule_id, {name: rule_name})
});
// Reset everything while changing the trigger
$(document).on('ig_es_workflow_trigger_updated', function (e, data) {
filter_valid_rules(data?.trigger?.supplied_data_items,data?.trigger?.name);
validate_and_show_option_to_add_rules(true);
});
/**
* Get the timestamp for Rule group ID and Rule ID.
*
* @returns {number}
*/
const get_unique_number = function () {
return Date.now();
}
/**
* Render the compare field and value field of the respective rule container
* @param $rule_container
* @param $compare_field
* @param rule_group_id
* @param rule_id
* @param rule_details
*/
const render_compare_field = function ($rule_container, $compare_field, rule_group_id = 0, rule_id = 0, rule_details = {}) {
let rule_name = rule_details?.name;
if (rule_name && rule_name.length > 1) {
let rule = all_rules[rule_name];
let compare_types = rule?.compare_types;
if (compare_types && Object.keys(compare_types).length > 0) {
let compare_field_options = [];
$.each(compare_types, function( key, value ) {
compare_field_options.push('');
});
$compare_field.html(compare_field_options.join(''));
let rule_compare = rule_details?.compare;
if (rule_compare) {
$compare_field.val(rule_compare);
}
$compare_field.removeAttr('disabled')
}
add_rule_value_field($rule_container, rule, rule_group_id, rule_id, rule_details);
} else {
$compare_field.html('');
$compare_field.attr('disabled', true);
add_rule_value_field($rule_container, {type: ''}, rule_group_id, rule_id, rule_details)
}
}
/**
* Add new rule group to the wokflow
*
* @param group_id
* @param rule_id
* @param include_default_rule
* @returns {boolean|*}
*/
const add_new_rule_group = function (group_id, rule_id = 0, include_default_rule = true) {
$rules_container.find('.ig-es-rules-empty-message').remove();
$rules_container.find('.ig-es-no-rules-message').remove();
let total_rule_groups = $rules_container.find('.ig-es-rule-group').length;
if (!group_id) {
group_id = get_unique_number();
}
//For this release allow only one rule group. Remove IF/ELSE statement to allow multiple rule groups
if (total_rule_groups >= 1) {
return false;
} else {
$meta_box_footer.addClass('hidden');
}
let $new_rule_group = $rule_template_container.find('.ig-es-rule-group').clone();
$new_rule_group.data('group-id', group_id);
if (include_default_rule) {
let $new_rule_container = $rule_template_container.find('.ig-es-rule-container').clone();
$new_rule_container.data('rule-id', 0);
add_rule_container_to_rule_group($new_rule_container, group_id, rule_id);
$new_rule_group.append($new_rule_container)
}
return $new_rule_group;
}
/**
* Add rule to rule group
* @param $rule_container
* @param rule_group_id
* @param rule_id
* @param rule_details
*/
const add_rule_container_to_rule_group = function ($rule_container, rule_group_id, rule_id, rule_details = {}) {
let $rule_select_field = $rule_container.find('.rule-select-field')
if (Object.keys(grouped_rules).length > 0) {
for (const group_name in grouped_rules) {
if (grouped_rules.hasOwnProperty(group_name)) {
let $option_group = $(`