Version Description
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.6.1 |
Comparing to | |
See all releases |
Code changes from version 4.6.0 to 4.6.1
- email-subscribers.php +57 -10
- lite/admin/class-email-subscribers-admin.php +192 -6
- lite/admin/class-ig-es-onboarding.php +18 -17
- lite/admin/css/email-subscribers-admin.css +18 -1
- lite/admin/dist/main.css +1 -1
- lite/admin/js/email-subscribers-admin.js +93 -18
- lite/admin/js/es-onboarding.js +4 -4
- lite/admin/partials/dashboard.php +5 -4
- lite/admin/partials/help.php +1 -1
- lite/admin/partials/onboarding.php +45 -2
- lite/includes/class-email-subscribers.php +225 -3
- lite/includes/class-es-common.php +23 -6
- lite/includes/class-es-install.php +11 -2
- lite/includes/classes/class-es-admin-settings.php +17 -5
- lite/includes/classes/class-es-campaigns-table.php +10 -4
- lite/includes/classes/class-es-contacts-table.php +25 -26
- lite/includes/classes/class-es-export-subscribers.php +26 -15
- lite/includes/classes/class-es-forms-table.php +15 -9
- lite/includes/classes/class-es-handle-sync-wp-user.php +21 -9
- lite/includes/classes/class-es-import-subscribers.php +25 -13
- lite/includes/classes/class-es-info.php +3 -0
- lite/includes/classes/class-es-lists-table.php +42 -25
- lite/includes/classes/class-es-mailer.php +11 -3
- lite/includes/classes/class-es-newsletters.php +27 -17
- lite/includes/classes/class-es-post-notifications.php +23 -23
- lite/includes/classes/class-es-reports-table.php +3 -3
- lite/includes/classes/class-es-templates-table.php +5 -8
- lite/includes/db/class-es-db-lists-contacts.php +5 -5
- lite/includes/es-core-functions.php +1 -0
- lite/includes/feedback/class-ig-feedback.php +1 -1
- lite/includes/notices/class-es-admin-notices.php +18 -5
- lite/includes/notices/views/trial-optin.php +44 -0
- lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php +238 -0
- lite/includes/pro-features.php +17 -17
- lite/includes/services/class-es-email-delivery-check.php +4 -2
- lite/includes/services/class-es-service-css-inliner.php +57 -0
- lite/includes/services/class-es-service-send-cron-data.php +92 -0
- lite/includes/services/class-es-service-spam-score-check.php +55 -0
- lite/includes/services/class-es-services.php +40 -20
- lite/includes/workflows/admin/class-es-workflow-admin-edit.php +73 -21
- lite/includes/workflows/class-es-workflows-table.php +3 -3
- lite/public/class-email-subscribers-public.php +20 -0
- lite/public/partials/class-es-shortcode.php +1 -1
- lite/public/partials/subscription-successfull.php +7 -3
- readme.txt +6 -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
|
@@ -32,7 +32,6 @@ if ( ! defined( 'IG_ES_MIN_PHP_VER' ) ) {
|
|
32 |
define( 'IG_ES_MIN_PHP_VER', '5.6' );
|
33 |
}
|
34 |
|
35 |
-
|
36 |
if ( ! function_exists( 'ig_es_fail_php_version_notice' ) ) {
|
37 |
|
38 |
/**
|
@@ -57,7 +56,6 @@ if ( ! version_compare( PHP_VERSION, IG_ES_MIN_PHP_VER, '>=' ) ) {
|
|
57 |
return;
|
58 |
}
|
59 |
|
60 |
-
|
61 |
/**
|
62 |
* Earlier we were using IG_ES_FEEDBACK_VERSION constant
|
63 |
* We have made some changes into 1.0.11 which we want to use.
|
@@ -74,7 +72,7 @@ if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
|
|
74 |
global $ig_es_tracker;
|
75 |
|
76 |
/**
|
77 |
-
*
|
78 |
*
|
79 |
* @since 4.4.2
|
80 |
*/
|
@@ -104,7 +102,7 @@ if ( ! function_exists( 'ig_es_show_upgrade_pro_notice' ) ) {
|
|
104 |
<div class="notice notice-error">
|
105 |
<p>
|
106 |
<?php
|
107 |
-
/* translators: %s:
|
108 |
echo wp_kses_post( sprintf( __( 'You are using older version of <strong>Email Subscribers Premium</strong> plugin. It won\'t work because it needs plugin to be updated. Please update %s plugin.', 'email-subscribers' ),
|
109 |
'<a href="' . esc_url( $url ) . '" target="_blank">' . __( 'Email Subscribers Premium', 'email-subscribers' ) . '</a>' ) );
|
110 |
?>
|
@@ -118,16 +116,30 @@ if ( ! function_exists( 'deactivate_plugins' ) ) {
|
|
118 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
119 |
}
|
120 |
|
121 |
-
$
|
122 |
if ( 'email-subscribers-premium.php' === basename( __FILE__ ) ) {
|
123 |
-
$
|
|
|
|
|
124 |
}
|
125 |
|
126 |
-
|
|
|
|
|
127 |
// We don't need ES Lite version As we are already running ES Premium 4.3.0+
|
128 |
// which includes ES Lite code.
|
129 |
// So, deactivate it
|
130 |
deactivate_plugins( 'email-subscribers/email-subscribers.php', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
} else {
|
132 |
/**
|
133 |
* Steps:
|
@@ -163,7 +175,7 @@ if ( $is_premium ) {
|
|
163 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
164 |
|
165 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
166 |
-
define( 'ES_PLUGIN_VERSION', '4.6.
|
167 |
}
|
168 |
|
169 |
// Plugin Folder Path.
|
@@ -183,6 +195,41 @@ if ( ! defined( 'ES_PLUGIN_URL' ) ) {
|
|
183 |
define( 'ES_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
184 |
}
|
185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
if ( ! function_exists( 'activate_email_subscribers' ) ) {
|
187 |
/**
|
188 |
* The code that runs during plugin activation.
|
@@ -347,7 +394,7 @@ if ( ! function_exists( 'es_subbox' ) ) {
|
|
347 |
function es_subbox( $namefield = null, $desc = null, $group = null ) {
|
348 |
|
349 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
350 |
-
$atts
|
351 |
'namefield' => $namefield,
|
352 |
'desc' => $desc,
|
353 |
'group' => $group
|
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.1
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
32 |
define( 'IG_ES_MIN_PHP_VER', '5.6' );
|
33 |
}
|
34 |
|
|
|
35 |
if ( ! function_exists( 'ig_es_fail_php_version_notice' ) ) {
|
36 |
|
37 |
/**
|
56 |
return;
|
57 |
}
|
58 |
|
|
|
59 |
/**
|
60 |
* Earlier we were using IG_ES_FEEDBACK_VERSION constant
|
61 |
* We have made some changes into 1.0.11 which we want to use.
|
72 |
global $ig_es_tracker;
|
73 |
|
74 |
/**
|
75 |
+
* WordPress version
|
76 |
*
|
77 |
* @since 4.4.2
|
78 |
*/
|
102 |
<div class="notice notice-error">
|
103 |
<p>
|
104 |
<?php
|
105 |
+
/* translators: %s: Link to Email Subscribers Premium upgrade */
|
106 |
echo wp_kses_post( sprintf( __( 'You are using older version of <strong>Email Subscribers Premium</strong> plugin. It won\'t work because it needs plugin to be updated. Please update %s plugin.', 'email-subscribers' ),
|
107 |
'<a href="' . esc_url( $url ) . '" target="_blank">' . __( 'Email Subscribers Premium', 'email-subscribers' ) . '</a>' ) );
|
108 |
?>
|
116 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
117 |
}
|
118 |
|
119 |
+
$ig_es_plan = 'lite';
|
120 |
if ( 'email-subscribers-premium.php' === basename( __FILE__ ) ) {
|
121 |
+
$ig_es_plan = 'premium';
|
122 |
+
} elseif ( 'marketing-automation-icegram.php' === basename( __FILE__ ) ) {
|
123 |
+
$ig_es_plan = 'woo';
|
124 |
}
|
125 |
|
126 |
+
$current_active_plugins = $ig_es_tracker::get_active_plugins();
|
127 |
+
|
128 |
+
if ( 'premium' === $ig_es_plan ) {
|
129 |
// We don't need ES Lite version As we are already running ES Premium 4.3.0+
|
130 |
// which includes ES Lite code.
|
131 |
// So, deactivate it
|
132 |
deactivate_plugins( 'email-subscribers/email-subscribers.php', true );
|
133 |
+
} elseif ( 'woo' === $ig_es_plan ) {
|
134 |
+
$plugins_to_deactivate = array(
|
135 |
+
'email-subscribers/email-subscribers.php',
|
136 |
+
'email-subscribers-premium/email-subscribers-premium.php',
|
137 |
+
);
|
138 |
+
foreach ( $plugins_to_deactivate as $plugin_slug ) {
|
139 |
+
if ( in_array( $plugin_slug, $current_active_plugins, true ) ) {
|
140 |
+
deactivate_plugins( $plugin_slug, true );
|
141 |
+
}
|
142 |
+
}
|
143 |
} else {
|
144 |
/**
|
145 |
* Steps:
|
175 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
176 |
|
177 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
178 |
+
define( 'ES_PLUGIN_VERSION', '4.6.1' );
|
179 |
}
|
180 |
|
181 |
// Plugin Folder Path.
|
195 |
define( 'ES_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
196 |
}
|
197 |
|
198 |
+
// Start-IG-Code.
|
199 |
+
if ( ! defined( 'IG_ES_PLUGIN_PLAN' ) ) {
|
200 |
+
define( 'IG_ES_PLUGIN_PLAN', 'lite' );
|
201 |
+
}
|
202 |
+
// End-IG-Code.
|
203 |
+
// Start-Woo-Code.
|
204 |
+
if ( ! defined( 'IG_ES_PLUGIN_PLAN' ) ) {
|
205 |
+
define( 'IG_ES_PLUGIN_PLAN', 'woo' );
|
206 |
+
}
|
207 |
+
|
208 |
+
if ( ! function_exists( 'ig_es_woocommerce_inactive_notice' ) ) {
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Email Subscribers admin notice when WooCommerce is in inactive.
|
212 |
+
*
|
213 |
+
* @return void
|
214 |
+
* @since 4.6.1
|
215 |
+
*/
|
216 |
+
function ig_es_woocommerce_inactive_notice() {
|
217 |
+
$message = esc_html__( 'Email Subscribers requires WooCommerce to be installed and active, plugin is currently NOT RUNNING.', 'email-subscribers' );
|
218 |
+
$html_message = sprintf( '<div class="error">%s</div>', wpautop( $message ) );
|
219 |
+
echo wp_kses_post( $html_message );
|
220 |
+
}
|
221 |
+
}
|
222 |
+
|
223 |
+
/*
|
224 |
+
* Check if WooCommerce is active. Show notice if not active.
|
225 |
+
*/
|
226 |
+
|
227 |
+
if ( 'woo' === IG_ES_PLUGIN_PLAN && ! in_array( 'woocommerce/woocommerce.php', $current_active_plugins, true ) ) {
|
228 |
+
add_action( 'admin_notices', 'ig_es_woocommerce_inactive_notice' );
|
229 |
+
// Disable all other functionality.
|
230 |
+
return;
|
231 |
+
}
|
232 |
+
// End-Woo-Code.
|
233 |
if ( ! function_exists( 'activate_email_subscribers' ) ) {
|
234 |
/**
|
235 |
* The code that runs during plugin activation.
|
394 |
function es_subbox( $namefield = null, $desc = null, $group = null ) {
|
395 |
|
396 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
397 |
+
$atts = array(
|
398 |
'namefield' => $namefield,
|
399 |
'desc' => $desc,
|
400 |
'group' => $group
|
lite/admin/class-email-subscribers-admin.php
CHANGED
@@ -74,6 +74,24 @@ class Email_Subscribers_Admin {
|
|
74 |
add_action( 'admin_init', array( $this, 'ob_start' ) );
|
75 |
|
76 |
add_action( 'init', array( $this, 'save_screen_option' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
@@ -138,7 +156,7 @@ class Email_Subscribers_Admin {
|
|
138 |
|
139 |
wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
|
140 |
|
141 |
-
$page_prefix = 'email-subscribers_page_';
|
142 |
|
143 |
if ( ES()->is_es_admin_screen( $page_prefix . 'es_workflows' ) ) {
|
144 |
|
@@ -196,10 +214,16 @@ class Email_Subscribers_Admin {
|
|
196 |
$accessible_sub_menus = ES_Common::ig_es_get_accessible_sub_menus();
|
197 |
|
198 |
if ( count( $accessible_sub_menus ) > 0 ) {
|
199 |
-
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
|
202 |
-
// Submenu
|
203 |
add_submenu_page( 'es_dashboard', __( 'Dashboard', 'email-subscribers' ), __( 'Dashboard', 'email-subscribers' ), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ) );
|
204 |
}
|
205 |
|
@@ -224,7 +248,9 @@ class Email_Subscribers_Admin {
|
|
224 |
$hook = add_submenu_page( 'es_dashboard', __( 'Campaigns', 'email-subscribers' ), __( 'Campaigns', 'email-subscribers' ), 'edit_posts', 'es_campaigns', array( $this, 'render_campaigns' ) );
|
225 |
//add_action( "load-$hook", array( 'ES_Campaigns_Table', 'screen_options' ) );
|
226 |
|
|
|
227 |
add_submenu_page( 'es_dashboard', __( 'Post Notifications', 'email-subscribers' ), '<span id="ig-es-post-notifications">' . __( 'Post Notifications', 'email-subscribers' ) . '</span>', 'edit_posts', 'es_notifications', array( $this, 'load_post_notifications' ) );
|
|
|
228 |
add_submenu_page( 'es_dashboard', __( 'Broadcast', 'email-subscribers' ), '<span id="ig-es-broadcast">' . __( 'Broadcast', 'email-subscribers' ) . '</span>', 'edit_posts', 'es_newsletters', array( $this, 'load_newsletters' ) );
|
229 |
add_submenu_page( null, __( 'Template Preview', 'email-subscribers' ), __( 'Template Preview', 'email-subscribers' ), 'edit_posts', 'es_template_preview', array( $this, 'load_preview' ) );
|
230 |
|
@@ -249,10 +275,11 @@ class Email_Subscribers_Admin {
|
|
249 |
add_submenu_page( 'es_dashboard', __( 'Settings', 'email-subscribers' ), __( 'Settings', 'email-subscribers' ), 'manage_options', 'es_settings', array( $this, 'load_settings' ) );
|
250 |
}
|
251 |
|
|
|
252 |
if ( in_array( 'ig_redirect', $accessible_sub_menus ) ) {
|
253 |
add_submenu_page( null, __( 'Go To Icegram', 'email-subscribers' ), '<span id="ig-es-onsite-campaign">' . __( 'Go To Icegram', 'email-subscribers' ) . '</span>', 'edit_posts', 'go_to_icegram', array( $this, 'go_to_icegram' ) );
|
254 |
}
|
255 |
-
|
256 |
|
257 |
/**
|
258 |
* Add Other Submenu Pages
|
@@ -514,7 +541,6 @@ class Email_Subscribers_Admin {
|
|
514 |
if ( ! $is_sa_option_exists && ! $ig_es_4015_db_updated_at && 'yes' !== $onboarding_status ) {
|
515 |
include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/onboarding.php';
|
516 |
} else {
|
517 |
-
|
518 |
include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/dashboard.php';
|
519 |
}
|
520 |
|
@@ -788,4 +814,164 @@ class Email_Subscribers_Admin {
|
|
788 |
public function ob_start() {
|
789 |
ob_start();
|
790 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
791 |
}
|
74 |
add_action( 'admin_init', array( $this, 'ob_start' ) );
|
75 |
|
76 |
add_action( 'init', array( $this, 'save_screen_option' ) );
|
77 |
+
|
78 |
+
// Add spam score ajax action.
|
79 |
+
add_action( 'wp_ajax_es_get_spam_score', array( &$this, 'get_spam_score' ) );
|
80 |
+
|
81 |
+
// Add send cron data action.
|
82 |
+
add_action( 'admin_head', array( $this, 'send_cron_data' ) );
|
83 |
+
add_action( 'ig_es_after_settings_save', array( $this, 'send_cron_data' ) );
|
84 |
+
|
85 |
+
|
86 |
+
// Convert embedded css to inline css.
|
87 |
+
add_filter( 'es_after_process_template_body', array( $this, 'apply_inline_css') );
|
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();
|
94 |
+
}
|
95 |
}
|
96 |
|
97 |
/**
|
156 |
|
157 |
wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
|
158 |
|
159 |
+
$page_prefix = 'woo' === IG_ES_PLUGIN_PLAN ? 'marketing-automation_page_' : 'email-subscribers_page_';
|
160 |
|
161 |
if ( ES()->is_es_admin_screen( $page_prefix . 'es_workflows' ) ) {
|
162 |
|
214 |
$accessible_sub_menus = ES_Common::ig_es_get_accessible_sub_menus();
|
215 |
|
216 |
if ( count( $accessible_sub_menus ) > 0 ) {
|
217 |
+
|
218 |
+
if ( 'woo' !== IG_ES_PLUGIN_PLAN ) {
|
219 |
+
// This adds the main menu page.
|
220 |
+
add_menu_page( __( 'Email Subscribers', 'email-subscribers' ), __( 'Email Subscribers', 'email-subscribers' ), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ), 'dashicons-email', 30 );
|
221 |
+
} else {
|
222 |
+
// This adds the main menu page.
|
223 |
+
add_menu_page( __( 'Marketing Automation', 'email-subscribers' ), __( 'Marketing Automation', 'email-subscribers' ), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ), 'dashicons-email', 30 );
|
224 |
+
}
|
225 |
|
226 |
+
// Submenu.
|
227 |
add_submenu_page( 'es_dashboard', __( 'Dashboard', 'email-subscribers' ), __( 'Dashboard', 'email-subscribers' ), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ) );
|
228 |
}
|
229 |
|
248 |
$hook = add_submenu_page( 'es_dashboard', __( 'Campaigns', 'email-subscribers' ), __( 'Campaigns', 'email-subscribers' ), 'edit_posts', 'es_campaigns', array( $this, 'render_campaigns' ) );
|
249 |
//add_action( "load-$hook", array( 'ES_Campaigns_Table', 'screen_options' ) );
|
250 |
|
251 |
+
// Start-IG-Code.
|
252 |
add_submenu_page( 'es_dashboard', __( 'Post Notifications', 'email-subscribers' ), '<span id="ig-es-post-notifications">' . __( 'Post Notifications', 'email-subscribers' ) . '</span>', 'edit_posts', 'es_notifications', array( $this, 'load_post_notifications' ) );
|
253 |
+
// End-IG-Code.
|
254 |
add_submenu_page( 'es_dashboard', __( 'Broadcast', 'email-subscribers' ), '<span id="ig-es-broadcast">' . __( 'Broadcast', 'email-subscribers' ) . '</span>', 'edit_posts', 'es_newsletters', array( $this, 'load_newsletters' ) );
|
255 |
add_submenu_page( null, __( 'Template Preview', 'email-subscribers' ), __( 'Template Preview', 'email-subscribers' ), 'edit_posts', 'es_template_preview', array( $this, 'load_preview' ) );
|
256 |
|
275 |
add_submenu_page( 'es_dashboard', __( 'Settings', 'email-subscribers' ), __( 'Settings', 'email-subscribers' ), 'manage_options', 'es_settings', array( $this, 'load_settings' ) );
|
276 |
}
|
277 |
|
278 |
+
// Start-IG-Code.
|
279 |
if ( in_array( 'ig_redirect', $accessible_sub_menus ) ) {
|
280 |
add_submenu_page( null, __( 'Go To Icegram', 'email-subscribers' ), '<span id="ig-es-onsite-campaign">' . __( 'Go To Icegram', 'email-subscribers' ) . '</span>', 'edit_posts', 'go_to_icegram', array( $this, 'go_to_icegram' ) );
|
281 |
}
|
282 |
+
// End-IG-Code.
|
283 |
|
284 |
/**
|
285 |
* Add Other Submenu Pages
|
541 |
if ( ! $is_sa_option_exists && ! $ig_es_4015_db_updated_at && 'yes' !== $onboarding_status ) {
|
542 |
include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/onboarding.php';
|
543 |
} else {
|
|
|
544 |
include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/dashboard.php';
|
545 |
}
|
546 |
|
814 |
public function ob_start() {
|
815 |
ob_start();
|
816 |
}
|
817 |
+
|
818 |
+
/**
|
819 |
+
* Method to get spam score
|
820 |
+
*
|
821 |
+
* @since 4.6.1
|
822 |
+
*/
|
823 |
+
public function get_spam_score() {
|
824 |
+
|
825 |
+
check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
|
826 |
+
|
827 |
+
global $post;
|
828 |
+
|
829 |
+
$response = array(
|
830 |
+
'status' => 'error',
|
831 |
+
'error_message' => __( 'Something went wrong', 'email-subscribers' ),
|
832 |
+
);
|
833 |
+
|
834 |
+
$admin_email = get_option( 'admin_email' );
|
835 |
+
if ( ! empty( $_REQUEST['action'] ) && 'es_get_spam_score' == $_REQUEST['action'] ) {
|
836 |
+
|
837 |
+
$sender_data = array();
|
838 |
+
|
839 |
+
if ( ! empty( $_REQUEST['tmpl_id'] ) ) {
|
840 |
+
$content_post = get_post( sanitize_text_field( $_REQUEST['tmpl_id'] ) );
|
841 |
+
$content = $content_post->post_content;
|
842 |
+
$subject = $content_post->post_title;
|
843 |
+
} else {
|
844 |
+
$content = ig_es_get_request_data( 'content', '', false );
|
845 |
+
$subject = ig_es_get_request_data( 'subject', '', false );
|
846 |
+
$from_email = ig_es_get_request_data( 'from_email' );
|
847 |
+
$from_name = ig_es_get_request_data( 'from_name' );
|
848 |
+
|
849 |
+
$sender_data['from_name'] = $from_name;
|
850 |
+
$sender_data['from_email'] = $from_email;
|
851 |
+
}
|
852 |
+
// $data['content'] = $content;
|
853 |
+
$header = $this->get_email_headers( $sender_data );
|
854 |
+
|
855 |
+
// Add a new line character to allow following header data to be appended correctly.
|
856 |
+
$header .= "\n";
|
857 |
+
|
858 |
+
// Add subject if set.
|
859 |
+
if ( ! empty( $subject ) ) {
|
860 |
+
$header .= 'Subject:' . $subject . "\n";
|
861 |
+
}
|
862 |
+
|
863 |
+
$header .= 'Date: ' . gmdate( 'r' ) . "\n";
|
864 |
+
$header .= 'To: ' . $admin_email . "\n";
|
865 |
+
$header .= 'Message-ID: <' . $admin_email . ">\n";
|
866 |
+
$header .= "MIME-Version: 1.0\n";
|
867 |
+
$data['email'] = $header . $content;
|
868 |
+
$data['tasks'][] = 'spam-score';
|
869 |
+
|
870 |
+
$spam_score_service = new ES_Service_Spam_Score_Check();
|
871 |
+
$service_response = $spam_score_service->get_spam_score( $data );
|
872 |
+
if ( ! empty( $service_response['status'] ) && 'success' === $service_response['status'] ) {
|
873 |
+
$response['status'] = 'success';
|
874 |
+
$response['res'] = $service_response['data'];
|
875 |
+
}
|
876 |
+
|
877 |
+
wp_send_json( $response );
|
878 |
+
}
|
879 |
+
}
|
880 |
+
|
881 |
+
/**
|
882 |
+
* Method to get email header.
|
883 |
+
*
|
884 |
+
* @param array $sender_data .
|
885 |
+
*
|
886 |
+
* @return array $headers
|
887 |
+
*
|
888 |
+
* @since 4.6.1
|
889 |
+
*/
|
890 |
+
public function get_email_headers( $sender_data = array() ) {
|
891 |
+
$get_email_type = get_option( 'ig_es_email_type', true );
|
892 |
+
$site_title = get_bloginfo();
|
893 |
+
$admin_email = get_option( 'admin_email' );
|
894 |
+
|
895 |
+
$from_name = '';
|
896 |
+
$from_email = '';
|
897 |
+
if ( ! empty( $sender_data ) ) {
|
898 |
+
$from_name = $sender_data['from_name'];
|
899 |
+
$from_email = $sender_data['from_email'];
|
900 |
+
}
|
901 |
+
|
902 |
+
//adding missing from name
|
903 |
+
if ( empty( $from_name ) ) {
|
904 |
+
$from_name = get_option( 'ig_es_from_name', true );
|
905 |
+
}
|
906 |
+
|
907 |
+
//adding missing from email
|
908 |
+
if ( empty( $from_email ) ) {
|
909 |
+
$from_email = get_option( 'ig_es_from_email', true );
|
910 |
+
}
|
911 |
+
|
912 |
+
$sender_email = ! empty( $from_email ) ? $from_email : $admin_email;
|
913 |
+
$sender_name = ! empty( $from_name ) ? $from_name : $site_title;
|
914 |
+
|
915 |
+
$headers = array(
|
916 |
+
"From: \"$sender_name\" <$sender_email>",
|
917 |
+
'Return-Path: <' . $sender_email . '>',
|
918 |
+
'Reply-To: "' . $sender_name . '" <' . $sender_email . '>'
|
919 |
+
);
|
920 |
+
|
921 |
+
if ( in_array( $get_email_type, array( 'php_html_mail', 'php_plaintext_mail' ) ) ) {
|
922 |
+
$headers[] = 'MIME-Version: 1.0';
|
923 |
+
$headers[] = 'X-Mailer: PHP' . phpversion();
|
924 |
+
}
|
925 |
+
|
926 |
+
if ( in_array( $get_email_type, array( 'wp_html_mail', 'php_html_mail' ) ) ) {
|
927 |
+
$headers[] = 'Content-Type: text/html; charset="' . get_bloginfo( 'charset' ) . '"';
|
928 |
+
} else {
|
929 |
+
$headers[] = 'Content-Type: text/plain; charset="' . get_bloginfo( 'charset' ) . '"';
|
930 |
+
}
|
931 |
+
$headers = implode( "\n", $headers );
|
932 |
+
|
933 |
+
return $headers;
|
934 |
+
}
|
935 |
+
|
936 |
+
/**
|
937 |
+
* Method to send cron data to our server if not already sent.
|
938 |
+
*
|
939 |
+
* @since 4.6.1
|
940 |
+
*/
|
941 |
+
public function send_cron_data( $options = array() ) {
|
942 |
+
|
943 |
+
if ( ! ES()->is_es_admin_screen()) {
|
944 |
+
return;
|
945 |
+
}
|
946 |
+
|
947 |
+
$send_cron_data_service = new ES_Service_Send_Cron_Data();
|
948 |
+
|
949 |
+
// Send cron data to server
|
950 |
+
$send_cron_data_service->maybe_send_cron_data( $options );
|
951 |
+
}
|
952 |
+
|
953 |
+
/**
|
954 |
+
* Method to send cron data to our server if not already sent.
|
955 |
+
*
|
956 |
+
* @since 4.6.1
|
957 |
+
*/
|
958 |
+
public function apply_inline_css( $data = array() ) {
|
959 |
+
|
960 |
+
$css_inliner_service = new ES_Service_CSS_Inliner();
|
961 |
+
|
962 |
+
$data = $css_inliner_service->get_inline_css( $data );
|
963 |
+
|
964 |
+
return $data;
|
965 |
+
}
|
966 |
+
|
967 |
+
/**
|
968 |
+
* Method to disable Icegram server cron.
|
969 |
+
*
|
970 |
+
* @since 4.6.1
|
971 |
+
*/
|
972 |
+
public function disable_server_cron() {
|
973 |
+
|
974 |
+
$send_cron_data_service = new ES_Service_Send_Cron_Data();
|
975 |
+
$send_cron_data_service->delete_cron_data();
|
976 |
+
}
|
977 |
}
|
lite/admin/class-ig-es-onboarding.php
CHANGED
@@ -83,7 +83,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
83 |
/**
|
84 |
* Option name which holds common data between tasks.
|
85 |
*
|
86 |
-
*
|
87 |
*
|
88 |
* @since 4.6.0
|
89 |
* @var array
|
@@ -412,9 +412,8 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
412 |
$is_trial = ig_es_get_request_data( 'is_trial', '' );
|
413 |
|
414 |
if ( ! empty( $is_trial ) ) {
|
415 |
-
//
|
416 |
-
|
417 |
-
update_option( 'ig_es_trial_started_at', current_time( 'timestamp' ) );
|
418 |
}
|
419 |
|
420 |
update_option( 'ig_es_optin_type', $optin_type );
|
@@ -948,9 +947,12 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
948 |
'status' => 'error',
|
949 |
);
|
950 |
|
951 |
-
|
952 |
-
|
953 |
-
|
|
|
|
|
|
|
954 |
|
955 |
$onboarding_tasks_data = get_option( self::$onboarding_tasks_data_option, array() );
|
956 |
$campaign_id = ! empty( $onboarding_tasks_data['create_default_newsletter_broadcast']['broadcast_id'] ) ? $onboarding_tasks_data['create_default_newsletter_broadcast']['broadcast_id']: 0;
|
@@ -1014,8 +1016,8 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1014 |
'status' => 'error',
|
1015 |
);
|
1016 |
|
1017 |
-
// Check test email only if user has
|
1018 |
-
if ( ES()->
|
1019 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1020 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1021 |
|
@@ -1042,8 +1044,8 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1042 |
'status' => 'error',
|
1043 |
);
|
1044 |
|
1045 |
-
// Check spam score only if user has
|
1046 |
-
if ( ES()->
|
1047 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1048 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1049 |
|
@@ -1072,8 +1074,8 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1072 |
'status' => 'error',
|
1073 |
);
|
1074 |
|
1075 |
-
// Evaluate email delivery only if user has
|
1076 |
-
if ( ES()->
|
1077 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1078 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1079 |
|
@@ -1203,9 +1205,8 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1203 |
$is_trial = ig_es_get_request_data( 'is_trial', '' );
|
1204 |
|
1205 |
if ( ! empty( $is_trial ) ) {
|
1206 |
-
//
|
1207 |
-
|
1208 |
-
update_option( 'ig_es_trial_started_at', current_time( 'timestamp' ) );
|
1209 |
}
|
1210 |
|
1211 |
// Set flag for onboarding completion.
|
@@ -1394,7 +1395,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1394 |
|
1395 |
$remaining_required_tasks = array_diff( $required_tasks, $all_done_tasks );
|
1396 |
|
1397 |
-
// Check if there are any required tasks remaining.
|
1398 |
if ( empty( $remaining_required_tasks ) ) {
|
1399 |
$is_required_tasks_done = true;
|
1400 |
}
|
83 |
/**
|
84 |
* Option name which holds common data between tasks.
|
85 |
*
|
86 |
+
* E.g. created subscription form id from create_default_subscription_form function so we can use it in add_widget_to_sidebar
|
87 |
*
|
88 |
* @since 4.6.0
|
89 |
* @var array
|
412 |
$is_trial = ig_es_get_request_data( 'is_trial', '' );
|
413 |
|
414 |
if ( ! empty( $is_trial ) ) {
|
415 |
+
// Add trial preferences.
|
416 |
+
ES()->add_trial_data( $is_trial, time() );
|
|
|
417 |
}
|
418 |
|
419 |
update_option( 'ig_es_optin_type', $optin_type );
|
947 |
'status' => 'error',
|
948 |
);
|
949 |
|
950 |
+
// Send test email to Icegram API only if trial is valid or user is premium user.
|
951 |
+
if ( ES()->is_trial_valid() || ES()->is_premium() ) {
|
952 |
+
|
953 |
+
$service = new ES_Send_Test_Email();
|
954 |
+
$res = $service->send_test_email();
|
955 |
+
}
|
956 |
|
957 |
$onboarding_tasks_data = get_option( self::$onboarding_tasks_data_option, array() );
|
958 |
$campaign_id = ! empty( $onboarding_tasks_data['create_default_newsletter_broadcast']['broadcast_id'] ) ? $onboarding_tasks_data['create_default_newsletter_broadcast']['broadcast_id']: 0;
|
1016 |
'status' => 'error',
|
1017 |
);
|
1018 |
|
1019 |
+
// Check test email only if user has valid trial or is a premium user.
|
1020 |
+
if ( ES()->is_trial_valid() || ES()->is_premium() ) {
|
1021 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1022 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1023 |
|
1044 |
'status' => 'error',
|
1045 |
);
|
1046 |
|
1047 |
+
// Check spam score only if user has valid trial or is a premium user.
|
1048 |
+
if ( ES()->is_trial_valid() || ES()->is_premium() ) {
|
1049 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1050 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1051 |
|
1074 |
'status' => 'error',
|
1075 |
);
|
1076 |
|
1077 |
+
// Evaluate email delivery only if user has valid trial or is a premium user.
|
1078 |
+
if ( ES()->is_trial_valid() || ES()->is_premium() ) {
|
1079 |
$onboarding_tasks_failed = get_option( self::$onboarding_tasks_failed_option, array() );
|
1080 |
$email_delivery_check_tasks_failed = ! empty( $onboarding_tasks_failed['email_delivery_check_tasks'] ) ? $onboarding_tasks_failed['email_delivery_check_tasks']: array();
|
1081 |
|
1205 |
$is_trial = ig_es_get_request_data( 'is_trial', '' );
|
1206 |
|
1207 |
if ( ! empty( $is_trial ) ) {
|
1208 |
+
// Add trial preferences.
|
1209 |
+
ES()->add_trial_data( $is_trial, time() );
|
|
|
1210 |
}
|
1211 |
|
1212 |
// Set flag for onboarding completion.
|
1395 |
|
1396 |
$remaining_required_tasks = array_diff( $required_tasks, $all_done_tasks );
|
1397 |
|
1398 |
+
// Check if there are not any required tasks remaining.
|
1399 |
if ( empty( $remaining_required_tasks ) ) {
|
1400 |
$is_required_tasks_done = true;
|
1401 |
}
|
lite/admin/css/email-subscribers-admin.css
CHANGED
@@ -1409,7 +1409,7 @@ table.ig_es_form_table td {
|
|
1409 |
padding: 14px 20px 9px;
|
1410 |
}
|
1411 |
|
1412 |
-
body
|
1413 |
padding: 0;
|
1414 |
margin: 0;
|
1415 |
}
|
@@ -1653,6 +1653,23 @@ input[type="date"]::-webkit-clear-button {
|
|
1653 |
overflow-y: auto;
|
1654 |
}
|
1655 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1656 |
/* Broadcast status icons CSS */
|
1657 |
body.email-subscribers_page_es_campaigns .column-status .dashicons {
|
1658 |
position: relative;
|
1409 |
padding: 14px 20px 9px;
|
1410 |
}
|
1411 |
|
1412 |
+
body[class*="_page_es_workflows"] #post-body .postbox .inside {
|
1413 |
padding: 0;
|
1414 |
margin: 0;
|
1415 |
}
|
1653 |
overflow-y: auto;
|
1654 |
}
|
1655 |
|
1656 |
+
/* Spam Score */
|
1657 |
+
.es-spam-score {
|
1658 |
+
font-size: 2em;
|
1659 |
+
vertical-align: middle;
|
1660 |
+
margin-left: 0.5em;
|
1661 |
+
margin-top: 0em;
|
1662 |
+
}
|
1663 |
+
.es-spam-score-success {
|
1664 |
+
color: green;
|
1665 |
+
}
|
1666 |
+
.es-spam-score-error {
|
1667 |
+
color: red;
|
1668 |
+
}
|
1669 |
+
.es-logs {
|
1670 |
+
margin-top: 5px;
|
1671 |
+
}
|
1672 |
+
|
1673 |
/* Broadcast status icons CSS */
|
1674 |
body.email-subscribers_page_es_campaigns .column-status .dashicons {
|
1675 |
position: relative;
|
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:.75rem;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;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}.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-cell{display:table-cell}.grid{display:grid}.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-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-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}.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-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-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-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-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.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}.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}.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}.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)}.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-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-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}.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\/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\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.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-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-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.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\:grid{display:grid}.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%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@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-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%}}
|
lite/admin/js/email-subscribers-admin.js
CHANGED
@@ -41,24 +41,6 @@
|
|
41 |
return false;
|
42 |
});*/
|
43 |
|
44 |
-
$(".next_btn, #summary_menu").click(function() {
|
45 |
-
var $fieldset = $(this).closest('.es_fieldset');
|
46 |
-
$fieldset.next().find('div.es_broadcast_second').fadeIn('normal');
|
47 |
-
$fieldset.find('.es_broadcast_first').hide();
|
48 |
-
|
49 |
-
$fieldset.find('#broadcast_button1,#broadcast_button2').show();
|
50 |
-
$fieldset.find('#broadcast_button').hide();
|
51 |
-
|
52 |
-
$('#content_menu').removeClass("active");
|
53 |
-
$('#summary_menu').addClass("active");
|
54 |
-
//$('.active').removeClass('active').next().addClass('active');
|
55 |
-
|
56 |
-
// Trigger template content changed event to update email preview.
|
57 |
-
$('.wp-editor-boradcast').trigger('change');
|
58 |
-
|
59 |
-
});
|
60 |
-
|
61 |
-
|
62 |
$(".pre_btn, #content_menu").click(function() {
|
63 |
var $fieldset = $(this).closest('.es_fieldset');
|
64 |
$fieldset.find('.es_broadcast_first').fadeIn('normal');
|
@@ -490,6 +472,23 @@
|
|
490 |
});
|
491 |
});
|
492 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
493 |
$('.wp-editor-boradcast, #edit-es-boradcast-body,#ig_es_broadcast_subject,#ig_es_broadcast_list_ids').on('change',function(event){
|
494 |
|
495 |
// Trigger save event for content of wp_editor instances before processing it.
|
@@ -551,6 +550,82 @@
|
|
551 |
}
|
552 |
});
|
553 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
554 |
});
|
555 |
|
556 |
})(jQuery);
|
41 |
return false;
|
42 |
});*/
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
$(".pre_btn, #content_menu").click(function() {
|
45 |
var $fieldset = $(this).closest('.es_fieldset');
|
46 |
$fieldset.find('.es_broadcast_first').fadeIn('normal');
|
472 |
});
|
473 |
});
|
474 |
|
475 |
+
$(".next_btn, #summary_menu").click(function() {
|
476 |
+
var $fieldset = $(this).closest('.es_fieldset');
|
477 |
+
$fieldset.next().find('div.es_broadcast_second').fadeIn('normal');
|
478 |
+
$fieldset.find('.es_broadcast_first').hide();
|
479 |
+
|
480 |
+
$fieldset.find('#broadcast_button1,#broadcast_button2').show();
|
481 |
+
$fieldset.find('#broadcast_button').hide();
|
482 |
+
|
483 |
+
$('#content_menu').removeClass("active");
|
484 |
+
$('#summary_menu').addClass("active");
|
485 |
+
//$('.active').removeClass('active').next().addClass('active');
|
486 |
+
|
487 |
+
// Trigger template content changed event to update email preview.
|
488 |
+
$('.wp-editor-boradcast').trigger('change');
|
489 |
+
|
490 |
+
});
|
491 |
+
|
492 |
$('.wp-editor-boradcast, #edit-es-boradcast-body,#ig_es_broadcast_subject,#ig_es_broadcast_list_ids').on('change',function(event){
|
493 |
|
494 |
// Trigger save event for content of wp_editor instances before processing it.
|
550 |
}
|
551 |
});
|
552 |
|
553 |
+
// Check spam score
|
554 |
+
jQuery(document).on('click', '.es_spam' , function(e) {
|
555 |
+
e.preventDefault();
|
556 |
+
var tmpl_id = jQuery('.es_spam').next().next('#es_template_id').val();
|
557 |
+
var subject = jQuery('#ig_es_broadcast_subject').val();
|
558 |
+
var content = jQuery('.wp-editor-boradcast').val();
|
559 |
+
jQuery('.es_spam').next('.es-loader-img').show();
|
560 |
+
|
561 |
+
let from_name = jQuery( '#from_name' ).val();
|
562 |
+
let from_email = jQuery( '#from_email' ).val();
|
563 |
+
|
564 |
+
var params = {
|
565 |
+
type: 'POST',
|
566 |
+
url: ajaxurl,
|
567 |
+
data: {
|
568 |
+
action: 'es_get_spam_score',
|
569 |
+
tmpl_id: tmpl_id,
|
570 |
+
subject: subject,
|
571 |
+
content: content,
|
572 |
+
from_name: from_name,
|
573 |
+
from_email: from_email,
|
574 |
+
security: ig_es_js_data.security
|
575 |
+
},
|
576 |
+
dataType: 'json',
|
577 |
+
success: function(res) {
|
578 |
+
if(res && typeof res.status !== 'undefined') {
|
579 |
+
jQuery('.es_spam').next('.es-loader-img').hide();
|
580 |
+
|
581 |
+
if( 'success' === res.status ) {
|
582 |
+
if(res.res.spamScoreData.score !== 'undefined') {
|
583 |
+
var score = res.res.spamScoreData.score;
|
584 |
+
score = (score < 0) ? 0 : score;
|
585 |
+
jQuery('.es-spam-score').text(score);
|
586 |
+
if(parseInt(score) < 4) {
|
587 |
+
jQuery('.es-spam-success').show();
|
588 |
+
jQuery('.es-spam-error').hide();
|
589 |
+
jQuery('.es-spam-error-log').hide();
|
590 |
+
jQuery('.es-spam-score').addClass('es-spam-score-success text-green-600').removeClass('es-spam-score-error');
|
591 |
+
} else {
|
592 |
+
jQuery('.es-spam-error').show();
|
593 |
+
jQuery('.es-spam-success').hide();
|
594 |
+
var rules = res.res.spamScoreData.rules;
|
595 |
+
jQuery('.es-spam-score').addClass('es-spam-score-error text-red-600').removeClass('es-spam-score-success');
|
596 |
+
jQuery('.es-spam-error-log').show();
|
597 |
+
jQuery('.es-spam-error-log').find('ul').empty();
|
598 |
+
let rule_classes = '';
|
599 |
+
if( 1 === jQuery('#spam_score_modal').length ) {
|
600 |
+
rule_classes = 'text-base pb-1 list-none text-center font-medium text-red-400';
|
601 |
+
}
|
602 |
+
for (var i = rules.length - 1; i >= 0; i--) {
|
603 |
+
if(rules[i].score > 1.2){
|
604 |
+
|
605 |
+
jQuery('.es-spam-error-log').find('ul').append('<li class="' + rule_classes + '">'+ rules[i].description + '</li>');
|
606 |
+
}
|
607 |
+
}
|
608 |
+
}
|
609 |
+
jQuery('#spam_score_modal').show();
|
610 |
+
}
|
611 |
+
} else {
|
612 |
+
alert( res.error_message );
|
613 |
+
}
|
614 |
+
}
|
615 |
+
},
|
616 |
+
error: function(res) {
|
617 |
+
jQuery('#es_test_email_btn').next('.es-loader-img').hide();
|
618 |
+
}
|
619 |
+
};
|
620 |
+
jQuery.ajax(params);
|
621 |
+
});
|
622 |
+
|
623 |
+
// Close spam score popup
|
624 |
+
jQuery("#close_score").on('click', function (event) {
|
625 |
+
event.preventDefault();
|
626 |
+
jQuery('#spam_score_modal').hide();
|
627 |
+
});
|
628 |
+
|
629 |
});
|
630 |
|
631 |
})(jQuery);
|
lite/admin/js/es-onboarding.js
CHANGED
@@ -221,8 +221,8 @@ jQuery(document).ready(function() {
|
|
221 |
let list = jQuery('#ig-es-onboarding-final-steps-form #sign-up-list').val();
|
222 |
let form_source = jQuery('#ig-es-onboarding-final-steps-form #sign-up-form-source').val();
|
223 |
let is_trial = '';
|
224 |
-
if (jQuery('#ig-es-onboarding-final-steps-form #
|
225 |
-
is_trial = jQuery('#ig-es-onboarding-final-steps-form #
|
226 |
}
|
227 |
var params = {
|
228 |
type: 'POST',
|
@@ -315,10 +315,10 @@ jQuery(document).ready(function() {
|
|
315 |
|
316 |
jQuery('#es_free_trial_preference').click(function() {
|
317 |
if( jQuery(this).is(':checked')) {
|
318 |
-
|
319 |
jQuery('#ig-es-onboard-check_test_email_on_server,#ig-es-onboard-evaluate_email_delivery').show();
|
320 |
} else {
|
321 |
-
|
322 |
jQuery('#ig-es-onboard-check_test_email_on_server,#ig-es-onboard-evaluate_email_delivery').hide();
|
323 |
}
|
324 |
});
|
221 |
let list = jQuery('#ig-es-onboarding-final-steps-form #sign-up-list').val();
|
222 |
let form_source = jQuery('#ig-es-onboarding-final-steps-form #sign-up-form-source').val();
|
223 |
let is_trial = '';
|
224 |
+
if (jQuery('#ig-es-onboarding-final-steps-form #es_free_pro_trial').length > 0) {
|
225 |
+
is_trial = jQuery('#ig-es-onboarding-final-steps-form #es_free_pro_trial').is(':checked') ? 'yes': 'no';
|
226 |
}
|
227 |
var params = {
|
228 |
type: 'POST',
|
315 |
|
316 |
jQuery('#es_free_trial_preference').click(function() {
|
317 |
if( jQuery(this).is(':checked')) {
|
318 |
+
jQuery('#es_free_trial_option').hide();
|
319 |
jQuery('#ig-es-onboard-check_test_email_on_server,#ig-es-onboard-evaluate_email_delivery').show();
|
320 |
} else {
|
321 |
+
jQuery('#es_free_trial_option').show();
|
322 |
jQuery('#ig-es-onboard-check_test_email_on_server,#ig-es-onboard-evaluate_email_delivery').hide();
|
323 |
}
|
324 |
});
|
lite/admin/partials/dashboard.php
CHANGED
@@ -49,7 +49,7 @@ $topics = ES_Common::get_useful_articles();
|
|
49 |
$topics_indexes = array_rand( $topics, 3 );
|
50 |
|
51 |
?>
|
52 |
-
<div class="wrap pt-
|
53 |
<header class="mx-auto max-w-7xl">
|
54 |
<div class="md:flex md:items-center md:justify-between">
|
55 |
<div class="flex-1 min-w-0">
|
@@ -82,9 +82,9 @@ $topics_indexes = array_rand( $topics, 3 );
|
|
82 |
<div class="bg-white rounded-md shadow-xs">
|
83 |
<div class="py-1">
|
84 |
<a href="<?php echo esc_url( $new_broadcast_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Broadcast', 'email-subscribers' ); ?></a>
|
85 |
-
|
86 |
<a href="<?php echo esc_url( $new_post_notification_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Post Notification', 'email-subscribers' ); ?></a>
|
87 |
-
|
88 |
<?php if ( ES()->is_pro() ) { ?>
|
89 |
<a href="<?php echo esc_url( $new_sequence_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Sequence', 'email-subscribers' ); ?></a>
|
90 |
<?php } else { ?>
|
@@ -164,6 +164,7 @@ $topics_indexes = array_rand( $topics, 3 );
|
|
164 |
<div class="flex-1 min-w-0">
|
165 |
<div class="overflow-hidden">
|
166 |
<ul>
|
|
|
167 |
<?php foreach ( $topics_indexes as $index ) { ?>
|
168 |
<li class="border-b border-gray-200 mb-0">
|
169 |
<a href="<?php echo esc_url( $topics[ $index ]['link'] ); ?>" class="block transition duration-150 ease-in-out hover:bg-gray-50 focus:outline-none focus:bg-gray-50" target="_blank">
|
@@ -186,7 +187,7 @@ $topics_indexes = array_rand( $topics, 3 );
|
|
186 |
</a>
|
187 |
</li>
|
188 |
<?php } ?>
|
189 |
-
|
190 |
<li class="">
|
191 |
<div class="px-2 py-2 text-sm leading-5 text-gray-900 sm:px-2">
|
192 |
<?php echo esc_html__( 'Jump to: ', 'email-subscribers' ); ?>
|
49 |
$topics_indexes = array_rand( $topics, 3 );
|
50 |
|
51 |
?>
|
52 |
+
<div class="wrap pt-4 font-sans" id="ig-es-container">
|
53 |
<header class="mx-auto max-w-7xl">
|
54 |
<div class="md:flex md:items-center md:justify-between">
|
55 |
<div class="flex-1 min-w-0">
|
82 |
<div class="bg-white rounded-md shadow-xs">
|
83 |
<div class="py-1">
|
84 |
<a href="<?php echo esc_url( $new_broadcast_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Broadcast', 'email-subscribers' ); ?></a>
|
85 |
+
<!-- Start-IG-Code -->
|
86 |
<a href="<?php echo esc_url( $new_post_notification_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Post Notification', 'email-subscribers' ); ?></a>
|
87 |
+
<!-- End-IG-Code -->
|
88 |
<?php if ( ES()->is_pro() ) { ?>
|
89 |
<a href="<?php echo esc_url( $new_sequence_url ); ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php echo esc_html__( 'New Sequence', 'email-subscribers' ); ?></a>
|
90 |
<?php } else { ?>
|
164 |
<div class="flex-1 min-w-0">
|
165 |
<div class="overflow-hidden">
|
166 |
<ul>
|
167 |
+
<!-- Start-IG-Code -->
|
168 |
<?php foreach ( $topics_indexes as $index ) { ?>
|
169 |
<li class="border-b border-gray-200 mb-0">
|
170 |
<a href="<?php echo esc_url( $topics[ $index ]['link'] ); ?>" class="block transition duration-150 ease-in-out hover:bg-gray-50 focus:outline-none focus:bg-gray-50" target="_blank">
|
187 |
</a>
|
188 |
</li>
|
189 |
<?php } ?>
|
190 |
+
<!-- End-IG-Code -->
|
191 |
<li class="">
|
192 |
<div class="px-2 py-2 text-sm leading-5 text-gray-900 sm:px-2">
|
193 |
<?php echo esc_html__( 'Jump to: ', 'email-subscribers' ); ?>
|
lite/admin/partials/help.php
CHANGED
@@ -76,7 +76,7 @@ $articles = array(
|
|
76 |
);
|
77 |
|
78 |
?>
|
79 |
-
<div class="font-sans wrap pt-
|
80 |
<header>
|
81 |
<h2 class="wp-heading-inline text-3xl font-bold text-gray-700 sm:leading-9 sm:truncate pr-4">
|
82 |
<?php echo esc_html__( 'Help & Info', 'email-subscribers' ); ?>
|
76 |
);
|
77 |
|
78 |
?>
|
79 |
+
<div class="font-sans wrap pt-4">
|
80 |
<header>
|
81 |
<h2 class="wp-heading-inline text-3xl font-bold text-gray-700 sm:leading-9 sm:truncate pr-4">
|
82 |
<?php echo esc_html__( 'Help & Info', 'email-subscribers' ); ?>
|
lite/admin/partials/onboarding.php
CHANGED
@@ -1,9 +1,11 @@
|
|
1 |
<?php
|
2 |
$onboarding_step = IG_ES_Onboarding::get_onboarding_step();
|
3 |
?>
|
|
|
4 |
<div class="mx-auto mt-6 sm:mt-5">
|
5 |
<img src="<?php echo esc_url( ES_PLUGIN_URL . 'lite/admin/images/icegram_logo.svg' ); ?>" class="mx-auto h-7" alt="Icegram" />
|
6 |
</div>
|
|
|
7 |
<div id="slider-wrapper font-sans">
|
8 |
<div id="slider">
|
9 |
<div class="sp es-send-email-screen<?php echo esc_attr( 1 === $onboarding_step ? ' active' : '' ); ?>" style="<?php echo esc_attr( 1 === $onboarding_step ? '' : 'display:none' ); ?>">
|
@@ -108,6 +110,7 @@
|
|
108 |
|
109 |
<div class="space-y-1 leading-5">
|
110 |
<h3 class="text-base font-medium text-gray-900 -mb-0.5"><?php echo esc_html__( 'Your preferences:', 'email-subscribers'); ?></h3>
|
|
|
111 |
<?php if ( ! ES()->is_premium() ) { ?>
|
112 |
<div class="flex pt-1">
|
113 |
<div class="pt-1">
|
@@ -121,12 +124,13 @@
|
|
121 |
<div class="pl-3">
|
122 |
<label for="es_free_trial_preference" class="text-sm">
|
123 |
<?php
|
124 |
-
echo esc_html__( '
|
125 |
?>
|
126 |
</label>
|
127 |
</div>
|
128 |
</div>
|
129 |
<?php } ?>
|
|
|
130 |
<div class="flex">
|
131 |
<div class="pt-1">
|
132 |
<input
|
@@ -145,6 +149,7 @@
|
|
145 |
</label>
|
146 |
</div>
|
147 |
</div>
|
|
|
148 |
<div class="flex">
|
149 |
<div class="pt-1">
|
150 |
<input
|
@@ -269,6 +274,7 @@
|
|
269 |
<p class="text-sm"><?php echo esc_html__('Creating a campaign - newsletter broadcast test', 'email-subscribers'); ?></p>
|
270 |
</li>
|
271 |
|
|
|
272 |
<li id="ig-es-onboard-create_default_post_notification" class="flex items-start space-x-3 group" id="es_create_post_notification">
|
273 |
<div
|
274 |
class="relative pt-1 flex items-center justify-center flex-shrink-0 w-5 h-5"
|
@@ -279,6 +285,7 @@
|
|
279 |
</div>
|
280 |
<p class="text-sm"><?php echo esc_html__('Creating a campaign - new post notification test', 'email-subscribers'); ?></p>
|
281 |
</li>
|
|
|
282 |
|
283 |
<li id="ig-es-onboard-create_default_subscription_form" class="flex items-start space-x-3 group">
|
284 |
<div
|
@@ -421,6 +428,7 @@
|
|
421 |
<div class="space-y-5 text-gray-800">
|
422 |
<p class="text-base -mb-1"><?php echo esc_html__('Setup is complete. Couple of things to support you...', 'email-subscribers'); ?>
|
423 |
</p>
|
|
|
424 |
<div class="">
|
425 |
<h3 class="text-base font-medium text-gray-900">
|
426 |
<?php echo esc_html__('Free course: WordPress Email Marketing Masterclass 2020', 'email-subscribers'); ?>
|
@@ -452,7 +460,40 @@
|
|
452 |
</div>
|
453 |
</div>
|
454 |
</div>
|
455 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
<div class="space-y-1">
|
457 |
<h3 class="text-base font-medium text-gray-900 pt-2">
|
458 |
<?php echo esc_html__('Recommended next steps:', 'email-subscribers'); ?>
|
@@ -460,6 +501,7 @@
|
|
460 |
<ul class="ml-4 space-y-2 text-sm list-disc pt-1.5">
|
461 |
<li><?php echo esc_html__('Review "Settings" and make adjustments if needed', 'email-subscribers'); ?></li>
|
462 |
<li><?php echo esc_html__('Import your contacts, create new campaigns and test', 'email-subscribers'); ?></li>
|
|
|
463 |
<li>
|
464 |
<?php echo esc_html__('Review', 'email-subscribers'); ?>
|
465 |
<a
|
@@ -469,6 +511,7 @@
|
|
469 |
>
|
470 |
<?php echo esc_html__('if you need any help', 'email-subscribers'); ?>
|
471 |
</li>
|
|
|
472 |
</ul>
|
473 |
</div>
|
474 |
</div>
|
1 |
<?php
|
2 |
$onboarding_step = IG_ES_Onboarding::get_onboarding_step();
|
3 |
?>
|
4 |
+
<!-- Start-IG-Code -->
|
5 |
<div class="mx-auto mt-6 sm:mt-5">
|
6 |
<img src="<?php echo esc_url( ES_PLUGIN_URL . 'lite/admin/images/icegram_logo.svg' ); ?>" class="mx-auto h-7" alt="Icegram" />
|
7 |
</div>
|
8 |
+
<!-- End-IG-Code -->
|
9 |
<div id="slider-wrapper font-sans">
|
10 |
<div id="slider">
|
11 |
<div class="sp es-send-email-screen<?php echo esc_attr( 1 === $onboarding_step ? ' active' : '' ); ?>" style="<?php echo esc_attr( 1 === $onboarding_step ? '' : 'display:none' ); ?>">
|
110 |
|
111 |
<div class="space-y-1 leading-5">
|
112 |
<h3 class="text-base font-medium text-gray-900 -mb-0.5"><?php echo esc_html__( 'Your preferences:', 'email-subscribers'); ?></h3>
|
113 |
+
<!-- Start-IG-Code -->
|
114 |
<?php if ( ! ES()->is_premium() ) { ?>
|
115 |
<div class="flex pt-1">
|
116 |
<div class="pt-1">
|
124 |
<div class="pl-3">
|
125 |
<label for="es_free_trial_preference" class="text-sm">
|
126 |
<?php
|
127 |
+
echo esc_html__( 'Enable 14 day free trial of premium features - email delivery testing, automatic background sending, spam protection and more', 'email-subscribers');
|
128 |
?>
|
129 |
</label>
|
130 |
</div>
|
131 |
</div>
|
132 |
<?php } ?>
|
133 |
+
|
134 |
<div class="flex">
|
135 |
<div class="pt-1">
|
136 |
<input
|
149 |
</label>
|
150 |
</div>
|
151 |
</div>
|
152 |
+
<!-- End-IG-Code -->
|
153 |
<div class="flex">
|
154 |
<div class="pt-1">
|
155 |
<input
|
274 |
<p class="text-sm"><?php echo esc_html__('Creating a campaign - newsletter broadcast test', 'email-subscribers'); ?></p>
|
275 |
</li>
|
276 |
|
277 |
+
<!-- Start-IG-Code -->
|
278 |
<li id="ig-es-onboard-create_default_post_notification" class="flex items-start space-x-3 group" id="es_create_post_notification">
|
279 |
<div
|
280 |
class="relative pt-1 flex items-center justify-center flex-shrink-0 w-5 h-5"
|
285 |
</div>
|
286 |
<p class="text-sm"><?php echo esc_html__('Creating a campaign - new post notification test', 'email-subscribers'); ?></p>
|
287 |
</li>
|
288 |
+
<!-- End-IG-Code -->
|
289 |
|
290 |
<li id="ig-es-onboard-create_default_subscription_form" class="flex items-start space-x-3 group">
|
291 |
<div
|
428 |
<div class="space-y-5 text-gray-800">
|
429 |
<p class="text-base -mb-1"><?php echo esc_html__('Setup is complete. Couple of things to support you...', 'email-subscribers'); ?>
|
430 |
</p>
|
431 |
+
<!-- Start-IG-Code -->
|
432 |
<div class="">
|
433 |
<h3 class="text-base font-medium text-gray-900">
|
434 |
<?php echo esc_html__('Free course: WordPress Email Marketing Masterclass 2020', 'email-subscribers'); ?>
|
460 |
</div>
|
461 |
</div>
|
462 |
</div>
|
463 |
+
|
464 |
+
<?php if ( ! ES()->is_premium() ) { ?>
|
465 |
+
<div id="es_free_trial_option">
|
466 |
+
<h3 class="text-base font-medium text-gray-900 pt-2">
|
467 |
+
<?php echo esc_html__('Premium features for free:', 'email-subscribers'); ?>
|
468 |
+
</h3>
|
469 |
+
|
470 |
+
<p class="text-sm leading-6 pt-1">
|
471 |
+
<?php
|
472 |
+
echo esc_html__('Get 14 day free trial of managed email sending, advance spam
|
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">
|
479 |
+
<div class="pt-1">
|
480 |
+
<input
|
481 |
+
id="es_free_pro_trial"
|
482 |
+
type="checkbox"
|
483 |
+
checked="checked"
|
484 |
+
class="w-4 h-4 transition duration-150 ease-in-out form-checkbox"
|
485 |
+
/>
|
486 |
+
</div>
|
487 |
+
<div class="pl-3">
|
488 |
+
<label for="es_free_pro_trial" class="text-sm">
|
489 |
+
<?php echo esc_html__('Yes, start the trial', 'email-subscribers'); ?>
|
490 |
+
</label>
|
491 |
+
</div>
|
492 |
+
</div>
|
493 |
+
</div>
|
494 |
+
<?php } ?>
|
495 |
+
<!-- End-IG-Code -->
|
496 |
+
|
497 |
<div class="space-y-1">
|
498 |
<h3 class="text-base font-medium text-gray-900 pt-2">
|
499 |
<?php echo esc_html__('Recommended next steps:', 'email-subscribers'); ?>
|
501 |
<ul class="ml-4 space-y-2 text-sm list-disc pt-1.5">
|
502 |
<li><?php echo esc_html__('Review "Settings" and make adjustments if needed', 'email-subscribers'); ?></li>
|
503 |
<li><?php echo esc_html__('Import your contacts, create new campaigns and test', 'email-subscribers'); ?></li>
|
504 |
+
<!-- Start-IG-Code -->
|
505 |
<li>
|
506 |
<?php echo esc_html__('Review', 'email-subscribers'); ?>
|
507 |
<a
|
511 |
>
|
512 |
<?php echo esc_html__('if you need any help', 'email-subscribers'); ?>
|
513 |
</li>
|
514 |
+
<!-- End-IG-Code -->
|
515 |
</ul>
|
516 |
</div>
|
517 |
</div>
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -352,6 +352,17 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
352 |
// Remove the notice if user hasn't disabled the WP CRON or renabled the WP CRON.
|
353 |
ES_Admin_Notices::remove_notice( 'show_wp_cron' );
|
354 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
355 |
}
|
356 |
|
357 |
/**
|
@@ -645,6 +656,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
645 |
'lite/includes/services/class-es-services.php',
|
646 |
'lite/includes/services/class-es-email-delivery-check.php',
|
647 |
'lite/includes/services/class-es-send-test-email.php',
|
|
|
|
|
|
|
648 |
|
649 |
// Classes
|
650 |
'lite/includes/classes/class-es-list-table.php',
|
@@ -696,8 +710,10 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
696 |
'lite/admin/partials/admin-header.php',
|
697 |
'lite/public/partials/class-es-shortcode.php',
|
698 |
|
699 |
-
//
|
|
|
700 |
'lite/includes/es-backward.php',
|
|
|
701 |
'lite/admin/class-email-subscribers-admin.php',
|
702 |
|
703 |
// Pro Feature
|
@@ -831,6 +847,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
831 |
|
832 |
// Workflow Loader
|
833 |
'lite/includes/workflows/class-es-workflow-loader.php',
|
|
|
|
|
|
|
834 |
);
|
835 |
|
836 |
foreach ( $files_to_load as $file ) {
|
@@ -879,8 +898,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
879 |
$this->loader->add_action( 'wp_ajax_get_template_content', $plugin_admin, 'get_template_content' );
|
880 |
$this->loader->add_action( 'admin_print_scripts', $plugin_admin, 'remove_other_admin_notices' );
|
881 |
|
|
|
882 |
$this->loader->add_filter( 'admin_footer_text', $plugin_admin, 'update_admin_footer_text' );
|
883 |
-
|
884 |
}
|
885 |
|
886 |
/**
|
@@ -899,6 +919,8 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
899 |
$this->loader->add_action( 'init', $plugin_public, 'es_email_subscribe_init' );
|
900 |
$this->loader->add_action( 'ig_es_add_contact', $plugin_public, 'add_contact', 10, 2 );
|
901 |
$this->loader->add_action( 'ig_es_confirm_unsubscription', $plugin_public, 'confirm_unsubscription', 10, 2 );
|
|
|
|
|
902 |
}
|
903 |
|
904 |
/**
|
@@ -957,6 +979,81 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
957 |
}
|
958 |
}
|
959 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
960 |
/**
|
961 |
* Is ES PRO?
|
962 |
*
|
@@ -1020,6 +1117,21 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1020 |
return $ig_es_tracker::is_plugin_installed( $plugin );
|
1021 |
}
|
1022 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1023 |
/**
|
1024 |
* Get all ES admin screens
|
1025 |
*
|
@@ -1030,7 +1142,11 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1030 |
public function get_es_admin_screens() {
|
1031 |
|
1032 |
// TODO: Can be updated with a version check when https://core.trac.wordpress.org/ticket/18857 is fixed
|
1033 |
-
|
|
|
|
|
|
|
|
|
1034 |
|
1035 |
$screens = array(
|
1036 |
'es_template',
|
@@ -1220,6 +1336,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1220 |
}
|
1221 |
|
1222 |
add_action( 'admin_init', array( self::$instance, 'add_admin_notice' ) );
|
|
|
|
|
|
|
1223 |
|
1224 |
if ( ! post_type_exists( 'es_template' ) ) {
|
1225 |
add_action( 'init', array( 'Email_Subscribers_Activator', 'register_email_templates' ) );
|
@@ -1249,5 +1368,108 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1249 |
// Make a asynchronous request to our ajax handler function which in turn calls Action Schedulers' queue runner to start immediate processing in background.
|
1250 |
wp_remote_get( esc_url_raw( $admin_ajax_url ), $args );
|
1251 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1252 |
}
|
1253 |
}
|
352 |
// Remove the notice if user hasn't disabled the WP CRON or renabled the WP CRON.
|
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 |
/**
|
656 |
'lite/includes/services/class-es-services.php',
|
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-css-inliner.php',
|
661 |
+
'lite/includes/services/class-es-service-send-cron-data.php',
|
662 |
|
663 |
// Classes
|
664 |
'lite/includes/classes/class-es-list-table.php',
|
710 |
'lite/admin/partials/admin-header.php',
|
711 |
'lite/public/partials/class-es-shortcode.php',
|
712 |
|
713 |
+
// Start-IG-Code.
|
714 |
+
// Backward Compatibility.
|
715 |
'lite/includes/es-backward.php',
|
716 |
+
// End-IG-Code.
|
717 |
'lite/admin/class-email-subscribers-admin.php',
|
718 |
|
719 |
// Pro Feature
|
847 |
|
848 |
// Workflow Loader
|
849 |
'lite/includes/workflows/class-es-workflow-loader.php',
|
850 |
+
|
851 |
+
// Premium services ui components.
|
852 |
+
'lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php',
|
853 |
);
|
854 |
|
855 |
foreach ( $files_to_load as $file ) {
|
898 |
$this->loader->add_action( 'wp_ajax_get_template_content', $plugin_admin, 'get_template_content' );
|
899 |
$this->loader->add_action( 'admin_print_scripts', $plugin_admin, 'remove_other_admin_notices' );
|
900 |
|
901 |
+
// Start-IG-Code.
|
902 |
$this->loader->add_filter( 'admin_footer_text', $plugin_admin, 'update_admin_footer_text' );
|
903 |
+
// End-IG-Code.
|
904 |
}
|
905 |
|
906 |
/**
|
919 |
$this->loader->add_action( 'init', $plugin_public, 'es_email_subscribe_init' );
|
920 |
$this->loader->add_action( 'ig_es_add_contact', $plugin_public, 'add_contact', 10, 2 );
|
921 |
$this->loader->add_action( 'ig_es_confirm_unsubscription', $plugin_public, 'confirm_unsubscription', 10, 2 );
|
922 |
+
|
923 |
+
$this->loader->add_filter( 'es_template_type', $plugin_public, 'add_template_type' );
|
924 |
}
|
925 |
|
926 |
/**
|
979 |
}
|
980 |
}
|
981 |
|
982 |
+
/**
|
983 |
+
* Method to get if trial has expired or not.
|
984 |
+
*
|
985 |
+
* @return bool
|
986 |
+
*
|
987 |
+
* @since 4.6.1
|
988 |
+
*/
|
989 |
+
public function is_trial_expired() {
|
990 |
+
$is_trial_expired = false;
|
991 |
+
$is_trial = get_option( 'ig_es_is_trial', '' );
|
992 |
+
|
993 |
+
if ( 'yes' === $is_trial ) {
|
994 |
+
$trial_started_at = get_option( 'ig_es_trial_started_at' );
|
995 |
+
if ( ! empty( $trial_started_at ) ) {
|
996 |
+
|
997 |
+
// Get current timestamp.
|
998 |
+
$current_time = time();
|
999 |
+
|
1000 |
+
// Get the timestamp when trial will expire.
|
1001 |
+
$trial_expires_at = $trial_started_at + 14 * DAY_IN_SECONDS;
|
1002 |
+
|
1003 |
+
// Check if current time is greater than expiry time.
|
1004 |
+
if ( $current_time > $trial_expires_at ) {
|
1005 |
+
$is_trial_expired = true;
|
1006 |
+
}
|
1007 |
+
}
|
1008 |
+
}
|
1009 |
+
|
1010 |
+
return $is_trial_expired;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
/**
|
1014 |
+
* Method to check if trial is valid.
|
1015 |
+
*
|
1016 |
+
* @return bool $is_trial_valid Is trial valid
|
1017 |
+
*
|
1018 |
+
* @since 4.6.1
|
1019 |
+
*/
|
1020 |
+
public function is_trial_valid() {
|
1021 |
+
|
1022 |
+
// Check if user has opted for trial and it has not yet expired.
|
1023 |
+
$is_trial_valid = $this->is_trial() && ! $this->is_trial_expired() ? true : false;
|
1024 |
+
|
1025 |
+
return $is_trial_valid;
|
1026 |
+
}
|
1027 |
+
|
1028 |
+
/**
|
1029 |
+
* Method to validate a premium service request
|
1030 |
+
*
|
1031 |
+
* @param array $service Request
|
1032 |
+
*
|
1033 |
+
* @return bool
|
1034 |
+
*
|
1035 |
+
* @since 4.6.1
|
1036 |
+
*/
|
1037 |
+
public function validate_service_request( $services = array() ) {
|
1038 |
+
$is_request_valid = false;
|
1039 |
+
|
1040 |
+
// Check if trial is still valid.
|
1041 |
+
if ( $this->is_trial_valid() ) {
|
1042 |
+
$is_request_valid = true;
|
1043 |
+
} else if ( $this->is_premium() ) {
|
1044 |
+
$es_services = apply_filters( 'ig_es_services', array() );
|
1045 |
+
if ( ! empty( $es_services ) ) {
|
1046 |
+
// Check if there is not any invalid service in $services array which is not present in the $es_services.
|
1047 |
+
$invalid_services = array_diff( $services, $es_services );
|
1048 |
+
if ( empty( $invalid_services ) ) {
|
1049 |
+
$is_request_valid = true;
|
1050 |
+
}
|
1051 |
+
}
|
1052 |
+
}
|
1053 |
+
|
1054 |
+
return $is_request_valid;
|
1055 |
+
}
|
1056 |
+
|
1057 |
/**
|
1058 |
* Is ES PRO?
|
1059 |
*
|
1117 |
return $ig_es_tracker::is_plugin_installed( $plugin );
|
1118 |
}
|
1119 |
|
1120 |
+
/**
|
1121 |
+
* Check whether ES Pro features can be upselled or not
|
1122 |
+
*
|
1123 |
+
* @return bool
|
1124 |
+
*
|
1125 |
+
* @since 4.6.1
|
1126 |
+
*/
|
1127 |
+
public function can_upsell_features( $show_for_plans = array() ) {
|
1128 |
+
$es_current_plan = $this->get_plan();
|
1129 |
+
if ( in_array( $es_current_plan, $show_for_plans ) ) {
|
1130 |
+
return true;
|
1131 |
+
}
|
1132 |
+
return false;
|
1133 |
+
}
|
1134 |
+
|
1135 |
/**
|
1136 |
* Get all ES admin screens
|
1137 |
*
|
1142 |
public function get_es_admin_screens() {
|
1143 |
|
1144 |
// TODO: Can be updated with a version check when https://core.trac.wordpress.org/ticket/18857 is fixed
|
1145 |
+
if ( 'woo' === IG_ES_PLUGIN_PLAN ) {
|
1146 |
+
$prefix = sanitize_title( __( 'Marketing Automation', 'email-subscribers' ) );
|
1147 |
+
} else {
|
1148 |
+
$prefix = sanitize_title( __( 'Email Subscribers', 'email-subscribers' ) );
|
1149 |
+
}
|
1150 |
|
1151 |
$screens = array(
|
1152 |
'es_template',
|
1336 |
}
|
1337 |
|
1338 |
add_action( 'admin_init', array( self::$instance, 'add_admin_notice' ) );
|
1339 |
+
add_action( 'admin_init', array( self::$instance, 'check_trial_optin_consent' ) );
|
1340 |
+
add_filter( 'ig_es_service_request_data', array( self::$instance, 'add_service_authentication_data' ) );
|
1341 |
+
add_filter( 'ig_es_plan', array( self::$instance, 'add_trial_plan' ) );
|
1342 |
|
1343 |
if ( ! post_type_exists( 'es_template' ) ) {
|
1344 |
add_action( 'init', array( 'Email_Subscribers_Activator', 'register_email_templates' ) );
|
1368 |
// Make a asynchronous request to our ajax handler function which in turn calls Action Schedulers' queue runner to start immediate processing in background.
|
1369 |
wp_remote_get( esc_url_raw( $admin_ajax_url ), $args );
|
1370 |
}
|
1371 |
+
|
1372 |
+
/**
|
1373 |
+
* Method to get plugin plan
|
1374 |
+
*
|
1375 |
+
* @return string $plan
|
1376 |
+
*
|
1377 |
+
* @since 4.6.1
|
1378 |
+
*/
|
1379 |
+
public function get_plan() {
|
1380 |
+
|
1381 |
+
$plan = apply_filters( 'ig_es_plan', 'lite' );
|
1382 |
+
|
1383 |
+
return $plan;
|
1384 |
+
}
|
1385 |
+
|
1386 |
+
/**
|
1387 |
+
* Method to add trial plan
|
1388 |
+
*
|
1389 |
+
* @param string $plan
|
1390 |
+
*
|
1391 |
+
* @return string $plan
|
1392 |
+
*
|
1393 |
+
* @since 4.6.1
|
1394 |
+
*/
|
1395 |
+
public function add_trial_plan( $plan = '' ) {
|
1396 |
+
|
1397 |
+
if ( $this->is_trial_valid() ) {
|
1398 |
+
$plan = 'trial';
|
1399 |
+
}
|
1400 |
+
|
1401 |
+
return $plan;
|
1402 |
+
}
|
1403 |
+
|
1404 |
+
/**
|
1405 |
+
* Method to add ES service authentication data.
|
1406 |
+
*
|
1407 |
+
* @param array $request_data Service request data.
|
1408 |
+
*
|
1409 |
+
* @return array $request_data
|
1410 |
+
*
|
1411 |
+
* @since 4.6.1
|
1412 |
+
*/
|
1413 |
+
public function add_service_authentication_data( $request_data = array() ) {
|
1414 |
+
|
1415 |
+
$es_plan = $this->get_plan();
|
1416 |
+
|
1417 |
+
if ( ! empty( $es_plan ) ) {
|
1418 |
+
$request_data['plan'] = $es_plan;
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
if ( $this->is_trial() ) {
|
1422 |
+
|
1423 |
+
$trial_started_at = get_option( 'ig_es_trial_started_at' );
|
1424 |
+
$site_url = site_url();
|
1425 |
+
|
1426 |
+
$request_data['trial_started_at'] = $trial_started_at;
|
1427 |
+
$request_data['site_url'] = $site_url;
|
1428 |
+
}
|
1429 |
+
|
1430 |
+
return $request_data;
|
1431 |
+
}
|
1432 |
+
|
1433 |
+
/**
|
1434 |
+
* Method to check if user has given optin consent.
|
1435 |
+
*
|
1436 |
+
* @since 4.6.1
|
1437 |
+
*/
|
1438 |
+
public function check_trial_optin_consent() {
|
1439 |
+
|
1440 |
+
// Check optin consent only if not already trial or premium.
|
1441 |
+
if ( ! ( $this->is_trial() || $this->is_premium() ) ) {
|
1442 |
+
$trial_consent = ig_es_get_request_data( 'ig_es_trial_consent', '' );
|
1443 |
+
if ( ! empty( $trial_consent ) ) {
|
1444 |
+
check_admin_referer( 'ig_es_trial_consent' );
|
1445 |
+
$this->add_trial_data( $trial_consent );
|
1446 |
+
update_option( 'ig_es_trial_consent', $trial_consent, false );
|
1447 |
+
ES_Admin_Notices::remove_notice( 'trial_consent' );
|
1448 |
+
$referer = wp_get_referer();
|
1449 |
+
wp_safe_redirect( $referer );
|
1450 |
+
}
|
1451 |
+
}
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
/**
|
1455 |
+
* Method to add trial related data.
|
1456 |
+
*
|
1457 |
+
* @param string $is_trial.
|
1458 |
+
*
|
1459 |
+
* @return int $trial_started_at
|
1460 |
+
*
|
1461 |
+
* @since 4.6.1
|
1462 |
+
*/
|
1463 |
+
public function add_trial_data( $is_trial = '', $trial_started_at = 0 ) {
|
1464 |
+
|
1465 |
+
$is_trial = ! empty( $is_trial ) ? $is_trial : 'yes';
|
1466 |
+
update_option( 'ig_es_is_trial', $is_trial, false );
|
1467 |
+
|
1468 |
+
if ( 'yes' === $is_trial ) {
|
1469 |
+
$trial_started_at = ! empty( $trial_started_at ) ? $trial_started_at : time();
|
1470 |
+
update_option( 'ig_es_trial_started_at', $trial_started_at, false );
|
1471 |
+
}
|
1472 |
+
}
|
1473 |
+
|
1474 |
}
|
1475 |
}
|
lite/includes/class-es-common.php
CHANGED
@@ -1494,12 +1494,7 @@ class ES_Common {
|
|
1494 |
*/
|
1495 |
public static function get_campaign_type_key_name_map( $reverse = false ) {
|
1496 |
|
1497 |
-
$campaign_type =
|
1498 |
-
'newsletter' => __( 'Broadcast', 'email-subscribers' ),
|
1499 |
-
'post_notification' => __( 'Post Notification', 'email-subscribers' ),
|
1500 |
-
'sequence' => __( 'Sequence', 'email-subscribers' ),
|
1501 |
-
'post_digest' => __( 'Post Digest', 'email-subscribers' ),
|
1502 |
-
);
|
1503 |
|
1504 |
if ( $reverse ) {
|
1505 |
$campaign_type = array_flip( $campaign_type );
|
@@ -1508,6 +1503,28 @@ class ES_Common {
|
|
1508 |
return $campaign_type;
|
1509 |
}
|
1510 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1511 |
/**
|
1512 |
* Prepare Campaign Status dropdown
|
1513 |
*
|
1494 |
*/
|
1495 |
public static function get_campaign_type_key_name_map( $reverse = false ) {
|
1496 |
|
1497 |
+
$campaign_type = self::get_campaign_types();
|
|
|
|
|
|
|
|
|
|
|
1498 |
|
1499 |
if ( $reverse ) {
|
1500 |
$campaign_type = array_flip( $campaign_type );
|
1503 |
return $campaign_type;
|
1504 |
}
|
1505 |
|
1506 |
+
/**
|
1507 |
+
* Get Campaign type
|
1508 |
+
*
|
1509 |
+
* @return array
|
1510 |
+
*
|
1511 |
+
* @since 4.6.1
|
1512 |
+
*/
|
1513 |
+
public static function get_campaign_types( $disallowed_types = array() ) {
|
1514 |
+
|
1515 |
+
$template_types = apply_filters( 'es_template_type', array() );
|
1516 |
+
|
1517 |
+
if ( ! empty( $disallowed_types ) ) {
|
1518 |
+
foreach ( $disallowed_types as $disallowed_type ) {
|
1519 |
+
if ( isset( $template_types[ $disallowed_type ] ) ) {
|
1520 |
+
unset( $template_types[ $disallowed_type ] );
|
1521 |
+
}
|
1522 |
+
}
|
1523 |
+
}
|
1524 |
+
|
1525 |
+
return $template_types;
|
1526 |
+
}
|
1527 |
+
|
1528 |
/**
|
1529 |
* Prepare Campaign Status dropdown
|
1530 |
*
|
lite/includes/class-es-install.php
CHANGED
@@ -1212,6 +1212,15 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
1212 |
continue;
|
1213 |
}
|
1214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1215 |
$es_post = array(
|
1216 |
'post_title' => wp_strip_all_tags( $template['es_templ_heading'] ),
|
1217 |
'post_content' => $template['es_templ_body'],
|
@@ -1223,10 +1232,10 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
1223 |
'es_custom_css' => $template['es_custom_css']
|
1224 |
)
|
1225 |
);
|
1226 |
-
// Insert the post into the database
|
1227 |
$last_inserted_id = wp_insert_post( $es_post );
|
1228 |
|
1229 |
-
// Generate Featured Image
|
1230 |
self::es_generate_featured_image( $template['es_thumbnail'], $last_inserted_id );
|
1231 |
|
1232 |
}
|
1212 |
continue;
|
1213 |
}
|
1214 |
|
1215 |
+
// Start-Woo-Code.
|
1216 |
+
if ( 'woo' === IG_ES_PLUGIN_PLAN ) {
|
1217 |
+
$template_type = ! empty( $template['es_email_type'] ) ? $template['es_email_type'] : '';
|
1218 |
+
// Don't add post notification and post digest templates in the Woo plugin.
|
1219 |
+
if ( in_array( $template_type, array( 'post_notification', 'post_digest' ), true ) ) {
|
1220 |
+
continue;
|
1221 |
+
}
|
1222 |
+
}
|
1223 |
+
// End-Woo-Code.
|
1224 |
$es_post = array(
|
1225 |
'post_title' => wp_strip_all_tags( $template['es_templ_heading'] ),
|
1226 |
'post_content' => $template['es_templ_body'],
|
1232 |
'es_custom_css' => $template['es_custom_css']
|
1233 |
)
|
1234 |
);
|
1235 |
+
// Insert the post into the database.
|
1236 |
$last_inserted_id = wp_insert_post( $es_post );
|
1237 |
|
1238 |
+
// Generate Featured Image.
|
1239 |
self::es_generate_featured_image( $template['es_thumbnail'], $last_inserted_id );
|
1240 |
|
1241 |
}
|
lite/includes/classes/class-es-admin-settings.php
CHANGED
@@ -46,8 +46,10 @@ class ES_Admin_Settings {
|
|
46 |
$options['ig_es_enable_welcome_email'] = isset( $options['ig_es_enable_welcome_email'] ) ? $options['ig_es_enable_welcome_email'] : 'no';
|
47 |
$options['ig_es_notify_admin'] = isset( $options['ig_es_notify_admin'] ) ? $options['ig_es_notify_admin'] : 'no';
|
48 |
$options['ig_es_enable_cron_admin_email'] = isset( $options['ig_es_enable_cron_admin_email'] ) ? $options['ig_es_enable_cron_admin_email'] : 'no';
|
|
|
49 |
$options['ig_es_powered_by'] = isset( $options['ig_es_powered_by'] ) ? $options['ig_es_powered_by'] : 'no';
|
50 |
-
|
|
|
51 |
$text_fields_to_sanitize = array(
|
52 |
'ig_es_from_name',
|
53 |
'ig_es_admin_emails',
|
@@ -113,7 +115,7 @@ class ES_Admin_Settings {
|
|
113 |
|
114 |
?>
|
115 |
|
116 |
-
<div class="wrap pt-
|
117 |
<span>
|
118 |
<h2 class="wp-heading-inline text-3xl font-bold leading-9 text-gray-700 sm:truncate pb-1"><?php esc_html_e( 'Settings', 'email-subscribers' ); ?></h2>
|
119 |
</span>
|
@@ -316,6 +318,7 @@ class ES_Admin_Settings {
|
|
316 |
),
|
317 |
),
|
318 |
|
|
|
319 |
'ig_es_powered_by' => array(
|
320 |
'id' => 'ig_es_powered_by',
|
321 |
'name' => __( 'Share Icegram', 'email-subscribers' ),
|
@@ -323,6 +326,7 @@ class ES_Admin_Settings {
|
|
323 |
'type' => 'checkbox',
|
324 |
'default' => 'yes',
|
325 |
),
|
|
|
326 |
|
327 |
);
|
328 |
|
@@ -332,7 +336,7 @@ class ES_Admin_Settings {
|
|
332 |
|
333 |
'welcome_emails' => array(
|
334 |
'id' => 'welcome_emails',
|
335 |
-
'name' => __( 'Welcome
|
336 |
'info' => __( 'Send welcome email to new contact after signup.', 'email-subscribers' ),
|
337 |
'sub_fields' => array(
|
338 |
|
@@ -469,6 +473,15 @@ class ES_Admin_Settings {
|
|
469 |
|
470 |
$signup_confirmation_settings = apply_filters( 'ig_es_registered_signup_confirmation_settings', $signup_confirmation_settings );
|
471 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
$email_sending_settings = array(
|
473 |
'ig_es_cronurl' => array(
|
474 |
'type' => 'text',
|
@@ -478,8 +491,7 @@ class ES_Admin_Settings {
|
|
478 |
'readonly' => 'readonly',
|
479 |
'id' => 'ig_es_cronurl',
|
480 |
'name' => __( 'Cron URL', 'email-subscribers' ),
|
481 |
-
|
482 |
-
'desc' => sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' ),
|
483 |
),
|
484 |
'ig_es_disable_wp_cron' => array(
|
485 |
'type' => 'checkbox',
|
46 |
$options['ig_es_enable_welcome_email'] = isset( $options['ig_es_enable_welcome_email'] ) ? $options['ig_es_enable_welcome_email'] : 'no';
|
47 |
$options['ig_es_notify_admin'] = isset( $options['ig_es_notify_admin'] ) ? $options['ig_es_notify_admin'] : 'no';
|
48 |
$options['ig_es_enable_cron_admin_email'] = isset( $options['ig_es_enable_cron_admin_email'] ) ? $options['ig_es_enable_cron_admin_email'] : 'no';
|
49 |
+
// Start-IG-Code.
|
50 |
$options['ig_es_powered_by'] = isset( $options['ig_es_powered_by'] ) ? $options['ig_es_powered_by'] : 'no';
|
51 |
+
// End-IG-Code.
|
52 |
+
|
53 |
$text_fields_to_sanitize = array(
|
54 |
'ig_es_from_name',
|
55 |
'ig_es_admin_emails',
|
115 |
|
116 |
?>
|
117 |
|
118 |
+
<div class="wrap pt-4 font-sans">
|
119 |
<span>
|
120 |
<h2 class="wp-heading-inline text-3xl font-bold leading-9 text-gray-700 sm:truncate pb-1"><?php esc_html_e( 'Settings', 'email-subscribers' ); ?></h2>
|
121 |
</span>
|
318 |
),
|
319 |
),
|
320 |
|
321 |
+
// Start-IG-Code.
|
322 |
'ig_es_powered_by' => array(
|
323 |
'id' => 'ig_es_powered_by',
|
324 |
'name' => __( 'Share Icegram', 'email-subscribers' ),
|
326 |
'type' => 'checkbox',
|
327 |
'default' => 'yes',
|
328 |
),
|
329 |
+
// End-IG-Code.
|
330 |
|
331 |
);
|
332 |
|
336 |
|
337 |
'welcome_emails' => array(
|
338 |
'id' => 'welcome_emails',
|
339 |
+
'name' => __( 'Welcome email', 'email-subscribers' ),
|
340 |
'info' => __( 'Send welcome email to new contact after signup.', 'email-subscribers' ),
|
341 |
'sub_fields' => array(
|
342 |
|
473 |
|
474 |
$signup_confirmation_settings = apply_filters( 'ig_es_registered_signup_confirmation_settings', $signup_confirmation_settings );
|
475 |
|
476 |
+
$cron_url_setting_desc = '';
|
477 |
+
|
478 |
+
if ( ES()->is_trial_valid() ) {
|
479 |
+
$cron_url_setting_desc = sprintf( __( '<span class="es-send-success es-icon"></span> We will take care of it. You don\'t need to visit this URL manually.', 'email-subscribers' ) );
|
480 |
+
} else {
|
481 |
+
/* translators: %s: Link to Icegram documentation */
|
482 |
+
$cron_url_setting_desc = sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' );
|
483 |
+
}
|
484 |
+
|
485 |
$email_sending_settings = array(
|
486 |
'ig_es_cronurl' => array(
|
487 |
'type' => 'text',
|
491 |
'readonly' => 'readonly',
|
492 |
'id' => 'ig_es_cronurl',
|
493 |
'name' => __( 'Cron URL', 'email-subscribers' ),
|
494 |
+
'desc' => $cron_url_setting_desc,
|
|
|
495 |
),
|
496 |
'ig_es_disable_wp_cron' => array(
|
497 |
'type' => 'checkbox',
|
lite/includes/classes/class-es-campaigns-table.php
CHANGED
@@ -93,7 +93,7 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
93 |
$action = ig_es_get_request_data( 'action' );
|
94 |
global $ig_es_tracker;
|
95 |
?>
|
96 |
-
<div class="wrap pt-
|
97 |
<?php
|
98 |
if ( 'broadcast_created' === $action ) {
|
99 |
|
@@ -110,12 +110,15 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
110 |
</h2>
|
111 |
</div>
|
112 |
<div class="mt-1">
|
|
|
113 |
<a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button ml-2 align-middle"><?php esc_html_e( 'Create Post Notification', 'email-subscribers' ); ?></a>
|
|
|
114 |
<a href="admin.php?page=es_newsletters" class="ig-es-title-button ml-2 align-middle"><?php esc_html_e( 'Send Broadcast', 'email-subscribers' ); ?></a>
|
115 |
|
116 |
<?php
|
117 |
do_action( 'ig_es_after_campaign_type_buttons' );
|
118 |
|
|
|
119 |
$icegram_plugin = 'icegram/icegram.php';
|
120 |
$active_plugins = $ig_es_tracker::get_active_plugins();
|
121 |
if ( in_array( $icegram_plugin, $active_plugins ) ) {
|
@@ -124,7 +127,10 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
124 |
<a href="<?php echo esc_url( $redirect_url ); ?>" class="ig-es-link-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Onsite Campaigns', 'email-subscribers' ); ?></a>
|
125 |
<?php } else { ?>
|
126 |
<a href="admin.php?page=go_to_icegram&action=create_campaign" class="ig-es-link-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Onsite Campaigns', 'email-subscribers' ); ?></a>
|
127 |
-
|
|
|
|
|
|
|
128 |
|
129 |
<a href="edit.php?post_type=es_template" class="ig-es-imp-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Manage Templates', 'email-subscribers' ); ?></a>
|
130 |
|
@@ -569,7 +575,7 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
569 |
'type' => __( 'Type', 'email-subscribers' ),
|
570 |
'list_ids' => __( 'List(s)', 'email-subscribers' ),
|
571 |
'categories' => __( 'Categories', 'email-subscribers' ),
|
572 |
-
'created_at' => __( 'Created
|
573 |
'status' => __( 'Status', 'email-subscribers' ),
|
574 |
);
|
575 |
|
@@ -622,7 +628,7 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
622 |
<p class="search-box">
|
623 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
624 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
625 |
-
<?php submit_button( __( 'Search
|
626 |
</p>
|
627 |
<p class="search-box search-group-box box-ma10">
|
628 |
<?php $filter_by_status = ig_es_get_request_data( 'filter_by_campaign_status' ); ?>
|
93 |
$action = ig_es_get_request_data( 'action' );
|
94 |
global $ig_es_tracker;
|
95 |
?>
|
96 |
+
<div class="wrap pt-4 font-sans">
|
97 |
<?php
|
98 |
if ( 'broadcast_created' === $action ) {
|
99 |
|
110 |
</h2>
|
111 |
</div>
|
112 |
<div class="mt-1">
|
113 |
+
<!-- Start-IG-Code -->
|
114 |
<a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button ml-2 align-middle"><?php esc_html_e( 'Create Post Notification', 'email-subscribers' ); ?></a>
|
115 |
+
<!-- End-IG-Code -->
|
116 |
<a href="admin.php?page=es_newsletters" class="ig-es-title-button ml-2 align-middle"><?php esc_html_e( 'Send Broadcast', 'email-subscribers' ); ?></a>
|
117 |
|
118 |
<?php
|
119 |
do_action( 'ig_es_after_campaign_type_buttons' );
|
120 |
|
121 |
+
// Start-IG-Code.
|
122 |
$icegram_plugin = 'icegram/icegram.php';
|
123 |
$active_plugins = $ig_es_tracker::get_active_plugins();
|
124 |
if ( in_array( $icegram_plugin, $active_plugins ) ) {
|
127 |
<a href="<?php echo esc_url( $redirect_url ); ?>" class="ig-es-link-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Onsite Campaigns', 'email-subscribers' ); ?></a>
|
128 |
<?php } else { ?>
|
129 |
<a href="admin.php?page=go_to_icegram&action=create_campaign" class="ig-es-link-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Onsite Campaigns', 'email-subscribers' ); ?></a>
|
130 |
+
<?php
|
131 |
+
}
|
132 |
+
// End-IG-Code.
|
133 |
+
?>
|
134 |
|
135 |
<a href="edit.php?post_type=es_template" class="ig-es-imp-button px-3 py-1 ml-2 align-middle"><?php esc_html_e( 'Manage Templates', 'email-subscribers' ); ?></a>
|
136 |
|
575 |
'type' => __( 'Type', 'email-subscribers' ),
|
576 |
'list_ids' => __( 'List(s)', 'email-subscribers' ),
|
577 |
'categories' => __( 'Categories', 'email-subscribers' ),
|
578 |
+
'created_at' => __( 'Created', 'email-subscribers' ),
|
579 |
'status' => __( 'Status', 'email-subscribers' ),
|
580 |
);
|
581 |
|
628 |
<p class="search-box">
|
629 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
630 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
631 |
+
<?php submit_button( __( 'Search campaigns', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
632 |
</p>
|
633 |
<p class="search-box search-group-box box-ma10">
|
634 |
<?php $filter_by_status = ig_es_get_request_data( 'filter_by_campaign_status' ); ?>
|
lite/includes/classes/class-es-contacts-table.php
CHANGED
@@ -142,8 +142,8 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
142 |
'action' => 'export',
|
143 |
'url' => add_query_arg( 'action', 'export', 'admin.php?page=es_subscribers' ),
|
144 |
),
|
145 |
-
|
146 |
-
'sync'
|
147 |
'label' => __( 'Sync', 'email-subscribers' ),
|
148 |
'indicator_option' => 'ig_es_show_sync_tab',
|
149 |
'indicator_label' => __( 'New', 'email-subscribers' ),
|
@@ -151,7 +151,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 |
-
|
155 |
'manage_lists' => array(
|
156 |
'label' => __( 'Manage Lists', 'email-subscribers' ),
|
157 |
'indicator_option' => '',
|
@@ -179,7 +179,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
179 |
*/
|
180 |
public function render() {
|
181 |
?>
|
182 |
-
<div class="wrap pt-
|
183 |
|
184 |
<?php
|
185 |
|
@@ -297,7 +297,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
297 |
<table class="min-w-full overflow-hidden bg-white rounded-lg shadow font-sans">
|
298 |
<tr>
|
299 |
<td class="w-1/5 border-r lg:px-4">
|
300 |
-
<div class="block pt-3 pb-2 pl-2"><span class="text-lg font-medium text-gray-400"><?php echo esc_html__( 'Total
|
301 |
<div class="flex pt-2 pb-2 h-20">
|
302 |
<div class="lg:pl-2 ">
|
303 |
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-400 mt-1">
|
@@ -311,7 +311,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
311 |
</div>
|
312 |
</td>
|
313 |
<td class="w-4/5">
|
314 |
-
<div class="block pt-4 pb-1"><span class="text-lg font-medium text-gray-400 pl-6"><?php echo esc_html__( 'Last 60
|
315 |
<div class="flex">
|
316 |
<div class="lg:w-3/12 xl:w-2/12 h-20 pl-6 pt-3 border-r border-gray-200">
|
317 |
<div class="mb-1">
|
@@ -378,12 +378,12 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
378 |
if ( 0 === $id ) {
|
379 |
|
380 |
$title = __( ' Add New Contact', 'email-subscribers' );
|
381 |
-
$title_action = '<a href="admin.php?page=es_lists&action=manage-lists" class="ig-es-imp-button px-
|
382 |
|
383 |
} else {
|
384 |
$is_new = false;
|
385 |
$title = __( ' Edit Contact', 'email-subscribers' );
|
386 |
-
$title_action = '<a href="admin.php?page=es_subscribers&action=new" class="ig-es-title-button
|
387 |
|
388 |
$contact = $this->db->get( $id );
|
389 |
|
@@ -533,25 +533,24 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
533 |
|
534 |
?>
|
535 |
|
536 |
-
<div class="max-w-full mt-
|
537 |
<header class="wp-heading-inline">
|
538 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
539 |
<div class="flex-1 min-w-0">
|
540 |
-
<
|
541 |
-
|
542 |
-
|
543 |
-
<
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
</svg>
|
550 |
<?php echo esc_html( $title ); ?>
|
551 |
</h2>
|
552 |
</div>
|
553 |
|
554 |
-
<div class="
|
555 |
<div id="ig-es-create-button" class="relative inline-block text-left">
|
556 |
<?php
|
557 |
echo wp_kses_post( $title_action );
|
@@ -563,7 +562,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
563 |
<div>
|
564 |
<hr class="wp-header-end">
|
565 |
</div>
|
566 |
-
<div class="bg-white shadow-md rounded-lg">
|
567 |
<?php echo wp_kses_post( $this->prepare_contact_form( $data, $is_new ) ); ?>
|
568 |
|
569 |
</div>
|
@@ -771,7 +770,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
771 |
<div class="flex flex-row border-b border-gray-100">
|
772 |
<div class="flex w-1/5">
|
773 |
<div class="ml-4 pt-4">
|
774 |
-
<label for="send_email"><span class="block ml-4 pt-1 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Send
|
775 |
</label>
|
776 |
</div>
|
777 |
</div>
|
@@ -1045,9 +1044,9 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
1045 |
public function get_bulk_actions() {
|
1046 |
$actions = array(
|
1047 |
'bulk_delete' => __( 'Delete', 'email-subscribers' ),
|
1048 |
-
'bulk_list_update' => __( 'Move
|
1049 |
-
'bulk_list_add' => __( 'Add
|
1050 |
-
'bulk_status_update' => __( 'Change
|
1051 |
);
|
1052 |
|
1053 |
return $actions;
|
@@ -1068,7 +1067,7 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
1068 |
<p class="search-box box-ma10">
|
1069 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
1070 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
1071 |
-
<?php submit_button( __( 'Search
|
1072 |
</p>
|
1073 |
<p class="search-box search-group-box box-ma10">
|
1074 |
<?php $filter_by_status = ig_es_get_request_data( 'filter_by_status' ); ?>
|
142 |
'action' => 'export',
|
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',
|
149 |
'indicator_label' => __( 'New', 'email-subscribers' ),
|
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' ),
|
157 |
'indicator_option' => '',
|
179 |
*/
|
180 |
public function render() {
|
181 |
?>
|
182 |
+
<div class="wrap pt-4 font-sans">
|
183 |
|
184 |
<?php
|
185 |
|
297 |
<table class="min-w-full overflow-hidden bg-white rounded-lg shadow font-sans">
|
298 |
<tr>
|
299 |
<td class="w-1/5 border-r lg:px-4">
|
300 |
+
<div class="block pt-3 pb-2 pl-2"><span class="text-lg font-medium text-gray-400"><?php echo esc_html__( 'Total contacts', 'email-subscribers' ); ?></span></div>
|
301 |
<div class="flex pt-2 pb-2 h-20">
|
302 |
<div class="lg:pl-2 ">
|
303 |
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-400 mt-1">
|
311 |
</div>
|
312 |
</td>
|
313 |
<td class="w-4/5">
|
314 |
+
<div class="block pt-4 pb-1"><span class="text-lg font-medium text-gray-400 pl-6"><?php echo esc_html__( 'Last 60 days', 'email-subscribers' ); ?></span></div>
|
315 |
<div class="flex">
|
316 |
<div class="lg:w-3/12 xl:w-2/12 h-20 pl-6 pt-3 border-r border-gray-200">
|
317 |
<div class="mb-1">
|
378 |
if ( 0 === $id ) {
|
379 |
|
380 |
$title = __( ' Add New Contact', 'email-subscribers' );
|
381 |
+
$title_action = '<a href="admin.php?page=es_lists&action=manage-lists" class="ig-es-imp-button px-3 py-1">' . __( 'Manage Lists', 'email-subscribers' ) . '</a>';
|
382 |
|
383 |
} else {
|
384 |
$is_new = false;
|
385 |
$title = __( ' Edit Contact', 'email-subscribers' );
|
386 |
+
$title_action = '<a href="admin.php?page=es_subscribers&action=new" class="ig-es-title-button mx-2"> ' . __( 'Add New', 'email-subscribers' ) . '</a>';
|
387 |
|
388 |
$contact = $this->db->get( $id );
|
389 |
|
533 |
|
534 |
?>
|
535 |
|
536 |
+
<div class="max-w-full -mt-3 font-sans">
|
537 |
<header class="wp-heading-inline">
|
538 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
539 |
<div class="flex-1 min-w-0">
|
540 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
541 |
+
<ol class="list-none p-0 inline-flex">
|
542 |
+
<li class="flex items-center text-sm tracking-wide">
|
543 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
544 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
545 |
+
</li>
|
546 |
+
</ol>
|
547 |
+
</nav>
|
548 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
|
|
549 |
<?php echo esc_html( $title ); ?>
|
550 |
</h2>
|
551 |
</div>
|
552 |
|
553 |
+
<div class="flex md:mt-0">
|
554 |
<div id="ig-es-create-button" class="relative inline-block text-left">
|
555 |
<?php
|
556 |
echo wp_kses_post( $title_action );
|
562 |
<div>
|
563 |
<hr class="wp-header-end">
|
564 |
</div>
|
565 |
+
<div class="bg-white shadow-md rounded-lg mt-8">
|
566 |
<?php echo wp_kses_post( $this->prepare_contact_form( $data, $is_new ) ); ?>
|
567 |
|
568 |
</div>
|
770 |
<div class="flex flex-row border-b border-gray-100">
|
771 |
<div class="flex w-1/5">
|
772 |
<div class="ml-4 pt-4">
|
773 |
+
<label for="send_email"><span class="block ml-4 pt-1 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Send welcome email?', 'email-subscribers' ); ?></span>
|
774 |
</label>
|
775 |
</div>
|
776 |
</div>
|
1044 |
public function get_bulk_actions() {
|
1045 |
$actions = array(
|
1046 |
'bulk_delete' => __( 'Delete', 'email-subscribers' ),
|
1047 |
+
'bulk_list_update' => __( 'Move to list', 'email-subscribers' ),
|
1048 |
+
'bulk_list_add' => __( 'Add to list', 'email-subscribers' ),
|
1049 |
+
'bulk_status_update' => __( 'Change status', 'email-subscribers' ),
|
1050 |
);
|
1051 |
|
1052 |
return $actions;
|
1067 |
<p class="search-box box-ma10">
|
1068 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
1069 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
1070 |
+
<?php submit_button( __( 'Search contacts', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
1071 |
</p>
|
1072 |
<p class="search-box search-group-box box-ma10">
|
1073 |
<?php $filter_by_status = ig_es_get_request_data( 'filter_by_status' ); ?>
|
lite/includes/classes/class-es-export-subscribers.php
CHANGED
@@ -79,7 +79,7 @@ class Export_Subscribers {
|
|
79 |
<tr class="bg-gray-100 text-sm text-left leading-4 text-gray-500 tracking-wider border-b border-t border-gray-200 ">
|
80 |
<th class="w-1/12 pl-8 py-4 font-medium" scope="col"><?php esc_html_e( 'No.', 'email-subscribers' ); ?></th>
|
81 |
<th class="w-2/12 pl-4 py-4 font-medium" scope="col"><?php esc_html_e( 'Contacts', 'email-subscribers' ); ?></th>
|
82 |
-
<th class="w-2/12 pl-8 py-4 font-medium" scope="col"><?php esc_html_e( 'Total
|
83 |
<th class="w-2/12 pl-16 py-4 font-medium" scope="col"><?php esc_html_e( 'Export', 'email-subscribers' ); ?></th>
|
84 |
</tr>
|
85 |
|
@@ -94,11 +94,11 @@ class Export_Subscribers {
|
|
94 |
|
95 |
$export_lists = array(
|
96 |
|
97 |
-
'all' => __( 'All
|
98 |
-
'subscribed' => __( 'Subscribed
|
99 |
-
'unsubscribed' => __( 'Unsubscribed
|
100 |
// 'confirmed' => __( 'Confirmed Contacts', 'email-subscribers' ),
|
101 |
-
'unconfirmed' => __( 'Unconfirmed
|
102 |
'select_list' => $list_dropdown_html,
|
103 |
);
|
104 |
|
@@ -147,20 +147,31 @@ class Export_Subscribers {
|
|
147 |
|
148 |
?>
|
149 |
|
150 |
-
<div class="
|
151 |
-
<
|
152 |
-
<
|
153 |
-
<
|
154 |
-
|
155 |
-
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
<?php
|
158 |
ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
|
159 |
?>
|
160 |
-
|
161 |
-
|
|
|
162 |
<div><hr class="wp-header-end"></div>
|
163 |
-
<div class="mt-
|
164 |
<form name="frm_es_subscriberexport" method="post">
|
165 |
<table class="min-w-full" id="straymanage">
|
166 |
<thead>
|
79 |
<tr class="bg-gray-100 text-sm text-left leading-4 text-gray-500 tracking-wider border-b border-t border-gray-200 ">
|
80 |
<th class="w-1/12 pl-8 py-4 font-medium" scope="col"><?php esc_html_e( 'No.', 'email-subscribers' ); ?></th>
|
81 |
<th class="w-2/12 pl-4 py-4 font-medium" scope="col"><?php esc_html_e( 'Contacts', 'email-subscribers' ); ?></th>
|
82 |
+
<th class="w-2/12 pl-8 py-4 font-medium" scope="col"><?php esc_html_e( 'Total contacts', 'email-subscribers' ); ?></th>
|
83 |
<th class="w-2/12 pl-16 py-4 font-medium" scope="col"><?php esc_html_e( 'Export', 'email-subscribers' ); ?></th>
|
84 |
</tr>
|
85 |
|
94 |
|
95 |
$export_lists = array(
|
96 |
|
97 |
+
'all' => __( 'All contacts', 'email-subscribers' ),
|
98 |
+
'subscribed' => __( 'Subscribed contacts', 'email-subscribers' ),
|
99 |
+
'unsubscribed' => __( 'Unsubscribed contacts', 'email-subscribers' ),
|
100 |
// 'confirmed' => __( 'Confirmed Contacts', 'email-subscribers' ),
|
101 |
+
'unconfirmed' => __( 'Unconfirmed contacts', 'email-subscribers' ),
|
102 |
'select_list' => $list_dropdown_html,
|
103 |
);
|
104 |
|
147 |
|
148 |
?>
|
149 |
|
150 |
+
<div class="max-w-full -mt-3 font-sans">
|
151 |
+
<header class="wp-heading-inline">
|
152 |
+
<div class="flex">
|
153 |
+
<div>
|
154 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
155 |
+
<ol class="list-none p-0 inline-flex">
|
156 |
+
<li class="flex items-center text-sm tracking-wide">
|
157 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
158 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
159 |
+
</li>
|
160 |
+
</ol>
|
161 |
+
</nav>
|
162 |
+
<h2 class="-mt-1.5 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate"> <?php esc_html_e( 'Export Contacts', 'email-subscribers' ); ?>
|
163 |
+
</h2>
|
164 |
+
</div>
|
165 |
+
|
166 |
+
<div class="mt-4 ml-2">
|
167 |
<?php
|
168 |
ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
|
169 |
?>
|
170 |
+
</div>
|
171 |
+
</div>
|
172 |
+
</header>
|
173 |
<div><hr class="wp-header-end"></div>
|
174 |
+
<div class="mt-8 shadow rounded-lg overflow-hidden">
|
175 |
<form name="frm_es_subscriberexport" method="post">
|
176 |
<table class="min-w-full" id="straymanage">
|
177 |
<thead>
|
lite/includes/classes/class-es-forms-table.php
CHANGED
@@ -78,7 +78,7 @@ class ES_Forms_Table extends WP_List_Table {
|
|
78 |
|
79 |
$action = ig_es_get_request_data( 'action' );
|
80 |
?>
|
81 |
-
<div class="wrap pt-
|
82 |
<?php
|
83 |
if ( 'new' === $action ) {
|
84 |
$this->es_new_form_callback();
|
@@ -301,13 +301,19 @@ class ES_Forms_Table extends WP_List_Table {
|
|
301 |
|
302 |
?>
|
303 |
|
304 |
-
<div class="max-w-full mt-
|
305 |
<header class="wp-heading-inline">
|
306 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
307 |
<div class="flex-1 min-w-0">
|
308 |
-
<
|
309 |
-
|
310 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
<?php
|
312 |
if ( $is_new ) {
|
313 |
esc_html_e( ' New Form', 'email-subscribers' );
|
@@ -316,15 +322,15 @@ class ES_Forms_Table extends WP_List_Table {
|
|
316 |
}
|
317 |
|
318 |
?>
|
319 |
-
</
|
320 |
</div>
|
321 |
</div>
|
322 |
</header>
|
323 |
<div class=""><hr class="wp-header-end"></div>
|
324 |
<div id="poststuff">
|
325 |
<div id="post-body" class="metabox-holder column-1">
|
326 |
-
<div id="post-body-content">
|
327 |
-
<div class="bg-white shadow-md rounded-lg">
|
328 |
<form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
329 |
|
330 |
|
@@ -926,7 +932,7 @@ class ES_Forms_Table extends WP_List_Table {
|
|
926 |
<p class="search-box">
|
927 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
928 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
929 |
-
<?php submit_button( __( 'Search
|
930 |
</p>
|
931 |
<?php
|
932 |
}
|
78 |
|
79 |
$action = ig_es_get_request_data( 'action' );
|
80 |
?>
|
81 |
+
<div class="wrap pt-4 font-sans">
|
82 |
<?php
|
83 |
if ( 'new' === $action ) {
|
84 |
$this->es_new_form_callback();
|
301 |
|
302 |
?>
|
303 |
|
304 |
+
<div class="max-w-full -mt-3 font-sans">
|
305 |
<header class="wp-heading-inline">
|
306 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
307 |
<div class="flex-1 min-w-0">
|
308 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
309 |
+
<ol class="list-none p-0 inline-flex">
|
310 |
+
<li class="flex items-center text-sm tracking-wide">
|
311 |
+
<a class="hover:underline" href="admin.php?page=es_forms"><?php esc_html_e('Forms ', 'email-subscribers'); ?></a>
|
312 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
313 |
+
</li>
|
314 |
+
</ol>
|
315 |
+
</nav>
|
316 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
317 |
<?php
|
318 |
if ( $is_new ) {
|
319 |
esc_html_e( ' New Form', 'email-subscribers' );
|
322 |
}
|
323 |
|
324 |
?>
|
325 |
+
</h2>
|
326 |
</div>
|
327 |
</div>
|
328 |
</header>
|
329 |
<div class=""><hr class="wp-header-end"></div>
|
330 |
<div id="poststuff">
|
331 |
<div id="post-body" class="metabox-holder column-1">
|
332 |
+
<div id="post-body-content" class="pt-0.5">
|
333 |
+
<div class="bg-white shadow-md rounded-lg mt-5 pt-1">
|
334 |
<form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
335 |
|
336 |
|
932 |
<p class="search-box">
|
933 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
934 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
935 |
+
<?php submit_button( __( 'Search forms', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
936 |
</p>
|
937 |
<?php
|
938 |
}
|
lite/includes/classes/class-es-handle-sync-wp-user.php
CHANGED
@@ -206,16 +206,28 @@ class ES_Handle_Sync_Wp_User {
|
|
206 |
$audience_tab_main_navigation = apply_filters( 'ig_es_audience_tab_main_navigation', $active_tab, $audience_tab_main_navigation );
|
207 |
|
208 |
?>
|
209 |
-
<div class="
|
210 |
<header class="wp-heading-inline">
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
219 |
</header>
|
220 |
|
221 |
<?php $this->sync_users_callback(); ?>
|
206 |
$audience_tab_main_navigation = apply_filters( 'ig_es_audience_tab_main_navigation', $active_tab, $audience_tab_main_navigation );
|
207 |
|
208 |
?>
|
209 |
+
<div class="max-w-full -mt-3 font-sans">
|
210 |
<header class="wp-heading-inline">
|
211 |
+
<div class="flex">
|
212 |
+
<div>
|
213 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
214 |
+
<ol class="list-none p-0 inline-flex">
|
215 |
+
<li class="flex items-center text-sm tracking-wide">
|
216 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
217 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
218 |
+
</li>
|
219 |
+
</ol>
|
220 |
+
</nav>
|
221 |
+
<h2 class="-mt-1.5 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate"> <?php esc_html_e( 'Sync contacts', 'email-subscribers' ); ?>
|
222 |
+
</h2>
|
223 |
+
</div>
|
224 |
+
|
225 |
+
<div class="mt-4 ml-2">
|
226 |
+
<?php
|
227 |
+
ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
|
228 |
+
?>
|
229 |
+
</div>
|
230 |
+
</div>
|
231 |
</header>
|
232 |
|
233 |
<?php $this->sync_users_callback(); ?>
|
lite/includes/classes/class-es-import-subscribers.php
CHANGED
@@ -258,7 +258,7 @@ class ES_Import_Subscribers {
|
|
258 |
?>
|
259 |
|
260 |
<div class="tool-box">
|
261 |
-
<div class="meta-box-sortables ui-sortable bg-white shadow-md mt-
|
262 |
<form class="ml-7 mr-4 text-left pt-4 mt-2 item-center" method="post" name="form_addemail" id="form_addemail" action="#" enctype="multipart/form-data">
|
263 |
<table class="max-w-full form-table">
|
264 |
<tbody>
|
@@ -337,18 +337,30 @@ class ES_Import_Subscribers {
|
|
337 |
|
338 |
?>
|
339 |
|
340 |
-
<div class="
|
341 |
-
<
|
342 |
-
<
|
343 |
-
<
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
|
353 |
<div><hr class="wp-header-end"></div>
|
354 |
<?php $this->import_callback(); ?>
|
258 |
?>
|
259 |
|
260 |
<div class="tool-box">
|
261 |
+
<div class="meta-box-sortables ui-sortable bg-white shadow-md mt-8 rounded-lg">
|
262 |
<form class="ml-7 mr-4 text-left pt-4 mt-2 item-center" method="post" name="form_addemail" id="form_addemail" action="#" enctype="multipart/form-data">
|
263 |
<table class="max-w-full form-table">
|
264 |
<tbody>
|
337 |
|
338 |
?>
|
339 |
|
340 |
+
<div class="max-w-full -mt-3 font-sans">
|
341 |
+
<header class="wp-heading-inline">
|
342 |
+
<div class="flex">
|
343 |
+
<div>
|
344 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
345 |
+
<ol class="list-none p-0 inline-flex">
|
346 |
+
<li class="flex items-center text-sm tracking-wide">
|
347 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
348 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
349 |
+
</li>
|
350 |
+
</ol>
|
351 |
+
</nav>
|
352 |
+
<h2 class="-mt-1.5 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
353 |
+
<?php esc_html_e( 'Import Contacts', 'email-subscribers' ); ?>
|
354 |
+
</h2>
|
355 |
+
</div>
|
356 |
+
|
357 |
+
<div class="mt-4 ml-2">
|
358 |
+
<?php
|
359 |
+
ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
|
360 |
+
?>
|
361 |
+
</div>
|
362 |
+
</div>
|
363 |
+
</header>
|
364 |
|
365 |
<div><hr class="wp-header-end"></div>
|
366 |
<?php $this->import_callback(); ?>
|
lite/includes/classes/class-es-info.php
CHANGED
@@ -14,6 +14,8 @@ class ES_Info {
|
|
14 |
}
|
15 |
|
16 |
public function plugin_menu() {
|
|
|
|
|
17 |
$help_title = __( 'Help & Info', 'email-subscribers' );
|
18 |
add_submenu_page( 'es_dashboard', $help_title, $help_title, 'edit_posts', 'es_general_information', array( $this, 'es_information_callback' ) );
|
19 |
|
@@ -21,6 +23,7 @@ class ES_Info {
|
|
21 |
if ( ! ES()->is_pro() ) {
|
22 |
add_submenu_page( 'es_dashboard', $pro_title, $pro_title, 'edit_posts', 'es_pricing', array( $this, 'es_pricing_callback' ) );
|
23 |
}
|
|
|
24 |
}
|
25 |
|
26 |
public function es_information_callback() {
|
14 |
}
|
15 |
|
16 |
public function plugin_menu() {
|
17 |
+
|
18 |
+
// Start-IG-Code.
|
19 |
$help_title = __( 'Help & Info', 'email-subscribers' );
|
20 |
add_submenu_page( 'es_dashboard', $help_title, $help_title, 'edit_posts', 'es_general_information', array( $this, 'es_information_callback' ) );
|
21 |
|
23 |
if ( ! ES()->is_pro() ) {
|
24 |
add_submenu_page( 'es_dashboard', $pro_title, $pro_title, 'edit_posts', 'es_pricing', array( $this, 'es_pricing_callback' ) );
|
25 |
}
|
26 |
+
// End-IG-Code.
|
27 |
}
|
28 |
|
29 |
public function es_information_callback() {
|
lite/includes/classes/class-es-lists-table.php
CHANGED
@@ -67,7 +67,7 @@ class ES_Lists_Table extends WP_List_Table {
|
|
67 |
$action = ig_es_get_request_data( 'action' );
|
68 |
|
69 |
?>
|
70 |
-
<div class="wrap pt-
|
71 |
<?php
|
72 |
if ( 'new' === $action ) {
|
73 |
$this->es_new_lists_callback();
|
@@ -77,15 +77,25 @@ class ES_Lists_Table extends WP_List_Table {
|
|
77 |
} else {
|
78 |
?>
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
</div>
|
88 |
-
</
|
89 |
<div><hr class="wp-header-end"></div>
|
90 |
<div id="poststuff" class="es-items-lists es-lists-table">
|
91 |
<div id="post-body" class="metabox-holder column-1">
|
@@ -260,39 +270,46 @@ class ES_Lists_Table extends WP_List_Table {
|
|
260 |
|
261 |
?>
|
262 |
|
263 |
-
<div class="max-w-full mt-
|
264 |
<header class="wp-heading-inline">
|
265 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
266 |
<div class="flex-1 min-w-0">
|
267 |
-
<
|
268 |
-
<
|
269 |
-
<
|
270 |
-
<a class="
|
271 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
<?php
|
273 |
if ( $is_new ) {
|
274 |
-
esc_html_e( 'Add New', 'email-subscribers' );
|
275 |
} else {
|
276 |
esc_html_e( 'Edit List', 'email-subscribers' );
|
277 |
}
|
278 |
|
279 |
?>
|
280 |
-
|
281 |
-
</div>
|
282 |
</div>
|
283 |
-
</
|
284 |
-
|
|
|
285 |
<div class="rounded max-w-full ">
|
286 |
<div id="poststuff">
|
287 |
-
<div id="post-body" class="metabox-holder column-1">
|
288 |
<div id="post-body-content">
|
289 |
-
<div class="bg-white shadow-md rounded-lg">
|
290 |
<form class="ml-5 mr-4 text-left pt-8 flex-row mt-2 item-center " method="post" action="admin.php?page=es_lists&action=<?php echo esc_attr( $action ); ?>&list=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
291 |
|
292 |
<div class="flex flex-row ">
|
293 |
<div class="flex w-1/5">
|
294 |
<div class="ml-4 pt-6 px-3 ">
|
295 |
-
<label for="name" class="block text-sm leading-5 font-medium text-gray-600"><?php esc_html_e( 'List
|
296 |
</div>
|
297 |
</div>
|
298 |
<div class="flex">
|
@@ -547,7 +564,7 @@ class ES_Lists_Table extends WP_List_Table {
|
|
547 |
'subscribed' => __( 'Subscribed', 'email-subscribers' ),
|
548 |
'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
|
549 |
'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
|
550 |
-
'all_contacts' => __( 'All
|
551 |
'created_at' => __( 'Created', 'email-subscribers' ),
|
552 |
'export' => __( 'Export', 'email-subscribers' ),
|
553 |
);
|
@@ -597,7 +614,7 @@ class ES_Lists_Table extends WP_List_Table {
|
|
597 |
<p class="search-box">
|
598 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
599 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
600 |
-
<?php submit_button( __( 'Search
|
601 |
</p>
|
602 |
<?php
|
603 |
}
|
67 |
$action = ig_es_get_request_data( 'action' );
|
68 |
|
69 |
?>
|
70 |
+
<div class="wrap pt-4 font-sans">
|
71 |
<?php
|
72 |
if ( 'new' === $action ) {
|
73 |
$this->es_new_lists_callback();
|
77 |
} else {
|
78 |
?>
|
79 |
|
80 |
+
<div class="max-w-full -mt-3 font-sans">
|
81 |
+
<header class="wp-heading-inline">
|
82 |
+
<div class="flex">
|
83 |
+
<div>
|
84 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
85 |
+
<ol class="list-none p-0 inline-flex">
|
86 |
+
<li class="flex items-center text-sm tracking-wide">
|
87 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
88 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
89 |
+
</li>
|
90 |
+
</ol>
|
91 |
+
</nav>
|
92 |
+
<h2 class="-mt-1.5 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate"> <?php esc_html_e( 'Lists', 'email-subscribers' ); ?>
|
93 |
+
</h2>
|
94 |
+
</div>
|
95 |
+
<div class="mt-4"> <a href="admin.php?page=es_lists&action=new" class="ig-es-title-button ml-2"><?php esc_html_e('Add New', 'email-subscribers'); ?></a>
|
96 |
+
</div>
|
97 |
</div>
|
98 |
+
</header>
|
99 |
<div><hr class="wp-header-end"></div>
|
100 |
<div id="poststuff" class="es-items-lists es-lists-table">
|
101 |
<div id="post-body" class="metabox-holder column-1">
|
270 |
|
271 |
?>
|
272 |
|
273 |
+
<div class="max-w-full -mt-3 font-sans">
|
274 |
<header class="wp-heading-inline">
|
275 |
<div class="md:flex md:items-center md:justify-between justify-center">
|
276 |
<div class="flex-1 min-w-0">
|
277 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
278 |
+
<ol class="list-none p-0 inline-flex">
|
279 |
+
<li class="flex items-center text-sm tracking-wide">
|
280 |
+
<a class="hover:underline " href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a>
|
281 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
282 |
+
|
283 |
+
<a class="hover:underline" href="admin.php?page=es_lists&action=manage-lists"><?php esc_html_e(' Lists ', 'email-subscribers'); ?></a>
|
284 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
285 |
+
</li>
|
286 |
+
</ol>
|
287 |
+
</nav>
|
288 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
289 |
<?php
|
290 |
if ( $is_new ) {
|
291 |
+
esc_html_e( 'Add New List', 'email-subscribers' );
|
292 |
} else {
|
293 |
esc_html_e( 'Edit List', 'email-subscribers' );
|
294 |
}
|
295 |
|
296 |
?>
|
297 |
+
</h2>
|
|
|
298 |
</div>
|
299 |
+
</div>
|
300 |
+
</header>
|
301 |
+
<div><hr class="wp-header-end"></div>
|
302 |
<div class="rounded max-w-full ">
|
303 |
<div id="poststuff">
|
304 |
+
<div id="post-body" class="metabox-holder column-1 mt-0.5">
|
305 |
<div id="post-body-content">
|
306 |
+
<div class="bg-white shadow-md rounded-lg mt-5">
|
307 |
<form class="ml-5 mr-4 text-left pt-8 flex-row mt-2 item-center " method="post" action="admin.php?page=es_lists&action=<?php echo esc_attr( $action ); ?>&list=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
308 |
|
309 |
<div class="flex flex-row ">
|
310 |
<div class="flex w-1/5">
|
311 |
<div class="ml-4 pt-6 px-3 ">
|
312 |
+
<label for="name" class="block text-sm leading-5 font-medium text-gray-600"><?php esc_html_e( 'List name', 'email-subscribers' ); ?></label>
|
313 |
</div>
|
314 |
</div>
|
315 |
<div class="flex">
|
564 |
'subscribed' => __( 'Subscribed', 'email-subscribers' ),
|
565 |
'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
|
566 |
'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
|
567 |
+
'all_contacts' => __( 'All contacts', 'email-subscribers' ),
|
568 |
'created_at' => __( 'Created', 'email-subscribers' ),
|
569 |
'export' => __( 'Export', 'email-subscribers' ),
|
570 |
);
|
614 |
<p class="search-box">
|
615 |
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
616 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
617 |
+
<?php submit_button( __( 'Search lists', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
618 |
</p>
|
619 |
<?php
|
620 |
}
|
lite/includes/classes/class-es-mailer.php
CHANGED
@@ -530,15 +530,23 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
530 |
*/
|
531 |
public function get_test_email_content() {
|
532 |
ob_start();
|
|
|
533 |
?>
|
534 |
<html>
|
535 |
<head></head>
|
536 |
<body>
|
537 |
-
<p
|
538 |
-
<p
|
539 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
540 |
<p>Nirav Mehta</p>
|
541 |
<p>Founder, <a href="https://www.icegram.com/">Icegram</a></p>
|
|
|
542 |
</body>
|
543 |
</html>
|
544 |
|
530 |
*/
|
531 |
public function get_test_email_content() {
|
532 |
ob_start();
|
533 |
+
$review_url = 'https://wordpress.org/support/plugin/email-subscribers/reviews/?filter=5';
|
534 |
?>
|
535 |
<html>
|
536 |
<head></head>
|
537 |
<body>
|
538 |
+
<p><?php echo esc_html__( 'Congrats, test email was sent successfully!', 'email-subscribers' ); ?></p>
|
539 |
+
<p><?php echo esc_html__( 'Thank you for trying out Email Subscribers. We are on a mission to make the best Email Marketing Automation plugin for WordPress.', 'email-subscribers' ); ?></p>
|
540 |
+
<!-- Start-IG-Code -->
|
541 |
+
<p>
|
542 |
+
<?php
|
543 |
+
/* translators: 1: <a> 2: </a> */
|
544 |
+
echo sprintf( esc_html__( 'If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!', 'email-subscribers' ), '<a href="' . esc_url( $review_url ) . '">', '</a>' );
|
545 |
+
?>
|
546 |
+
</p>
|
547 |
<p>Nirav Mehta</p>
|
548 |
<p>Founder, <a href="https://www.icegram.com/">Icegram</a></p>
|
549 |
+
<!-- End-IG-Code -->
|
550 |
</body>
|
551 |
</html>
|
552 |
|
lite/includes/classes/class-es-newsletters.php
CHANGED
@@ -230,7 +230,7 @@ class ES_Newsletters {
|
|
230 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
231 |
?>
|
232 |
|
233 |
-
<div class="font-sans wrap">
|
234 |
<?php
|
235 |
if ( ! empty( $message_data ) ) {
|
236 |
$message = $message_data['message'];
|
@@ -245,22 +245,31 @@ class ES_Newsletters {
|
|
245 |
<fieldset class="block es_fieldset">
|
246 |
<div class="mx-auto wp-heading-inline max-w-7xl">
|
247 |
<header class="mx-auto max-w-7xl">
|
248 |
-
<div class="
|
249 |
<div class="flex md:3/5 lg:w-7/12 xl:w-3/5">
|
250 |
-
<div class="
|
251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
<svg class="w-6 h-6 mx-1 mt-4" fill="currentColor" viewBox="0 0 24 24">
|
253 |
<path
|
254 |
fill-rule="evenodd"
|
255 |
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
256 |
clip-rule="evenodd"
|
257 |
></path>
|
258 |
-
</svg>
|
259 |
|
260 |
-
<h2 class="
|
261 |
</h2>
|
262 |
</div>
|
263 |
-
<div class="flex pt-
|
264 |
<ul id="progressbar" class="overflow-hidden">
|
265 |
<li id="content_menu" class="relative float-left px-1 pb-2 text-center list-none cursor-pointer active ">
|
266 |
<span class="mt-1 text-base font-medium tracking-wide text-gray-400 active"><?php echo esc_html__( 'Content', 'email-subscribers' ); ?></span>
|
@@ -271,11 +280,11 @@ class ES_Newsletters {
|
|
271 |
</ul>
|
272 |
</div>
|
273 |
</div>
|
274 |
-
<div class="flex
|
275 |
|
276 |
<div id="broadcast_button" class="inline-block text-left ">
|
277 |
<button type="button"
|
278 |
-
class="inline-flex justify-center w-full py-
|
279 |
<?php
|
280 |
echo esc_html__( 'Next', 'email-subscribers' );
|
281 |
?>
|
@@ -290,7 +299,7 @@ class ES_Newsletters {
|
|
290 |
<div class="relative inline-block text-left">
|
291 |
<span>
|
292 |
<button type="button"
|
293 |
-
class="inline-flex justify-center w-full py-
|
294 |
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" viewBox="0 0 20 20" class="w-3 h-3 my-1 mr-1"><path d="M15 19l-7-7 7-7"></path></svg><?php echo esc_html__( 'Previous', 'email-subscribers' ); ?>
|
295 |
</button>
|
296 |
</span>
|
@@ -299,7 +308,7 @@ class ES_Newsletters {
|
|
299 |
</div>
|
300 |
|
301 |
<span class="md:ml-2 xl:ml-3">
|
302 |
-
<button type="button" class="inline-flex items-center w-full py-
|
303 |
<?php echo esc_html__( 'Save Draft', 'email-subscribers' ); ?>
|
304 |
</button>
|
305 |
</span>
|
@@ -311,7 +320,7 @@ class ES_Newsletters {
|
|
311 |
// If broadcast is sent or being sent then don't allow scheduling to conflicts.
|
312 |
if ( ! $is_broadcast_processing ) {
|
313 |
?>
|
314 |
-
<button type="submit" id="ig_es_broadcast_submitted" name="ig_es_broadcast_submitted" class="inline-flex justify-center py-
|
315 |
value="submitted">
|
316 |
<?php
|
317 |
if ( ES()->is_pro() ) {
|
@@ -333,7 +342,7 @@ class ES_Newsletters {
|
|
333 |
<div class="mx-auto max-w-7xl">
|
334 |
<hr class="wp-header-end">
|
335 |
</div>
|
336 |
-
<div class="mx-auto
|
337 |
<div>
|
338 |
<div class=" bg-white rounded-lg shadow-md md:flex">
|
339 |
<div class="broadcast_main_content py-4 pl-2">
|
@@ -373,7 +382,7 @@ class ES_Newsletters {
|
|
373 |
</div>
|
374 |
<div class="broadcast_side_content ml-2 bg-gray-100 rounded-r-lg">
|
375 |
<div class="block pt-6 mx-4 pb-3">
|
376 |
-
<label for="template" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Design
|
377 |
<select class="block w-full h-8 mt-1 text-sm rounded-md cursor-pointer h-9 form-select" name="broadcast_data[template_id]" id="base_template_id">
|
378 |
<?php
|
379 |
echo wp_kses( $templates, $allowedtags );
|
@@ -434,7 +443,7 @@ class ES_Newsletters {
|
|
434 |
|
435 |
<fieldset class="es_fieldset">
|
436 |
|
437 |
-
<div class="
|
438 |
<?php
|
439 |
$inline_preview_data = $this->get_broadcast_inline_preview_data( $broadcast_data );
|
440 |
?>
|
@@ -481,8 +490,8 @@ class ES_Newsletters {
|
|
481 |
<?php
|
482 |
$enable_open_tracking = ! empty( $broadcast_data['meta']['enable_open_tracking'] ) ? $broadcast_data['meta']['enable_open_tracking'] : get_option( 'ig_es_track_email_opens', 'yes' );
|
483 |
?>
|
484 |
-
<div class="flex w-full
|
485 |
-
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Open
|
486 |
</div>
|
487 |
<div>
|
488 |
<label for="enable_open_tracking" class="inline-flex items-center cursor-pointer ">
|
@@ -735,6 +744,7 @@ class ES_Newsletters {
|
|
735 |
$preview_type = ig_es_get_request_data( 'preview_type' );
|
736 |
$broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
|
737 |
|
|
|
738 |
$template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
|
739 |
$template_data['template_id'] = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
|
740 |
$template_data['campaign_id'] = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : 0;
|
230 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
231 |
?>
|
232 |
|
233 |
+
<div class="font-sans pt-1.5 wrap">
|
234 |
<?php
|
235 |
if ( ! empty( $message_data ) ) {
|
236 |
$message = $message_data['message'];
|
245 |
<fieldset class="block es_fieldset">
|
246 |
<div class="mx-auto wp-heading-inline max-w-7xl">
|
247 |
<header class="mx-auto max-w-7xl">
|
248 |
+
<div class="md:flex md:items-center md:justify-between">
|
249 |
<div class="flex md:3/5 lg:w-7/12 xl:w-3/5">
|
250 |
+
<div class=" min-w-0 md:w-3/5 lg:w-1/2">
|
251 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
252 |
+
<ol class="list-none p-0 inline-flex">
|
253 |
+
<li class="flex items-center text-sm tracking-wide">
|
254 |
+
<a class="hover:underline" href="admin.php?page=es_campaigns"><?php echo esc_html__( 'Campaigns', 'email-subscribers' ); ?>
|
255 |
+
</a>
|
256 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
257 |
+
</li>
|
258 |
+
</ol>
|
259 |
+
</nav>
|
260 |
+
<!-- <span class="pt-1.5 text-base font-normal leading-7 sm:leading-9 sm:truncate text-indigo-600"><a href="admin.php?page=es_campaigns"><?php echo esc_html__( 'Campaigns', 'email-subscribers' ); ?></a></span>
|
261 |
<svg class="w-6 h-6 mx-1 mt-4" fill="currentColor" viewBox="0 0 24 24">
|
262 |
<path
|
263 |
fill-rule="evenodd"
|
264 |
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
265 |
clip-rule="evenodd"
|
266 |
></path>
|
267 |
+
</svg> -->
|
268 |
|
269 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate"> <?php echo esc_html__( 'Broadcast', 'email-subscribers' ); ?>
|
270 |
</h2>
|
271 |
</div>
|
272 |
+
<div class="flex pt-4 md:-mr-8 lg:-mr-16 xl:mr-0 md:ml-8 lg:ml-16 xl:ml-20">
|
273 |
<ul id="progressbar" class="overflow-hidden">
|
274 |
<li id="content_menu" class="relative float-left px-1 pb-2 text-center list-none cursor-pointer active ">
|
275 |
<span class="mt-1 text-base font-medium tracking-wide text-gray-400 active"><?php echo esc_html__( 'Content', 'email-subscribers' ); ?></span>
|
280 |
</ul>
|
281 |
</div>
|
282 |
</div>
|
283 |
+
<div class="flex md:mt-0 md:ml-2 xl:ml-4">
|
284 |
|
285 |
<div id="broadcast_button" class="inline-block text-left ">
|
286 |
<button type="button"
|
287 |
+
class="inline-flex justify-center w-full py-1.5 text-sm font-medium leading-5 text-indigo-600 transition duration-150 ease-in-out border border-indigo-500 rounded-md cursor-pointer select-none next_btn hover:text-indigo-500 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg hover:border-indigo-600 md:px-2 lg:px-3 xl:px-4">
|
288 |
<?php
|
289 |
echo esc_html__( 'Next', 'email-subscribers' );
|
290 |
?>
|
299 |
<div class="relative inline-block text-left">
|
300 |
<span>
|
301 |
<button type="button"
|
302 |
+
class="inline-flex justify-center w-full py-1.5 text-sm font-medium leading-5 text-indigo-600 transition duration-150 ease-in-out border border-indigo-500 rounded-md cursor-pointer select-none pre_btn md:px-1 lg:px-3 xl:px-4 hover:text-indigo-500 hover:border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg ">
|
303 |
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" viewBox="0 0 20 20" class="w-3 h-3 my-1 mr-1"><path d="M15 19l-7-7 7-7"></path></svg><?php echo esc_html__( 'Previous', 'email-subscribers' ); ?>
|
304 |
</button>
|
305 |
</span>
|
308 |
</div>
|
309 |
|
310 |
<span class="md:ml-2 xl:ml-3">
|
311 |
+
<button type="button" class="inline-flex items-center w-full py-1.5 text-sm font-medium leading-5 text-gray-700 transition duration-150 ease-in-out bg-white border border-gray-300 rounded-md ig_es_draft_broadcast md:px-2 lg:px-3 xl:px-4 hover:bg-gray-50 focus:outline-none focus:shadow-outline focus:border-blue-300">
|
312 |
<?php echo esc_html__( 'Save Draft', 'email-subscribers' ); ?>
|
313 |
</button>
|
314 |
</span>
|
320 |
// If broadcast is sent or being sent then don't allow scheduling to conflicts.
|
321 |
if ( ! $is_broadcast_processing ) {
|
322 |
?>
|
323 |
+
<button type="submit" id="ig_es_broadcast_submitted" name="ig_es_broadcast_submitted" class="inline-flex justify-center py-1.5 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-indigo-600 border border-transparent rounded-md md:px-2 lg:px-3 xl:px-4 hover:bg-indigo-500 hover:text-white"
|
324 |
value="submitted">
|
325 |
<?php
|
326 |
if ( ES()->is_pro() ) {
|
342 |
<div class="mx-auto max-w-7xl">
|
343 |
<hr class="wp-header-end">
|
344 |
</div>
|
345 |
+
<div class="mx-auto mt-7 es_broadcast_first max-w-7xl">
|
346 |
<div>
|
347 |
<div class=" bg-white rounded-lg shadow-md md:flex">
|
348 |
<div class="broadcast_main_content py-4 pl-2">
|
382 |
</div>
|
383 |
<div class="broadcast_side_content ml-2 bg-gray-100 rounded-r-lg">
|
384 |
<div class="block pt-6 mx-4 pb-3">
|
385 |
+
<label for="template" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Design template', 'email-subscribers' ); ?></label>
|
386 |
<select class="block w-full h-8 mt-1 text-sm rounded-md cursor-pointer h-9 form-select" name="broadcast_data[template_id]" id="base_template_id">
|
387 |
<?php
|
388 |
echo wp_kses( $templates, $allowedtags );
|
443 |
|
444 |
<fieldset class="es_fieldset">
|
445 |
|
446 |
+
<div class="mt-7 hidden mx-auto es_broadcast_second max-w-7xl">
|
447 |
<?php
|
448 |
$inline_preview_data = $this->get_broadcast_inline_preview_data( $broadcast_data );
|
449 |
?>
|
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 |
?>
|
493 |
+
<div class="flex w-full">
|
494 |
+
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Open tracking', 'email-subscribers' ); ?>
|
495 |
</div>
|
496 |
<div>
|
497 |
<label for="enable_open_tracking" class="inline-flex items-center cursor-pointer ">
|
744 |
$preview_type = ig_es_get_request_data( 'preview_type' );
|
745 |
$broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
|
746 |
|
747 |
+
$template_data = array();
|
748 |
$template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
|
749 |
$template_data['template_id'] = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
|
750 |
$template_data['campaign_id'] = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : 0;
|
lite/includes/classes/class-es-post-notifications.php
CHANGED
@@ -18,7 +18,7 @@ class ES_Post_Notifications_Table {
|
|
18 |
$action = ig_es_get_request_data( 'action' );
|
19 |
|
20 |
?>
|
21 |
-
<div class="wrap font-sans">
|
22 |
<?php
|
23 |
|
24 |
if ( 'edit' === $action ) {
|
@@ -284,28 +284,28 @@ class ES_Post_Notifications_Table {
|
|
284 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
285 |
?>
|
286 |
|
287 |
-
<div class="max-w-full mt-
|
288 |
<header class="wp-heading-inline">
|
289 |
-
<div class="
|
290 |
-
<div class="
|
291 |
-
<
|
292 |
-
|
293 |
-
<
|
294 |
-
|
295 |
-
|
296 |
-
|
|
|
|
|
|
|
297 |
<?php echo esc_html( $heading ); ?>
|
298 |
</h2>
|
299 |
</div>
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
<a href="edit.php?post_type=es_template" class="ig-es-imp-button px-4 py-2"><?php esc_html_e( 'Manage Templates', 'email-subscribers' ); ?></a>
|
307 |
-
</div>
|
308 |
-
</div>
|
309 |
</div>
|
310 |
</div>
|
311 |
</header>
|
@@ -313,7 +313,7 @@ class ES_Post_Notifications_Table {
|
|
313 |
<hr class="wp-header-end">
|
314 |
</div>
|
315 |
|
316 |
-
<div class="bg-white shadow-md rounded-lg">
|
317 |
<form class="ml-5 mr-4 text-left pt-4 mt-2 item-center" method="post" action="admin.php?page=es_notifications&action=<?php echo esc_attr( $action ); ?>&list=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
318 |
|
319 |
<table class="max-w-full form-table">
|
@@ -324,7 +324,7 @@ class ES_Post_Notifications_Table {
|
|
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
|
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 ">
|
@@ -345,7 +345,7 @@ class ES_Post_Notifications_Table {
|
|
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">
|
348 |
-
<?php esc_html_e( 'Select
|
349 |
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php esc_html_e( 'Content of the selected template will be sent out as post notification.', 'email-subscribers' ); ?></p>
|
350 |
</label>
|
351 |
</th>
|
@@ -382,7 +382,7 @@ class ES_Post_Notifications_Table {
|
|
382 |
<?php } ?>
|
383 |
<tr class="border-b border-gray-100">
|
384 |
<th scope="row" class="pt-3 pb-8 w-3/12 text-left">
|
385 |
-
<label for="tag-link"><span class="block ml-6 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Select
|
386 |
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php esc_html_e( 'Notification will be sent out when any post from selected categories will be published.', 'email-subscribers' ); ?></p></label>
|
387 |
</th>
|
388 |
<td class="pt-3 w-9/12" style="vertical-align: top;">
|
18 |
$action = ig_es_get_request_data( 'action' );
|
19 |
|
20 |
?>
|
21 |
+
<div class="wrap pt-4 font-sans">
|
22 |
<?php
|
23 |
|
24 |
if ( 'edit' === $action ) {
|
284 |
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
285 |
?>
|
286 |
|
287 |
+
<div class="max-w-full -mt-3 font-sans">
|
288 |
<header class="wp-heading-inline">
|
289 |
+
<div class="md:flex md:items-center md:justify-between justify-center">
|
290 |
+
<div class="flex-1 min-w-0">
|
291 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
292 |
+
<ol class="list-none p-0 inline-flex">
|
293 |
+
<li class="flex items-center text-sm tracking-wide">
|
294 |
+
<a class="hover:underline" href="admin.php?page=es_campaigns"><?php esc_html_e( 'Campaigns ', 'email-subscribers' ); ?></a>
|
295 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
296 |
+
</li>
|
297 |
+
</ol>
|
298 |
+
</nav>
|
299 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
300 |
<?php echo esc_html( $heading ); ?>
|
301 |
</h2>
|
302 |
</div>
|
303 |
+
|
304 |
+
<div class="flex md:mt-0">
|
305 |
+
<?php if ( 'edit' === $action ) { ?>
|
306 |
+
<a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button py-1.5 mx-2"><?php esc_html_e( 'Add New', 'email-subscribers' ); ?></a>
|
307 |
+
<?php } ?>
|
308 |
+
<a href="edit.php?post_type=es_template" class="ig-es-imp-button px-3 py-1"><?php esc_html_e( 'Manage Templates', 'email-subscribers' ); ?></a>
|
|
|
|
|
|
|
309 |
</div>
|
310 |
</div>
|
311 |
</header>
|
313 |
<hr class="wp-header-end">
|
314 |
</div>
|
315 |
|
316 |
+
<div class="bg-white shadow-md rounded-lg mt-8">
|
317 |
<form class="ml-5 mr-4 text-left pt-4 mt-2 item-center" method="post" action="admin.php?page=es_notifications&action=<?php echo esc_attr( $action ); ?>&list=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
318 |
|
319 |
<table class="max-w-full form-table">
|
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 ">
|
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">
|
348 |
+
<?php esc_html_e( 'Select template', 'email-subscribers' ); ?></span>
|
349 |
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php esc_html_e( 'Content of the selected template will be sent out as post notification.', 'email-subscribers' ); ?></p>
|
350 |
</label>
|
351 |
</th>
|
382 |
<?php } ?>
|
383 |
<tr class="border-b border-gray-100">
|
384 |
<th scope="row" class="pt-3 pb-8 w-3/12 text-left">
|
385 |
+
<label for="tag-link"><span class="block ml-6 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Select post category', 'email-subscribers' ); ?></span>
|
386 |
<p class="italic text-xs font-normal text-gray-400 mt-2 ml-6 leading-snug"><?php esc_html_e( 'Notification will be sent out when any post from selected categories will be published.', 'email-subscribers' ); ?></p></label>
|
387 |
</th>
|
388 |
<td class="pt-3 w-9/12" style="vertical-align: top;">
|
lite/includes/classes/class-es-reports-table.php
CHANGED
@@ -52,7 +52,7 @@ class ES_Reports_Table extends WP_List_Table {
|
|
52 |
$this->view_list( $list );
|
53 |
} else {
|
54 |
?>
|
55 |
-
<div class="wrap pt-
|
56 |
<header class="wp-heading-inline">
|
57 |
<div class="flex">
|
58 |
<div class="flex-1 min-w-0">
|
@@ -78,7 +78,7 @@ class ES_Reports_Table extends WP_List_Table {
|
|
78 |
</div>
|
79 |
</header>
|
80 |
<div><hr class="wp-header-end"></div>
|
81 |
-
<div id="poststuff" class="es-items-lists
|
82 |
<div id="post-body" class="metabox-holder column-1">
|
83 |
<div id="post-body-content">
|
84 |
<div class="meta-box-sortables ui-sortable">
|
@@ -333,7 +333,7 @@ class ES_Reports_Table extends WP_List_Table {
|
|
333 |
'status' => __( 'Status', 'email-subscribers' ),
|
334 |
'start_at' => __( 'Start Date', 'email-subscribers' ),
|
335 |
'finish_at' => __( 'End Date', 'email-subscribers' ),
|
336 |
-
'count' => __( 'Total
|
337 |
);
|
338 |
|
339 |
return $columns;
|
52 |
$this->view_list( $list );
|
53 |
} else {
|
54 |
?>
|
55 |
+
<div class="wrap pt-4 font-sans">
|
56 |
<header class="wp-heading-inline">
|
57 |
<div class="flex">
|
58 |
<div class="flex-1 min-w-0">
|
78 |
</div>
|
79 |
</header>
|
80 |
<div><hr class="wp-header-end"></div>
|
81 |
+
<div id="poststuff" class="es-items-lists">
|
82 |
<div id="post-body" class="metabox-holder column-1">
|
83 |
<div id="post-body-content">
|
84 |
<div class="meta-box-sortables ui-sortable">
|
333 |
'status' => __( 'Status', 'email-subscribers' ),
|
334 |
'start_at' => __( 'Start Date', 'email-subscribers' ),
|
335 |
'finish_at' => __( 'End Date', 'email-subscribers' ),
|
336 |
+
'count' => __( 'Total contacts', 'email-subscribers' ),
|
337 |
);
|
338 |
|
339 |
return $columns;
|
lite/includes/classes/class-es-templates-table.php
CHANGED
@@ -30,14 +30,11 @@ class ES_Templates_Table {
|
|
30 |
$values = get_post_custom( $post->ID );
|
31 |
|
32 |
$selected = isset( $values['es_template_type'] ) ? esc_attr( $values['es_template_type'][0] ) : '';
|
33 |
-
|
34 |
-
|
35 |
-
'post_notification' => __( 'Post Notification', 'email-subscribers' ),
|
36 |
-
);
|
37 |
-
$template_type = apply_filters( 'es_template_type', $template_type );
|
38 |
?>
|
39 |
<p class="mt-3">
|
40 |
-
<label for="es_template_type"><span class="font-semibold text-sm text-gray-700"><?php esc_html_e( 'Select
|
41 |
<select style="margin: 0.20rem 0;" name="es_template_type" id="es_template_type">
|
42 |
<?php
|
43 |
if ( ! empty( $template_type ) ) {
|
@@ -117,7 +114,7 @@ class ES_Templates_Table {
|
|
117 |
|
118 |
<div class="misc-pub-section">
|
119 |
<div id="" class="es_preview_button" style="display: block;">
|
120 |
-
<a style="padding-top: 3px; margin-bottom: 0.2rem;" href="<?php echo esc_url( admin_url() ); ?>admin.php?page=es_template_preview&post=<?php echo esc_attr( $post_id ); ?>&preview=true&preview_id=<?php echo esc_attr( $post_id ); ?>" target="_blank" class="button button-primary es_preview"><?php esc_html_e( 'Preview
|
121 |
<div class="clear"></div>
|
122 |
</div>
|
123 |
</div>
|
@@ -258,7 +255,7 @@ class ES_Templates_Table {
|
|
258 |
$date = $existing_columns['date'];
|
259 |
unset( $existing_columns['date'] );
|
260 |
|
261 |
-
$existing_columns['es_template_type'] = __( 'Template
|
262 |
$existing_columns['es_template_thumbnail'] = __( 'Thumbnail', 'email-subscribers' );
|
263 |
$existing_columns['date'] = $date;
|
264 |
|
30 |
$values = get_post_custom( $post->ID );
|
31 |
|
32 |
$selected = isset( $values['es_template_type'] ) ? esc_attr( $values['es_template_type'][0] ) : '';
|
33 |
+
|
34 |
+
$template_type = ES_Common::get_campaign_types( array( 'sequence' ) );
|
|
|
|
|
|
|
35 |
?>
|
36 |
<p class="mt-3">
|
37 |
+
<label for="es_template_type"><span class="font-semibold text-sm text-gray-700"><?php esc_html_e( 'Select template type', 'email-subscirbers' ); ?></span></label><br/>
|
38 |
<select style="margin: 0.20rem 0;" name="es_template_type" id="es_template_type">
|
39 |
<?php
|
40 |
if ( ! empty( $template_type ) ) {
|
114 |
|
115 |
<div class="misc-pub-section">
|
116 |
<div id="" class="es_preview_button" style="display: block;">
|
117 |
+
<a style="padding-top: 3px; margin-bottom: 0.2rem;" href="<?php echo esc_url( admin_url() ); ?>admin.php?page=es_template_preview&post=<?php echo esc_attr( $post_id ); ?>&preview=true&preview_id=<?php echo esc_attr( $post_id ); ?>" target="_blank" class="button button-primary es_preview"><?php esc_html_e( 'Preview template', 'email-subscribers' ); ?></a>
|
118 |
<div class="clear"></div>
|
119 |
</div>
|
120 |
</div>
|
255 |
$date = $existing_columns['date'];
|
256 |
unset( $existing_columns['date'] );
|
257 |
|
258 |
+
$existing_columns['es_template_type'] = __( 'Template type', 'email-subscribers' );
|
259 |
$existing_columns['es_template_thumbnail'] = __( 'Thumbnail', 'email-subscribers' );
|
260 |
$existing_columns['date'] = $date;
|
261 |
|
lite/includes/db/class-es-db-lists-contacts.php
CHANGED
@@ -598,7 +598,7 @@ class ES_DB_Lists_Contacts extends ES_DB {
|
|
598 |
if ( ! is_array( $ids ) ) {
|
599 |
$ids = array( $ids );
|
600 |
}
|
601 |
-
if ( ! is_array( $list_ids ) ) {
|
602 |
$list_ids = array( $list_ids );
|
603 |
}
|
604 |
|
@@ -606,14 +606,14 @@ class ES_DB_Lists_Contacts extends ES_DB {
|
|
606 |
$status = esc_sql( $status );
|
607 |
|
608 |
$ids_str = implode( ',', $ids );
|
609 |
-
|
610 |
-
|
611 |
$current_date = ig_get_current_date_time();
|
612 |
-
|
613 |
$query = '';
|
614 |
if ( 'subscribed' === $status ) {
|
615 |
if ( ! empty ( $list_ids ) ) {
|
616 |
-
|
|
|
617 |
$result = $wpdb->query(
|
618 |
$wpdb->prepare(
|
619 |
"UPDATE {$wpdb->prefix}ig_lists_contacts SET status = %s, subscribed_at = %s WHERE FIND_IN_SET(contact_id, %s) AND FIND_IN_SET(list_id, %s)",
|
598 |
if ( ! is_array( $ids ) ) {
|
599 |
$ids = array( $ids );
|
600 |
}
|
601 |
+
if ( ! empty( $list_ids ) && ! is_array( $list_ids ) ) {
|
602 |
$list_ids = array( $list_ids );
|
603 |
}
|
604 |
|
606 |
$status = esc_sql( $status );
|
607 |
|
608 |
$ids_str = implode( ',', $ids );
|
609 |
+
|
|
|
610 |
$current_date = ig_get_current_date_time();
|
611 |
+
|
612 |
$query = '';
|
613 |
if ( 'subscribed' === $status ) {
|
614 |
if ( ! empty ( $list_ids ) ) {
|
615 |
+
|
616 |
+
$list_ids_str = implode( ',', $list_ids );
|
617 |
$result = $wpdb->query(
|
618 |
$wpdb->prepare(
|
619 |
"UPDATE {$wpdb->prefix}ig_lists_contacts SET status = %s, subscribed_at = %s WHERE FIND_IN_SET(contact_id, %s) AND FIND_IN_SET(list_id, %s)",
|
lite/includes/es-core-functions.php
CHANGED
@@ -801,6 +801,7 @@ if ( ! function_exists( 'ig_es_allowed_html_tags_in_esc' ) ) {
|
|
801 |
'fill-*' => true,
|
802 |
'clip-*' => true,
|
803 |
'stroke-*' => true,
|
|
|
804 |
),
|
805 |
|
806 |
'main' => array(
|
801 |
'fill-*' => true,
|
802 |
'clip-*' => true,
|
803 |
'stroke-*' => true,
|
804 |
+
'fill-rule' => true,
|
805 |
),
|
806 |
|
807 |
'main' => array(
|
lite/includes/feedback/class-ig-feedback.php
CHANGED
@@ -1706,4 +1706,4 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_4' ) ) {
|
|
1706 |
die( json_encode( $result ) );
|
1707 |
}
|
1708 |
}
|
1709 |
-
} // End if().
|
1706 |
die( json_encode( $result ) );
|
1707 |
}
|
1708 |
}
|
1709 |
+
} // End if().
|
lite/includes/notices/class-es-admin-notices.php
CHANGED
@@ -20,7 +20,8 @@ class ES_Admin_Notices {
|
|
20 |
* @var array
|
21 |
*/
|
22 |
private static $core_notices = array(
|
23 |
-
'update' => 'update_notice'
|
|
|
24 |
);
|
25 |
|
26 |
/**
|
@@ -174,21 +175,31 @@ class ES_Admin_Notices {
|
|
174 |
* If we need to update, include a message with the update button.
|
175 |
*/
|
176 |
public static function update_notice() {
|
177 |
-
|
178 |
$latest_version_to_update = ES_Install::get_latest_db_version_to_update();
|
179 |
-
|
180 |
if ( version_compare( get_ig_es_db_version(), $latest_version_to_update, '<' ) ) {
|
181 |
// Database is updating now.
|
182 |
include dirname( __FILE__ ) . '/views/html-notice-updating.php';
|
183 |
-
|
184 |
// Show button to to "Run the updater"
|
185 |
//include dirname( __FILE__ ) . '/views/html-notice-update.php';
|
186 |
-
|
187 |
} else {
|
188 |
include dirname( __FILE__ ) . '/views/html-notice-updated.php';
|
189 |
}
|
190 |
}
|
191 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
/**
|
193 |
* If we need to update, include a message with the update button.
|
194 |
*/
|
@@ -226,6 +237,8 @@ class ES_Admin_Notices {
|
|
226 |
// Remove wp cron notice if user have acknowledged it.
|
227 |
if ( 'wp_cron_notice' === $option_name ) {
|
228 |
self::remove_notice( 'show_wp_cron' );
|
|
|
|
|
229 |
}
|
230 |
|
231 |
$referer = wp_get_referer();
|
20 |
* @var array
|
21 |
*/
|
22 |
private static $core_notices = array(
|
23 |
+
'update' => 'update_notice',
|
24 |
+
'trial_consent' => 'trial_consent_notice',
|
25 |
);
|
26 |
|
27 |
/**
|
175 |
* If we need to update, include a message with the update button.
|
176 |
*/
|
177 |
public static function update_notice() {
|
178 |
+
|
179 |
$latest_version_to_update = ES_Install::get_latest_db_version_to_update();
|
180 |
+
|
181 |
if ( version_compare( get_ig_es_db_version(), $latest_version_to_update, '<' ) ) {
|
182 |
// Database is updating now.
|
183 |
include dirname( __FILE__ ) . '/views/html-notice-updating.php';
|
184 |
+
|
185 |
// Show button to to "Run the updater"
|
186 |
//include dirname( __FILE__ ) . '/views/html-notice-update.php';
|
187 |
+
|
188 |
} else {
|
189 |
include dirname( __FILE__ ) . '/views/html-notice-updated.php';
|
190 |
}
|
191 |
}
|
192 |
|
193 |
+
/**
|
194 |
+
* Show trial optin notice.
|
195 |
+
*/
|
196 |
+
public static function trial_consent_notice() {
|
197 |
+
|
198 |
+
if ( IG_ES_Onboarding::is_onboarding_completed() ) {
|
199 |
+
include dirname( __FILE__ ) . '/views/trial-optin.php';
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
/**
|
204 |
* If we need to update, include a message with the update button.
|
205 |
*/
|
237 |
// Remove wp cron notice if user have acknowledged it.
|
238 |
if ( 'wp_cron_notice' === $option_name ) {
|
239 |
self::remove_notice( 'show_wp_cron' );
|
240 |
+
} else if ( 'trial_consent' === $option_name ) {
|
241 |
+
self::remove_notice( $option_name );
|
242 |
}
|
243 |
|
244 |
$referer = wp_get_referer();
|
lite/includes/notices/views/trial-optin.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin View: Notice - Trial Optin
|
4 |
+
*/
|
5 |
+
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
$referer = wp_get_referer();
|
11 |
+
$optin_url = wp_nonce_url(
|
12 |
+
add_query_arg( 'ig_es_trial_consent', 'yes', $referer ),
|
13 |
+
'ig_es_trial_consent'
|
14 |
+
);
|
15 |
+
|
16 |
+
$optout_url = wp_nonce_url(
|
17 |
+
add_query_arg(
|
18 |
+
array(
|
19 |
+
'es_dismiss_admin_notice' => 1,
|
20 |
+
'option_name' => 'trial_consent',
|
21 |
+
),
|
22 |
+
$referer
|
23 |
+
),
|
24 |
+
'ig_es_trial_consent'
|
25 |
+
);
|
26 |
+
?>
|
27 |
+
<div class="notice notice-success">
|
28 |
+
<p>
|
29 |
+
<?php
|
30 |
+
echo esc_html( 'Start your 14 days free trial of Email Subscribers’ premium services like email delivery check, spam protection, cron handling & lot more..', '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">
|
34 |
+
<?php
|
35 |
+
echo esc_html( 'Yes, start my free trial!', 'email-subscribers' );
|
36 |
+
?>
|
37 |
+
</a>
|
38 |
+
<a href="<?php echo esc_url( $optout_url ); ?>" class="ig-es-title-button px-3 py-1 mt-2 ml-2 align-middle">
|
39 |
+
<?php
|
40 |
+
echo esc_html( 'No, it’s ok!', 'email-subscribers' );
|
41 |
+
?>
|
42 |
+
</a>
|
43 |
+
</p>
|
44 |
+
</div>
|
lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php
ADDED
@@ -0,0 +1,238 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* The premium services-ui specific functionality of the plugin.
|
10 |
+
*
|
11 |
+
* @since 4.6.1
|
12 |
+
*
|
13 |
+
* @package Email_Subscribers
|
14 |
+
*/
|
15 |
+
|
16 |
+
if ( ! class_exists( 'IG_ES_Premium_Services_UI' ) ) {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* The premium services-ui specific functionality of the plugin.
|
20 |
+
*
|
21 |
+
*/
|
22 |
+
class IG_ES_Premium_Services_UI {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Class instance.
|
26 |
+
*
|
27 |
+
* @var Onboarding instance
|
28 |
+
*/
|
29 |
+
protected static $instance = null;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Initialize the class and set its properties.
|
33 |
+
*
|
34 |
+
* @since 4.6.1
|
35 |
+
*/
|
36 |
+
public function __construct() {
|
37 |
+
add_action( 'init', array( $this, 'init' ) );
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Get class instance.
|
42 |
+
*
|
43 |
+
* @since 4.6.1
|
44 |
+
*/
|
45 |
+
public static function instance() {
|
46 |
+
if ( ! self::$instance ) {
|
47 |
+
self::$instance = new self();
|
48 |
+
}
|
49 |
+
return self::$instance;
|
50 |
+
}
|
51 |
+
/**
|
52 |
+
* Method to hook required action/filters to show ui components used in premium services.
|
53 |
+
*
|
54 |
+
* @since 4.6.1
|
55 |
+
*/
|
56 |
+
public function init() {
|
57 |
+
|
58 |
+
// Add ui components only if trial is valid or user is a premium user.
|
59 |
+
if ( ES()->is_trial_valid() || ES()->is_premium() ) {
|
60 |
+
|
61 |
+
// Add UI for CSS inliner only if service is valid.
|
62 |
+
if ( ES()->validate_service_request( array( 'css_inliner' ) ) ) {
|
63 |
+
add_action( 'ig_es_after_broadcast_left_pan_settings', array( &$this, 'add_custom_css_field' ) );
|
64 |
+
add_action( 'edit_form_after_editor', array( &$this, 'add_custom_css_block' ), 11, 2 );
|
65 |
+
add_action( 'save_post', array( &$this, 'update_template' ), 10, 2 );
|
66 |
+
}
|
67 |
+
|
68 |
+
// Add UI for spam score check only if service is valid.
|
69 |
+
if ( ES()->validate_service_request( array( 'spam_score_check' ) ) ) {
|
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 |
+
|
76 |
+
/**
|
77 |
+
* Method to add custom CSS field in the broadcast screen
|
78 |
+
*
|
79 |
+
* @param array $broadcast_data
|
80 |
+
* @return void
|
81 |
+
*/
|
82 |
+
public function add_custom_css_field( $broadcast_data ) {
|
83 |
+
$custom_css = ! empty( $broadcast_data['meta']['es_custom_css'] ) ? $broadcast_data['meta']['es_custom_css'] : '';
|
84 |
+
?>
|
85 |
+
<div class="w-full px-4 py-2">
|
86 |
+
<label for="email" class="block text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Inline CSS', 'email-subscribers' ); ?></label>
|
87 |
+
<textarea class="mt-1 w-full h-10 border border-gray-300 rounded-md" name="broadcast_data[meta][es_custom_css]" id="inline_css"><?php echo esc_html( $custom_css ); ?></textarea>
|
88 |
+
</div>
|
89 |
+
<?php
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Add Custom CSS block for ES Template
|
94 |
+
*
|
95 |
+
* @since 3.x
|
96 |
+
*/
|
97 |
+
public function add_custom_css_block() {
|
98 |
+
global $post, $pagenow;
|
99 |
+
if ( 'es_template' != $post->post_type ) {
|
100 |
+
return;
|
101 |
+
}
|
102 |
+
$es_custom_css = '';
|
103 |
+
if ( 'post-new.php' != $pagenow ) {
|
104 |
+
$es_custom_css = get_post_meta( $post->ID, 'es_custom_css', true );
|
105 |
+
}
|
106 |
+
?>
|
107 |
+
<p>
|
108 |
+
<label><?php echo esc_html__( 'Custom CSS', 'email-subscribers' ); ?></label><br/>
|
109 |
+
<textarea style="height:50%;width: 100%" name="es_custom_css"><?php esc_attr_e( $es_custom_css ); ?></textarea>
|
110 |
+
</p>
|
111 |
+
<?php
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Hooked to save_post WordPress action
|
116 |
+
* Update ES Template data
|
117 |
+
*
|
118 |
+
* @param $post_id
|
119 |
+
* @param $post
|
120 |
+
*
|
121 |
+
* @since 3.x
|
122 |
+
*/
|
123 |
+
public function update_template( $post_id, $post ) {
|
124 |
+
if ( empty( $post_id ) || empty( $post ) ) {
|
125 |
+
return;
|
126 |
+
}
|
127 |
+
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
|
128 |
+
return;
|
129 |
+
}
|
130 |
+
if ( is_int( wp_is_post_revision( $post ) ) ) {
|
131 |
+
return;
|
132 |
+
}
|
133 |
+
if ( is_int( wp_is_post_autosave( $post ) ) ) {
|
134 |
+
return;
|
135 |
+
}
|
136 |
+
if ( ! current_user_can( 'edit_post', $post_id ) ) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
if ( 'es_template' != $post->post_type ) {
|
140 |
+
return;
|
141 |
+
}
|
142 |
+
|
143 |
+
if ( ! empty( $_POST['_wpnonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'update-post_' . $post_id ) ) {
|
144 |
+
// Get custom CSS code. Don't sanitize it since it removes CSS code.
|
145 |
+
$es_custom_css = ig_es_get_data( $_POST, 'es_custom_css', false, false );
|
146 |
+
if ( false !== $es_custom_css ) {
|
147 |
+
update_post_meta( $post_id, 'es_custom_css', $es_custom_css );
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Save ES Template action
|
152 |
+
*
|
153 |
+
* @since 4.3.1
|
154 |
+
*/
|
155 |
+
do_action( 'ig_es_save_template', $post_id, $post_id );
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Method to add metaboxes
|
161 |
+
*
|
162 |
+
* @since 4.6.1
|
163 |
+
*/
|
164 |
+
public function add_metaboxes() {
|
165 |
+
add_meta_box( 'es_spam', __( 'Get Spam Score', 'email-subscribers' ), array( &$this, 'add_spam_score_metabox' ), 'es_template', 'side', 'default' );
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Method to add spam score metabox
|
170 |
+
*
|
171 |
+
* @since 4.6.1
|
172 |
+
*/
|
173 |
+
public function add_spam_score_metabox() {
|
174 |
+
global $post;
|
175 |
+
?>
|
176 |
+
<a style="margin: 0.4rem 0 0 0;padding-top: 3px;" href="#" class="button button-primary es_spam"><?php echo esc_html__( 'Check', 'email-subscribers' ); ?></a>
|
177 |
+
<img src="<?php echo esc_url( ES_PLUGIN_URL ); ?>lite/admin/images/spinner-2x.gif" class="es-loader-img inline-flex align-middle pl-2 h-5 w-7" style="display:none;"/>
|
178 |
+
<span class="es-spam-score"></span>
|
179 |
+
<input type="hidden" id="es_template_id" value="<?php echo esc_attr( $post->ID ); ?>"/>
|
180 |
+
<div class="es-logs es-spam-success" style="display:none;"><?php echo esc_html__( 'Awesome score. Your email is almost perfect.', 'email-subscribers' ); ?></div>
|
181 |
+
<div class="es-logs es-spam-error" style="display:none;"><?php echo esc_html__( 'Ouch! your email needs improvement. ', 'email-subscribers' ); ?></div>
|
182 |
+
<div class="es-spam-error-log" style="display:none;">
|
183 |
+
<?php echo esc_html__( 'Here are some things to fix: ', 'email-subscribers' ); ?>
|
184 |
+
<ul></ul>
|
185 |
+
</div>
|
186 |
+
<?php
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Method to show left pan fields in broadcast summary section.
|
191 |
+
*
|
192 |
+
* @param array $broadcast_data Broadcast data
|
193 |
+
*
|
194 |
+
* @since 4.4.7
|
195 |
+
*
|
196 |
+
*/
|
197 |
+
public function add_check_spam_score_button( $broadcast_data = array() ) {
|
198 |
+
?>
|
199 |
+
<div class="block mx-4 my-3 pb-5 border-b border-gray-200">
|
200 |
+
<span class="pt-3 text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Get Spam Score', 'email-subscribers' ); ?> </span>
|
201 |
+
<button type="button" id="spam_score"
|
202 |
+
class="float-right es_spam rounded-md border text-indigo-600 border-indigo-500 text-sm leading-5 font-medium transition ease-in-out duration-150 select-none inline-flex justify-center hover:text-indigo-500 hover:border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg px-3 py-1">
|
203 |
+
<?php
|
204 |
+
echo esc_html__( 'Check',
|
205 |
+
'email-subscribers' );
|
206 |
+
?>
|
207 |
+
</button>
|
208 |
+
<img src="<?php echo esc_url( ES_PLUGIN_URL ); ?>lite/admin/images/spinner-2x.gif" class="es-loader-img inline-flex align-middle pl-2 h-5 w-7" style="display:none;"/>
|
209 |
+
|
210 |
+
<div class="spinner"></div>
|
211 |
+
<span class="es-spam-score font-medium text-xl align-middle text-center "></span>
|
212 |
+
<div class="hidden" id="spam_score_modal">
|
213 |
+
<div class="fixed z-50 top-0 left-0 w-full h-full flex items-center justify-center" style="background-color: rgba(0,0,0,.5);">
|
214 |
+
<div class="text-left bg-white h-auto p-2 md:max-w-xl md:p-2 lg:p-6 shadow-xl rounded mx-2 md:mx-0">
|
215 |
+
<h3 class="text-2xl uppercase text-center text-gray-800"><?php echo esc_html__( 'Spam score', 'email-subscribers' ); ?></h3>
|
216 |
+
<h3 class="es-spam-score text-4xl font-bold pb-1 text-center mt-8"></h3>
|
217 |
+
<div class="es-logs es-spam-success" style="display:none;"><?php echo esc_html__( 'Awesome score. Your email is almost perfect.', 'email-subscribers' ); ?></div>
|
218 |
+
<div class="es-logs es-spam-error text-base font-normal text-gray-500 pb-2 text-center pt-4 list-none" style="display:none;"><?php echo esc_html__( 'Ouch! your email needs improvement. ', 'email-subscribers' ); ?></div>
|
219 |
+
<div class="es-spam-error-log" style="display:none;">
|
220 |
+
<div class="text-base font-normal text-gray-500 pb-2 list-none text-center">
|
221 |
+
<?php echo esc_html__( 'Here are some things to fix: ', 'email-subscribers' ); ?>
|
222 |
+
</div>
|
223 |
+
<ul></ul>
|
224 |
+
</div>
|
225 |
+
|
226 |
+
<li class="text-base font-normal text-gray-500 pb-2 list-none text-center">
|
227 |
+
<div class="flex justify-center mt-8">
|
228 |
+
<button id="close_score" class="border text-sm tracking-wide font-medium text-gray-700 px-4 py-2 rounded no-outline focus:outline-none focus:shadow-outline-red select-none hover:border-red-400 active:shadow-lg "><?php echo esc_html__( 'Close', 'email-subscribers' ); ?></button>
|
229 |
+
</div>
|
230 |
+
</li>
|
231 |
+
</div>
|
232 |
+
</div>
|
233 |
+
</div>
|
234 |
+
</div>
|
235 |
+
<?php
|
236 |
+
}
|
237 |
+
}
|
238 |
+
}
|
lite/includes/pro-features.php
CHANGED
@@ -79,14 +79,14 @@ function render_user_permissions_settings_fields_premium() {
|
|
79 |
|
80 |
<table class="min-w-full rounded-lg">
|
81 |
<thead>
|
82 |
-
<tr class="bg-gray-100
|
83 |
-
<th class="
|
84 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?></th>
|
85 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Forms', 'email-subscribers' ); ?></th>
|
86 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Campaigns', 'email-subscribers' ); ?></th>
|
87 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Reports', 'email-subscribers' ); ?></th>
|
88 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Sequences', 'email-subscribers' ); ?></th>
|
89 |
-
<th class="px-2 py-4 text-center"><?php esc_html_e( 'Workflows', 'email-subscribers' ); ?></th>
|
90 |
</tr>
|
91 |
</thead>
|
92 |
<tbody class="bg-white">
|
@@ -169,7 +169,7 @@ function ig_es_add_upsale( $fields ) {
|
|
169 |
$track_link_click = array(
|
170 |
'ig_es_track_link_click' => array(
|
171 |
'id' => 'ig_es_track_link_click_p',
|
172 |
-
'name' => __( 'Track
|
173 |
'type' => 'checkbox',
|
174 |
'default' => 'no',
|
175 |
'is_premium' => true,
|
@@ -222,7 +222,7 @@ function ig_es_add_upsale( $fields ) {
|
|
222 |
// Security Settings
|
223 |
$fake_domains['ig_es_enable_known_attackers_domains'] = array(
|
224 |
'id' => 'ig_es_enable_known_attackers_domains_p',
|
225 |
-
'name' => __( 'Block
|
226 |
'info' => __( 'Stop known spam bot attacker domains from signing up. Keeps this list up-to-date with Icegram servers.', 'email-subscribers' ),
|
227 |
'type' => 'checkbox',
|
228 |
'default' => 'no',
|
@@ -233,7 +233,7 @@ function ig_es_add_upsale( $fields ) {
|
|
233 |
|
234 |
$managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
|
235 |
'id' => 'ig_es_enable_disposable_domains_p',
|
236 |
-
'name' => __( 'Block
|
237 |
'info' => __( 'Plenty of sites provide disposable / fake / temporary email addresses. People use them when they don\'t want to give you their real email. Block these to keep your list clean. Automatically updated.', 'email-subscribers' ),
|
238 |
'type' => 'checkbox',
|
239 |
'default' => 'no',
|
@@ -781,7 +781,7 @@ function ig_es_additional_track_option() {
|
|
781 |
?>
|
782 |
|
783 |
<div class="flex w-full pt-3">
|
784 |
-
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Link
|
785 |
</div>
|
786 |
|
787 |
<div>
|
@@ -795,7 +795,7 @@ function ig_es_additional_track_option() {
|
|
795 |
</div>
|
796 |
|
797 |
<div class="flex w-full pt-3 pb-3 border-b border-gray-200">
|
798 |
-
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'UTM
|
799 |
</div>
|
800 |
|
801 |
<div >
|
@@ -826,10 +826,10 @@ function ig_es_additional_schedule_option() {
|
|
826 |
?>
|
827 |
|
828 |
<div class="block w-full px-4 py-2">
|
829 |
-
<span class="block text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Send
|
830 |
<div class="py-2">
|
831 |
<input type="radio" class="form-radio" id="schedule_later" checked disabled>
|
832 |
-
<label for="schedule_later" class="text-sm font-normal text-gray-600"><?php echo esc_html__( 'Schedule for
|
833 |
</label>
|
834 |
<br>
|
835 |
<div id="schedule_later" class="px-6">
|
@@ -901,11 +901,11 @@ function ig_es_additional_schedule_option() {
|
|
901 |
}
|
902 |
|
903 |
function ig_es_additional_spam_score_option() {
|
904 |
-
if (
|
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
|
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>
|
79 |
|
80 |
<table class="min-w-full rounded-lg">
|
81 |
<thead>
|
82 |
+
<tr class="bg-gray-100 leading-4 text-gray-500 tracking-wider">
|
83 |
+
<th class="pl-10 py-4 text-left font-semibold text-sm"><?php esc_html_e( 'Roles', 'email-subscribers' ); ?></th>
|
84 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?></th>
|
85 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Forms', 'email-subscribers' ); ?></th>
|
86 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Campaigns', 'email-subscribers' ); ?></th>
|
87 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Reports', 'email-subscribers' ); ?></th>
|
88 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Sequences', 'email-subscribers' ); ?></th>
|
89 |
+
<th class="px-2 py-4 text-center font-semibold text-sm"><?php esc_html_e( 'Workflows', 'email-subscribers' ); ?></th>
|
90 |
</tr>
|
91 |
</thead>
|
92 |
<tbody class="bg-white">
|
169 |
$track_link_click = array(
|
170 |
'ig_es_track_link_click' => array(
|
171 |
'id' => 'ig_es_track_link_click_p',
|
172 |
+
'name' => __( 'Track clicks', 'email-subscribers' ),
|
173 |
'type' => 'checkbox',
|
174 |
'default' => 'no',
|
175 |
'is_premium' => true,
|
222 |
// Security Settings
|
223 |
$fake_domains['ig_es_enable_known_attackers_domains'] = array(
|
224 |
'id' => 'ig_es_enable_known_attackers_domains_p',
|
225 |
+
'name' => __( 'Block known attackers', 'email-subscribers' ),
|
226 |
'info' => __( 'Stop known spam bot attacker domains from signing up. Keeps this list up-to-date with Icegram servers.', 'email-subscribers' ),
|
227 |
'type' => 'checkbox',
|
228 |
'default' => 'no',
|
233 |
|
234 |
$managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
|
235 |
'id' => 'ig_es_enable_disposable_domains_p',
|
236 |
+
'name' => __( 'Block temporary / fake emails', 'email-subscribers' ),
|
237 |
'info' => __( 'Plenty of sites provide disposable / fake / temporary email addresses. People use them when they don\'t want to give you their real email. Block these to keep your list clean. Automatically updated.', 'email-subscribers' ),
|
238 |
'type' => 'checkbox',
|
239 |
'default' => 'no',
|
781 |
?>
|
782 |
|
783 |
<div class="flex w-full pt-3">
|
784 |
+
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Link tracking', '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>
|
785 |
</div>
|
786 |
|
787 |
<div>
|
795 |
</div>
|
796 |
|
797 |
<div class="flex w-full pt-3 pb-3 border-b border-gray-200">
|
798 |
+
<div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'UTM tracking', '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>
|
799 |
</div>
|
800 |
|
801 |
<div >
|
826 |
?>
|
827 |
|
828 |
<div class="block w-full px-4 py-2">
|
829 |
+
<span class="block text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Send options', '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>
|
830 |
<div class="py-2">
|
831 |
<input type="radio" class="form-radio" id="schedule_later" checked disabled>
|
832 |
+
<label for="schedule_later" class="text-sm font-normal text-gray-600"><?php echo esc_html__( 'Schedule for later', 'email-subscribers' ); ?>
|
833 |
</label>
|
834 |
<br>
|
835 |
<div id="schedule_later" class="px-6">
|
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>
|
lite/includes/services/class-es-email-delivery-check.php
CHANGED
@@ -3,6 +3,8 @@
|
|
3 |
class ES_Email_Delivery_Check extends ES_Services {
|
4 |
|
5 |
/**
|
|
|
|
|
6 |
* @var string
|
7 |
*
|
8 |
* @sinc 4.6.0
|
@@ -38,7 +40,7 @@ class ES_Email_Delivery_Check extends ES_Services {
|
|
38 |
$res['status'] = 'error';
|
39 |
} else {
|
40 |
|
41 |
-
if ( 'success' === $response['status'] && true == $response['meta']['emailDelivered'] ) {
|
42 |
$res['status'] = 'success';
|
43 |
} else {
|
44 |
$res['additional_message'] = __( ' The test email did not reach our test server. Did you get any test emails on your email? This could be a temporary problem, but it can also mean that emails are getting stuck on your server, or getting rejected by recipients.', 'email-subscribers' );
|
@@ -50,4 +52,4 @@ class ES_Email_Delivery_Check extends ES_Services {
|
|
50 |
return $res;
|
51 |
}
|
52 |
|
53 |
-
}
|
3 |
class ES_Email_Delivery_Check extends ES_Services {
|
4 |
|
5 |
/**
|
6 |
+
* Service command
|
7 |
+
*
|
8 |
* @var string
|
9 |
*
|
10 |
* @sinc 4.6.0
|
40 |
$res['status'] = 'error';
|
41 |
} else {
|
42 |
|
43 |
+
if ( 'success' === $response['status'] && isset( $response['meta']['emailDelivered'] ) && true == $response['meta']['emailDelivered'] ) {
|
44 |
$res['status'] = 'success';
|
45 |
} else {
|
46 |
$res['additional_message'] = __( ' The test email did not reach our test server. Did you get any test emails on your email? This could be a temporary problem, but it can also mean that emails are getting stuck on your server, or getting rejected by recipients.', 'email-subscribers' );
|
52 |
return $res;
|
53 |
}
|
54 |
|
55 |
+
}
|
lite/includes/services/class-es-service-css-inliner.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class ES_Service_Send_Cron_Data extends ES_Services {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Service command
|
7 |
+
*
|
8 |
+
* @var string
|
9 |
+
*
|
10 |
+
* @sinc 4.6.1
|
11 |
+
*/
|
12 |
+
public $cmd = '/store/cron/';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* ES_Service_Send_Cron_Data constructor.
|
16 |
+
*
|
17 |
+
* @since 4.6.1
|
18 |
+
*/
|
19 |
+
public function __construct() {
|
20 |
+
parent::__construct();
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Trigger cron save data
|
25 |
+
*
|
26 |
+
* @since 4.6.1
|
27 |
+
*/
|
28 |
+
public function maybe_send_cron_data( $options = array() ) {
|
29 |
+
|
30 |
+
$ig_es_set_cron_data = get_option( 'ig_es_set_cron_data', 'no' );
|
31 |
+
$ig_es_set_cron_data = ( ! empty( $options ) && 'email_subscribers_settings' === $options['option_page'] ) ? 'no' : $ig_es_set_cron_data;
|
32 |
+
if ( 'yes' === $ig_es_set_cron_data ) {
|
33 |
+
return;
|
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' );
|
40 |
+
$es_cron_url_data['es_croncount'] = get_option( 'ig_es_hourly_email_send_limit', 50 );
|
41 |
+
$es_cron_url_data['es_enable_background'] = true;
|
42 |
+
|
43 |
+
$this->send_cron_data( $es_cron_url_data );
|
44 |
+
|
45 |
+
update_option( 'ig_es_set_cron_data', 'yes' );
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Delete cron data.
|
51 |
+
*
|
52 |
+
* @since 4.6.1
|
53 |
+
*/
|
54 |
+
public function delete_cron_data() {
|
55 |
+
delete_option( 'ig_es_set_cron_data' );
|
56 |
+
|
57 |
+
$es_cron_url_data = array();
|
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 |
+
/**
|
65 |
+
* Send cron data to our server
|
66 |
+
*
|
67 |
+
* @param array $data
|
68 |
+
*
|
69 |
+
* @return array
|
70 |
+
*
|
71 |
+
* @since 4.6.1
|
72 |
+
*/
|
73 |
+
public function send_cron_data( $data = array() ) {
|
74 |
+
|
75 |
+
$response = array(
|
76 |
+
'status' => 'error',
|
77 |
+
);
|
78 |
+
|
79 |
+
if ( ! empty( $data ) ) {
|
80 |
+
$data['tasks'][] = 'store-cron';
|
81 |
+
$options = array(
|
82 |
+
'timeout' => 15,
|
83 |
+
'method' => 'POST',
|
84 |
+
'body' => $data,
|
85 |
+
'sslverify' => false
|
86 |
+
);
|
87 |
+
$response = $this->send_request( $options );
|
88 |
+
}
|
89 |
+
|
90 |
+
return $response;
|
91 |
+
}
|
92 |
+
}
|
lite/includes/services/class-es-service-spam-score-check.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class ES_Service_Spam_Score_Check extends ES_Services {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Service command
|
7 |
+
*
|
8 |
+
* @var string
|
9 |
+
*
|
10 |
+
* @since 4.6.1
|
11 |
+
*/
|
12 |
+
public $cmd = '/email/process/';
|
13 |
+
|
14 |
+
/**
|
15 |
+
* ES_Service_Spam_Score_Check constructor.
|
16 |
+
*
|
17 |
+
* @since 4.6.1
|
18 |
+
*/
|
19 |
+
public function __construct() {
|
20 |
+
parent::__construct();
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get spam score data
|
25 |
+
*
|
26 |
+
* @param array $data
|
27 |
+
*
|
28 |
+
* @return array
|
29 |
+
*
|
30 |
+
* @since 4.6.1
|
31 |
+
*/
|
32 |
+
public function get_spam_score( $data = array() ) {
|
33 |
+
|
34 |
+
$response = array(
|
35 |
+
'status' => 'error',
|
36 |
+
);
|
37 |
+
|
38 |
+
if ( ES()->validate_service_request( array( 'spam_score_check' ) ) ) {
|
39 |
+
if ( ! empty( $data ) ) {
|
40 |
+
$data['options'] = 'full';
|
41 |
+
$options = array(
|
42 |
+
'timeout' => 50,
|
43 |
+
'method' => 'POST',
|
44 |
+
'body' => $data
|
45 |
+
);
|
46 |
+
$response_data = $this->send_request( $options );
|
47 |
+
$response['data'] = $response_data;
|
48 |
+
$response['status'] = 'success';
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
return $response;
|
53 |
+
}
|
54 |
+
|
55 |
+
}
|
lite/includes/services/class-es-services.php
CHANGED
@@ -1,14 +1,19 @@
|
|
1 |
<?php
|
2 |
|
3 |
class ES_Services {
|
|
|
4 |
/**
|
|
|
|
|
5 |
* @since 4.6.0
|
6 |
* @var string
|
7 |
*
|
8 |
*/
|
9 |
-
public $api_url =
|
10 |
|
11 |
/**
|
|
|
|
|
12 |
* @var string
|
13 |
*
|
14 |
* @sinc 4.6.0
|
@@ -34,31 +39,46 @@ class ES_Services {
|
|
34 |
*/
|
35 |
public function send_request( $options = array(), $method = 'POST' ) {
|
36 |
|
37 |
-
|
38 |
-
|
|
|
39 |
if ( empty( $this->cmd ) ) {
|
40 |
return new WP_Error( '404', 'Command Not Found' );
|
41 |
}
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
$response = wp_remote_post( $url, $options );
|
47 |
-
} else {
|
48 |
-
$response = wp_remote_get( $url, $options );
|
49 |
}
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
|
|
60 |
}
|
61 |
-
|
62 |
}
|
63 |
|
64 |
return $response;
|
1 |
<?php
|
2 |
|
3 |
class ES_Services {
|
4 |
+
|
5 |
/**
|
6 |
+
* API URL
|
7 |
+
*
|
8 |
* @since 4.6.0
|
9 |
* @var string
|
10 |
*
|
11 |
*/
|
12 |
+
public $api_url = 'https://api.icegram.com';
|
13 |
|
14 |
/**
|
15 |
+
* Service command
|
16 |
+
*
|
17 |
* @var string
|
18 |
*
|
19 |
* @sinc 4.6.0
|
39 |
*/
|
40 |
public function send_request( $options = array(), $method = 'POST' ) {
|
41 |
|
42 |
+
|
43 |
+
$response = array();
|
44 |
+
|
45 |
if ( empty( $this->cmd ) ) {
|
46 |
return new WP_Error( '404', 'Command Not Found' );
|
47 |
}
|
48 |
+
|
49 |
+
// Check if trial is valid or user is on a premium plan, if not, then don't prcess the request.
|
50 |
+
if ( ! ( ES()->is_trial_valid() || ES()->is_premium() ) ) {
|
51 |
+
return $options;
|
|
|
|
|
|
|
52 |
}
|
53 |
+
|
54 |
+
$url = $this->api_url . $this->cmd;
|
55 |
+
|
56 |
+
$options = apply_filters( 'ig_es_service_request_data', $options );
|
57 |
+
|
58 |
+
if ( ! empty( $options ) && is_array( $options ) ) {
|
59 |
+
if ( 'POST' === $method ) {
|
60 |
+
$response = wp_remote_post( $url, $options );
|
61 |
+
} else {
|
62 |
+
$response = wp_remote_get( $url, $options );
|
63 |
+
}
|
64 |
+
|
65 |
+
if ( ! is_wp_error( $response ) ) {
|
66 |
+
|
67 |
+
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
|
68 |
+
|
69 |
+
$response_data = $response['body'];
|
70 |
+
|
71 |
+
if ( 'error' != $response_data ) {
|
72 |
+
|
73 |
+
$response_data = json_decode( $response_data, true );
|
74 |
+
|
75 |
+
do_action( 'ig_es_service_response_received', $response_data, $options );
|
76 |
+
|
77 |
+
return $response_data;
|
78 |
+
}
|
79 |
}
|
80 |
+
|
81 |
}
|
|
|
82 |
}
|
83 |
|
84 |
return $response;
|
lite/includes/workflows/admin/class-es-workflow-admin-edit.php
CHANGED
@@ -69,6 +69,8 @@ class ES_Workflow_Admin_Edit {
|
|
69 |
}
|
70 |
|
71 |
add_action( 'add_meta_boxes', array( __CLASS__, 'add_metaboxes' ) );
|
|
|
|
|
72 |
|
73 |
/* Trigger the add_meta_boxes hooks to allow meta boxes to be added */
|
74 |
do_action( 'add_meta_boxes_es_workflows', null );
|
@@ -179,26 +181,30 @@ class ES_Workflow_Admin_Edit {
|
|
179 |
|
180 |
$action = ig_es_get_request_data( 'action' );
|
181 |
if ( 'new' === $action ) {
|
182 |
-
$title = __( ' Add
|
183 |
} else {
|
184 |
$title = __( ' Edit Workflow', 'email-subscribers' );
|
185 |
}
|
186 |
?>
|
187 |
-
<div>
|
188 |
-
<
|
189 |
-
<
|
190 |
-
<
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
|
|
|
|
|
|
|
|
202 |
<input type="hidden" id="workflow_id" name="workflow_id" value="<?php echo ! empty( $workflow_id ) ? esc_attr( $workflow_id ) : ''; ?>">
|
203 |
<?php
|
204 |
// Workflow nonce.
|
@@ -243,17 +249,63 @@ class ES_Workflow_Admin_Edit {
|
|
243 |
*/
|
244 |
public static function add_metaboxes() {
|
245 |
|
|
|
|
|
246 |
$meta_box_title_for_trigger = __( 'Trigger', 'email-subscribers' );
|
247 |
$meta_box_title_for_actions = __( 'Actions', 'email-subscribers' );
|
248 |
$meta_box_title_for_save = __( 'Save', 'email-subscribers' );
|
249 |
$meta_box_title_for_options = __( 'Options', 'email-subscribers' );
|
250 |
// $meta_box_title_for_timing = __( 'Timing', 'email-subscribers' );
|
251 |
|
252 |
-
add_meta_box( 'ig_es_workflow_trigger', $meta_box_title_for_trigger, array( __CLASS__, 'trigger_metabox' ), '
|
253 |
-
add_meta_box( 'ig_es_workflow_actions', $meta_box_title_for_actions, array( __CLASS__, 'actions_metabox' ), '
|
254 |
-
add_meta_box( 'ig_es_workflow_save', $meta_box_title_for_save, array( __CLASS__, 'save_metabox' ), '
|
255 |
-
// add_meta_box( 'ig_es_workflow_options', $meta_box_title_for_options, array( __CLASS__, 'options_metabox' ), '
|
256 |
-
// add_meta_box( 'ig_es_workflow_timing', $meta_box_title_for_timing, array( __CLASS__, 'timing_metabox' ), '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
258 |
|
259 |
/**
|
69 |
}
|
70 |
|
71 |
add_action( 'add_meta_boxes', array( __CLASS__, 'add_metaboxes' ) );
|
72 |
+
add_filter( 'screen_options_show_screen', array( __CLASS__, 'remove_screen_options' ) );
|
73 |
+
add_filter( 'hidden_meta_boxes', array( __CLASS__, 'show_hidden_workflow_metaboxes' ), 10, 3 );
|
74 |
|
75 |
/* Trigger the add_meta_boxes hooks to allow meta boxes to be added */
|
76 |
do_action( 'add_meta_boxes_es_workflows', null );
|
181 |
|
182 |
$action = ig_es_get_request_data( 'action' );
|
183 |
if ( 'new' === $action ) {
|
184 |
+
$title = __( ' Add New Workflow', 'email-subscribers' );
|
185 |
} else {
|
186 |
$title = __( ' Edit Workflow', 'email-subscribers' );
|
187 |
}
|
188 |
?>
|
189 |
+
<div class="max-w-full -mt-3 font-sans">
|
190 |
+
<header class="wp-heading-inline">
|
191 |
+
<div class="md:flex md:items-center md:justify-between justify-center">
|
192 |
+
<div class="flex-1 min-w-0">
|
193 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
194 |
+
<ol class="list-none p-0 inline-flex">
|
195 |
+
<li class="flex items-center text-sm tracking-wide">
|
196 |
+
<a class="hover:underline" href="<?php echo esc_url( $workflows_page_url ); ?>"><?php esc_html_e('Workflows', 'email-subscribers'); ?></a>
|
197 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
198 |
+
</li>
|
199 |
+
</ol>
|
200 |
+
</nav>
|
201 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
202 |
+
<?php echo esc_html( $title ); ?>
|
203 |
+
</h2>
|
204 |
+
</div>
|
205 |
+
</div>
|
206 |
+
</header>
|
207 |
+
<form class="mt-5" method="post" action="#">
|
208 |
<input type="hidden" id="workflow_id" name="workflow_id" value="<?php echo ! empty( $workflow_id ) ? esc_attr( $workflow_id ) : ''; ?>">
|
209 |
<?php
|
210 |
// Workflow nonce.
|
249 |
*/
|
250 |
public static function add_metaboxes() {
|
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 |
+
// 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 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Method to remove screen options tab on workflow edit page.
|
269 |
+
*
|
270 |
+
* @param bool $show_screen_options
|
271 |
+
*
|
272 |
+
* @return bool $show_screen_options
|
273 |
+
*
|
274 |
+
* @since 4.6.1
|
275 |
+
*/
|
276 |
+
public static function remove_screen_options( $show_screen_options ) {
|
277 |
+
|
278 |
+
$show_screen_options = false;
|
279 |
+
return $show_screen_options;
|
280 |
+
}
|
281 |
+
|
282 |
+
/**
|
283 |
+
* Method to forcefully show ES workflow metaboxes if user has hidden them from screen options.
|
284 |
+
*
|
285 |
+
* @param array $hidden An array of IDs of hidden meta boxes.
|
286 |
+
* @param WP_Screen $screen WP_Screen object of the current screen.
|
287 |
+
* @param bool $use_defaults Whether to show the default meta boxes.
|
288 |
+
* Default true.
|
289 |
+
*
|
290 |
+
* @return array $hidden
|
291 |
+
*
|
292 |
+
* @since 4.6.1
|
293 |
+
*/
|
294 |
+
public static function show_hidden_workflow_metaboxes( $hidden, $screen, $use_defaults ) {
|
295 |
+
|
296 |
+
$es_workflow_metaboxes = array(
|
297 |
+
'ig_es_workflow_trigger',
|
298 |
+
'ig_es_workflow_actions',
|
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.
|
305 |
+
$hidden = array_diff( $hidden, $es_workflow_metaboxes );
|
306 |
+
}
|
307 |
+
|
308 |
+
return $hidden;
|
309 |
}
|
310 |
|
311 |
/**
|
lite/includes/workflows/class-es-workflows-table.php
CHANGED
@@ -128,7 +128,7 @@ class ES_Workflows_Table extends WP_List_Table {
|
|
128 |
ES_Common::show_message( $message, $status );
|
129 |
}
|
130 |
?>
|
131 |
-
<div class="wrap pt-
|
132 |
<?php
|
133 |
if ( 'new' === $action ) {
|
134 |
ES_Workflow_Admin_Edit::load_workflow();
|
@@ -164,7 +164,7 @@ class ES_Workflows_Table extends WP_List_Table {
|
|
164 |
</div>
|
165 |
</div>
|
166 |
<div><hr class="wp-header-end"></div>
|
167 |
-
<div id="poststuff" class="es-items-lists
|
168 |
<div id="post-body" class="metabox-holder column-1">
|
169 |
<div id="post-body-content">
|
170 |
<div class="meta-box-sortables ui-sortable">
|
@@ -359,7 +359,7 @@ class ES_Workflows_Table extends WP_List_Table {
|
|
359 |
<label class="screen-reader-text"
|
360 |
for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
361 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>" />
|
362 |
-
<?php submit_button( __( 'Search
|
363 |
</p>
|
364 |
<?php
|
365 |
}
|
128 |
ES_Common::show_message( $message, $status );
|
129 |
}
|
130 |
?>
|
131 |
+
<div class="wrap pt-4 font-sans">
|
132 |
<?php
|
133 |
if ( 'new' === $action ) {
|
134 |
ES_Workflow_Admin_Edit::load_workflow();
|
164 |
</div>
|
165 |
</div>
|
166 |
<div><hr class="wp-header-end"></div>
|
167 |
+
<div id="poststuff" class="es-items-lists">
|
168 |
<div id="post-body" class="metabox-holder column-1">
|
169 |
<div id="post-body-content">
|
170 |
<div class="meta-box-sortables ui-sortable">
|
359 |
<label class="screen-reader-text"
|
360 |
for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
361 |
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>" />
|
362 |
+
<?php submit_button( __( 'Search workflows', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
363 |
</p>
|
364 |
<?php
|
365 |
}
|
lite/public/class-email-subscribers-public.php
CHANGED
@@ -420,4 +420,24 @@ class Email_Subscribers_Public {
|
|
420 |
<?php
|
421 |
die();
|
422 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
}
|
420 |
<?php
|
421 |
die();
|
422 |
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Add Email Subscribers template types
|
426 |
+
*
|
427 |
+
* @param array $template_type Template types
|
428 |
+
*
|
429 |
+
* @return array $template_type Template types
|
430 |
+
*
|
431 |
+
* @since 5.0.0
|
432 |
+
*/
|
433 |
+
public function add_template_type( $template_type = array() ) {
|
434 |
+
|
435 |
+
$template_type['newsletter'] = __( 'Broadcast', 'email-subscribers' );
|
436 |
+
|
437 |
+
// Start-IG-Code.
|
438 |
+
$template_type['post_notification'] = __( 'Post Notification', 'email-subscribers' );
|
439 |
+
// End-IG-Code.
|
440 |
+
|
441 |
+
return $template_type;
|
442 |
+
}
|
443 |
}
|
lite/public/partials/class-es-shortcode.php
CHANGED
@@ -160,7 +160,7 @@ class ES_Shortcode {
|
|
160 |
$current_page = get_the_ID();
|
161 |
$current_page_url = get_the_permalink( get_the_ID() );
|
162 |
|
163 |
-
$unique_id =
|
164 |
$hp_style = 'position:absolute;top:-99999px;' . ( is_rtl() ? 'right' : 'left' ) . ':-99999px;z-index:-99;';
|
165 |
$nonce = wp_create_nonce( 'es-subscribe' );
|
166 |
|
160 |
$current_page = get_the_ID();
|
161 |
$current_page_url = get_the_permalink( get_the_ID() );
|
162 |
|
163 |
+
$unique_id = uniqid();
|
164 |
$hp_style = 'position:absolute;top:-99999px;' . ( is_rtl() ? 'right' : 'left' ) . ':-99999px;z-index:-99;';
|
165 |
$nonce = wp_create_nonce( 'es-subscribe' );
|
166 |
|
lite/public/partials/subscription-successfull.php
CHANGED
@@ -13,7 +13,6 @@ if ( 'optin' === $es_page_request ) {
|
|
13 |
$main_message = __('Unsubscription confirmed !', 'email-subscribers');
|
14 |
}
|
15 |
$site_name = get_option( 'blogname' );
|
16 |
-
$ig_es_powered_by = ! empty( get_option( 'ig_es_powered_by' ) ) ? get_option( 'ig_es_powered_by' ) : 'yes' ;
|
17 |
$noerror = true;
|
18 |
$home_url = home_url( '/' );
|
19 |
?>
|
@@ -40,7 +39,11 @@ if ( 'optin' === $es_page_request ) {
|
|
40 |
</div>
|
41 |
</section>
|
42 |
|
43 |
-
|
|
|
|
|
|
|
|
|
44 |
<section class="bg-white mt-8 py-8 shadow-md sm:rounded-lg mx-auto sm:w-2/3 xl:w-7/12">
|
45 |
<div class="flex">
|
46 |
<div class="sm:w-1/3 xl:w-1/4 pl-6 leading-6">
|
@@ -65,7 +68,8 @@ if ( 'optin' === $es_page_request ) {
|
|
65 |
</div>
|
66 |
</div>
|
67 |
</section>
|
68 |
-
|
|
|
69 |
</body>
|
70 |
</html>
|
71 |
<?php
|
13 |
$main_message = __('Unsubscription confirmed !', 'email-subscribers');
|
14 |
}
|
15 |
$site_name = get_option( 'blogname' );
|
|
|
16 |
$noerror = true;
|
17 |
$home_url = home_url( '/' );
|
18 |
?>
|
39 |
</div>
|
40 |
</section>
|
41 |
|
42 |
+
<!-- Start-IG-Code -->
|
43 |
+
<?php
|
44 |
+
$ig_es_powered_by = ! empty( get_option( 'ig_es_powered_by' ) ) ? get_option( 'ig_es_powered_by' ) : 'yes' ;
|
45 |
+
if ( 'yes' === $ig_es_powered_by ) {
|
46 |
+
?>
|
47 |
<section class="bg-white mt-8 py-8 shadow-md sm:rounded-lg mx-auto sm:w-2/3 xl:w-7/12">
|
48 |
<div class="flex">
|
49 |
<div class="sm:w-1/3 xl:w-1/4 pl-6 leading-6">
|
68 |
</div>
|
69 |
</div>
|
70 |
</section>
|
71 |
+
<?php } ?>
|
72 |
+
<!-- End-IG-Code -->
|
73 |
</body>
|
74 |
</html>
|
75 |
<?php
|
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,11 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
304 |
|
305 |
== Changelog ==
|
306 |
|
|
|
|
|
|
|
|
|
|
|
307 |
**4.6.0 (25.09.2020)**
|
308 |
|
309 |
* New: Added unconfirmed contacts KPI on audience page
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.5.1
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 4.6.1
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
304 |
|
305 |
== Changelog ==
|
306 |
|
307 |
+
**4.6.1 (19.10.2020)**
|
308 |
+
|
309 |
+
* New: UI improvements
|
310 |
+
* Fix: Status change issue after sending broadcast
|
311 |
+
|
312 |
**4.6.0 (25.09.2020)**
|
313 |
|
314 |
* New: Added unconfirmed contacts KPI on audience page
|