Email Subscribers & Newsletters - Version 4.6.1

Version Description

Download this release

Release Info

Developer Icegram
Plugin Icon 128x128 Email Subscribers & Newsletters
Version 4.6.1
Comparing to
See all releases

Code changes from version 4.6.0 to 4.6.1

Files changed (45) hide show
  1. email-subscribers.php +57 -10
  2. lite/admin/class-email-subscribers-admin.php +192 -6
  3. lite/admin/class-ig-es-onboarding.php +18 -17
  4. lite/admin/css/email-subscribers-admin.css +18 -1
  5. lite/admin/dist/main.css +1 -1
  6. lite/admin/js/email-subscribers-admin.js +93 -18
  7. lite/admin/js/es-onboarding.js +4 -4
  8. lite/admin/partials/dashboard.php +5 -4
  9. lite/admin/partials/help.php +1 -1
  10. lite/admin/partials/onboarding.php +45 -2
  11. lite/includes/class-email-subscribers.php +225 -3
  12. lite/includes/class-es-common.php +23 -6
  13. lite/includes/class-es-install.php +11 -2
  14. lite/includes/classes/class-es-admin-settings.php +17 -5
  15. lite/includes/classes/class-es-campaigns-table.php +10 -4
  16. lite/includes/classes/class-es-contacts-table.php +25 -26
  17. lite/includes/classes/class-es-export-subscribers.php +26 -15
  18. lite/includes/classes/class-es-forms-table.php +15 -9
  19. lite/includes/classes/class-es-handle-sync-wp-user.php +21 -9
  20. lite/includes/classes/class-es-import-subscribers.php +25 -13
  21. lite/includes/classes/class-es-info.php +3 -0
  22. lite/includes/classes/class-es-lists-table.php +42 -25
  23. lite/includes/classes/class-es-mailer.php +11 -3
  24. lite/includes/classes/class-es-newsletters.php +27 -17
  25. lite/includes/classes/class-es-post-notifications.php +23 -23
  26. lite/includes/classes/class-es-reports-table.php +3 -3
  27. lite/includes/classes/class-es-templates-table.php +5 -8
  28. lite/includes/db/class-es-db-lists-contacts.php +5 -5
  29. lite/includes/es-core-functions.php +1 -0
  30. lite/includes/feedback/class-ig-feedback.php +1 -1
  31. lite/includes/notices/class-es-admin-notices.php +18 -5
  32. lite/includes/notices/views/trial-optin.php +44 -0
  33. lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php +238 -0
  34. lite/includes/pro-features.php +17 -17
  35. lite/includes/services/class-es-email-delivery-check.php +4 -2
  36. lite/includes/services/class-es-service-css-inliner.php +57 -0
  37. lite/includes/services/class-es-service-send-cron-data.php +92 -0
  38. lite/includes/services/class-es-service-spam-score-check.php +55 -0
  39. lite/includes/services/class-es-services.php +40 -20
  40. lite/includes/workflows/admin/class-es-workflow-admin-edit.php +73 -21
  41. lite/includes/workflows/class-es-workflows-table.php +3 -3
  42. lite/public/class-email-subscribers-public.php +20 -0
  43. lite/public/partials/class-es-shortcode.php +1 -1
  44. lite/public/partials/subscription-successfull.php +7 -3
  45. 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.0
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
- * Wordpress version
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: Anchor tag with href attribute */
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
- $is_premium = false;
122
  if ( 'email-subscribers-premium.php' === basename( __FILE__ ) ) {
123
- $is_premium = true;
 
 
124
  }
125
 
126
- if ( $is_premium ) {
 
 
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.0' );
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 = array(
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
- // This adds the main menu page
200
- add_menu_page( __( 'Email Subscribers', 'email-subscribers' ), __( 'Email Subscribers', 'email-subscribers' ), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ), 'dashicons-email', 30 );
 
 
 
 
 
 
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
- * 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,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
- // Update trial preferences.
416
- update_option( 'ig_es_is_trial', $is_trial );
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
- $service = new ES_Send_Test_Email();
952
-
953
- $res = $service->send_test_email();
 
 
 
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 opted for trial or is a premium user.
1018
- if ( ES()->is_trial() || ES()->is_premium() ) {
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 opted for trial or is a premium user.
1046
- if ( ES()->is_trial() || ES()->is_premium() ) {
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 opted for trial or is a premium user.
1076
- if ( ES()->is_trial() || ES()->is_premium() ) {
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
- // Update trial preferences.
1207
- update_option( 'ig_es_is_trial', $is_trial );
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.email-subscribers_page_es_workflows #post-body .postbox .inside {
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 #es_free_trial_preference').length > 0) {
225
- is_trial = jQuery('#ig-es-onboarding-final-steps-form #es_free_trial_preference').is(':checked') ? 'yes': 'no';
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
- /*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
  });
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-3 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,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-3">
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__( 'Test Email Delivery', 'email-subscribers');
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
- // Backward Compatibility
 
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
- $prefix = sanitize_title( __( 'Email Subscribers', 'email-subscribers' ) );
 
 
 
 
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 = array(
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-3 font-sans">
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 Email', 'email-subscribers' ),
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
- /* translators: %s: Link to Icegram documentation */
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-3 font-sans">
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
- <?php } ?>
 
 
 
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 On', 'email-subscribers' ),
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 Campaigns', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
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' => array(
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-3 font-sans">
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 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,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 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,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-2 py-2">' . __( '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 px-2 py-2 mx-2"> ' . __( 'Add New', 'email-subscribers' ) . '</a>';
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-1 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
- <h2 class="text-2xl leading-7 text-gray-900 sm:leading-9 sm:truncate">
541
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
542
- <a href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience ', 'email-subscribers' ); ?></a></span>
543
- <svg class="w-6 h-6 mt-2 inline-block" fill="currentColor" viewBox="0 0 24 24">
544
- <path
545
- fill-rule="evenodd"
546
- 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"
547
- clip-rule="evenodd"
548
- ></path>
549
- </svg>
550
  <?php echo esc_html( $title ); ?>
551
  </h2>
552
  </div>
553
 
554
- <div class="py-2 flex md:mt-0 pb-2">
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 Welcome email?', 'email-subscribers' ); ?></span>
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 To List', 'email-subscribers' ),
1049
- 'bulk_list_add' => __( 'Add To List', 'email-subscribers' ),
1050
- 'bulk_status_update' => __( 'Change Status', 'email-subscribers' ),
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 Contacts', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
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 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,11 +94,11 @@ class Export_Subscribers {
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,20 +147,31 @@ class Export_Subscribers {
147
 
148
  ?>
149
 
150
- <div class="flex">
151
- <div>
152
- <h2 class="text-2xl font-medium text-gray-800 sm:leading-9 sm:truncate pr-4">
153
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php esc_html_e( 'Export Contacts', 'email-subscribers' ); ?>
154
- </h2>
155
- </div>
156
- <div class="mt-1">
 
 
 
 
 
 
 
 
 
 
157
  <?php
158
  ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
159
  ?>
160
- </div>
161
- </div>
 
162
  <div><hr class="wp-header-end"></div>
163
- <div class="mt-6 shadow rounded-lg overflow-hidden">
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-3 font-sans">
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-1 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
- <h1 class="text-2xl leading-7 text-gray-900 sm:leading-9 sm:truncate">
309
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
310
- <a href="admin.php?page=es_forms"><?php esc_html_e('Forms ', 'email-subscribers'); ?></a></span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
 
 
 
 
 
 
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
- </h1>
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 Forms', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
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="wrap">
210
  <header class="wp-heading-inline">
211
- <div class="mt-2">
212
- <h2 class="text-2xl font-medium text-gray-900 sm:leading-9 sm:truncate">
213
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php esc_html_e( 'Sync Contacts', 'email-subscribers' ); ?>
214
- <?php
215
- ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
216
- ?>
217
- </h2>
218
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
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-6 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,18 +337,30 @@ class ES_Import_Subscribers {
337
 
338
  ?>
339
 
340
- <div class="flex">
341
- <div>
342
- <h2 class="text-2xl font-medium text-gray-800 sm:leading-9 sm:truncate pr-4">
343
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php esc_html_e( 'Import Contacts', 'email-subscribers' ); ?>
344
- </h2>
345
- </div>
346
- <div class="mt-1">
347
- <?php
348
- ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
349
- ?>
350
- </div>
351
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
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-3 font-sans">
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
- <div class="flex">
81
- <div>
82
- <h2 class="text-2xl font-medium text-gray-800 sm:leading-9 sm:truncate pr-4">
83
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php esc_html_e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php esc_html_e( 'Lists', 'email-subscribers' ); ?>
84
- </h2>
85
- </div>
86
- <div class="mt-1"> <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>
 
 
 
 
 
 
 
 
 
 
87
  </div>
88
- </div>
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-8 font-sans">
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
- <h2 class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate">
268
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
269
- <a href="admin.php?page=es_subscribers"><?php esc_html_e('Audience ', 'email-subscribers'); ?></a></span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-3 h-3 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
270
- <a class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate" href="admin.php?page=es_lists&action=manage-lists"><?php esc_html_e(' Lists ', 'email-subscribers'); ?></a> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-3 h-3 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
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
- </h2>
281
- </div>
282
  </div>
283
- </header>
284
- <div class=""><hr class="wp-header-end"></div>
 
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 Name', 'email-subscribers' ); ?></label>
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 Contacts', 'email-subscribers' ),
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 Lists', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
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>Congrats, test email was sent successfully!</p>
538
- <p>Thank you for trying out Email Subscribers. We are on a mission to make the best Email Marketing Automation plugin for WordPress.</p>
539
- <p>If you find this plugin useful, please consider giving us <a href="https://wordpress.org/support/plugin/email-subscribers/reviews/?filter=5">5 stars review</a> on WordPress!</p>
 
 
 
 
 
 
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="pb-2 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="flex min-w-0 md:w-3/5 lg:w-1/2">
251
- <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>
 
 
 
 
 
 
 
 
 
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="pt-1 text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"> <?php echo esc_html__( 'Broadcast', 'email-subscribers' ); ?>
261
  </h2>
262
  </div>
263
- <div class="flex pt-3 md:-mr-8 lg:-mr-16 xl:mr-0 md:ml-8 lg:ml-16 xl:ml-20">
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 mt-4 md:mt-0 md:ml-2 xl:ml-4">
275
 
276
  <div id="broadcast_button" class="inline-block text-left ">
277
  <button type="button"
278
- class="inline-flex justify-center w-full py-2 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">
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-2 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 ">
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-2 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">
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-2 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"
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 my-4 es_broadcast_first max-w-7xl">
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 Template', 'email-subscribers' ); ?></label>
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="my-4 hidden mx-auto es_broadcast_second max-w-7xl">
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 pt-2 border-t border-gray-200">
485
- <div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Open Tracking', 'email-subscribers' ); ?>
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-1 font-sans">
288
  <header class="wp-heading-inline">
289
- <div class="sm:grid sm:grid-cols lg:grid lg:grid-cols-2 max-w-full">
290
- <div class="mt-2">
291
- <h2 class="text-2xl font-medium mt-2 text-gray-900 sm:leading-9 sm:truncate">
292
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_campaigns"><?php esc_html_e( 'Campaigns ', 'email-subscribers' ); ?></a></span>
293
- <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 inline-block align-middle">
294
- <path d="M9 5l7 7-7 7"></path>
295
- </svg>
296
-
 
 
 
297
  <?php echo esc_html( $heading ); ?>
298
  </h2>
299
  </div>
300
- <div class="py-2 md:mt-0">
301
- <div class="flex flex-row sm:justify-start md:justify-end mt-2">
302
- <div>
303
- <?php if ( 'edit' === $action ) { ?>
304
- <a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button px-4 py-2 mx-2"><?php esc_html_e( 'Add New', 'email-subscribers' ); ?></a>
305
- <?php } ?>
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 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,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 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,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 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;">
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-3 font-sans">
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 mt-3">
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 Contacts', 'email-subscribers' ),
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
- $template_type = array(
34
- 'newsletter' => __( 'Broadcast', 'email-subscribers' ),
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 Template type', 'email-subscirbers' ); ?></span></label><br/>
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 Template', 'email-subscribers' ); ?></a>
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 Type', 'email-subscribers' );
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
- $list_ids_str = implode( ',', $list_ids );
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 text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
83
- <th class="px-5 py-4"><?php esc_html_e( 'Roles', 'email-subscribers' ); ?></th>
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 Clicks', 'email-subscribers' ),
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 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,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 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,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 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,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 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,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 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,11 +901,11 @@ function ig_es_additional_schedule_option() {
901
  }
902
 
903
  function ig_es_additional_spam_score_option() {
904
- if ( ! ES()->is_pro() ) {
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>
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 = "https://api.icegram.com";
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
- $data = new WP_Error( '404', 'Unknown Error' );
38
-
 
39
  if ( empty( $this->cmd ) ) {
40
  return new WP_Error( '404', 'Command Not Found' );
41
  }
42
-
43
- $url = $this->api_url . $this->cmd;
44
-
45
- if ( 'POST' === $method ) {
46
- $response = wp_remote_post( $url, $options );
47
- } else {
48
- $response = wp_remote_get( $url, $options );
49
  }
50
-
51
- if ( ! is_wp_error( $response ) ) {
52
-
53
- if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
54
-
55
- $response_data = $response['body'];
56
-
57
- if ( 'error' != $response_data ) {
58
- return json_decode( $response_data, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 a new Workflow', 'email-subscribers' );
183
  } else {
184
  $title = __( ' Edit Workflow', 'email-subscribers' );
185
  }
186
  ?>
187
- <div>
188
- <h2 class="text-2xl leading-7 text-gray-900 sm:leading-9 sm:truncate">
189
- <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
190
- <a href="<?php echo esc_url( $workflows_page_url ); ?>"><?php esc_html_e('Workflows', 'email-subscribers'); ?></a>
191
- </span>
192
- <svg class="w-6 h-6 mt-2 inline-block" fill="currentColor" viewBox="0 0 24 24">
193
- <path
194
- fill-rule="evenodd"
195
- 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"
196
- clip-rule="evenodd"
197
- ></path>
198
- </svg>
199
- <?php echo esc_html( $title ); ?>
200
- </h2>
201
- <form method="post" action="#">
 
 
 
 
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' ), 'email-subscribers_page_es_workflows', 'normal', 'default' );
253
- add_meta_box( 'ig_es_workflow_actions', $meta_box_title_for_actions, array( __CLASS__, 'actions_metabox' ), 'email-subscribers_page_es_workflows', 'normal', 'default' );
254
- add_meta_box( 'ig_es_workflow_save', $meta_box_title_for_save, array( __CLASS__, 'save_metabox' ), 'email-subscribers_page_es_workflows', 'side', 'default' );
255
- // add_meta_box( 'ig_es_workflow_options', $meta_box_title_for_options, array( __CLASS__, 'options_metabox' ), 'email-subscribers_page_es_workflows', 'side', 'default' ); // phpcs:ignore
256
- // add_meta_box( 'ig_es_workflow_timing', $meta_box_title_for_timing, array( __CLASS__, 'timing_metabox' ), 'email-subscribers_page_es_workflows', 'side', 'default' ); // phpcs:ignore
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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-3 font-sans">
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 mt-4">
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 Workflows', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
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 = time();
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
- <?php if ( 'yes' === $ig_es_powered_by ) { ?>
 
 
 
 
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
- <?php } ?>
 
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.0
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