diff --git a/cleantalk.php b/cleantalk.php
index 30dda1f11..1cad49eb8 100644
--- a/cleantalk.php
+++ b/cleantalk.php
@@ -3171,6 +3171,11 @@ function apbctGetContactsEncoder()
$contacts_encoder_params->obfuscation_text = $apbct->settings['data__email_decoder_obfuscation_custom_text'];
$contacts_encoder_params->do_encode_emails = (int)$apbct->settings['data__email_decoder_encode_email_addresses'];
$contacts_encoder_params->do_encode_phones = (int)$apbct->settings['data__email_decoder_encode_phone_numbers'];
+ $contacts_encoder_params->excluded_strings = \Cleantalk\Common\ContactsEncoder\Exclusions\ExclusionsService::parseExcludedStrings(
+ isset($apbct->settings['data__email_decoder_excluded_strings'])
+ ? $apbct->settings['data__email_decoder_excluded_strings']
+ : ''
+ );
return ContactsEncoder::getInstance($contacts_encoder_params);
}
diff --git a/css/cleantalk-admin-settings-page.min.css b/css/cleantalk-admin-settings-page.min.css
index eaa208fd8..dbba03e03 100644
--- a/css/cleantalk-admin-settings-page.min.css
+++ b/css/cleantalk-admin-settings-page.min.css
@@ -1 +1 @@
-.apbct_settings-page{padding-right:10px}.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px 0}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content{display:inline-block}.apbct_settings-field_content--radio,.apbct_settings-field_wrapper>.apbct_settings-field_description{width:70%;padding-bottom:10px}.apbct_settings-field_title--select,.apbct_settings-field_title--textarea{margin:0;width:210px;padding-right:10px;padding-bottom:10px;font-size:14px;vertical-align:top}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.apbct_setting_textarea{min-width:300px}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:10px 0 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;display:inline-block;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-auto.cleantalk_link_text_center{text-align:center}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;display:inline-block;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}.apbct-icon-upload-cloud{margin-left:3px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{display:inline-block;position:relative;padding:5px;margin:4px;border:3px solid #f03232;border-radius:5px;background-color:#ffc8c8}.ct_settings_banner{text-align:right;display:inline-block;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{display:inline-block;width:370px;margin-right:3em;padding:.8em .8em 15px .8em;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}.apbct_long_desc a{color:#78c8e6}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;margin:0 auto;font-size:25px;line-height:20px;color:#78c8e6;margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:#78c8e6;margin:0}.--hide{display:none}.apbct_preloader_button{height:15px;margin-left:5px;vertical-align:text-top;display:none}.--invisible{visibility:hidden}.apbct_preloader{height:1em;width:1em;margin-left:.5em;display:inline-block}.key_changed_sync{font-size:1.5em;line-height:2em;vertical-align:middle}.key_changed_success{font-size:1.5em;line-height:2em;vertical-align:middle}.--upper-case{text-transform:uppercase}#cleantalk-modal-content{text-align:center}#cleantalk-modal-content>*{display:block;width:100%}.cleantalk-confirm-modal_header{font-size:15px;font-weight:500}.cleantalk-confirm-modal_text-block{padding:10px 0}.cleantalk-confirm-modal_buttons-block{display:flex!important;gap:10px;justify-content:center}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}.apbct-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0 none;border-bottom:1px solid;cursor:pointer}#apbct-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}button[value=save_changes]:disabled{color:#2271b1;border-color:#2271b1;background:#f6f7f7}#apbct_settings__advanced_settings{position:relative}#apbct_settings__advanced_settings_inner{width:70%}#apbct_hidden_section_nav{position:absolute;top:0;right:0;width:200px}#apbct_hidden_section_nav ul{z-index:9999;width:100%;top:40px}.apbct_settings__position_main_save_button{text-align:right;margin-right:40px}#apbct_settings__after_advanced_settings{margin-bottom:20px;width:70%}#apbct_settings__button_section{position:static;z-index:9999;padding-bottom:40px;bottom:0}.apbct_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.apbct_notice_inner{display:flex;margin-top:10px!important}.apbct_notification__advanced_settings{margin:20px 0;font-weight:400}.apbct_settings_top_info__div{float:right;padding:0 20px 0 0;font-size:13px;position:relative}.apbct_settings_top_info__p{padding:0;margin:2px}.apbct_settings_top_info__btn{display:inline-flex;gap:10px}.apbct_hidden_section_nav_mob_btn{display:none;background-image:url(images/menu.svg);background-repeat:no-repeat;background-size:contain;background-position-y:center}.apbct_hidden_section_nav_mob_btn-close{display:none}.apbct_settings__footer{background:#c2c2c2;position:absolute;left:0;padding-bottom:30px;padding-left:21px;z-index:-1}.apbct_settings_top_info__sub_btn{display:flex;flex-wrap:wrap;gap:10px;margin:15px 0}.apbct_settings__key_line{display:flex;align-items:center;justify-content:flex-start;flex-direction:row}.apbct_settings__key_line__elements{margin-right:10px}.apbct_setting__key_line__buttons{margin:0}.apbct_setting__key_line__get_key_manual_chunk{margin:10px 0 10px 0;border:1px solid #d3d3d3;border-radius:3px;padding:10px;background:#fff}.apbct_settings__key_line__service_block{margin-left:10px}#apbct_settings__public_offer{margin-top:10px;display:flex;align-items:center}#cleantalk_apikey_wrapper{max-width:65%}.apcbt_contact_data_encoder__line{max-width:70%;display:flex;flex-wrap:wrap;flex-direction:row}.apbct_warning_red_point{display:inline-block;width:4px;height:4px;background:red;border-radius:100%;margin:0 10px 3px 3px;vertical-align:middle;position:relative}.apbct_warning_red_point::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:12px;border:1.5px solid rgba(255,2,2,.65);border-radius:50%;animation:apbct_pulsate 1.2s ease-out infinite;opacity:.7;pointer-events:none;transform:translate(-50%,-50%)}#apbct_summary_and_support{display:flex;flex-wrap:wrap;width:-webkit-fill-available;border:1px solid #ddd;border-radius:3px;padding:10px;background:#ededed;margin-top:4em}#apbct_summary_and_support-left_side{width:69%;padding:0 20px 0 0}#apbct_summary_and_support-right_side{width:31%;padding:0 20px;border-left:1px solid #dcdcde}#apbct_summary_and_support-sides_wrap{display:flex;flex-direction:row;margin:10px 0 10px;width:100%}.apbct_summary_and_support-side_header{margin:.5em 0}.apbct_summary_and_support-inner_header{margin:2em 0 .5em;font-size:medium}.apbct_summary_and_support-inner_header::after{content:'';display:block;width:100%;height:1px;background:linear-gradient(90deg,#d3d3d357 0,rgba(211,211,211,.14) 10%,transparent 100%);margin-top:5px}.apbct_summary_and_support-support_buttons_wrapper{display:flex;flex-direction:column}#apbct_summary_and_support-create_user_button{display:inline-flex;flex-direction:row;align-items:center;justify-content:center}.apbct_summary_and_support-user_creation_result{background:#eee;margin-top:10px;padding:5px;border:1px solid #d3d3d3;display:none}.apbct_summary-list_of_items{display:flex;flex-direction:column}.apbct_summary_list_item{margin-bottom:2px}.apbct-green{color:green}.apbct-red{color:red}#apbct_negative_reports_table{width:100%;border-collapse:collapse;margin:10px 5px}#apbct_sending_report_div{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;flex-wrap:nowrap}#apbct_sending_report_disabled_notice{margin-right:5px}.apbct-real-user-popup-img{align-self:start;margin:0!important;height:1.1em;vertical-align:initial}@keyframes apbct_pulsate{0%{transform:translate(-50%,-50%) scale(1);opacity:.7}100%{transform:translate(-50%,-50%) scale(1.5);opacity:0}}@media (max-width:768px){.apbct_settings_top_info__btn{display:inline-grid;width:100%;gap:5px}#apbct_settings__advanced_settings_inner,#apbct_settings__after_advanced_settings{width:100%}.apbct_settings-field_content--radio,.apbct_settings-field_wrapper>.apbct_settings-field_description{width:100%}.apbct_settings_top_info__sub_btn .apbct_bottom_links--left,.apbct_settings_top_info__sub_btn .apbct_bottom_links--other{margin-left:0;margin-right:0}#apbct_hidden_section_nav ul{display:none;background-color:#dadee3bd;margin:0;padding:10px;border-radius:3px;right:0;width:auto}#apbct_hidden_section_nav{right:0;min-width:167px}.apbct_setting_radio::before{height:6px!important;width:6px!important;margin:4px!important}.apbct_setting_checkbox::before{height:15px!important;width:15px!important;margin:0 -.05rem!important}.apbct_setting_checkbox,.apbct_setting_radio{height:16px!important;width:16px!important}.apbct_hidden_section_nav_mob_btn{display:block;width:32px;height:28px;right:20px;top:20px;position:fixed}.apbct_hidden_section_nav_mob_btn-close{display:block;position:relative;float:right;width:20px;height:22px;top:-5px;right:-5px;background-image:url(images/cancel.svg);background-repeat:no-repeat;background-size:contain;background-position-y:center;text-align:center}.apbct_long_desc{left:-2%!important;max-width:95%;margin-top:10%}.apbct_long_desc__angle{display:none}.ct_rate_block{max-width:240px;margin-right:20px}.apbct_settings__key_line{display:flex;align-items:flex-start;flex-direction:column;width:100%}.apbct_settings__key_line__elements{margin:5px 0 5px 0}#apbct_setting_apikey,.apbct_setting__key_line__buttons,.apbct_settings__key_line__elements{width:100%}#cleantalk_apikey_wrapper{max-width:100%}#apbct_settings__button_section{position:fixed;right:20px}.apcbt_contact_data_encoder__line{max-width:100%;margin-top:5px}#apbct_summary_and_support-right_side{border-top:1px solid #dcdcde;border-left:0;margin:35px 0 0;padding:0;width:-webkit-fill-available}#apbct_summary_and_support-left_side{border-top:1px solid #dcdcde;width:-webkit-fill-available}#apbct_summary_and_support-sides_wrap{flex-direction:column}}.apbct-trial-renew-fullpage{display:flex;position:fixed;width:stretch;top:0;bottom:0;overflow-y:auto;justify-content:center;align-items:flex-start;font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;color:#444;background-color:#f0f0f0;z-index:99}.apbct-trial-renew-fullpage-notice{padding:32px 64px 64px 64px!important;margin-top:5em!important;margin-bottom:5em!important}.apbct-trial-renew-fullpage-body{margin-top:32px;margin-left:32px}.apbct-banner-header{display:flex;justify-content:space-between}.apbct-trial-renew-fullpage-body .apbct-banner-button-wrapper{display:flex;margin:0}.apbct-trial-renew-fullpage-image{flex:1 1 0;min-width:0;max-width:576px;height:auto;object-fit:contain;margin:auto 0;align-self:flex-start}.apbct-banner-desc-block-row{line-height:22px}.apbct-banner-red-point{display:inline-block;width:8px;height:8px;background-color:#bb3323;border-radius:50%;margin-right:8px;vertical-align:middle}.apbct-banner-error{background-color:#fff!important;box-shadow:0 4px 15px #84848440!important;border-left-color:#bb3323!important}.apbct-banner-background-container{display:grid;max-width:644px;gap:16px;padding:32px;background-color:#f3f6f9;border-radius:8px}.apbct-banner-desc-block-title{font-size:18px;font-weight:700;line-height:22px;color:#0a0a0a;margin-bottom:8px}.apbct-banner-stat-value{margin-bottom:0;color:#444;vertical-align:middle}.apbct-banner-desc-block-text{font-size:14px;line-height:22px;color:#717182;margin-left:12px;margin-top:0;vertical-align:middle}.apbct-banner-desc-blocks{display:grid;gap:16px;flex:1 1 0;min-width:0}.apbct-banner-desc-blocks-content{display:flex;gap:72px;flex-wrap:wrap;justify-content:center;margin:32px 0}.apbct-banner-check{vertical-align:middle}.apbct-trial-renew-upgrade{display:none;text-align:center}.apbct-trial-renew-upgrade-link{font-size:16px;line-height:22px;letter-spacing:0;text-decoration:underline solid 0 #026e88!important;text-underline-offset:25%;color:#026e88!important}@media (max-width:1366px){.apbct-banner-header{display:grid;gap:16px}.apbct-banner-desc-blocks-content{display:grid;gap:38px;place-items:center}.apbct-trial-renew-upgrade{display:block}}@media (max-width:1200px){.apbct-banner-desc-blocks-content{gap:32px}}@media (max-width:782px){.apbct-trial-renew-fullpage{padding-top:50px;padding-bottom:50px}.apbct-trial-renew-fullpage-notice{padding:24px 24px 32px 24px!important}.apbct-trial-renew-fullpage-body{margin-top:20px;margin-left:0}.apbct-banner-desc-blocks-content{gap:24px}.apbct-banner-background-container{padding:20px}.apbct-trial-renew-fullpage-image{width:100%}}@media (max-width:480px){.apbct-trial-renew-fullpage-notice{padding:16px 12px 24px 12px!important}.apbct-banner-background-container{padding:16px}.apbct-banner-desc-blocks-content{gap:16px}.apbct-banner-desc-block-title{font-size:16px}}
\ No newline at end of file
+.apbct_settings-page{padding-right:10px}.apbct_settings-field_content,.cleantalk_link-auto,.cleantalk_link-manual,.ct-warning-test-failed,.ct_rate_block,.ct_settings_banner,i.animate-spin{display:inline-block}#apbctTopWarning{margin-bottom:5px}#apbctTopWarning h3{margin:10px 0 5px 0}#apbctTopWarning h4{margin:10px}#apbctTopWarning h4 span{margin-top:5px}.apbct_settings-subtitle{position:relative;top:-15px;margin:0}.apbct_settings-field_wrapper{margin:15px 0}.apbct_settings-field_wrapper--sub{margin-left:30px!important}.apbct_settings__label{margin-right:10px;font-size:17px;vertical-align:text-bottom}.apbct_settings-field_content{display:inline-block}.apbct_settings-field_content--radio,.apbct_settings-field_wrapper>.apbct_settings-field_description{width:70%;padding-bottom:10px}.apbct_settings-field_title--select,.apbct_settings-field_title--textarea{margin:0;width:210px;padding-right:10px;padding-bottom:10px;font-size:14px;vertical-align:top}.apbct_settings-field_title--with-help{width:auto;white-space:nowrap}.apbct_settings-field_title--radio{display:inline-block;margin:0;width:210px;padding-right:10px;font-size:14px;vertical-align:top}.apbct_input_text{min-width:255px;width:400px}.apbct_settings-long_description---show:hover{color:#aaa;cursor:pointer}.apbct_setting_textarea{min-width:300px}.cleantalk_link{text-decoration:none;font-size:13px;line-height:26px;margin:10px 0 0 0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.cleantalk_link-auto{background:#ccc;border-color:#999;-webkit-box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(200,200,200,.5),0 1px 0 rgba(0,0,0,.15);color:#000;display:inline-block;height:28px;-webkit-border-radius:2px;border-radius:2px}.cleantalk_link-auto:hover{color:#fff}.cleantalk_link-auto.cleantalk_link_text_center{text-align:center}.cleantalk_link-manual{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;display:inline-block;-webkit-border-radius:3px;border-radius:3px;text-align:center}.cleantalk_link-manual:hover{color:#000}.cleantalk_link[disabled=disabled]{background:#5d9db5;color:#000}.apbct_status_icon{vertical-align:text-bottom;margin:0 5px 0 8px}.apbct-icon-upload-cloud{margin-left:3px}a.ct_support_link{color:#666;margin-right:.5em;font-size:10pt;font-weight:400}.ct-warning-test-failed{display:inline-block;position:relative;padding:5px;margin:4px;border:3px solid #f03232;border-radius:5px;background-color:#ffc8c8}.ct_settings_banner{text-align:right;display:inline-block;width:100%;margin:1em 0;vertical-align:top}#ct_translate_plugin{margin-left:0}.ct_rate_block{display:inline-block;width:370px;margin-right:3em;padding:.8em .8em 15px .8em;text-align:center;border:1px dashed #666}#ct_translate_plugin .apbct_button_rate{margin-bottom:10px}.apbct_long_desc{position:absolute;background:#5a5a5a;min-width:80px;min-height:80px;max-width:500px;padding:10px;color:#fff;z-index:10}.apbct_long_desc a{color:#78c8e6}i.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;margin:0 auto;font-size:25px;line-height:20px;color:#78c8e6;margin:25px}@keyframes spin{to{transform:rotate(359deg)}}.apbct_long_desc__cancel{position:absolute;top:5px;right:5px;color:rgba(255,255,255,.5)}.apbct_long_desc__cancel:hover{color:#fff}.apbct_long_desc__angle{position:absolute;top:5px;left:-17px;width:10px;height:10px;background:#5a5a5a;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.apbct_long_desc__title{color:#78c8e6;margin:0}.--hide{display:none}.apbct_preloader_button{height:15px;margin-left:5px;vertical-align:text-top;display:none}.--invisible{visibility:hidden}.apbct_preloader{height:1em;width:1em;margin-left:.5em;display:inline-block}.key_changed_sync{font-size:1.5em;line-height:2em;vertical-align:middle}.key_changed_success{font-size:1.5em;line-height:2em;vertical-align:middle}.--upper-case{text-transform:uppercase}#cleantalk-modal-content{text-align:center}#cleantalk-modal-content>*{display:block;width:100%}.cleantalk-confirm-modal_header{font-size:15px;font-weight:500}.cleantalk-confirm-modal_text-block{padding:10px 0}.cleantalk-confirm-modal_buttons-block{display:flex!important;gap:10px;justify-content:center}button.ct_support_link{border:none;background:0 0;color:#666;text-decoration:underline;cursor:pointer}.apbct-btn-as-link{padding:0;margin:0;vertical-align:baseline;color:gray;border:0 none;border-bottom:1px solid;cursor:pointer}#apbct-account-email[contenteditable=true]{padding:6px;background-color:#fff;border:1px solid #ccc}button[value=save_changes]:disabled{color:#2271b1;border-color:#2271b1;background:#f6f7f7}#apbct_settings__advanced_settings{position:relative}#apbct_settings__advanced_settings_inner{width:70%}#apbct_hidden_section_nav{position:absolute;top:0;right:0;width:200px}#apbct_hidden_section_nav ul{z-index:9999;width:100%;top:40px}.apbct_settings__position_main_save_button{text-align:right;margin-right:40px}#apbct_settings__after_advanced_settings{margin-bottom:20px;width:70%}#apbct_settings__button_section{position:static;z-index:9999;padding-bottom:40px;bottom:0}.apbct_highlighted{outline-offset:5px;outline-color:red;outline-width:3px!important;outline-style:solid!important}.apbct_notice_inner{display:flex;margin-top:10px!important}.apbct_notification__advanced_settings{margin:20px 0;font-weight:400}.apbct_settings_top_info__div{float:right;padding:0 20px 0 0;font-size:13px;position:relative}.apbct_settings_top_info__p{padding:0;margin:2px}.apbct_settings_top_info__btn{display:inline-flex;gap:10px}.apbct_hidden_section_nav_mob_btn{display:none;background-image:url(images/menu.svg);background-repeat:no-repeat;background-size:contain;background-position-y:center}.apbct_hidden_section_nav_mob_btn-close{display:none}.apbct_settings__footer{background:#c2c2c2;position:absolute;left:0;padding-bottom:30px;padding-left:21px;z-index:-1}.apbct_settings_top_info__sub_btn{display:flex;flex-wrap:wrap;gap:10px;margin:15px 0}.apbct_settings__key_line{display:flex;align-items:center;justify-content:flex-start;flex-direction:row}.apbct_settings__key_line__elements{margin-right:10px}.apbct_setting__key_line__buttons{margin:0}.apbct_setting__key_line__get_key_manual_chunk{margin:10px 0 10px 0;border:1px solid #d3d3d3;border-radius:3px;padding:10px;background:#fff}.apbct_settings__key_line__service_block{margin-left:10px}#apbct_settings__public_offer{margin-top:10px;display:flex;align-items:center}#cleantalk_apikey_wrapper{max-width:65%}.apcbt_contact_data_encoder__line{max-width:70%;display:flex;flex-wrap:wrap;flex-direction:row}.apbct_warning_red_point{display:inline-block;width:4px;height:4px;background:red;border-radius:100%;margin:0 10px 3px 3px;vertical-align:middle;position:relative}.apbct_warning_red_point::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:12px;border:1.5px solid rgba(255,2,2,.65);border-radius:50%;animation:apbct_pulsate 1.2s ease-out infinite;opacity:.7;pointer-events:none;transform:translate(-50%,-50%)}#apbct_summary_and_support{display:flex;flex-wrap:wrap;width:-webkit-fill-available;border:1px solid #ddd;border-radius:3px;padding:10px;background:#ededed;margin-top:4em}#apbct_summary_and_support-left_side{width:69%;padding:0 20px 0 0}#apbct_summary_and_support-right_side{width:31%;padding:0 20px;border-left:1px solid #dcdcde}#apbct_summary_and_support-sides_wrap{display:flex;flex-direction:row;margin:10px 0 10px;width:100%}.apbct_summary_and_support-side_header{margin:.5em 0}.apbct_summary_and_support-inner_header{margin:2em 0 .5em;font-size:medium}.apbct_summary_and_support-inner_header::after{content:'';display:block;width:100%;height:1px;background:linear-gradient(90deg,#d3d3d357 0,rgba(211,211,211,.14) 10%,transparent 100%);margin-top:5px}.apbct_summary_and_support-support_buttons_wrapper{display:flex;flex-direction:column}#apbct_summary_and_support-create_user_button{display:inline-flex;flex-direction:row;align-items:center;justify-content:center}.apbct_summary_and_support-user_creation_result{background:#eee;margin-top:10px;padding:5px;border:1px solid #d3d3d3;display:none}.apbct_summary-list_of_items{display:flex;flex-direction:column}.apbct_summary_list_item{margin-bottom:2px}.apbct-green{color:green}.apbct-red{color:red}#apbct_negative_reports_table{width:100%;border-collapse:collapse;margin:10px 5px}#apbct_sending_report_div{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;flex-wrap:nowrap}#apbct_sending_report_disabled_notice{margin-right:5px}.apbct-real-user-popup-img{align-self:start;margin:0!important;height:1.1em;vertical-align:initial}@keyframes apbct_pulsate{0%{transform:translate(-50%,-50%) scale(1);opacity:.7}100%{transform:translate(-50%,-50%) scale(1.5);opacity:0}}@media (max-width:768px){.apbct_settings_top_info__btn{display:inline-grid;width:100%;gap:5px}#apbct_settings__advanced_settings_inner,#apbct_settings__after_advanced_settings{width:100%}.apbct_settings-field_content--radio,.apbct_settings-field_wrapper>.apbct_settings-field_description{width:100%}.apbct_settings_top_info__sub_btn .apbct_bottom_links--left,.apbct_settings_top_info__sub_btn .apbct_bottom_links--other{margin-left:0;margin-right:0}#apbct_hidden_section_nav ul{display:none;background-color:#dadee3bd;margin:0;padding:10px;border-radius:3px;right:0;width:auto}#apbct_hidden_section_nav{right:0;min-width:167px}.apbct_setting_radio::before{height:6px!important;width:6px!important;margin:4px!important}.apbct_setting_checkbox::before{height:15px!important;width:15px!important;margin:0 -.05rem!important}.apbct_setting_checkbox,.apbct_setting_radio{height:16px!important;width:16px!important}.apbct_hidden_section_nav_mob_btn{display:block;width:32px;height:28px;right:20px;top:20px;position:fixed}.apbct_hidden_section_nav_mob_btn-close{display:block;position:relative;float:right;width:20px;height:22px;top:-5px;right:-5px;background-image:url(images/cancel.svg);background-repeat:no-repeat;background-size:contain;background-position-y:center;text-align:center}.apbct_long_desc{left:-2%!important;max-width:95%;margin-top:10%}.apbct_long_desc__angle{display:none}.ct_rate_block{max-width:240px;margin-right:20px}.apbct_settings__key_line{display:flex;align-items:flex-start;flex-direction:column;width:100%}.apbct_settings__key_line__elements{margin:5px 0 5px 0}#apbct_setting_apikey,.apbct_setting__key_line__buttons,.apbct_settings__key_line__elements{width:100%}#cleantalk_apikey_wrapper{max-width:100%}#apbct_settings__button_section{position:fixed;right:20px}.apcbt_contact_data_encoder__line{max-width:100%;margin-top:5px}#apbct_summary_and_support-right_side{border-top:1px solid #dcdcde;border-left:0;margin:35px 0 0;padding:0;width:-webkit-fill-available}#apbct_summary_and_support-left_side{border-top:1px solid #dcdcde;width:-webkit-fill-available}#apbct_summary_and_support-sides_wrap{flex-direction:column}}.apbct-trial-renew-fullpage{display:flex;position:fixed;width:stretch;top:0;bottom:0;overflow-y:auto;justify-content:center;align-items:flex-start;font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;color:#444;background-color:#f0f0f0;z-index:99}.apbct-trial-renew-fullpage-notice{padding:32px 64px 64px 64px!important;margin-top:5em!important;margin-bottom:5em!important}.apbct-trial-renew-fullpage-body{margin-top:32px;margin-left:32px}.apbct-banner-header{display:flex;justify-content:space-between}.apbct-trial-renew-fullpage-body .apbct-banner-button-wrapper{display:flex;margin:0}.apbct-trial-renew-fullpage-image{flex:1 1 0;min-width:0;max-width:576px;height:auto;object-fit:contain;margin:auto 0;align-self:flex-start}.apbct-banner-desc-block-row{line-height:22px}.apbct-banner-red-point{display:inline-block;width:8px;height:8px;background-color:#bb3323;border-radius:50%;margin-right:8px;vertical-align:middle}.apbct-banner-error{background-color:#fff!important;box-shadow:0 4px 15px #84848440!important;border-left-color:#bb3323!important}.apbct-banner-background-container{display:grid;max-width:644px;gap:16px;padding:32px;background-color:#f3f6f9;border-radius:8px}.apbct-banner-desc-block-title{font-size:18px;font-weight:700;line-height:22px;color:#0a0a0a;margin-bottom:8px}.apbct-banner-stat-value{margin-bottom:0;color:#444;vertical-align:middle}.apbct-banner-desc-block-text{font-size:14px;line-height:22px;color:#717182;margin-left:12px;margin-top:0;vertical-align:middle}.apbct-banner-desc-blocks{display:grid;gap:16px;flex:1 1 0;min-width:0}.apbct-banner-desc-blocks-content{display:flex;gap:72px;flex-wrap:wrap;justify-content:center;margin:32px 0}.apbct-banner-check{vertical-align:middle}.apbct-trial-renew-upgrade{display:none;text-align:center}.apbct-trial-renew-upgrade-link{font-size:16px;line-height:22px;letter-spacing:0;text-decoration:underline solid 0 #026e88!important;text-underline-offset:25%;color:#026e88!important}@media (max-width:1366px){.apbct-banner-header{display:grid;gap:16px}.apbct-banner-desc-blocks-content{display:grid;gap:38px;place-items:center}.apbct-trial-renew-upgrade{display:block}}@media (max-width:1200px){.apbct-banner-desc-blocks-content{gap:32px}}@media (max-width:782px){.apbct-trial-renew-fullpage{padding-top:50px;padding-bottom:50px}.apbct-trial-renew-fullpage-notice{padding:24px 24px 32px 24px!important}.apbct-trial-renew-fullpage-body{margin-top:20px;margin-left:0}.apbct-banner-desc-blocks-content{gap:24px}.apbct-banner-background-container{padding:20px}.apbct-trial-renew-fullpage-image{width:100%}}@media (max-width:480px){.apbct-trial-renew-fullpage-notice{padding:16px 12px 24px 12px!important}.apbct-banner-background-container{padding:16px}.apbct-banner-desc-blocks-content{gap:16px}.apbct-banner-desc-block-title{font-size:16px}}
\ No newline at end of file
diff --git a/css/src/cleantalk-admin-settings-page.css b/css/src/cleantalk-admin-settings-page.css
index 8b307d064..2922bd8a6 100644
--- a/css/src/cleantalk-admin-settings-page.css
+++ b/css/src/cleantalk-admin-settings-page.css
@@ -59,6 +59,10 @@ i.animate-spin {
font-size: 14px;
vertical-align: top;
}
+.apbct_settings-field_title--with-help{
+ width: auto;
+ white-space: nowrap;
+}
.apbct_settings-field_title--radio{
display: inline-block;
margin: 0;
diff --git a/inc/cleantalk-settings.php b/inc/cleantalk-settings.php
index f62950ca4..69b0ca5ea 100644
--- a/inc/cleantalk-settings.php
+++ b/inc/cleantalk-settings.php
@@ -659,7 +659,8 @@ function apbct_settings__set_fields()
'data__email_decoder_obfuscation_mode',
'data__email_decoder_obfuscation_custom_text',
'data__email_decoder_encode_phone_numbers',
- 'data__email_decoder_encode_email_addresses'
+ 'data__email_decoder_encode_email_addresses',
+ 'data__email_decoder_excluded_strings'
),
'long_description' => true,
),
@@ -676,6 +677,14 @@ function apbct_settings__set_fields()
'parent' => 'data__email_decoder',
'long_description' => true,
),
+ 'data__email_decoder_excluded_strings' => array(
+ 'type' => 'textarea',
+ 'title' => __('Do not encode these contacts', 'cleantalk-spam-protect'),
+ 'description' => ContactsEncoder::getExcludedStringsDescription(),
+ 'parent' => 'data__email_decoder',
+ 'class' => 'apbct_settings-field_wrapper--sub',
+ 'long_description' => true,
+ ),
'data__email_decoder_obfuscation_mode' => array(
'title' => __('Encoder obfuscation mode', 'cleantalk-spam-protect'),
'description' => ContactsEncoder::getObfuscationModesDescription(),
@@ -2382,6 +2391,7 @@ function apbct_settings__validate($incoming_settings)
'data__email_decoder_obfuscation_mode',
'data__email_decoder_obfuscation_custom_text',
'data__email_decoder_buffer',
+ 'data__email_decoder_excluded_strings',
);
$incoming_settings = apbct_settings__keep_settings_state_values(
$incoming_settings,
@@ -2716,6 +2726,12 @@ function apbct_settings__validate($incoming_settings)
$incoming_settings['data__email_decoder_obfuscation_custom_text'] = ContactsEncoder::getDefaultReplacingText();
}
+ $incoming_settings['data__email_decoder_excluded_strings'] = apbct_settings__sanitize__excluded_contact_strings(
+ isset($incoming_settings['data__email_decoder_excluded_strings'])
+ ? $incoming_settings['data__email_decoder_excluded_strings']
+ : ''
+ );
+
//sync discussion and plugin settings
if (isset($incoming_settings['cleantalk_allowed_moderation'])) {
update_option('cleantalk_allowed_moderation', TT::toString($incoming_settings['cleantalk_allowed_moderation'], '0'));
@@ -3264,6 +3280,32 @@ function apbct_settings__sanitize__exclusions($exclusions, $regexp = false, $url
}
}
+/**
+ * Sanitize the Contacts Encoder skip-list: one value per line, max 20 items, 128 chars each.
+ *
+ * @param mixed $exclusions
+ *
+ * @return string
+ */
+function apbct_settings__sanitize__excluded_contact_strings($exclusions)
+{
+ if ( ! is_string($exclusions) ) {
+ return '';
+ }
+
+ $parts = \Cleantalk\Common\ContactsEncoder\Exclusions\ExclusionsService::parseExcludedStrings($exclusions);
+ $parts = array_slice($parts, 0, 20);
+ $result = array();
+ foreach ( $parts as $part ) {
+ $part = trim(substr($part, 0, 128), " \n\r\t\v\x00");
+ if ( $part !== '' ) {
+ $result[] = $part;
+ }
+ }
+
+ return implode("\n", array_values(array_unique($result)));
+}
+
function apbct_settings__get__long_description()
{
global $apbct;
@@ -3434,6 +3476,10 @@ function apbct_settings__get_long_descriptions_data()
'title' => __('Contact data encoding: phone numbers', 'cleantalk-spam-protect'),
'desc' => ContactsEncoder::getPhonesEncodingLongDescription(),
),
+ 'data__email_decoder_excluded_strings' => array(
+ 'title' => __('Contact data encoding: do not encode these contacts', 'cleantalk-spam-protect'),
+ 'desc' => ContactsEncoder::getExcludedStringsLongDescription(),
+ ),
'data__email_decoder' => array(
'title' => __('Contact data encoding', 'cleantalk-spam-protect'),
'desc' => ContactsEncoder::getEmailEncoderCommonLongDescription(),
diff --git a/js/cleantalk-admin-settings-page.min.js b/js/cleantalk-admin-settings-page.min.js
index f8bd99837..012ff03aa 100644
--- a/js/cleantalk-admin-settings-page.min.js
+++ b/js/cleantalk-admin-settings-page.min.js
@@ -1,2 +1,2 @@
-let __=wp.i18n.__;function handleAnchorDetection(t){"none"===document.querySelector("#apbct_settings__advanced_settings").style.display&&apbctExceptedShowHide("apbct_settings__advanced_settings"),scrollToAnchor("#"+t)}function scrollToAnchor(t){t=document.querySelector(t);t&&t.scrollIntoView({block:"end"})}function apbctManageEmailEncoderCustomTextField(){var t=document.querySelector("#apbct_setting_data__email_decoder_obfuscation_custom_text");let e;null!==t&&(e=void 0!==t.parentElement?t.parentElement:null),document.querySelectorAll(".apbct_setting---data__email_decoder_obfuscation_mode").forEach(t=>{e&&t.checked&&"replace"!==t.value&&e.classList.add("hidden"),t.addEventListener("click",t=>{void 0!==e&&("replace"===t.target.value?e.classList.remove("hidden"):e.classList.add("hidden"))})})}function apbctManageAntiCrawlerDependency(){let e=document.querySelector("#apbct_setting_sfw__anti_crawler"),n=document.querySelector("#apbct_setting_sfw__enabled");e&&n&&e.addEventListener("change",()=>{var t;e.checked&&!n.checked&&(n.checked=!0,null!==(t=n.getAttribute("apbct_children")))&&apbctSettingsDependencies(t,1)})}function apbctBannerCheck(){let c=setInterval(function(){apbct_admin_sendAJAX({action:"apbct_settings__check_renew_banner"},{callback:function(t,e,n,a){t.close_renew_banner&&(jQuery("#cleantalk_notice_renew").length&&jQuery("#cleantalk_notice_renew").hide("slow"),jQuery("#cleantalk_notice_trial").length&&jQuery("#cleantalk_notice_trial").hide("slow"),clearInterval(c))}})},9e5)}function apbctGetElems(a){for(let t=0,e=(a=a.split(",")).length,n;t "+t.desc+""+t.title+"
").append("
"+t.data+"
").insertAfter(jQuery(c))}})}}),jQuery(document).on("click","#apbct_settings_templates_export_button",function(){jQuery("#apbct-ajax-result").remove();var t=jQuery("option:selected",jQuery("#apbct_settings_templates_export")),e=jQuery("#apbct_settings_templates_export_name");let n={};if(e.css("border-color","inherit"),void 0===t.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===t.data("id")){var a=e.val();if(""===a)return void e.css("border-color","red");n={template_name:a}}else n={template_id:t.data("id")};let c=this;apbct_admin_sendAJAX({action:"settings_templates_export",data:n},{timeout:25e3,button:c,spinner:jQuery("#apbct_settings_templates_export_button .apbct_preloader_button"),notJson:!0,callback:function(t,e,n,a){t.success?(jQuery(""+t.data+"
").insertAfter(jQuery(c)),jQuery("#apbct_settings_templates_export_button .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_settings_templates_export_button .apbct_success").hide(300)},2e3),document.addEventListener("cleantalkModalClosed",function(t){document.location.reload()}),setTimeout(function(){cleantalkModal.close()},2e3)):jQuery(""+t.data+"
").insertAfter(jQuery(c))}})}}),jQuery(document).on("click","#apbct_settings_templates_reset_button",function(){let c=this;apbct_admin_sendAJAX({action:"settings_templates_reset"},{timeout:25e3,button:c,spinner:jQuery("#apbct_settings_templates_reset_button .apbct_preloader_button"),notJson:!0,callback:function(t,e,n,a){t.success?(jQuery(""+t.data+"
").insertAfter(jQuery(c)),jQuery("#apbct_settings_templates_reset_button .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_settings_templates_reset_button .apbct_success").hide(300)},2e3),document.addEventListener("cleantalkModalClosed",function(t){document.location.reload()}),setTimeout(function(){cleantalkModal.close()},2e3)):jQuery(""+t.data+"
").insertAfter(jQuery(c))}})}),jQuery("#apbct_button__sync").on("click",function(){apbct_admin_sendAJAX({action:"apbct_sync"},{timeout:25e3,button:document.getElementById("apbct_button__sync"),spinner:jQuery("#apbct_button__sync .apbct_preloader_button"),callback:function(t,e,n,a){jQuery("#apbct_button__sync .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_button__sync .apbct_success").hide(300)},2e3),t.reload&&(ctSettingsPage.key_changed?(jQuery(".key_changed_sync").hide(300),jQuery(".key_changed_success").show(300),setTimeout(function(){document.location.reload()},3e3)):document.location.reload())}})}),ctSettingsPage.key_changed&&jQuery("#apbct_button__sync").click(),jQuery(document).on("click",".apbct_settings-long_description---show",function(){apbctSettingsShowDescription(self=jQuery(this),self.attr("setting"))}),(jQuery("#cleantalk_notice_renew").length||jQuery("#cleantalk_notice_trial").length)&&apbctBannerCheck(),jQuery(document).on("change","#apbct_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#apbct_settings_templates_export_name").show():jQuery(this).parent().parent().find("#apbct_settings_templates_export_name").hide()}),apbctSaveButtonPosition();let t;window.addEventListener("scroll",function(){clearTimeout(t),t=setTimeout(function(){apbctSaveButtonPosition()},50),apbctNavigationMenuPosition()}),jQuery("#ct_adv_showhide a").on("click",apbctSaveButtonPosition),jQuery("#apbct-change-account-email").on("click",function(t){t.preventDefault();var t=jQuery(this),e=jQuery("#apbct-account-email"),n=e.text();t.toggleClass("active"),t.hasClass("active")?(t.text(t.data("save-text")),e.attr("contenteditable","true"),e.on("keydown",function(t){"Enter"===t.code&&t.preventDefault()}),e.on("input",function(t){"insertParagraph"===t.inputType&&t.preventDefault()})):(apbct_admin_sendAJAX({action:"apbct_update_account_email",accountEmail:n},{timeout:5e3,callback:function(t,e,n,a){void 0!==t.error&&jQuery("#apbct-account-email").css("border-color","red")}}),e.attr("contenteditable","false"),t.text(t.data("default-text")))}),jQuery("#apbct_setting_apikey").on("input",function(){var t=jQuery(this).val(),e=(jQuery("#apbct_settings__key_line__save_settings").off("click"),""!==t&&null===t.match(/^[a-z\d]{8,30}\s*$/));jQuery("#apbct_settings__key_is_bad").hide(),jQuery("#apbct_showApiKey").hide(),jQuery("#apbct_settings__account_name_ob").hide(),""===t?(jQuery("#apbct_button__key_line__save_changes_wrapper").hide(),jQuery("#apbct_button__get_key_auto").length&&jQuery("#apbct_button__get_key_auto__wrapper").show()):(jQuery("#apbct_button__key_line__save_changes_wrapper").show(),jQuery("#apbct_button__get_key_auto__wrapper").hide(),e&&jQuery("#apbct_settings__key_line__save_settings").on("click",function(t){t.preventDefault(),jQuery("#apbct_settings__key_is_bad").show(),apbctHighlightElement("apbct_setting_apikey",3)}))}),jQuery("#apbct_setting_apikey").val()&&ctSettingsPage.key_is_ok&&jQuery("#apbct_button__get_key_auto__wrapper").hide(),ctSettingsPage.key_is_ok||ctSettingsPage.ip_license||jQuery('button.cleantalk_link[value="save_changes"]').on("click",function(t){t.preventDefault(),jQuery("#sync_required_notice").length||jQuery(""+t.desc+"
"),jQuery(document).on("click",c))}},n)}function apbctNavigationMenuPosition(){var t,e,n=document.querySelector("#apbct_hidden_section_nav ul"),a=document.querySelector("#apbct_settings__button_section");n&&a&&(t=window.scrollY,e=window.innerWidth,1e3"+t.data+"
").insertAfter(jQuery(c))}})}}),jQuery(document).on("click","#apbct_settings_templates_export_button",function(){jQuery("#apbct-ajax-result").remove();var t=jQuery("option:selected",jQuery("#apbct_settings_templates_export")),e=jQuery("#apbct_settings_templates_export_name");let n={};if(e.css("border-color","inherit"),void 0===t.data("id"))console.log('Attribute "data-id" not set for the option.');else{if("new_template"===t.data("id")){var a=e.val();if(""===a)return void e.css("border-color","red");n={template_name:a}}else n={template_id:t.data("id")};let c=this;apbct_admin_sendAJAX({action:"settings_templates_export",data:n},{timeout:25e3,button:c,spinner:jQuery("#apbct_settings_templates_export_button .apbct_preloader_button"),notJson:!0,callback:function(t,e,n,a){t.success?(jQuery(""+t.data+"
").insertAfter(jQuery(c)),jQuery("#apbct_settings_templates_export_button .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_settings_templates_export_button .apbct_success").hide(300)},2e3),document.addEventListener("cleantalkModalClosed",function(t){document.location.reload()}),setTimeout(function(){cleantalkModal.close()},2e3)):jQuery(""+t.data+"
").insertAfter(jQuery(c))}})}}),jQuery(document).on("click","#apbct_settings_templates_reset_button",function(){let c=this;apbct_admin_sendAJAX({action:"settings_templates_reset"},{timeout:25e3,button:c,spinner:jQuery("#apbct_settings_templates_reset_button .apbct_preloader_button"),notJson:!0,callback:function(t,e,n,a){t.success?(jQuery(""+t.data+"
").insertAfter(jQuery(c)),jQuery("#apbct_settings_templates_reset_button .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_settings_templates_reset_button .apbct_success").hide(300)},2e3),document.addEventListener("cleantalkModalClosed",function(t){document.location.reload()}),setTimeout(function(){cleantalkModal.close()},2e3)):jQuery(""+t.data+"
").insertAfter(jQuery(c))}})}),jQuery("#apbct_button__sync").on("click",function(){apbct_admin_sendAJAX({action:"apbct_sync"},{timeout:25e3,button:document.getElementById("apbct_button__sync"),spinner:jQuery("#apbct_button__sync .apbct_preloader_button"),callback:function(t,e,n,a){jQuery("#apbct_button__sync .apbct_success").show(300),setTimeout(function(){jQuery("#apbct_button__sync .apbct_success").hide(300)},2e3),t.reload&&(ctSettingsPage.key_changed?(jQuery(".key_changed_sync").hide(300),jQuery(".key_changed_success").show(300),setTimeout(function(){document.location.reload()},3e3)):document.location.reload())}})}),ctSettingsPage.key_changed&&jQuery("#apbct_button__sync").click(),jQuery(document).on("click",".apbct_settings-long_description---show",function(){apbctSettingsShowDescription(self=jQuery(this),self.attr("setting"))}),(jQuery("#cleantalk_notice_renew").length||jQuery("#cleantalk_notice_trial").length)&&apbctBannerCheck(),jQuery(document).on("change","#apbct_settings_templates_export",function(){"new_template"===jQuery("option:selected",this).data("id")?jQuery(this).parent().parent().find("#apbct_settings_templates_export_name").show():jQuery(this).parent().parent().find("#apbct_settings_templates_export_name").hide()}),apbctSaveButtonPosition();let t;window.addEventListener("scroll",function(){clearTimeout(t),t=setTimeout(function(){apbctSaveButtonPosition()},50),apbctNavigationMenuPosition()}),jQuery("#ct_adv_showhide a").on("click",apbctSaveButtonPosition),jQuery("#apbct-change-account-email").on("click",function(t){t.preventDefault();var t=jQuery(this),e=jQuery("#apbct-account-email"),n=e.text();t.toggleClass("active"),t.hasClass("active")?(t.text(t.data("save-text")),e.attr("contenteditable","true"),e.on("keydown",function(t){"Enter"===t.code&&t.preventDefault()}),e.on("input",function(t){"insertParagraph"===t.inputType&&t.preventDefault()})):(apbct_admin_sendAJAX({action:"apbct_update_account_email",accountEmail:n},{timeout:5e3,callback:function(t,e,n,a){void 0!==t.error&&jQuery("#apbct-account-email").css("border-color","red")}}),e.attr("contenteditable","false"),t.text(t.data("default-text")))}),jQuery("#apbct_setting_apikey").on("input",function(){var t=jQuery(this).val(),e=(jQuery("#apbct_settings__key_line__save_settings").off("click"),""!==t&&null===t.match(/^[a-z\d]{8,30}\s*$/));jQuery("#apbct_settings__key_is_bad").hide(),jQuery("#apbct_showApiKey").hide(),jQuery("#apbct_settings__account_name_ob").hide(),""===t?(jQuery("#apbct_button__key_line__save_changes_wrapper").hide(),jQuery("#apbct_button__get_key_auto").length&&jQuery("#apbct_button__get_key_auto__wrapper").show()):(jQuery("#apbct_button__key_line__save_changes_wrapper").show(),jQuery("#apbct_button__get_key_auto__wrapper").hide(),e&&jQuery("#apbct_settings__key_line__save_settings").on("click",function(t){t.preventDefault(),jQuery("#apbct_settings__key_is_bad").show(),apbctHighlightElement("apbct_setting_apikey",3)}))}),jQuery("#apbct_setting_apikey").val()&&ctSettingsPage.key_is_ok&&jQuery("#apbct_button__get_key_auto__wrapper").hide(),ctSettingsPage.key_is_ok||ctSettingsPage.ip_license||jQuery('button.cleantalk_link[value="save_changes"]').on("click",function(t){t.preventDefault(),jQuery("#sync_required_notice").length||jQuery("' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_import_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_import_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Export settings\n jQuery( document ).on('click', '#apbct_settings_templates_export_button', function() {\n jQuery('#apbct-ajax-result').remove();\n let optionSelected = jQuery('option:selected', jQuery('#apbct_settings_templates_export'));\n let templateNameInput = jQuery('#apbct_settings_templates_export_name');\n let data = {};\n templateNameInput.css('border-color', 'inherit');\n if ( typeof optionSelected.data('id') === 'undefined' ) {\n console.log( 'Attribute \"data-id\" not set for the option.' );\n return;\n }\n if ( optionSelected.data('id') === 'new_template' ) {\n let templateName = templateNameInput.val();\n if ( templateName === '' ) {\n templateNameInput.css('border-color', 'red');\n return;\n }\n data = {\n 'template_name': templateName,\n };\n } else {\n data = {\n 'template_id': optionSelected.data('id'),\n };\n }\n let button = this;\n apbct_admin_sendAJAX(\n {action: 'settings_templates_export', data: data},\n {\n timeout: 25000,\n button: button,\n spinner: jQuery('#apbct_settings_templates_export_button .apbct_preloader_button' ),\n notJson: true,\n callback: function(result, data, params, obj) {\n if (result.success) {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_export_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_export_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Reset settings\n jQuery( document ).on('click', '#apbct_settings_templates_reset_button', function() {\n let button = this;\n apbct_admin_sendAJAX(\n {action: 'settings_templates_reset'},\n {\n timeout: 25000,\n button: button,\n spinner: jQuery('#apbct_settings_templates_reset_button .apbct_preloader_button' ),\n notJson: true,\n callback: function(result, data, params, obj) {\n if (result.success) {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_reset_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_reset_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Sync button\n jQuery('#apbct_button__sync').on('click', function() {\n apbct_admin_sendAJAX(\n {action: 'apbct_sync'},\n {\n timeout: 25000,\n button: document.getElementById('apbct_button__sync' ),\n spinner: jQuery('#apbct_button__sync .apbct_preloader_button' ),\n callback: function(result, data, params, obj) {\n jQuery('#apbct_button__sync .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_button__sync .apbct_success').hide(300);\n }, 2000);\n if (result.reload) {\n if ( ctSettingsPage.key_changed ) {\n jQuery('.key_changed_sync').hide(300);\n jQuery('.key_changed_success').show(300);\n setTimeout(function() {\n document.location.reload();\n }, 3000);\n } else {\n document.location.reload();\n }\n }\n },\n },\n );\n });\n\n if ( ctSettingsPage.key_changed ) {\n jQuery('#apbct_button__sync').click();\n }\n\n jQuery(document).on('click', '.apbct_settings-long_description---show', function() {\n self = jQuery(this);\n apbctSettingsShowDescription(self, self.attr('setting'));\n });\n\n if (jQuery('#cleantalk_notice_renew').length || jQuery('#cleantalk_notice_trial').length) {\n apbctBannerCheck();\n }\n\n jQuery(document).on('change', '#apbct_settings_templates_export', function() {\n let optionSelected = jQuery('option:selected', this);\n if ( optionSelected.data('id') === 'new_template' ) {\n jQuery(this).parent().parent().find('#apbct_settings_templates_export_name').show();\n } else {\n jQuery(this).parent().parent().find('#apbct_settings_templates_export_name').hide();\n }\n });\n\n apbctSaveButtonPosition();\n let debounceTimer;\n window.addEventListener('scroll', function() {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(function() {\n apbctSaveButtonPosition();\n }, 50);\n apbctNavigationMenuPosition();\n });\n jQuery('#ct_adv_showhide a').on('click', apbctSaveButtonPosition);\n\n\n /**\n * Change cleantalk account email\n */\n jQuery('#apbct-change-account-email').on('click', function(e) {\n e.preventDefault();\n\n let $this = jQuery(this);\n let accountEmailField = jQuery('#apbct-account-email');\n let accountEmail = accountEmailField.text();\n\n $this.toggleClass('active');\n\n if ($this.hasClass('active')) {\n $this.text($this.data('save-text'));\n accountEmailField.attr('contenteditable', 'true');\n accountEmailField.on('keydown', function(e) {\n if (e.code === 'Enter') {\n e.preventDefault();\n }\n });\n accountEmailField.on('input', function(e) {\n if (e.inputType === 'insertParagraph') {\n e.preventDefault();\n }\n });\n } else {\n apbct_admin_sendAJAX(\n {\n action: 'apbct_update_account_email',\n accountEmail: accountEmail,\n },\n {\n timeout: 5000,\n callback: function(result, data, params, obj) {\n if (result.error !== undefined) {\n jQuery('#apbct-account-email').css('border-color', 'red');\n }\n },\n },\n );\n\n accountEmailField.attr('contenteditable', 'false');\n $this.text($this.data('default-text'));\n }\n });\n\n /**\n * Validate apkikey and hide get auto btn\n */\n jQuery('#apbct_setting_apikey').on('input', function() {\n let enteredValue = jQuery(this).val();\n jQuery('#apbct_settings__key_line__save_settings').off('click');\n let keyBad = enteredValue !== '' && enteredValue.match(/^[a-z\\d]{8,30}\\s*$/) === null;\n jQuery('#apbct_settings__key_is_bad').hide();\n jQuery('#apbct_showApiKey').hide();\n jQuery('#apbct_settings__account_name_ob').hide();\n if (enteredValue === '') {\n jQuery('#apbct_button__key_line__save_changes_wrapper').hide();\n if (jQuery('#apbct_button__get_key_auto').length) {\n jQuery('#apbct_button__get_key_auto__wrapper').show();\n }\n } else {\n jQuery('#apbct_button__key_line__save_changes_wrapper').show();\n jQuery('#apbct_button__get_key_auto__wrapper').hide();\n if (keyBad) {\n jQuery('#apbct_settings__key_line__save_settings').on('click',\n function(e) {\n e.preventDefault();\n jQuery('#apbct_settings__key_is_bad').show();\n apbctHighlightElement('apbct_setting_apikey', 3);\n },\n );\n }\n }\n });\n\n if ( jQuery('#apbct_setting_apikey').val() && ctSettingsPage.key_is_ok) {\n jQuery('#apbct_button__get_key_auto__wrapper').hide();\n }\n\n /**\n * Handle synchronization errors when key is no ok to force user check the key and restart the sync\n */\n if ( !ctSettingsPage.key_is_ok && !ctSettingsPage.ip_license ) {\n jQuery('button.cleantalk_link[value=\"save_changes\"]').on('click',\n function(e) {\n e.preventDefault();\n if (!jQuery('#sync_required_notice').length) {\n jQuery( ''+result.desc+'
');\n\n jQuery(document).on('click', removeDescFunc);\n }\n },\n },\n obj,\n );\n}\n\n/**\n * Set position for navigation menu\n * @return {void}\n */\nfunction apbctNavigationMenuPosition() {\n const navBlock = document.querySelector('#apbct_hidden_section_nav ul');\n const rightBtnSave = document.querySelector('#apbct_settings__button_section');\n if (!navBlock || !rightBtnSave) {\n return;\n }\n const scrollPosition = window.scrollY;\n const windowWidth = window.innerWidth;\n if (scrollPosition > 1000) {\n navBlock.style.position = 'fixed';\n rightBtnSave.style.position = 'fixed';\n } else {\n navBlock.style.position = 'static';\n rightBtnSave.style.position = 'static';\n }\n\n if (windowWidth < 768) {\n rightBtnSave.style.position = 'fixed';\n }\n}\n\n/**\n * Set position for save button, hide it if scrolled to the bottom\n * @return {void}\n */\nfunction apbctSaveButtonPosition() {\n if (\n document.getElementById('apbct_settings__before_advanced_settings') === null ||\n document.getElementById('apbct_settings__after_advanced_settings') === null ||\n document.getElementById('apbct_settings__button_section') === null ||\n document.getElementById('apbct_settings__advanced_settings') === null ||\n document.getElementById('apbct_hidden_section_nav') === null\n ) {\n return;\n }\n\n if (!ctSettingsPage.key_is_ok && !ctSettingsPage.ip_license) {\n jQuery('#apbct_settings__main_save_button').hide();\n return;\n }\n\n const additionalSaveButton =\n document.querySelector('#apbct_settings__button_section, cleantalk_link[value=\"save_changes\"]');\n if (!additionalSaveButton) {\n return;\n }\n\n const scrollPosition = window.scrollY;\n const documentHeight = document.documentElement.scrollHeight;\n const windowHeight = window.innerHeight;\n const threshold = 800;\n if (scrollPosition + windowHeight >= documentHeight - threshold) {\n additionalSaveButton.style.display = 'none';\n } else {\n additionalSaveButton.style.display = 'block';\n }\n\n const advSettingsBlock = document.getElementById('apbct_settings__advanced_settings');\n const mainSaveButton = document.getElementById('apbct_settings__block_main_save_button');\n if (!advSettingsBlock || !mainSaveButton) {\n return;\n }\n\n if (advSettingsBlock.style.display == 'none') {\n mainSaveButton.classList.remove('apbct_settings__position_main_save_button');\n } else {\n mainSaveButton.classList.add('apbct_settings__position_main_save_button');\n }\n}\n\n/**\n * Hightlights element\n *\n * @param {string} id\n * @param {int} times\n */\nfunction apbctHighlightElement(id, times) {\n times = times-1 || 0;\n let keyField = jQuery('#'+id);\n jQuery('html, body').animate({scrollTop: keyField.offset().top - 100}, 'slow');\n keyField.addClass('apbct_highlighted');\n keyField.animate({opacity: 0}, 400, 'linear', function() {\n keyField.animate({opacity: 1}, 400, 'linear', function() {\n if (times>0) {\n apbctHighlightElement(id, times);\n } else {\n keyField.removeClass('apbct_highlighted');\n }\n });\n });\n}\n\n/**\n * Open modal to create support user\n */\nfunction apbctCreateSupportUser() { // eslint-disable-line no-unused-vars\n const localTextArray = ctSettingsPage.support_user_creation_msg_array;\n cleantalkModal.loaded = false;\n cleantalkModal.open(false);\n cleantalkModal.confirm(\n localTextArray.confirm_header,\n localTextArray.confirm_text,\n '',\n apbctCreateSupportUserCallback,\n );\n}\n\n/**\n * Create support user\n */\nfunction apbctCreateSupportUserCallback() {\n const preloader = jQuery('#apbct_summary_and_support-create_user_button_preloader');\n preloader.css('display', 'block');\n apbct_admin_sendAJAX(\n {\n action: 'apbct_action__create_support_user',\n },\n {\n timeout: 10000,\n notJson: 1,\n callback: function(result, data, params, obj) {\n let localTextArray = ctSettingsPage.support_user_creation_msg_array;\n let popupMsg = localTextArray.default_error;\n const responseValid = (\n typeof result === 'object' &&\n result.hasOwnProperty('success') &&\n result.hasOwnProperty('user_created') &&\n result.hasOwnProperty('mail_sent') &&\n result.hasOwnProperty('cron_updated') &&\n result.hasOwnProperty('user_data') &&\n result.hasOwnProperty('result_code') &&\n typeof result.user_data === 'object' &&\n result.user_data.hasOwnProperty('username') &&\n result.user_data.hasOwnProperty('email') &&\n result.user_data.hasOwnProperty('password')\n );\n if (responseValid && result.success) {\n if (result.user_created) {\n let mailSentMsg = '';\n let successCreationMsg = '';\n let cronUpdatedMsg = localTextArray.cron_updated;\n\n if (result.mail_sent) {\n mailSentMsg = localTextArray.mail_sent_success;\n } else {\n mailSentMsg = localTextArray.mail_sent_error;\n }\n\n if (result.result_code === 0) {\n successCreationMsg = localTextArray.user_updated;\n } else {\n successCreationMsg = localTextArray.user_created;\n }\n\n jQuery('#apbct_summary_and_support-user_creation_username').text(result.user_data.username);\n jQuery('#apbct_summary_and_support-user_creation_email').text(result.user_data.email);\n jQuery('#apbct_summary_and_support-user_creation_password').text(result.user_data.password);\n jQuery('#apbct_summary_and_support-user_creation_mail_sent').text(mailSentMsg);\n jQuery('#apbct_summary_and_support-user_creation_title').text(successCreationMsg);\n jQuery('#apbct_summary_and_support-user_creation_cron_updated').text(cronUpdatedMsg);\n jQuery('.apbct_summary_and_support-user_creation_result').css('display', 'block');\n const createUserButton = jQuery('#apbct_summary_and_support-create_user_button');\n createUserButton.attr('disabled', true);\n createUserButton.css('color', 'rgba(93,89,86,0.55)');\n createUserButton.css('background', '#cccccc');\n preloader.css('display', 'none');\n return;\n } else {\n if (result.result_code === -2) {\n popupMsg = localTextArray.invalid_permission;\n } else if (result.result_code === -1) {\n popupMsg = localTextArray.unknown_creation_error;\n } else if (result.result_code === -4) {\n popupMsg = localTextArray.on_cooldown;\n } else if (result.result_code === -5) {\n popupMsg = localTextArray.email_is_busy;\n }\n }\n }\n preloader.css('display', 'none');\n cleantalkModal.loaded = popupMsg;\n cleantalkModal.open();\n },\n errorOutput: function(msg) {\n preloader.css('display', 'none');\n cleantalkModal.loaded = msg;\n cleantalkModal.open();\n },\n },\n );\n}\n"],"names":["__","wp","i18n","handleAnchorDetection","anchor","document","querySelector","style","display","apbctExceptedShowHide","scrollToAnchor","anchorId","targetElement","scrollIntoView","block","apbctManageEmailEncoderCustomTextField","replacingText","let","replacingTextWrapperSub","parentElement","querySelectorAll","forEach","elem","checked","value","classList","add","addEventListener","event","target","remove","apbctManageAntiCrawlerDependency","antiCrawler","spamFireWall","childrens","getAttribute","apbctSettingsDependencies","apbctBannerCheck","bannerChecker","setInterval","apbct_admin_sendAJAX","action","callback","result","data","params","obj","close_renew_banner","jQuery","length","hide","clearInterval","apbctGetElems","elems","i","len","split","tmp","apbctGetElemsNative","out","arr","getElementById","push","key","getElementsByClassName","apbctShowHideElem","each","label","next","prev","is","show","element","toHide","index","indexOf","splice","toHideElem","apbctShowRequiredGroups","id","required","originEvent","preventDefault","dispatchEvent","constructor","type","ids","enable","isNaN","state","removeAttribute","setAttribute","apbctSettingsDependenciesGetState","onApbctCookieTypeChange","switchToMode","toString","cleantalkModal","loaded","open","confirm","decision","click","apbctSettingsShowDescription","settingId","removeDescFunc","e","callerIsPopup","parent","callerIsHideCross","hasClass","off","after","append","css","top","position","left","setting_id","spinner","children","title","desc","empty","on","apbctNavigationMenuPosition","scrollPosition","windowWidth","navBlock","rightBtnSave","window","scrollY","innerWidth","apbctSaveButtonPosition","advSettingsBlock","mainSaveButton","ctSettingsPage","key_is_ok","ip_license","additionalSaveButton","documentHeight","documentElement","scrollHeight","innerHeight","apbctHighlightElement","times","keyField","animate","scrollTop","offset","addClass","opacity","removeClass","apbctCreateSupportUser","localTextArray","support_user_creation_msg_array","confirm_header","confirm_text","apbctCreateSupportUserCallback","preloader","timeout","notJson","popupMsg","default_error","hasOwnProperty","user_data","success","user_created","mailSentMsg","successCreationMsg","cronUpdatedMsg","cron_updated","createUserButton","mail_sent","mail_sent_success","mail_sent_error","result_code","user_updated","text","username","email","password","attr","invalid_permission","unknown_creation_error","on_cooldown","email_is_busy","errorOutput","msg","ready","getComputedStyle","direction","this","val","optionSelected","console","log","template_id","template_name","settings","button","insertAfter","setTimeout","location","reload","close","templateNameInput","templateName","key_changed","self","find","debounceTimer","clearTimeout","$this","accountEmailField","accountEmail","toggleClass","code","inputType","undefined","error","enteredValue","keyBad","match","customUploader","media","library","multiple","image","get","first","toJSON","url","src","adjust","hash","substring","sessionStorage","setItem"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cleantalk-admin-settings-page.min.js","sources":["cleantalk-admin-settings-page.js"],"sourcesContent":["const {__} = wp.i18n;\njQuery(document).ready(function() {\n // Crunch for Right to Left direction languages\n if (document.getElementsByClassName('apbct_settings-title')[0]) {\n if (getComputedStyle(document.getElementsByClassName('apbct_settings-title')[0]).direction === 'rtl') {\n jQuery('.apbct_switchers').css('text-align', 'right');\n }\n }\n\n // Show/Hide access key\n jQuery('#apbct_showApiKey').on('click', function(e) {\n e.preventDefault();\n jQuery(this).hide();\n jQuery('.apbct_settings-field--api_key').val(jQuery('.apbct_settings-field--api_key').attr('key'));\n jQuery('.apbct_settings-field--api_key+div').css('display', 'inline');\n });\n\n /**\n * Validate apikey and hide get auto btn\n */\n jQuery( document ).on('click', '#apbct_settings_templates_import_button', function() {\n jQuery('#apbct-ajax-result').remove();\n let optionSelected = jQuery('option:selected', jQuery('#apbct_settings_templates_import'));\n let templateNameInput = jQuery('#apbct_settings_templates_import_name');\n templateNameInput.css('border-color', 'inherit');\n if ( typeof optionSelected.data('id') === 'undefined' ) {\n console.log( 'Attribute \"data-id\" not set for the option.' );\n return;\n }\n let data = {\n 'template_id': optionSelected.data('id'),\n 'template_name': optionSelected.data('name'),\n 'settings': optionSelected.data('settings'),\n };\n let button = this;\n apbct_admin_sendAJAX(\n {action: 'settings_templates_import', data: data},\n {\n timeout: 25000,\n button: button,\n spinner: jQuery('#apbct_settings_templates_import_button .apbct_preloader_button' ),\n notJson: true,\n callback: function(result, data, params, obj) {\n if (result.success) {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_import_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_import_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Export settings\n jQuery( document ).on('click', '#apbct_settings_templates_export_button', function() {\n jQuery('#apbct-ajax-result').remove();\n let optionSelected = jQuery('option:selected', jQuery('#apbct_settings_templates_export'));\n let templateNameInput = jQuery('#apbct_settings_templates_export_name');\n let data = {};\n templateNameInput.css('border-color', 'inherit');\n if ( typeof optionSelected.data('id') === 'undefined' ) {\n console.log( 'Attribute \"data-id\" not set for the option.' );\n return;\n }\n if ( optionSelected.data('id') === 'new_template' ) {\n let templateName = templateNameInput.val();\n if ( templateName === '' ) {\n templateNameInput.css('border-color', 'red');\n return;\n }\n data = {\n 'template_name': templateName,\n };\n } else {\n data = {\n 'template_id': optionSelected.data('id'),\n };\n }\n let button = this;\n apbct_admin_sendAJAX(\n {action: 'settings_templates_export', data: data},\n {\n timeout: 25000,\n button: button,\n spinner: jQuery('#apbct_settings_templates_export_button .apbct_preloader_button' ),\n notJson: true,\n callback: function(result, data, params, obj) {\n if (result.success) {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_export_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_export_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Reset settings\n jQuery( document ).on('click', '#apbct_settings_templates_reset_button', function() {\n let button = this;\n apbct_admin_sendAJAX(\n {action: 'settings_templates_reset'},\n {\n timeout: 25000,\n button: button,\n spinner: jQuery('#apbct_settings_templates_reset_button .apbct_preloader_button' ),\n notJson: true,\n callback: function(result, data, params, obj) {\n if (result.success) {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n jQuery('#apbct_settings_templates_reset_button .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_settings_templates_reset_button .apbct_success').hide(300);\n }, 2000);\n document.addEventListener('cleantalkModalClosed', function( e ) {\n document.location.reload();\n });\n setTimeout(function() {\n cleantalkModal.close();\n }, 2000);\n } else {\n jQuery( '' + result.data + '
' )\n .insertAfter( jQuery(button) );\n }\n },\n },\n );\n });\n\n // Sync button\n jQuery('#apbct_button__sync').on('click', function() {\n apbct_admin_sendAJAX(\n {action: 'apbct_sync'},\n {\n timeout: 25000,\n button: document.getElementById('apbct_button__sync' ),\n spinner: jQuery('#apbct_button__sync .apbct_preloader_button' ),\n callback: function(result, data, params, obj) {\n jQuery('#apbct_button__sync .apbct_success').show(300);\n setTimeout(function() {\n jQuery('#apbct_button__sync .apbct_success').hide(300);\n }, 2000);\n if (result.reload) {\n if ( ctSettingsPage.key_changed ) {\n jQuery('.key_changed_sync').hide(300);\n jQuery('.key_changed_success').show(300);\n setTimeout(function() {\n document.location.reload();\n }, 3000);\n } else {\n document.location.reload();\n }\n }\n },\n },\n );\n });\n\n if ( ctSettingsPage.key_changed ) {\n jQuery('#apbct_button__sync').click();\n }\n\n jQuery(document).on('click', '.apbct_settings-long_description---show', function() {\n self = jQuery(this);\n apbctSettingsShowDescription(self, self.attr('setting'));\n });\n\n if (jQuery('#cleantalk_notice_renew').length || jQuery('#cleantalk_notice_trial').length) {\n apbctBannerCheck();\n }\n\n jQuery(document).on('change', '#apbct_settings_templates_export', function() {\n let optionSelected = jQuery('option:selected', this);\n if ( optionSelected.data('id') === 'new_template' ) {\n jQuery(this).parent().parent().find('#apbct_settings_templates_export_name').show();\n } else {\n jQuery(this).parent().parent().find('#apbct_settings_templates_export_name').hide();\n }\n });\n\n apbctSaveButtonPosition();\n let debounceTimer;\n window.addEventListener('scroll', function() {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(function() {\n apbctSaveButtonPosition();\n }, 50);\n apbctNavigationMenuPosition();\n });\n jQuery('#ct_adv_showhide a').on('click', apbctSaveButtonPosition);\n\n\n /**\n * Change cleantalk account email\n */\n jQuery('#apbct-change-account-email').on('click', function(e) {\n e.preventDefault();\n\n let $this = jQuery(this);\n let accountEmailField = jQuery('#apbct-account-email');\n let accountEmail = accountEmailField.text();\n\n $this.toggleClass('active');\n\n if ($this.hasClass('active')) {\n $this.text($this.data('save-text'));\n accountEmailField.attr('contenteditable', 'true');\n accountEmailField.on('keydown', function(e) {\n if (e.code === 'Enter') {\n e.preventDefault();\n }\n });\n accountEmailField.on('input', function(e) {\n if (e.inputType === 'insertParagraph') {\n e.preventDefault();\n }\n });\n } else {\n apbct_admin_sendAJAX(\n {\n action: 'apbct_update_account_email',\n accountEmail: accountEmail,\n },\n {\n timeout: 5000,\n callback: function(result, data, params, obj) {\n if (result.error !== undefined) {\n jQuery('#apbct-account-email').css('border-color', 'red');\n }\n },\n },\n );\n\n accountEmailField.attr('contenteditable', 'false');\n $this.text($this.data('default-text'));\n }\n });\n\n /**\n * Validate apkikey and hide get auto btn\n */\n jQuery('#apbct_setting_apikey').on('input', function() {\n let enteredValue = jQuery(this).val();\n jQuery('#apbct_settings__key_line__save_settings').off('click');\n let keyBad = enteredValue !== '' && enteredValue.match(/^[a-z\\d]{8,30}\\s*$/) === null;\n jQuery('#apbct_settings__key_is_bad').hide();\n jQuery('#apbct_showApiKey').hide();\n jQuery('#apbct_settings__account_name_ob').hide();\n if (enteredValue === '') {\n jQuery('#apbct_button__key_line__save_changes_wrapper').hide();\n if (jQuery('#apbct_button__get_key_auto').length) {\n jQuery('#apbct_button__get_key_auto__wrapper').show();\n }\n } else {\n jQuery('#apbct_button__key_line__save_changes_wrapper').show();\n jQuery('#apbct_button__get_key_auto__wrapper').hide();\n if (keyBad) {\n jQuery('#apbct_settings__key_line__save_settings').on('click',\n function(e) {\n e.preventDefault();\n jQuery('#apbct_settings__key_is_bad').show();\n apbctHighlightElement('apbct_setting_apikey', 3);\n },\n );\n }\n }\n });\n\n if ( jQuery('#apbct_setting_apikey').val() && ctSettingsPage.key_is_ok) {\n jQuery('#apbct_button__get_key_auto__wrapper').hide();\n }\n\n /**\n * Handle synchronization errors when key is no ok to force user check the key and restart the sync\n */\n if ( !ctSettingsPage.key_is_ok && !ctSettingsPage.ip_license ) {\n jQuery('button.cleantalk_link[value=\"save_changes\"]').on('click',\n function(e) {\n e.preventDefault();\n if (!jQuery('#sync_required_notice').length) {\n jQuery( ''+result.desc+'
');\n\n jQuery(document).on('click', removeDescFunc);\n }\n },\n },\n obj,\n );\n}\n\n/**\n * Set position for navigation menu\n * @return {void}\n */\nfunction apbctNavigationMenuPosition() {\n const navBlock = document.querySelector('#apbct_hidden_section_nav ul');\n const rightBtnSave = document.querySelector('#apbct_settings__button_section');\n if (!navBlock || !rightBtnSave) {\n return;\n }\n const scrollPosition = window.scrollY;\n const windowWidth = window.innerWidth;\n if (scrollPosition > 1000) {\n navBlock.style.position = 'fixed';\n rightBtnSave.style.position = 'fixed';\n } else {\n navBlock.style.position = 'static';\n rightBtnSave.style.position = 'static';\n }\n\n if (windowWidth < 768) {\n rightBtnSave.style.position = 'fixed';\n }\n}\n\n/**\n * Set position for save button, hide it if scrolled to the bottom\n * @return {void}\n */\nfunction apbctSaveButtonPosition() {\n if (\n document.getElementById('apbct_settings__before_advanced_settings') === null ||\n document.getElementById('apbct_settings__after_advanced_settings') === null ||\n document.getElementById('apbct_settings__button_section') === null ||\n document.getElementById('apbct_settings__advanced_settings') === null ||\n document.getElementById('apbct_hidden_section_nav') === null\n ) {\n return;\n }\n\n if (!ctSettingsPage.key_is_ok && !ctSettingsPage.ip_license) {\n jQuery('#apbct_settings__main_save_button').hide();\n return;\n }\n\n const additionalSaveButton =\n document.querySelector('#apbct_settings__button_section, cleantalk_link[value=\"save_changes\"]');\n if (!additionalSaveButton) {\n return;\n }\n\n const scrollPosition = window.scrollY;\n const documentHeight = document.documentElement.scrollHeight;\n const windowHeight = window.innerHeight;\n const threshold = 800;\n if (scrollPosition + windowHeight >= documentHeight - threshold) {\n additionalSaveButton.style.display = 'none';\n } else {\n additionalSaveButton.style.display = 'block';\n }\n\n const advSettingsBlock = document.getElementById('apbct_settings__advanced_settings');\n const mainSaveButton = document.getElementById('apbct_settings__block_main_save_button');\n if (!advSettingsBlock || !mainSaveButton) {\n return;\n }\n\n if (advSettingsBlock.style.display == 'none') {\n mainSaveButton.classList.remove('apbct_settings__position_main_save_button');\n } else {\n mainSaveButton.classList.add('apbct_settings__position_main_save_button');\n }\n}\n\n/**\n * Hightlights element\n *\n * @param {string} id\n * @param {int} times\n */\nfunction apbctHighlightElement(id, times) {\n times = times-1 || 0;\n let keyField = jQuery('#'+id);\n jQuery('html, body').animate({scrollTop: keyField.offset().top - 100}, 'slow');\n keyField.addClass('apbct_highlighted');\n keyField.animate({opacity: 0}, 400, 'linear', function() {\n keyField.animate({opacity: 1}, 400, 'linear', function() {\n if (times>0) {\n apbctHighlightElement(id, times);\n } else {\n keyField.removeClass('apbct_highlighted');\n }\n });\n });\n}\n\n/**\n * Open modal to create support user\n */\nfunction apbctCreateSupportUser() { // eslint-disable-line no-unused-vars\n const localTextArray = ctSettingsPage.support_user_creation_msg_array;\n cleantalkModal.loaded = false;\n cleantalkModal.open(false);\n cleantalkModal.confirm(\n localTextArray.confirm_header,\n localTextArray.confirm_text,\n '',\n apbctCreateSupportUserCallback,\n );\n}\n\n/**\n * Create support user\n */\nfunction apbctCreateSupportUserCallback() {\n const preloader = jQuery('#apbct_summary_and_support-create_user_button_preloader');\n preloader.css('display', 'block');\n apbct_admin_sendAJAX(\n {\n action: 'apbct_action__create_support_user',\n },\n {\n timeout: 10000,\n notJson: 1,\n callback: function(result, data, params, obj) {\n let localTextArray = ctSettingsPage.support_user_creation_msg_array;\n let popupMsg = localTextArray.default_error;\n const responseValid = (\n typeof result === 'object' &&\n result.hasOwnProperty('success') &&\n result.hasOwnProperty('user_created') &&\n result.hasOwnProperty('mail_sent') &&\n result.hasOwnProperty('cron_updated') &&\n result.hasOwnProperty('user_data') &&\n result.hasOwnProperty('result_code') &&\n typeof result.user_data === 'object' &&\n result.user_data.hasOwnProperty('username') &&\n result.user_data.hasOwnProperty('email') &&\n result.user_data.hasOwnProperty('password')\n );\n if (responseValid && result.success) {\n if (result.user_created) {\n let mailSentMsg = '';\n let successCreationMsg = '';\n let cronUpdatedMsg = localTextArray.cron_updated;\n\n if (result.mail_sent) {\n mailSentMsg = localTextArray.mail_sent_success;\n } else {\n mailSentMsg = localTextArray.mail_sent_error;\n }\n\n if (result.result_code === 0) {\n successCreationMsg = localTextArray.user_updated;\n } else {\n successCreationMsg = localTextArray.user_created;\n }\n\n jQuery('#apbct_summary_and_support-user_creation_username').text(result.user_data.username);\n jQuery('#apbct_summary_and_support-user_creation_email').text(result.user_data.email);\n jQuery('#apbct_summary_and_support-user_creation_password').text(result.user_data.password);\n jQuery('#apbct_summary_and_support-user_creation_mail_sent').text(mailSentMsg);\n jQuery('#apbct_summary_and_support-user_creation_title').text(successCreationMsg);\n jQuery('#apbct_summary_and_support-user_creation_cron_updated').text(cronUpdatedMsg);\n jQuery('.apbct_summary_and_support-user_creation_result').css('display', 'block');\n const createUserButton = jQuery('#apbct_summary_and_support-create_user_button');\n createUserButton.attr('disabled', true);\n createUserButton.css('color', 'rgba(93,89,86,0.55)');\n createUserButton.css('background', '#cccccc');\n preloader.css('display', 'none');\n return;\n } else {\n if (result.result_code === -2) {\n popupMsg = localTextArray.invalid_permission;\n } else if (result.result_code === -1) {\n popupMsg = localTextArray.unknown_creation_error;\n } else if (result.result_code === -4) {\n popupMsg = localTextArray.on_cooldown;\n } else if (result.result_code === -5) {\n popupMsg = localTextArray.email_is_busy;\n }\n }\n }\n preloader.css('display', 'none');\n cleantalkModal.loaded = popupMsg;\n cleantalkModal.open();\n },\n errorOutput: function(msg) {\n preloader.css('display', 'none');\n cleantalkModal.loaded = msg;\n cleantalkModal.open();\n },\n },\n );\n}\n"],"names":["__","wp","i18n","handleAnchorDetection","anchor","document","querySelector","style","display","apbctExceptedShowHide","scrollToAnchor","anchorId","targetElement","scrollIntoView","block","apbctManageEmailEncoderCustomTextField","replacingText","let","replacingTextWrapperSub","parentElement","querySelectorAll","forEach","elem","checked","value","classList","add","addEventListener","event","target","remove","apbctManageAntiCrawlerDependency","antiCrawler","spamFireWall","childrens","getAttribute","apbctSettingsDependencies","apbctBannerCheck","bannerChecker","setInterval","apbct_admin_sendAJAX","action","callback","result","data","params","obj","close_renew_banner","jQuery","length","hide","clearInterval","apbctGetElems","elems","i","len","split","tmp","apbctGetElemsNative","out","arr","getElementById","push","key","getElementsByClassName","apbctShowHideElem","each","label","next","prev","is","show","element","toHide","index","indexOf","splice","toHideElem","apbctShowRequiredGroups","id","required","originEvent","preventDefault","dispatchEvent","constructor","type","ids","enable","isNaN","state","removeAttribute","setAttribute","apbctSettingsDependenciesGetState","onApbctCookieTypeChange","switchToMode","toString","cleantalkModal","loaded","open","confirm","decision","click","apbctSettingsShowDescription","settingId","removeDescFunc","e","callerIsPopup","parent","callerIsHideCross","hasClass","off","after","append","css","top","position","left","setting_id","spinner","children","title","desc","empty","on","apbctNavigationMenuPosition","scrollPosition","windowWidth","navBlock","rightBtnSave","window","scrollY","innerWidth","apbctSaveButtonPosition","advSettingsBlock","mainSaveButton","ctSettingsPage","key_is_ok","ip_license","additionalSaveButton","documentHeight","documentElement","scrollHeight","innerHeight","apbctHighlightElement","times","keyField","animate","scrollTop","offset","addClass","opacity","removeClass","apbctCreateSupportUser","localTextArray","support_user_creation_msg_array","confirm_header","confirm_text","apbctCreateSupportUserCallback","preloader","timeout","notJson","popupMsg","default_error","hasOwnProperty","user_data","success","user_created","mailSentMsg","successCreationMsg","cronUpdatedMsg","cron_updated","createUserButton","mail_sent","mail_sent_success","mail_sent_error","result_code","user_updated","text","username","email","password","attr","invalid_permission","unknown_creation_error","on_cooldown","email_is_busy","errorOutput","msg","ready","getComputedStyle","direction","this","val","optionSelected","console","log","template_id","template_name","settings","button","insertAfter","setTimeout","location","reload","close","templateNameInput","templateName","key_changed","self","find","debounceTimer","clearTimeout","$this","accountEmailField","accountEmail","toggleClass","code","inputType","undefined","error","enteredValue","keyBad","match","customUploader","media","library","multiple","image","get","first","toJSON","url","src","adjust","hash","substring","sessionStorage","setItem"],"mappings":"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"} \ No newline at end of file diff --git a/js/src/cleantalk-admin-settings-page.js b/js/src/cleantalk-admin-settings-page.js index 05cf500b6..3d576e00f 100644 --- a/js/src/cleantalk-admin-settings-page.js +++ b/js/src/cleantalk-admin-settings-page.js @@ -705,7 +705,7 @@ function onApbctCookieTypeChange(event) { // eslint-disable-line no-unused-vars __('Attention!', 'cleantalk-spam-protect'), ( __( - 'Cache solutions detected. ', + 'Cache-problem solutions detected in the environment. ', 'cleantalk-spam-protect', ) + __( diff --git a/lib/Cleantalk/ApbctWP/ContactsEncoder/ContactsEncoder.php b/lib/Cleantalk/ApbctWP/ContactsEncoder/ContactsEncoder.php index c7ecd24fe..3cceeda4a 100644 --- a/lib/Cleantalk/ApbctWP/ContactsEncoder/ContactsEncoder.php +++ b/lib/Cleantalk/ApbctWP/ContactsEncoder/ContactsEncoder.php @@ -470,6 +470,36 @@ public static function getEmailsEncodingDescription() return __('Encode email addresses', 'cleantalk-spam-protect'); } + public static function getExcludedStringsDescription() + { + return __( + 'List emails, phone numbers or text fragments that must never be encoded. Put one value per line. Each value is limited to 128 characters, up to 20 values.', + 'cleantalk-spam-protect' + ); + } + + public static function getExcludedStringsLongDescription() + { + $tmp = ' +%s
+%s
+ + + +%s
+ '; + $tmp = sprintf( + $tmp, + __('Use this list when you need a contact to stay readable everywhere, including titles, menus and widgets — WordPress does not run shortcodes in those places.', 'cleantalk-spam-protect'), + __('Put one value per line:', 'cleantalk-spam-protect'), + __('an email, e.g. support@example.com', 'cleantalk-spam-protect'), + __('a phone number, e.g. +1 (234) 567-8901 — format differences are ignored', 'cleantalk-spam-protect'), + __('a text fragment, e.g. example.com to skip all emails on that domain', 'cleantalk-spam-protect'), + __('Each value is sliced to 128 characters. The list is limited to 20 values.', 'cleantalk-spam-protect') + ); + return $tmp; + } + public static function getPhonesEncodingLongDescription() { $tmp = ' diff --git a/lib/Cleantalk/ApbctWP/PluginSettingsPage/SettingsField.php b/lib/Cleantalk/ApbctWP/PluginSettingsPage/SettingsField.php index a4fc546f4..fe5f8d68b 100644 --- a/lib/Cleantalk/ApbctWP/PluginSettingsPage/SettingsField.php +++ b/lib/Cleantalk/ApbctWP/PluginSettingsPage/SettingsField.php @@ -253,7 +253,8 @@ private function getRadioChildrenChunk($option) public function anyCacheDetectedInEnvironment() { - return apbct_is_varnish_cache_exists() || apbct_is_advanced_cache_exists() || apbct_is_10web_booster_exists() || apbct_is_cache_plugins_exists(); + global $apbct; + return $apbct->isAltSessionsRequired(); } /** @@ -480,7 +481,11 @@ class="apbct_setting_{{type}} apbct_setting---{{name}}" */ private function getInputTextarea() { - $title_layout = '