Version Description
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.6.2 |
Comparing to | |
See all releases |
Code changes from version 4.6.1 to 4.6.2
- email-subscribers.php +2 -2
- lite/admin/class-email-subscribers-admin.php +144 -11
- lite/admin/css/email-subscribers-admin.css +32 -2
- lite/admin/dist/main.css +1 -1
- lite/admin/images/halloween_2020.png +0 -0
- lite/admin/images/premium-icon.svg +1 -0
- lite/admin/js/email-subscribers-admin.js +14 -0
- lite/admin/partials/onboarding.php +6 -4
- lite/includes/class-email-subscribers.php +28 -21
- lite/includes/class-es-common.php +68 -0
- lite/includes/classes/class-es-admin-settings.php +13 -23
- lite/includes/classes/class-es-contacts-table.php +2 -0
- lite/includes/classes/class-es-mailer.php +15 -0
- lite/includes/classes/class-es-newsletters.php +1 -1
- lite/includes/classes/class-es-post-notifications.php +23 -20
- lite/includes/classes/class-ig-es-trial.php +234 -0
- lite/includes/es-core-functions.php +10 -8
- lite/includes/notices/class-es-admin-notices.php +25 -5
- lite/includes/notices/views/ig-es-halloween-offer.php +17 -0
- lite/includes/notices/views/{trial-optin.php → trial-consent.php} +1 -1
- lite/includes/notices/views/trial-to-premium-offer.php +114 -0
- lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php +118 -0
- lite/includes/pro-features.php +268 -255
- lite/includes/services/class-es-service-css-inliner.php +0 -57
- lite/includes/services/{class-es-service-send-cron-data.php → class-es-service-handle-cron-data.php} +29 -10
- lite/includes/services/class-es-service-process-email-content.php +53 -0
- lite/includes/services/class-es-services.php +8 -2
- lite/includes/workflows/admin/class-es-workflow-admin-edit.php +9 -4
- readme.txt +5 -1
email-subscribers.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Email Subscribers & Newsletters
|
4 |
* Plugin URI: https://www.icegram.com/
|
5 |
* Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
|
6 |
-
* Version: 4.6.
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
@@ -175,7 +175,7 @@ if ( 'premium' === $ig_es_plan ) {
|
|
175 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
176 |
|
177 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
178 |
-
define( 'ES_PLUGIN_VERSION', '4.6.
|
179 |
}
|
180 |
|
181 |
// Plugin Folder Path.
|
3 |
* Plugin Name: Email Subscribers & Newsletters
|
4 |
* Plugin URI: https://www.icegram.com/
|
5 |
* Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
|
6 |
+
* Version: 4.6.2
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
175 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
176 |
|
177 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
178 |
+
define( 'ES_PLUGIN_VERSION', '4.6.2' );
|
179 |
}
|
180 |
|
181 |
// Plugin Folder Path.
|
lite/admin/class-email-subscribers-admin.php
CHANGED
@@ -83,11 +83,20 @@ class Email_Subscribers_Admin {
|
|
83 |
add_action( 'ig_es_after_settings_save', array( $this, 'send_cron_data' ) );
|
84 |
|
85 |
|
86 |
-
//
|
87 |
-
add_filter( 'es_after_process_template_body', array( $this, '
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
|
89 |
// Disable Icegram server cron when plugin is deactivated.
|
90 |
add_action( 'ig_es_plugin_deactivate', array( $this, 'disable_server_cron' ) );
|
|
|
|
|
|
|
91 |
|
92 |
if ( class_exists( 'IG_ES_Premium_Services_UI' ) ) {
|
93 |
IG_ES_Premium_Services_UI::instance();
|
@@ -944,26 +953,113 @@ class Email_Subscribers_Admin {
|
|
944 |
return;
|
945 |
}
|
946 |
|
947 |
-
$
|
948 |
|
949 |
// Send cron data to server
|
950 |
-
$
|
951 |
}
|
952 |
|
953 |
/**
|
954 |
-
* Method to
|
955 |
*
|
956 |
-
* @
|
|
|
|
|
|
|
|
|
957 |
*/
|
958 |
-
public function
|
959 |
|
960 |
-
$
|
961 |
|
962 |
-
$data = $
|
963 |
|
964 |
return $data;
|
965 |
}
|
966 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
967 |
/**
|
968 |
* Method to disable Icegram server cron.
|
969 |
*
|
@@ -971,7 +1067,44 @@ class Email_Subscribers_Admin {
|
|
971 |
*/
|
972 |
public function disable_server_cron() {
|
973 |
|
974 |
-
$
|
975 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
976 |
}
|
977 |
}
|
83 |
add_action( 'ig_es_after_settings_save', array( $this, 'send_cron_data' ) );
|
84 |
|
85 |
|
86 |
+
// Process and add premium service data(Inline CSS, UTM Tracking etc) to template body.
|
87 |
+
add_filter( 'es_after_process_template_body', array( $this, 'add_premium_services_data') );
|
88 |
+
|
89 |
+
// Filter to add premium service request data.
|
90 |
+
add_filter( 'ig_es_util_data', array( $this, 'add_util_data') );
|
91 |
+
|
92 |
+
// Filter to check if utm tracking is enabled.
|
93 |
+
add_filter( 'ig_es_track_utm', array( $this, 'is_utm_tracking_enabled'), 10, 2 );
|
94 |
|
95 |
// Disable Icegram server cron when plugin is deactivated.
|
96 |
add_action( 'ig_es_plugin_deactivate', array( $this, 'disable_server_cron' ) );
|
97 |
+
|
98 |
+
// Filter to hook custom validation for specific service request.
|
99 |
+
add_filter( 'ig_es_service_request_custom_validation', array( $this, 'maybe_override_service_validation' ), 10, 2 );
|
100 |
|
101 |
if ( class_exists( 'IG_ES_Premium_Services_UI' ) ) {
|
102 |
IG_ES_Premium_Services_UI::instance();
|
953 |
return;
|
954 |
}
|
955 |
|
956 |
+
$handle_cron_data_service = new ES_Service_Handle_Cron_Data();
|
957 |
|
958 |
// Send cron data to server
|
959 |
+
$handle_cron_data_service->handle_es_cron_data( $options );
|
960 |
}
|
961 |
|
962 |
/**
|
963 |
+
* Method to add ES service data(Inline CSS, UTM tracking to links etc) to email content
|
964 |
*
|
965 |
+
* @param array $data
|
966 |
+
*
|
967 |
+
* @return array $data
|
968 |
+
*
|
969 |
+
* @since 4.6.2
|
970 |
*/
|
971 |
+
public function add_premium_services_data( $data = array() ) {
|
972 |
|
973 |
+
$process_email_content_service = new ES_Service_Process_Email_Content();
|
974 |
|
975 |
+
$data = $process_email_content_service->process_email_content( $data );
|
976 |
|
977 |
return $data;
|
978 |
}
|
979 |
|
980 |
+
/**
|
981 |
+
* Method to add ES service data(Inline CSS, UTM tracking to links etc) to email content
|
982 |
+
*
|
983 |
+
* @param array $data
|
984 |
+
*
|
985 |
+
* @return array $data
|
986 |
+
*
|
987 |
+
* @since 4.6.2
|
988 |
+
*/
|
989 |
+
public function add_util_data( $data = array() ) {
|
990 |
+
|
991 |
+
// Add CSS inliner task data to request if valid request.
|
992 |
+
if ( ES()->validate_service_request( array( 'css_inliner' ) ) ) {
|
993 |
+
|
994 |
+
$meta = ! empty( $data['campaign_id'] ) ? ES()->campaigns_db->get_campaign_meta_by_id( $data['campaign_id'] ) : '';
|
995 |
+
$data['html'] = $data['content'];
|
996 |
+
$data['css'] = ! empty( $meta['es_custom_css'] ) ? $meta['es_custom_css'] : get_post_meta( $data['tmpl_id'], 'es_custom_css', true );
|
997 |
+
$data['tasks'][] = 'css-inliner';
|
998 |
+
}
|
999 |
+
|
1000 |
+
// Add utm tracking task data to request if valid request.
|
1001 |
+
if ( ES()->validate_service_request( array( 'utm_tracking' ) ) ) {
|
1002 |
+
|
1003 |
+
if ( ! empty( $data['campaign_id'] ) ) {
|
1004 |
+
$campaign_id = $data['campaign_id'];
|
1005 |
+
$can_track_utm = ES()->mailer->can_track_utm( $data );
|
1006 |
+
if ( $can_track_utm ) {
|
1007 |
+
$meta = ES()->campaigns_db->get_campaign_meta_by_id( $campaign_id );
|
1008 |
+
$data['html'] = $data['content'];
|
1009 |
+
$data['utm_params']['utm_source'] = 'es';
|
1010 |
+
$data['utm_params']['utm_medium'] = 'email';
|
1011 |
+
$data['tasks'][] = 'utm-tracking';
|
1012 |
+
// For broadcast campaign, utm campaign name is saved in campaign meta for other campaigns, it is saved in related template.
|
1013 |
+
if ( ! empty( $meta['es_utm_campaign'] ) ) {
|
1014 |
+
$data['utm_params']['utm_campaign'] = $meta['es_utm_campaign'];
|
1015 |
+
} else if ( ! empty( $data['tmpl_id'] ) ) {
|
1016 |
+
$data['utm_params']['utm_campaign'] = get_post_meta( $data['tmpl_id'], 'es_utm_campaign', true );
|
1017 |
+
}
|
1018 |
+
}
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
return $data;
|
1024 |
+
}
|
1025 |
+
|
1026 |
+
/**
|
1027 |
+
* Method to check if utm tracking is enabled.
|
1028 |
+
*
|
1029 |
+
* @param array $data
|
1030 |
+
*
|
1031 |
+
* @return array $data
|
1032 |
+
*
|
1033 |
+
* @since 4.6.2
|
1034 |
+
*/
|
1035 |
+
public function is_utm_tracking_enabled( $tracking_enabled = false, $data = array() ) {
|
1036 |
+
$ig_es_track_utm = get_option( 'ig_es_track_utm', 'no' );
|
1037 |
+
|
1038 |
+
if ( ! empty( $data ) ) {
|
1039 |
+
$campaign_id = ! empty( $data['campaign_id'] ) ? $data['campaign_id'] : 0;
|
1040 |
+
if ( ! empty( $campaign_id ) ) {
|
1041 |
+
/**
|
1042 |
+
* For newsletter campaign, utm tracking can be enabled/disabled at campaign level therefore check if it is enabled at campaign level or not
|
1043 |
+
* For other type of campaigns, global utm tracking option is used.
|
1044 |
+
*/
|
1045 |
+
$campaign = ES()->campaigns_db->get( $campaign_id );
|
1046 |
+
if ( ! empty( $campaign ) ) {
|
1047 |
+
$campaign_type = $campaign['type'];
|
1048 |
+
if ( 'newsletter' === $campaign_type ) {
|
1049 |
+
$campaign_meta = maybe_unserialize( $campaign['meta'] );
|
1050 |
+
$ig_es_track_utm = ! empty( $campaign_meta['enable_utm_tracking'] ) ? $campaign_meta['enable_utm_tracking']: $ig_es_track_utm;
|
1051 |
+
}
|
1052 |
+
}
|
1053 |
+
}
|
1054 |
+
}
|
1055 |
+
|
1056 |
+
if ( 'yes' === $ig_es_track_utm ) {
|
1057 |
+
$tracking_enabled = true;
|
1058 |
+
}
|
1059 |
+
|
1060 |
+
return $tracking_enabled;
|
1061 |
+
}
|
1062 |
+
|
1063 |
/**
|
1064 |
* Method to disable Icegram server cron.
|
1065 |
*
|
1067 |
*/
|
1068 |
public function disable_server_cron() {
|
1069 |
|
1070 |
+
$handle_cron_data_service = new ES_Service_Handle_Cron_Data();
|
1071 |
+
$handle_cron_data_service->delete_cron_data();
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
/**
|
1075 |
+
* Method to override service validation for some specific request
|
1076 |
+
*
|
1077 |
+
* @param bool $is_request_valid Is request valid.
|
1078 |
+
* @param array $request_data Request data.
|
1079 |
+
*
|
1080 |
+
* @return bool $is_request_valid Is request valid.
|
1081 |
+
*
|
1082 |
+
* @since 4.6.2
|
1083 |
+
*/
|
1084 |
+
public function maybe_override_service_validation( $is_request_valid, $request_data = array() ) {
|
1085 |
+
|
1086 |
+
if ( empty( $request_data ) ) {
|
1087 |
+
return $is_request_valid;
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
$request_body = ! empty( $request_data['body'] ) ? $request_data['body'] : array();
|
1091 |
+
|
1092 |
+
// Check if there are any request related tasks present.
|
1093 |
+
if ( empty( $request_body ) || empty( $request_body['tasks'] ) ) {
|
1094 |
+
return $is_request_valid;
|
1095 |
+
}
|
1096 |
+
|
1097 |
+
$request_tasks = $request_body['tasks'];
|
1098 |
+
|
1099 |
+
// Check if request request is for storing es cron data.
|
1100 |
+
if ( in_array( 'store-cron', $request_tasks, true ) ) {
|
1101 |
+
// If request is for disable es cron.
|
1102 |
+
$is_disable_cron_request = empty( $request_body['es_enable_background'] ) ? true : false;
|
1103 |
+
if ( $is_disable_cron_request ) {
|
1104 |
+
$is_request_valid = true;
|
1105 |
+
}
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
return $is_request_valid;
|
1109 |
}
|
1110 |
}
|
lite/admin/css/email-subscribers-admin.css
CHANGED
@@ -847,7 +847,6 @@ h5.es-badge {
|
|
847 |
margin: 0.2em 0;
|
848 |
}
|
849 |
|
850 |
-
|
851 |
/**** Dashboard : end ***/
|
852 |
|
853 |
.es_list_contact_status:before {
|
@@ -1742,4 +1741,35 @@ div.broadcast_side_content{
|
|
1742 |
padding-top: 18px;
|
1743 |
}
|
1744 |
|
1745 |
-
/* Template Page : end */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
847 |
margin: 0.2em 0;
|
848 |
}
|
849 |
|
|
|
850 |
/**** Dashboard : end ***/
|
851 |
|
852 |
.es_list_contact_status:before {
|
1741 |
padding-top: 18px;
|
1742 |
}
|
1743 |
|
1744 |
+
/* Template Page : end */
|
1745 |
+
|
1746 |
+
/* Upselling css: end */
|
1747 |
+
|
1748 |
+
#ig_es_workflow_integration_information .postbox-header{
|
1749 |
+
display: none;
|
1750 |
+
}
|
1751 |
+
#ig_es_workflow_integration_information {
|
1752 |
+
border:none;
|
1753 |
+
border-radius: 5px;
|
1754 |
+
}
|
1755 |
+
#ig_es_workflow_integration_information .inside div{
|
1756 |
+
margin-top : 0px;
|
1757 |
+
margin-bottom : 0px;
|
1758 |
+
}
|
1759 |
+
|
1760 |
+
.premium-icon {
|
1761 |
+
display: inline-block;
|
1762 |
+
vertical-align: middle;
|
1763 |
+
color: #319795;
|
1764 |
+
width: 20px;
|
1765 |
+
height: 21px;
|
1766 |
+
padding-top: 0.25rem;
|
1767 |
+
background: url('../images/premium-icon.svg');
|
1768 |
+
}
|
1769 |
+
|
1770 |
+
#ig-es-trial-to-premium-notice p {
|
1771 |
+
line-height: 2em;
|
1772 |
+
}
|
1773 |
+
|
1774 |
+
/* Upselling css : end */
|
1775 |
+
|
lite/admin/dist/main.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:1rem;height:1rem;margin-top:.125rem;margin-left:.125rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1.5rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-teal-100{--bg-opacity:1;background-color:#d5f5f6;background-color:rgba(213,245,246,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-gray-500:hover{--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-0{border-width:0}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-3\.5{margin-top:.875rem}.mb-3\.5{margin-bottom:.875rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-5{margin-top:-1.25rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.top-8{top:2rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-500{--text-opacity:1;color:#0694a2;color:rgba(6,148,162,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800,.group:hover .group-hover\:text-indigo-800,.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-40{width:10rem}.w-56{width:14rem}.w-auto{width:auto}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-9\/12{width:75%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-7\/12{width:58.333333%}}
|
1 |
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:1rem;height:1rem;margin-top:.125rem;margin-left:.125rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1.5rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-gray-500:hover{--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.top-8{top:2rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-40{width:10rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-7\/12{width:58.333333%}}
|
lite/admin/images/halloween_2020.png
ADDED
Binary file
|
lite/admin/images/premium-icon.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<svg style="color: #2c7a7b;" class="w-6 h-5 -mt-0.5 inline text-teal-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg>
|
lite/admin/js/email-subscribers-admin.js
CHANGED
@@ -626,6 +626,20 @@
|
|
626 |
jQuery('#spam_score_modal').hide();
|
627 |
});
|
628 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
629 |
});
|
630 |
|
631 |
})(jQuery);
|
626 |
jQuery('#spam_score_modal').hide();
|
627 |
});
|
628 |
|
629 |
+
// Show/hide utm campaign name field.
|
630 |
+
jQuery('#enable_utm_tracking').on('change', function() {
|
631 |
+
let enable_utm_tracking = jQuery(this).prop('checked') ? 'yes' : 'no';
|
632 |
+
if( 'yes' === enable_utm_tracking ) {
|
633 |
+
jQuery('.ig_es_broadcast_campaign_name_wrapper').removeClass('hidden');
|
634 |
+
} else {
|
635 |
+
jQuery('.ig_es_broadcast_campaign_name_wrapper').addClass('hidden');
|
636 |
+
}
|
637 |
+
});
|
638 |
+
|
639 |
+
// 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.
|
640 |
+
jQuery('#ig-es-optin-trial-to-premium-offer').on('click', function(){
|
641 |
+
jQuery(this).closest('.notice').hide('slow');
|
642 |
+
});
|
643 |
});
|
644 |
|
645 |
})(jQuery);
|
lite/admin/partials/onboarding.php
CHANGED
@@ -123,8 +123,9 @@
|
|
123 |
</div>
|
124 |
<div class="pl-3">
|
125 |
<label for="es_free_trial_preference" class="text-sm">
|
126 |
-
<?php
|
127 |
-
|
|
|
128 |
?>
|
129 |
</label>
|
130 |
</div>
|
@@ -469,10 +470,11 @@
|
|
469 |
|
470 |
<p class="text-sm leading-6 pt-1">
|
471 |
<?php
|
472 |
-
|
|
|
473 |
protection, security, email deliverability checks and more. No
|
474 |
credit card required. Premium features will be disabled
|
475 |
-
automatically after the trial if you don\'t continue.', 'email-subscribers');
|
476 |
?>
|
477 |
</p>
|
478 |
<div class="flex my-2 sm:my-0 pt-1">
|
123 |
</div>
|
124 |
<div class="pl-3">
|
125 |
<label for="es_free_trial_preference" class="text-sm">
|
126 |
+
<?php
|
127 |
+
/* translators: 1: Trial period in days. */
|
128 |
+
echo esc_html__( sprintf( 'Enable %s days free trial of premium features - email delivery testing, automatic background sending, spam protection and more', ES()->trial->get_trial_period( 'in_days' ) ), 'email-subscribers' );
|
129 |
?>
|
130 |
</label>
|
131 |
</div>
|
470 |
|
471 |
<p class="text-sm leading-6 pt-1">
|
472 |
<?php
|
473 |
+
/* translators: 1: Trial period in days. */
|
474 |
+
echo esc_html__( sprintf( 'Get %s days free trial of managed email sending, advance spam
|
475 |
protection, security, email deliverability checks and more. No
|
476 |
credit card required. Premium features will be disabled
|
477 |
+
automatically after the trial if you don\'t continue.', ES()->trial->get_trial_period( 'in_days' ) ), 'email-subscribers' );
|
478 |
?>
|
479 |
</p>
|
480 |
<div class="flex my-2 sm:my-0 pt-1">
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -303,17 +303,28 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
303 |
* @since 4.0.0
|
304 |
*/
|
305 |
public function add_admin_notice() {
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
|
311 |
-
if (
|
312 |
$args['url'] = 'https://www.icegram.com/';
|
313 |
-
$args['include'] = ES_PLUGIN_DIR . 'lite/includes/notices/views/ig-es-offer.php';
|
314 |
-
ES_Admin_Notices::add_custom_notice( '
|
|
|
|
|
315 |
}
|
316 |
-
*/
|
317 |
|
318 |
$screen_id = $this->get_current_screen_id();
|
319 |
// Don't show admin notices on Dashboard if onboarding is not yet completed.
|
@@ -353,16 +364,6 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
353 |
ES_Admin_Notices::remove_notice( 'show_wp_cron' );
|
354 |
}
|
355 |
|
356 |
-
if ( 'yes' === $is_onboarding_complete ) {
|
357 |
-
// Show opt to trial notice if user has not already opted for it or is not a premium user.
|
358 |
-
if ( ! ( ES()->is_trial() || ES()->is_premium() ) ) {
|
359 |
-
// Check whether user has performed any action(accept/reject) on consent notice for trial. 'yes' if performed.
|
360 |
-
$trial_consent_given = get_option( 'ig_es_trial_consent', 'no' );
|
361 |
-
if ( 'yes' !== $trial_consent_given ) {
|
362 |
-
ES_Admin_Notices::add_notice( 'trial_consent' );
|
363 |
-
}
|
364 |
-
}
|
365 |
-
}
|
366 |
}
|
367 |
|
368 |
/**
|
@@ -578,6 +579,10 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
578 |
if ( ! defined( 'IG_ES_WORKFLOW_STATUS_ACTIVE' ) ) {
|
579 |
define( 'IG_ES_WORKFLOW_STATUS_ACTIVE', 1 );
|
580 |
}
|
|
|
|
|
|
|
|
|
581 |
}
|
582 |
|
583 |
/**
|
@@ -657,8 +662,8 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
657 |
'lite/includes/services/class-es-email-delivery-check.php',
|
658 |
'lite/includes/services/class-es-send-test-email.php',
|
659 |
'lite/includes/services/class-es-service-spam-score-check.php',
|
660 |
-
'lite/includes/services/class-es-service-
|
661 |
-
'lite/includes/services/class-es-service-
|
662 |
|
663 |
// Classes
|
664 |
'lite/includes/classes/class-es-list-table.php',
|
@@ -694,6 +699,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
694 |
'lite/includes/classes/class-es-ig-redirect.php',
|
695 |
'lite/includes/classes/class-es-geolocation.php',
|
696 |
'lite/includes/classes/class-es-browser.php',
|
|
|
697 |
|
698 |
// Core Functions
|
699 |
'lite/includes/es-core-functions.php',
|
@@ -998,7 +1004,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
998 |
$current_time = time();
|
999 |
|
1000 |
// Get the timestamp when trial will expire.
|
1001 |
-
$trial_expires_at = $trial_started_at +
|
1002 |
|
1003 |
// Check if current time is greater than expiry time.
|
1004 |
if ( $current_time > $trial_expires_at ) {
|
@@ -1312,6 +1318,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1312 |
self::$instance->cron = new ES_Cron();
|
1313 |
self::$instance->compatibiloty = new ES_Compatibility();
|
1314 |
self::$instance->workflows_db = new ES_DB_Workflows();
|
|
|
1315 |
|
1316 |
if ( is_admin() ) {
|
1317 |
$ig_es_feedback_class = 'IG_Feedback_V_' . str_replace( '.', '_', IG_ES_FEEDBACK_TRACKER_VERSION );
|
303 |
* @since 4.0.0
|
304 |
*/
|
305 |
public function add_admin_notice() {
|
306 |
+
///Halloween offer
|
307 |
+
$show_offer = false;
|
308 |
+
$current_page = ig_es_get_request_data( 'page' );
|
309 |
+
|
310 |
+
if ( $this->can_upsell_features( array( 'lite', 'trial', 'starter' ) ) && IG_ES_Onboarding::is_onboarding_completed() ) {
|
311 |
+
if ( 'es_reports' === $current_page ) {
|
312 |
+
$report_insight = ig_es_get_request_data( 'insight' );
|
313 |
+
if ( ! $report_insight ) {
|
314 |
+
$show_offer = true;
|
315 |
+
}
|
316 |
+
} else {
|
317 |
+
$show_offer = true;
|
318 |
+
}
|
319 |
+
}
|
320 |
|
321 |
+
if ( $show_offer ) {
|
322 |
$args['url'] = 'https://www.icegram.com/';
|
323 |
+
$args['include'] = ES_PLUGIN_DIR . 'lite/includes/notices/views/ig-es-halloween-offer.php';
|
324 |
+
ES_Admin_Notices::add_custom_notice( 'halloween_offer_2020', $args );
|
325 |
+
} else {
|
326 |
+
ES_Admin_Notices::remove_notice( 'halloween_offer_2020' );
|
327 |
}
|
|
|
328 |
|
329 |
$screen_id = $this->get_current_screen_id();
|
330 |
// Don't show admin notices on Dashboard if onboarding is not yet completed.
|
364 |
ES_Admin_Notices::remove_notice( 'show_wp_cron' );
|
365 |
}
|
366 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
}
|
368 |
|
369 |
/**
|
579 |
if ( ! defined( 'IG_ES_WORKFLOW_STATUS_ACTIVE' ) ) {
|
580 |
define( 'IG_ES_WORKFLOW_STATUS_ACTIVE', 1 );
|
581 |
}
|
582 |
+
|
583 |
+
if ( ! defined( 'IG_ES_TRIAL_PERIOD_IN_DAYS' ) ) {
|
584 |
+
define( 'IG_ES_TRIAL_PERIOD_IN_DAYS', 14 );
|
585 |
+
}
|
586 |
}
|
587 |
|
588 |
/**
|
662 |
'lite/includes/services/class-es-email-delivery-check.php',
|
663 |
'lite/includes/services/class-es-send-test-email.php',
|
664 |
'lite/includes/services/class-es-service-spam-score-check.php',
|
665 |
+
'lite/includes/services/class-es-service-handle-cron-data.php',
|
666 |
+
'lite/includes/services/class-es-service-process-email-content.php',
|
667 |
|
668 |
// Classes
|
669 |
'lite/includes/classes/class-es-list-table.php',
|
699 |
'lite/includes/classes/class-es-ig-redirect.php',
|
700 |
'lite/includes/classes/class-es-geolocation.php',
|
701 |
'lite/includes/classes/class-es-browser.php',
|
702 |
+
'lite/includes/classes/class-ig-es-trial.php',
|
703 |
|
704 |
// Core Functions
|
705 |
'lite/includes/es-core-functions.php',
|
1004 |
$current_time = time();
|
1005 |
|
1006 |
// Get the timestamp when trial will expire.
|
1007 |
+
$trial_expires_at = $trial_started_at + ES()->trial->get_trial_period();
|
1008 |
|
1009 |
// Check if current time is greater than expiry time.
|
1010 |
if ( $current_time > $trial_expires_at ) {
|
1318 |
self::$instance->cron = new ES_Cron();
|
1319 |
self::$instance->compatibiloty = new ES_Compatibility();
|
1320 |
self::$instance->workflows_db = new ES_DB_Workflows();
|
1321 |
+
self::$instance->trial = new IG_ES_Trial();
|
1322 |
|
1323 |
if ( is_admin() ) {
|
1324 |
$ig_es_feedback_class = 'IG_Feedback_V_' . str_replace( '.', '_', IG_ES_FEEDBACK_TRACKER_VERSION );
|
lite/includes/class-es-common.php
CHANGED
@@ -1748,4 +1748,72 @@ class ES_Common {
|
|
1748 |
|
1749 |
return $mailbox_user . '@box.icegram.com';
|
1750 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1751 |
}
|
|
1748 |
|
1749 |
return $mailbox_user . '@box.icegram.com';
|
1750 |
}
|
1751 |
+
|
1752 |
+
/**
|
1753 |
+
* Get upselling information box
|
1754 |
+
*
|
1755 |
+
* @since 4.6.2
|
1756 |
+
*/
|
1757 |
+
public static function upsell_description_message_box( $upsell_info = array(), $echo = true ) {
|
1758 |
+
ob_start();
|
1759 |
+
?>
|
1760 |
+
<div class="inline-flex rounded-md shadow bg-teal-50 px-2 pt-1 my-2 w-full font-sans">
|
1761 |
+
<div class="px-2 pt-2 pb-2">
|
1762 |
+
<div class="flex">
|
1763 |
+
<div class="flex-shrink-0">
|
1764 |
+
<svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
|
1765 |
+
<path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
|
1766 |
+
</svg>
|
1767 |
+
</div>
|
1768 |
+
<div class="ml-3">
|
1769 |
+
<h3 class="text-sm leading-5 font-medium text-blue-800 hover:underline">
|
1770 |
+
<?php
|
1771 |
+
/* translators: 1: Anchor opening tag with href attribute 2: Target attribute 3: Anchor closing tag */
|
1772 |
+
echo sprintf( esc_html__('%1$s' . esc_url( $upsell_info[ 'pricing_url' ] ) . '%2$s' . esc_html( $upsell_info['upgrade_title'] ) . '%3$s', 'email-subscribers' ) , '<a href="', '" target="_blank">', '</a>' );
|
1773 |
+
?>
|
1774 |
+
</h3>
|
1775 |
+
</div>
|
1776 |
+
</div>
|
1777 |
+
<div class="mt-2 ml-8 text-sm leading-5 text-teal-700">
|
1778 |
+
<p>
|
1779 |
+
<?php
|
1780 |
+
$allowed_html_tags = ig_es_allowed_html_tags_in_esc();
|
1781 |
+
if ( ! empty( $upsell_info[ 'upsell_message' ] ) ) {
|
1782 |
+
echo wp_kses( $upsell_info[ 'upsell_message' ] , $allowed_html_tags );
|
1783 |
+
}
|
1784 |
+
|
1785 |
+
$timezone_format = _x( 'Y-m-d', 'timezone date format' );
|
1786 |
+
$ig_current_date = strtotime( date_i18n( $timezone_format ) ) ;
|
1787 |
+
if ( ( ( $ig_current_date < strtotime( '2020-10-30' ) ) || ( $ig_current_date > strtotime( '2020-11-02' ) ) ) && self::can_show_coupon('PREMIUM10')) {
|
1788 |
+
?>
|
1789 |
+
<p class="mb-1 mt-3">
|
1790 |
+
<?php
|
1791 |
+
echo wp_kses_post( 'Upgrade now & get <b> 10% discount!</b> <br/><br/>Use coupon code:');
|
1792 |
+
?>
|
1793 |
+
|
1794 |
+
<span class="ml-2 px-1.5 py-1 font-medium bg-yellow-100 rounded-md border-2 border-dotted border-indigo-300 select-all"><?php esc_html_e( 'PREMIUM10', 'email-subscribers' ); ?> </span>
|
1795 |
+
</p>
|
1796 |
+
<?php
|
1797 |
+
}
|
1798 |
+
if ( $upsell_info[ 'cta_html' ] ) {
|
1799 |
+
?>
|
1800 |
+
<div class="pt-6 text-center -ml-6 pb-2">
|
1801 |
+
<a href="<?php echo esc_url( $upsell_info[ 'pricing_url' ] ); ?>" target="_blank" class="rounded-md border border-transparent px-3 py-2 bg-white text-sm leading-7 font-medium text-white bg-indigo-600 hover:text-white hover:bg-indigo-500 transition ease-in-out duration-150 mt-2"><?php esc_html_e('Upgrade', 'email-subscribers'); ?></a>
|
1802 |
+
</div>
|
1803 |
+
<?php
|
1804 |
+
}
|
1805 |
+
?>
|
1806 |
+
</div>
|
1807 |
+
</div>
|
1808 |
+
</div>
|
1809 |
+
|
1810 |
+
<?php
|
1811 |
+
$message_html = ob_get_clean();
|
1812 |
+
if ( $echo ) {
|
1813 |
+
echo wp_kses( $message_html , $allowed_html_tags );
|
1814 |
+
} else {
|
1815 |
+
return $message_html;
|
1816 |
+
}
|
1817 |
+
}
|
1818 |
}
|
1819 |
+
|
lite/includes/classes/class-es-admin-settings.php
CHANGED
@@ -132,7 +132,7 @@ class ES_Admin_Settings {
|
|
132 |
'name' => __( 'General', 'email-subscribers' ),
|
133 |
),
|
134 |
'signup_confirmation' => array(
|
135 |
-
'icon' => '<svg class="w-6 h-6 inline -mt-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="
|
136 |
'name' => __( 'Notifications', 'email-subscribers' ),
|
137 |
),
|
138 |
'email_sending' => array(
|
@@ -153,7 +153,7 @@ class ES_Admin_Settings {
|
|
153 |
foreach ( $es_settings_tabs as $key => $value ) {
|
154 |
?>
|
155 |
<li id="menu-content" class="h-10 py-1 mx-2 border border-transparent rounded settings-menu-change md:my-2 hover:rounded-lg hover:border-gray-200">
|
156 |
-
<a href="#tabs-<?php echo esc_attr( $key ); ?>" id="menu-content-change" class="block px-4 pt-1 text-base font-medium text-gray-
|
157 |
<?php
|
158 |
}
|
159 |
?>
|
@@ -736,7 +736,7 @@ class ES_Admin_Settings {
|
|
736 |
$html .= $field['name'];
|
737 |
|
738 |
if ( ! empty( $field['is_premium'] ) ) {
|
739 |
-
$html .= '
|
740 |
}
|
741 |
|
742 |
// If there is help text
|
@@ -776,25 +776,15 @@ class ES_Admin_Settings {
|
|
776 |
}
|
777 |
|
778 |
if ( ! empty( $field['upgrade_desc'] ) ) {
|
779 |
-
$
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
<div class='ml-3'>
|
789 |
-
<h3 class='text-sm font-medium leading-5 text-teal-700'>";
|
790 |
-
$html .= $field['upgrade_title'] . '</h3>';
|
791 |
-
$html .= "<div class='mt-2 text-sm leading-5 text-teal-500'>
|
792 |
-
<p>" . $field['upgrade_desc'] . '</p>
|
793 |
-
</div>
|
794 |
-
</div>
|
795 |
-
</div>
|
796 |
-
</div>
|
797 |
-
</div>';
|
798 |
}
|
799 |
|
800 |
$html .= '</td></tr>';
|
@@ -881,7 +871,7 @@ class ES_Admin_Settings {
|
|
881 |
. $mailer['name'] . '</p>';
|
882 |
|
883 |
if ( ! empty( $mailer['is_premium'] ) ) {
|
884 |
-
$html .= '<span class="
|
885 |
}
|
886 |
$html .= '</div></label>';
|
887 |
}
|
132 |
'name' => __( 'General', 'email-subscribers' ),
|
133 |
),
|
134 |
'signup_confirmation' => array(
|
135 |
+
'icon' => '<svg class="w-6 h-6 inline -mt-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8h2a2 2 0 012 2v6a2 2 0 01-2 2h-2v4l-4-4H9a1.994 1.994 0 01-1.414-.586m0 0L11 14h4a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2v4l.586-.586z"></path></svg>',
|
136 |
'name' => __( 'Notifications', 'email-subscribers' ),
|
137 |
),
|
138 |
'email_sending' => array(
|
153 |
foreach ( $es_settings_tabs as $key => $value ) {
|
154 |
?>
|
155 |
<li id="menu-content" class="h-10 py-1 mx-2 border border-transparent rounded settings-menu-change md:my-2 hover:rounded-lg hover:border-gray-200">
|
156 |
+
<a href="#tabs-<?php echo esc_attr( $key ); ?>" id="menu-content-change" class="block px-4 pt-1 text-base font-medium text-gray-600 no-underline align-middle hover:text-gray-800"><?php echo wp_kses( $value['icon'], $allowedtags ); ?> <span class="pl-0.5"><?php echo esc_html( $value['name'] ); ?></span></a></li>
|
157 |
<?php
|
158 |
}
|
159 |
?>
|
736 |
$html .= $field['name'];
|
737 |
|
738 |
if ( ! empty( $field['is_premium'] ) ) {
|
739 |
+
$html .= '</span><a class="ml-1" href="' . $field['link'] . '" target="_blank"><span class="premium-icon"></span></a>';
|
740 |
}
|
741 |
|
742 |
// If there is help text
|
776 |
}
|
777 |
|
778 |
if ( ! empty( $field['upgrade_desc'] ) ) {
|
779 |
+
$upsell_info = array(
|
780 |
+
'upgrade_title' => $field[ 'upgrade_title' ],
|
781 |
+
'pricing_url' => $field[ 'link' ],
|
782 |
+
'upsell_message' => $field[ 'upgrade_desc' ],
|
783 |
+
'cta_html' => false,
|
784 |
+
);
|
785 |
+
$html .= '</div> <div class="w-3/5">';
|
786 |
+
$html .= ES_Common::upsell_description_message_box( $upsell_info, false );
|
787 |
+
$html .= '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
788 |
}
|
789 |
|
790 |
$html .= '</td></tr>';
|
871 |
. $mailer['name'] . '</p>';
|
872 |
|
873 |
if ( ! empty( $mailer['is_premium'] ) ) {
|
874 |
+
$html .= '<span class="premium-icon"></span>';
|
875 |
}
|
876 |
$html .= '</div></label>';
|
877 |
}
|
lite/includes/classes/class-es-contacts-table.php
CHANGED
@@ -143,6 +143,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
143 |
'url' => add_query_arg( 'action', 'export', 'admin.php?page=es_subscribers' ),
|
144 |
),
|
145 |
// Start-IG-Code.
|
|
|
146 |
'sync' => array(
|
147 |
'label' => __( 'Sync', 'email-subscribers' ),
|
148 |
'indicator_option' => 'ig_es_show_sync_tab',
|
@@ -151,6 +152,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
151 |
'action' => 'sync',
|
152 |
'url' => add_query_arg( 'action', 'sync', 'admin.php?page=es_subscribers' ),
|
153 |
),
|
|
|
154 |
// End-IG-Code.
|
155 |
'manage_lists' => array(
|
156 |
'label' => __( 'Manage Lists', 'email-subscribers' ),
|
143 |
'url' => add_query_arg( 'action', 'export', 'admin.php?page=es_subscribers' ),
|
144 |
),
|
145 |
// Start-IG-Code.
|
146 |
+
/*
|
147 |
'sync' => array(
|
148 |
'label' => __( 'Sync', 'email-subscribers' ),
|
149 |
'indicator_option' => 'ig_es_show_sync_tab',
|
152 |
'action' => 'sync',
|
153 |
'url' => add_query_arg( 'action', 'sync', 'admin.php?page=es_subscribers' ),
|
154 |
),
|
155 |
+
*/
|
156 |
// End-IG-Code.
|
157 |
'manage_lists' => array(
|
158 |
'label' => __( 'Manage Lists', 'email-subscribers' ),
|
lite/includes/classes/class-es-mailer.php
CHANGED
@@ -1129,6 +1129,21 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
1129 |
return apply_filters( 'ig_es_track_clicks', $is_track_clicks, $contact_id, $campaign_id, $this->link_data );
|
1130 |
}
|
1131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1132 |
/**
|
1133 |
* Allow tracking email open?
|
1134 |
*
|
1129 |
return apply_filters( 'ig_es_track_clicks', $is_track_clicks, $contact_id, $campaign_id, $this->link_data );
|
1130 |
}
|
1131 |
|
1132 |
+
/**
|
1133 |
+
* Allow utm tracking?
|
1134 |
+
*
|
1135 |
+
* @param array $data
|
1136 |
+
*
|
1137 |
+
* @return bool $
|
1138 |
+
*
|
1139 |
+
* @since 4.3.2
|
1140 |
+
*/
|
1141 |
+
public function can_track_utm( $data = array() ) {
|
1142 |
+
$is_track_utm = apply_filters( 'ig_es_track_utm', false, $data );
|
1143 |
+
|
1144 |
+
return $is_track_utm;
|
1145 |
+
}
|
1146 |
+
|
1147 |
/**
|
1148 |
* Allow tracking email open?
|
1149 |
*
|
lite/includes/classes/class-es-newsletters.php
CHANGED
@@ -486,7 +486,7 @@ class ES_Newsletters {
|
|
486 |
|
487 |
<?php do_action( 'ig_es_after_broadcast_right_pan_settings', $broadcast_data ); ?>
|
488 |
|
489 |
-
<div class="block w-full px-4 py-2">
|
490 |
<?php
|
491 |
$enable_open_tracking = ! empty( $broadcast_data['meta']['enable_open_tracking'] ) ? $broadcast_data['meta']['enable_open_tracking'] : get_option( 'ig_es_track_email_opens', 'yes' );
|
492 |
?>
|
486 |
|
487 |
<?php do_action( 'ig_es_after_broadcast_right_pan_settings', $broadcast_data ); ?>
|
488 |
|
489 |
+
<div class="block w-full px-4 py-2 mt-2">
|
490 |
<?php
|
491 |
$enable_open_tracking = ! empty( $broadcast_data['meta']['enable_open_tracking'] ) ? $broadcast_data['meta']['enable_open_tracking'] : get_option( 'ig_es_track_email_opens', 'yes' );
|
492 |
?>
|
lite/includes/classes/class-es-post-notifications.php
CHANGED
@@ -321,27 +321,30 @@ class ES_Post_Notifications_Table {
|
|
321 |
|
322 |
<?php do_action( 'es_before_post_notification_settings', $id ); ?>
|
323 |
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
|
|
339 |
</div>
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
|
|
|
|
345 |
<tr class="border-b border-gray-100">
|
346 |
<th scope="row" class="w-3/12 pt-3 pb-8 text-left">
|
347 |
<label for="tag-link"><span class="block ml-6 pr-4 text-sm font-medium text-gray-600 pb-2">
|
321 |
|
322 |
<?php do_action( 'es_before_post_notification_settings', $id ); ?>
|
323 |
|
324 |
+
<tr class="border-b border-gray-100">
|
325 |
+
<th scope="row" class="w-3/12 pt-3 pb-8 text-left">
|
326 |
+
<label for="tag-link"><span class="block ml-6 pr-4 text-sm font-medium text-gray-600 pb-2">
|
327 |
+
<?php esc_html_e( 'Select list', 'email-subscribers' ); ?></span>
|
328 |
+
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php esc_html_e( 'Contacts from the selected list will be notified about new post notification.', 'email-subscribers' ); ?></p></label>
|
329 |
+
</th>
|
330 |
+
<td class="w-9/12 pb-3 ">
|
331 |
+
<div class="flex">
|
332 |
+
<div class="w-2/4 inline-flex ml-12 relative">
|
333 |
+
<select <?php echo esc_attr( $select_list_attr ); ?> class="absolute shadow-sm border border-gray-400 w-2/3 <?php echo esc_attr( $select_list_class ); ?>" name="<?php echo esc_attr( $select_list_name ); ?>" id="ig_es_post_notification_list_ids">
|
334 |
+
<?php
|
335 |
+
$lists_dropdown = ES_Common::prepare_list_dropdown_options( $list_id );
|
336 |
+
echo wp_kses( $lists_dropdown, $allowedtags );
|
337 |
+
?>
|
338 |
+
</select>
|
339 |
+
</div>
|
340 |
</div>
|
341 |
+
</td>
|
342 |
+
</tr>
|
343 |
+
</tbody>
|
344 |
+
</table>
|
345 |
+
<?php do_action( 'ig_es_add_multilist_options' ); ?>
|
346 |
+
<table class="max-w-full form-table">
|
347 |
+
<tbody>
|
348 |
<tr class="border-b border-gray-100">
|
349 |
<th scope="row" class="w-3/12 pt-3 pb-8 text-left">
|
350 |
<label for="tag-link"><span class="block ml-6 pr-4 text-sm font-medium text-gray-600 pb-2">
|
lite/includes/classes/class-ig-es-trial.php
ADDED
@@ -0,0 +1,234 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The trial-specific functionality of the plugin.
|
10 |
+
*
|
11 |
+
*/
|
12 |
+
class IG_ES_Trial {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class instance.
|
16 |
+
*
|
17 |
+
* @var IG_ES_Trial $instance
|
18 |
+
*/
|
19 |
+
public static $instance;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Initialize the class.
|
23 |
+
*
|
24 |
+
* @since 4.6.2
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'admin_init', array( $this, 'show_trial_notices' ) );
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Get class instance.
|
32 |
+
*
|
33 |
+
* @since 4.6.2
|
34 |
+
*/
|
35 |
+
public static function get_instance() {
|
36 |
+
|
37 |
+
if ( ! isset( self::$instance ) ) {
|
38 |
+
self::$instance = new self();
|
39 |
+
}
|
40 |
+
|
41 |
+
return self::$instance;
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Method to get trial period
|
46 |
+
*
|
47 |
+
* @param string $period_in Period unit.
|
48 |
+
*
|
49 |
+
* @return int Trial period in second.
|
50 |
+
*
|
51 |
+
* @since 4.6.2
|
52 |
+
*/
|
53 |
+
public function get_trial_period( $period_in = 'in_seconds' ) {
|
54 |
+
|
55 |
+
$trial_period = 0;
|
56 |
+
|
57 |
+
switch ( $period_in ) {
|
58 |
+
case 'in_days':
|
59 |
+
$trial_period = IG_ES_TRIAL_PERIOD_IN_DAYS;
|
60 |
+
break;
|
61 |
+
case 'in_seconds':
|
62 |
+
default:
|
63 |
+
$trial_period = IG_ES_TRIAL_PERIOD_IN_DAYS * DAY_IN_SECONDS;
|
64 |
+
}
|
65 |
+
|
66 |
+
return $trial_period;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Method to get total days since trial start date/time
|
71 |
+
*
|
72 |
+
* @return int $trial_time_in_days Trial period passed in days.
|
73 |
+
*
|
74 |
+
* @since 4.6.2
|
75 |
+
*/
|
76 |
+
public function get_days_since_trial_started() {
|
77 |
+
|
78 |
+
$current_time = time();
|
79 |
+
$trial_time_in_days = 0;
|
80 |
+
$trial_started_at = get_option( 'ig_es_trial_started_at' );
|
81 |
+
|
82 |
+
if ( ! empty( $trial_started_at ) ) {
|
83 |
+
$trial_time_in_seconds = $current_time - $trial_started_at;
|
84 |
+
$trial_time_in_days = floor( $trial_time_in_seconds / DAY_IN_SECONDS );
|
85 |
+
}
|
86 |
+
|
87 |
+
return $trial_time_in_days;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Method to get total remaining days in trial expiration.
|
92 |
+
*
|
93 |
+
* @return int $remaining_trial_days Remaining trial days.
|
94 |
+
*
|
95 |
+
* @since 4.6.2
|
96 |
+
*/
|
97 |
+
public function get_remaining_trial_days() {
|
98 |
+
|
99 |
+
$total_days_since_trial = $this->get_days_since_trial_started();
|
100 |
+
$trial_period_in_days = $this->get_trial_period( 'in_days' );
|
101 |
+
$remaining_trial_days = $trial_period_in_days - $total_days_since_trial;
|
102 |
+
|
103 |
+
return $remaining_trial_days;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Method to get trial expiry date
|
108 |
+
*
|
109 |
+
* @param string $date_format Date formate
|
110 |
+
*
|
111 |
+
* @return string $trial_expriy_date Trial expiry date.
|
112 |
+
*
|
113 |
+
* @since 4.6.2
|
114 |
+
*/
|
115 |
+
public function get_trial_expiry_date( $date_format = 'Y-m-d H:i:s' ) {
|
116 |
+
|
117 |
+
$trial_expriy_date = '';
|
118 |
+
$trial_started_at = $this->get_trial_started_at();
|
119 |
+
|
120 |
+
if ( ! empty( $trial_started_at ) ) {
|
121 |
+
$trial_expires_at = $trial_started_at + $this->get_trial_period();
|
122 |
+
$trial_expriy_date = gmdate( $date_format, $trial_expires_at );
|
123 |
+
}
|
124 |
+
|
125 |
+
return $trial_expriy_date;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Method to get trial started at timestamp.
|
130 |
+
*
|
131 |
+
* @return int $trial_started_at Trial started at timestamp.
|
132 |
+
*
|
133 |
+
* @since 4.6.2
|
134 |
+
*/
|
135 |
+
public function get_trial_started_at() {
|
136 |
+
$trial_started_at = get_option( 'ig_es_trial_started_at', 0 );
|
137 |
+
return $trial_started_at;
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Method to show trial related notices to user.
|
142 |
+
*
|
143 |
+
* @since 4.6.2
|
144 |
+
*/
|
145 |
+
public function show_trial_notices() {
|
146 |
+
|
147 |
+
// Don't show trial notices untill onboarding is completed.
|
148 |
+
if ( ! IG_ES_Onboarding::is_onboarding_completed() ) {
|
149 |
+
return;
|
150 |
+
}
|
151 |
+
|
152 |
+
$is_trial = ES()->is_trial();
|
153 |
+
$is_premium = ES()->is_premium();
|
154 |
+
$is_premium_installed = ES()->is_premium_installed();
|
155 |
+
$current_page = ig_es_get_request_data( 'page' );
|
156 |
+
|
157 |
+
$show_trial_consent_notice = false;
|
158 |
+
|
159 |
+
// Add opt to trial notice if user has not already opted for it and is not a premium user and is not dashboard page.
|
160 |
+
if ( ! $is_trial && ! $is_premium && 'es_dashboard' !== $current_page ) {
|
161 |
+
// Check whether user has performed any action(accept/reject) on consent notice for trial. 'yes' if performed.
|
162 |
+
$trial_consent_given = get_option( 'ig_es_trial_consent', 'no' );
|
163 |
+
if ( 'yes' !== $trial_consent_given ) {
|
164 |
+
$show_trial_consent_notice = true;
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
if ( $show_trial_consent_notice ) {
|
169 |
+
ES_Admin_Notices::add_notice( 'trial_consent' );
|
170 |
+
} else {
|
171 |
+
ES_Admin_Notices::remove_notice( 'trial_consent' );
|
172 |
+
}
|
173 |
+
|
174 |
+
$show_offer_notice = false;
|
175 |
+
|
176 |
+
// Add upgrade to premium nudging notice if user has opted for trial and is not a premium user and premium plugin is not installed on site and is not dashboard page.
|
177 |
+
if ( $is_trial && ! $is_premium && ! $is_premium_installed && 'es_dashboard' !== $current_page ) {
|
178 |
+
|
179 |
+
// Start nudging the user on following days before trial expiration.
|
180 |
+
$nudging_days = array( 1, 3, 5 );
|
181 |
+
$min_nudging_day = min( $nudging_days );
|
182 |
+
$max_nudging_day = max( $nudging_days );
|
183 |
+
|
184 |
+
// Current day's number from start of trial.
|
185 |
+
$remaining_trial_days = ES()->trial->get_remaining_trial_days();
|
186 |
+
|
187 |
+
// User is in nudging period if remaining trial days are between minmum and maximum nudging days.
|
188 |
+
$is_in_nudging_period = $remaining_trial_days >= $min_nudging_day && $remaining_trial_days <= $max_nudging_day ? true : false;
|
189 |
+
|
190 |
+
// Start nudging the user if peried fall into nudging period.
|
191 |
+
if ( $is_in_nudging_period ) {
|
192 |
+
$current_nudging_day = 0;
|
193 |
+
|
194 |
+
foreach ( $nudging_days as $day ) {
|
195 |
+
if ( $remaining_trial_days <= $day ) {
|
196 |
+
// Get current nudging day i.e. 1 or 3 or 5
|
197 |
+
$current_nudging_day = $day;
|
198 |
+
break;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
|
202 |
+
// Check if we have a nudging day.
|
203 |
+
if ( ! empty( $current_nudging_day ) ) {
|
204 |
+
$notice_last_dismiss_date = get_option( 'ig_es_trial_to_premium_notice_date' );
|
205 |
+
// Always show notice if not already dismissed before.
|
206 |
+
if ( empty( $notice_last_dismiss_date ) ) {
|
207 |
+
$show_offer_notice = true;
|
208 |
+
} else {
|
209 |
+
$trial_expiry_date = ES()->trial->get_trial_expiry_date();
|
210 |
+
$date_diff_in_seconds = strtotime( $trial_expiry_date ) - strtotime( $notice_last_dismiss_date );
|
211 |
+
|
212 |
+
// Ceil function is used to round off to nearest upper limit integer, 4.1 would be 5.
|
213 |
+
$date_diff_in_days = ceil( $date_diff_in_seconds / DAY_IN_SECONDS );
|
214 |
+
|
215 |
+
// Check if current nudging day is after last dismissed date.
|
216 |
+
if ( $current_nudging_day < $date_diff_in_days ) {
|
217 |
+
$show_offer_notice = true;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
}
|
224 |
+
|
225 |
+
if ( $show_offer_notice ) {
|
226 |
+
$notice_args = array(
|
227 |
+
'include' => ES_PLUGIN_DIR . 'lite/includes/notices/views/trial-to-premium-offer.php',
|
228 |
+
);
|
229 |
+
ES_Admin_Notices::add_custom_notice( 'trial_to_premium', $notice_args );
|
230 |
+
} else {
|
231 |
+
ES_Admin_Notices::remove_notice( 'trial_to_premium' );
|
232 |
+
}
|
233 |
+
}
|
234 |
+
}
|
lite/includes/es-core-functions.php
CHANGED
@@ -790,18 +790,20 @@ if ( ! function_exists( 'ig_es_allowed_html_tags_in_esc' ) ) {
|
|
790 |
'viewbox' => true,
|
791 |
'xmlns' => true,
|
792 |
'class' => true,
|
793 |
-
'stroke-*'
|
794 |
'fill' => true,
|
795 |
'stroke' => true,
|
796 |
),
|
797 |
'path' => array(
|
798 |
-
'd'
|
799 |
-
'fill'
|
800 |
-
'class'
|
801 |
-
'fill-*'
|
802 |
-
'clip-*'
|
803 |
-
'stroke
|
804 |
-
'
|
|
|
|
|
805 |
),
|
806 |
|
807 |
'main' => array(
|
790 |
'viewbox' => true,
|
791 |
'xmlns' => true,
|
792 |
'class' => true,
|
793 |
+
'stroke-*' => true,
|
794 |
'fill' => true,
|
795 |
'stroke' => true,
|
796 |
),
|
797 |
'path' => array(
|
798 |
+
'd' => true,
|
799 |
+
'fill' => true,
|
800 |
+
'class' => true,
|
801 |
+
'fill-*' => true,
|
802 |
+
'clip-*' => true,
|
803 |
+
'stroke-linecap' => true,
|
804 |
+
'stroke-linejoin' => true,
|
805 |
+
'stroke-width' => true,
|
806 |
+
'fill-rule' => true,
|
807 |
),
|
808 |
|
809 |
'main' => array(
|
lite/includes/notices/class-es-admin-notices.php
CHANGED
@@ -21,7 +21,7 @@ class ES_Admin_Notices {
|
|
21 |
*/
|
22 |
private static $core_notices = array(
|
23 |
'update' => 'update_notice',
|
24 |
-
'trial_consent' => '
|
25 |
);
|
26 |
|
27 |
/**
|
@@ -192,11 +192,16 @@ class ES_Admin_Notices {
|
|
192 |
|
193 |
/**
|
194 |
* Show trial optin notice.
|
|
|
|
|
|
|
|
|
195 |
*/
|
196 |
-
public static function
|
197 |
|
198 |
-
|
199 |
-
|
|
|
200 |
}
|
201 |
}
|
202 |
|
@@ -209,7 +214,7 @@ class ES_Admin_Notices {
|
|
209 |
$option_name = ig_es_get_request_data( 'option_name' );
|
210 |
if ( '1' == $es_dismiss_admin_notice && ! empty( $option_name ) ) {
|
211 |
update_option( 'ig_es_' . $option_name, 'yes', false );
|
212 |
-
if ( in_array( $option_name, array( 'redirect_upsale_notice', 'dismiss_upsale_notice', 'dismiss_star_notice', 'star_notice_done' ) ) ) {
|
213 |
update_option( 'ig_es_' . $option_name . '_date', ig_get_current_date_time(), false );
|
214 |
}
|
215 |
|
@@ -228,10 +233,25 @@ class ES_Admin_Notices {
|
|
228 |
header( 'Location: https://www.icegram.com/email-subscribers-starter-plan-pricing/?utm_source=es&utm_medium=es_upsale_banner&utm_campaign=es_upsell' );
|
229 |
exit();
|
230 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
if ( 'offer_bfcm_done_2019' === $option_name || 'offer_last_day_bfcm_done_2019' === $option_name ) {
|
232 |
$url = 'https://www.icegram.com/?utm_source=in_app&utm_medium=es_banner&utm_campaign=' . $option_name;
|
233 |
header( "Location: {$url}" );
|
234 |
exit();
|
|
|
|
|
|
|
|
|
|
|
235 |
} else {
|
236 |
|
237 |
// Remove wp cron notice if user have acknowledged it.
|
21 |
*/
|
22 |
private static $core_notices = array(
|
23 |
'update' => 'update_notice',
|
24 |
+
'trial_consent' => 'show_trial_consent_notice',
|
25 |
);
|
26 |
|
27 |
/**
|
192 |
|
193 |
/**
|
194 |
* Show trial optin notice.
|
195 |
+
*
|
196 |
+
* @since 4.6.1
|
197 |
+
*
|
198 |
+
* @modified 4.6.2 Added not is_premium condition to disable notice when the user activates premium plugin after using the lite version.
|
199 |
*/
|
200 |
+
public static function show_trial_consent_notice() {
|
201 |
|
202 |
+
// Show notice only when onboarding is complete and plan is not premium.
|
203 |
+
if ( IG_ES_Onboarding::is_onboarding_completed() && ! ES()->is_premium() ) {
|
204 |
+
include dirname( __FILE__ ) . '/views/trial-consent.php';
|
205 |
}
|
206 |
}
|
207 |
|
214 |
$option_name = ig_es_get_request_data( 'option_name' );
|
215 |
if ( '1' == $es_dismiss_admin_notice && ! empty( $option_name ) ) {
|
216 |
update_option( 'ig_es_' . $option_name, 'yes', false );
|
217 |
+
if ( in_array( $option_name, array( 'redirect_upsale_notice', 'dismiss_upsale_notice', 'dismiss_star_notice', 'star_notice_done', 'trial_to_premium_notice' ) ) ) {
|
218 |
update_option( 'ig_es_' . $option_name . '_date', ig_get_current_date_time(), false );
|
219 |
}
|
220 |
|
233 |
header( 'Location: https://www.icegram.com/email-subscribers-starter-plan-pricing/?utm_source=es&utm_medium=es_upsale_banner&utm_campaign=es_upsell' );
|
234 |
exit();
|
235 |
}
|
236 |
+
|
237 |
+
if ( 'trial_to_premium_notice' === $option_name ) {
|
238 |
+
self::remove_notice( 'trial_to_premium' );
|
239 |
+
$action = ig_es_get_request_data( 'action' );
|
240 |
+
if ( 'ig_es_trial_to_premium_redirect' === $action ) {
|
241 |
+
header( 'Location: https://www.icegram.com/email-subscribers-starter-plan-pricing/?utm_source=in_app&utm_medium=es_trial_to_premium_notice&utm_campaign=es_trial_to_premium_notice' );
|
242 |
+
exit();
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
if ( 'offer_bfcm_done_2019' === $option_name || 'offer_last_day_bfcm_done_2019' === $option_name ) {
|
247 |
$url = 'https://www.icegram.com/?utm_source=in_app&utm_medium=es_banner&utm_campaign=' . $option_name;
|
248 |
header( "Location: {$url}" );
|
249 |
exit();
|
250 |
+
}
|
251 |
+
if ( 'offer_halloween_2020' === $option_name ) {
|
252 |
+
$url = 'https://www.icegram.com/?utm_source=in_app&utm_medium=es_banner&utm_campaign=' . $option_name;
|
253 |
+
header( "Location: {$url}" );
|
254 |
+
exit();
|
255 |
} else {
|
256 |
|
257 |
// Remove wp cron notice if user have acknowledged it.
|
lite/includes/notices/views/ig-es-halloween-offer.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style type="text/css">
|
2 |
+
.ig_es_offer {
|
3 |
+
width:55%;
|
4 |
+
margin: 0 auto;
|
5 |
+
text-align: center;
|
6 |
+
padding-top: 1.2em;
|
7 |
+
}
|
8 |
+
|
9 |
+
</style>
|
10 |
+
<?php
|
11 |
+
|
12 |
+
if ( ( get_option( 'ig_es_offer_halloween_2020' ) !== 'yes' ) && ( $ig_current_date >= strtotime( '2020-10-30' ) ) && ( $ig_current_date <= strtotime( '2020-11-02' ) )) { ?>
|
13 |
+
<div class="ig_es_offer">
|
14 |
+
<a target="_blank" href="?es_dismiss_admin_notice=1&option_name=offer_halloween_2020"><img src="<?php echo esc_url ( ES_PLUGIN_URL ); ?>/lite/admin/images/halloween_2020.png"/></a>
|
15 |
+
</div>
|
16 |
+
|
17 |
+
<?php } ?>
|
lite/includes/notices/views/{trial-optin.php → trial-consent.php}
RENAMED
@@ -27,7 +27,7 @@ $optout_url = wp_nonce_url(
|
|
27 |
<div class="notice notice-success">
|
28 |
<p>
|
29 |
<?php
|
30 |
-
echo esc_html( 'Start your
|
31 |
?>
|
32 |
<br/>
|
33 |
<a href="<?php echo esc_url( $optin_url ); ?>" class="ig-es-primary-button px-3 py-1 mt-2 align-middle">
|
27 |
<div class="notice notice-success">
|
28 |
<p>
|
29 |
<?php
|
30 |
+
echo esc_html( sprintf( 'Start your %s days free trial of Email Subscribers’ premium services like email delivery check, spam protection, cron handling & lot more..', ES()->trial->get_trial_period( 'in_days' ) ), 'email-subscribers' );
|
31 |
?>
|
32 |
<br/>
|
33 |
<a href="<?php echo esc_url( $optin_url ); ?>" class="ig-es-primary-button px-3 py-1 mt-2 align-middle">
|
lite/includes/notices/views/trial-to-premium-offer.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin View: Notice - Trial To Premium Offer
|
4 |
+
*/
|
5 |
+
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
$referer = wp_get_referer();
|
11 |
+
|
12 |
+
$notice_optin_action = 'ig_es_trial_to_premium_redirect';
|
13 |
+
|
14 |
+
$optin_url = wp_nonce_url(
|
15 |
+
add_query_arg(
|
16 |
+
array(
|
17 |
+
'es_dismiss_admin_notice' => 1,
|
18 |
+
'option_name' => 'trial_to_premium_notice',
|
19 |
+
'action' => $notice_optin_action,
|
20 |
+
),
|
21 |
+
$referer
|
22 |
+
),
|
23 |
+
$notice_optin_action
|
24 |
+
);
|
25 |
+
|
26 |
+
$notice_optout_action = 'ig_es_trial_to_premium_dismiss';
|
27 |
+
|
28 |
+
$optout_url = wp_nonce_url(
|
29 |
+
add_query_arg(
|
30 |
+
array(
|
31 |
+
'es_dismiss_admin_notice' => 1,
|
32 |
+
'option_name' => 'trial_to_premium_notice',
|
33 |
+
'action' => $notice_optout_action,
|
34 |
+
),
|
35 |
+
$referer
|
36 |
+
),
|
37 |
+
$notice_optout_action
|
38 |
+
);
|
39 |
+
|
40 |
+
$remaining_trial_days = ES()->trial->get_remaining_trial_days();
|
41 |
+
$day_or_days = _n( 'day', 'days', $remaining_trial_days, 'email-subscribers' );
|
42 |
+
|
43 |
+
$discount_messages = array(
|
44 |
+
'halloween' => array(
|
45 |
+
'message' => __( 'Get flat <strong>20%</strong> discount on annual plan and <strong>35%</strong> discount on lifetime plan if you upgrade now!<br/><strong>No coupon code</strong> required. Discount will be applied automatically.', 'email-subscribers' ),
|
46 |
+
),
|
47 |
+
'bfcm' => array(
|
48 |
+
'message' => __( 'Get flat <strong>20%</strong> discount on annual plan and <strong>35%</strong> discount on lifetime plan if you upgrade now!<br/><strong>No coupon code</strong> required. Discount will be applied automatically.', 'email-subscribers' ),
|
49 |
+
),
|
50 |
+
);
|
51 |
+
|
52 |
+
$offer_type_to_show = 'trial';
|
53 |
+
|
54 |
+
$offers_date_ranges = array(
|
55 |
+
'halloween' => array(
|
56 |
+
'start_date' => '2020-10-30',
|
57 |
+
'end_date' => '2020-11-02',
|
58 |
+
),
|
59 |
+
'bfcm' => array(
|
60 |
+
'start_date' => '2020-11-25',
|
61 |
+
'end_date' => '2020-12-02',
|
62 |
+
),
|
63 |
+
);
|
64 |
+
|
65 |
+
foreach ( $offers_date_ranges as $offer_type => $offer_dates ) {
|
66 |
+
$offer_start_date = $offer_dates['start_date'];
|
67 |
+
$offer_end_date = $offer_dates['end_date'];
|
68 |
+
|
69 |
+
if ( ( $ig_current_date >= strtotime( $offer_start_date ) ) && ( $ig_current_date <= strtotime( $offer_end_date ) ) ) {
|
70 |
+
$offer_type_to_show = $offer_type;
|
71 |
+
break;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
$trial_expiration_message = '';
|
76 |
+
if ( $remaining_trial_days > 1 ) {
|
77 |
+
/* translators: 1. Remaining trial days. 2. day or days text based on number of remaining trial days. */
|
78 |
+
$trial_expiration_message = sprintf( __( 'Your free trial is going to <strong>expire in %1$s %2$s</strong>.', 'email-subscribers' ), $remaining_trial_days, $day_or_days);
|
79 |
+
} else {
|
80 |
+
$trial_expiration_message = __( 'Today is the <strong>last day</strong> of your free trial.', 'email-subscribers' );
|
81 |
+
}
|
82 |
+
|
83 |
+
// Add default value to message.
|
84 |
+
$discount_message = __( 'Get flat <strong>10%</strong> discount if you upgrade now!<br/>Use coupon code <span class="ml-2 px-1.5 py-1 font-medium bg-yellow-100 rounded-md border-2 border-dotted border-indigo-300 select-all">PREMIUM10</span> during checkout.', 'email-subscribers' );
|
85 |
+
$offer_cta_optin_text = __( 'Upgrade now', 'email-subscribers' );
|
86 |
+
$offer_cta_optout_text = __( 'No, it\'s ok', 'email-subscribers' );
|
87 |
+
|
88 |
+
// Override offer message with current active offer message.
|
89 |
+
if ( ! empty( $discount_messages[ $offer_type_to_show ] ) ) {
|
90 |
+
$discount_message = ! empty( $discount_messages[ $offer_type_to_show ]['message'] ) ? $discount_messages[ $offer_type_to_show ]['message'] : $discount_message;
|
91 |
+
}
|
92 |
+
|
93 |
+
/* translators: 1. Trial expiration message. 2. Discount message. */
|
94 |
+
$offer_message = sprintf( __( 'Hi there,<br/>Hope you are enjoying <strong>Email Subscribers PRO trial</strong>.<br/>%1$s<br/>Upgrade now to continue uninterrupted use of premium features like <strong>block fake signups, prevent bot attacks, broadcast scheduling, automatic email sending, detailed campaign report, prevent emails from going to spam</strong> & lot more....<br/>%2$s', 'email-subscribers' ), $trial_expiration_message, $discount_message );
|
95 |
+
|
96 |
+
?>
|
97 |
+
<div id="ig-es-trial-to-premium-notice" class="notice notice-success">
|
98 |
+
<p>
|
99 |
+
<?php
|
100 |
+
echo wp_kses_post( $offer_message );
|
101 |
+
?>
|
102 |
+
<br/>
|
103 |
+
<a href="<?php echo esc_url( $optin_url ); ?>" target="_blank" id="ig-es-optin-trial-to-premium-offer" class="ig-es-primary-button px-3 py-1 mt-2 align-middle">
|
104 |
+
<?php
|
105 |
+
echo esc_html( $offer_cta_optin_text );
|
106 |
+
?>
|
107 |
+
</a>
|
108 |
+
<a href="<?php echo esc_url( $optout_url ); ?>" class="ig-es-title-button px-3 py-1 mt-2 ml-2 align-middle">
|
109 |
+
<?php
|
110 |
+
echo esc_html( $offer_cta_optout_text );
|
111 |
+
?>
|
112 |
+
</a>
|
113 |
+
</p>
|
114 |
+
</div>
|
lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php
CHANGED
@@ -70,6 +70,14 @@ if ( ! class_exists( 'IG_ES_Premium_Services_UI' ) ) {
|
|
70 |
add_action( 'add_meta_boxes', array( &$this, 'add_metaboxes' ) );
|
71 |
add_action( 'ig_es_after_broadcast_right_pan_settings', array( &$this, 'add_check_spam_score_button' ) );
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
}
|
74 |
}
|
75 |
|
@@ -234,5 +242,115 @@ if ( ! class_exists( 'IG_ES_Premium_Services_UI' ) ) {
|
|
234 |
</div>
|
235 |
<?php
|
236 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
}
|
238 |
}
|
70 |
add_action( 'add_meta_boxes', array( &$this, 'add_metaboxes' ) );
|
71 |
add_action( 'ig_es_after_broadcast_right_pan_settings', array( &$this, 'add_check_spam_score_button' ) );
|
72 |
}
|
73 |
+
|
74 |
+
// Add UI for utm tracking only if service is valid.
|
75 |
+
if ( ES()->validate_service_request( array( 'utm_tracking' ) ) ) {
|
76 |
+
add_action( 'add_meta_boxes', array( &$this, 'register_utm_tracking_metabox' ) );
|
77 |
+
add_action( 'ig_es_save_template', array( &$this, 'save_utm_campaign' ), 10, 2 );
|
78 |
+
add_action( 'ig_es_after_broadcast_tracking_options_settings', array( &$this, 'add_broadcast_utm_tracking_option' ) );
|
79 |
+
add_filter( 'ig_es_registered_settings', array( &$this, 'add_utm_tracking_option_in_settings' ), 10, 2 );
|
80 |
+
}
|
81 |
}
|
82 |
}
|
83 |
|
242 |
</div>
|
243 |
<?php
|
244 |
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Method to show available tracking option in pro version
|
248 |
+
*
|
249 |
+
* @param array $broadcast_data
|
250 |
+
*
|
251 |
+
* @return void
|
252 |
+
*/
|
253 |
+
public function add_broadcast_utm_tracking_option( $broadcast_data = array() ) {
|
254 |
+
$enable_utm_tracking = ! empty( $broadcast_data['meta']['enable_utm_tracking'] ) ? $broadcast_data['meta']['enable_utm_tracking'] : get_option( 'ig_es_track_utm', 'no' );
|
255 |
+
|
256 |
+
$campaign_name = ! empty( $broadcast_data['meta']['es_utm_campaign'] ) ? $broadcast_data['meta']['es_utm_campaign'] : '';
|
257 |
+
|
258 |
+
?>
|
259 |
+
|
260 |
+
<div class="flex mt-3 pb-1 w-full">
|
261 |
+
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'UTM tracking', 'email-subscribers' ); ?>
|
262 |
+
</div>
|
263 |
+
|
264 |
+
<div>
|
265 |
+
<label for="enable_utm_tracking" class=" inline-flex items-center cursor-pointer">
|
266 |
+
<span class="relative">
|
267 |
+
<input id="enable_utm_tracking" name="broadcast_data[meta][enable_utm_tracking]" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" value="yes" <?php checked( $enable_utm_tracking, 'yes' ); ?>
|
268 |
+
/>
|
269 |
+
<span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
|
270 |
+
<span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
|
271 |
+
</span>
|
272 |
+
</label>
|
273 |
+
</div>
|
274 |
+
</div>
|
275 |
+
<div class="py-1 ig_es_broadcast_campaign_name_wrapper <?php echo 'no' === $enable_utm_tracking ? esc_attr( 'hidden' ) : ''; ?>">
|
276 |
+
<input name="broadcast_data[meta][es_utm_campaign]" placeholder="<?php echo esc_html__( 'Campaign Name', 'email-subscribers' ); ?>" id="es_utm_campaign" class="form-input border-gray-400 text-sm relative rounded-md shadow-sm block w-2/4 sm:leading-5" value="<?php echo esc_attr( $campaign_name ); ?>">
|
277 |
+
</div>
|
278 |
+
<?php
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Method to register UTM tracking side metabox on ES template page
|
283 |
+
*
|
284 |
+
* @since 4.6.2
|
285 |
+
*/
|
286 |
+
public function register_utm_tracking_metabox() {
|
287 |
+
$meta_box_title_for_utm = __( 'Google Analytics link tracking', 'email-subscribers' );
|
288 |
+
add_meta_box( 'es_utm', $meta_box_title_for_utm, array( &$this, 'add_utm_tracking_metabox' ), 'es_template', 'side', 'default' );
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Method to add UTM tracking metabox on ES template page
|
293 |
+
*
|
294 |
+
* @since 4.6.2
|
295 |
+
*/
|
296 |
+
public function add_utm_tracking_metabox() {
|
297 |
+
global $post;
|
298 |
+
$es_utm_campaign = get_post_meta( $post->ID, 'es_utm_campaign', true );
|
299 |
+
$es_utm_campaign = ! empty( $es_utm_campaign ) ? $es_utm_campaign : '';
|
300 |
+
?>
|
301 |
+
<label class="es_utm_label"><span class="font-medium text-sm text-gray-700"><?php echo esc_html__( 'Campaign Name', 'email-subscribers' ); ?></span><span class="help_tip es_help_tip"
|
302 |
+
data-tip="<?php echo sprintf( esc_html__( 'This will be appended to every URL in this template with parameters: utm_source=es&utm_medium=email&utm_campaign=campaign_name', 'email-subscribers' ) ); ?>"></span> </label><br>
|
303 |
+
<input style="margin: 0.20rem 0;" type="text" name="es_utm_campaign" value="<?php echo esc_attr( $es_utm_campaign ); ?>" placeholder="<?php echo esc_html__( 'Campaign Name', 'email-subscribers' ); ?>" id="es_utm_campaign"/><br/>
|
304 |
+
<?php
|
305 |
+
}
|
306 |
+
|
307 |
+
/**
|
308 |
+
* Method to save utm campaign name
|
309 |
+
*
|
310 |
+
* @param $post_id
|
311 |
+
* @param $post
|
312 |
+
*
|
313 |
+
* @since 4.6.2
|
314 |
+
*/
|
315 |
+
public function save_utm_campaign( $post_id, $post ) {
|
316 |
+
|
317 |
+
if ( ! empty( $_POST['_wpnonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'update-post_' . $post_id ) ) {
|
318 |
+
|
319 |
+
$es_utm_campaign = ig_es_get_data( $_POST, 'es_utm_campaign', false );
|
320 |
+
if ( false !== $es_utm_campaign ) {
|
321 |
+
update_post_meta( $post_id, 'es_utm_campaign', $es_utm_campaign );
|
322 |
+
}
|
323 |
+
}
|
324 |
+
}
|
325 |
+
|
326 |
+
/**
|
327 |
+
* Method to add UTM tracking option in settings.
|
328 |
+
*
|
329 |
+
* @param array $fields Setting fields
|
330 |
+
*
|
331 |
+
* @return array $fields Setting fields
|
332 |
+
*
|
333 |
+
* @since 4.6.2
|
334 |
+
*/
|
335 |
+
public function add_utm_tracking_option_in_settings( $fields ) {
|
336 |
+
|
337 |
+
// UTM tracking option
|
338 |
+
$track_utm = array(
|
339 |
+
'ig_es_track_utm' => array(
|
340 |
+
'id' => 'ig_es_track_utm',
|
341 |
+
'name' => __( 'UTM tracking', 'email-subscribers' ),
|
342 |
+
'type' => 'checkbox',
|
343 |
+
'default' => 'no'
|
344 |
+
)
|
345 |
+
);
|
346 |
+
|
347 |
+
$general_fields = $fields['general'];
|
348 |
+
|
349 |
+
$general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_link_click', $track_utm );
|
350 |
+
|
351 |
+
$fields['general'] = $general_fields;
|
352 |
+
|
353 |
+
return $fields;
|
354 |
+
}
|
355 |
}
|
356 |
}
|
lite/includes/pro-features.php
CHANGED
@@ -15,14 +15,17 @@ add_action( 'ig_es_sync_users_tabs_wpforms', 'ig_es_add_wpforms_tab_settings' );
|
|
15 |
add_action( 'ig_es_sync_users_tabs_ninja_forms', 'ig_es_add_ninja_forms_tab_settings' );
|
16 |
add_action( 'ig_es_sync_users_tabs_edd', 'ig_es_add_edd_tab_settings' );
|
17 |
|
|
|
|
|
|
|
18 |
add_action( 'edit_form_advanced', 'add_spam_score_utm_link' );
|
19 |
|
20 |
add_action( 'ig_es_add_additional_options', 'ig_es_add_captcha_option', 10, 1 );
|
21 |
add_action( 'ig_es_after_broadcast_content_left_pan_settings', 'ig_es_additional_send_email_option');
|
22 |
-
add_action( 'ig_es_after_broadcast_tracking_options_settings', '
|
23 |
-
add_action( 'ig_es_broadcast_scheduling_options_settings', 'ig_es_additional_schedule_option');
|
24 |
-
add_action( 'ig_es_after_broadcast_right_pan_settings', 'ig_es_additional_spam_score_option');
|
25 |
-
add_action( 'ig_es_add_multilist_options', '
|
26 |
add_action( 'ig_es_view_report_data', 'ig_es_view_additional_reports_data');
|
27 |
|
28 |
/**
|
@@ -36,7 +39,7 @@ add_action( 'ig_es_view_report_data', 'ig_es_view_additional_reports_data');
|
|
36 |
*/
|
37 |
function ig_es_mailers_promo( $mailers ) {
|
38 |
|
39 |
-
if (
|
40 |
|
41 |
$mailers['smtp'] = array(
|
42 |
'name' => 'SMTP',
|
@@ -142,7 +145,7 @@ function render_user_permissions_settings_fields_premium() {
|
|
142 |
*/
|
143 |
function ig_es_add_settings_tabs( $es_settings_tabs ) {
|
144 |
|
145 |
-
if (
|
146 |
$es_settings_tabs['user_roles'] = array( 'icon' => '<svg class="w-6 h-6 inline -mt-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>', 'name' => __( 'User Roles', 'email-subscribers' ) );
|
147 |
}
|
148 |
|
@@ -158,12 +161,13 @@ function ig_es_add_settings_tabs( $es_settings_tabs ) {
|
|
158 |
*/
|
159 |
function ig_es_add_upsale( $fields ) {
|
160 |
|
161 |
-
if (
|
162 |
|
163 |
$utm_args = array(
|
164 |
'utm_medium' => 'track_clicks'
|
165 |
);
|
166 |
|
|
|
167 |
$premium_url = ES_Common::get_utm_tracking_url( $utm_args );
|
168 |
// General Settings
|
169 |
$track_link_click = array(
|
@@ -176,18 +180,15 @@ function ig_es_add_upsale( $fields ) {
|
|
176 |
'link' => $premium_url,
|
177 |
'disabled' => true,
|
178 |
/* translators: %s: Icegram Pricing page url with utm tracking */
|
179 |
-
'upgrade_title' =>
|
180 |
-
'upgrade_desc' => __( '
|
181 |
)
|
182 |
);
|
|
|
183 |
|
184 |
-
|
185 |
-
'utm_medium' => 'track_utm'
|
186 |
-
);
|
187 |
-
|
188 |
-
$premium_url = ES_Common::get_utm_tracking_url( $utm_args );
|
189 |
|
190 |
-
|
191 |
'ig_es_track_utm' => array(
|
192 |
'id' => 'ig_es_track_utm',
|
193 |
'name' => __( 'UTM Tracking', 'email-subscribers' ),
|
@@ -196,22 +197,14 @@ function ig_es_add_upsale( $fields ) {
|
|
196 |
'is_premium' => true,
|
197 |
'link' => $premium_url,
|
198 |
'disabled' => true,
|
199 |
-
/* translators: %s: Icegram Pricing page url with utm tracking */
|
200 |
-
'upgrade_title' => sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ),
|
201 |
-
'upgrade_desc' => __( 'Get insights about UTM tracking.', 'email-subscribers' )
|
202 |
-
|
203 |
)
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
$general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
|
209 |
-
$general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_link_click', $track_utm );
|
210 |
-
|
211 |
$fields['general'] = $general_fields;
|
212 |
}
|
213 |
|
214 |
-
if (
|
215 |
|
216 |
$utm_args = array(
|
217 |
'utm_medium' => 'enable_captcha'
|
@@ -228,7 +221,10 @@ function ig_es_add_upsale( $fields ) {
|
|
228 |
'default' => 'no',
|
229 |
'is_premium' => true,
|
230 |
'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'known_attackers' ) ),
|
231 |
-
'disabled' => true
|
|
|
|
|
|
|
232 |
);
|
233 |
|
234 |
$managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
|
@@ -252,9 +248,6 @@ function ig_es_add_upsale( $fields ) {
|
|
252 |
'is_premium' => true,
|
253 |
'link' => $premium_url,
|
254 |
'disabled' => true,
|
255 |
-
/* translators: %s: Icegram Pricing page url with utm tracking */
|
256 |
-
'upgrade_title' => sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ),
|
257 |
-
'upgrade_desc' => __( 'Secure your form and avoid spam signups with form Captcha', 'email-subscribers' ),
|
258 |
);
|
259 |
|
260 |
$fields['security_settings'] = array_merge( $fields['security_settings'], $fake_domains, $managed_blocked_domains, $field_captcha );
|
@@ -277,7 +270,7 @@ function ig_es_add_sync_users_tabs( $tabs ) {
|
|
277 |
global $ig_es_tracker;
|
278 |
|
279 |
// Show integrations only if ES Premium is not installed.
|
280 |
-
if ( ! ES()->is_starter() ) {
|
281 |
|
282 |
$tabs['comments'] = array(
|
283 |
'name' => __( 'Comments', 'email-subscribers' ),
|
@@ -610,6 +603,63 @@ function ig_es_add_edd_tab_settings( $tab_options ) {
|
|
610 |
<?php
|
611 |
}
|
612 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
613 |
|
614 |
function add_spam_score_utm_link() {
|
615 |
global $post, $pagenow, $ig_es_tracker;
|
@@ -617,7 +667,7 @@ function add_spam_score_utm_link() {
|
|
617 |
return;
|
618 |
}
|
619 |
|
620 |
-
if (
|
621 |
?>
|
622 |
<script>
|
623 |
jQuery('#submitdiv').after('<div class="es_upsale"><a style="text-decoration:none;" target="_blank" href="https://www.icegram.com/documentation/how-ready-made-template-in-in-email-subscribers-look/?utm_source=in_app&utm_medium=es_template&utm_campaign=es_upsell"><img title="Get readymade templates" style="width:100%;border:0.3em #d46307 solid" src="<?php echo esc_url( ES_PLUGIN_URL ); ?>lite/admin/images/starter-tmpl.png"/><p style="background: #d46307; color: #FFF; padding: 4px; width: 100%; text-align:center">Get readymade beautiful email templates</p></a></div>');
|
@@ -635,28 +685,36 @@ function add_spam_score_utm_link() {
|
|
635 |
*/
|
636 |
function ig_es_add_captcha_option( $form_data ) {
|
637 |
|
638 |
-
if (
|
639 |
|
640 |
$utm_args = array(
|
641 |
'utm_medium' => 'es_form_captcha'
|
642 |
);
|
643 |
|
644 |
-
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
645 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
646 |
?>
|
647 |
|
648 |
<div class="flex border-b border-gray-100 ">
|
649 |
-
<div class="w-
|
650 |
<div class="flex flex-row w-full">
|
651 |
<div class="flex w-2/4">
|
652 |
<div class="ml-4 mr-8 mr-4 pt-4 mb-2">
|
653 |
-
<label for="tag-link"
|
654 |
-
|
|
|
|
|
655 |
</div>
|
656 |
</div>
|
657 |
<div class="flex">
|
658 |
-
<div class="
|
659 |
-
<label
|
660 |
<span class="relative">
|
661 |
<span class="es-mail-toggle-line"></span>
|
662 |
<span class="es-mail-toggle-dot"></span>
|
@@ -667,90 +725,89 @@ function ig_es_add_captcha_option( $form_data ) {
|
|
667 |
</div>
|
668 |
</div>
|
669 |
|
670 |
-
<div class="w-3/6
|
671 |
-
|
672 |
-
<div class="px-2 pt-2 pb-2">
|
673 |
-
<div class="flex">
|
674 |
-
<div class="flex-shrink-0">
|
675 |
-
<svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
|
676 |
-
<path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
|
677 |
-
</svg>
|
678 |
-
</div>
|
679 |
-
<div class="ml-3">
|
680 |
-
<h3 class="text-sm leading-5 font-medium text-blue-800">
|
681 |
-
<?php
|
682 |
-
/* translators: 1: Anchor opening tag with href attribute 2: Target attribute 3: Anchor closing tag */
|
683 |
-
echo sprintf( esc_html__('%1$s' . esc_url( $pricing_url ) . '%2$s Upgrade to ES PRO %3$s', 'email-subscribers' ), '<a href=', ' target="_blank">', '</a>' );
|
684 |
-
?>
|
685 |
-
</h3>
|
686 |
-
<div class="mt-2 text-sm leading-5 text-teal-700">
|
687 |
-
<p>
|
688 |
-
<?php esc_html_e( 'Secure your form and avoid spam signups with form Captcha', 'email-subscribers' ); ?>
|
689 |
-
|
690 |
-
<?php
|
691 |
-
if (ES_Common::can_show_coupon('PREMIUM10')) {
|
692 |
-
/* translators: 1: Bold opening tag 2: Percentage sign 3: Bold closing tag 4: Break Tags 5: Bold opening tag 6: Bold closing tag */
|
693 |
-
echo sprintf( esc_html__( 'Get %1$s 10%2$s flat discount %3$s if you upgrade now!. %4$s Use coupon code %5$sPREMIUM10 %6$s', 'email-subscribers' ), '</b>', '%', '</b>', '<br/><br/>', '<b>', '</b>' );
|
694 |
-
}
|
695 |
-
?>
|
696 |
-
</p>
|
697 |
-
</div>
|
698 |
-
</div>
|
699 |
-
</div>
|
700 |
-
</div>
|
701 |
-
</div>
|
702 |
</div>
|
703 |
</div>
|
704 |
<?php
|
705 |
}
|
706 |
}
|
707 |
|
708 |
-
function
|
709 |
-
|
710 |
-
if ( ! ES()->is_premium_installed() ) {
|
711 |
|
|
|
|
|
712 |
$utm_args = array(
|
713 |
'utm_medium' => 'post_notifications_multiple_lists'
|
714 |
);
|
715 |
|
716 |
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
717 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
718 |
?>
|
719 |
-
<
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
</h3>
|
735 |
-
<div class="mt-2 text-sm leading-5 text-teal-700">
|
736 |
-
<p>
|
737 |
-
<?php esc_html_e( 'Get rid of setting Post Notifications for each list and avoid chances of sending duplicate emails to your subscribers.', 'email-subscribers' ); ?>
|
738 |
-
<br /><br />
|
739 |
-
<?php esc_html_e( ' Upgrade to Email Subscribers PRO and select multiple lists.', 'email-subscribers' ); ?>
|
740 |
-
<br /><br />
|
741 |
-
<?php
|
742 |
-
if (ES_Common::can_show_coupon('PREMIUM10')) {
|
743 |
-
/* translators: 1: Bold opening tag 2: Percentage sign 3: Bold closing tag 4: Break Tags 5: Bold opening tag 6: Bold closing tag */
|
744 |
-
echo sprintf( esc_html__( 'Get %1$s 10%2$s flat discount %3$s if you upgrade now!. %4$s Use coupon code %5$sPREMIUM10 %6$s', 'email-subscribers' ), '</b>', '%', '</b>', '<br/><br/>', '<b>', '</b>' );
|
745 |
-
}
|
746 |
-
?>
|
747 |
-
</p>
|
748 |
-
</div>
|
749 |
-
</div>
|
750 |
-
</div>
|
751 |
</div>
|
752 |
-
</
|
753 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
<?php
|
755 |
}
|
756 |
|
@@ -758,12 +815,14 @@ function ig_es_additional_multilist_option() {
|
|
758 |
|
759 |
function ig_es_additional_send_email_option() {
|
760 |
|
761 |
-
if (
|
762 |
?>
|
763 |
|
764 |
<div>
|
765 |
-
<input type="radio" name="preview_option" disabled="disabled" class="form-radio" id="preview_in_email" value="" >
|
766 |
-
<label class=" text-sm font-normal leading-5 text-gray-
|
|
|
|
|
767 |
<div id="preview_in_email" class="display_email_field px-4">
|
768 |
<div class="flex py-2" >
|
769 |
<div class="flex w-5/6">
|
@@ -775,144 +834,118 @@ function ig_es_additional_send_email_option() {
|
|
775 |
}
|
776 |
}
|
777 |
|
778 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
779 |
|
780 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
781 |
?>
|
782 |
-
|
783 |
-
|
784 |
-
<
|
785 |
-
|
786 |
-
|
787 |
-
<div>
|
788 |
-
<label for="enable_link_tracking" class=" inline-flex items-center cursor-pointer">
|
789 |
-
<span class="relative">
|
790 |
-
<span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
|
791 |
-
<span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
|
792 |
-
</span>
|
793 |
-
</label>
|
794 |
-
</div>
|
795 |
</div>
|
796 |
|
797 |
-
<div
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
<span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
|
805 |
-
<span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
|
806 |
-
</span>
|
807 |
-
</label>
|
808 |
-
</div>
|
809 |
</div>
|
|
|
810 |
|
811 |
-
|
812 |
<?php
|
813 |
}
|
814 |
|
815 |
-
|
816 |
-
|
817 |
-
function ig_es_additional_schedule_option() {
|
818 |
|
819 |
-
|
|
|
|
|
|
|
|
|
820 |
|
821 |
-
|
822 |
-
|
823 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
824 |
|
825 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
826 |
?>
|
827 |
-
|
828 |
-
<
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
</div>
|
841 |
-
<div>
|
842 |
-
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-600 w-5 h-5 my-1 ml-2"><path d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg>
|
843 |
-
</div>
|
844 |
</div>
|
845 |
-
<div
|
846 |
-
<
|
847 |
-
|
848 |
-
|
|
|
|
|
|
|
|
|
849 |
|
850 |
-
</div>
|
851 |
-
<div>
|
852 |
-
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-600 w-5 h-5 my-1 ml-2 float-right"><path d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
853 |
-
</div>
|
854 |
</div>
|
855 |
-
<div
|
856 |
-
<
|
857 |
-
<h3 class="text-gray-700 text-sm font-normal"><?php echo esc_html__( 'Local Time: ', 'email-subscribers' ); ?>
|
858 |
-
<?php echo esc_attr( date_i18n('Y-m-d H:i A' ) ); ?>
|
859 |
-
</h3>
|
860 |
-
</div>
|
861 |
</div>
|
862 |
</div>
|
863 |
-
|
864 |
-
<div class="block py-2 mt-
|
865 |
-
<
|
866 |
-
|
867 |
-
|
868 |
-
<div class="flex-shrink-0">
|
869 |
-
<svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
|
870 |
-
<path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
|
871 |
-
</svg>
|
872 |
-
</div>
|
873 |
-
<div class="ml-3">
|
874 |
-
<h3 class="text-sm leading-5 font-medium text-blue-800">
|
875 |
-
<?php
|
876 |
-
/* translators: 1: Anchor opening tag with href attribute 2: Target attribute 3: Anchor closing tag */
|
877 |
-
echo sprintf( esc_html__('%1$s' . esc_url( $premium_url ) . '%2$s Upgrade to ES PRO %3$s', 'email-subscribers' ), '<a href=', ' target="_blank">', '</a>' );
|
878 |
-
?>
|
879 |
-
</h3>
|
880 |
-
<div class="mt-2 text-sm leading-5 text-teal-700">
|
881 |
-
<p>
|
882 |
-
<?php esc_html_e( 'Link Tracking, UTM Tracking and Scheduling Options are part of Email Subscribers PRO', 'email-subscribers' ); ?>
|
883 |
-
<?php
|
884 |
-
if (ES_Common::can_show_coupon('PREMIUM10')) {
|
885 |
-
echo '<br /><br />';
|
886 |
-
/* translators: 1: Bold opening tag 2: Percentage sign 3: Bold closing tag 4: Break Tags 5: Bold opening tag 6: Bold closing tag */
|
887 |
-
echo sprintf( esc_html__( 'Get %1$s 10%2$s flat discount %3$s if you upgrade now!. %4$s Use coupon code %5$sPREMIUM10 %6$s', 'email-subscribers' ), '</b>', '%', '</b>', '<br/><br/>', '<b>', '</b>' );
|
888 |
-
}
|
889 |
-
?>
|
890 |
-
</p>
|
891 |
-
</div>
|
892 |
-
</div>
|
893 |
-
</div>
|
894 |
-
</div>
|
895 |
-
</div>
|
896 |
</div>
|
897 |
</div>
|
898 |
</div>
|
|
|
|
|
|
|
|
|
|
|
899 |
<?php
|
900 |
}
|
901 |
}
|
902 |
|
903 |
-
function ig_es_additional_spam_score_option() {
|
904 |
-
if ( ES()->can_upsell_features( array( 'lite', 'starter' ) ) ) {
|
905 |
-
?>
|
906 |
-
|
907 |
-
<div class="block mx-4 my-3">
|
908 |
-
<span class="pt-3 text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Get spam score', 'email-subscribers'); ?><span class=" mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php esc_html_e('Premium', 'email-subscribers' ); ?></span></span>
|
909 |
-
<button type="button" id="spam_score" disabled class="float-right es_spam rounded-md border text-indigo-600 border-indigo-500 text-sm leading-5 font-medium inline-flex justify-center px-3 py-1"><?php echo esc_html__( 'Check', 'email-subscribers' ); ?>
|
910 |
-
</button>
|
911 |
-
</div>
|
912 |
-
<?php
|
913 |
-
}
|
914 |
-
|
915 |
-
}
|
916 |
|
917 |
/**
|
918 |
* Campaign reports data
|
@@ -921,43 +954,23 @@ function ig_es_additional_spam_score_option() {
|
|
921 |
*/
|
922 |
|
923 |
function ig_es_view_additional_reports_data() {
|
924 |
-
if (
|
925 |
$utm_args = array(
|
926 |
'utm_medium' => 'campaign_insight'
|
927 |
);
|
928 |
|
929 |
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
|
|
|
|
|
|
|
|
|
|
|
|
930 |
?>
|
931 |
<div>
|
932 |
<div class="campaign_open_overlay lg:w-3/5 xl:w-2/5 h-0 z-40 sticky">
|
933 |
-
<div
|
934 |
-
|
935 |
-
<div>
|
936 |
-
<svg class='inline-block align-middle h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
|
937 |
-
<path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
|
938 |
-
</svg>
|
939 |
-
<h3 class="inline-block align-middle ml-2 text-sm leading-5 font-medium text-blue-800">
|
940 |
-
<?php
|
941 |
-
/* translators: 1: Anchor opening tag with href attribute 2: Target attribute 3: Anchor closing tag */
|
942 |
-
echo sprintf( esc_html__('%1$s' . esc_url( $pricing_url ) . '%2$s Upgrade to ES PRO %3$s', 'email-subscribers' ), '<a href=', ' target="_blank">', '</a>' );
|
943 |
-
?>
|
944 |
-
</h3>
|
945 |
-
<div class="mt-2 text-sm leading-5 text-teal-700">
|
946 |
-
<p><?php esc_html_e( 'Get campaign insights like geo location, device info, email client info, open/ click activity etc with Email Subscribers PRO.', 'email-subscribers' ); ?>
|
947 |
-
<br /><br />
|
948 |
-
<?php
|
949 |
-
if (ES_Common::can_show_coupon('PREMIUM10')) {
|
950 |
-
/* translators: 1: Bold opening tag 2: Percentage sign 3: Bold closing tag 4: Break Tags 5: Bold opening tag 6: Bold closing tag */
|
951 |
-
echo sprintf( esc_html__( 'Get %1$s 10%2$s flat discount %3$s if you upgrade now!. %4$s Use coupon code %5$sPREMIUM10 %6$s', 'email-subscribers' ), '</b>', '%', '</b>', '<br/><br/>', '<b>', '</b>' );
|
952 |
-
}
|
953 |
-
?>
|
954 |
-
</p>
|
955 |
-
</div>
|
956 |
-
</div>
|
957 |
-
</div>
|
958 |
-
<div class="pt-4 text-center">
|
959 |
-
<a href="<?php echo esc_attr( $pricing_url ); ?>" target="_blank" class="rounded-md border border-transparent px-3 py-2 bg-white text-sm leading-7 font-medium text-white bg-indigo-600 transition ease-in-out duration-150 mt-2"><?php esc_html_e('Upgrade', 'email-subscribers'); ?></a>
|
960 |
-
</div>
|
961 |
</div>
|
962 |
</div>
|
963 |
<div class="wrap max-w-7xl cursor-default campaign_open_blur font-sans">
|
15 |
add_action( 'ig_es_sync_users_tabs_ninja_forms', 'ig_es_add_ninja_forms_tab_settings' );
|
16 |
add_action( 'ig_es_sync_users_tabs_edd', 'ig_es_add_edd_tab_settings' );
|
17 |
|
18 |
+
add_action( 'ig_es_workflows_integration', 'ig_es_workflows_integration_metabox', 10 , 1 );
|
19 |
+
add_filter( 'ig_es_display_hidden_workflow_metabox', 'ig_es_show_hidden_workflow_metabox', 10, 1 );
|
20 |
+
|
21 |
add_action( 'edit_form_advanced', 'add_spam_score_utm_link' );
|
22 |
|
23 |
add_action( 'ig_es_add_additional_options', 'ig_es_add_captcha_option', 10, 1 );
|
24 |
add_action( 'ig_es_after_broadcast_content_left_pan_settings', 'ig_es_additional_send_email_option');
|
25 |
+
add_action( 'ig_es_after_broadcast_tracking_options_settings', 'ig_es_additional_options', 11 );
|
26 |
+
//add_action( 'ig_es_broadcast_scheduling_options_settings', 'ig_es_additional_schedule_option');
|
27 |
+
//add_action( 'ig_es_after_broadcast_right_pan_settings', 'ig_es_additional_spam_score_option');
|
28 |
+
add_action( 'ig_es_add_multilist_options', 'ig_es_additional_multilist_and_post_digest' );
|
29 |
add_action( 'ig_es_view_report_data', 'ig_es_view_additional_reports_data');
|
30 |
|
31 |
/**
|
39 |
*/
|
40 |
function ig_es_mailers_promo( $mailers ) {
|
41 |
|
42 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
43 |
|
44 |
$mailers['smtp'] = array(
|
45 |
'name' => 'SMTP',
|
145 |
*/
|
146 |
function ig_es_add_settings_tabs( $es_settings_tabs ) {
|
147 |
|
148 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
149 |
$es_settings_tabs['user_roles'] = array( 'icon' => '<svg class="w-6 h-6 inline -mt-1.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path></svg>', 'name' => __( 'User Roles', 'email-subscribers' ) );
|
150 |
}
|
151 |
|
161 |
*/
|
162 |
function ig_es_add_upsale( $fields ) {
|
163 |
|
164 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
165 |
|
166 |
$utm_args = array(
|
167 |
'utm_medium' => 'track_clicks'
|
168 |
);
|
169 |
|
170 |
+
$general_fields = $fields['general'];
|
171 |
$premium_url = ES_Common::get_utm_tracking_url( $utm_args );
|
172 |
// General Settings
|
173 |
$track_link_click = array(
|
180 |
'link' => $premium_url,
|
181 |
'disabled' => true,
|
182 |
/* translators: %s: Icegram Pricing page url with utm tracking */
|
183 |
+
'upgrade_title' => __( 'Track key insight behaviour with PRO', 'email-subscribers' ),
|
184 |
+
'upgrade_desc' => __( 'Understand key insight into customer behavior with Link Tracking and UTM tracking in <b class="font-medium text-teal-800">Email Subscribers Pro</b>.', 'email-subscribers' )
|
185 |
)
|
186 |
);
|
187 |
+
$general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
|
188 |
|
189 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter' ) ) ) {
|
|
|
|
|
|
|
|
|
190 |
|
191 |
+
$track_utm = array(
|
192 |
'ig_es_track_utm' => array(
|
193 |
'id' => 'ig_es_track_utm',
|
194 |
'name' => __( 'UTM Tracking', 'email-subscribers' ),
|
197 |
'is_premium' => true,
|
198 |
'link' => $premium_url,
|
199 |
'disabled' => true,
|
|
|
|
|
|
|
|
|
200 |
)
|
201 |
+
);
|
202 |
+
$general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_link_click', $track_utm );
|
203 |
+
}
|
|
|
|
|
|
|
|
|
204 |
$fields['general'] = $general_fields;
|
205 |
}
|
206 |
|
207 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
208 |
|
209 |
$utm_args = array(
|
210 |
'utm_medium' => 'enable_captcha'
|
221 |
'default' => 'no',
|
222 |
'is_premium' => true,
|
223 |
'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'known_attackers' ) ),
|
224 |
+
'disabled' => true,
|
225 |
+
/* translators: %s: Icegram Pricing page url with utm tracking */
|
226 |
+
'upgrade_title' => __( 'Prevent spam attacks with PRO', 'email-subscribers' ),
|
227 |
+
'upgrade_desc' => __( 'Get a gatekeeper to secure your form and avoid spam signups with form Captcha <b class="font-medium text-teal-800">Email Subscribers PRO</b>.', 'email-subscribers' ),
|
228 |
);
|
229 |
|
230 |
$managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
|
248 |
'is_premium' => true,
|
249 |
'link' => $premium_url,
|
250 |
'disabled' => true,
|
|
|
|
|
|
|
251 |
);
|
252 |
|
253 |
$fields['security_settings'] = array_merge( $fields['security_settings'], $fake_domains, $managed_blocked_domains, $field_captcha );
|
270 |
global $ig_es_tracker;
|
271 |
|
272 |
// Show integrations only if ES Premium is not installed.
|
273 |
+
if ( ! ES()->is_starter() ) {
|
274 |
|
275 |
$tabs['comments'] = array(
|
276 |
'name' => __( 'Comments', 'email-subscribers' ),
|
603 |
<?php
|
604 |
}
|
605 |
|
606 |
+
function ig_es_workflows_integration_metabox( $page_prefix = '' ) {
|
607 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
608 |
+
|
609 |
+
add_meta_box( 'ig_es_workflow_integration_information', 'ES PRO Integrations', 'ig_es_workflows_integration_upsell', $page_prefix . 'es_workflows', 'side', 'default' );
|
610 |
+
}
|
611 |
+
}
|
612 |
+
|
613 |
+
function ig_es_show_hidden_workflow_metabox( $es_workflow_metaboxes ) {
|
614 |
+
|
615 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
616 |
+
$es_workflow_metaboxes = array(
|
617 |
+
'ig_es_workflow_integration_description',
|
618 |
+
);
|
619 |
+
}
|
620 |
+
|
621 |
+
return $es_workflow_metaboxes;
|
622 |
+
}
|
623 |
+
|
624 |
+
function ig_es_workflows_integration_upsell () {
|
625 |
+
|
626 |
+
$utm_args = array(
|
627 |
+
'utm_medium' => 'es_workflow_integration'
|
628 |
+
);
|
629 |
+
|
630 |
+
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
631 |
+
|
632 |
+
$plugin_integrations = array(
|
633 |
+
'WooCommerce',
|
634 |
+
'Contact Form 7',
|
635 |
+
'Easy Digital Downloads',
|
636 |
+
'Ninja Forms',
|
637 |
+
'Give WP',
|
638 |
+
'Ninja Forms',
|
639 |
+
'WPForms',
|
640 |
+
'Gravity Forms',
|
641 |
+
'Forminator',
|
642 |
+
);
|
643 |
+
|
644 |
+
$upsell_message = '<div class="pt-1.5">';
|
645 |
+
foreach ( $plugin_integrations as $plugin_name ) {
|
646 |
+
$upsell_message .= __('<div class="flex items-start space-x-3 -ml-8">
|
647 |
+
<div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
|
648 |
+
<span class="block h-1.5 w-1.5 mt-1.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
|
649 |
+
</div>
|
650 |
+
<p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">' . $plugin_name . '</p>
|
651 |
+
</div>', 'email-subscribers');
|
652 |
+
}
|
653 |
+
$upsell_message .= __('</div><br>Powerup by integrating popular WordPress plugins with Email Subscribers. We have made things simple and automated for you to avoid manual actions.', 'email-subscribers');
|
654 |
+
$upsell_info = array(
|
655 |
+
'upgrade_title' => __('Unlock plugin integrations with PRO', 'email-subscribers' ),
|
656 |
+
'pricing_url' => $pricing_url,
|
657 |
+
'upsell_message' => $upsell_message,
|
658 |
+
'cta_html' => false,
|
659 |
+
);
|
660 |
+
ES_Common::upsell_description_message_box( $upsell_info );
|
661 |
+
}
|
662 |
+
|
663 |
|
664 |
function add_spam_score_utm_link() {
|
665 |
global $post, $pagenow, $ig_es_tracker;
|
667 |
return;
|
668 |
}
|
669 |
|
670 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
671 |
?>
|
672 |
<script>
|
673 |
jQuery('#submitdiv').after('<div class="es_upsale"><a style="text-decoration:none;" target="_blank" href="https://www.icegram.com/documentation/how-ready-made-template-in-in-email-subscribers-look/?utm_source=in_app&utm_medium=es_template&utm_campaign=es_upsell"><img title="Get readymade templates" style="width:100%;border:0.3em #d46307 solid" src="<?php echo esc_url( ES_PLUGIN_URL ); ?>lite/admin/images/starter-tmpl.png"/><p style="background: #d46307; color: #FFF; padding: 4px; width: 100%; text-align:center">Get readymade beautiful email templates</p></a></div>');
|
685 |
*/
|
686 |
function ig_es_add_captcha_option( $form_data ) {
|
687 |
|
688 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
689 |
|
690 |
$utm_args = array(
|
691 |
'utm_medium' => 'es_form_captcha'
|
692 |
);
|
693 |
|
|
|
694 |
|
695 |
+
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
696 |
+
$upsell_info = array(
|
697 |
+
'upgrade_title' => __('Secure your list now with PRO', 'email-subscribers'),
|
698 |
+
'pricing_url' => $pricing_url,
|
699 |
+
'upsell_message' => __('Block known spam bot attacker domains, fake email addresses and bot signups with <b class="font-medium text-teal-800">Email Subscribers PRO.</b>', 'email-subscribers'),
|
700 |
+
'cta_html' => false,
|
701 |
+
);
|
702 |
?>
|
703 |
|
704 |
<div class="flex border-b border-gray-100 ">
|
705 |
+
<div class="w-4/6 mr-16">
|
706 |
<div class="flex flex-row w-full">
|
707 |
<div class="flex w-2/4">
|
708 |
<div class="ml-4 mr-8 mr-4 pt-4 mb-2">
|
709 |
+
<label for="tag-link" class="ml-4 text-sm font-medium text-gray-500 pb-2 cursor-default"><?php echo esc_html__( 'Enable Captcha' ); ?>
|
710 |
+
<span class="premium-icon"></span>
|
711 |
+
</label>
|
712 |
+
<p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4 cursor-default"><?php esc_html_e( 'Show a captcha to protect from bot signups.', 'email-subscribers' ); ?></p>
|
713 |
</div>
|
714 |
</div>
|
715 |
<div class="flex">
|
716 |
+
<div class=" mb-4 mr-4 mt-12">
|
717 |
+
<label class=" inline-flex items-center cursor-default">
|
718 |
<span class="relative">
|
719 |
<span class="es-mail-toggle-line"></span>
|
720 |
<span class="es-mail-toggle-dot"></span>
|
725 |
</div>
|
726 |
</div>
|
727 |
|
728 |
+
<div class="w-3/6 pr-4 ml-12">
|
729 |
+
<?php ES_Common::upsell_description_message_box( $upsell_info ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
</div>
|
731 |
</div>
|
732 |
<?php
|
733 |
}
|
734 |
}
|
735 |
|
736 |
+
function ig_es_additional_multilist_and_post_digest() {
|
|
|
|
|
737 |
|
738 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
739 |
+
|
740 |
$utm_args = array(
|
741 |
'utm_medium' => 'post_notifications_multiple_lists'
|
742 |
);
|
743 |
|
744 |
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
745 |
+
$upsell_info = array(
|
746 |
+
'upgrade_title' => __('Enable multiple lists & post digest with PRO', 'email-subscribers'),
|
747 |
+
'pricing_url' => $pricing_url,
|
748 |
+
'upsell_message' => __('<div class="flex items-start space-x-3 -ml-8">
|
749 |
+
<div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
|
750 |
+
<span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
|
751 |
+
</div>
|
752 |
+
<p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Schedule & send campaigns to multiple lists with <b class="font-medium text-teal-800">Email Subscribers PRO</b>.</p>
|
753 |
+
</div>
|
754 |
+
<div class="flex items-start space-x-3 -ml-8">
|
755 |
+
<div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
|
756 |
+
<span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
|
757 |
+
</div>
|
758 |
+
<p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Stop creating multiple campaigns for different lists. Select multiple lists with <span class="text-teal-800">Email Subscribers PRO</span>.</p>
|
759 |
+
</div>
|
760 |
+
<div class="flex items-start space-x-3 -ml-8">
|
761 |
+
<div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
|
762 |
+
<span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
|
763 |
+
</div>
|
764 |
+
<p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Schedule your future campaigns now and feel the peace of mind with <span class="text-teal-800">Email Subscribers PRO</span>.
|
765 |
+
</p>
|
766 |
+
</div>' , 'email-subscribers'),
|
767 |
+
'cta_html' => false,
|
768 |
+
);
|
769 |
?>
|
770 |
+
<table>
|
771 |
+
<tr>
|
772 |
+
<th scope="row" class="w-3/12 text-left pr-3 -my-4">
|
773 |
+
<label for="tag-link" class="ml-6 text-sm font-medium text-gray-500 pb-2 cursor-default"><?php echo esc_html__( 'Is a post digest?', 'email-subscribers' ); ?></label>
|
774 |
+
<span class="premium-icon"></span>
|
775 |
+
</th>
|
776 |
+
<td class="w-4/12">
|
777 |
+
<label for="is_post_digest" class="ml-14 inline-flex items-center cursor-default"><span class="relative">
|
778 |
+
<span class="es-mail-toggle-line"></span>
|
779 |
+
<span class="es-mail-toggle-dot"></span>
|
780 |
+
</span></label>
|
781 |
+
</td>
|
782 |
+
<td rowspan="2" colspan="2" class="w-5/12 border-b border-gray-100">
|
783 |
+
<div class="w-full ml-2 py-2">
|
784 |
+
<?php ES_Common::upsell_description_message_box( $upsell_info ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
785 |
</div>
|
786 |
+
</td>
|
787 |
+
</tr>
|
788 |
+
<tr class="es_post_digest border-b border-gray-100 pt-3">
|
789 |
+
<th scope="row" class="text-left">
|
790 |
+
<label class="ml-6 text-sm font-medium text-gray-500 pb-2 cursor-default"><?php echo esc_html__( 'Schedules at', 'email-subscribers' ); ?></label>
|
791 |
+
<span class="premium-icon"></span>
|
792 |
+
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php echo esc_html__( 'When to send?', 'email-subscribers' ); ?></p></label>
|
793 |
+
</th>
|
794 |
+
<td>
|
795 |
+
<div class="flex">
|
796 |
+
<div class="inline-flex ml-12 relative">
|
797 |
+
<label class="ml-2">
|
798 |
+
<select class="form-select" disabled="disabled">
|
799 |
+
<option><?php echo esc_html__( 'Once a day at', 'email-subscribers' ); ?></option>
|
800 |
+
</select>
|
801 |
+
<select class="form-select ml-2" disabled="disabled">
|
802 |
+
<option><?php echo esc_html__( '12:00 pm', 'email-subscribers' ); ?></option>
|
803 |
+
</select>
|
804 |
+
</label>
|
805 |
+
</div>
|
806 |
+
</div>
|
807 |
+
</td>
|
808 |
+
|
809 |
+
</tr>
|
810 |
+
</table>
|
811 |
<?php
|
812 |
}
|
813 |
|
815 |
|
816 |
function ig_es_additional_send_email_option() {
|
817 |
|
818 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
819 |
?>
|
820 |
|
821 |
<div>
|
822 |
+
<input type="radio" name="preview_option" disabled="disabled" class="mt-1 form-radio cursor-default" id="preview_in_email" value="" >
|
823 |
+
<label class="mt-1 text-sm font-normal leading-5 text-gray-500 cursor-default"><?php echo esc_html__( 'Email', 'email-subscribers' ); ?>
|
824 |
+
<span class="premium-icon"></span>
|
825 |
+
</label>
|
826 |
<div id="preview_in_email" class="display_email_field px-4">
|
827 |
<div class="flex py-2" >
|
828 |
<div class="flex w-5/6">
|
834 |
}
|
835 |
}
|
836 |
|
837 |
+
function ig_es_additional_options() {
|
838 |
+
?>
|
839 |
+
|
840 |
+
<?php
|
841 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
842 |
+
$utm_args = array(
|
843 |
+
'utm_medium' => 'broadcast_summary'
|
844 |
+
);
|
845 |
|
846 |
+
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
847 |
+
$upsell_info = array(
|
848 |
+
'upgrade_title' => __('Reduce the possibility to land in spam with PRO', 'email-subscribers'),
|
849 |
+
'pricing_url' => $pricing_url,
|
850 |
+
'upsell_message' => __('Get key insights about most converting links by tracking link activity, UTM tracking and also prevent your emails land into spam.'),
|
851 |
+
'cta_html' => false,
|
852 |
+
);
|
853 |
?>
|
854 |
+
<div class="flex w-full pt-2">
|
855 |
+
<div class="w-11/12 text-sm font-normal text-gray-600">
|
856 |
+
<label class="pt-3 text-sm leading-5 text-gray-500 cursor-default"><?php echo esc_html__( 'Link tracking', 'email-subscribers'); ?></label>
|
857 |
+
<span class="premium-icon"></span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
858 |
</div>
|
859 |
|
860 |
+
<div>
|
861 |
+
<label for="enable_link_tracking" class=" inline-flex items-center cursor-default">
|
862 |
+
<span class="relative">
|
863 |
+
<span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
|
864 |
+
<span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
|
865 |
+
</span>
|
866 |
+
</label>
|
|
|
|
|
|
|
|
|
|
|
867 |
</div>
|
868 |
+
</div>
|
869 |
|
870 |
+
|
871 |
<?php
|
872 |
}
|
873 |
|
874 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter' ) ) ) {
|
875 |
+
?>
|
|
|
876 |
|
877 |
+
<div class="flex w-full pt-3 pb-3 border-b border-gray-200">
|
878 |
+
<div class="w-11/12 text-sm font-normal text-gray-600">
|
879 |
+
<label class="pt-3 text-sm leading-5 text-gray-500 cursor-default"><?php echo esc_html__( 'UTM tracking', 'email-subscribers'); ?></label>
|
880 |
+
<span class="premium-icon"></span>
|
881 |
+
</div>
|
882 |
|
883 |
+
<div>
|
884 |
+
<label for="enable_utm_tracking" class=" inline-flex items-center cursor-default">
|
885 |
+
<span class="relative">
|
886 |
+
<span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
|
887 |
+
<span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
|
888 |
+
</span>
|
889 |
+
</label>
|
890 |
+
</div>
|
891 |
+
</div>
|
892 |
|
893 |
+
<div class="block my-3">
|
894 |
+
<label class="pt-3 text-sm leading-5 font-medium text-gray-500 cursor-default"><?php echo esc_html__( 'Get spam score', 'email-subscribers'); ?></label>
|
895 |
+
<span class="premium-icon"></span>
|
896 |
+
<button type="button" id="spam_score" disabled class="float-right es_spam rounded-md border text-indigo-400 border-indigo-300 text-sm leading-5 font-medium inline-flex justify-center px-3 py-1 cursor-default"><?php echo esc_html__( 'Check', 'email-subscribers' ); ?>
|
897 |
+
</button>
|
898 |
+
</div>
|
899 |
+
<?php
|
900 |
+
}
|
901 |
+
|
902 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
903 |
?>
|
904 |
+
<div class="block w-full pt-3 pb-2">
|
905 |
+
<span class="block text-sm font-medium leading-5 text-gray-500"><?php echo esc_html__( 'Send options', 'email-subscribers' ); ?></span>
|
906 |
+
<div class="py-2">
|
907 |
+
<input type="radio" class="form-radio" id="schedule_later" checked disabled>
|
908 |
+
<label for="schedule_later" class="text-sm font-normal text-gray-500 cursor-default"><?php echo esc_html__( 'Schedule for later', 'email-subscribers' ); ?>
|
909 |
+
</label>
|
910 |
+
<span class="premium-icon"></span>
|
911 |
+
<br>
|
912 |
+
<div id="schedule_later" class="px-6">
|
913 |
+
<div class="flex pt-4" >
|
914 |
+
<div class="flex w-full w-11/12">
|
915 |
+
<label class="text-sm font-normal leading-5 text-gray-500 pt-1 cursor-default"><?php echo esc_html__( 'Date', 'email-subscribers' ); ?></label>
|
916 |
+
<input class="font-normal text-sm py-1 ml-2 form-input cursor-default" type="text" value="<?php echo esc_attr( date_i18n('Y-m-d') ); ?>" disabled>
|
|
|
|
|
|
|
|
|
917 |
</div>
|
918 |
+
<div>
|
919 |
+
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-500 w-5 h-5 my-1 ml-2"><path d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg>
|
920 |
+
</div>
|
921 |
+
</div>
|
922 |
+
<div class="flex pt-3" >
|
923 |
+
<div class="flex w-11/12">
|
924 |
+
<label class="text-sm font-normal leading-5 text-gray-500 pt-1 cursor-default"><?php echo esc_html__( 'Time', 'email-subscribers' ); ?></label>
|
925 |
+
<input class=" font-normal text-sm py-1 ml-2 form-input cursor-default" type="text" value="<?php echo esc_attr( date_i18n('h:i A') ); ?>" disabled>
|
926 |
|
|
|
|
|
|
|
|
|
927 |
</div>
|
928 |
+
<div>
|
929 |
+
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-500 w-5 h-5 my-1 ml-2 float-right"><path d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
|
|
|
|
|
|
|
|
|
930 |
</div>
|
931 |
</div>
|
932 |
+
<div class="pb-3">
|
933 |
+
<div class="block px-2 py-2 mt-4 bg-gray-200 rounded-md ">
|
934 |
+
<h3 class="text-gray-400 text-sm font-normal cursor-default"><?php echo esc_html__( 'Local Time: ', 'email-subscribers' ); ?>
|
935 |
+
<?php echo esc_attr( date_i18n('Y-m-d H:i A' ) ); ?>
|
936 |
+
</h3>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
937 |
</div>
|
938 |
</div>
|
939 |
</div>
|
940 |
+
<div class="block py-2 mt-2 ">
|
941 |
+
<?php ES_Common::upsell_description_message_box( $upsell_info ); ?>
|
942 |
+
</div>
|
943 |
+
</div>
|
944 |
+
</div>
|
945 |
<?php
|
946 |
}
|
947 |
}
|
948 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
949 |
|
950 |
/**
|
951 |
* Campaign reports data
|
954 |
*/
|
955 |
|
956 |
function ig_es_view_additional_reports_data() {
|
957 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
958 |
$utm_args = array(
|
959 |
'utm_medium' => 'campaign_insight'
|
960 |
);
|
961 |
|
962 |
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
963 |
+
$upsell_info = array(
|
964 |
+
'upgrade_title' => __('Track campaign insights with PRO', 'email-subscribers'),
|
965 |
+
'pricing_url' => $pricing_url,
|
966 |
+
'upsell_message' => __('Know your subscribers & their behaviour with detailed campaign insights using <b class="font-medium text-teal-800">Email Subscribers Pro</b>.', 'email-subscribers'),
|
967 |
+
'cta_html' => true,
|
968 |
+
);
|
969 |
?>
|
970 |
<div>
|
971 |
<div class="campaign_open_overlay lg:w-3/5 xl:w-2/5 h-0 z-40 sticky">
|
972 |
+
<div class="tracking-wide campaign-report">
|
973 |
+
<?php ES_Common::upsell_description_message_box( $upsell_info ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
974 |
</div>
|
975 |
</div>
|
976 |
<div class="wrap max-w-7xl cursor-default campaign_open_blur font-sans">
|
lite/includes/services/class-es-service-css-inliner.php
DELETED
@@ -1,57 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class ES_Service_CSS_Inliner extends ES_Services {
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Service command
|
7 |
-
*
|
8 |
-
* @var string
|
9 |
-
*
|
10 |
-
* @sinc 4.6.1
|
11 |
-
*/
|
12 |
-
public $cmd = '/email/process/';
|
13 |
-
|
14 |
-
/**
|
15 |
-
* ES_Service_CSS_Inliner constructor.
|
16 |
-
*
|
17 |
-
* @since 4.6.1
|
18 |
-
*/
|
19 |
-
public function __construct() {
|
20 |
-
parent::__construct();
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Get inline CSS
|
25 |
-
*
|
26 |
-
* @param array $data
|
27 |
-
*
|
28 |
-
* @return array
|
29 |
-
*
|
30 |
-
* @since 4.6.1
|
31 |
-
*/
|
32 |
-
public function get_inline_css( $data = array() ) {
|
33 |
-
|
34 |
-
if ( ES()->validate_service_request( array( 'css_inliner' ) ) ) {
|
35 |
-
if ( ! empty( $data ) ) {
|
36 |
-
$meta = ! empty( $data['campaign_id'] ) ? ES()->campaigns_db->get_campaign_meta_by_id( $data['campaign_id'] ) : '';
|
37 |
-
$data['html'] = $data['content'];
|
38 |
-
$data['css'] = ! empty( $meta['es_custom_css'] ) ? $meta['es_custom_css'] : get_post_meta( $data['tmpl_id'], 'es_custom_css', true );
|
39 |
-
$data['tasks'][] = 'css-inliner';
|
40 |
-
$options = array(
|
41 |
-
'timeout' => 15,
|
42 |
-
'method' => 'POST',
|
43 |
-
'body' => $data
|
44 |
-
);
|
45 |
-
|
46 |
-
$response = $this->send_request( $options );
|
47 |
-
|
48 |
-
// Change data only if we have got a valid response from the service.
|
49 |
-
if ( ! $response instanceof WP_Error ) {
|
50 |
-
$data = $response;
|
51 |
-
}
|
52 |
-
}
|
53 |
-
}
|
54 |
-
|
55 |
-
return $data;
|
56 |
-
}
|
57 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lite/includes/services/{class-es-service-send-cron-data.php → class-es-service-handle-cron-data.php}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class
|
4 |
|
5 |
/**
|
6 |
* Service command
|
@@ -12,7 +12,7 @@ class ES_Service_Send_Cron_Data extends ES_Services {
|
|
12 |
public $cmd = '/store/cron/';
|
13 |
|
14 |
/**
|
15 |
-
*
|
16 |
*
|
17 |
* @since 4.6.1
|
18 |
*/
|
@@ -25,15 +25,16 @@ class ES_Service_Send_Cron_Data extends ES_Services {
|
|
25 |
*
|
26 |
* @since 4.6.1
|
27 |
*/
|
28 |
-
public function
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
35 |
|
36 |
-
if ( ES()->validate_service_request( array( 'external_cron' ) ) ) {
|
37 |
// send url and limit to server
|
38 |
$es_cron_url_data = array();
|
39 |
$es_cron_url_data['es_cronurl'] = get_option( 'ig_es_cronurl' );
|
@@ -43,6 +44,24 @@ class ES_Service_Send_Cron_Data extends ES_Services {
|
|
43 |
$this->send_cron_data( $es_cron_url_data );
|
44 |
|
45 |
update_option( 'ig_es_set_cron_data', 'yes' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
}
|
48 |
|
@@ -58,7 +77,7 @@ class ES_Service_Send_Cron_Data extends ES_Services {
|
|
58 |
$es_cron_url_data['es_cronurl'] = ES()->cron->url();
|
59 |
$es_cron_url_data['es_enable_background'] = false;
|
60 |
|
61 |
-
$this->send_cron_data( $es_cron_url_data );
|
62 |
}
|
63 |
|
64 |
/**
|
1 |
<?php
|
2 |
|
3 |
+
class ES_Service_Handle_Cron_Data extends ES_Services {
|
4 |
|
5 |
/**
|
6 |
* Service command
|
12 |
public $cmd = '/store/cron/';
|
13 |
|
14 |
/**
|
15 |
+
* ES_Service_Handle_Cron_Data constructor.
|
16 |
*
|
17 |
* @since 4.6.1
|
18 |
*/
|
25 |
*
|
26 |
* @since 4.6.1
|
27 |
*/
|
28 |
+
public function handle_es_cron_data( $options = array() ) {
|
29 |
|
30 |
+
if ( ES()->validate_service_request( array( 'es_cron' ) ) ) {
|
31 |
+
|
32 |
+
$ig_es_set_cron_data = get_option( 'ig_es_set_cron_data', 'no' );
|
33 |
+
$ig_es_set_cron_data = ( ! empty( $options ) && 'email_subscribers_settings' === $options['option_page'] ) ? 'no' : $ig_es_set_cron_data;
|
34 |
+
if ( 'yes' === $ig_es_set_cron_data ) {
|
35 |
+
return;
|
36 |
+
}
|
37 |
|
|
|
38 |
// send url and limit to server
|
39 |
$es_cron_url_data = array();
|
40 |
$es_cron_url_data['es_cronurl'] = get_option( 'ig_es_cronurl' );
|
44 |
$this->send_cron_data( $es_cron_url_data );
|
45 |
|
46 |
update_option( 'ig_es_set_cron_data', 'yes' );
|
47 |
+
delete_option( 'ig_es_cron_data_deleted' );
|
48 |
+
} else {
|
49 |
+
|
50 |
+
if ( ES()->is_trial() ) {
|
51 |
+
$ig_es_cron_data_deleted = get_option( 'ig_es_cron_data_deleted', 'no' );
|
52 |
+
|
53 |
+
// Check if we have already deleted the cron data.
|
54 |
+
if ( 'yes' === $ig_es_cron_data_deleted ) {
|
55 |
+
return;
|
56 |
+
}
|
57 |
+
|
58 |
+
$request_response = $this->delete_cron_data();
|
59 |
+
|
60 |
+
if ( ! $request_response instanceof WP_Error && ! empty( $request_response['status'] ) && 'SUCCESS' === $request_response['status'] ) {
|
61 |
+
update_option( 'ig_es_cron_data_deleted', 'yes' );
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
}
|
66 |
}
|
67 |
|
77 |
$es_cron_url_data['es_cronurl'] = ES()->cron->url();
|
78 |
$es_cron_url_data['es_enable_background'] = false;
|
79 |
|
80 |
+
return $this->send_cron_data( $es_cron_url_data );
|
81 |
}
|
82 |
|
83 |
/**
|
lite/includes/services/class-es-service-process-email-content.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class ES_Service_Process_Email_Content extends ES_Services {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Service command
|
7 |
+
*
|
8 |
+
* @var string
|
9 |
+
*
|
10 |
+
* @sinc 4.6.1
|
11 |
+
*/
|
12 |
+
public $cmd = '/email/process/';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* ES_Service_Process_Email_Content constructor.
|
16 |
+
*
|
17 |
+
* @since 4.6.1
|
18 |
+
*/
|
19 |
+
public function __construct() {
|
20 |
+
parent::__construct();
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get inline CSS
|
25 |
+
*
|
26 |
+
* @param array $data
|
27 |
+
*
|
28 |
+
* @return array
|
29 |
+
*
|
30 |
+
* @since 4.6.1
|
31 |
+
*/
|
32 |
+
public function process_email_content( $data = array() ) {
|
33 |
+
|
34 |
+
$data = apply_filters( 'ig_es_util_data', $data );
|
35 |
+
|
36 |
+
// Check if we have content to process and task to be performed.
|
37 |
+
if ( ! empty( $data['content'] ) && ! empty( $data['tasks'] ) ) {
|
38 |
+
$options = array(
|
39 |
+
'timeout' => 15,
|
40 |
+
'method' => 'POST',
|
41 |
+
'body' => $data
|
42 |
+
);
|
43 |
+
$response = $this->send_request( $options );
|
44 |
+
|
45 |
+
// Change data only if we have got a valid response from the service.
|
46 |
+
if ( ! $response instanceof WP_Error ) {
|
47 |
+
$data = $response;
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
return $data;
|
52 |
+
}
|
53 |
+
}
|
lite/includes/services/class-es-services.php
CHANGED
@@ -46,8 +46,14 @@ class ES_Services {
|
|
46 |
return new WP_Error( '404', 'Command Not Found' );
|
47 |
}
|
48 |
|
49 |
-
//
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
return $options;
|
52 |
}
|
53 |
|
46 |
return new WP_Error( '404', 'Command Not Found' );
|
47 |
}
|
48 |
|
49 |
+
// Request is valid if trial is valid or user is on a premium plan.
|
50 |
+
$is_request_valid = ES()->is_trial_valid() || ES()->is_premium();
|
51 |
+
|
52 |
+
// Allow custom validation logic for some services e.g. sending es cron delete request even after trial is inactive.
|
53 |
+
$is_request_valid = apply_filters( 'ig_es_service_request_custom_validation', $is_request_valid, $options );
|
54 |
+
|
55 |
+
// Don't process request if request is not valid.
|
56 |
+
if ( ! $is_request_valid ) {
|
57 |
return $options;
|
58 |
}
|
59 |
|
lite/includes/workflows/admin/class-es-workflow-admin-edit.php
CHANGED
@@ -251,15 +251,18 @@ class ES_Workflow_Admin_Edit {
|
|
251 |
|
252 |
$page_prefix = 'woo' === IG_ES_PLUGIN_PLAN ? 'marketing-automation_page_' : 'email-subscribers_page_';
|
253 |
|
254 |
-
$meta_box_title_for_trigger
|
255 |
-
$meta_box_title_for_actions
|
256 |
-
$meta_box_title_for_save
|
257 |
-
$meta_box_title_for_options
|
258 |
// $meta_box_title_for_timing = __( 'Timing', 'email-subscribers' );
|
259 |
|
260 |
add_meta_box( 'ig_es_workflow_trigger', $meta_box_title_for_trigger, array( __CLASS__, 'trigger_metabox' ), $page_prefix . 'es_workflows', 'normal', 'default' );
|
261 |
add_meta_box( 'ig_es_workflow_actions', $meta_box_title_for_actions, array( __CLASS__, 'actions_metabox' ), $page_prefix . 'es_workflows', 'normal', 'default' );
|
262 |
add_meta_box( 'ig_es_workflow_save', $meta_box_title_for_save, array( __CLASS__, 'save_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' );
|
|
|
|
|
|
|
263 |
// add_meta_box( 'ig_es_workflow_options', $meta_box_title_for_options, array( __CLASS__, 'options_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' ); // phpcs:ignore
|
264 |
// add_meta_box( 'ig_es_workflow_timing', $meta_box_title_for_timing, array( __CLASS__, 'timing_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' ); // phpcs:ignore
|
265 |
}
|
@@ -299,6 +302,8 @@ class ES_Workflow_Admin_Edit {
|
|
299 |
'ig_es_workflow_save',
|
300 |
);
|
301 |
|
|
|
|
|
302 |
// Check if user has hidden metaboxes from the screen options.
|
303 |
if ( ! empty( $hidden ) ) {
|
304 |
// Remove ES workflows metaboxes from the user's hidden metabox list.
|
251 |
|
252 |
$page_prefix = 'woo' === IG_ES_PLUGIN_PLAN ? 'marketing-automation_page_' : 'email-subscribers_page_';
|
253 |
|
254 |
+
$meta_box_title_for_trigger = __( 'Trigger', 'email-subscribers' );
|
255 |
+
$meta_box_title_for_actions = __( 'Actions', 'email-subscribers' );
|
256 |
+
$meta_box_title_for_save = __( 'Save', 'email-subscribers' );
|
257 |
+
$meta_box_title_for_options = __( 'Options', 'email-subscribers' );
|
258 |
// $meta_box_title_for_timing = __( 'Timing', 'email-subscribers' );
|
259 |
|
260 |
add_meta_box( 'ig_es_workflow_trigger', $meta_box_title_for_trigger, array( __CLASS__, 'trigger_metabox' ), $page_prefix . 'es_workflows', 'normal', 'default' );
|
261 |
add_meta_box( 'ig_es_workflow_actions', $meta_box_title_for_actions, array( __CLASS__, 'actions_metabox' ), $page_prefix . 'es_workflows', 'normal', 'default' );
|
262 |
add_meta_box( 'ig_es_workflow_save', $meta_box_title_for_save, array( __CLASS__, 'save_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' );
|
263 |
+
if ( ES()->can_upsell_features( array( 'lite', 'trial' ) ) ) {
|
264 |
+
do_action( 'ig_es_workflows_integration', $page_prefix );
|
265 |
+
}
|
266 |
// add_meta_box( 'ig_es_workflow_options', $meta_box_title_for_options, array( __CLASS__, 'options_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' ); // phpcs:ignore
|
267 |
// add_meta_box( 'ig_es_workflow_timing', $meta_box_title_for_timing, array( __CLASS__, 'timing_metabox' ), $page_prefix . 'es_workflows', 'side', 'default' ); // phpcs:ignore
|
268 |
}
|
302 |
'ig_es_workflow_save',
|
303 |
);
|
304 |
|
305 |
+
$es_workflow_metaboxes = apply_filters( 'ig_es_display_hidden_workflow_metabox', $es_workflow_metaboxes );
|
306 |
+
|
307 |
// Check if user has hidden metaboxes from the screen options.
|
308 |
if ( ! empty( $hidden ) ) {
|
309 |
// Remove ES workflows metaboxes from the user's hidden metabox list.
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Tags: email marketing, subscription, autoresponder, post notification, welcome e
|
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.5.1
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 4.6.
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
@@ -304,6 +304,10 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
304 |
|
305 |
== Changelog ==
|
306 |
|
|
|
|
|
|
|
|
|
307 |
**4.6.1 (19.10.2020)**
|
308 |
|
309 |
* New: UI improvements
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.5.1
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 4.6.2
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
304 |
|
305 |
== Changelog ==
|
306 |
|
307 |
+
**4.6.2 (27.10.2020)**
|
308 |
+
|
309 |
+
* Fix: UTM tracking related issue [PRO]
|
310 |
+
|
311 |
**4.6.1 (19.10.2020)**
|
312 |
|
313 |
* New: UI improvements
|