Email Subscribers & Newsletters - Version 4.6.12

Version Description

Download this release

Release Info

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

Code changes from version 4.6.11 to 4.6.12

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.11
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
@@ -178,7 +178,7 @@ if ( 'premium' === $ig_es_plan ) {
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
- define( 'ES_PLUGIN_VERSION', '4.6.11' );
182
  }
183
 
184
  // Plugin Folder Path.
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
+ * Version: 4.6.12
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
+ define( 'ES_PLUGIN_VERSION', '4.6.12' );
182
  }
183
 
184
  // Plugin Folder Path.
lite/admin/class-email-subscribers-admin.php CHANGED
@@ -101,6 +101,7 @@ class Email_Subscribers_Admin {
101
 
102
  // Ajax handler for email preview
103
  add_action( 'wp_ajax_ig_es_preview_email_report', array( $this, 'preview_email_in_report' ) );
 
104
 
105
  if ( class_exists( 'IG_ES_Premium_Services_UI' ) ) {
106
  IG_ES_Premium_Services_UI::instance();
@@ -1208,6 +1209,11 @@ class Email_Subscribers_Admin {
1208
 
1209
  }*/
1210
 
 
 
 
 
 
1211
  public function preview_email_in_report() {
1212
 
1213
  check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
@@ -1244,4 +1250,15 @@ class Email_Subscribers_Admin {
1244
 
1245
  <?php
1246
  }
 
 
 
 
 
 
 
 
 
 
 
1247
  }
101
 
102
  // Ajax handler for email preview
103
  add_action( 'wp_ajax_ig_es_preview_email_report', array( $this, 'preview_email_in_report' ) );
104
+ add_action( 'wp_ajax_ajax_fetch_report_list', array( $this, 'ajax_fetch_report_list_callback'));
105
 
106
  if ( class_exists( 'IG_ES_Premium_Services_UI' ) ) {
107
  IG_ES_Premium_Services_UI::instance();
1209
 
1210
  }*/
1211
 
1212
+ /**
1213
+ * Method to preview email through AJAX
1214
+ *
1215
+ * @since 4.6.11
1216
+ */
1217
  public function preview_email_in_report() {
1218
 
1219
  check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
1250
 
1251
  <?php
1252
  }
1253
+
1254
+ /**
1255
+ * Method to display Activity table in Reports through Ajax
1256
+ *
1257
+ * @since 4.6.12
1258
+ */
1259
+ public function ajax_fetch_report_list_callback() {
1260
+
1261
+ $wp_list_table = new ES_Campaign_Report();
1262
+ $wp_list_table->ajax_response();
1263
+ }
1264
  }
lite/admin/class-ig-es-campaign-rules.php ADDED
@@ -0,0 +1,811 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+
8
+ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
9
+
10
+ /**
11
+ * Class IG_ES_Campaign_Rules
12
+ *
13
+ * @since 4.6.11
14
+ */
15
+ class IG_ES_Campaign_Rules {
16
+
17
+ /**
18
+ * Campaign rules
19
+ *
20
+ */
21
+ private $campaign_rules = array();
22
+
23
+ /**
24
+ * Subscriber related fields
25
+ *
26
+ */
27
+ private $fields = array();
28
+
29
+ /**
30
+ * Campaign related fields
31
+ */
32
+ private $campaign_related = array();
33
+
34
+ /**
35
+ * Aggregate campaigns fields
36
+ */
37
+ private $aggregate_campaigns = array();
38
+
39
+ /**
40
+ * Rule operators
41
+ */
42
+ private $operators = array();
43
+
44
+ /**
45
+ * Simple operators
46
+ */
47
+ private $simple_operators = array();
48
+
49
+ /**
50
+ * String operators
51
+ */
52
+ private $string_operators = array();
53
+
54
+ /**
55
+ * Boolean operators
56
+ */
57
+ private $bool_operators = array();
58
+
59
+ /**
60
+ * IG_ES_Campaign_Rules constructor.
61
+ */
62
+ public function __construct() {
63
+ add_action( 'init', array( $this, 'init' ) );
64
+ }
65
+
66
+ /**
67
+ * Initialize campaign rules
68
+ *
69
+ * @since 4.6.12
70
+ */
71
+ public function init() {
72
+ $this->fields = $this->get_fields();
73
+ $this->campaign_related = $this->get_campaign_related();
74
+ $this->aggregate_campaigns = $this->get_aggregate_campaigns();
75
+ $this->operators = $this->get_operators();
76
+ $this->simple_operators = $this->get_simple_operators();
77
+ $this->string_operators = $this->get_string_operators();
78
+ $this->bool_operators = $this->get_bool_operators();
79
+ $this->campaign_rules = $this->get_campaign_rules();
80
+
81
+ add_action( 'ig_es_show_campaign_rules', array( $this, 'show_campaign_rules' ) );
82
+ add_action( 'ig_es_campaign_show_conditions', array( $this, 'show_conditions' ) );
83
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
84
+ }
85
+
86
+ /**
87
+ * Register the JavaScript for campaign rules.
88
+ */
89
+ public function enqueue_scripts() {
90
+
91
+ global $wp_locale;
92
+
93
+ $current_page = ig_es_get_request_data( 'page' );
94
+
95
+ if ( in_array( $current_page, array( 'es_newsletters', 'es_sequence' ), true ) ) {
96
+ wp_register_script( 'alpine', plugins_url( '/js/alpine.js', __FILE__ ), array(), '2.8.0', false );
97
+ wp_enqueue_script( 'alpine' );
98
+
99
+ wp_register_script( 'ig-es-campaign-rules', plugins_url( '/js/campaign-rules.js', __FILE__ ), array(), ES_PLUGIN_VERSION, false );
100
+ wp_enqueue_script( 'ig-es-campaign-rules' );
101
+
102
+ $rules_data = array(
103
+ 'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
104
+ 'i18n' => array(
105
+ 'start_of_week' => get_option( 'start_of_week' ),
106
+ 'next' => esc_html__( 'next', 'email-subscribers' ),
107
+ 'prev' => esc_html__( 'prev', 'email-subscribers' ),
108
+ 'day_names' => $wp_locale->weekday,
109
+ 'day_names_min' => array_values( $wp_locale->weekday_abbrev ),
110
+ 'month_names' => array_values( $wp_locale->month ),
111
+ 'remove_conditions' => esc_html__( 'Do you really like to remove all conditions?', 'email-subscribers' ),
112
+ ),
113
+ 'is_pro' => ES()->is_pro(),
114
+ );
115
+
116
+ wp_localize_script( 'ig-es-campaign-rules', 'ig_es_rules_data', $rules_data );
117
+ }
118
+
119
+ if ( in_array( $current_page, array( 'es_newsletters', 'es_sequence', 'es_reports' ), true ) ) {
120
+ wp_register_style( 'ig-es-campaign-rules', plugins_url( '/css/campaign-rules.css', __FILE__ ), array(), ES_PLUGIN_VERSION, 'all' );
121
+ wp_enqueue_style( 'ig-es-campaign-rules' );
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Method to show campaign rules
127
+ *
128
+ * @param array $campaign_data Broadcast data
129
+ *
130
+ * @since 4.6.11
131
+ */
132
+ public function show_campaign_rules( $campaign_data = array() ) {
133
+
134
+ $current_page = ig_es_get_request_data( 'page' );
135
+ $campaign_id = ! empty( $campaign_data['id'] ) ? $campaign_data['id'] : 1;
136
+
137
+ $conditions = array();
138
+ if ( ! empty( $campaign_data['meta'] ) ) {
139
+ $campaign_meta = maybe_unserialize( $campaign_data['meta'] );
140
+ $conditions = ! empty( $campaign_meta['list_conditions'] ) ? $campaign_meta['list_conditions'] : array();
141
+ }
142
+
143
+ $args = array();
144
+ if ( 'es_newsletters' === $current_page ) {
145
+ $args = array(
146
+ 'include_types' => array(
147
+ 'newsletter'
148
+ ),
149
+ 'status' => array(
150
+ IG_ES_CAMPAIGN_STATUS_FINISHED
151
+ ),
152
+ );
153
+ } else {
154
+ $args = array(
155
+ 'include_types' => array(
156
+ 'sequence_message'
157
+ ),
158
+ );
159
+ }
160
+ $all_campaigns = ES()->campaigns_db->get_all_campaigns( $args );
161
+ $lists = ES()->lists_db->get_list_id_name_map();
162
+ if ( ! empty( $all_campaigns ) ) {
163
+ $all_campaigns_stati = array_column( $all_campaigns, 'status' );
164
+ }
165
+
166
+ $countries_data = ES_Geolocation::get_countries();
167
+
168
+
169
+ $input_name = 'es_newsletters' === $current_page ? 'broadcast_data[meta][list_conditions]' : 'seq_data[' . $campaign_id . '][list_conditions]';
170
+
171
+ $select_list_attr = ES()->is_pro() ? 'multiple="multiple"' : '';
172
+ $select_list_name = ES()->is_pro() ? 'broadcast_data[list_ids][]' : 'broadcast_data[list_ids]';
173
+ $select_list_class = ES()->is_pro() ? 'ig-es-campaign-rule-form-multiselect' : 'form-select';
174
+
175
+ $sidebar_id = 'sidebar_' . $campaign_id;
176
+ ?>
177
+ <style>
178
+ .select2-container{
179
+ width: 100%!important;
180
+ }
181
+ .select2-search__field {
182
+ width: 100%!important;
183
+ }
184
+ </style>
185
+ <div class="ig-es-campaign-rules my-2" x-data="{ <?php echo esc_attr( $sidebar_id ); ?>: false }">
186
+ <label for="es-campaign-condition" class="text-sm font-medium leading-5 text-gray-700"><?php esc_html_e( 'Recipients', 'email-subscribers' ); ?>:</label>
187
+ <div class="ig-es-conditions-render-wrapper">
188
+ <?php
189
+ if ( ! empty( $conditions ) ) {
190
+ do_action( 'ig_es_campaign_show_conditions', $conditions );
191
+ }
192
+ ?>
193
+ </div>
194
+ <p class="clear">
195
+ <a class="block edit-conditions 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 mt-1 px-1.5 py-1 mr-1 cursor-pointer" x-on:click="<?php echo esc_attr( $sidebar_id ); ?>=true">
196
+ <?php esc_html_e( 'Add recipients', 'email-subscribers' ); ?>
197
+ </a>
198
+ <span class="remove-all-conditions-wrapper<?php echo empty( $conditions ) ? ' hidden' : ''; ?>">
199
+ <?php esc_html_e( 'or', 'email-subscribers' ); ?>
200
+ <a class="remove-conditions hover:underline" href="#">
201
+ <?php esc_html_e( 'remove all', 'email-subscribers' ); ?>
202
+ </a>
203
+ </span>
204
+ </p>
205
+ <div class="fixed inset-0 overflow-hidden z-50" id='ig-es-campaign-rules-<?php echo esc_attr( $sidebar_id ); ?>' style="display: none;" x-show="<?php echo esc_attr( $sidebar_id ); ?>">
206
+ <div class="absolute inset-0 overflow-hidden">
207
+ <div class="absolute inset-0 bg-gray-500 bg-opacity-75 transition-opacity" aria-hidden="true"></div>
208
+ <section class="absolute inset-y-0 right-0 pl-10 max-w-full flex" aria-labelledby="slide-over-heading">
209
+ <div class="relative w-screen max-w-3xl mt-8"
210
+ x-transition:enter="ease-out duration-300"
211
+ x-transition:enter-start="opacity-0 -translate-x-full"
212
+ x-transition:enter-end="opacity-100 translate-x-0"
213
+ x-transition:leave="ease-in duration-200"
214
+ x-transition:leave-start="opacity-100 translate-x-0"
215
+ x-transition:leave-end="opacity-0 -translate-x-full">
216
+
217
+ <div class="h-full flex flex-col bg-gray-50 shadow-xl overflow-y-auto">
218
+ <div class="flex py-5 px-6 bg-gray-100 shadow-sm sticky">
219
+ <div class="w-9/12">
220
+ <span id="slide-over-heading" class="text-xl font-medium text-gray-600">
221
+ <?php echo esc_html__( 'Campaign Rules', 'email-subscribers' ); ?>
222
+ </span>
223
+ </div>
224
+ <div class="w-3/12 text-right">
225
+ <span class="es_spinner_image_admin inline-block align-middle -mt-1 mr-1" id="spinner-image" style="display:none"><img src="<?php echo esc_url( ES_PLUGIN_URL . 'lite/public/images/spinner.gif' ); ?>" alt="<?php echo esc_attr( 'Loading...', 'email-subscribers' ); ?>"/></span>
226
+ <a class="inline-flex items-center text-sm font-medium leading-5 text-gray-700 transition duration-150 ease-in-out bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:shadow-outline focus:border-blue-300 -mt-1 mr-2 px-3 py-1 cursor-pointer close-conditions" x-on:click=" <?php echo esc_attr( $sidebar_id ); ?> = false"><?php esc_html_e( 'Save Rules', 'email-subscribers' ); ?></a>
227
+ <a x-on:click=" <?php echo esc_attr( $sidebar_id ); ?> = false" class="-mt-1 rounded-md text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-white cursor-pointer">
228
+ <span class="sr-only"><?php echo esc_html__( 'Close panel', 'email-subscribers' ); ?></span>
229
+ <!-- Heroicon name: outline/x -->
230
+ <svg class="h-6 w-6 inline" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
231
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
232
+ </svg>
233
+ </a>
234
+ </div>
235
+ </div>
236
+ <div class="mt-3 px-6 pb-6 relative flex-1 w-full">
237
+ <!-- Replace with your content -->
238
+ <div class="h-full rounded-md" aria-hidden="true">
239
+ <div class="absolute inset-0 z-50">
240
+ <div class="foot pt-2 px-6 text-right">
241
+ <div class="broadcast-conditions-total-contacts">
242
+ <p class="inline font-medium text-base tracking-wide pr-2 text-gray-400"><?php esc_html_e( 'Total recipients', 'email-subscribers' ); ?>: </span> <span class="ig-es-total-contacts">&ndash;</span></div>
243
+
244
+ </div>
245
+ <div class="ig-es-conditions px-6 h-full">
246
+ <div class="ig-es-condition-container"></div>
247
+ <div class="ig-es-conditions-wrap mt-1 mb-3 overflow-auto">
248
+ <?php
249
+
250
+ array_unshift(
251
+ $conditions,
252
+ array(
253
+ array(
254
+ 'field' => '',
255
+ 'operator' => '',
256
+ 'value' => '',
257
+ ),
258
+ )
259
+ );
260
+
261
+
262
+ foreach ( $conditions as $i => $condition_group ) :
263
+ ?>
264
+ <div class="ig-es-condition-group bg-white border border-gray-200 rounded-md my-2 pb-12 relative block px-4 rounded-lg pt-2 mt-2 mb-12" data-id="<?php echo esc_attr( $i ); ?>" data-operator="<?php esc_attr_e( 'and', 'email-subscribers' ); ?>"<?php echo ( ! $i ) ? ' style="display:none"' : ''; ?>>
265
+
266
+ <?php
267
+ foreach ( $condition_group as $j => $condition ) :
268
+ $value = isset( $condition['value'] ) ? $condition['value'] : '';
269
+ $field = isset( $condition['field'] ) ? $condition['field'] : '';
270
+ $field_operator = $this->get_field_operator( $condition['operator'] );
271
+ ?>
272
+ <div class="add-or-condition absolute z-10 bottom-5">
273
+ <a class="es-add-or-condition bg-gray-100 py-1 px-1 rounded-md leading-4 font-medium cursor-pointer hover:bg-gray-50"><?php esc_html_e( 'Add Condition', 'email-subscribers' ); ?> [<span class="uppercase"><?php esc_html_e( 'or', 'email-subscribers' ); ?></span>]</a>
274
+ </div>
275
+ <div class="ig-es-condition border-b border-gray-200 relative py-5" data-id="<?php echo esc_attr( $j ); ?>" data-operator="<?php esc_attr_e( 'or', 'email-subscribers' ); ?>">
276
+ <a class="remove-condition cursor-pointer float-right mb-2 px-1" title="<?php esc_attr_e( 'remove condition', 'email-subscribers' ); ?>">&#10005;</a>
277
+ <div class="ig-es-conditions-field-fields">
278
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][field]" class="condition-field form-select" disabled>
279
+ <?php
280
+ foreach ( $this->campaign_rules as $rule_group => $rules ) {
281
+ ?>
282
+ <optgroup label="<?php echo esc_attr( $rule_group ); ?>">
283
+ <?php
284
+ foreach ( $rules as $key => $rule ) {
285
+ echo '<option value="' . esc_attr( $key ) . '"' . selected( $condition['field'], $key, false ) . ( ! empty( $rule['disabled'] ) ? ' disabled="' . esc_attr( 'disabled' ) . '"' : '' ) . ( isset( $rule['count'] ) ? ' data-count="' . esc_attr( $rule['count'] ) . '"' : '' ) . '>' . esc_html( $rule['name'] ) . '</option>';
286
+ }
287
+ ?>
288
+ </optgroup>
289
+ <?php
290
+ }
291
+ ?>
292
+ </select>
293
+ </div>
294
+
295
+ <div class="ig-es-conditions-operator-fields">
296
+ <div class="ig-es-conditions-operator-field ig-es-conditions-operator-field-default">
297
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][operator]" class="condition-operator form-select" disabled>
298
+ <?php
299
+ foreach ( $this->operators as $key => $name ) :
300
+ echo '<option value="' . esc_attr( $key ) . '"' . selected( $field_operator, $key, false ) . '>' . esc_html( $name ) . '</option>';
301
+ endforeach;
302
+ ?>
303
+ </select>
304
+ </div>
305
+ <div class="ig-es-conditions-operator-field" data-fields=",lang,client,referer,firstname,lastname,email,">
306
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][operator]" class="condition-operator form-select" disabled>
307
+ <?php
308
+ foreach ( $this->string_operators as $key => $name ) :
309
+ echo '<option value="' . esc_attr( $key ) . '"' . selected( $field_operator, $key, false ) . '>' . esc_html( $name ) . '</option>';
310
+ endforeach;
311
+ ?>
312
+ </select>
313
+ </div>
314
+ <div class="ig-es-conditions-operator-field" data-fields=",country_code,">
315
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][operator]" class="condition-operator form-select" disabled>
316
+ <?php
317
+ foreach ( $this->bool_operators as $key => $name ) :
318
+ echo '<option value="' . esc_attr( $key ) . '"' . selected( $field_operator, $key, false ) . '>' . esc_html( $name ) . '</option>';
319
+ endforeach;
320
+ ?>
321
+ </select>
322
+ </div>
323
+ <div class="ig-es-conditions-operator-field" data-fields=",_sent,_sent__not_in,_open,_open__not_in,_click,_click__not_in,_lists__not_in,_lists__in,">
324
+ <input type="hidden" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][operator]" class="condition-operator" disabled value="is">
325
+ </div>
326
+ </div>
327
+
328
+ <div class="ig-es-conditions-value-fields w-full">
329
+ <?php
330
+ if ( is_array( $value ) ) {
331
+ $value_arr = $value;
332
+ $value = $value[0];
333
+ } else {
334
+ $value_arr = array( $value );
335
+ }
336
+ ?>
337
+ <div class="ig-es-conditions-value-field ig-es-conditions-value-field-default">
338
+ <input type="text" class="regular-text condition-value form-input h-5 text-sm" disabled value="<?php echo esc_attr( $value ); ?>" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]">
339
+ </div>
340
+ <div class="ig-es-conditions-value-field" data-fields=",id,wp_user_id,">
341
+ <input type="text" class="regular-text condition-value form-input h-5 text-sm" disabled value="<?php echo esc_attr( $value ); ?>" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]">
342
+ </div>
343
+ <div class="ig-es-conditions-value-field" data-fields=",country_code,">
344
+ <select class="regular-text condition-value form-select" disabled name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]">
345
+ <option value="">--</option>
346
+ <?php
347
+ foreach ( $countries_data as $country_code => $country_name ) {
348
+ ?>
349
+ <option value="<?php echo esc_attr( $country_code ); ?>" <?php selected( $country_code, $value ); ?>><?php echo esc_html( $country_name ); ?></option>
350
+ <?php
351
+ }
352
+ ?>
353
+ </select>
354
+ </div>
355
+ <div class="ig-es-conditions-value-field" data-fields=",_sent,_sent__not_in,_open,_open__not_in,_click,_click__not_in,">
356
+ <?php if ( $all_campaigns ) : ?>
357
+ <?php foreach ( $value_arr as $k => $v ) : ?>
358
+ <div class="-mr-3">
359
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value][]" class="condition-value <?php echo esc_attr( $select_list_class ); ?>" <?php echo esc_attr( $select_list_attr ); ?>>
360
+ <option value="0"><?php echo esc_html__( 'Any campaign', 'email-subscribers' ); ?></option>
361
+ <?php
362
+ foreach ( $all_campaigns as $campaign ) :
363
+ ?>
364
+ <option value="<?php echo esc_attr( $campaign['id'] ); ?>" <?php selected( $v, $campaign['id'] ); ?>><?php echo $campaign['name'] ? esc_html( $campaign['name'] ) : '[' . esc_html__( 'no title', 'email-subscribers' ) . '] (# ' . esc_attr( $campaign['id'] ) . ')'; ?></option>
365
+ <?php endforeach; ?>
366
+ </select>
367
+ </div>
368
+ <?php endforeach; ?>
369
+ <?php else : ?>
370
+ <p><?php esc_html_e( 'No campaigns available', 'email-subscribers' ); ?><input type="hidden" class="condition-value" disabled value="0" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]"></p>
371
+ <?php endif; ?>
372
+ </div>
373
+ <div class="ig-es-conditions-value-field" data-fields=",_lists__not_in,_lists__in,">
374
+ <?php if ( $lists ) : ?>
375
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value][]" class="condition-value <?php echo esc_attr( $select_list_class ); ?>" <?php echo esc_attr( $select_list_attr ); ?>>
376
+ <?php
377
+ if ( ES()->is_pro() ) :
378
+ ?>
379
+ <option value="0"><?php echo esc_html__( 'Any list', 'email-subscribers' ); ?></option>
380
+ <?php
381
+ endif;
382
+ foreach ( $lists as $list_id => $list_name ) :
383
+ ?>
384
+ <option value="<?php echo esc_attr( $list_id ); ?>" <?php echo ( in_array( $list_id, $value_arr ) ? 'selected="' . esc_attr( 'selected' ) . '"' : '' ); ?>><?php echo $list_name ? esc_html( $list_name ) : '[' . esc_html__( 'no title', 'ig-es' ) . ']'; ?></option>
385
+ <?php endforeach; ?>
386
+ </select>
387
+ <?php else : ?>
388
+ <p><?php esc_html_e( 'No campaigns available', 'email-subscribers' ); ?><input type="hidden" class="condition-value" disabled value="0" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]"></p>
389
+ <?php endif; ?>
390
+ </div>
391
+ </div>
392
+ <div class="clear"></div>
393
+ </div><?php endforeach; ?>
394
+
395
+ </div><?php endforeach; ?>
396
+ </div>
397
+ <div class="mt-5">
398
+ <a class="ig-es-primary-button py-1 px-2 cursor-pointer add-condition">
399
+ <svg class="w-4 h-4 mt-0.5 inline text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6v6m0 0v6m0-6h6m-6 0H6"></path></svg>
400
+ <?php esc_html_e( 'Add Condition', 'email-subscribers' ); ?></a>
401
+ </div>
402
+ <div class="ig-es-condition-empty">
403
+ </div>
404
+
405
+ </div>
406
+ </div>
407
+ <!-- /End replace -->
408
+ </div>
409
+ </div>
410
+ </div>
411
+ </section>
412
+ </div>
413
+ </div>
414
+ </div>
415
+ <?php
416
+ }
417
+
418
+ /**
419
+ * Show selected conditions
420
+ */
421
+ public function show_conditions( $conditions ) {
422
+ $allowedtags = ig_es_allowed_html_tags_in_esc();
423
+ ?>
424
+ <?php
425
+ if ( ! empty( $conditions ) ) :
426
+ ?>
427
+ <div class="ig-es-conditions-render">
428
+ <?php
429
+ foreach ( $conditions as $i => $condition_group ) :
430
+ if ( ! empty( $condition_group ) ) :
431
+ ?>
432
+ <div class="ig-es-condition-render-group clear">
433
+ <?php
434
+ if ( $i ) {
435
+ echo '<span class="clear float-left pr-1 ig-es-condition-operators text-xs font-medium text-gray-400 tracking-wide uppercase mt-1 mr-1">' . esc_html__( 'and', 'email-subscribers' ) . '</span>';
436
+ }
437
+ foreach ( $condition_group as $j => $condition ) :
438
+ $field = isset( $condition['field'] ) ? $condition['field'] : ( isset( $condition[0] ) ? $condition[0] : '' );
439
+ $operator = isset( $condition['operator'] ) ? $condition['operator'] : ( isset( $condition[1] ) ? $condition[1] : '' );
440
+ $value = isset( $condition['value'] ) ? $condition['value'] : ( isset( $condition[2] ) ? $condition[2] : '' );
441
+ $nice = $this->get_condition_html( $condition );
442
+ ?>
443
+ <div class="ig-es-condition-render ig-es-condition-render-<?php echo esc_attr( $condition['field'] ); ?>" title="<?php echo esc_attr( strip_tags( sprintf( '%s %s %s', $nice['field'], $nice['operator'], $nice['value'] ) ) ); ?>">
444
+ <?php
445
+ if ( $j ) {
446
+ echo '<span class="clear ig-es-condition-type ig-es-condition-operators text-xs font-medium text-gray-400 tracking-wide uppercase mt-1 mr-1">' . esc_html__( 'or', 'email-subscribers' ) . '</span>';
447
+ }
448
+ ?>
449
+ <span class="ig-es-condition-type ig-es-condition-field mt-1"><?php echo wp_kses( $nice['field'], $allowedtags ); ?></span>
450
+ <span class="ig-es-condition-type ig-es-condition-operator mt-1"><?php echo wp_kses( $nice['operator'], $allowedtags ); ?></span>
451
+ <span class="ig-es-condition-type ig-es-condition-value mt-1 pl-2"><?php echo wp_kses( $nice['value'], $allowedtags ); ?></span>
452
+ </div>
453
+ <?php endforeach; ?>
454
+ </div>
455
+ <?php
456
+ endif;
457
+ endforeach;
458
+ ?>
459
+ </div>
460
+ <?php
461
+ endif;
462
+ ?>
463
+ <?php
464
+ }
465
+
466
+ /**
467
+ * Get field operator
468
+ *
469
+ * @return string $operator Field operator
470
+ */
471
+ private function get_field_operator( $operator ) {
472
+ $operator = esc_sql( stripslashes( $operator ) );
473
+
474
+ switch ( $operator ) {
475
+ case '=':
476
+ return 'is';
477
+ case '!=':
478
+ return 'is_not';
479
+ case '<>':
480
+ return 'contains';
481
+ case '!<>':
482
+ return 'contains_not';
483
+ case '^':
484
+ return 'begin_with';
485
+ case '$':
486
+ return 'end_with';
487
+ case '>=':
488
+ return 'is_greater_equal';
489
+ case '<=':
490
+ return 'is_smaller_equal';
491
+ case '>':
492
+ return 'is_greater';
493
+ case '<':
494
+ return 'is_smaller';
495
+ case '%':
496
+ return 'pattern';
497
+ case '!%':
498
+ return 'not_pattern';
499
+ }
500
+
501
+ return $operator;
502
+
503
+ }
504
+
505
+ /**
506
+ * Get condition HTML
507
+ *
508
+ * @return string Get condition HTML
509
+ */
510
+ private function get_condition_html( $condition, $formated = true ) {
511
+
512
+ $field = isset( $condition['field'] ) ? $condition['field'] : ( isset( $condition[0] ) ? $condition[0] : '' );
513
+ $operator = isset( $condition['operator'] ) ? $condition['operator'] : ( isset( $condition[1] ) ? $condition[1] : '' );
514
+ $value = stripslashes_deep( isset( $condition['value'] ) ? $condition['value'] : ( isset( $condition[2] ) ? $condition[2] : '' ) );
515
+
516
+ $return = array(
517
+ 'field' => '<span class="leading-5 text-gray-700 text-sm tracking-wide mr-1">' . $this->nice_name( $field, 'field', $field ) . '</span>',
518
+ 'operator' => '',
519
+ 'value' => '',
520
+ );
521
+ $opening_quote = esc_html_x( '&#8220;', 'opening curly double quote', 'email-subscribers' );
522
+ $closing_quote = esc_html_x( '&#8221;', 'closing curly double quote', 'email-subscribers' );
523
+
524
+ if ( isset( $this->campaign_rules['Campaign'][ $field ] ) ) {
525
+ $aggregate_campaign_keys = array_keys( $this->aggregate_campaigns );
526
+ if ( ! is_array( $value ) ) {
527
+ $value = array( $value );
528
+ }
529
+ $urls = array();
530
+ $campagins = array();
531
+ $return['value'] = '<span class="font-medium text-gray-500 tracking-wide mr-1">' . $opening_quote . implode( $closing_quote . ' </span><span class="uppercase text-gray-400 pr-1 text-xs font-medium tracking-wide mt-1 mr-1">' . esc_html__( 'or', 'email-subscribers' ) . ' </span><span class="font-medium text-gray-500 tracking-wide mr-1"> ' . $opening_quote, array_map( array( $this, 'get_campaign_name' ), $value ) ) . $closing_quote . '</span>';
532
+ } elseif ( isset( $this->campaign_rules['List'][ $field ] ) ) {
533
+ if ( ! is_array( $value ) ) {
534
+ $value = array( $value );
535
+ }
536
+ $return['value'] = '<span class="font-medium text-gray-500 tracking-wide mr-1">' . $opening_quote . implode( $closing_quote . ' </span><span class="uppercase text-gray-400 pr-1 text-xs font-medium tracking-wide mt-1 mr-1">' . esc_html__( 'or', 'email-subscribers' ) . ' </span><span class="font-medium text-gray-500 tracking-wide mr-1"> ' . $opening_quote, array_map( array( $this, 'get_list_name' ), $value ) ) . $closing_quote . '</span>';
537
+ } elseif ( 'country_code' === $field ) {
538
+ if ( ! is_array( $value ) ) {
539
+ $value = array( $value );
540
+ }
541
+ $return['operator'] = '<em>' . $this->nice_name( $operator, 'operator', $field ) . '</em>';
542
+ $return['value'] = $opening_quote . implode( $closing_quote . ' ' . esc_html__( 'or', 'email-subscribers' ) . ' ' . $opening_quote, array_map( array( $this, 'get_country_name' ), $value ) ) . $closing_quote;
543
+ } else {
544
+ $return['operator'] = '<em>' . $this->nice_name( $operator, 'operator', $field ) . '</em>';
545
+ $return['value'] = $opening_quote . '<span class="font-medium text-gray-500 tracking-wide mr-1">' . $this->nice_name( $value, 'value', $field ) . '</span>' . $closing_quote;
546
+ }
547
+
548
+ return $formated ? $return : strip_tags( $return );
549
+ }
550
+
551
+ /**
552
+ * Get names for field, operator and value
553
+ *
554
+ * @return string Formatted string
555
+ */
556
+ private function nice_name( $string, $type = null, $field = null ) {
557
+
558
+ switch ( $type ) {
559
+ case 'field':
560
+ foreach ( $this->campaign_rules as $rule_group => $rules ) {
561
+ foreach ( $rules as $rule_slug => $rule ) {
562
+ if ( $string === $rule_slug ) {
563
+ return $rule['name'];
564
+ }
565
+ }
566
+ }
567
+ break;
568
+ case 'operator':
569
+ if ( isset( $this->operators[ $string ] ) ) {
570
+ return $this->operators[ $string ];
571
+ }
572
+ if ( 'AND' == $string ) {
573
+ return esc_html__( 'and', 'email-subscribers' );
574
+ }
575
+ if ( 'OR' == $string ) {
576
+ return esc_html__( 'or', 'email-subscribers' );
577
+ }
578
+ break;
579
+ }
580
+
581
+ return $string;
582
+ }
583
+
584
+ /**
585
+ * Get list of subscribers data based rules
586
+ *
587
+ * @return array List of subscribers data based rules
588
+ */
589
+ private function get_campaign_rules() {
590
+
591
+ $campaign_rules = array(
592
+ 'List' => array(
593
+ '_lists__in' => array(
594
+ 'name' => esc_html__( 'is in List', 'email-subscribers' ),
595
+ ),
596
+ )
597
+ );
598
+
599
+ $campaign_rules = apply_filters( 'ig_es_campaign_rules', $campaign_rules );
600
+
601
+ return $campaign_rules;
602
+ }
603
+
604
+ /**
605
+ * Get list of subscribers data based rules
606
+ *
607
+ * @return array List of subscribers data based rules
608
+ */
609
+ private function get_fields() {
610
+ $fields = array(
611
+ 'email' => esc_html__( 'Email', 'email-subscribers' ),
612
+ 'country_code' => esc_html__( 'Country', 'email-subscribers' ),
613
+ );
614
+
615
+ return $fields;
616
+ }
617
+
618
+ /**
619
+ * Get list of campaign related rules
620
+ *
621
+ * @return array List of aggregate campaigns related rules
622
+ */
623
+ private function get_campaign_related() {
624
+ return array(
625
+ '_sent' => esc_html__( 'has received', 'email-subscribers' ),
626
+ '_sent__not_in' => esc_html__( 'has not received', 'email-subscribers' ),
627
+ '_open' => esc_html__( 'has received and opened', 'email-subscribers' ),
628
+ '_open__not_in' => esc_html__( 'has received but not opened', 'email-subscribers' ),
629
+ '_click' => esc_html__( 'has received and clicked', 'email-subscribers' ),
630
+ '_click__not_in' => esc_html__( 'has received and not clicked', 'email-subscribers' ),
631
+ );
632
+
633
+ }
634
+
635
+ /**
636
+ * Get list of aggregate campaigns related rules
637
+ *
638
+ * @return array List of aggregate campaigns related rules
639
+ */
640
+ private function get_aggregate_campaigns() {
641
+ return array(
642
+ '_last_5' => esc_html__( 'Any of the Last 5 Campaigns', 'email-subscribers' ),
643
+ '_last_7_day' => esc_html__( 'Any Campaigns within the last 7 days', 'email-subscribers' ),
644
+ '_last_1_month' => esc_html__( 'Any Campaigns within the last 1 month', 'email-subscribers' ),
645
+ '_last_3_months' => esc_html__( 'Any Campaigns within the last 3 months', 'email-subscribers' ),
646
+ '_last_6_months' => esc_html__( 'Any Campaigns within the last 6 months', 'email-subscribers' ),
647
+ '_last_12_months' => esc_html__( 'Any Campaigns within the last 12 months', 'email-subscribers' ),
648
+ );
649
+
650
+ }
651
+
652
+ /**
653
+ * Get list of comparison operators
654
+ *
655
+ * @return array List of comparison operators
656
+ */
657
+ private function get_operators() {
658
+ return array(
659
+ 'is' => esc_html__( 'is', 'email-subscribers' ),
660
+ 'is_not' => esc_html__( 'is not', 'email-subscribers' ),
661
+ 'contains' => esc_html__( 'contains', 'email-subscribers' ),
662
+ 'contains_not' => esc_html__( 'contains not', 'email-subscribers' ),
663
+ 'begin_with' => esc_html__( 'begins with', 'email-subscribers' ),
664
+ 'end_with' => esc_html__( 'ends with', 'email-subscribers' ),
665
+ 'is_greater' => esc_html__( 'is greater than', 'email-subscribers' ),
666
+ 'is_smaller' => esc_html__( 'is smaller than', 'email-subscribers' ),
667
+ 'is_greater_equal' => esc_html__( 'is greater or equal', 'email-subscribers' ),
668
+ 'is_smaller_equal' => esc_html__( 'is smaller or equal', 'email-subscribers' ),
669
+ 'pattern' => esc_html__( 'match regex pattern', 'email-subscribers' ),
670
+ 'not_pattern' => esc_html__( 'does not match regex pattern', 'email-subscribers' ),
671
+ );
672
+
673
+ }
674
+
675
+ /**
676
+ * Get list of simple operators
677
+ *
678
+ * @return array Simple operators
679
+ */
680
+ private function get_simple_operators() {
681
+ return array(
682
+ 'is' => esc_html__( 'is', 'email-subscribers' ),
683
+ 'is_not' => esc_html__( 'is not', 'email-subscribers' ),
684
+ 'is_greater' => esc_html__( 'is greater than', 'email-subscribers' ),
685
+ 'is_smaller' => esc_html__( 'is smaller than', 'email-subscribers' ),
686
+ 'is_greater_equal' => esc_html__( 'is greater or equal', 'email-subscribers' ),
687
+ 'is_smaller_equal' => esc_html__( 'is smaller or equal', 'email-subscribers' ),
688
+ );
689
+
690
+ }
691
+
692
+ /**
693
+ * Get list of string operators
694
+ *
695
+ * @return array String operators
696
+ */
697
+ private function get_string_operators() {
698
+ return array(
699
+ 'is' => esc_html__( 'is', 'email-subscribers' ),
700
+ 'is_not' => esc_html__( 'is not', 'email-subscribers' ),
701
+ 'contains' => esc_html__( 'contains', 'email-subscribers' ),
702
+ 'contains_not' => esc_html__( 'contains not', 'email-subscribers' ),
703
+ 'begin_with' => esc_html__( 'begins with', 'email-subscribers' ),
704
+ 'end_with' => esc_html__( 'ends with', 'email-subscribers' ),
705
+ 'pattern' => esc_html__( 'match regex pattern', 'email-subscribers' ),
706
+ 'not_pattern' => esc_html__( 'does not match regex pattern', 'email-subscribers' ),
707
+ );
708
+
709
+ }
710
+
711
+ /**
712
+ * Get list of boolean operators
713
+ *
714
+ * @return array Boolean operator
715
+ */
716
+ private function get_bool_operators() {
717
+ return array(
718
+ 'is' => esc_html__( 'is', 'email-subscribers' ),
719
+ 'is_not' => esc_html__( 'is not', 'email-subscribers' ),
720
+ );
721
+
722
+ }
723
+
724
+ /**
725
+ * Get campaign name
726
+ *
727
+ * @param int $campaign_id Campaign ID
728
+ *
729
+ * @return string $name Campaign name
730
+ */
731
+ public function get_campaign_name( $campaign_id ) {
732
+
733
+ if ( ! $campaign_id ) {
734
+ return esc_html__( 'Any campaign', 'email-subscribers' );
735
+ }
736
+
737
+ if ( isset( $this->aggregate_campaigns[ $campaign_id ] ) ) {
738
+ return $this->aggregate_campaigns[ $campaign_id ];
739
+ }
740
+
741
+ $campaign = ES()->campaigns_db->get( $campaign_id );
742
+ if ( empty( $campaign['name'] ) ) {
743
+ $name = '#' . $campaign_id;
744
+ } else {
745
+ $name = $campaign['name'];
746
+ }
747
+ return $name;
748
+ }
749
+
750
+ /**
751
+ * Get list name
752
+ *
753
+ * @param int $list_id list ID
754
+ *
755
+ * @return string $list_name list name
756
+ */
757
+ public function get_list_name( $list_id ) {
758
+
759
+ if ( ! $list_id ) {
760
+ return esc_html__( 'Any list', 'email-subscribers' );
761
+ }
762
+
763
+ $lists = ES()->lists_db->get_list_id_name_map();
764
+ $list_name = isset( $lists[ $list_id ] ) ? $lists[ $list_id ] : $list_id;
765
+ return $list_name;
766
+ }
767
+
768
+ /**
769
+ * Get country name
770
+ *
771
+ * @param string $code country code
772
+ *
773
+ * @return string $country_name country name
774
+ */
775
+ public function get_country_name( $code ) {
776
+
777
+ $country_name = ES_Geolocation::get_countries_iso_code_name_map( $code );
778
+ return $country_name;
779
+ }
780
+
781
+ /**
782
+ * Remove empty conditions from campaign data
783
+ *
784
+ * @param array $conditions_data
785
+ *
786
+ * @return array $conditions_data
787
+ */
788
+ public static function remove_empty_conditions ( $conditions_data = array() ) {
789
+
790
+ if ( ! empty( $conditions_data ) ) {
791
+ $list_conditions = $conditions_data;
792
+ foreach ( $list_conditions as $i => $and_cond ) {
793
+ foreach ( $and_cond as $j => $cond ) {
794
+ if ( ! isset( $list_conditions[ $i ][ $j ]['field'] ) ) {
795
+ unset( $list_conditions[ $i ][ $j ] );
796
+ } elseif ( isset( $list_conditions[ $i ][ $j ]['value'] ) && is_array( $list_conditions[ $i ][ $j ]['value'] ) ) {
797
+ $list_conditions[ $i ][ $j ]['value'] = array_values( array_unique( $list_conditions[ $i ][ $j ]['value'] ) );
798
+ }
799
+ }
800
+ }
801
+ // Remove any empty value array.
802
+ $conditions_data = array_values( array_filter( $list_conditions ) );
803
+ }
804
+
805
+
806
+ return $conditions_data;
807
+ }
808
+ }
809
+ }
810
+
811
+ new IG_ES_Campaign_Rules();
lite/admin/css/campaign-rules.css ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ig-es-conditions-wrap .ig-es-condition-group:after, .ig-es-conditions-wrap .ig-es-condition:after{
2
+ content: attr(data-operator);
3
+ position: absolute;
4
+ left: 320px;
5
+ padding: 3px 1px;
6
+ text-transform: uppercase;
7
+ color: #999;
8
+ font-size: 16px;
9
+ line-height: 1em;
10
+ z-index: 1;
11
+ bottom: -35px;
12
+ }
13
+ .ig-es-conditions-wrap .ig-es-condition:after{
14
+ background-color: #fff;
15
+ padding: 2px 10px;
16
+ font-size: 14px;
17
+ bottom: -10px;
18
+ left: 300px;
19
+ }
20
+ .ig-es-conditions-wrap .ig-es-condition-group:last-child:after, .ig-es-conditions-wrap .ig-es-condition:last-child:after, .ig-es-condition-container{
21
+ display: none;
22
+ }
23
+ .ig-es-conditions-wrap .ig-es-condition-group:last-child, .ig-es-conditions-wrap .ig-es-condition:last-child{
24
+ margin-bottom: 0;
25
+ }
26
+ .ig-es-conditions-wrap .ig-es-condition, .ig-es-conditions-wrap .ig-es-condition-empty{
27
+ border-bottom: 1px dotted #DFDFDF;
28
+ background-color: #fff;
29
+ position: relative;
30
+ }
31
+
32
+ .ig-es-conditions-wrap .ig-es-condition:last-child{
33
+ border-bottom: none;
34
+ }
35
+
36
+ .ig-es-conditions-field-fields, .ig-es-conditions-operator-fields, .ig-es-conditions-value-fields{
37
+ float: left;
38
+ max-width: 37%;
39
+ padding-right: 4px;
40
+ }
41
+ .rtl .ig-es-conditions-field-fields,.rtl .ig-es-conditions-operator-fields,.rtl .ig-es-conditions-value-fields{
42
+ float: right;
43
+ padding-right: 0px;
44
+ padding-left: 4px;
45
+ }
46
+ .ig-es-conditions-operator-fields{
47
+ max-width: 140px;
48
+ }
49
+ .ig-es-conditions-operator-field, .ig-es-conditions-value-field{
50
+ display: none;
51
+ }
52
+ .ig-es-conditions-operator-field.active, .ig-es-conditions-value-field.active{
53
+ display: block;
54
+ }
55
+ .ig-es-conditions-wrap select, .ig-es-conditions-wrap input{
56
+ max-width: 100%
57
+ }
58
+ .ig-es-conditions-wrap .ig-es-condition-empty{
59
+ background-color: none;
60
+ border: 1px dotted #DFDFDF;
61
+ text-align: center;
62
+ padding: 10px 0 10px;
63
+ }
64
+ .ig-es-conditions-wrap .remove-condition{
65
+ visibility: hidden;
66
+ }
67
+
68
+ .rtl .ig-es-conditions-wrap .remove-condition{
69
+ float: left;
70
+ }
71
+
72
+ .ig-es-conditions-wrap .ig-es-condition:hover .remove-condition{
73
+ visibility: visible;
74
+ }
75
+
76
+ /*.ig-es-conditions-wrap .add-or-condition{
77
+ position: absolute;
78
+ bottom: 12px;
79
+ z-index: 1;
80
+ }
81
+ */
82
+ .ig-es-conditions-wrap .datepicker.condition-value{
83
+ width: 100px;
84
+ }
85
+ .ig-es-condition .ig-es-conditions-value-field p, .ig-es-condition .ig-es-conditions-value-field ul{
86
+ margin: 0;
87
+ }
88
+ .ig-es-condition-render span.ig-es-condition-type {
89
+ float: left;
90
+ padding-right: 4px;
91
+ }
92
+ .rtl .ig-es-condition-render span.ig-es-condition-type {
93
+ float: right;
94
+ padding-right: 0;
95
+ padding-left: 4px;
96
+ }
97
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child{
98
+ display: inline-block;
99
+ }
100
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect .condition-value{
101
+ width: 180px;
102
+ }
103
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-add-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child span, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-remove-multiselect{
104
+ visibility: hidden;
105
+ }
106
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a{
107
+ cursor: pointer;
108
+ }
109
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:hover a.ig-es-condition-remove-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:last-child a.ig-es-condition-add-multiselect{
110
+ visibility: visible;
111
+ }
112
+
113
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child a.ig-es-condition-remove-multiselect{
114
+ visibility: hidden !important;
115
+ }
116
+
117
+ div.ig-es-conditions-render-wrapper::after,
118
+ .ig-es-conditions-render-wrapper .ig-es-conditions-render::after {
119
+ content: '';
120
+ display: block;
121
+ clear: both;
122
+ }
123
+
124
+ .ig-es-conditions-render-wrapper .ig-es-conditions-render {
125
+ margin: 10px 0 10px 0;
126
+ padding: 5px 0 5px 8px;
127
+ border: 0.5px solid rgb(210, 214, 220);
128
+ border-radius: 0.25rem;
129
+ }
130
+
131
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:not(:first-child) {
132
+ margin-top:0.5rem;
133
+ }
134
+ .es-add-or-condition{
135
+ border: hsl(215,13.8%,54.1%);
136
+ color: rgb(75, 85, 99);
137
+ border: 1px solid hsl(215,13.8%,54.1%);
138
+ top:67px;
139
+ }
140
+
141
+ /*.es-report-description .ig-es-condition-render-group span, .es-report-description .ig-es-condition-render-group{
142
+ float:none !important;
143
+ clear:none !important;
144
+ }
145
+
146
+ .es-report-description .ig-es-condition-render-group, .es-report-description .ig-es-conditions-render{
147
+ display: inline-block !important;
148
+ font-weight:normal;
149
+ }*/
150
+
151
+ .email-subscribers_page_es_reports .ig-es-condition-render-group span, .email-subscribers_page_es_reports .ig-es-condition-type span, .email-subscribers_page_es_reports span.ig-es-condition-type{
152
+ font-weight: normal;
153
+ color: rgba(22, 30, 46, 1);
154
+ padding-right:1px;
155
+ }
156
+
157
+ .email-subscribers_page_es_reports .recipient-text {
158
+ position: absolute;
159
+ top: 12px;
160
+ }
161
+
162
+
163
+
lite/admin/css/email-subscribers-admin.css CHANGED
@@ -1794,8 +1794,24 @@ div.broadcast_side_content{
1794
  }
1795
 
1796
 
1797
- #es_country_flag{
1798
- width:2.3em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1799
  }
1800
 
1801
  #es-flag-icon{
@@ -1880,3 +1896,22 @@ div.broadcast_side_content{
1880
  padding-top: 0px !important;
1881
  clear: none !important;
1882
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1794
  }
1795
 
1796
 
1797
+ #es_country_flag, .es_campaign_report #country_flag{
1798
+ width:3em !important;
1799
+ }
1800
+
1801
+ .es_campaign_report #sr_no, .es_campaign_report #device{
1802
+ width: 5em !important;
1803
+ }
1804
+
1805
+ .es_campaign_report #status {
1806
+ width: 7em !important;
1807
+ }
1808
+
1809
+ .es_campaign_report #os{
1810
+ width: 8em !important;
1811
+ }
1812
+
1813
+ .es_campaign_report #email_client{
1814
+ width: 12em !important;
1815
  }
1816
 
1817
  #es-flag-icon{
1896
  padding-top: 0px !important;
1897
  clear: none !important;
1898
  }
1899
+
1900
+ .es_campaign_report table.reports{
1901
+ position: static !important;
1902
+ }
1903
+
1904
+ #es_campaign_report tbody {
1905
+ counter-reset:paragraph;
1906
+ }
1907
+
1908
+ #es_campaign_report tbody tr td.sr_no:after,
1909
+ #es_campaign_report tbody tr td.sr_no::after
1910
+ {
1911
+ counter-increment:paragraph;
1912
+ content: counter(paragraph);
1913
+ }
1914
+
1915
+ .es-campaign-reports-table{
1916
+ padding-top: 0 !important;
1917
+ }
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:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-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:.875rem;height:.875rem;margin-left:.25rem;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}.es-add-or-condition:hover,.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))}.es-add-or-condition:focus,.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:1rem;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}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.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))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.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-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,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))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.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-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.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}.bottom-5{bottom:1.25rem}.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-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,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-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.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}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.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}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.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-200{-webkit-transition-duration:.2s;transition-duration:.2s}.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-2\/4{width:50%}.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\:ml-32{margin-left:8rem}.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-6\/12{width:50%}.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: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{-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: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,.form-radio:checked{border-color:transparent}.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");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{-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: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:2px solid transparent;outline-offset:2px;-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:2px solid transparent;outline-offset:2px;-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:2px solid transparent!important;outline-offset:2px!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:2px solid transparent;outline-offset:2px;-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:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-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:2px solid transparent!important;outline-offset:2px!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:2px solid transparent!important;outline-offset:2px!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:.875rem;height:.875rem;margin-left:.25rem;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}.es-add-or-condition:hover,.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))}.es-add-or-condition:focus,.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-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:1rem;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-campaign-reports-table .striped>tbody tr{border-bottom-width:2px}.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}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.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))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.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-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,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))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.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:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.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}.bottom-5{bottom:1.25rem}.top-8{top:2rem}.top-10{top:2.5rem}.top-20{top:5rem}.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-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,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-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;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-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.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}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.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}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.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-200{-webkit-transition-duration:.2s;transition-duration:.2s}.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-2\/4{width:50%}.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\:ml-32{margin-left:8rem}.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-6\/12{width:50%}.xl\:w-7\/12{width:58.333333%}}
lite/admin/dist/main.js CHANGED
@@ -1 +1 @@
1
- !function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,r){"use strict";r.r(t);r(1)},function(e,t,r){}]);
1
+ !function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,r){"use strict";r.r(t);t=r(1)},function(e,t,r){}]);
lite/admin/js/campaign-rules.js ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function ($) {
2
+
3
+ "use strict"
4
+ ig_es_register_campaign_rules_js_events_handler();
5
+
6
+ });
7
+
8
+ function ig_es_register_campaign_rules_js_events_handler( conditions_elem ) {
9
+ if ( 'undefined' === typeof conditions_elem ) {
10
+ conditions_elem = jQuery('.ig-es-conditions');
11
+ }
12
+ jQuery.each(jQuery(conditions_elem), function () {
13
+ var _self = jQuery(this),
14
+ conditions = _self.find('.ig-es-conditions-wrap'),
15
+ groups = _self.find('.ig-es-condition-group'),
16
+ cond = _self.find('.ig-es-condition');
17
+
18
+ groups.eq(0).appendTo(_self.find('.ig-es-condition-container'));
19
+
20
+ _self
21
+ .on('click', '.add-condition', function () {
22
+ ig_es_add_and_condtion();
23
+ })
24
+ .on('click', '.add-or-condition', function () {
25
+ var cont = jQuery(this).parent(),
26
+ id = cont.find('.ig-es-condition').last().data('id'),
27
+ clone = cond.eq(0).clone();
28
+
29
+ clone.removeAttr('id').appendTo(cont).data('id', ++id);
30
+ jQuery.each(clone.find('input, select'), function () {
31
+ var _this = jQuery(this),
32
+ name = _this.attr('name');
33
+ _this.attr('name', name.replace(/\[\d+\]\[\d+\]/, '[' + cont.data('id') + '][' + id + ']')).prop('disabled', false);
34
+ if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
35
+ jQuery(_this).ig_es_select2();
36
+ }
37
+ if( jQuery(_this).hasClass('condition-field')) {
38
+ ig_es_handle_list_condition();
39
+ }
40
+ });
41
+ clone.find('.condition-field').val('').focus();
42
+ cond = _self.find('.ig-es-condition');
43
+ });
44
+
45
+ jQuery('.remove-conditions').on('click', function () {
46
+ if (confirm(ig_es_rules_data.i18n.remove_conditions)) {
47
+ jQuery(conditions).empty();
48
+ jQuery('.ig-es-conditions-render-wrapper').empty();
49
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
50
+ }
51
+ return false;
52
+ });
53
+ conditions
54
+ .on('click', '.remove-condition', function () {
55
+ var c = jQuery(this).parent();
56
+ if (c.parent().find('.ig-es-condition').length == 1) {
57
+ c = c.parent();
58
+ }
59
+ c.slideUp(100, function () {
60
+ jQuery(this).remove();
61
+ ig_es_handle_list_condition();
62
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
63
+ });
64
+ })
65
+ .on('change', '.condition-field', function (event) {
66
+
67
+ var condition = jQuery(this).closest('.ig-es-condition'),
68
+ field = jQuery(this),
69
+ operator_field, value_field;
70
+ ig_es_show_operator_and_value_field(field);
71
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
72
+ })
73
+ .on('change', '.condition-operator', function () {
74
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
75
+ })
76
+ .on('change', '.condition-value', function () {
77
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
78
+ })
79
+ .on('click', '.ig-es-condition-add-multiselect', function () {
80
+ jQuery(this).parent().clone().insertAfter(jQuery(this).parent()).find('.condition-value').select().focus();
81
+ return false;
82
+ })
83
+ .on('click', '.ig-es-condition-remove-multiselect', function () {
84
+ jQuery(this).parent().remove();
85
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
86
+ return false;
87
+ })
88
+ .on('change', '.ig-es-conditions-value-field-multiselect > .condition-value', function () {
89
+ if (0 == jQuery(this).val() && jQuery(this).parent().parent().find('.condition-value').size() > 1) jQuery(this).parent().remove();
90
+ })
91
+ .find('.condition-field').prop('disabled', false).trigger('change');
92
+
93
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
94
+
95
+ // Add one list condition if there are no conditions.
96
+ if( 0 === jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group').length ) {
97
+ ig_es_add_default_list_condition();
98
+ } else {
99
+ jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group .condition-value').each(function(){
100
+ if( jQuery(this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
101
+ jQuery(this).ig_es_select2();
102
+ }
103
+ });
104
+ }
105
+
106
+ function ig_es_add_and_condtion( condition_data ) {
107
+ let id = groups.length,
108
+ clone = groups.eq(0).clone();
109
+
110
+ clone.removeAttr('id').appendTo(conditions).data('id', id).show();
111
+ jQuery.each(clone.find('input, select'), function () {
112
+ let _this = jQuery(this);
113
+ name = _this.attr('name');
114
+ _this.attr('name', name.replace(/\[\d+\]/, '[' + id + ']')).prop('disabled', false);
115
+
116
+ if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
117
+ jQuery(_this).ig_es_select2();
118
+ }
119
+ });
120
+
121
+ if ( 'undefined' === typeof condition_data ) {
122
+ condition_data = {
123
+ condition: '',
124
+ }
125
+ }
126
+ let condition_value = condition_data.condition;
127
+ let condition_field = clone.find('.condition-field');
128
+ jQuery(condition_field).val(condition_value).focus();
129
+ if ( '' !== condition_value ) {
130
+ ig_es_show_operator_and_value_field(condition_field);
131
+ }
132
+ groups = _self.find('.ig-es-condition-group');
133
+ cond = _self.find('.ig-es-condition');
134
+ ig_es_handle_list_condition();
135
+ }
136
+
137
+ function ig_es_handle_list_condition( selected_elem ) {
138
+ if ( ig_es_rules_data.is_pro ) {
139
+ return;
140
+ }
141
+ var condition_fields = jQuery('.ig-es-conditions-wrap .condition-field');
142
+ var list_rule_count = 0;
143
+ jQuery(condition_fields).each(function(){
144
+ var selected_rule = jQuery(this).val();
145
+ if ( '_lists__in' === selected_rule ) {
146
+ list_rule_count++;
147
+ }
148
+ });
149
+ var hide_list_rule = list_rule_count > 0;
150
+ var campaign_rules = jQuery('.ig-es-conditions-wrap .condition-field');
151
+ jQuery(campaign_rules).each(function(index,elem){
152
+ var list_rule_option = jQuery(this).find('option[value = "_lists__in"]');
153
+ var list_rule_text = jQuery(list_rule_option).text();
154
+ list_rule_text = list_rule_text.replace(' [PRO]','');
155
+ if ( 'undefined' !== typeof selected_elem ) {
156
+ if( hide_list_rule && ! ( jQuery(selected_elem)[0] === elem ) ) {
157
+ list_rule_text += ' [PRO]';
158
+ jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
159
+ } else {
160
+ jQuery(list_rule_option).removeAttr('disabled');
161
+ }
162
+ } else {
163
+ if( index > 0 && hide_list_rule ) {
164
+ list_rule_text += ' [PRO]';
165
+ jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
166
+ } else {
167
+ jQuery(list_rule_option).removeAttr('disabled');
168
+ }
169
+ }
170
+ jQuery(list_rule_option).text(list_rule_text);
171
+ });
172
+ }
173
+
174
+ function ig_es_add_default_list_condition() {
175
+ ig_es_add_and_condtion({ condition: '_lists__in' });
176
+ }
177
+
178
+ function ig_es_show_operator_and_value_field( field ) {
179
+
180
+ var condition = jQuery(field).closest('.ig-es-condition'),
181
+ operator_field, value_field;
182
+
183
+ condition.find('div.ig-es-conditions-value-field').removeClass('active').find('.condition-value').prop('disabled', true);
184
+ condition.find('div.ig-es-conditions-operator-field').removeClass('active').find('.condition-operator').prop('disabled', true);
185
+
186
+ value_field = condition.find('div.ig-es-conditions-value-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-value').prop('disabled', false);
187
+ operator_field = condition.find('div.ig-es-conditions-operator-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-operator').prop('disabled', false);
188
+
189
+ if (!value_field.length) {
190
+ value_field = condition.find('div.ig-es-conditions-value-field-default').addClass('active').find('.condition-value').prop('disabled', false);
191
+ }
192
+ if (!operator_field.length) {
193
+ operator_field = condition.find('div.ig-es-conditions-operator-field-default').addClass('active').find('.condition-operator').prop('disabled', false);
194
+ }
195
+
196
+ if ( jQuery(field).hasClass('condition-field') ) {
197
+ ig_es_handle_list_condition(field);
198
+ }
199
+ }
200
+ });
201
+ }
lite/admin/js/email-subscribers-admin.js CHANGED
@@ -40,7 +40,7 @@
40
  error: function (err) {
41
  alert( ig_es_js_data.i18n_data.ajax_error_message );
42
  }
43
- }).complete(function(){
44
  $(elem).next('.es-preview-loader').hide();
45
  });
46
  });
@@ -319,13 +319,14 @@
319
  });
320
 
321
  let update_contacts_counts_xhr;
322
- $(document).on('ig_es_update_contacts_counts', function(){
 
 
 
323
  let selected_list_id = $('#ig_es_broadcast_list_ids').val();
324
 
325
  let conditions = [],
326
- total = $('.ig-es-total'),
327
- cond = $('#ig-es_conditions_render'),
328
- groups = $('.ig-es-conditions-wrap > .ig-es-condition-group'),
329
  i = 0;
330
 
331
  $.each(groups, function () {
@@ -361,7 +362,7 @@
361
  // Return if no list or conditions selected.
362
  if ( ! selected_list_id && 0 === conditions.length ) {
363
  $('.ig_es_list_contacts_count').text(0);
364
- $('#ig-es-conditions-render').html('');
365
  return;
366
  }
367
 
@@ -390,13 +391,11 @@
390
  response = JSON.parse(response);
391
  if (response.hasOwnProperty('total')) {
392
  var total = response.total;
393
- var total_contacts_text = "<h2 class='text-sm font-normal text-gray-600'>Total Contacts: <span class='text-base font-medium text-gray-700'> <span class='ig_es_list_contacts_count'>" + total + "</span></span></h2>";
394
  var total_recipients_text = "<div class='mt-1.5 py-2'><span class='font-medium text-base text-gray-700'><span class='ig_es_list_contacts_count'>" + total + "</span> <span class='text-base font-medium text-gray-700'></span><span class='font-normal text-sm text-gray-500'> recipients </span></div>";
395
- $('#ig_es_total_contacts').html(total_contacts_text);
396
- $('broadcast-conditions-total-contacts').show();
397
  $('#ig_es_total_recipients').html(total_recipients_text);
398
 
399
- $('.ig-es-total-contacts').text(total);
400
  if (total == 0) {
401
  $('#ig_es_campaign_submit_button').attr("disabled", true);
402
  } else {
@@ -404,13 +403,18 @@
404
  }
405
  }
406
  if ( response.hasOwnProperty('conditions_html') ) {
407
- $('#ig-es-conditions-render').html(response.conditions_html);
408
  } else {
409
- $('#ig-es-conditions-render').html('');
 
 
 
 
 
410
  }
411
  }
412
  }
413
- }).complete(function(){
414
  $('#spinner-image').hide();
415
  });;
416
  })
40
  error: function (err) {
41
  alert( ig_es_js_data.i18n_data.ajax_error_message );
42
  }
43
+ }).always(function(){
44
  $(elem).next('.es-preview-loader').hide();
45
  });
46
  });
319
  });
320
 
321
  let update_contacts_counts_xhr;
322
+ $(document).on('ig_es_update_contacts_counts', function(e, data){
323
+
324
+ let condition_elem = data.condition_elem;
325
+ let condition_container_elem = $(condition_elem).closest('.ig-es-campaign-rules');
326
  let selected_list_id = $('#ig_es_broadcast_list_ids').val();
327
 
328
  let conditions = [],
329
+ groups = $(condition_elem).find('.ig-es-conditions-wrap > .ig-es-condition-group'),
 
 
330
  i = 0;
331
 
332
  $.each(groups, function () {
362
  // Return if no list or conditions selected.
363
  if ( ! selected_list_id && 0 === conditions.length ) {
364
  $('.ig_es_list_contacts_count').text(0);
365
+ $('.ig-es-conditions-render-wrapper').html('');
366
  return;
367
  }
368
 
391
  response = JSON.parse(response);
392
  if (response.hasOwnProperty('total')) {
393
  var total = response.total;
 
394
  var total_recipients_text = "<div class='mt-1.5 py-2'><span class='font-medium text-base text-gray-700'><span class='ig_es_list_contacts_count'>" + total + "</span> <span class='text-base font-medium text-gray-700'></span><span class='font-normal text-sm text-gray-500'> recipients </span></div>";
395
+ $('#ig_es_total_contacts .ig_es_list_contacts_count').html(total);
 
396
  $('#ig_es_total_recipients').html(total_recipients_text);
397
 
398
+ $(condition_container_elem).find('.ig-es-total-contacts').text(total);
399
  if (total == 0) {
400
  $('#ig_es_campaign_submit_button').attr("disabled", true);
401
  } else {
403
  }
404
  }
405
  if ( response.hasOwnProperty('conditions_html') ) {
406
+ $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html(response.conditions_html);
407
  } else {
408
+ $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
409
+ }
410
+ if ( $(condition_container_elem).find('.ig-es-conditions-wrap .condition-field').length > 0 ) {
411
+ $(condition_container_elem).find('.remove-all-conditions-wrapper').removeClass('hidden');
412
+ } else {
413
+ $(condition_container_elem).find('.remove-all-conditions-wrapper').addClass('hidden');
414
  }
415
  }
416
  }
417
+ }).always(function(){
418
  $('#spinner-image').hide();
419
  });;
420
  })
lite/includes/class-email-subscribers.php CHANGED
@@ -710,6 +710,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
710
  'lite/includes/classes/class-es-form-widget.php',
711
  'lite/includes/classes/class-es-export-subscribers.php',
712
  'lite/includes/classes/class-es-import-subscribers.php',
 
713
  // Start-IG-Code.
714
  'lite/includes/classes/class-es-info.php',
715
  // End-IG-Code.
@@ -852,6 +853,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
852
  // Subscribers Query
853
  'lite/includes/classes/class-ig-es-subscriber-query.php',
854
 
 
 
 
855
  'starter/starter-class-email-subscribers.php',
856
  'pro/pro-class-email-subscribers.php',
857
  );
710
  'lite/includes/classes/class-es-form-widget.php',
711
  'lite/includes/classes/class-es-export-subscribers.php',
712
  'lite/includes/classes/class-es-import-subscribers.php',
713
+ 'lite/includes/classes/class-es-campaign-report.php',
714
  // Start-IG-Code.
715
  'lite/includes/classes/class-es-info.php',
716
  // End-IG-Code.
853
  // Subscribers Query
854
  'lite/includes/classes/class-ig-es-subscriber-query.php',
855
 
856
+ // Campaign Rules
857
+ 'lite/admin/class-ig-es-campaign-rules.php',
858
+
859
  'starter/starter-class-email-subscribers.php',
860
  'pro/pro-class-email-subscribers.php',
861
  );
lite/includes/class-es-common.php CHANGED
@@ -1910,28 +1910,24 @@ class ES_Common {
1910
  *
1911
  * @since 4.6.5
1912
  */
1913
- public static function prepare_campaign_report_statuses_dropdown_options( $selected = '', $default_label = '' ) {
1914
 
1915
- $statuses = array(
1916
- 'Sent' => __( 'Completed', 'email-subscribers' ),
1917
- 'In Queue' => __( 'In Queue', 'email-subscribers' ),
1918
- 'Sending' => __( 'Sending', 'email-subscribers' ),
1919
- );
1920
 
1921
- $dropdown = '<option class="text-sm" value="">' . esc_html__( 'All Status', 'email-subscribers' ) . '</option>';
1922
 
1923
- foreach ( $statuses as $key => $status ) {
1924
 
1925
- $dropdown .= '<option class="text-sm" value="' . esc_attr( $key ) . '" ';
 
 
1926
 
1927
- if ( strtolower( $selected ) === strtolower( $key ) ) {
1928
- $dropdown .= 'selected = selected';
1929
  }
1930
 
1931
- $dropdown .= '>' . esc_html( $status ) . '</option>';
1932
  }
1933
-
1934
- return $dropdown;
1935
  }
1936
 
1937
  }
1910
  *
1911
  * @since 4.6.5
1912
  */
1913
+ public static function prepare_campaign_report_statuses_dropdown_options( $statuses = array(), $selected = '', $default_label = '' ) {
1914
 
1915
+ if ( ! empty( $statuses ) ) {
1916
+ $dropdown = '<option class="text-sm" value="">' . esc_html__( 'All Status', 'email-subscribers' ) . '</option>';
 
 
 
1917
 
1918
+ foreach ( $statuses as $key => $status ) {
1919
 
1920
+ $dropdown .= '<option class="text-sm" value="' . esc_attr( $key ) . '" ';
1921
 
1922
+ if ( strtolower( $selected ) === strtolower( $key ) ) {
1923
+ $dropdown .= 'selected = selected';
1924
+ }
1925
 
1926
+ $dropdown .= '>' . esc_html( $status ) . '</option>';
 
1927
  }
1928
 
1929
+ return $dropdown;
1930
  }
 
 
1931
  }
1932
 
1933
  }
lite/includes/classes/class-es-campaign-report.php ADDED
@@ -0,0 +1,526 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Exit if accessed directly
4
+ if ( ! defined( 'ABSPATH' ) ) {
5
+ exit;
6
+ }
7
+
8
+ class ES_Campaign_Report extends ES_List_Table {
9
+
10
+ public static $instance;
11
+
12
+ public function __construct() {
13
+
14
+ parent::__construct(
15
+ array(
16
+ 'singular' => __( 'Report', 'email-subscribers' ), // singular name of the listed records
17
+ 'plural' => __( 'Reports', 'email-subscribers' ), // plural name of the listed records
18
+ 'ajax' => true, // does this table support ajax?,
19
+ 'screen' => 'es_reports',
20
+ )
21
+ );
22
+
23
+ add_action( 'ig_es_view_activity_table_html', array( $this, 'view_activity_report_table' ), 10, 3 );
24
+ add_action( 'admin_footer', array( $this, 'es_view_activity_report_sort_and_filter') );
25
+ }
26
+
27
+ public function es_campaign_report_callback() {
28
+ ?>
29
+
30
+ <?php
31
+ $this->ajax_response();
32
+ ?>
33
+ <div id="poststuff" class="es-items-lists es-campaign-reports-table">
34
+ <div id="post-body" class="metabox-holder column-1">
35
+ <div id="post-body-content">
36
+ <div class="meta-box-sortables ui-sortable">
37
+ <form method="get" class="es_campaign_report" id="es_campaign_report">
38
+ <input type="hidden" name="order" />
39
+ <input type="hidden" name="orderby" />
40
+ <div class="mb-2 max-w-7xl">
41
+ <div>
42
+ <p class="text-lg font-medium leading-7 tracking-wide text-gray-600"><?php esc_html_e( 'Activity Info', 'email-subscribers' ); ?></p>
43
+ </div>
44
+ </div>
45
+ <?php $this->display(); ?>
46
+ </form>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ <?php
52
+ }
53
+
54
+ public function ajax_response() {
55
+
56
+ $this->prepare_items();
57
+ $no_placeholder = ig_es_get_request_data( 'no_placeholder', '' );
58
+ extract( $this->_args );
59
+ extract( $this->_pagination_args, EXTR_SKIP );
60
+
61
+ ob_start();
62
+ if ( ! empty( $no_placeholder ) ) {
63
+ $this->display_rows();
64
+ } else {
65
+ $this->display_rows_or_placeholder();
66
+ }
67
+ $rows = ob_get_clean();
68
+
69
+ ob_start();
70
+ $this->print_column_headers();
71
+ $headers = ob_get_clean();
72
+
73
+ $response = array( 'rows' => $rows );
74
+
75
+ $response['column_headers'] = $headers;
76
+
77
+ if ( isset( $total_items ) ) {
78
+ /* translators: %s: Total items in the table */
79
+ $response['total_items_i18n'] = sprintf( _n( '%s item', '%s items', $total_items, 'email-subscribers' ), number_format_i18n( $total_items ) );
80
+ }
81
+
82
+ if ( isset( $total_pages ) ) {
83
+ $response['total_pages'] = $total_pages;
84
+ $response['total_pages_i18n'] = number_format_i18n( $total_pages );
85
+ }
86
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
87
+ die( json_encode( $response ));
88
+
89
+ } else {
90
+ return $response;
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Columns to make sortable.
96
+ *
97
+ * @return array
98
+ */
99
+ public function get_sortable_columns() {
100
+
101
+ $sortable_columns = array(
102
+ 'email' => array( 'email', false ),
103
+ 'country_flag' => array( 'country_flag', false ),
104
+ 'os' => array( 'os', false ),
105
+ 'email_client' => array( 'email_client', false ),
106
+ 'sent_at' => array( 'sent_at', false ),
107
+ 'opened_at' => array( 'opened_at', false ),
108
+ 'status' => array( 'status', false ),
109
+ );
110
+
111
+ return $sortable_columns;
112
+ }
113
+
114
+
115
+ /**
116
+ * Handles data query and filter, sorting, and pagination.
117
+ */
118
+ public function prepare_items() {
119
+
120
+ $columns = $this->get_columns();
121
+ $hidden = array();
122
+ $sortable = $this->get_sortable_columns();
123
+
124
+ $this->_column_headers = array($columns, $hidden, $sortable);
125
+ // Search box
126
+
127
+ $data = $this->get_activity_table_data();
128
+ if ( ! empty( $data ) ) {
129
+ usort( $data, array( $this,'usort_reorder') );
130
+ }
131
+
132
+ $this->items = $data;
133
+ }
134
+
135
+ /**
136
+ * Handles sorting of the data
137
+ */
138
+ public function usort_reorder( $a, $b ) {
139
+ $orderby_colname = ig_es_get_request_data( 'orderby', '' );
140
+ $col_order = ig_es_get_request_data( 'order', '' );
141
+ $orderby = ( ! empty( $orderby_colname ) ) ? $orderby_colname : 'opened_at';
142
+ $order = ( ! empty( $col_order ) ) ? $col_order : 'desc';
143
+ $result = strcmp( $a[ $orderby ], $b[ $orderby ] );
144
+ return ( 'asc' === $order ) ? $result : -$result;
145
+ }
146
+
147
+ /**
148
+ * Method to handle display of WP_List table
149
+ *
150
+ * @Override of display method
151
+ */
152
+ public function display() {
153
+ $search = ig_es_get_request_data( 's' );
154
+ $this->search_box( $search, 'campaign-reports-search-input' );
155
+ parent::display();
156
+ }
157
+
158
+ /**
159
+ * Prepare search box
160
+ *
161
+ * @param string $text
162
+ * @param string $input_id
163
+ *
164
+ * @since 4.6.12
165
+ */
166
+ public function search_box( $text = '', $input_id = '' ) {
167
+ do_action( 'ig_es_campaign_reports_filter_options', $text, $input_id );
168
+ }
169
+
170
+
171
+ /**
172
+ * Associative array of columns
173
+ *
174
+ * @return array
175
+ */
176
+ public function get_columns() {
177
+ $columns = array(
178
+ 'sr_no' => __( 'Sr No', 'email-subscribers' ),
179
+ 'email' => __( 'Email', 'email-subscribers' ),
180
+ 'status' => __( 'Status', 'email-subscribers' ),
181
+ 'sent_at' => __( 'Sent Date', 'email-subscribers' ),
182
+ 'opened_at' => __( 'Viewed Date', 'email-subscribers' ),
183
+
184
+ );
185
+
186
+ $columns = apply_filters( 'additional_es_campaign_report_columns', $columns );
187
+
188
+ return $columns;
189
+ }
190
+
191
+ /**
192
+ * Render a column when no column specific method exist.
193
+ *
194
+ * @param array $item
195
+ * @param string $column_name
196
+ *
197
+ * @return mixed
198
+ */
199
+ public function column_default( $item, $column_name ) {
200
+ switch ( $column_name ) {
201
+ case 'sr_no':
202
+ break;
203
+ case 'email':
204
+ return $item['email'];
205
+ case 'sent_at':
206
+ return ig_es_format_date_time( $item['sent_at'] );
207
+ case 'opened_at':
208
+ return ig_es_format_date_time( $item['opened_at'] );
209
+ default:
210
+ $column_data = ! empty( $item[ $column_name ] ) ? $item[ $column_name ] : '-';
211
+ return $column_data;
212
+ }
213
+ }
214
+
215
+ public function column_status( $item ) {
216
+ $status = ! empty( $item['status'] ) ? $item['status'] : ( ! empty( $item['es_deliver_sentstatus'] ) ? $item['es_deliver_sentstatus'] : '' );
217
+
218
+ switch ( $status ) {
219
+ case 'Sent':
220
+ ?>
221
+ <svg class="h-6 w-6 text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
222
+ <title><?php echo esc_html__( 'Sent', 'email-subscribers' ); ?></title>
223
+ <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
224
+ </svg>
225
+ <?php
226
+ break;
227
+ case 'In Queue':
228
+ ?>
229
+ <svg class=" h-6 w-6 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
230
+ <title><?php echo esc_html__( 'In Queue', 'email-subscribers' ); ?></title>
231
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/>
232
+ </svg>
233
+ <?php
234
+ break;
235
+ case 'Sending':
236
+ ?>
237
+ <svg class=" h-6 w-6 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
238
+ <title><?php echo esc_html__( 'Sending', 'email-subscribers' ); ?></title>
239
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-8.707l-3-3a1 1 0 00-1.414 1.414L10.586 9H7a1 1 0 100 2h3.586l-1.293 1.293a1 1 0 101.414 1.414l3-3a1 1 0 000-1.414z" clip-rule="evenodd"/>
240
+ </svg>
241
+ <?php
242
+ break;
243
+ case 'Opened':
244
+ ?>
245
+ <svg xmlns="http://www.w3.org/2000/svg" class="" width="28" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" style="color:green">
246
+ <title><?php echo esc_html__( 'Opened', 'email-subscribers' ); ?></title>
247
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
248
+ <path d="M7 12l5 5l10 -10" />
249
+ <path d="M2 12l5 5m5 -5l5 -5" />
250
+ </svg>
251
+ <?php
252
+ break;
253
+ case '':
254
+ ?>
255
+ <i class="dashicons dashicons-es dashicons-minus"/>
256
+ <?php
257
+ break;
258
+ default:
259
+ echo esc_html( $status );
260
+ break;
261
+
262
+ }
263
+ }
264
+
265
+ /**
266
+ * Get view activity table data
267
+ *
268
+ */
269
+ public function get_activity_table_data() {
270
+
271
+ global $wpbd;
272
+
273
+ $hash = ig_es_get_request_data( 'list', '' );
274
+ $campaign_id = ig_es_get_request_data( 'campaign_id', '' );
275
+ $filter_by_status = ig_es_get_request_data( 'status', '' );
276
+ $filter_by_country = ig_es_get_request_data( 'country_code', '' );
277
+ $orderby = ig_es_get_request_data( 'orderby', 'created_at' );
278
+ $order = ig_es_get_request_data( 'order', 'desc' );
279
+ $message_id = 0;
280
+ $queue_data = array();
281
+ $view_activity_data = array();
282
+
283
+ if ( ! empty( $hash ) ) {
284
+ $notification_data_from_hash = ES_DB_Mailing_Queue::get_notification_by_hash( $hash );
285
+ $campaign_id = $notification_data_from_hash['campaign_id'];
286
+ $message_id = $notification_data_from_hash['id'];
287
+ $queue_data = ES_DB_Sending_Queue::get_queue_data( $campaign_id, $message_id );
288
+ }
289
+
290
+ $notification = $wpbd->get_row( $wpbd->prepare( "SELECT * FROM {$wpbd->prefix}ig_campaigns WHERE `id`= %d", $campaign_id ), ARRAY_A );
291
+ $total_email_sent = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_SENT );
292
+ $email_viewed_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_OPEN );
293
+ $email_click_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_LINK_CLICK );
294
+
295
+ $where = $wpbd->prepare( 'campaign_id = %d AND message_id = %d', $campaign_id, $message_id );
296
+
297
+ if ( ! empty( $filter_by_status) ) {
298
+ if ( 'opened' === $filter_by_status ) {
299
+ $contact_report_status = array( IG_MESSAGE_SENT, IG_MESSAGE_OPEN );
300
+ $where .= $wpbd->prepare( " AND contact_id IN (select contact_id from {$wpbd->prefix}ig_actions where type = %d AND campaign_id = %d AND message_id = %d)", IG_MESSAGE_OPEN, $campaign_id, $message_id);
301
+ } elseif ( 'not_opened' === $filter_by_status ) {
302
+
303
+ $contact_report_status = array( IG_MESSAGE_SENT );
304
+ $where .= $wpbd->prepare( " AND contact_id NOT IN (SELECT contact_id from {$wpbd->prefix}ig_actions where type = %d AND campaign_id = %d AND message_id = %d)", IG_MESSAGE_OPEN , $campaign_id, $message_id);
305
+ }
306
+ $type_count = count( $contact_report_status );
307
+ $type_placeholders = array_fill( 0, $type_count, '%d' );
308
+ $where .= $wpbd->prepare( ' AND type IN( ' . implode( ',', $type_placeholders ) . ' )', $contact_report_status );
309
+
310
+ }
311
+
312
+ if ( ! empty( $filter_by_country ) ) {
313
+ $where .= $wpbd->prepare( " AND contact_id IN (SELECT contact_id from {$wpbd->prefix}ig_actions where type = %d AND country = %s AND campaign_id = %d AND message_id = %d)", IG_MESSAGE_OPEN , $filter_by_country, $campaign_id, $message_id);
314
+ }
315
+
316
+ $where .= $wpbd->prepare( ' AND %d ORDER BY updated_at DESC', 1 );
317
+
318
+ $notification_actions = ES()->actions_db->get_by_conditions( $where );
319
+
320
+ $contact_ids_arr = array_column( $notification_actions, 'contact_id' );
321
+ if ( ! empty( $contact_ids_arr ) ) {
322
+ $contacts_data = ES()->contacts_db->get_details_by_ids( $contact_ids_arr );
323
+ if ( ! empty( $notification_actions ) ) {
324
+ foreach ( $notification_actions as $notification_action ) {
325
+ $action_type = (int) $notification_action['type'];
326
+
327
+ $contact_id = $notification_action['contact_id'];
328
+
329
+ if ( ! isset( $view_activity_data[$contact_id] ) ) {
330
+ $view_activity_data[$contact_id] = array(
331
+ 'email' => ! empty( $contacts_data[$contact_id]['email'] ) ? $contacts_data[$contact_id]['email'] : '',
332
+ 'opened' => 0,
333
+ 'opened_at' => 0,
334
+ 'status' => 0,
335
+ 'sent_at' => 0,
336
+ 'country_flag' => '',
337
+ 'device' => '',
338
+ 'email_client' => '',
339
+ 'os' => '',
340
+ );
341
+ }
342
+ if ( IG_MESSAGE_OPEN === $action_type ) {
343
+ $view_activity_data[$contact_id]['opened'] = 'Viewed';
344
+ $view_activity_data[$contact_id]['status'] = 'Opened';
345
+ $view_activity_data[$contact_id]['opened_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'] ) : '' ;
346
+
347
+ $view_activity_data = apply_filters( 'additional_es_report_activity_data', $view_activity_data, $contact_id, $notification_action );
348
+ } elseif ( IG_MESSAGE_SENT === $action_type ) {
349
+ if ( empty( $view_activity_data[$contact_id]['status'] ) ) {
350
+ $view_activity_data[$contact_id]['status'] = 'Sent';
351
+ }
352
+ $view_activity_data[$contact_id]['sent_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'] ) : '' ;
353
+ }
354
+
355
+ }
356
+ }
357
+ }
358
+
359
+ if ( ! empty( $queue_data ) ) {
360
+ foreach ( $queue_data as $data ) {
361
+ $contact_id = $data['contact_id'];
362
+
363
+ if ( ! isset( $view_activity_data[$contact_id] ) ) {
364
+ $view_activity_data[$contact_id] = array(
365
+ 'email' => ! empty( $data['email'] ) ? $data['email'] : '',
366
+ 'opened' => 0,
367
+ 'opened_at' => 0,
368
+ 'status' => ! empty( $data['status'] ) ? $data['status'] : '',
369
+ 'sent_at' => ! empty( $data['sent_at'] ) ? $data['sent_at'] : '',
370
+ 'country_flag' => '',
371
+ 'device' => '',
372
+ 'email_client' => '',
373
+ 'os' => '',
374
+ );
375
+ }
376
+ }
377
+ }
378
+
379
+ if ( ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
380
+ $insight = ig_es_get_request_data( 'insight', '' );
381
+ $_wpnonce = ig_es_get_request_data( '_wpnonce', '' );
382
+
383
+ if ( ( ES()->is_pro() || $insight ) && 0 !== $message_id ) {
384
+ do_action( 'ig_es_view_report_data', $hash );
385
+ }
386
+ ?>
387
+
388
+ <div class="wrap">
389
+ <?php if ( ! ES()->is_pro() && ! $insight ) { ?>
390
+ <a href="?page=es_reports&action=view&list=<?php echo esc_attr( $hash ); ?>&_wpnonce=<?php echo esc_attr( $_wpnonce ); ?>&insight=true" class="float-right top-10 relative ig-es-title-button px-2 py-2 mx-2 ig-es-imp-button cursor-pointer"><?php esc_html_e( 'Campaign Analytics', 'email-subscribers' ); ?></a>
391
+ <?php } ?>
392
+ </div>
393
+ <div class="mt-2 mb-2 inline-block relative top-20">
394
+ <span class="pt-3 pb-4 leading-5 tracking-wide text-gray-600"><?php echo esc_html( 'Viewed ' . $email_viewed_count . '/' . $total_email_sent ); ?>
395
+ </span>
396
+ </div>
397
+ <?php
398
+ }
399
+ return $view_activity_data;
400
+
401
+ }
402
+
403
+ /**
404
+ * Handling filtering and sorting for view activity table
405
+ */
406
+ public function es_view_activity_report_sort_and_filter() {
407
+ $hash = ig_es_get_request_data( 'list', '' );
408
+ $campaign_id = ig_es_get_request_data( 'campaign_id', '' );
409
+
410
+ ?>
411
+
412
+ <script type="text/javascript">
413
+
414
+ (function ($) {
415
+
416
+ $(document).ready(
417
+
418
+ function () {
419
+
420
+ $('#es_campaign_report').on('click', '.tablenav-pages a, .manage-column.sortable a, .manage-column.sorted a', function (e) {
421
+ e.preventDefault();
422
+ var query = this.search.substring(1);
423
+ var order = list.__query( query, 'order' ) || 'desc';
424
+ var orderby = list.__query( query, 'orderby' ) || 'opened_at';
425
+ $("input[name='order']").val(order);
426
+ $("input[name='orderby']").val(orderby);
427
+ check_filter_value();
428
+
429
+ });
430
+
431
+ $('#es-activity-report-filter').on('click', function (e) {
432
+ e.preventDefault();
433
+
434
+ check_filter_value();
435
+ });
436
+ });
437
+
438
+
439
+ list = {
440
+
441
+ /** AJAX call
442
+ *
443
+ * Send the call and replace table parts with updated version!
444
+ *
445
+ * @param object data The data to pass through AJAX
446
+ */
447
+ update: function (data) {
448
+
449
+ $.ajax({
450
+
451
+ url: ajaxurl,
452
+ data: $.extend(
453
+ {
454
+ action: 'ajax_fetch_report_list',
455
+ },
456
+ data
457
+ ),
458
+ beforeSend: function(){
459
+ $('#es_campaign_report table.wp-list-table.widefat.fixed.striped.table-view-list.reports tbody').addClass('animate-pulse').css({'filter': 'blur(1px)', '-webkit-filter' : 'blur(1px)'});
460
+ },
461
+ success: function (response) {
462
+ var response = $.parseJSON(response);
463
+
464
+ if (response.rows.length)
465
+ $('#the-list').html(response.rows);
466
+ if (response.column_headers.length)
467
+ $('#es_campaign_report thead tr, #es_campaign_report tfoot tr').html(response.column_headers);
468
+ },
469
+ error: function (err) {
470
+
471
+ }
472
+ }).always(function(){
473
+ $('#es_campaign_report table.wp-list-table.widefat.fixed.striped.table-view-list.reports tbody').removeClass('animate-pulse').css({'filter': 'blur(0px)', '-webkit-filter' : 'blur(0px)'});
474
+ });
475
+ },
476
+
477
+ /**
478
+ * Filter the URL Query to extract variables
479
+ *
480
+ * @see http://css-tricks.com/snippets/javascript/get-url-variables/
481
+ *
482
+ * @param string query The URL query part containing the variables
483
+ * @param string variable Name of the variable we want to get
484
+ *
485
+ * @return string|boolean The variable value if available, false else.
486
+ */
487
+ __query: function (query, variable) {
488
+
489
+ var vars = query.split("&");
490
+ for (var i = 0; i < vars.length; i++) {
491
+ var pair = vars[i].split("=");
492
+ if (pair[0] == variable)
493
+ return pair[1];
494
+ }
495
+ return false;
496
+ },
497
+ }
498
+
499
+
500
+ function check_filter_value( filter_value = '' ){
501
+ var country_code = $('#ig_es_filter_activity_report_by_country').val();
502
+ var report_activity_status = $('#ig_es_filter_activity_report_by_status').val();
503
+ var order = $("input[name='order']").val();
504
+ var orderby = $("input[name='orderby']").val();
505
+
506
+ data =
507
+ {
508
+ list : "<?php echo esc_html( $hash ); ?>",
509
+ campaign_id : <?php echo ( ! empty( $campaign_id ) ? esc_html( $campaign_id ) : 0 ); ?>,
510
+ order : order,
511
+ orderby : orderby,
512
+ country_code : country_code,
513
+ status : report_activity_status
514
+
515
+ };
516
+
517
+ list.update(data);
518
+ }
519
+ })(jQuery);
520
+
521
+ </script>
522
+ <?php
523
+ }
524
+
525
+
526
+ }
lite/includes/classes/class-es-campaigns-table.php CHANGED
@@ -325,7 +325,31 @@ class ES_Campaigns_Table extends ES_List_Table {
325
 
326
  return ES_Common::prepare_list_name_by_ids( $list_ids );
327
  } else {
328
- return '-';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  }
330
  break;
331
  case 'type':
325
 
326
  return ES_Common::prepare_list_name_by_ids( $list_ids );
327
  } else {
328
+ $type = isset( $item['type'] ) ? $item['type'] : '';
329
+ $list_ids = array();
330
+ if ( 'newsletter' === $type && ! empty( $item['meta'] ) ) {
331
+ $campaign_meta = maybe_unserialize( $item['meta'] );
332
+ $conditions = isset( $campaign_meta['list_conditions'] ) ? $campaign_meta['list_conditions']: array();
333
+ if ( ! empty( $conditions ) ) {
334
+ foreach ( $conditions as $i => $condition_group ) {
335
+ if ( ! empty( $condition_group ) ) {
336
+ foreach ( $condition_group as $j => $condition ) {
337
+ $condition_field = isset ( $condition['field'] ) ? $condition['field'] : '';
338
+ if ( '_lists__in' === $condition_field ) {
339
+ if ( ! empty( $condition['value'] ) && is_array( $condition['value'] ) ) {
340
+ $list_ids = array_merge( $list_ids, $condition['value'] );
341
+ }
342
+ }
343
+ }
344
+ }
345
+ }
346
+ }
347
+ }
348
+ if ( $list_ids ) {
349
+ return ES_Common::prepare_list_name_by_ids( $list_ids );
350
+ } else {
351
+ return '-';
352
+ }
353
  }
354
  break;
355
  case 'type':
lite/includes/classes/class-es-handle-subscription.php CHANGED
@@ -54,6 +54,7 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
54
  *
55
  */
56
  public $es_optin_type;
 
57
  /**
58
  * List Id
59
  *
@@ -62,6 +63,16 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
62
  *
63
  */
64
  public $list_ids;
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  * Nonce value
67
  *
@@ -132,8 +143,8 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
132
  add_action( 'wp_ajax_nopriv_es_add_subscriber', array( $this, 'process_request' ), 10 );
133
  }
134
 
135
- add_action( 'wp_ajax_ig_es_get_updated_subscription_nonce', array( $this, 'get_updated_subscription_nonce' ) );
136
- add_action( 'wp_ajax_nopriv_ig_es_get_updated_subscription_nonce', array( $this, 'get_updated_subscription_nonce' ) );
137
 
138
  $this->from_rainmaker = $from_rainmaker;
139
 
@@ -145,7 +156,7 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
145
  *
146
  * @since 4.6.7
147
  */
148
- public function get_updated_subscription_nonce() {
149
 
150
  $updated_nonce = wp_create_nonce( 'es-subscribe' );
151
 
@@ -153,6 +164,21 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
153
  'updated_nonce' => $updated_nonce,
154
  );
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  wp_send_json_success( $response );
157
  }
158
 
@@ -217,7 +243,7 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
217
  $this->first_name = $first_name;
218
  $this->last_name = $last_name;
219
  $this->email = $email;
220
- $this->list_ids = isset( $form_data['esfpx_lists'] ) ? $form_data['esfpx_lists'] : array();
221
  $this->es_nonce = isset( $form_data['esfpx_es-subscribe'] ) ? trim( $form_data['esfpx_es-subscribe'] ) : '';
222
  $this->form_id = isset( $form_data['esfpx_form_id'] ) ? trim( $form_data['esfpx_form_id'] ) : 0;
223
  $this->es_optin_type = get_option( 'ig_es_optin_type' );
@@ -230,93 +256,107 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
230
  $this->status = 'subscribed';
231
  }
232
 
233
- if ( count( $this->list_ids ) > 0 ) {
234
- /**
235
- * Check if subscribers exists?
236
- * - If yes, get id and save lists into ig_lists_contacts table
237
- * - If not, create contact and then save list
238
- */
239
- $contact_id = ES()->contacts_db->get_contact_id_by_email( $this->email );
240
- if ( ! $contact_id ) {
241
- $data = array();
242
- $data['first_name'] = $this->first_name;
243
- $data['last_name'] = $this->last_name;
244
- $data['source'] = 'form';
245
- $data['form_id'] = $this->form_id;
246
- $data['email'] = $this->email;
247
- $data['hash'] = $this->guid;
248
- $data['status'] = 'verified';
249
- $data['hash'] = $this->guid;
250
- $data['created_at'] = ig_get_current_date_time();
251
- $data['updated_at'] = null;
252
- $data['meta'] = null;
253
-
254
- $data = apply_filters( 'ig_es_add_subscriber_data', $data );
255
- if ( 'ERROR' === $data['status'] ) {
256
- $this->do_response( $validate_response );
257
- exit;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  }
259
 
260
- $contact_id = ES()->contacts_db->insert( $data );
 
 
 
 
 
 
 
 
 
 
 
 
 
261
 
262
- // do_action( 'ig_es_contact_added', $data);
263
 
264
- }
265
 
266
- $contact_lists = ES()->lists_contacts_db->get_list_ids_by_contact( $contact_id, 'subscribed' );
267
- if ( empty( array_diff( $this->list_ids, $contact_lists ) ) ) {
268
- $response['message'] = 'es_email_exists_notice';
269
- $this->do_response( $response );
270
- exit;
271
- }
272
- $optin_type = $this->is_double_optin ? IG_DOUBLE_OPTIN : IG_SINGLE_OPTIN;
273
- $list_contact_data = array(
274
- 'contact_id' => $contact_id,
275
- 'status' => $this->status,
276
- 'subscribed_at' => ( 'subscribed' === $this->status ) ? ig_get_current_date_time() : '',
277
- 'optin_type' => $optin_type,
278
- 'subscribed_ip' => '',
279
- );
280
 
281
- ES()->lists_contacts_db->add_contact_to_lists( $list_contact_data, $this->list_ids );
282
 
283
- if ( $contact_id ) {
 
284
 
285
- do_action( 'ig_es_contact_subscribe', $contact_id, $this->list_ids );
 
 
 
 
 
 
 
 
 
286
 
287
- $this->db_id = $contact_id;
 
 
 
 
 
288
 
289
- // Get comma(,) separated lists name based on ids.
290
- $list_name = ES_Common::prepare_list_name_by_ids( $this->list_ids );
291
 
292
- $merge_tags = array(
293
- 'email' => $this->email,
294
- 'contact_id' => $contact_id,
295
- 'name' => ES_Common::prepare_name_from_first_name_last_name( $this->first_name, $this->last_name ),
296
- 'first_name' => $this->first_name,
297
- 'last_name' => $this->last_name,
298
- 'guid' => $this->guid,
299
- 'list_name' => $list_name,
300
- 'list_ids' => $this->list_ids,
301
- );
302
 
303
- if ( $this->is_double_optin ) {
304
- $response = ES()->mailer->send_double_optin_email( $this->email, $merge_tags );
305
- $response['message'] = 'es_optin_success_message';
306
  } else {
307
- // Send Welcome Email
308
- ES()->mailer->send_welcome_email( $this->email, $merge_tags );
309
-
310
- // Send Notifications to admins
311
- ES()->mailer->send_add_new_contact_notification_to_admins( $merge_tags );
312
 
313
- $response['message'] = 'es_optin_success_message';
314
  }
315
-
316
- $response['status'] = 'SUCCESS';
317
  } else {
318
-
319
- $response['message'] = 'es_db_error_notice';
 
 
320
  }
321
  } else {
322
  $response['message'] = 'es_no_list_selected';
54
  *
55
  */
56
  public $es_optin_type;
57
+
58
  /**
59
  * List Id
60
  *
63
  *
64
  */
65
  public $list_ids;
66
+
67
+ /**
68
+ * List Hashes
69
+ *
70
+ * @since 4.6.12
71
+ * @var
72
+ *
73
+ */
74
+ public $list_hashes;
75
+
76
  /**
77
  * Nonce value
78
  *
143
  add_action( 'wp_ajax_nopriv_es_add_subscriber', array( $this, 'process_request' ), 10 );
144
  }
145
 
146
+ add_action( 'wp_ajax_ig_es_get_updated_subscription_data', array( $this, 'get_updated_subscription_data' ) );
147
+ add_action( 'wp_ajax_nopriv_ig_es_get_updated_subscription_data', array( $this, 'get_updated_subscription_data' ) );
148
 
149
  $this->from_rainmaker = $from_rainmaker;
150
 
156
  *
157
  * @since 4.6.7
158
  */
159
+ public function get_updated_subscription_data() {
160
 
161
  $updated_nonce = wp_create_nonce( 'es-subscribe' );
162
 
164
  'updated_nonce' => $updated_nonce,
165
  );
166
 
167
+ $list_ids = ig_es_get_request_data( 'list_ids', array() );
168
+ $list_hashes = array();
169
+ if ( ! empty( $list_ids ) ) {
170
+ $lists = ES()->lists_db->get_lists_by_id( $list_ids );
171
+ if ( ! empty( $lists ) ) {
172
+ foreach ( $lists as $list ) {
173
+ if ( ! empty( $list ) && ! empty( $list['id'] ) ) {
174
+ $list_hashes[ $list['id'] ] = $list['hash'];
175
+ }
176
+ }
177
+ }
178
+ }
179
+
180
+ $response['list_hashes'] = $list_hashes;
181
+
182
  wp_send_json_success( $response );
183
  }
184
 
243
  $this->first_name = $first_name;
244
  $this->last_name = $last_name;
245
  $this->email = $email;
246
+ $this->list_hashes = isset( $form_data['esfpx_lists'] ) ? $form_data['esfpx_lists'] : array();
247
  $this->es_nonce = isset( $form_data['esfpx_es-subscribe'] ) ? trim( $form_data['esfpx_es-subscribe'] ) : '';
248
  $this->form_id = isset( $form_data['esfpx_form_id'] ) ? trim( $form_data['esfpx_form_id'] ) : 0;
249
  $this->es_optin_type = get_option( 'ig_es_optin_type' );
256
  $this->status = 'subscribed';
257
  }
258
 
259
+ if ( ! empty( $this->list_hashes ) ) {
260
+
261
+ $list_hash_str = ES()->lists_db->prepare_for_in_query( $this->list_hashes );
262
+ $where = "hash IN ($list_hash_str)";
263
+ $this->list_ids = ES()->lists_db->get_column_by_condition( 'id', $where );
264
+
265
+ if ( ! empty( $this->list_ids ) ) {
266
+
267
+
268
+ /**
269
+ * Check if subscribers exists?
270
+ * - If yes, get id and save lists into ig_lists_contacts table
271
+ * - If not, create contact and then save list
272
+ */
273
+ $contact_id = ES()->contacts_db->get_contact_id_by_email( $this->email );
274
+ if ( ! $contact_id ) {
275
+ $data = array();
276
+ $data['first_name'] = $this->first_name;
277
+ $data['last_name'] = $this->last_name;
278
+ $data['source'] = 'form';
279
+ $data['form_id'] = $this->form_id;
280
+ $data['email'] = $this->email;
281
+ $data['hash'] = $this->guid;
282
+ $data['status'] = 'verified';
283
+ $data['hash'] = $this->guid;
284
+ $data['created_at'] = ig_get_current_date_time();
285
+ $data['updated_at'] = null;
286
+ $data['meta'] = null;
287
+
288
+ $data = apply_filters( 'ig_es_add_subscriber_data', $data );
289
+ if ( 'ERROR' === $data['status'] ) {
290
+ $this->do_response( $validate_response );
291
+ exit;
292
+ }
293
+
294
+ $contact_id = ES()->contacts_db->insert( $data );
295
+
296
+ // do_action( 'ig_es_contact_added', $data);
297
+
298
  }
299
 
300
+ $contact_lists = ES()->lists_contacts_db->get_list_ids_by_contact( $contact_id, 'subscribed' );
301
+ if ( empty( array_diff( $this->list_ids, $contact_lists ) ) ) {
302
+ $response['message'] = 'es_email_exists_notice';
303
+ $this->do_response( $response );
304
+ exit;
305
+ }
306
+ $optin_type = $this->is_double_optin ? IG_DOUBLE_OPTIN : IG_SINGLE_OPTIN;
307
+ $list_contact_data = array(
308
+ 'contact_id' => $contact_id,
309
+ 'status' => $this->status,
310
+ 'subscribed_at' => ( 'subscribed' === $this->status ) ? ig_get_current_date_time() : '',
311
+ 'optin_type' => $optin_type,
312
+ 'subscribed_ip' => '',
313
+ );
314
 
315
+ ES()->lists_contacts_db->add_contact_to_lists( $list_contact_data, $this->list_ids );
316
 
317
+ if ( $contact_id ) {
318
 
319
+ do_action( 'ig_es_contact_subscribe', $contact_id, $this->list_ids );
 
 
 
 
 
 
 
 
 
 
 
 
 
320
 
321
+ $this->db_id = $contact_id;
322
 
323
+ // Get comma(,) separated lists name based on ids.
324
+ $list_name = ES_Common::prepare_list_name_by_ids( $this->list_ids );
325
 
326
+ $merge_tags = array(
327
+ 'email' => $this->email,
328
+ 'contact_id' => $contact_id,
329
+ 'name' => ES_Common::prepare_name_from_first_name_last_name( $this->first_name, $this->last_name ),
330
+ 'first_name' => $this->first_name,
331
+ 'last_name' => $this->last_name,
332
+ 'guid' => $this->guid,
333
+ 'list_name' => $list_name,
334
+ 'list_ids' => $this->list_ids,
335
+ );
336
 
337
+ if ( $this->is_double_optin ) {
338
+ $response = ES()->mailer->send_double_optin_email( $this->email, $merge_tags );
339
+ $response['message'] = 'es_optin_success_message';
340
+ } else {
341
+ // Send Welcome Email
342
+ ES()->mailer->send_welcome_email( $this->email, $merge_tags );
343
 
344
+ // Send Notifications to admins
345
+ ES()->mailer->send_add_new_contact_notification_to_admins( $merge_tags );
346
 
347
+ $response['message'] = 'es_optin_success_message';
348
+ }
 
 
 
 
 
 
 
 
349
 
350
+ $response['status'] = 'SUCCESS';
 
 
351
  } else {
 
 
 
 
 
352
 
353
+ $response['message'] = 'es_db_error_notice';
354
  }
 
 
355
  } else {
356
+ $response['status'] = 'SUCCESS';
357
+ $response['message'] = 'es_optin_success_message';
358
+ $this->do_response( $response );
359
+ exit;
360
  }
361
  } else {
362
  $response['message'] = 'es_no_list_selected';
lite/includes/classes/class-es-newsletters.php CHANGED
@@ -67,7 +67,7 @@ class ES_Newsletters {
67
  $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
68
 
69
  // Check if user has added required data for creating broadcast.
70
- if ( ! empty( $broadcast_data['subject'] ) && ! empty( $broadcast_data['body'] ) && ! empty( $list_id ) && ! empty( $subject ) ) {
71
  $broadcast_data['base_template_id'] = $template_id;
72
  $broadcast_data['list_ids'] = $list_id;
73
  $broadcast_data['status'] = IG_ES_CAMPAIGN_STATUS_SCHEDULED;
@@ -77,6 +77,10 @@ class ES_Newsletters {
77
  $meta['es_schedule_time'] = ! empty( $broadcast_data['es_schedule_time'] ) ? $broadcast_data['es_schedule_time'] : '';
78
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
79
 
 
 
 
 
80
  $broadcast_data['meta'] = maybe_serialize( $meta );
81
 
82
  self::es_send_email_callback( $broadcast_data );
@@ -122,12 +126,6 @@ class ES_Newsletters {
122
  'message' => $message,
123
  'type' => 'error',
124
  );
125
- } elseif ( empty( $list_id ) ) {
126
- $message = __( 'Please select list.', 'email-subscribers' );
127
- $message_data = array(
128
- 'message' => $message,
129
- 'type' => 'error',
130
- );
131
  } elseif ( empty( $subject ) ) {
132
  $message = __( 'Please add the subject', 'email-subscribers' );
133
  $message_data = array(
@@ -387,21 +385,20 @@ class ES_Newsletters {
387
  </select>
388
  </div>
389
  <div class="block py-2 mx-4 ">
390
- <label for="recipients" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Recipients', 'email-subscribers' ); ?></label>
391
- <select <?php echo esc_attr( $select_list_attr ); ?> class="block w-full h-8 mt-1 text-sm rounded-md cursor-pointer h-9 <?php echo esc_attr( $select_list_class ); ?>" name="<?php echo esc_attr( $select_list_name ); ?>" id="ig_es_broadcast_list_ids">
392
- <?php
393
- echo wp_kses( $lists, $allowedtags );
394
- ?>
395
- </select>
396
-
397
  <?php
398
  do_action( 'ig_es_show_campaign_rules', $broadcast_data );
399
  ?>
400
-
401
  <!-- Hidden field to detect whether admin has update campaign lists or not during editing of campaign -->
402
  <input type="hidden" name="broadcast_data[existing_list_ids]" value="<?php echo esc_attr( $list_ids ); ?>">
403
  <div class="block mt-1">
404
- <span id="ig_es_total_contacts"></span>
 
 
 
 
 
 
 
405
  </div>
406
  </div>
407
 
@@ -751,6 +748,9 @@ class ES_Newsletters {
751
  $broadcast_data['status'] = ! empty( $broadcast_data['status'] ) ? 1 : 0;
752
  $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
753
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
 
 
 
754
  $broadcast_data['meta'] = maybe_serialize( $meta );
755
 
756
  $broadcast_data['type'] = 'newsletter';
67
  $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
68
 
69
  // Check if user has added required data for creating broadcast.
70
+ if ( ! empty( $broadcast_data['subject'] ) && ! empty( $broadcast_data['body'] ) && ! empty( $subject ) ) {
71
  $broadcast_data['base_template_id'] = $template_id;
72
  $broadcast_data['list_ids'] = $list_id;
73
  $broadcast_data['status'] = IG_ES_CAMPAIGN_STATUS_SCHEDULED;
77
  $meta['es_schedule_time'] = ! empty( $broadcast_data['es_schedule_time'] ) ? $broadcast_data['es_schedule_time'] : '';
78
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
79
 
80
+ if ( ! empty( $meta['list_conditions'] ) ) {
81
+ $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
82
+ }
83
+
84
  $broadcast_data['meta'] = maybe_serialize( $meta );
85
 
86
  self::es_send_email_callback( $broadcast_data );
126
  'message' => $message,
127
  'type' => 'error',
128
  );
 
 
 
 
 
 
129
  } elseif ( empty( $subject ) ) {
130
  $message = __( 'Please add the subject', 'email-subscribers' );
131
  $message_data = array(
385
  </select>
386
  </div>
387
  <div class="block py-2 mx-4 ">
 
 
 
 
 
 
 
388
  <?php
389
  do_action( 'ig_es_show_campaign_rules', $broadcast_data );
390
  ?>
 
391
  <!-- Hidden field to detect whether admin has update campaign lists or not during editing of campaign -->
392
  <input type="hidden" name="broadcast_data[existing_list_ids]" value="<?php echo esc_attr( $list_ids ); ?>">
393
  <div class="block mt-1">
394
+ <span id="ig_es_total_contacts">
395
+ <h2 class='text-sm font-normal text-gray-600'>
396
+ <span class=""><?php echo esc_html__( 'Total recipients:', 'email-subscribers' ); ?> </span>
397
+ <span class='text-base font-medium text-gray-700'>
398
+ <span class='ig_es_list_contacts_count'></span>
399
+ </span>
400
+ </h2>
401
+ </span>
402
  </div>
403
  </div>
404
 
748
  $broadcast_data['status'] = ! empty( $broadcast_data['status'] ) ? 1 : 0;
749
  $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
750
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
751
+ if ( ! empty( $meta['list_conditions'] ) ) {
752
+ $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
753
+ }
754
  $broadcast_data['meta'] = maybe_serialize( $meta );
755
 
756
  $broadcast_data['type'] = 'newsletter';
lite/includes/classes/class-es-post-notifications.php CHANGED
@@ -364,6 +364,9 @@ class ES_Post_Notifications_Table {
364
  </div>
365
  </td>
366
  </tr>
 
 
 
367
  <?php do_action( 'es_after_post_notification_template', $id ); ?>
368
  <?php if ( ! $is_new ) { ?>
369
  <tr class="border-b border-gray-100">
364
  </div>
365
  </td>
366
  </tr>
367
+ <?php
368
+ do_action( 'ig_es_show_campaign_rules', array() );
369
+ ?>
370
  <?php do_action( 'es_after_post_notification_template', $id ); ?>
371
  <?php if ( ! $is_new ) { ?>
372
  <tr class="border-b border-gray-100">
lite/includes/classes/class-es-reports-table.php CHANGED
@@ -20,7 +20,7 @@ class ES_Reports_Table extends ES_List_Table {
20
  )
21
  );
22
 
23
- add_action( 'ig_es_view_activity_table_html', array( $this, 'view_activity_report_table' ), 10, 3 );
24
  add_action( 'admin_footer', array( $this, 'display_preview_email' ), 10 );
25
  }
26
 
@@ -45,8 +45,8 @@ class ES_Reports_Table extends ES_List_Table {
45
  } else {
46
  $action = ig_es_get_request_data( 'action' );
47
  if ( 'view' === $action ) {
48
- $list = ig_es_get_request_data( 'list' );
49
- $this->view_list( $list );
50
  } else {
51
  ?>
52
  <div class="wrap pt-4 font-sans">
@@ -118,173 +118,7 @@ class ES_Reports_Table extends ES_List_Table {
118
 
119
  add_screen_option( $option, $args );
120
 
121
- }
122
-
123
- public function prepare_header_footer_row() {
124
-
125
- ?>
126
- <tr>
127
- <th width="8%" class="py-3 pl-4 es_reports_table_header"><?php esc_html_e( 'Sr No', 'email-subscribers' ); ?></th>
128
- <th width="24%" class="py-3 pl-4 es_reports_table_header"><?php esc_html_e( 'Email', 'email-subscribers' ); ?></th>
129
- <th width="12%" class="py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Status', 'email-subscribers' ); ?></th>
130
- <th width="22%" class="py-3 pl-2 es_reports_table_header"><?php esc_html_e( 'Sent Date', 'email-subscribers' ); ?></th>
131
- <th width="22%" class="py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Viewed Date', 'email-subscribers' ); ?></th>
132
- </tr>
133
-
134
- <?php
135
- }
136
-
137
- /**
138
- * Get view activity table data
139
- *
140
- */
141
- public function view_list( $hash ) {
142
-
143
- $emails = ES_DB_Sending_Queue::get_emails_by_hash( $hash );
144
- $email_viewed_count = ES_DB_Sending_Queue::get_viewed_count_by_hash( $hash );
145
- $total_email_sent = ES_DB_Sending_Queue::get_total_email_count_by_hash( $hash );
146
-
147
- $insight = ig_es_get_request_data( 'insight', '' );
148
- $_wpnonce = ig_es_get_request_data( '_wpnonce', '' );
149
-
150
- if ( ES()->is_pro() || $insight ) {
151
- do_action( 'ig_es_view_report_data', $hash );
152
- }
153
- ?>
154
- <div class="wrap">
155
- <?php if ( ! ES()->is_pro() && ! $insight ) { ?>
156
- <a href="?page=es_reports&action=view&list=<?php echo esc_attr( $hash ); ?>&_wpnonce=<?php echo esc_attr( $_wpnonce ); ?>&insight=true" class="float-right ig-es-title-button px-2 py-2 mx-2 ig-es-imp-button cursor-pointer"><?php esc_html_e( 'Campaign Analytics', 'email-subscribers' ); ?></a>
157
- <?php } ?>
158
- </div>
159
-
160
- <?php
161
- do_action( 'ig_es_view_activity_table_html', $email_viewed_count, $total_email_sent, $emails ) ;
162
- }
163
-
164
- /**
165
- * Display view activity table
166
- *
167
- * @since 4.6.9
168
- *
169
- */
170
- public function view_activity_report_table( $email_viewed_count, $total_email_sent, $view_activity_data ) {
171
-
172
- ?>
173
- <div class="mt-6 mb-2 max-w-7xl">
174
- <div class="pt-3">
175
- <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php esc_html_e( 'View activity ', 'email-subscribers' ); ?></span>
176
- </div>
177
- </div>
178
- <div class="mt-2 mb-2 block">
179
- <span class="pt-3 pb-4 leading-5 tracking-wide text-gray-600"><?php echo esc_html( 'Viewed ' . $email_viewed_count . '/' . $total_email_sent ); ?>
180
- </span>
181
- </div>
182
-
183
- <div class="mb-2 max-w-7xl flex">
184
- <div class="flex w-full bg-white shadow rounded-md break-all">
185
-
186
- <form name="frm_es_display" method="post">
187
- <table class="w-full table-fixed">
188
- <thead>
189
- <?php echo wp_kses_post( $this->prepare_header_footer_row() ); ?>
190
- </thead>
191
- <tbody>
192
- <?php echo wp_kses_post( $this->prepare_body( $view_activity_data ) ); ?>
193
- </tbody>
194
- <tfoot>
195
- <?php echo wp_kses_post( $this->prepare_header_footer_row() ); ?>
196
- </tfoot>
197
- </table>
198
- </form>
199
- </div>
200
- </div>
201
-
202
- <?php
203
- }
204
-
205
-
206
- public function prepare_body( $view_activity_data ) {
207
-
208
- $i = 1;
209
- foreach ( $view_activity_data as $key => $email ) {
210
-
211
- $email_id = ! empty( $email['email'] ) ? $email['email'] : ( ! empty( $email['es_deliver_emailmail'] ) ? $email['es_deliver_emailmail'] : '' );
212
- $status = ! empty( $email['status'] ) ? $email['status'] : ( ! empty( $email['es_deliver_sentstatus'] ) ? $email['es_deliver_sentstatus'] : '' );
213
- $sent_at = ! empty( $email['sent_at'] ) ? $email['sent_at'] : ( ! empty( $email['es_deliver_sentdate'] ) ? $email['es_deliver_sentdate'] : '' );
214
- $opened = ! empty( $email['opened'] ) ? $email['opened'] : ( ! empty( $email['es_deliver_status'] ) && 'Viewed' === $email['es_deliver_status'] ? 1 : 0 );
215
- $opened_at = ! empty( $email['opened_at'] ) ? $email['opened_at'] : ( ! empty( $email['es_deliver_viewdate'] ) ? $email['es_deliver_viewdate'] : '' );
216
-
217
- if ( 'Sent' === $status ) {
218
- $status = ( $opened ) ? 'Opened' : $status;
219
- }
220
-
221
- ?>
222
-
223
- <tr>
224
- <td class="pl-6 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo esc_html( $i ); ?></td>
225
- <td class="pl-4 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><?php echo esc_html( $email_id ); ?></td>
226
- <td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500">
227
- <span style="color:#03a025;font-weight:bold;">
228
- <?php
229
- switch ( $status ) {
230
- case 'Sent':
231
- ?>
232
- <svg class="h-6 w-6 text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
233
- <title><?php echo esc_html__( 'Sent', 'email-subscribers' ); ?></title>
234
- <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
235
- </svg>
236
- <?php
237
- break;
238
- case 'In Queue':
239
- ?>
240
- <svg class=" h-6 w-6 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
241
- <title><?php echo esc_html__( 'In Queue', 'email-subscribers' ); ?></title>
242
- <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/>
243
- </svg>
244
- <?php
245
- break;
246
- case 'Sending':
247
- ?>
248
- <svg class=" h-6 w-6 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
249
- <title><?php echo esc_html__( 'Sending', 'email-subscribers' ); ?></title>
250
- <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-8.707l-3-3a1 1 0 00-1.414 1.414L10.586 9H7a1 1 0 100 2h3.586l-1.293 1.293a1 1 0 101.414 1.414l3-3a1 1 0 000-1.414z" clip-rule="evenodd"/>
251
- </svg>
252
- <?php
253
- break;
254
- case 'Opened':
255
- ?>
256
- <svg xmlns="http://www.w3.org/2000/svg" class="" width="28" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
257
- <title><?php echo esc_html__( 'Opened', 'email-subscribers' ); ?></title>
258
- <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
259
- <path d="M7 12l5 5l10 -10" />
260
- <path d="M2 12l5 5m5 -5l5 -5" />
261
- </svg>
262
- <?php
263
- break;
264
- case '':
265
- ?>
266
- <i class="dashicons dashicons-es dashicons-minus"/>
267
- <?php
268
- break;
269
- default:
270
- echo esc_html( $status );
271
- break;
272
-
273
- }
274
- ?>
275
- </span>
276
- </td>
277
-
278
- <td class="pl-2 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $sent_at ) ); ?></td>
279
- <td class="pl-6 pr-1 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $opened_at ) ); ?></td>
280
- </tr>
281
-
282
- <?php
283
- $i ++;
284
- }
285
-
286
- }
287
-
288
 
289
  /** Text displayed when no list data is available */
290
  public function no_items() {
@@ -594,8 +428,6 @@ class ES_Reports_Table extends ES_List_Table {
594
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
595
  $message = __( 'You do not have permission to view notification', 'email-subscribers' );
596
  ES_Common::show_message( $message, 'error' );
597
- } else {
598
- $this->view_list( ig_es_get_request_data( 'list' ) );
599
  }
600
  } elseif ( 'delete' === $this->current_action() ) {
601
 
@@ -673,7 +505,12 @@ class ES_Reports_Table extends ES_List_Table {
673
  <?php
674
  $allowedtags = ig_es_allowed_html_tags_in_esc();
675
  add_filter( 'safe_style_css', 'ig_es_allowed_css_style' );
676
- $campaign_report_status = ES_Common::prepare_campaign_report_statuses_dropdown_options( $filter_by_status, __( 'All Status', 'email-subscribers' ) );
 
 
 
 
 
677
  echo wp_kses( $campaign_report_status, $allowedtags );
678
  ?>
679
  </select>
20
  )
21
  );
22
 
23
+
24
  add_action( 'admin_footer', array( $this, 'display_preview_email' ), 10 );
25
  }
26
 
45
  } else {
46
  $action = ig_es_get_request_data( 'action' );
47
  if ( 'view' === $action ) {
48
+ $view_report = new ES_Campaign_Report();
49
+ $view_report->es_campaign_report_callback();
50
  } else {
51
  ?>
52
  <div class="wrap pt-4 font-sans">
118
 
119
  add_screen_option( $option, $args );
120
 
121
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
 
123
  /** Text displayed when no list data is available */
124
  public function no_items() {
428
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
429
  $message = __( 'You do not have permission to view notification', 'email-subscribers' );
430
  ES_Common::show_message( $message, 'error' );
 
 
431
  }
432
  } elseif ( 'delete' === $this->current_action() ) {
433
 
505
  <?php
506
  $allowedtags = ig_es_allowed_html_tags_in_esc();
507
  add_filter( 'safe_style_css', 'ig_es_allowed_css_style' );
508
+ $statuses = array(
509
+ 'Sent' => __( 'Completed', 'email-subscribers' ),
510
+ 'In Queue' => __( 'In Queue', 'email-subscribers' ),
511
+ 'Sending' => __( 'Sending', 'email-subscribers' ),
512
+ );
513
+ $campaign_report_status = ES_Common::prepare_campaign_report_statuses_dropdown_options( $statuses, $filter_by_status, __( 'All Status', 'email-subscribers' ) );
514
  echo wp_kses( $campaign_report_status, $allowedtags );
515
  ?>
516
  </select>
lite/includes/classes/class-ig-es-subscriber-query.php CHANGED
@@ -164,12 +164,7 @@ class IG_ES_Subscribers_Query {
164
 
165
 
166
  $this->args = apply_filters( 'ig_es_subscriber_query_args', $this->args );
167
-
168
- if ( false !== $this->args['lists'] ) {
169
- $join = "LEFT JOIN {$wpbd->prefix}ig_lists_contacts AS lists_subscribers ON subscribers.id = lists_subscribers.contact_id";
170
- $joins[] = $join;
171
- }
172
-
173
  if ( $this->args['conditions'] ) {
174
  $cond = array();
175
 
@@ -182,7 +177,7 @@ class IG_ES_Subscribers_Query {
182
  $operator = isset( $condition['operator'] ) ? $condition['operator'] : ( isset( $condition[1] ) ? $condition[1] : null );
183
  $value = isset( $condition['value'] ) ? $condition['value'] : ( isset( $condition[2] ) ? $condition[2] : null );
184
  // something is not set => skip
185
- if ( is_null( $field ) || is_null( $operator ) || is_null( $value ) ) {
186
  unset( $this->args['conditions'][ $i ][ $j ] );
187
  continue;
188
  }
@@ -203,22 +198,30 @@ class IG_ES_Subscribers_Query {
203
  if ( ! empty( $and_conditions ) ) {
204
  foreach ( $and_conditions as $j => $condition ) {
205
 
206
- $field = isset( $condition['field'] ) ? $condition['field'] : $condition[0];
207
- $operator = isset( $condition['operator'] ) ? $condition['operator'] : $condition[1];
208
- $value = isset( $condition['value'] ) ? $condition['value'] : $condition[2];
209
 
210
  if ( ! in_array( $field, $this->action_fields, true ) ) {
211
  $sub_cond[] = $this->get_condition( $field, $operator, $value );
212
  } else {
213
 
214
- $value = $this->get_campaign_ids_from_value( $value );
215
 
216
  $alias = 'actions' . $field . '_' . $i . '_' . $j;
217
 
218
  if ( '_lists__in' === $field ) {
219
-
220
- $sub_cond[] = "subscribers.id IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
221
-
 
 
 
 
 
 
 
 
222
  } elseif ( 0 === strpos( $field, '_sent' ) ) {
223
 
224
  $join = "LEFT JOIN {$wpbd->prefix}ig_actions AS $alias ON $alias.type = " . IG_MESSAGE_SENT . " AND subscribers.id = $alias.contact_id";
@@ -307,6 +310,7 @@ class IG_ES_Subscribers_Query {
307
 
308
  $joins[] = $join;
309
  }
 
310
  }
311
  }
312
  }
@@ -321,6 +325,9 @@ class IG_ES_Subscribers_Query {
321
  $wheres[] = 'AND ( ' . implode( ' AND ', $cond ) . ' )';
322
  }
323
 
 
 
 
324
  if ( ! is_bool( $this->args['lists'] ) ) {
325
  // unassigned members if NULL
326
  if ( is_array( $this->args['lists'] ) ) {
@@ -605,7 +612,7 @@ class IG_ES_Subscribers_Query {
605
 
606
  }
607
 
608
- private function get_campaign_ids_from_value( $value ) {
609
  if ( ! is_array( $value ) ) {
610
  $value = explode( ',', $value );
611
  }
164
 
165
 
166
  $this->args = apply_filters( 'ig_es_subscriber_query_args', $this->args );
167
+
 
 
 
 
 
168
  if ( $this->args['conditions'] ) {
169
  $cond = array();
170
 
177
  $operator = isset( $condition['operator'] ) ? $condition['operator'] : ( isset( $condition[1] ) ? $condition[1] : null );
178
  $value = isset( $condition['value'] ) ? $condition['value'] : ( isset( $condition[2] ) ? $condition[2] : null );
179
  // something is not set => skip
180
+ if ( is_null( $field ) || is_null( $operator ) ) {
181
  unset( $this->args['conditions'][ $i ][ $j ] );
182
  continue;
183
  }
198
  if ( ! empty( $and_conditions ) ) {
199
  foreach ( $and_conditions as $j => $condition ) {
200
 
201
+ $field = isset( $condition['field'] ) ? $condition['field'] : ( isset( $condition[0] ) ? $condition[0] : null );
202
+ $operator = isset( $condition['operator'] ) ? $condition['operator'] : ( isset( $condition[1] ) ? $condition[1] : null );
203
+ $value = isset( $condition['value'] ) ? $condition['value'] : ( isset( $condition[2] ) ? $condition[2] : null );
204
 
205
  if ( ! in_array( $field, $this->action_fields, true ) ) {
206
  $sub_cond[] = $this->get_condition( $field, $operator, $value );
207
  } else {
208
 
209
+ $value = $this->remove_empty_values( $value );
210
 
211
  $alias = 'actions' . $field . '_' . $i . '_' . $j;
212
 
213
  if ( '_lists__in' === $field ) {
214
+
215
+ if ( $value ) {
216
+ $sub_cond[] = "subscribers.id IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
217
+ }
218
+ } elseif ( '_lists__not_in' === $field ) {
219
+
220
+ if ( $value ) {
221
+ $sub_cond[] = "subscribers.id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
222
+ } else {
223
+ $sub_cond[] = "subscribers.id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id <> 0 )";
224
+ }
225
  } elseif ( 0 === strpos( $field, '_sent' ) ) {
226
 
227
  $join = "LEFT JOIN {$wpbd->prefix}ig_actions AS $alias ON $alias.type = " . IG_MESSAGE_SENT . " AND subscribers.id = $alias.contact_id";
310
 
311
  $joins[] = $join;
312
  }
313
+
314
  }
315
  }
316
  }
325
  $wheres[] = 'AND ( ' . implode( ' AND ', $cond ) . ' )';
326
  }
327
 
328
+ $joins[] = "LEFT JOIN {$wpbd->prefix}ig_lists_contacts AS lists_subscribers ON subscribers.id = lists_subscribers.contact_id";
329
+ $wheres[] = "AND lists_subscribers.status IN( 'subscribed', 'confirmed' )";
330
+
331
  if ( ! is_bool( $this->args['lists'] ) ) {
332
  // unassigned members if NULL
333
  if ( is_array( $this->args['lists'] ) ) {
612
 
613
  }
614
 
615
+ private function remove_empty_values( $value ) {
616
  if ( ! is_array( $value ) ) {
617
  $value = explode( ',', $value );
618
  }
lite/includes/db/class-es-db-campaigns.php CHANGED
@@ -783,10 +783,16 @@ class ES_DB_Campaigns extends ES_DB {
783
 
784
  $where = '';
785
 
786
- if ( ! empty( $args['exclude_type'] ) ) {
787
- $type_count = count( $args['exclude_type'] );
788
  $type_placeholders = array_fill( 0, $type_count, '%s' );
789
- $where .= $wpbd->prepare( 'type NOT IN( ' . implode( ',', $type_placeholders ) . ' )', $args['exclude_type'] );
 
 
 
 
 
 
790
  }
791
 
792
  if ( ! empty( $args['status'] ) ) {
783
 
784
  $where = '';
785
 
786
+ if ( ! empty( $args['include_types'] ) ) {
787
+ $type_count = count( $args['include_types'] );
788
  $type_placeholders = array_fill( 0, $type_count, '%s' );
789
+ $where .= $wpbd->prepare( 'type IN( ' . implode( ',', $type_placeholders ) . ' )', $args['include_types'] );
790
+ }
791
+
792
+ if ( ! empty( $args['exclude_types'] ) ) {
793
+ $type_count = count( $args['exclude_types'] );
794
+ $type_placeholders = array_fill( 0, $type_count, '%s' );
795
+ $where .= $wpbd->prepare( 'type NOT IN( ' . implode( ',', $type_placeholders ) . ' )', $args['exclude_types'] );
796
  }
797
 
798
  if ( ! empty( $args['status'] ) ) {
lite/includes/db/class-es-db-lists.php CHANGED
@@ -194,6 +194,35 @@ class ES_DB_Lists extends ES_DB {
194
  return $list;
195
  }
196
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  /**
198
  * Get all lists name by contact_id
199
  *
194
  return $list;
195
  }
196
 
197
+ /**
198
+ * Get list by id
199
+ *
200
+ * @param array $list_ids List IDs.
201
+ *
202
+ * @return bool/array Returns lists array if list exists else false.
203
+ *
204
+ * @since 4.6.12
205
+ */
206
+ public function get_lists_by_id( $list_ids = array() ) {
207
+
208
+ global $wpdb;
209
+
210
+ if ( empty( $list_ids ) ) {
211
+ return array();
212
+ }
213
+
214
+ // Check if we have got array of list ids.
215
+ if ( is_array( $list_ids ) ) {
216
+ $list_ids_str = implode( ',', $list_ids );
217
+ } else {
218
+ $list_ids_str = $list_ids;
219
+ }
220
+
221
+ $where = "id IN ({$list_ids_str})";
222
+
223
+ return $this->get_by_conditions( $where );
224
+ }
225
+
226
  /**
227
  * Get all lists name by contact_id
228
  *
lite/includes/db/class-es-db-sending-queue.php CHANGED
@@ -279,7 +279,7 @@ class ES_DB_Sending_Queue {
279
 
280
  $is_inserted = false;
281
 
282
- if ( empty( $mailing_queue_id ) || empty( $mailing_queue_hash ) || empty( $campaign_id ) || empty( $list_ids ) ) {
283
  return $is_inserted;
284
  }
285
 
@@ -735,4 +735,30 @@ class ES_DB_Sending_Queue {
735
  return $emails_id_map;
736
  }
737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
738
  }
279
 
280
  $is_inserted = false;
281
 
282
+ if ( empty( $mailing_queue_id ) || empty( $mailing_queue_hash ) || empty( $campaign_id ) ) {
283
  return $is_inserted;
284
  }
285
 
735
  return $emails_id_map;
736
  }
737
 
738
+
739
+ /**
740
+ * Get Queue data
741
+ *
742
+ * @return array
743
+ *
744
+ * @since 4.6.12
745
+ */
746
+ public static function get_queue_data( $campaign_id = '', $message_id = '' ) {
747
+ global $wpdb;
748
+
749
+ $emails = array();
750
+ if ( ! empty( $message_id ) && ! empty( $campaign_id ) ) {
751
+ $emails = $wpdb->get_results(
752
+ $wpdb->prepare(
753
+ "SELECT * FROM {$wpdb->prefix}ig_sending_queue WHERE campaign_id = %d AND mailing_queue_id = %d AND contact_id NOT IN ( SELECT contact_id FROM {$wpdb->prefix}ig_actions WHERE campaign_id = %d AND message_id = %d )",
754
+ array( $campaign_id, $message_id, $campaign_id, $message_id )
755
+ ),
756
+ ARRAY_A
757
+ );
758
+ }
759
+
760
+ return $emails;
761
+ }
762
+
763
+
764
  }
lite/includes/es-core-functions.php CHANGED
@@ -720,6 +720,10 @@ if ( ! function_exists( 'ig_es_allowed_html_tags_in_esc' ) ) {
720
  function ig_es_allowed_html_tags_in_esc() {
721
  $context_allowed_tags = wp_kses_allowed_html('post');
722
  $custom_allowed_tags = array(
 
 
 
 
723
  'select' => array(
724
  'class' => true,
725
  'name' => true,
@@ -731,7 +735,10 @@ if ( ! function_exists( 'ig_es_allowed_html_tags_in_esc' ) ) {
731
  'tab-*' => true,
732
  'multiple' => true,
733
  'aria-*' => true,
734
-
 
 
 
735
  ),
736
  'option' => array(
737
  'class' => true,
@@ -829,6 +836,9 @@ if ( ! function_exists( 'ig_es_allowed_html_tags_in_esc' ) ) {
829
  'href' => true,
830
  'media' => true,
831
  ),
 
 
 
832
  );
833
  $allowedtags = array_merge_recursive( $context_allowed_tags, $custom_allowed_tags );
834
 
720
  function ig_es_allowed_html_tags_in_esc() {
721
  $context_allowed_tags = wp_kses_allowed_html('post');
722
  $custom_allowed_tags = array(
723
+ 'div' => array(
724
+ 'x-data' => true,
725
+ 'x-show' => true,
726
+ ),
727
  'select' => array(
728
  'class' => true,
729
  'name' => true,
735
  'tab-*' => true,
736
  'multiple' => true,
737
  'aria-*' => true,
738
+ 'disabled' => true,
739
+ ),
740
+ 'optgroup' => array(
741
+ 'label' => true,
742
  ),
743
  'option' => array(
744
  'class' => true,
836
  'href' => true,
837
  'media' => true,
838
  ),
839
+ 'a' => array(
840
+ 'x-on:click' => true,
841
+ ),
842
  );
843
  $allowedtags = array_merge_recursive( $context_allowed_tags, $custom_allowed_tags );
844
 
lite/includes/pro-features.php CHANGED
@@ -34,6 +34,7 @@ add_action( 'media_buttons', 'ig_es_upsell_add_attachment_feature' );
34
  // Upsell existing wp user import feature.
35
  add_action( 'ig_es_subscriber_import_method_tab_heading', 'ig_es_upsell_existing_wp_user_import_feature' );
36
 
 
37
  /**
38
  * Promote SMTP mailer for free
39
  *
@@ -1530,3 +1531,67 @@ function ig_es_upsell_existing_wp_user_import_feature() {
1530
  <?php
1531
  }
1532
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  // Upsell existing wp user import feature.
35
  add_action( 'ig_es_subscriber_import_method_tab_heading', 'ig_es_upsell_existing_wp_user_import_feature' );
36
 
37
+ add_filter( 'ig_es_campaign_rules', 'ig_es_upsell_pro_campaign_rules' );
38
  /**
39
  * Promote SMTP mailer for free
40
  *
1531
  <?php
1532
  }
1533
  }
1534
+
1535
+ /**
1536
+ * Upsell campaign Pro rules
1537
+ *
1538
+ * @param array Campaign rules
1539
+ *
1540
+ * @return array Campaign rules
1541
+ *
1542
+ * @since 4.6.12
1543
+ */
1544
+ function ig_es_upsell_pro_campaign_rules( $campaign_rules = array() ) {
1545
+
1546
+ if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
1547
+
1548
+ $pro_campaign_rules = array(
1549
+ 'List' => array(
1550
+ '_lists__not_in' => array(
1551
+ 'name' => esc_html__( 'is not in List [PRO]', 'email-subscribers' ),
1552
+ 'disabled' => true
1553
+ ),
1554
+ ),
1555
+ 'Subscriber' => array(
1556
+ 'email' => array(
1557
+ 'name' => esc_html__( 'Email [PRO]', 'email-subscribers' ),
1558
+ 'disabled' => true
1559
+ ),
1560
+ 'country_code' => array(
1561
+ 'name' => esc_html__( 'Country [PRO]', 'email-subscribers' ),
1562
+ 'disabled' => true
1563
+ ),
1564
+ ),
1565
+ 'Campaign' => array(
1566
+ '_sent' => array(
1567
+ 'name' => esc_html__( 'has received [PRO]', 'email-subscribers' ),
1568
+ 'disabled' => true
1569
+ ),
1570
+ '_sent__not_in' => array(
1571
+ 'name' => esc_html__( 'has not received [PRO]', 'email-subscribers' ),
1572
+ 'disabled' => true
1573
+ ),
1574
+ '_open' => array(
1575
+ 'name' => esc_html__( 'has received and opened [PRO]', 'email-subscribers' ),
1576
+ 'disabled' => true
1577
+ ),
1578
+ '_open__not_in' => array(
1579
+ 'name' => esc_html__( 'has received but not opened [PRO]', 'email-subscribers' ),
1580
+ 'disabled' => true
1581
+ ),
1582
+ '_click' => array(
1583
+ 'name' => esc_html__( 'has received and clicked [PRO]', 'email-subscribers' ),
1584
+ 'disabled' => true
1585
+ ),
1586
+ '_click__not_in' => array(
1587
+ 'name' => esc_html__( 'has received and not clicked [PRO]', 'email-subscribers' ),
1588
+ 'disabled' => true
1589
+ ),
1590
+ ),
1591
+ );
1592
+
1593
+ $campaign_rules = array_merge_recursive( $campaign_rules, $pro_campaign_rules );
1594
+ }
1595
+
1596
+ return $campaign_rules;
1597
+ }
lite/languages/email-subscribers.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Email Subscribers & Newsletters 4.6.11\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-02-25T06:24:43+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
@@ -29,7 +29,7 @@ msgstr ""
29
 
30
  #. Author of the plugin
31
  #: lite/admin/partials/help.php:28
32
- #: lite/includes/class-email-subscribers.php:1484
33
  msgid "Icegram"
34
  msgstr ""
35
 
@@ -71,178 +71,178 @@ msgstr ""
71
  msgid "Connect to Icegram"
72
  msgstr ""
73
 
74
- #: lite/admin/class-email-subscribers-admin.php:162
75
  msgid "An error has occured. Please try again later."
76
  msgstr ""
77
 
78
- #: lite/admin/class-email-subscribers-admin.php:163
79
  msgid "Broadcast saved as draft successfully."
80
  msgstr ""
81
 
82
- #: lite/admin/class-email-subscribers-admin.php:164
83
  msgid "An error has occured while saving the broadcast. Please try again later."
84
  msgstr ""
85
 
86
- #: lite/admin/class-email-subscribers-admin.php:165
87
  msgid "Please add a broadcast subject before saving."
88
  msgstr ""
89
 
90
- #: lite/admin/class-email-subscribers-admin.php:166
91
- #: pro/pro-class-email-subscribers.php:483
92
  msgid "Please add email body."
93
  msgstr ""
94
 
95
- #: lite/admin/class-email-subscribers-admin.php:185
96
  msgid "Please select a trigger before saving the workflow."
97
  msgstr ""
98
 
99
- #: lite/admin/class-email-subscribers-admin.php:186
100
  msgid "Please add some actions before saving the workflow."
101
  msgstr ""
102
 
103
- #: lite/admin/class-email-subscribers-admin.php:187
104
  msgid "Please select an action that this workflow should perform before saving the workflow."
105
  msgstr ""
106
 
107
- #: lite/admin/class-email-subscribers-admin.php:188
108
  msgid "Changing the trigger will remove existing actions. Do you want to proceed anyway?."
109
  msgstr ""
110
 
111
- #: lite/admin/class-email-subscribers-admin.php:189
112
  msgid "Copied!"
113
  msgstr ""
114
 
115
- #: lite/admin/class-email-subscribers-admin.php:211
116
  msgid "Please select the status for the importing contacts!"
117
  msgstr ""
118
 
119
- #: lite/admin/class-email-subscribers-admin.php:212
120
  msgid "Please select the email address column!"
121
  msgstr ""
122
 
123
- #: lite/admin/class-email-subscribers-admin.php:213
124
  msgid "Preparing Data"
125
  msgstr ""
126
 
127
  #. translators: %s: Upload progress
128
- #: lite/admin/class-email-subscribers-admin.php:215
129
  msgid "Uploading...%s"
130
  msgstr ""
131
 
132
  #. translators: %s: Import progress
133
- #: lite/admin/class-email-subscribers-admin.php:217
134
  msgid "Importing contacts...%s"
135
  msgstr ""
136
 
137
  #. translators: %s: Import failed svg icon
138
- #: lite/admin/class-email-subscribers-admin.php:219
139
  msgid "Import failed! %s"
140
  msgstr ""
141
 
142
- #: lite/admin/class-email-subscribers-admin.php:220
143
  msgid "Please do not close this window until it completes..."
144
  msgstr ""
145
 
146
- #: lite/admin/class-email-subscribers-admin.php:221
147
  msgid "Preparing Import..."
148
  msgstr ""
149
 
150
  #. translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage
151
- #: lite/admin/class-email-subscribers-admin.php:223
152
  msgid "Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage"
153
  msgstr ""
154
 
155
  #. translators: %s: Time left in minutes
156
- #: lite/admin/class-email-subscribers-admin.php:225
157
  msgid "Estimate time left: %s minutes"
158
  msgstr ""
159
 
160
  #. translators: %s: Next attempt delaly time
161
- #: lite/admin/class-email-subscribers-admin.php:227
162
  msgid "Continues in %s seconds"
163
  msgstr ""
164
 
165
- #: lite/admin/class-email-subscribers-admin.php:228
166
  msgid "There was a problem during importing contacts. Please check the error logs for more information!"
167
  msgstr ""
168
 
169
- #: lite/admin/class-email-subscribers-admin.php:229
170
  msgid "Do you really like to import these contacts?"
171
  msgstr ""
172
 
173
  #. translators: %s: Process complete svg icon
174
- #: lite/admin/class-email-subscribers-admin.php:231
175
  msgid "Import complete! %s"
176
  msgstr ""
177
 
178
- #: lite/admin/class-email-subscribers-admin.php:232
179
  msgid "You are currently importing subscribers! If you leave the page all pending subscribers don't get imported!"
180
  msgstr ""
181
 
182
- #: lite/admin/class-email-subscribers-admin.php:282
183
  #: lite/admin/partials/dashboard.php:57
184
  msgid "Dashboard"
185
  msgstr ""
186
 
187
- #: lite/admin/class-email-subscribers-admin.php:287
188
  #: lite/admin/partials/dashboard.php:64
189
  #: lite/includes/classes/class-es-contacts-table.php:219
190
- #: lite/includes/pro-features.php:104
191
  #: starter/starter-class-email-subscribers.php:599
192
  msgid "Audience"
193
  msgstr ""
194
 
195
- #: lite/admin/class-email-subscribers-admin.php:291
196
  #: lite/includes/classes/class-es-forms-table.php:448
197
  #: lite/includes/classes/class-es-lists-table.php:34
198
  #: lite/includes/classes/class-es-lists-table.php:88
199
  msgid "Lists"
200
  msgstr ""
201
 
202
- #: lite/admin/class-email-subscribers-admin.php:297
203
  #: lite/includes/classes/class-es-form-widget.php:70
204
  #: lite/includes/classes/class-es-forms-table.php:39
205
  #: lite/includes/classes/class-es-forms-table.php:40
206
  #: lite/includes/classes/class-es-forms-table.php:93
207
- #: lite/includes/pro-features.php:105
208
  #: starter/starter-class-email-subscribers.php:600
209
  msgid "Forms"
210
  msgstr ""
211
 
212
- #: lite/admin/class-email-subscribers-admin.php:303
213
  #: lite/includes/classes/class-es-campaigns-table.php:109
214
- #: lite/includes/classes/class-es-newsletters.php:247
215
- #: lite/includes/classes/class-es-newsletters.php:253
216
- #: lite/includes/pro-features.php:106
217
  #: pro/partials/es-dashboard.php:8
218
  #: starter/starter-class-email-subscribers.php:601
219
  msgid "Campaigns"
220
  msgstr ""
221
 
222
- #: lite/admin/class-email-subscribers-admin.php:307
223
  msgid "Post Notifications"
224
  msgstr ""
225
 
226
- #: lite/admin/class-email-subscribers-admin.php:309
227
- #: lite/includes/classes/class-es-campaigns-table.php:332
228
- #: lite/includes/classes/class-es-newsletters.php:262
229
- #: lite/includes/classes/class-es-reports-table.php:315
230
  #: lite/includes/classes/class-es-templates-table.php:282
231
- #: lite/includes/pro-features.php:1027
232
  #: lite/public/class-email-subscribers-public.php:471
233
- #: pro/classes/class-es-pro-reports-data.php:139
234
- #: pro/classes/class-es-pro-reports-data.php:190
235
  msgid "Broadcast"
236
  msgstr ""
237
 
238
- #: lite/admin/class-email-subscribers-admin.php:310
239
- #: lite/includes/classes/class-es-newsletters.php:422
240
- #: lite/includes/classes/class-es-reports-table.php:640
241
  msgid "Template Preview"
242
  msgstr ""
243
 
244
- #: lite/admin/class-email-subscribers-admin.php:317
245
- #: lite/includes/pro-features.php:109
246
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
247
  #: lite/includes/workflows/class-es-workflows-table.php:53
248
  #: lite/includes/workflows/class-es-workflows-table.php:156
@@ -250,12 +250,13 @@ msgstr ""
250
  msgid "Workflows"
251
  msgstr ""
252
 
253
- #: lite/admin/class-email-subscribers-admin.php:326
254
  #: lite/admin/partials/dashboard.php:195
 
255
  #: lite/includes/classes/class-es-reports-table.php:17
256
  #: lite/includes/classes/class-es-reports-table.php:56
257
  #: lite/includes/classes/class-es-reports-table.php:114
258
- #: lite/includes/pro-features.php:107
259
  #: pro/classes/class-es-pro-sequence-report.php:21
260
  #: pro/classes/class-es-pro-sequence-report.php:44
261
  #: pro/classes/class-es-pro-sequence-report.php:77
@@ -263,25 +264,270 @@ msgstr ""
263
  msgid "Reports"
264
  msgstr ""
265
 
266
- #: lite/admin/class-email-subscribers-admin.php:330
267
  #: lite/admin/partials/dashboard.php:203
268
  #: lite/includes/classes/class-es-admin-settings.php:119
269
  msgid "Settings"
270
  msgstr ""
271
 
272
- #: lite/admin/class-email-subscribers-admin.php:335
273
  msgid "Go To Icegram"
274
  msgstr ""
275
 
276
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
277
- #: lite/admin/class-email-subscribers-admin.php:877
278
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
279
  msgstr ""
280
 
281
- #: lite/admin/class-email-subscribers-admin.php:905
282
  msgid "Something went wrong"
283
  msgstr ""
284
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  #: lite/admin/class-ig-es-onboarding.php:171
286
  msgid "An error occured. Please try again later."
287
  msgstr ""
@@ -378,11 +624,11 @@ msgid "Last 60 days"
378
  msgstr ""
379
 
380
  #: lite/admin/partials/dashboard.php:134
381
- #: lite/includes/pro-features.php:1139
382
- #: lite/includes/pro-features.php:1177
383
- #: pro/classes/class-es-pro-reports-data.php:400
384
- #: pro/classes/class-es-pro-reports-data.php:543
385
- #: pro/classes/class-es-pro-reports-data.php:858
386
  #: pro/partials/es-dashboard.php:88
387
  msgid "Opens"
388
  msgstr ""
@@ -396,8 +642,8 @@ msgid "Messages Sent"
396
  msgstr ""
397
 
398
  #: lite/admin/partials/dashboard.php:158
399
- #: lite/includes/pro-features.php:1075
400
- #: pro/classes/class-es-pro-reports-data.php:363
401
  msgid "Avg Click Rate"
402
  msgstr ""
403
 
@@ -477,13 +723,12 @@ msgid "Other awesome plugins from same author"
477
  msgstr ""
478
 
479
  #: lite/admin/partials/help.php:209
480
- #: lite/includes/classes/class-es-campaigns-table.php:595
 
481
  #: lite/includes/classes/class-es-export-subscribers.php:341
482
- #: lite/includes/classes/class-es-reports-table.php:129
483
- #: lite/includes/classes/class-es-reports-table.php:396
484
  #: lite/includes/workflows/class-es-workflows-table.php:311
485
- #: pro/classes/class-es-pro-sequence-report.php:92
486
- #: pro/classes/class-es-pro-sequence-report.php:310
487
  msgid "Status"
488
  msgstr ""
489
 
@@ -492,16 +737,16 @@ msgstr ""
492
  #: lite/includes/class-es-common.php:1653
493
  #: lite/includes/classes/class-es-campaigns-table.php:293
494
  #: lite/includes/workflows/admin/views/meta-box-save.php:28
495
- #: pro/classes/class-es-pro-reports-data.php:302
496
- #: pro/classes/class-es-pro-sequence-report.php:248
497
  msgid "Active"
498
  msgstr ""
499
 
500
  #: lite/admin/partials/help.php:213
501
  #: lite/includes/class-es-common.php:385
502
  #: lite/includes/workflows/admin/views/meta-box-save.php:27
503
- #: pro/classes/class-es-pro-reports-data.php:307
504
- #: pro/classes/class-es-pro-sequence-report.php:248
505
  msgid "Inactive"
506
  msgstr ""
507
 
@@ -759,7 +1004,7 @@ msgid "No Templates found in Trash"
759
  msgstr ""
760
 
761
  #: lite/includes/class-email-subscribers-activator.php:55
762
- #: lite/includes/class-email-subscribers.php:1481
763
  #: lite/includes/classes/class-es-form-widget.php:11
764
  #: lite/includes/classes/class-es-old-widget.php:13
765
  #: lite/includes/classes/class-es-old-widget.php:15
@@ -795,11 +1040,11 @@ msgid "OK, I Got it!"
795
  msgstr ""
796
 
797
  #. translators: 1: Error message 2: File name 3: Line number
798
- #: lite/includes/class-email-subscribers.php:1267
799
  msgid "%1$s in %2$s on line %3$s"
800
  msgstr ""
801
 
802
- #: lite/includes/class-email-subscribers.php:1494
803
  msgid "Icegram WC"
804
  msgstr ""
805
 
@@ -822,7 +1067,7 @@ msgid "Unsubscribed"
822
  msgstr ""
823
 
824
  #: lite/includes/class-es-common.php:212
825
- #: lite/includes/classes/class-es-post-notifications.php:372
826
  msgid "Select Status"
827
  msgstr ""
828
 
@@ -897,7 +1142,7 @@ msgid "Prevent Spam Subscription Using Captcha"
897
  msgstr ""
898
 
899
  #: lite/includes/class-es-common.php:1450
900
- #: lite/includes/pro-features.php:94
901
  msgid "Email Subscribers PRO"
902
  msgstr ""
903
 
@@ -910,40 +1155,40 @@ msgid "All Types"
910
  msgstr ""
911
 
912
  #: lite/includes/class-es-common.php:1649
913
- #: lite/includes/classes/class-es-campaigns-table.php:534
914
  msgid "Draft"
915
  msgstr ""
916
 
917
  #: lite/includes/class-es-common.php:1650
918
- #: lite/includes/class-es-common.php:1918
919
- #: lite/includes/classes/class-es-campaigns-table.php:516
920
- #: lite/includes/classes/class-es-campaigns-table.php:552
921
- #: lite/includes/classes/class-es-reports-table.php:249
922
- #: pro/classes/class-es-pro-reports-data.php:295
923
  msgid "Sending"
924
  msgstr ""
925
 
926
  #: lite/includes/class-es-common.php:1651
927
  #: lite/includes/classes/class-es-campaigns-table.php:294
928
- #: lite/includes/classes/class-es-campaigns-table.php:509
929
- #: lite/includes/classes/class-es-campaigns-table.php:543
930
  #: lite/includes/workflows/admin/views/meta-box-timing.php:36
931
  msgid "Scheduled"
932
  msgstr ""
933
 
934
  #: lite/includes/class-es-common.php:1652
935
- #: lite/includes/classes/class-es-campaigns-table.php:523
936
- #: lite/includes/classes/class-es-campaigns-table.php:571
937
- #: lite/includes/classes/class-es-reports-table.php:233
938
- #: lite/includes/pro-features.php:1020
939
- #: lite/includes/pro-features.php:1067
940
- #: pro/classes/class-es-pro-reports-data.php:279
941
- #: pro/classes/class-es-pro-reports-data.php:355
942
  msgid "Sent"
943
  msgstr ""
944
 
945
  #: lite/includes/class-es-common.php:1677
946
- #: lite/includes/classes/class-es-campaigns-table.php:655
947
  #: lite/includes/classes/class-es-contacts-table.php:1093
948
  msgid "All Statuses"
949
  msgstr ""
@@ -962,19 +1207,8 @@ msgid "Upgrade"
962
  msgstr ""
963
 
964
  #: lite/includes/class-es-common.php:1916
965
- #: lite/includes/classes/class-es-reports-table.php:335
966
- msgid "Completed"
967
- msgstr ""
968
-
969
- #: lite/includes/class-es-common.php:1917
970
- #: lite/includes/classes/class-es-reports-table.php:241
971
- #: pro/classes/class-es-pro-reports-data.php:287
972
- #: pro/partials/es-dashboard.php:60
973
- msgid "In Queue"
974
- msgstr ""
975
-
976
- #: lite/includes/class-es-common.php:1921
977
- #: lite/includes/classes/class-es-reports-table.php:676
978
  msgid "All Status"
979
  msgstr ""
980
 
@@ -1009,7 +1243,7 @@ msgstr ""
1009
 
1010
  #: lite/includes/classes/class-es-admin-settings.php:190
1011
  #: lite/includes/classes/class-es-admin-settings.php:193
1012
- #: lite/includes/classes/class-es-campaigns-table.php:590
1013
  #: lite/includes/classes/class-es-contacts-table.php:1025
1014
  #: lite/includes/classes/class-es-forms-table.php:399
1015
  #: lite/includes/classes/class-es-forms-table.php:889
@@ -1022,27 +1256,6 @@ msgstr ""
1022
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
1023
  msgstr ""
1024
 
1025
- #: lite/includes/classes/class-es-admin-settings.php:199
1026
- #: lite/includes/classes/class-es-contacts-table.php:764
1027
- #: lite/includes/classes/class-es-contacts-table.php:1026
1028
- #: lite/includes/classes/class-es-export-subscribers.php:339
1029
- #: lite/includes/classes/class-es-forms-table.php:382
1030
- #: lite/includes/classes/class-es-import-subscribers.php:401
1031
- #: lite/includes/classes/class-es-import-subscribers.php:538
1032
- #: lite/includes/classes/class-es-import-subscribers.php:861
1033
- #: lite/includes/classes/class-es-reports-table.php:128
1034
- #: lite/includes/pro-features.php:856
1035
- #: lite/includes/pro-features.php:1387
1036
- #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
1037
- #: lite/public/partials/class-es-shortcode.php:151
1038
- #: pro/classes/class-es-pro-reports-data.php:698
1039
- #: pro/classes/class-es-pro-sequence-report.php:91
1040
- #: pro/classes/class-ig-es-campaign-rules.php:516
1041
- #: pro/pro-class-email-subscribers.php:837
1042
- #: pro/workflows/actions/class-es-action-send-email.php:29
1043
- msgid "Email"
1044
- msgstr ""
1045
-
1046
  #: lite/includes/classes/class-es-admin-settings.php:200
1047
  msgid "Choose a FROM email address for all the emails to be sent from this plugin"
1048
  msgstr ""
@@ -1153,9 +1366,9 @@ msgstr ""
1153
  #: lite/includes/classes/class-es-admin-settings.php:386
1154
  #: lite/includes/classes/class-es-admin-settings.php:419
1155
  #: lite/includes/classes/class-es-admin-settings.php:456
1156
- #: lite/includes/classes/class-es-newsletters.php:347
1157
- #: lite/includes/classes/class-es-reports-table.php:394
1158
- #: pro/classes/class-es-pro-sequence-report.php:308
1159
  msgid "Subject"
1160
  msgstr ""
1161
 
@@ -1163,7 +1376,7 @@ msgstr ""
1163
  #: lite/includes/classes/class-es-admin-settings.php:397
1164
  #: lite/includes/classes/class-es-admin-settings.php:427
1165
  #: lite/includes/classes/class-es-admin-settings.php:467
1166
- #: lite/includes/classes/class-es-newsletters.php:268
1167
  #: pro/pro-class-sequences.php:412
1168
  msgid "Content"
1169
  msgstr ""
@@ -1334,6 +1547,61 @@ msgstr ""
1334
  msgid "In %s"
1335
  msgstr ""
1336
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1337
  #: lite/includes/classes/class-es-campaigns-table.php:37
1338
  #: lite/includes/classes/class-es-campaigns-table.php:38
1339
  msgid "Campaign"
@@ -1382,7 +1650,7 @@ msgid "Queued"
1382
  msgstr ""
1383
 
1384
  #: lite/includes/classes/class-es-campaigns-table.php:296
1385
- #: lite/includes/classes/class-es-campaigns-table.php:562
1386
  msgid "Paused"
1387
  msgstr ""
1388
 
@@ -1390,58 +1658,47 @@ msgstr ""
1390
  msgid "Finished"
1391
  msgstr ""
1392
 
1393
- #: lite/includes/classes/class-es-campaigns-table.php:344
1394
  msgid "All"
1395
  msgstr ""
1396
 
1397
- #: lite/includes/classes/class-es-campaigns-table.php:346
1398
  #: starter/starter-class-email-subscribers.php:362
1399
  msgid "None"
1400
  msgstr ""
1401
 
1402
  #. translators: 1: Slug 2: Edit Action 3: List id 4. WP Nonce
1403
  #. translators: 1: Page 2: Edit action 3: List id 4: List nonce
1404
- #: lite/includes/classes/class-es-campaigns-table.php:408
1405
  #: lite/includes/classes/class-es-campaigns-table.php:432
 
1406
  #: lite/includes/classes/class-es-lists-table.php:540
1407
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1408
  msgstr ""
1409
 
1410
- #. translators: 1: Slug 2: View Action 3: Hash 4. WP Nonce
1411
- #: lite/includes/classes/class-es-campaigns-table.php:414
1412
- #: lite/includes/classes/class-es-campaigns-table.php:417
1413
- #: lite/includes/classes/class-es-campaigns-table.php:445
1414
- #: lite/includes/classes/class-es-reports-table.php:16
1415
- #: lite/includes/pro-features.php:1012
1416
- #: pro/classes/class-es-pro-reports-data.php:263
1417
- #: pro/classes/class-es-pro-sequence-report.php:20
1418
- msgid "Report"
1419
- msgstr ""
1420
-
1421
  #. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
1422
  #. translators: 1: Page 2: Delete action 3: List id 4: List nonce
1423
- #: lite/includes/classes/class-es-campaigns-table.php:457
1424
  #: lite/includes/classes/class-es-lists-table.php:542
1425
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1426
  msgstr ""
1427
 
1428
- #: lite/includes/classes/class-es-campaigns-table.php:591
1429
- #: lite/includes/classes/class-es-reports-table.php:395
1430
- #: pro/classes/class-es-pro-sequence-report.php:309
1431
  msgid "Type"
1432
  msgstr ""
1433
 
1434
- #: lite/includes/classes/class-es-campaigns-table.php:592
1435
  #: lite/includes/classes/class-es-contacts-table.php:815
1436
  #: lite/includes/classes/class-es-contacts-table.php:1027
1437
  msgid "List(s)"
1438
  msgstr ""
1439
 
1440
- #: lite/includes/classes/class-es-campaigns-table.php:593
1441
  msgid "Categories"
1442
  msgstr ""
1443
 
1444
- #: lite/includes/classes/class-es-campaigns-table.php:594
1445
  #: lite/includes/classes/class-es-contacts-table.php:1028
1446
  #: lite/includes/classes/class-es-forms-table.php:892
1447
  #: lite/includes/classes/class-es-lists-table.php:564
@@ -1449,28 +1706,28 @@ msgstr ""
1449
  msgid "Created"
1450
  msgstr ""
1451
 
1452
- #: lite/includes/classes/class-es-campaigns-table.php:647
1453
  msgid "Search Campaigns"
1454
  msgstr ""
1455
 
1456
- #: lite/includes/classes/class-es-campaigns-table.php:664
1457
- #: lite/includes/classes/class-es-reports-table.php:685
1458
  msgid "All Type"
1459
  msgstr ""
1460
 
1461
- #: lite/includes/classes/class-es-campaigns-table.php:712
1462
  msgid "You are not allowed to delete campaign."
1463
  msgstr ""
1464
 
1465
- #: lite/includes/classes/class-es-campaigns-table.php:717
1466
  msgid "Campaign deleted successfully!"
1467
  msgstr ""
1468
 
1469
- #: lite/includes/classes/class-es-campaigns-table.php:738
1470
  msgid "Campaign(s) deleted successfully!"
1471
  msgstr ""
1472
 
1473
- #: lite/includes/classes/class-es-campaigns-table.php:742
1474
  msgid "Please select campaign(s) to delete."
1475
  msgstr ""
1476
 
@@ -1511,19 +1768,10 @@ msgstr ""
1511
 
1512
  #: lite/includes/classes/class-es-contacts-table.php:311
1513
  #: lite/includes/classes/class-es-export-subscribers.php:82
1514
- #: lite/includes/classes/class-es-reports-table.php:399
1515
- #: pro/classes/class-ig-es-campaign-rules.php:189
1516
  msgid "Total contacts"
1517
  msgstr ""
1518
 
1519
- #: lite/includes/classes/class-es-contacts-table.php:356
1520
- #: lite/includes/classes/class-es-reports-table.php:257
1521
- #: lite/includes/pro-features.php:1051
1522
- #: pro/classes/class-es-pro-reports-data.php:339
1523
- #: pro/pro-class-email-subscribers.php:1669
1524
- msgid "Opened"
1525
- msgstr ""
1526
-
1527
  #: lite/includes/classes/class-es-contacts-table.php:391
1528
  msgid " Add New Contact"
1529
  msgstr ""
@@ -1596,8 +1844,8 @@ msgid "Enter last name"
1596
  msgstr ""
1597
 
1598
  #: lite/includes/classes/class-es-contacts-table.php:776
1599
- #: lite/includes/pro-features.php:862
1600
- #: pro/pro-class-email-subscribers.php:841
1601
  msgid "Enter email"
1602
  msgstr ""
1603
 
@@ -1612,14 +1860,14 @@ msgstr ""
1612
  #: lite/includes/classes/class-es-contacts-table.php:832
1613
  #: lite/includes/classes/class-es-forms-table.php:549
1614
  #: lite/includes/classes/class-es-lists-table.php:321
1615
- #: lite/includes/classes/class-es-post-notifications.php:429
1616
  msgid "Save Changes"
1617
  msgstr ""
1618
 
1619
  #: lite/includes/classes/class-es-contacts-table.php:839
1620
  #: lite/includes/classes/class-es-forms-table.php:553
1621
  #: lite/includes/classes/class-es-lists-table.php:325
1622
- #: lite/includes/classes/class-es-post-notifications.php:432
1623
  msgid "Cancel"
1624
  msgstr ""
1625
 
@@ -1645,8 +1893,8 @@ msgstr ""
1645
  #: lite/includes/classes/class-es-contacts-table.php:1061
1646
  #: lite/includes/classes/class-es-forms-table.php:920
1647
  #: lite/includes/classes/class-es-lists-table.php:593
1648
- #: lite/includes/classes/class-es-reports-table.php:377
1649
- #: lite/includes/classes/class-es-reports-table.php:462
1650
  #: lite/includes/workflows/admin/views/action.php:29
1651
  #: lite/includes/workflows/admin/views/meta-box-save.php:45
1652
  #: lite/includes/workflows/class-es-workflows-table.php:280
@@ -1699,7 +1947,6 @@ msgstr ""
1699
 
1700
  #: lite/includes/classes/class-es-contacts-table.php:1310
1701
  #: lite/includes/classes/class-es-contacts-table.php:1331
1702
- #: lite/includes/classes/class-es-newsletters.php:126
1703
  #: lite/includes/classes/class-es-post-notifications.php:51
1704
  #: pro/pro-class-sequences.php:163
1705
  #: pro/pro-class-sequences.php:237
@@ -2035,59 +2282,59 @@ msgstr ""
2035
  msgid "No Forms avaliable."
2036
  msgstr ""
2037
 
2038
- #: lite/includes/classes/class-es-handle-subscription.php:487
2039
  #: lite/public/class-email-subscribers-public.php:107
2040
  msgid "Please enter email address"
2041
  msgstr ""
2042
 
2043
- #: lite/includes/classes/class-es-handle-subscription.php:488
2044
  #: lite/public/class-email-subscribers-public.php:108
2045
  msgid "You need to wait for sometime before subscribing again"
2046
  msgstr ""
2047
 
2048
- #: lite/includes/classes/class-es-handle-subscription.php:489
2049
  #: lite/includes/upgrade/es-update-functions.php:750
2050
  #: lite/public/class-email-subscribers-public.php:109
2051
  msgid "Successfully Subscribed."
2052
  msgstr ""
2053
 
2054
- #: lite/includes/classes/class-es-handle-subscription.php:490
2055
  #: lite/public/class-email-subscribers-public.php:111
2056
  msgid "Email Address already exists!"
2057
  msgstr ""
2058
 
2059
- #: lite/includes/classes/class-es-handle-subscription.php:491
2060
  #: lite/public/class-email-subscribers-public.php:112
2061
  msgid "Oops.. Unexpected error occurred."
2062
  msgstr ""
2063
 
2064
- #: lite/includes/classes/class-es-handle-subscription.php:492
2065
  #: lite/public/class-email-subscribers-public.php:113
2066
  msgid "Invalid email address"
2067
  msgstr ""
2068
 
2069
- #: lite/includes/classes/class-es-handle-subscription.php:493
2070
  msgid "Invalid name"
2071
  msgstr ""
2072
 
2073
- #: lite/includes/classes/class-es-handle-subscription.php:494
2074
  #: lite/public/class-email-subscribers-public.php:114
2075
  msgid "Please try after some time"
2076
  msgstr ""
2077
 
2078
- #: lite/includes/classes/class-es-handle-subscription.php:495
2079
  msgid "Oops...unable to add subscriber"
2080
  msgstr ""
2081
 
2082
- #: lite/includes/classes/class-es-handle-subscription.php:496
2083
  msgid "You do not have permission to add subscriber"
2084
  msgstr ""
2085
 
2086
- #: lite/includes/classes/class-es-handle-subscription.php:497
2087
  msgid "Please select the list"
2088
  msgstr ""
2089
 
2090
- #: lite/includes/classes/class-es-handle-subscription.php:498
2091
  msgid "Invalid Captcha"
2092
  msgstr ""
2093
 
@@ -2364,115 +2611,115 @@ msgstr ""
2364
  msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
2365
  msgstr ""
2366
 
2367
- #: lite/includes/classes/class-es-newsletters.php:90
2368
  msgid "Sorry, you are not allowed to add/edit broadcast."
2369
  msgstr ""
2370
 
2371
- #: lite/includes/classes/class-es-newsletters.php:114
2372
  msgid "Please add a broadcast subject."
2373
  msgstr ""
2374
 
2375
- #: lite/includes/classes/class-es-newsletters.php:120
2376
  msgid "Please add message body or select template"
2377
  msgstr ""
2378
 
2379
- #: lite/includes/classes/class-es-newsletters.php:132
2380
  msgid "Please add the subject"
2381
  msgstr ""
2382
 
2383
- #: lite/includes/classes/class-es-newsletters.php:205
2384
  msgid "Scheduling is disabled for this broadcast since it is being sent."
2385
  msgstr ""
2386
 
2387
- #: lite/includes/classes/class-es-newsletters.php:207
2388
  msgid "Scheduling is disabled for this broadcast since it has been sent already."
2389
  msgstr ""
2390
 
2391
- #: lite/includes/classes/class-es-newsletters.php:271
2392
  msgid "Summary"
2393
  msgstr ""
2394
 
2395
- #: lite/includes/classes/class-es-newsletters.php:282
2396
  msgid "Next"
2397
  msgstr ""
2398
 
2399
- #: lite/includes/classes/class-es-newsletters.php:296
2400
  msgid "Previous"
2401
  msgstr ""
2402
 
2403
- #: lite/includes/classes/class-es-newsletters.php:305
2404
  msgid "Save Draft"
2405
  msgstr ""
2406
 
2407
- #: lite/includes/classes/class-es-newsletters.php:322
2408
  msgid "Schedule"
2409
  msgstr ""
2410
 
2411
- #: lite/includes/classes/class-es-newsletters.php:326
2412
  #: lite/includes/feedback.php:56
2413
  #: lite/includes/feedback.php:83
2414
  msgid "Send"
2415
  msgstr ""
2416
 
2417
- #: lite/includes/classes/class-es-newsletters.php:351
2418
  msgid "From Name"
2419
  msgstr ""
2420
 
2421
- #: lite/includes/classes/class-es-newsletters.php:355
2422
  msgid "From Email"
2423
  msgstr ""
2424
 
2425
- #: lite/includes/classes/class-es-newsletters.php:359
2426
  msgid "Reply To"
2427
  msgstr ""
2428
 
2429
- #: lite/includes/classes/class-es-newsletters.php:364
2430
  msgid "Message"
2431
  msgstr ""
2432
 
2433
- #: lite/includes/classes/class-es-newsletters.php:382
2434
  msgid "Design template"
2435
  msgstr ""
2436
 
2437
- #: lite/includes/classes/class-es-newsletters.php:390
2438
- msgid "Recipients"
2439
  msgstr ""
2440
 
2441
- #: lite/includes/classes/class-es-newsletters.php:409
2442
- #: lite/includes/classes/class-es-newsletters.php:437
2443
- #: lite/includes/classes/class-es-reports-table.php:378
2444
- #: pro/classes/class-es-pro-sequence-report.php:282
2445
  msgid "Preview"
2446
  msgstr ""
2447
 
2448
- #: lite/includes/classes/class-es-newsletters.php:412
2449
  msgid "Browser"
2450
  msgstr ""
2451
 
2452
- #: lite/includes/classes/class-es-newsletters.php:423
2453
- #: lite/includes/classes/class-es-reports-table.php:641
2454
  msgid "There could be a slight variation on how your customer will view the email content."
2455
  msgstr ""
2456
 
2457
- #: lite/includes/classes/class-es-newsletters.php:427
2458
- #: lite/includes/classes/class-es-reports-table.php:645
2459
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
2460
  msgid "Close"
2461
  msgstr ""
2462
 
2463
- #: lite/includes/classes/class-es-newsletters.php:440
2464
  msgid "Email sent successfully "
2465
  msgstr ""
2466
 
2467
- #: lite/includes/classes/class-es-newsletters.php:441
2468
  msgid "Something went wrong. Please try again later"
2469
  msgstr ""
2470
 
2471
- #: lite/includes/classes/class-es-newsletters.php:458
2472
  msgid "Email Content Preview"
2473
  msgstr ""
2474
 
2475
- #: lite/includes/classes/class-es-newsletters.php:498
2476
  msgid "Open tracking"
2477
  msgstr ""
2478
 
@@ -2558,103 +2805,85 @@ msgstr ""
2558
  msgid "Content of the selected template will be sent out as post notification."
2559
  msgstr ""
2560
 
2561
- #: lite/includes/classes/class-es-post-notifications.php:388
2562
  msgid "Select post category"
2563
  msgstr ""
2564
 
2565
- #: lite/includes/classes/class-es-post-notifications.php:389
2566
  msgid "Notification will be sent out when any post from selected categories will be published."
2567
  msgstr ""
2568
 
2569
- #: lite/includes/classes/class-es-post-notifications.php:405
2570
  msgid "Select custom post type(s)"
2571
  msgstr ""
2572
 
2573
- #: lite/includes/classes/class-es-post-notifications.php:406
2574
  msgid "(Optional) Select custom post type for which you want to send notification."
2575
  msgstr ""
2576
 
2577
- #: lite/includes/classes/class-es-post-notifications.php:429
2578
  msgid "Save Campaign"
2579
  msgstr ""
2580
 
2581
- #. translators: %s: Cron url
2582
- #: lite/includes/classes/class-es-reports-table.php:64
2583
- msgid "<a href='%s' class='px-3 py-2 ig-es-imp-button'>Send Queued Emails Now</a>"
2584
- msgstr ""
2585
-
2586
- #: lite/includes/classes/class-es-reports-table.php:66
2587
- msgid "<span class='ig-es-send-queue-emails px-3 button-disabled'>Send Queued Emails Now</span>"
2588
- msgstr ""
2589
-
2590
- #: lite/includes/classes/class-es-reports-table.php:67
2591
- msgid "<br /><span class='es-helper pl-6'>No emails found in queue</span>"
2592
- msgstr ""
2593
-
2594
- #: lite/includes/classes/class-es-reports-table.php:127
2595
- #: pro/classes/class-es-pro-sequence-report.php:90
2596
- msgid "Sr No"
2597
- msgstr ""
2598
-
2599
- #: lite/includes/classes/class-es-reports-table.php:130
2600
- #: pro/classes/class-es-pro-sequence-report.php:93
2601
- msgid "Sent Date"
2602
- msgstr ""
2603
-
2604
- #: lite/includes/classes/class-es-reports-table.php:131
2605
- #: pro/classes/class-es-pro-sequence-report.php:95
2606
- msgid "Viewed Date"
2607
  msgstr ""
2608
 
2609
- #: lite/includes/classes/class-es-reports-table.php:156
2610
- msgid "Campaign Analytics"
2611
  msgstr ""
2612
 
2613
- #: lite/includes/classes/class-es-reports-table.php:175
2614
- msgid "View activity "
2615
  msgstr ""
2616
 
2617
- #: lite/includes/classes/class-es-reports-table.php:291
2618
  msgid "No Reports avaliable."
2619
  msgstr ""
2620
 
2621
- #: lite/includes/classes/class-es-reports-table.php:311
2622
  #: lite/public/class-email-subscribers-public.php:474
2623
- #: pro/classes/class-es-pro-reports-data.php:141
2624
- #: pro/classes/class-es-pro-reports-data.php:186
2625
  msgid "Post Notification"
2626
  msgstr ""
2627
 
2628
- #: lite/includes/classes/class-es-reports-table.php:376
2629
- #: pro/classes/class-es-pro-sequence-report.php:281
 
 
 
 
 
2630
  msgid "View"
2631
  msgstr ""
2632
 
2633
- #: lite/includes/classes/class-es-reports-table.php:397
2634
  msgid "Start Date"
2635
  msgstr ""
2636
 
2637
- #: lite/includes/classes/class-es-reports-table.php:398
2638
  msgid "End Date"
2639
  msgstr ""
2640
 
2641
- #: lite/includes/classes/class-es-reports-table.php:595
2642
  msgid "You do not have permission to view notification"
2643
  msgstr ""
2644
 
2645
- #: lite/includes/classes/class-es-reports-table.php:606
2646
  msgid "You do not have permission to delete notification"
2647
  msgstr ""
2648
 
2649
- #: lite/includes/classes/class-es-reports-table.php:612
2650
  msgid "Report deleted successfully!"
2651
  msgstr ""
2652
 
2653
- #: lite/includes/classes/class-es-reports-table.php:626
2654
  msgid "Reports deleted successfully!"
2655
  msgstr ""
2656
 
2657
- #: lite/includes/classes/class-es-reports-table.php:666
2658
  msgid "Search Reports"
2659
  msgstr ""
2660
 
@@ -2859,7 +3088,7 @@ msgstr ""
2859
 
2860
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:184
2861
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:212
2862
- #: lite/includes/pro-features.php:929
2863
  msgid "Check"
2864
  msgstr ""
2865
 
@@ -2884,7 +3113,7 @@ msgstr ""
2884
 
2885
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:261
2886
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:341
2887
- #: lite/includes/pro-features.php:912
2888
  msgid "UTM tracking"
2889
  msgstr ""
2890
 
@@ -2902,150 +3131,140 @@ msgstr ""
2902
  msgid "This will be appended to every URL in this template with parameters: utm_source=es&utm_medium=email&utm_campaign=campaign_name"
2903
  msgstr ""
2904
 
2905
- #: lite/includes/pro-features.php:94
2906
  msgid "Customize user roles permissions with "
2907
  msgstr ""
2908
 
2909
- #: lite/includes/pro-features.php:103
2910
  #: starter/starter-class-email-subscribers.php:598
2911
  msgid "Roles"
2912
  msgstr ""
2913
 
2914
- #: lite/includes/pro-features.php:108
2915
  #: starter/starter-class-email-subscribers.php:603
2916
  msgid "Sequences"
2917
  msgstr ""
2918
 
2919
- #: lite/includes/pro-features.php:166
2920
  #: starter/starter-class-email-subscribers.php:577
2921
  msgid "User Roles"
2922
  msgstr ""
2923
 
2924
- #: lite/includes/pro-features.php:193
2925
- #: pro/pro-class-email-subscribers.php:888
2926
  msgid "Track clicks"
2927
  msgstr ""
2928
 
2929
  #. translators: %s: Icegram Pricing page url with utm tracking
2930
- #: lite/includes/pro-features.php:200
2931
  msgid "Track key insight behaviour with PRO"
2932
  msgstr ""
2933
 
2934
- #: lite/includes/pro-features.php:201
2935
  msgid "Understand key insight into customer behavior with Link Tracking and UTM tracking in <b class=\"font-medium text-teal-800\">Email Subscribers Pro</b>."
2936
  msgstr ""
2937
 
2938
- #: lite/includes/pro-features.php:211
2939
  msgid "UTM Tracking"
2940
  msgstr ""
2941
 
2942
- #: lite/includes/pro-features.php:235
2943
  #: starter/starter-class-email-subscribers.php:425
2944
  msgid "Block known attackers"
2945
  msgstr ""
2946
 
2947
- #: lite/includes/pro-features.php:236
2948
  #: starter/starter-class-email-subscribers.php:426
2949
  msgid "Stop known spam bot attacker domains from signing up. Keeps this list up-to-date with Icegram servers."
2950
  msgstr ""
2951
 
2952
  #. translators: %s: Icegram Pricing page url with utm tracking
2953
- #: lite/includes/pro-features.php:243
2954
  msgid "Prevent spam attacks with PRO"
2955
  msgstr ""
2956
 
2957
- #: lite/includes/pro-features.php:244
2958
  msgid "Get a gatekeeper to secure your form and avoid spam signups with form Captcha <b class=\"font-medium text-teal-800\">Email Subscribers PRO</b>."
2959
  msgstr ""
2960
 
2961
- #: lite/includes/pro-features.php:249
2962
  #: starter/starter-class-email-subscribers.php:433
2963
  msgid "Block temporary / fake emails"
2964
  msgstr ""
2965
 
2966
- #: lite/includes/pro-features.php:250
2967
  #: starter/starter-class-email-subscribers.php:434
2968
  msgid "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."
2969
  msgstr ""
2970
 
2971
- #: lite/includes/pro-features.php:261
2972
  #: starter/starter-class-email-subscribers.php:442
2973
  msgid "Enable Captcha"
2974
  msgstr ""
2975
 
2976
- #: lite/includes/pro-features.php:262
2977
  msgid "Show a captcha in subscription forms to protect from bot signups."
2978
  msgstr ""
2979
 
2980
- #: lite/includes/pro-features.php:286
2981
- #: pro/pro-class-email-subscribers.php:896
2982
  msgid "Track IP address"
2983
  msgstr ""
2984
 
2985
- #: lite/includes/pro-features.php:287
2986
  msgid "Store IP address on subscription"
2987
  msgstr ""
2988
 
2989
  #. translators: %s: Icegram Pricing page url with utm tracking
2990
- #: lite/includes/pro-features.php:294
2991
  msgid "Track subscribers IP addresses with PRO"
2992
  msgstr ""
2993
 
2994
- #: lite/includes/pro-features.php:295
2995
  msgid "Enable IP tracking and get more information about your subscribers <b>eg.</b> which country your subscribers are from."
2996
  msgstr ""
2997
 
2998
- #: lite/includes/pro-features.php:311
2999
  #: starter/starter-class-es-integrations.php:63
3000
  msgid "Comments"
3001
  msgstr ""
3002
 
3003
- #: lite/includes/pro-features.php:322
3004
  #: starter/starter-class-es-integrations.php:73
3005
  msgid "WooCommerce"
3006
  msgstr ""
3007
 
3008
- #: lite/includes/pro-features.php:332
3009
  #: starter/starter-class-es-integrations.php:91
3010
  msgid "Contact Form 7"
3011
  msgstr ""
3012
 
3013
- #: lite/includes/pro-features.php:342
3014
  #: starter/starter-class-es-integrations.php:100
3015
  msgid "WPForms"
3016
  msgstr ""
3017
 
3018
- #: lite/includes/pro-features.php:352
3019
  #: starter/starter-class-es-integrations.php:109
3020
  msgid "Give"
3021
  msgstr ""
3022
 
3023
- #: lite/includes/pro-features.php:362
3024
  #: starter/starter-class-es-integrations.php:118
3025
  msgid "Ninja Forms"
3026
  msgstr ""
3027
 
3028
- #: lite/includes/pro-features.php:372
3029
  #: starter/starter-class-es-integrations.php:82
3030
  msgid "EDD"
3031
  msgstr ""
3032
 
3033
- #: lite/includes/pro-features.php:400
3034
- msgid "Sync Comment Users"
3035
- msgstr ""
3036
-
3037
  #: lite/includes/pro-features.php:401
3038
- msgid "Quickly add to your mailing list when someone post a comment on your website."
3039
  msgstr ""
3040
 
3041
  #: lite/includes/pro-features.php:402
3042
- #: lite/includes/pro-features.php:435
3043
- #: lite/includes/pro-features.php:472
3044
- #: lite/includes/pro-features.php:508
3045
- #: lite/includes/pro-features.php:544
3046
- #: lite/includes/pro-features.php:580
3047
- #: lite/includes/pro-features.php:616
3048
- msgid "How to setup?"
3049
  msgstr ""
3050
 
3051
  #: lite/includes/pro-features.php:403
@@ -3055,121 +3274,131 @@ msgstr ""
3055
  #: lite/includes/pro-features.php:545
3056
  #: lite/includes/pro-features.php:581
3057
  #: lite/includes/pro-features.php:617
 
 
 
 
 
 
 
 
 
 
3058
  msgid "Once you upgrade to "
3059
  msgstr ""
3060
 
3061
- #: lite/includes/pro-features.php:403
3062
- #: lite/includes/pro-features.php:410
3063
- #: lite/includes/pro-features.php:436
3064
- #: lite/includes/pro-features.php:444
3065
- #: lite/includes/pro-features.php:475
3066
- #: lite/includes/pro-features.php:511
3067
- #: lite/includes/pro-features.php:547
3068
- #: lite/includes/pro-features.php:552
3069
- #: lite/includes/pro-features.php:583
3070
- #: lite/includes/pro-features.php:619
3071
  msgid "Email Subscribers Starter"
3072
  msgstr ""
3073
 
3074
- #: lite/includes/pro-features.php:405
3075
  msgid ""
3076
  "you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a\n"
3077
  "\t\tcomment."
3078
  msgstr ""
3079
 
3080
- #: lite/includes/pro-features.php:410
3081
- #: lite/includes/pro-features.php:444
3082
- #: lite/includes/pro-features.php:480
3083
- #: lite/includes/pro-features.php:516
3084
- #: lite/includes/pro-features.php:552
3085
- #: lite/includes/pro-features.php:588
3086
- #: lite/includes/pro-features.php:624
3087
  msgid "Checkout "
3088
  msgstr ""
3089
 
3090
- #: lite/includes/pro-features.php:410
3091
  msgid "now"
3092
  msgstr ""
3093
 
3094
- #: lite/includes/pro-features.php:433
3095
  msgid "Sync WooCommerce Customers"
3096
  msgstr ""
3097
 
3098
- #: lite/includes/pro-features.php:434
3099
  msgid "Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone make a purchase from you"
3100
  msgstr ""
3101
 
3102
- #: lite/includes/pro-features.php:438
3103
  msgid ""
3104
  "you will have settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they\n"
3105
  "\t\t\tpurchase something\n"
3106
  "\t\t\tfrom you."
3107
  msgstr ""
3108
 
3109
- #: lite/includes/pro-features.php:444
3110
- #: lite/includes/pro-features.php:552
3111
  msgid " Now"
3112
  msgstr ""
3113
 
3114
- #: lite/includes/pro-features.php:470
3115
  msgid "Sync Contact Form 7 users"
3116
  msgstr ""
3117
 
3118
- #: lite/includes/pro-features.php:471
3119
  msgid "Are you using Contact Form 7 for your list building? You can use this integration to add to a specific list whenever new subscribers added from Contact Form 7"
3120
  msgstr ""
3121
 
3122
- #: lite/includes/pro-features.php:478
3123
  msgid "you will have settings panel where you need to enable Contact form 7 sync and select the list in which you want to add people whenever they fill any of the Contact Form."
3124
  msgstr ""
3125
 
3126
- #: lite/includes/pro-features.php:506
3127
- #: lite/includes/pro-features.php:542
3128
  msgid "Sync Donors"
3129
  msgstr ""
3130
 
3131
- #: lite/includes/pro-features.php:507
3132
  msgid "We found that you are using Give WordPress plugin to collect donations. Now, with this integration, you can add your donors to any of your subscriber list and send them Newsletters in future."
3133
  msgstr ""
3134
 
3135
- #: lite/includes/pro-features.php:514
3136
  msgid "you will have settings panel where you need to enable Give integration and select the list in which you want to add people whenever they make donation."
3137
  msgstr ""
3138
 
3139
- #: lite/includes/pro-features.php:543
3140
  msgid "Are you using Give WordPress plugin to collect donations? Want to send Thank You email to them? You can use this integration to be in touch with them."
3141
  msgstr ""
3142
 
3143
- #: lite/includes/pro-features.php:550
3144
- #: lite/includes/pro-features.php:586
3145
  msgid "you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation."
3146
  msgstr ""
3147
 
3148
- #: lite/includes/pro-features.php:578
3149
  msgid "Sync Contacts"
3150
  msgstr ""
3151
 
3152
- #: lite/includes/pro-features.php:579
3153
  msgid "We found that you are using Ninja Forms. Want to add your contact to a mailing list? You can use this integration to add your contact to add into mailing list"
3154
  msgstr ""
3155
 
3156
- #: lite/includes/pro-features.php:614
3157
  msgid "Sync Customers"
3158
  msgstr ""
3159
 
3160
- #: lite/includes/pro-features.php:615
3161
  msgid "We found that you are using EDD to sell digital goods online. You can use this integration to send Newsletters/ Post Notifications to your customers."
3162
  msgstr ""
3163
 
3164
- #: lite/includes/pro-features.php:622
3165
  msgid "you will have settings panel where you need to enable EDD sync and select the list in which you want to add people whenever they purchase something from you."
3166
  msgstr ""
3167
 
3168
- #: lite/includes/pro-features.php:644
3169
  msgid "ES PRO Integrations"
3170
  msgstr ""
3171
 
3172
- #: lite/includes/pro-features.php:679
3173
  msgid ""
3174
  "<div class=\"flex items-start space-x-3 -ml-8\">\n"
3175
  "\t\t\t <div class=\"flex-shrink-0 h-5 w-5 relative flex justify-center\">\n"
@@ -3178,32 +3407,32 @@ msgid ""
3178
  "\t\t\t <p class=\"text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150\">"
3179
  msgstr ""
3180
 
3181
- #: lite/includes/pro-features.php:686
3182
  msgid "</div><br>Powerup by integrating popular WordPress plugins with Email Subscribers. We have made things simple and automated for you to avoid manual actions."
3183
  msgstr ""
3184
 
3185
- #: lite/includes/pro-features.php:688
3186
  msgid "Unlock plugin integrations with PRO"
3187
  msgstr ""
3188
 
3189
- #: lite/includes/pro-features.php:730
3190
  msgid "Secure your list now with PRO"
3191
  msgstr ""
3192
 
3193
- #: lite/includes/pro-features.php:732
3194
  msgid "Block known spam bot attacker domains, fake email addresses and bot signups with <b class=\"font-medium text-teal-800\">Email Subscribers PRO.</b>"
3195
  msgstr ""
3196
 
3197
- #: lite/includes/pro-features.php:745
3198
  #: starter/starter-class-email-subscribers.php:1181
3199
  msgid "Show a captcha to protect from bot signups."
3200
  msgstr ""
3201
 
3202
- #: lite/includes/pro-features.php:779
3203
  msgid "Enable multiple lists & post digest with PRO"
3204
  msgstr ""
3205
 
3206
- #: lite/includes/pro-features.php:781
3207
  msgid ""
3208
  "<div class=\"flex items-start space-x-3 -ml-8\">\n"
3209
  "\t\t\t <div class=\"flex-shrink-0 h-5 w-5 relative flex justify-center\">\n"
@@ -3226,225 +3455,252 @@ msgid ""
3226
  "\t\t\t </div>"
3227
  msgstr ""
3228
 
3229
- #: lite/includes/pro-features.php:806
3230
  #: pro/pro-class-post-digest.php:65
3231
  msgid "Is a post digest?"
3232
  msgstr ""
3233
 
3234
- #: lite/includes/pro-features.php:823
3235
  #: pro/pro-class-post-digest.php:104
3236
  msgid "Schedules at"
3237
  msgstr ""
3238
 
3239
- #: lite/includes/pro-features.php:825
3240
  #: pro/pro-class-post-digest.php:105
3241
  msgid "When to send?"
3242
  msgstr ""
3243
 
3244
- #: lite/includes/pro-features.php:832
3245
  msgid "Once a day at"
3246
  msgstr ""
3247
 
3248
- #: lite/includes/pro-features.php:835
3249
  msgid "12:00 pm"
3250
  msgstr ""
3251
 
3252
- #: lite/includes/pro-features.php:881
3253
  msgid "Reduce the possibility to land in spam with PRO"
3254
  msgstr ""
3255
 
3256
- #: lite/includes/pro-features.php:889
3257
- #: pro/pro-class-email-subscribers.php:725
3258
  msgid "Link tracking"
3259
  msgstr ""
3260
 
3261
- #: lite/includes/pro-features.php:927
3262
  msgid "Get spam score"
3263
  msgstr ""
3264
 
3265
- #: lite/includes/pro-features.php:938
3266
- #: pro/pro-class-email-subscribers.php:769
3267
  msgid "Send options"
3268
  msgstr ""
3269
 
3270
- #: lite/includes/pro-features.php:941
3271
- #: pro/pro-class-email-subscribers.php:772
3272
  msgid "Schedule for later"
3273
  msgstr ""
3274
 
3275
- #: lite/includes/pro-features.php:948
3276
  #: lite/includes/workflows/admin/views/meta-box-timing.php:82
3277
  #: lite/includes/workflows/fields/class-es-date.php:31
3278
- #: pro/pro-class-email-subscribers.php:785
3279
  msgid "Date"
3280
  msgstr ""
3281
 
3282
- #: lite/includes/pro-features.php:957
3283
  #: lite/includes/workflows/fields/class-es-time.php:64
3284
- #: pro/pro-class-email-subscribers.php:796
3285
  msgid "Time"
3286
  msgstr ""
3287
 
3288
- #: lite/includes/pro-features.php:967
3289
- #: pro/pro-class-email-subscribers.php:807
3290
  msgid "Local Time: "
3291
  msgstr ""
3292
 
3293
- #: lite/includes/pro-features.php:997
3294
  msgid "Track campaign insights with PRO"
3295
  msgstr ""
3296
 
3297
- #: lite/includes/pro-features.php:999
3298
  msgid "Know your subscribers & their behaviour with detailed campaign insights using <b class=\"font-medium text-teal-800\">Email Subscribers Pro</b>."
3299
  msgstr ""
3300
 
3301
- #: lite/includes/pro-features.php:1026
3302
- #: pro/classes/class-es-pro-reports-data.php:312
3303
  msgid "Type: "
3304
  msgstr ""
3305
 
3306
- #: lite/includes/pro-features.php:1029
3307
- #: pro/classes/class-es-pro-reports-data.php:315
3308
  msgid "From: "
3309
  msgstr ""
3310
 
3311
- #: lite/includes/pro-features.php:1030
3312
  msgid "hello@icegram.com"
3313
  msgstr ""
3314
 
3315
- #: lite/includes/pro-features.php:1032
3316
- #: pro/classes/class-es-pro-reports-data.php:318
3317
  msgid "List(s): "
3318
  msgstr ""
3319
 
3320
- #: lite/includes/pro-features.php:1033
3321
  msgid "Test, Main "
3322
  msgstr ""
3323
 
3324
- #: lite/includes/pro-features.php:1035
3325
- #: pro/classes/class-es-pro-reports-data.php:322
3326
  msgid "Date: "
3327
  msgstr ""
3328
 
3329
- #: lite/includes/pro-features.php:1036
3330
  msgid "July 1, 2020 10:00 AM"
3331
  msgstr ""
3332
 
3333
- #: lite/includes/pro-features.php:1043
3334
- #: pro/classes/class-es-pro-reports-data.php:331
3335
  msgid "Statistics"
3336
  msgstr ""
3337
 
3338
- #: lite/includes/pro-features.php:1059
3339
- #: pro/classes/class-es-pro-reports-data.php:347
3340
  msgid "Avg Open Rate"
3341
  msgstr ""
3342
 
3343
- #: lite/includes/pro-features.php:1085
3344
  msgid "Open and click activity"
3345
  msgstr ""
3346
 
3347
- #: lite/includes/pro-features.php:1094
3348
  msgid "Country Opens"
3349
  msgstr ""
3350
 
3351
- #: lite/includes/pro-features.php:1097
3352
  msgid "Mail Client Info"
3353
  msgstr ""
3354
 
3355
- #: lite/includes/pro-features.php:1136
3356
- #: lite/includes/pro-features.php:1386
3357
- #: pro/classes/class-es-pro-reports-data.php:397
3358
- #: pro/classes/class-es-pro-reports-data.php:697
3359
- #: pro/classes/class-ig-es-campaign-rules.php:517
3360
- msgid "Country"
3361
- msgstr ""
3362
-
3363
- #: lite/includes/pro-features.php:1174
3364
- #: lite/includes/pro-features.php:1389
3365
- #: pro/classes/class-es-pro-reports-data.php:540
3366
- #: pro/classes/class-es-pro-reports-data.php:700
3367
  msgid "Mail Client"
3368
  msgstr ""
3369
 
3370
- #: lite/includes/pro-features.php:1203
3371
  msgid "Device Info"
3372
  msgstr ""
3373
 
3374
- #: lite/includes/pro-features.php:1208
3375
  msgid "Browser Info"
3376
  msgstr ""
3377
 
3378
- #: lite/includes/pro-features.php:1213
3379
  msgid "OS Info"
3380
  msgstr ""
3381
 
3382
- #: lite/includes/pro-features.php:1232
3383
  msgid "Link Activity"
3384
  msgstr ""
3385
 
3386
- #: lite/includes/pro-features.php:1239
3387
- #: pro/classes/class-es-pro-reports-data.php:635
3388
  msgid "Link (URL)"
3389
  msgstr ""
3390
 
3391
- #: lite/includes/pro-features.php:1241
3392
- #: pro/classes/class-es-pro-reports-data.php:637
3393
  msgid "Unique Clicks"
3394
  msgstr ""
3395
 
3396
- #: lite/includes/pro-features.php:1243
3397
- #: pro/classes/class-es-pro-reports-data.php:639
3398
  msgid "Total Clicks"
3399
  msgstr ""
3400
 
3401
- #: lite/includes/pro-features.php:1251
3402
  msgid "https://www.icegram.com/automate-workflow-and-reduce-chaos/"
3403
  msgstr ""
3404
 
3405
- #: lite/includes/pro-features.php:1264
3406
  msgid "https://www.icegram.com/how-to-keep-email-out-of-spam-folder/"
3407
  msgstr ""
3408
 
3409
- #: lite/includes/pro-features.php:1378
3410
  msgid "Last 10 Open Activity"
3411
  msgstr ""
3412
 
3413
- #: lite/includes/pro-features.php:1388
3414
- #: pro/classes/class-es-pro-reports-data.php:699
3415
  msgid "Device"
3416
  msgstr ""
3417
 
3418
- #: lite/includes/pro-features.php:1390
3419
- #: pro/classes/class-es-pro-reports-data.php:701
3420
  msgid "OS"
3421
  msgstr ""
3422
 
3423
- #: lite/includes/pro-features.php:1417
3424
- #: pro/classes/class-es-pro-reports-data.php:751
3425
  msgid "Desktop"
3426
  msgstr ""
3427
 
3428
- #: lite/includes/pro-features.php:1426
3429
- #: pro/classes/class-es-pro-reports-data.php:760
3430
  msgid "Tablet"
3431
  msgstr ""
3432
 
3433
- #: lite/includes/pro-features.php:1435
3434
- #: pro/classes/class-es-pro-reports-data.php:769
3435
  msgid "Mobile"
3436
  msgstr ""
3437
 
3438
- #: lite/includes/pro-features.php:1494
3439
- #: pro/pro-class-email-subscribers.php:1501
3440
  msgid "Add Attachments"
3441
  msgstr ""
3442
 
3443
- #: lite/includes/pro-features.php:1524
3444
- #: pro/pro-class-email-subscribers.php:1582
3445
  msgid "Import existing WordPress users"
3446
  msgstr ""
3447
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3448
  #: lite/includes/services/class-es-email-delivery-check.php:46
3449
  msgid " 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."
3450
  msgstr ""
@@ -3919,7 +4175,7 @@ msgid "Total Emails In Queue"
3919
  msgstr ""
3920
 
3921
  #: lite/public/partials/cron-message.php:43
3922
- #: pro/pro-class-email-subscribers.php:815
3923
  msgid "Send Now"
3924
  msgstr ""
3925
 
@@ -3951,306 +4207,96 @@ msgstr ""
3951
  msgid "Free!"
3952
  msgstr ""
3953
 
3954
- #: pro/classes/class-es-pro-reports-data.php:143
 
 
 
 
3955
  #: pro/pro-class-post-digest.php:28
3956
  msgid "Post Digest"
3957
  msgstr ""
3958
 
3959
- #: pro/classes/class-es-pro-reports-data.php:383
 
 
 
 
3960
  msgid "Open and Click activity"
3961
  msgstr ""
3962
 
3963
- #: pro/classes/class-es-pro-reports-data.php:391
3964
  msgid "Country info"
3965
  msgstr ""
3966
 
3967
- #: pro/classes/class-es-pro-reports-data.php:496
3968
  msgid "Others"
3969
  msgstr ""
3970
 
3971
- #: pro/classes/class-es-pro-reports-data.php:524
3972
  msgid "No country data found."
3973
  msgstr ""
3974
 
3975
- #: pro/classes/class-es-pro-reports-data.php:535
3976
  msgid "Mail Client info"
3977
  msgstr ""
3978
 
3979
- #: pro/classes/class-es-pro-reports-data.php:571
3980
  msgid "No mail client data found."
3981
  msgstr ""
3982
 
3983
- #: pro/classes/class-es-pro-reports-data.php:585
3984
  msgid "Device info"
3985
  msgstr ""
3986
 
3987
- #: pro/classes/class-es-pro-reports-data.php:588
3988
  msgid "No device data found"
3989
  msgstr ""
3990
 
3991
- #: pro/classes/class-es-pro-reports-data.php:592
3992
  msgid "Browser info"
3993
  msgstr ""
3994
 
3995
- #: pro/classes/class-es-pro-reports-data.php:595
3996
  msgid "No browser data found"
3997
  msgstr ""
3998
 
3999
- #: pro/classes/class-es-pro-reports-data.php:599
4000
  msgid "OS info"
4001
  msgstr ""
4002
 
4003
- #: pro/classes/class-es-pro-reports-data.php:602
4004
  msgid "No OS data found"
4005
  msgstr ""
4006
 
4007
- #: pro/classes/class-es-pro-reports-data.php:628
4008
  msgid "Link activity"
4009
  msgstr ""
4010
 
4011
- #: pro/classes/class-es-pro-reports-data.php:688
4012
- msgid "Last 10 Open activity"
4013
- msgstr ""
4014
-
4015
- #: pro/classes/class-es-pro-reports-data.php:788
4016
- #: pro/classes/class-es-pro-reports-data.php:794
4017
- msgid "Unknown"
4018
- msgstr ""
4019
-
4020
- #: pro/classes/class-es-pro-reports-data.php:808
4021
- msgid "No open activity found."
4022
- msgstr ""
4023
-
4024
- #: pro/classes/class-es-pro-reports-data.php:863
4025
  #: pro/partials/es-dashboard.php:100
4026
  msgid "Clicks"
4027
  msgstr ""
4028
 
4029
- #: pro/classes/class-es-pro-sequence-report.php:94
4030
- msgid "Viewed Status"
 
 
 
 
4031
  msgstr ""
4032
 
4033
- #: pro/classes/class-es-pro-sequence-report.php:210
4034
  msgid "No Reports available."
4035
  msgstr ""
4036
 
4037
- #: pro/classes/class-es-pro-sequence-report.php:229
4038
  msgid "Sequence Message"
4039
  msgstr ""
4040
 
4041
- #: pro/classes/class-es-pro-sequence-report.php:311
4042
  msgid "Total Contacts"
4043
  msgstr ""
4044
 
4045
- #: pro/classes/class-ig-es-campaign-rules.php:91
4046
- msgid "next"
4047
- msgstr ""
4048
-
4049
- #: pro/classes/class-ig-es-campaign-rules.php:92
4050
- msgid "prev"
4051
- msgstr ""
4052
-
4053
- #: pro/classes/class-ig-es-campaign-rules.php:96
4054
- msgid "Do you really like to remove all conditions?"
4055
- msgstr ""
4056
-
4057
- #: pro/classes/class-ig-es-campaign-rules.php:141
4058
- msgid "Conditions"
4059
- msgstr ""
4060
-
4061
- #: pro/classes/class-ig-es-campaign-rules.php:150
4062
- msgid "Edit Conditions"
4063
- msgstr ""
4064
-
4065
- #: pro/classes/class-ig-es-campaign-rules.php:150
4066
- #: pro/classes/class-ig-es-campaign-rules.php:220
4067
- #: pro/classes/class-ig-es-campaign-rules.php:222
4068
- #: pro/classes/class-ig-es-campaign-rules.php:308
4069
- #: pro/classes/class-ig-es-campaign-rules.php:318
4070
- #: pro/classes/class-ig-es-campaign-rules.php:381
4071
- #: pro/classes/class-ig-es-campaign-rules.php:466
4072
- #: pro/classes/class-ig-es-campaign-rules.php:499
4073
- msgid "or"
4074
- msgstr ""
4075
-
4076
- #: pro/classes/class-ig-es-campaign-rules.php:150
4077
- msgid "remove all"
4078
- msgstr ""
4079
-
4080
- #: pro/classes/class-ig-es-campaign-rules.php:168
4081
- msgid "Campaign Rules"
4082
- msgstr ""
4083
-
4084
- #: pro/classes/class-ig-es-campaign-rules.php:173
4085
- msgid "Save Rules"
4086
- msgstr ""
4087
-
4088
- #: pro/classes/class-ig-es-campaign-rules.php:175
4089
- msgid "Close panel"
4090
- msgstr ""
4091
-
4092
- #: pro/classes/class-ig-es-campaign-rules.php:211
4093
- #: pro/classes/class-ig-es-campaign-rules.php:370
4094
- #: pro/classes/class-ig-es-campaign-rules.php:496
4095
- msgid "and"
4096
- msgstr ""
4097
-
4098
- #: pro/classes/class-ig-es-campaign-rules.php:220
4099
- #: pro/classes/class-ig-es-campaign-rules.php:335
4100
- msgid "Add Condition"
4101
- msgstr ""
4102
-
4103
- #: pro/classes/class-ig-es-campaign-rules.php:223
4104
- msgid "remove condition"
4105
- msgstr ""
4106
-
4107
- #: pro/classes/class-ig-es-campaign-rules.php:227
4108
- msgid "Fields"
4109
- msgstr ""
4110
-
4111
- #: pro/classes/class-ig-es-campaign-rules.php:234
4112
- msgid "Campaign related"
4113
- msgstr ""
4114
-
4115
- #: pro/classes/class-ig-es-campaign-rules.php:310
4116
- #: pro/classes/class-ig-es-campaign-rules.php:639
4117
- msgid "Any campaign"
4118
- msgstr ""
4119
-
4120
- #: pro/classes/class-ig-es-campaign-rules.php:314
4121
- msgid "no title"
4122
- msgstr ""
4123
-
4124
- #: pro/classes/class-ig-es-campaign-rules.php:319
4125
- msgid "remove"
4126
- msgstr ""
4127
-
4128
- #: pro/classes/class-ig-es-campaign-rules.php:323
4129
- msgid "No campaigns available"
4130
- msgstr ""
4131
-
4132
- #: pro/classes/class-ig-es-campaign-rules.php:456
4133
- msgctxt "opening curly double quote"
4134
- msgid "&#8220;"
4135
- msgstr ""
4136
-
4137
- #: pro/classes/class-ig-es-campaign-rules.php:457
4138
- msgctxt "closing curly double quote"
4139
- msgid "&#8221;"
4140
- msgstr ""
4141
-
4142
- #: pro/classes/class-ig-es-campaign-rules.php:530
4143
- msgid "has received"
4144
- msgstr ""
4145
-
4146
- #: pro/classes/class-ig-es-campaign-rules.php:531
4147
- msgid "has not received"
4148
- msgstr ""
4149
-
4150
- #: pro/classes/class-ig-es-campaign-rules.php:532
4151
- msgid "has received and opened"
4152
- msgstr ""
4153
-
4154
- #: pro/classes/class-ig-es-campaign-rules.php:533
4155
- msgid "has received but not opened"
4156
- msgstr ""
4157
-
4158
- #: pro/classes/class-ig-es-campaign-rules.php:534
4159
- msgid "has received and clicked"
4160
- msgstr ""
4161
-
4162
- #: pro/classes/class-ig-es-campaign-rules.php:535
4163
- msgid "has received and not clicked"
4164
- msgstr ""
4165
-
4166
- #: pro/classes/class-ig-es-campaign-rules.php:547
4167
- msgid "Any of the Last 5 Campaigns"
4168
- msgstr ""
4169
-
4170
- #: pro/classes/class-ig-es-campaign-rules.php:548
4171
- msgid "Any Campaigns within the last 7 days"
4172
- msgstr ""
4173
-
4174
- #: pro/classes/class-ig-es-campaign-rules.php:549
4175
- msgid "Any Campaigns within the last 1 month"
4176
- msgstr ""
4177
-
4178
- #: pro/classes/class-ig-es-campaign-rules.php:550
4179
- msgid "Any Campaigns within the last 3 months"
4180
- msgstr ""
4181
-
4182
- #: pro/classes/class-ig-es-campaign-rules.php:551
4183
- msgid "Any Campaigns within the last 6 months"
4184
- msgstr ""
4185
-
4186
- #: pro/classes/class-ig-es-campaign-rules.php:552
4187
- msgid "Any Campaigns within the last 12 months"
4188
- msgstr ""
4189
-
4190
- #: pro/classes/class-ig-es-campaign-rules.php:564
4191
- #: pro/classes/class-ig-es-campaign-rules.php:587
4192
- #: pro/classes/class-ig-es-campaign-rules.php:604
4193
- #: pro/classes/class-ig-es-campaign-rules.php:623
4194
- msgid "is"
4195
- msgstr ""
4196
-
4197
- #: pro/classes/class-ig-es-campaign-rules.php:565
4198
- #: pro/classes/class-ig-es-campaign-rules.php:588
4199
- #: pro/classes/class-ig-es-campaign-rules.php:605
4200
- #: pro/classes/class-ig-es-campaign-rules.php:624
4201
- msgid "is not"
4202
- msgstr ""
4203
-
4204
- #: pro/classes/class-ig-es-campaign-rules.php:566
4205
- #: pro/classes/class-ig-es-campaign-rules.php:606
4206
- msgid "contains"
4207
- msgstr ""
4208
-
4209
- #: pro/classes/class-ig-es-campaign-rules.php:567
4210
- #: pro/classes/class-ig-es-campaign-rules.php:607
4211
- msgid "contains not"
4212
- msgstr ""
4213
-
4214
- #: pro/classes/class-ig-es-campaign-rules.php:568
4215
- #: pro/classes/class-ig-es-campaign-rules.php:608
4216
- msgid "begins with"
4217
- msgstr ""
4218
-
4219
- #: pro/classes/class-ig-es-campaign-rules.php:569
4220
- #: pro/classes/class-ig-es-campaign-rules.php:609
4221
- msgid "ends with"
4222
- msgstr ""
4223
-
4224
- #: pro/classes/class-ig-es-campaign-rules.php:570
4225
- #: pro/classes/class-ig-es-campaign-rules.php:589
4226
- msgid "is greater than"
4227
- msgstr ""
4228
-
4229
- #: pro/classes/class-ig-es-campaign-rules.php:571
4230
- #: pro/classes/class-ig-es-campaign-rules.php:590
4231
- msgid "is smaller than"
4232
- msgstr ""
4233
-
4234
- #: pro/classes/class-ig-es-campaign-rules.php:572
4235
- #: pro/classes/class-ig-es-campaign-rules.php:591
4236
- msgid "is greater or equal"
4237
- msgstr ""
4238
-
4239
- #: pro/classes/class-ig-es-campaign-rules.php:573
4240
- #: pro/classes/class-ig-es-campaign-rules.php:592
4241
- msgid "is smaller or equal"
4242
- msgstr ""
4243
-
4244
- #: pro/classes/class-ig-es-campaign-rules.php:574
4245
- #: pro/classes/class-ig-es-campaign-rules.php:610
4246
- msgid "match regex pattern"
4247
- msgstr ""
4248
-
4249
- #: pro/classes/class-ig-es-campaign-rules.php:575
4250
- #: pro/classes/class-ig-es-campaign-rules.php:611
4251
- msgid "does not match regex pattern"
4252
- msgstr ""
4253
-
4254
  #: pro/classes/class-ig-es-unsubscribe-feedback.php:54
4255
  msgid "Your emails are not relevant to me"
4256
  msgstr ""
@@ -4377,108 +4423,108 @@ msgstr ""
4377
  msgid "Lost"
4378
  msgstr ""
4379
 
4380
- #: pro/pro-class-email-subscribers.php:194
4381
  msgid "Your cart has been restored."
4382
  msgstr ""
4383
 
4384
- #: pro/pro-class-email-subscribers.php:197
4385
  msgid "Your cart could not be restored, it may have expired."
4386
  msgstr ""
4387
 
4388
- #: pro/pro-class-email-subscribers.php:364
4389
  #: pro/pro-class-post-digest.php:25
4390
  msgid "Sequence"
4391
  msgstr ""
4392
 
4393
- #: pro/pro-class-email-subscribers.php:482
4394
  msgid "Please enter an email address."
4395
  msgstr ""
4396
 
4397
- #: pro/pro-class-email-subscribers.php:484
4398
  msgid "Add Attachment"
4399
  msgstr ""
4400
 
4401
  #. translators: %s: Attachmen max file size.
4402
- #: pro/pro-class-email-subscribers.php:486
4403
  msgid "Please attach a file having size lower than %s."
4404
  msgstr ""
4405
 
4406
- #: pro/pro-class-email-subscribers.php:616
4407
  msgid "Clean My List"
4408
  msgstr ""
4409
 
4410
- #: pro/pro-class-email-subscribers.php:617
4411
  msgid "List cleanup is in progress..."
4412
  msgstr ""
4413
 
4414
- #: pro/pro-class-email-subscribers.php:618
4415
  msgid "List cleanup completed successfully."
4416
  msgstr ""
4417
 
4418
- #: pro/pro-class-email-subscribers.php:635
4419
  msgid "Email status"
4420
  msgstr ""
4421
 
4422
- #: pro/pro-class-email-subscribers.php:636
4423
  msgid "Last opened at"
4424
  msgstr ""
4425
 
4426
- #: pro/pro-class-email-subscribers.php:639
4427
  msgid "IP"
4428
  msgstr ""
4429
 
4430
- #: pro/pro-class-email-subscribers.php:853
4431
  msgid "Select page"
4432
  msgstr ""
4433
 
4434
- #: pro/pro-class-email-subscribers.php:866
4435
  msgid "Subscriber will be redirected to selected page once they click on unsubscribe link from the email."
4436
  msgstr ""
4437
 
4438
- #: pro/pro-class-email-subscribers.php:879
4439
  msgid "Subscriber will be redirected to selected page once they click on email confirmation link from the double opt-in (confirmation) email."
4440
  msgstr ""
4441
 
4442
- #: pro/pro-class-email-subscribers.php:918
4443
  msgid "Access Key ID"
4444
  msgstr ""
4445
 
4446
- #: pro/pro-class-email-subscribers.php:929
4447
  msgid "Secret Access Key"
4448
  msgstr ""
4449
 
4450
- #: pro/pro-class-email-subscribers.php:941
4451
  msgid "Closest Region"
4452
  msgstr ""
4453
 
4454
- #: pro/pro-class-email-subscribers.php:942
4455
  msgid ""
4456
  "Please select the Amazon SES API region which is the closest to where your website is hosted.\n"
4457
  "\t\t\t\t\tThis can help to decrease network latency between your site and Amazon SES, which will speed up email sending."
4458
  msgstr ""
4459
 
4460
- #: pro/pro-class-email-subscribers.php:1035
4461
  msgid "Clicked"
4462
  msgstr ""
4463
 
4464
  #. translators: 1: Page 2: Duplicate action 3: Campaign id 4: Wp nonce
4465
- #: pro/pro-class-email-subscribers.php:1300
4466
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\">Duplicate</a>"
4467
  msgstr ""
4468
 
4469
- #: pro/pro-class-email-subscribers.php:1321
4470
  msgid "You are not allowed to duplicate campaign."
4471
  msgstr ""
4472
 
4473
- #: pro/pro-class-email-subscribers.php:1336
4474
  msgid "Campaign duplicated !"
4475
  msgstr ""
4476
 
4477
- #: pro/pro-class-email-subscribers.php:1601
4478
  msgid "Import WordPress users with following roles"
4479
  msgstr ""
4480
 
4481
- #: pro/pro-class-email-subscribers.php:1651
4482
  msgid "Proceed"
4483
  msgstr ""
4484
 
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Email Subscribers & Newsletters 4.6.12\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-03-04T12:53:18+05:30\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
29
 
30
  #. Author of the plugin
31
  #: lite/admin/partials/help.php:28
32
+ #: lite/includes/class-email-subscribers.php:1488
33
  msgid "Icegram"
34
  msgstr ""
35
 
71
  msgid "Connect to Icegram"
72
  msgstr ""
73
 
74
+ #: lite/admin/class-email-subscribers-admin.php:163
75
  msgid "An error has occured. Please try again later."
76
  msgstr ""
77
 
78
+ #: lite/admin/class-email-subscribers-admin.php:164
79
  msgid "Broadcast saved as draft successfully."
80
  msgstr ""
81
 
82
+ #: lite/admin/class-email-subscribers-admin.php:165
83
  msgid "An error has occured while saving the broadcast. Please try again later."
84
  msgstr ""
85
 
86
+ #: lite/admin/class-email-subscribers-admin.php:166
87
  msgid "Please add a broadcast subject before saving."
88
  msgstr ""
89
 
90
+ #: lite/admin/class-email-subscribers-admin.php:167
91
+ #: pro/pro-class-email-subscribers.php:480
92
  msgid "Please add email body."
93
  msgstr ""
94
 
95
+ #: lite/admin/class-email-subscribers-admin.php:186
96
  msgid "Please select a trigger before saving the workflow."
97
  msgstr ""
98
 
99
+ #: lite/admin/class-email-subscribers-admin.php:187
100
  msgid "Please add some actions before saving the workflow."
101
  msgstr ""
102
 
103
+ #: lite/admin/class-email-subscribers-admin.php:188
104
  msgid "Please select an action that this workflow should perform before saving the workflow."
105
  msgstr ""
106
 
107
+ #: lite/admin/class-email-subscribers-admin.php:189
108
  msgid "Changing the trigger will remove existing actions. Do you want to proceed anyway?."
109
  msgstr ""
110
 
111
+ #: lite/admin/class-email-subscribers-admin.php:190
112
  msgid "Copied!"
113
  msgstr ""
114
 
115
+ #: lite/admin/class-email-subscribers-admin.php:212
116
  msgid "Please select the status for the importing contacts!"
117
  msgstr ""
118
 
119
+ #: lite/admin/class-email-subscribers-admin.php:213
120
  msgid "Please select the email address column!"
121
  msgstr ""
122
 
123
+ #: lite/admin/class-email-subscribers-admin.php:214
124
  msgid "Preparing Data"
125
  msgstr ""
126
 
127
  #. translators: %s: Upload progress
128
+ #: lite/admin/class-email-subscribers-admin.php:216
129
  msgid "Uploading...%s"
130
  msgstr ""
131
 
132
  #. translators: %s: Import progress
133
+ #: lite/admin/class-email-subscribers-admin.php:218
134
  msgid "Importing contacts...%s"
135
  msgstr ""
136
 
137
  #. translators: %s: Import failed svg icon
138
+ #: lite/admin/class-email-subscribers-admin.php:220
139
  msgid "Import failed! %s"
140
  msgstr ""
141
 
142
+ #: lite/admin/class-email-subscribers-admin.php:221
143
  msgid "Please do not close this window until it completes..."
144
  msgstr ""
145
 
146
+ #: lite/admin/class-email-subscribers-admin.php:222
147
  msgid "Preparing Import..."
148
  msgstr ""
149
 
150
  #. translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage
151
+ #: lite/admin/class-email-subscribers-admin.php:224
152
  msgid "Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage"
153
  msgstr ""
154
 
155
  #. translators: %s: Time left in minutes
156
+ #: lite/admin/class-email-subscribers-admin.php:226
157
  msgid "Estimate time left: %s minutes"
158
  msgstr ""
159
 
160
  #. translators: %s: Next attempt delaly time
161
+ #: lite/admin/class-email-subscribers-admin.php:228
162
  msgid "Continues in %s seconds"
163
  msgstr ""
164
 
165
+ #: lite/admin/class-email-subscribers-admin.php:229
166
  msgid "There was a problem during importing contacts. Please check the error logs for more information!"
167
  msgstr ""
168
 
169
+ #: lite/admin/class-email-subscribers-admin.php:230
170
  msgid "Do you really like to import these contacts?"
171
  msgstr ""
172
 
173
  #. translators: %s: Process complete svg icon
174
+ #: lite/admin/class-email-subscribers-admin.php:232
175
  msgid "Import complete! %s"
176
  msgstr ""
177
 
178
+ #: lite/admin/class-email-subscribers-admin.php:233
179
  msgid "You are currently importing subscribers! If you leave the page all pending subscribers don't get imported!"
180
  msgstr ""
181
 
182
+ #: lite/admin/class-email-subscribers-admin.php:283
183
  #: lite/admin/partials/dashboard.php:57
184
  msgid "Dashboard"
185
  msgstr ""
186
 
187
+ #: lite/admin/class-email-subscribers-admin.php:288
188
  #: lite/admin/partials/dashboard.php:64
189
  #: lite/includes/classes/class-es-contacts-table.php:219
190
+ #: lite/includes/pro-features.php:105
191
  #: starter/starter-class-email-subscribers.php:599
192
  msgid "Audience"
193
  msgstr ""
194
 
195
+ #: lite/admin/class-email-subscribers-admin.php:292
196
  #: lite/includes/classes/class-es-forms-table.php:448
197
  #: lite/includes/classes/class-es-lists-table.php:34
198
  #: lite/includes/classes/class-es-lists-table.php:88
199
  msgid "Lists"
200
  msgstr ""
201
 
202
+ #: lite/admin/class-email-subscribers-admin.php:298
203
  #: lite/includes/classes/class-es-form-widget.php:70
204
  #: lite/includes/classes/class-es-forms-table.php:39
205
  #: lite/includes/classes/class-es-forms-table.php:40
206
  #: lite/includes/classes/class-es-forms-table.php:93
207
+ #: lite/includes/pro-features.php:106
208
  #: starter/starter-class-email-subscribers.php:600
209
  msgid "Forms"
210
  msgstr ""
211
 
212
+ #: lite/admin/class-email-subscribers-admin.php:304
213
  #: lite/includes/classes/class-es-campaigns-table.php:109
214
+ #: lite/includes/classes/class-es-newsletters.php:245
215
+ #: lite/includes/classes/class-es-newsletters.php:251
216
+ #: lite/includes/pro-features.php:107
217
  #: pro/partials/es-dashboard.php:8
218
  #: starter/starter-class-email-subscribers.php:601
219
  msgid "Campaigns"
220
  msgstr ""
221
 
222
+ #: lite/admin/class-email-subscribers-admin.php:308
223
  msgid "Post Notifications"
224
  msgstr ""
225
 
226
+ #: lite/admin/class-email-subscribers-admin.php:310
227
+ #: lite/includes/classes/class-es-campaigns-table.php:356
228
+ #: lite/includes/classes/class-es-newsletters.php:260
229
+ #: lite/includes/classes/class-es-reports-table.php:149
230
  #: lite/includes/classes/class-es-templates-table.php:282
231
+ #: lite/includes/pro-features.php:1028
232
  #: lite/public/class-email-subscribers-public.php:471
233
+ #: pro/classes/class-es-pro-reports-data.php:142
234
+ #: pro/classes/class-es-pro-reports-data.php:193
235
  msgid "Broadcast"
236
  msgstr ""
237
 
238
+ #: lite/admin/class-email-subscribers-admin.php:311
239
+ #: lite/includes/classes/class-es-newsletters.php:419
240
+ #: lite/includes/classes/class-es-reports-table.php:472
241
  msgid "Template Preview"
242
  msgstr ""
243
 
244
+ #: lite/admin/class-email-subscribers-admin.php:318
245
+ #: lite/includes/pro-features.php:110
246
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
247
  #: lite/includes/workflows/class-es-workflows-table.php:53
248
  #: lite/includes/workflows/class-es-workflows-table.php:156
250
  msgid "Workflows"
251
  msgstr ""
252
 
253
+ #: lite/admin/class-email-subscribers-admin.php:327
254
  #: lite/admin/partials/dashboard.php:195
255
+ #: lite/includes/classes/class-es-campaign-report.php:17
256
  #: lite/includes/classes/class-es-reports-table.php:17
257
  #: lite/includes/classes/class-es-reports-table.php:56
258
  #: lite/includes/classes/class-es-reports-table.php:114
259
+ #: lite/includes/pro-features.php:108
260
  #: pro/classes/class-es-pro-sequence-report.php:21
261
  #: pro/classes/class-es-pro-sequence-report.php:44
262
  #: pro/classes/class-es-pro-sequence-report.php:77
264
  msgid "Reports"
265
  msgstr ""
266
 
267
+ #: lite/admin/class-email-subscribers-admin.php:331
268
  #: lite/admin/partials/dashboard.php:203
269
  #: lite/includes/classes/class-es-admin-settings.php:119
270
  msgid "Settings"
271
  msgstr ""
272
 
273
+ #: lite/admin/class-email-subscribers-admin.php:336
274
  msgid "Go To Icegram"
275
  msgstr ""
276
 
277
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
278
+ #: lite/admin/class-email-subscribers-admin.php:878
279
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
280
  msgstr ""
281
 
282
+ #: lite/admin/class-email-subscribers-admin.php:906
283
  msgid "Something went wrong"
284
  msgstr ""
285
 
286
+ #: lite/admin/class-ig-es-campaign-rules.php:106
287
+ msgid "next"
288
+ msgstr ""
289
+
290
+ #: lite/admin/class-ig-es-campaign-rules.php:107
291
+ msgid "prev"
292
+ msgstr ""
293
+
294
+ #: lite/admin/class-ig-es-campaign-rules.php:111
295
+ msgid "Do you really like to remove all conditions?"
296
+ msgstr ""
297
+
298
+ #: lite/admin/class-ig-es-campaign-rules.php:186
299
+ msgid "Recipients"
300
+ msgstr ""
301
+
302
+ #: lite/admin/class-ig-es-campaign-rules.php:196
303
+ msgid "Add recipients"
304
+ msgstr ""
305
+
306
+ #: lite/admin/class-ig-es-campaign-rules.php:199
307
+ #: lite/admin/class-ig-es-campaign-rules.php:273
308
+ #: lite/admin/class-ig-es-campaign-rules.php:275
309
+ #: lite/admin/class-ig-es-campaign-rules.php:446
310
+ #: lite/admin/class-ig-es-campaign-rules.php:531
311
+ #: lite/admin/class-ig-es-campaign-rules.php:536
312
+ #: lite/admin/class-ig-es-campaign-rules.php:542
313
+ #: lite/admin/class-ig-es-campaign-rules.php:576
314
+ msgid "or"
315
+ msgstr ""
316
+
317
+ #: lite/admin/class-ig-es-campaign-rules.php:201
318
+ msgid "remove all"
319
+ msgstr ""
320
+
321
+ #: lite/admin/class-ig-es-campaign-rules.php:221
322
+ msgid "Campaign Rules"
323
+ msgstr ""
324
+
325
+ #: lite/admin/class-ig-es-campaign-rules.php:226
326
+ msgid "Save Rules"
327
+ msgstr ""
328
+
329
+ #: lite/admin/class-ig-es-campaign-rules.php:228
330
+ msgid "Close panel"
331
+ msgstr ""
332
+
333
+ #: lite/admin/class-ig-es-campaign-rules.php:242
334
+ msgid "Total recipients"
335
+ msgstr ""
336
+
337
+ #: lite/admin/class-ig-es-campaign-rules.php:264
338
+ #: lite/admin/class-ig-es-campaign-rules.php:435
339
+ #: lite/admin/class-ig-es-campaign-rules.php:573
340
+ msgid "and"
341
+ msgstr ""
342
+
343
+ #: lite/admin/class-ig-es-campaign-rules.php:273
344
+ #: lite/admin/class-ig-es-campaign-rules.php:400
345
+ msgid "Add Condition"
346
+ msgstr ""
347
+
348
+ #: lite/admin/class-ig-es-campaign-rules.php:276
349
+ msgid "remove condition"
350
+ msgstr ""
351
+
352
+ #: lite/admin/class-ig-es-campaign-rules.php:360
353
+ #: lite/admin/class-ig-es-campaign-rules.php:734
354
+ msgid "Any campaign"
355
+ msgstr ""
356
+
357
+ #: lite/admin/class-ig-es-campaign-rules.php:364
358
+ msgid "no title"
359
+ msgstr ""
360
+
361
+ #: lite/admin/class-ig-es-campaign-rules.php:370
362
+ #: lite/admin/class-ig-es-campaign-rules.php:388
363
+ msgid "No campaigns available"
364
+ msgstr ""
365
+
366
+ #: lite/admin/class-ig-es-campaign-rules.php:379
367
+ #: lite/admin/class-ig-es-campaign-rules.php:760
368
+ msgid "Any list"
369
+ msgstr ""
370
+
371
+ #: lite/admin/class-ig-es-campaign-rules.php:521
372
+ msgctxt "opening curly double quote"
373
+ msgid "&#8220;"
374
+ msgstr ""
375
+
376
+ #: lite/admin/class-ig-es-campaign-rules.php:522
377
+ msgctxt "closing curly double quote"
378
+ msgid "&#8221;"
379
+ msgstr ""
380
+
381
+ #: lite/admin/class-ig-es-campaign-rules.php:594
382
+ msgid "is in List"
383
+ msgstr ""
384
+
385
+ #: lite/admin/class-ig-es-campaign-rules.php:611
386
+ #: lite/includes/classes/class-es-admin-settings.php:199
387
+ #: lite/includes/classes/class-es-campaign-report.php:179
388
+ #: lite/includes/classes/class-es-contacts-table.php:764
389
+ #: lite/includes/classes/class-es-contacts-table.php:1026
390
+ #: lite/includes/classes/class-es-export-subscribers.php:339
391
+ #: lite/includes/classes/class-es-forms-table.php:382
392
+ #: lite/includes/classes/class-es-import-subscribers.php:401
393
+ #: lite/includes/classes/class-es-import-subscribers.php:538
394
+ #: lite/includes/classes/class-es-import-subscribers.php:861
395
+ #: lite/includes/pro-features.php:857
396
+ #: lite/includes/pro-features.php:1388
397
+ #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
398
+ #: lite/public/partials/class-es-shortcode.php:151
399
+ #: pro/classes/class-es-pro-campaign-rules.php:35
400
+ #: pro/pro-class-email-subscribers.php:834
401
+ #: pro/workflows/actions/class-es-action-send-email.php:29
402
+ msgid "Email"
403
+ msgstr ""
404
+
405
+ #: lite/admin/class-ig-es-campaign-rules.php:612
406
+ #: lite/includes/pro-features.php:1137
407
+ #: lite/includes/pro-features.php:1387
408
+ #: pro/classes/class-es-pro-campaign-rules.php:38
409
+ #: pro/classes/class-es-pro-reports-data.php:411
410
+ msgid "Country"
411
+ msgstr ""
412
+
413
+ #: lite/admin/class-ig-es-campaign-rules.php:625
414
+ #: pro/classes/class-es-pro-campaign-rules.php:43
415
+ msgid "has received"
416
+ msgstr ""
417
+
418
+ #: lite/admin/class-ig-es-campaign-rules.php:626
419
+ #: pro/classes/class-es-pro-campaign-rules.php:46
420
+ msgid "has not received"
421
+ msgstr ""
422
+
423
+ #: lite/admin/class-ig-es-campaign-rules.php:627
424
+ #: pro/classes/class-es-pro-campaign-rules.php:49
425
+ msgid "has received and opened"
426
+ msgstr ""
427
+
428
+ #: lite/admin/class-ig-es-campaign-rules.php:628
429
+ #: pro/classes/class-es-pro-campaign-rules.php:52
430
+ msgid "has received but not opened"
431
+ msgstr ""
432
+
433
+ #: lite/admin/class-ig-es-campaign-rules.php:629
434
+ #: pro/classes/class-es-pro-campaign-rules.php:55
435
+ msgid "has received and clicked"
436
+ msgstr ""
437
+
438
+ #: lite/admin/class-ig-es-campaign-rules.php:630
439
+ #: pro/classes/class-es-pro-campaign-rules.php:58
440
+ msgid "has received and not clicked"
441
+ msgstr ""
442
+
443
+ #: lite/admin/class-ig-es-campaign-rules.php:642
444
+ msgid "Any of the Last 5 Campaigns"
445
+ msgstr ""
446
+
447
+ #: lite/admin/class-ig-es-campaign-rules.php:643
448
+ msgid "Any Campaigns within the last 7 days"
449
+ msgstr ""
450
+
451
+ #: lite/admin/class-ig-es-campaign-rules.php:644
452
+ msgid "Any Campaigns within the last 1 month"
453
+ msgstr ""
454
+
455
+ #: lite/admin/class-ig-es-campaign-rules.php:645
456
+ msgid "Any Campaigns within the last 3 months"
457
+ msgstr ""
458
+
459
+ #: lite/admin/class-ig-es-campaign-rules.php:646
460
+ msgid "Any Campaigns within the last 6 months"
461
+ msgstr ""
462
+
463
+ #: lite/admin/class-ig-es-campaign-rules.php:647
464
+ msgid "Any Campaigns within the last 12 months"
465
+ msgstr ""
466
+
467
+ #: lite/admin/class-ig-es-campaign-rules.php:659
468
+ #: lite/admin/class-ig-es-campaign-rules.php:682
469
+ #: lite/admin/class-ig-es-campaign-rules.php:699
470
+ #: lite/admin/class-ig-es-campaign-rules.php:718
471
+ msgid "is"
472
+ msgstr ""
473
+
474
+ #: lite/admin/class-ig-es-campaign-rules.php:660
475
+ #: lite/admin/class-ig-es-campaign-rules.php:683
476
+ #: lite/admin/class-ig-es-campaign-rules.php:700
477
+ #: lite/admin/class-ig-es-campaign-rules.php:719
478
+ msgid "is not"
479
+ msgstr ""
480
+
481
+ #: lite/admin/class-ig-es-campaign-rules.php:661
482
+ #: lite/admin/class-ig-es-campaign-rules.php:701
483
+ msgid "contains"
484
+ msgstr ""
485
+
486
+ #: lite/admin/class-ig-es-campaign-rules.php:662
487
+ #: lite/admin/class-ig-es-campaign-rules.php:702
488
+ msgid "contains not"
489
+ msgstr ""
490
+
491
+ #: lite/admin/class-ig-es-campaign-rules.php:663
492
+ #: lite/admin/class-ig-es-campaign-rules.php:703
493
+ msgid "begins with"
494
+ msgstr ""
495
+
496
+ #: lite/admin/class-ig-es-campaign-rules.php:664
497
+ #: lite/admin/class-ig-es-campaign-rules.php:704
498
+ msgid "ends with"
499
+ msgstr ""
500
+
501
+ #: lite/admin/class-ig-es-campaign-rules.php:665
502
+ #: lite/admin/class-ig-es-campaign-rules.php:684
503
+ msgid "is greater than"
504
+ msgstr ""
505
+
506
+ #: lite/admin/class-ig-es-campaign-rules.php:666
507
+ #: lite/admin/class-ig-es-campaign-rules.php:685
508
+ msgid "is smaller than"
509
+ msgstr ""
510
+
511
+ #: lite/admin/class-ig-es-campaign-rules.php:667
512
+ #: lite/admin/class-ig-es-campaign-rules.php:686
513
+ msgid "is greater or equal"
514
+ msgstr ""
515
+
516
+ #: lite/admin/class-ig-es-campaign-rules.php:668
517
+ #: lite/admin/class-ig-es-campaign-rules.php:687
518
+ msgid "is smaller or equal"
519
+ msgstr ""
520
+
521
+ #: lite/admin/class-ig-es-campaign-rules.php:669
522
+ #: lite/admin/class-ig-es-campaign-rules.php:705
523
+ msgid "match regex pattern"
524
+ msgstr ""
525
+
526
+ #: lite/admin/class-ig-es-campaign-rules.php:670
527
+ #: lite/admin/class-ig-es-campaign-rules.php:706
528
+ msgid "does not match regex pattern"
529
+ msgstr ""
530
+
531
  #: lite/admin/class-ig-es-onboarding.php:171
532
  msgid "An error occured. Please try again later."
533
  msgstr ""
624
  msgstr ""
625
 
626
  #: lite/admin/partials/dashboard.php:134
627
+ #: lite/includes/pro-features.php:1140
628
+ #: lite/includes/pro-features.php:1178
629
+ #: pro/classes/class-es-pro-reports-data.php:414
630
+ #: pro/classes/class-es-pro-reports-data.php:557
631
+ #: pro/classes/class-es-pro-reports-data.php:741
632
  #: pro/partials/es-dashboard.php:88
633
  msgid "Opens"
634
  msgstr ""
642
  msgstr ""
643
 
644
  #: lite/admin/partials/dashboard.php:158
645
+ #: lite/includes/pro-features.php:1076
646
+ #: pro/classes/class-es-pro-reports-data.php:377
647
  msgid "Avg Click Rate"
648
  msgstr ""
649
 
723
  msgstr ""
724
 
725
  #: lite/admin/partials/help.php:209
726
+ #: lite/includes/classes/class-es-campaign-report.php:180
727
+ #: lite/includes/classes/class-es-campaigns-table.php:619
728
  #: lite/includes/classes/class-es-export-subscribers.php:341
729
+ #: lite/includes/classes/class-es-reports-table.php:230
 
730
  #: lite/includes/workflows/class-es-workflows-table.php:311
731
+ #: pro/classes/class-es-pro-sequence-report.php:296
 
732
  msgid "Status"
733
  msgstr ""
734
 
737
  #: lite/includes/class-es-common.php:1653
738
  #: lite/includes/classes/class-es-campaigns-table.php:293
739
  #: lite/includes/workflows/admin/views/meta-box-save.php:28
740
+ #: pro/classes/class-es-pro-reports-data.php:307
741
+ #: pro/classes/class-es-pro-sequence-report.php:234
742
  msgid "Active"
743
  msgstr ""
744
 
745
  #: lite/admin/partials/help.php:213
746
  #: lite/includes/class-es-common.php:385
747
  #: lite/includes/workflows/admin/views/meta-box-save.php:27
748
+ #: pro/classes/class-es-pro-reports-data.php:312
749
+ #: pro/classes/class-es-pro-sequence-report.php:234
750
  msgid "Inactive"
751
  msgstr ""
752
 
1004
  msgstr ""
1005
 
1006
  #: lite/includes/class-email-subscribers-activator.php:55
1007
+ #: lite/includes/class-email-subscribers.php:1485
1008
  #: lite/includes/classes/class-es-form-widget.php:11
1009
  #: lite/includes/classes/class-es-old-widget.php:13
1010
  #: lite/includes/classes/class-es-old-widget.php:15
1040
  msgstr ""
1041
 
1042
  #. translators: 1: Error message 2: File name 3: Line number
1043
+ #: lite/includes/class-email-subscribers.php:1271
1044
  msgid "%1$s in %2$s on line %3$s"
1045
  msgstr ""
1046
 
1047
+ #: lite/includes/class-email-subscribers.php:1498
1048
  msgid "Icegram WC"
1049
  msgstr ""
1050
 
1067
  msgstr ""
1068
 
1069
  #: lite/includes/class-es-common.php:212
1070
+ #: lite/includes/classes/class-es-post-notifications.php:375
1071
  msgid "Select Status"
1072
  msgstr ""
1073
 
1142
  msgstr ""
1143
 
1144
  #: lite/includes/class-es-common.php:1450
1145
+ #: lite/includes/pro-features.php:95
1146
  msgid "Email Subscribers PRO"
1147
  msgstr ""
1148
 
1155
  msgstr ""
1156
 
1157
  #: lite/includes/class-es-common.php:1649
1158
+ #: lite/includes/classes/class-es-campaigns-table.php:558
1159
  msgid "Draft"
1160
  msgstr ""
1161
 
1162
  #: lite/includes/class-es-common.php:1650
1163
+ #: lite/includes/classes/class-es-campaign-report.php:238
1164
+ #: lite/includes/classes/class-es-campaigns-table.php:540
1165
+ #: lite/includes/classes/class-es-campaigns-table.php:576
1166
+ #: lite/includes/classes/class-es-reports-table.php:511
1167
+ #: pro/classes/class-es-pro-reports-data.php:300
1168
  msgid "Sending"
1169
  msgstr ""
1170
 
1171
  #: lite/includes/class-es-common.php:1651
1172
  #: lite/includes/classes/class-es-campaigns-table.php:294
1173
+ #: lite/includes/classes/class-es-campaigns-table.php:533
1174
+ #: lite/includes/classes/class-es-campaigns-table.php:567
1175
  #: lite/includes/workflows/admin/views/meta-box-timing.php:36
1176
  msgid "Scheduled"
1177
  msgstr ""
1178
 
1179
  #: lite/includes/class-es-common.php:1652
1180
+ #: lite/includes/classes/class-es-campaign-report.php:222
1181
+ #: lite/includes/classes/class-es-campaigns-table.php:547
1182
+ #: lite/includes/classes/class-es-campaigns-table.php:595
1183
+ #: lite/includes/pro-features.php:1021
1184
+ #: lite/includes/pro-features.php:1068
1185
+ #: pro/classes/class-es-pro-reports-data.php:284
1186
+ #: pro/classes/class-es-pro-reports-data.php:369
1187
  msgid "Sent"
1188
  msgstr ""
1189
 
1190
  #: lite/includes/class-es-common.php:1677
1191
+ #: lite/includes/classes/class-es-campaigns-table.php:679
1192
  #: lite/includes/classes/class-es-contacts-table.php:1093
1193
  msgid "All Statuses"
1194
  msgstr ""
1207
  msgstr ""
1208
 
1209
  #: lite/includes/class-es-common.php:1916
1210
+ #: lite/includes/classes/class-es-reports-table.php:513
1211
+ #: pro/classes/class-es-pro-reports-data.php:889
 
 
 
 
 
 
 
 
 
 
 
1212
  msgid "All Status"
1213
  msgstr ""
1214
 
1243
 
1244
  #: lite/includes/classes/class-es-admin-settings.php:190
1245
  #: lite/includes/classes/class-es-admin-settings.php:193
1246
+ #: lite/includes/classes/class-es-campaigns-table.php:614
1247
  #: lite/includes/classes/class-es-contacts-table.php:1025
1248
  #: lite/includes/classes/class-es-forms-table.php:399
1249
  #: lite/includes/classes/class-es-forms-table.php:889
1256
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
1257
  msgstr ""
1258
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1259
  #: lite/includes/classes/class-es-admin-settings.php:200
1260
  msgid "Choose a FROM email address for all the emails to be sent from this plugin"
1261
  msgstr ""
1366
  #: lite/includes/classes/class-es-admin-settings.php:386
1367
  #: lite/includes/classes/class-es-admin-settings.php:419
1368
  #: lite/includes/classes/class-es-admin-settings.php:456
1369
+ #: lite/includes/classes/class-es-newsletters.php:345
1370
+ #: lite/includes/classes/class-es-reports-table.php:228
1371
+ #: pro/classes/class-es-pro-sequence-report.php:294
1372
  msgid "Subject"
1373
  msgstr ""
1374
 
1376
  #: lite/includes/classes/class-es-admin-settings.php:397
1377
  #: lite/includes/classes/class-es-admin-settings.php:427
1378
  #: lite/includes/classes/class-es-admin-settings.php:467
1379
+ #: lite/includes/classes/class-es-newsletters.php:266
1380
  #: pro/pro-class-sequences.php:412
1381
  msgid "Content"
1382
  msgstr ""
1547
  msgid "In %s"
1548
  msgstr ""
1549
 
1550
+ #. translators: 1: Slug 2: View Action 3: Hash 4. WP Nonce
1551
+ #: lite/includes/classes/class-es-campaign-report.php:16
1552
+ #: lite/includes/classes/class-es-campaigns-table.php:438
1553
+ #: lite/includes/classes/class-es-campaigns-table.php:441
1554
+ #: lite/includes/classes/class-es-campaigns-table.php:469
1555
+ #: lite/includes/classes/class-es-reports-table.php:16
1556
+ #: lite/includes/pro-features.php:1013
1557
+ #: pro/classes/class-es-pro-reports-data.php:268
1558
+ #: pro/classes/class-es-pro-sequence-report.php:20
1559
+ msgid "Report"
1560
+ msgstr ""
1561
+
1562
+ #: lite/includes/classes/class-es-campaign-report.php:42
1563
+ msgid "Activity Info"
1564
+ msgstr ""
1565
+
1566
+ #. translators: %s: Total items in the table
1567
+ #: lite/includes/classes/class-es-campaign-report.php:79
1568
+ msgid "%s item"
1569
+ msgid_plural "%s items"
1570
+ msgstr[0] ""
1571
+ msgstr[1] ""
1572
+
1573
+ #: lite/includes/classes/class-es-campaign-report.php:178
1574
+ msgid "Sr No"
1575
+ msgstr ""
1576
+
1577
+ #: lite/includes/classes/class-es-campaign-report.php:181
1578
+ msgid "Sent Date"
1579
+ msgstr ""
1580
+
1581
+ #: lite/includes/classes/class-es-campaign-report.php:182
1582
+ msgid "Viewed Date"
1583
+ msgstr ""
1584
+
1585
+ #: lite/includes/classes/class-es-campaign-report.php:230
1586
+ #: lite/includes/classes/class-es-reports-table.php:510
1587
+ #: pro/classes/class-es-pro-reports-data.php:292
1588
+ #: pro/partials/es-dashboard.php:60
1589
+ msgid "In Queue"
1590
+ msgstr ""
1591
+
1592
+ #: lite/includes/classes/class-es-campaign-report.php:246
1593
+ #: lite/includes/classes/class-es-contacts-table.php:356
1594
+ #: lite/includes/pro-features.php:1052
1595
+ #: pro/classes/class-es-pro-reports-data.php:353
1596
+ #: pro/classes/class-es-pro-reports-data.php:886
1597
+ #: pro/pro-class-email-subscribers.php:1634
1598
+ msgid "Opened"
1599
+ msgstr ""
1600
+
1601
+ #: lite/includes/classes/class-es-campaign-report.php:390
1602
+ msgid "Campaign Analytics"
1603
+ msgstr ""
1604
+
1605
  #: lite/includes/classes/class-es-campaigns-table.php:37
1606
  #: lite/includes/classes/class-es-campaigns-table.php:38
1607
  msgid "Campaign"
1650
  msgstr ""
1651
 
1652
  #: lite/includes/classes/class-es-campaigns-table.php:296
1653
+ #: lite/includes/classes/class-es-campaigns-table.php:586
1654
  msgid "Paused"
1655
  msgstr ""
1656
 
1658
  msgid "Finished"
1659
  msgstr ""
1660
 
1661
+ #: lite/includes/classes/class-es-campaigns-table.php:368
1662
  msgid "All"
1663
  msgstr ""
1664
 
1665
+ #: lite/includes/classes/class-es-campaigns-table.php:370
1666
  #: starter/starter-class-email-subscribers.php:362
1667
  msgid "None"
1668
  msgstr ""
1669
 
1670
  #. translators: 1: Slug 2: Edit Action 3: List id 4. WP Nonce
1671
  #. translators: 1: Page 2: Edit action 3: List id 4: List nonce
 
1672
  #: lite/includes/classes/class-es-campaigns-table.php:432
1673
+ #: lite/includes/classes/class-es-campaigns-table.php:456
1674
  #: lite/includes/classes/class-es-lists-table.php:540
1675
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1676
  msgstr ""
1677
 
 
 
 
 
 
 
 
 
 
 
 
1678
  #. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
1679
  #. translators: 1: Page 2: Delete action 3: List id 4: List nonce
1680
+ #: lite/includes/classes/class-es-campaigns-table.php:481
1681
  #: lite/includes/classes/class-es-lists-table.php:542
1682
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1683
  msgstr ""
1684
 
1685
+ #: lite/includes/classes/class-es-campaigns-table.php:615
1686
+ #: lite/includes/classes/class-es-reports-table.php:229
1687
+ #: pro/classes/class-es-pro-sequence-report.php:295
1688
  msgid "Type"
1689
  msgstr ""
1690
 
1691
+ #: lite/includes/classes/class-es-campaigns-table.php:616
1692
  #: lite/includes/classes/class-es-contacts-table.php:815
1693
  #: lite/includes/classes/class-es-contacts-table.php:1027
1694
  msgid "List(s)"
1695
  msgstr ""
1696
 
1697
+ #: lite/includes/classes/class-es-campaigns-table.php:617
1698
  msgid "Categories"
1699
  msgstr ""
1700
 
1701
+ #: lite/includes/classes/class-es-campaigns-table.php:618
1702
  #: lite/includes/classes/class-es-contacts-table.php:1028
1703
  #: lite/includes/classes/class-es-forms-table.php:892
1704
  #: lite/includes/classes/class-es-lists-table.php:564
1706
  msgid "Created"
1707
  msgstr ""
1708
 
1709
+ #: lite/includes/classes/class-es-campaigns-table.php:671
1710
  msgid "Search Campaigns"
1711
  msgstr ""
1712
 
1713
+ #: lite/includes/classes/class-es-campaigns-table.php:688
1714
+ #: lite/includes/classes/class-es-reports-table.php:522
1715
  msgid "All Type"
1716
  msgstr ""
1717
 
1718
+ #: lite/includes/classes/class-es-campaigns-table.php:736
1719
  msgid "You are not allowed to delete campaign."
1720
  msgstr ""
1721
 
1722
+ #: lite/includes/classes/class-es-campaigns-table.php:741
1723
  msgid "Campaign deleted successfully!"
1724
  msgstr ""
1725
 
1726
+ #: lite/includes/classes/class-es-campaigns-table.php:762
1727
  msgid "Campaign(s) deleted successfully!"
1728
  msgstr ""
1729
 
1730
+ #: lite/includes/classes/class-es-campaigns-table.php:766
1731
  msgid "Please select campaign(s) to delete."
1732
  msgstr ""
1733
 
1768
 
1769
  #: lite/includes/classes/class-es-contacts-table.php:311
1770
  #: lite/includes/classes/class-es-export-subscribers.php:82
1771
+ #: lite/includes/classes/class-es-reports-table.php:233
 
1772
  msgid "Total contacts"
1773
  msgstr ""
1774
 
 
 
 
 
 
 
 
 
1775
  #: lite/includes/classes/class-es-contacts-table.php:391
1776
  msgid " Add New Contact"
1777
  msgstr ""
1844
  msgstr ""
1845
 
1846
  #: lite/includes/classes/class-es-contacts-table.php:776
1847
+ #: lite/includes/pro-features.php:863
1848
+ #: pro/pro-class-email-subscribers.php:838
1849
  msgid "Enter email"
1850
  msgstr ""
1851
 
1860
  #: lite/includes/classes/class-es-contacts-table.php:832
1861
  #: lite/includes/classes/class-es-forms-table.php:549
1862
  #: lite/includes/classes/class-es-lists-table.php:321
1863
+ #: lite/includes/classes/class-es-post-notifications.php:432
1864
  msgid "Save Changes"
1865
  msgstr ""
1866
 
1867
  #: lite/includes/classes/class-es-contacts-table.php:839
1868
  #: lite/includes/classes/class-es-forms-table.php:553
1869
  #: lite/includes/classes/class-es-lists-table.php:325
1870
+ #: lite/includes/classes/class-es-post-notifications.php:435
1871
  msgid "Cancel"
1872
  msgstr ""
1873
 
1893
  #: lite/includes/classes/class-es-contacts-table.php:1061
1894
  #: lite/includes/classes/class-es-forms-table.php:920
1895
  #: lite/includes/classes/class-es-lists-table.php:593
1896
+ #: lite/includes/classes/class-es-reports-table.php:211
1897
+ #: lite/includes/classes/class-es-reports-table.php:296
1898
  #: lite/includes/workflows/admin/views/action.php:29
1899
  #: lite/includes/workflows/admin/views/meta-box-save.php:45
1900
  #: lite/includes/workflows/class-es-workflows-table.php:280
1947
 
1948
  #: lite/includes/classes/class-es-contacts-table.php:1310
1949
  #: lite/includes/classes/class-es-contacts-table.php:1331
 
1950
  #: lite/includes/classes/class-es-post-notifications.php:51
1951
  #: pro/pro-class-sequences.php:163
1952
  #: pro/pro-class-sequences.php:237
2282
  msgid "No Forms avaliable."
2283
  msgstr ""
2284
 
2285
+ #: lite/includes/classes/class-es-handle-subscription.php:527
2286
  #: lite/public/class-email-subscribers-public.php:107
2287
  msgid "Please enter email address"
2288
  msgstr ""
2289
 
2290
+ #: lite/includes/classes/class-es-handle-subscription.php:528
2291
  #: lite/public/class-email-subscribers-public.php:108
2292
  msgid "You need to wait for sometime before subscribing again"
2293
  msgstr ""
2294
 
2295
+ #: lite/includes/classes/class-es-handle-subscription.php:529
2296
  #: lite/includes/upgrade/es-update-functions.php:750
2297
  #: lite/public/class-email-subscribers-public.php:109
2298
  msgid "Successfully Subscribed."
2299
  msgstr ""
2300
 
2301
+ #: lite/includes/classes/class-es-handle-subscription.php:530
2302
  #: lite/public/class-email-subscribers-public.php:111
2303
  msgid "Email Address already exists!"
2304
  msgstr ""
2305
 
2306
+ #: lite/includes/classes/class-es-handle-subscription.php:531
2307
  #: lite/public/class-email-subscribers-public.php:112
2308
  msgid "Oops.. Unexpected error occurred."
2309
  msgstr ""
2310
 
2311
+ #: lite/includes/classes/class-es-handle-subscription.php:532
2312
  #: lite/public/class-email-subscribers-public.php:113
2313
  msgid "Invalid email address"
2314
  msgstr ""
2315
 
2316
+ #: lite/includes/classes/class-es-handle-subscription.php:533
2317
  msgid "Invalid name"
2318
  msgstr ""
2319
 
2320
+ #: lite/includes/classes/class-es-handle-subscription.php:534
2321
  #: lite/public/class-email-subscribers-public.php:114
2322
  msgid "Please try after some time"
2323
  msgstr ""
2324
 
2325
+ #: lite/includes/classes/class-es-handle-subscription.php:535
2326
  msgid "Oops...unable to add subscriber"
2327
  msgstr ""
2328
 
2329
+ #: lite/includes/classes/class-es-handle-subscription.php:536
2330
  msgid "You do not have permission to add subscriber"
2331
  msgstr ""
2332
 
2333
+ #: lite/includes/classes/class-es-handle-subscription.php:537
2334
  msgid "Please select the list"
2335
  msgstr ""
2336
 
2337
+ #: lite/includes/classes/class-es-handle-subscription.php:538
2338
  msgid "Invalid Captcha"
2339
  msgstr ""
2340
 
2611
  msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
2612
  msgstr ""
2613
 
2614
+ #: lite/includes/classes/class-es-newsletters.php:94
2615
  msgid "Sorry, you are not allowed to add/edit broadcast."
2616
  msgstr ""
2617
 
2618
+ #: lite/includes/classes/class-es-newsletters.php:118
2619
  msgid "Please add a broadcast subject."
2620
  msgstr ""
2621
 
2622
+ #: lite/includes/classes/class-es-newsletters.php:124
2623
  msgid "Please add message body or select template"
2624
  msgstr ""
2625
 
2626
+ #: lite/includes/classes/class-es-newsletters.php:130
2627
  msgid "Please add the subject"
2628
  msgstr ""
2629
 
2630
+ #: lite/includes/classes/class-es-newsletters.php:203
2631
  msgid "Scheduling is disabled for this broadcast since it is being sent."
2632
  msgstr ""
2633
 
2634
+ #: lite/includes/classes/class-es-newsletters.php:205
2635
  msgid "Scheduling is disabled for this broadcast since it has been sent already."
2636
  msgstr ""
2637
 
2638
+ #: lite/includes/classes/class-es-newsletters.php:269
2639
  msgid "Summary"
2640
  msgstr ""
2641
 
2642
+ #: lite/includes/classes/class-es-newsletters.php:280
2643
  msgid "Next"
2644
  msgstr ""
2645
 
2646
+ #: lite/includes/classes/class-es-newsletters.php:294
2647
  msgid "Previous"
2648
  msgstr ""
2649
 
2650
+ #: lite/includes/classes/class-es-newsletters.php:303
2651
  msgid "Save Draft"
2652
  msgstr ""
2653
 
2654
+ #: lite/includes/classes/class-es-newsletters.php:320
2655
  msgid "Schedule"
2656
  msgstr ""
2657
 
2658
+ #: lite/includes/classes/class-es-newsletters.php:324
2659
  #: lite/includes/feedback.php:56
2660
  #: lite/includes/feedback.php:83
2661
  msgid "Send"
2662
  msgstr ""
2663
 
2664
+ #: lite/includes/classes/class-es-newsletters.php:349
2665
  msgid "From Name"
2666
  msgstr ""
2667
 
2668
+ #: lite/includes/classes/class-es-newsletters.php:353
2669
  msgid "From Email"
2670
  msgstr ""
2671
 
2672
+ #: lite/includes/classes/class-es-newsletters.php:357
2673
  msgid "Reply To"
2674
  msgstr ""
2675
 
2676
+ #: lite/includes/classes/class-es-newsletters.php:362
2677
  msgid "Message"
2678
  msgstr ""
2679
 
2680
+ #: lite/includes/classes/class-es-newsletters.php:380
2681
  msgid "Design template"
2682
  msgstr ""
2683
 
2684
+ #: lite/includes/classes/class-es-newsletters.php:396
2685
+ msgid "Total recipients:"
2686
  msgstr ""
2687
 
2688
+ #: lite/includes/classes/class-es-newsletters.php:406
2689
+ #: lite/includes/classes/class-es-newsletters.php:434
2690
+ #: lite/includes/classes/class-es-reports-table.php:212
2691
+ #: pro/classes/class-es-pro-sequence-report.php:268
2692
  msgid "Preview"
2693
  msgstr ""
2694
 
2695
+ #: lite/includes/classes/class-es-newsletters.php:409
2696
  msgid "Browser"
2697
  msgstr ""
2698
 
2699
+ #: lite/includes/classes/class-es-newsletters.php:420
2700
+ #: lite/includes/classes/class-es-reports-table.php:473
2701
  msgid "There could be a slight variation on how your customer will view the email content."
2702
  msgstr ""
2703
 
2704
+ #: lite/includes/classes/class-es-newsletters.php:424
2705
+ #: lite/includes/classes/class-es-reports-table.php:477
2706
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
2707
  msgid "Close"
2708
  msgstr ""
2709
 
2710
+ #: lite/includes/classes/class-es-newsletters.php:437
2711
  msgid "Email sent successfully "
2712
  msgstr ""
2713
 
2714
+ #: lite/includes/classes/class-es-newsletters.php:438
2715
  msgid "Something went wrong. Please try again later"
2716
  msgstr ""
2717
 
2718
+ #: lite/includes/classes/class-es-newsletters.php:455
2719
  msgid "Email Content Preview"
2720
  msgstr ""
2721
 
2722
+ #: lite/includes/classes/class-es-newsletters.php:495
2723
  msgid "Open tracking"
2724
  msgstr ""
2725
 
2805
  msgid "Content of the selected template will be sent out as post notification."
2806
  msgstr ""
2807
 
2808
+ #: lite/includes/classes/class-es-post-notifications.php:391
2809
  msgid "Select post category"
2810
  msgstr ""
2811
 
2812
+ #: lite/includes/classes/class-es-post-notifications.php:392
2813
  msgid "Notification will be sent out when any post from selected categories will be published."
2814
  msgstr ""
2815
 
2816
+ #: lite/includes/classes/class-es-post-notifications.php:408
2817
  msgid "Select custom post type(s)"
2818
  msgstr ""
2819
 
2820
+ #: lite/includes/classes/class-es-post-notifications.php:409
2821
  msgid "(Optional) Select custom post type for which you want to send notification."
2822
  msgstr ""
2823
 
2824
+ #: lite/includes/classes/class-es-post-notifications.php:432
2825
  msgid "Save Campaign"
2826
  msgstr ""
2827
 
2828
+ #. translators: %s: Cron url
2829
+ #: lite/includes/classes/class-es-reports-table.php:64
2830
+ msgid "<a href='%s' class='px-3 py-2 ig-es-imp-button'>Send Queued Emails Now</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2831
  msgstr ""
2832
 
2833
+ #: lite/includes/classes/class-es-reports-table.php:66
2834
+ msgid "<span class='ig-es-send-queue-emails px-3 button-disabled'>Send Queued Emails Now</span>"
2835
  msgstr ""
2836
 
2837
+ #: lite/includes/classes/class-es-reports-table.php:67
2838
+ msgid "<br /><span class='es-helper pl-6'>No emails found in queue</span>"
2839
  msgstr ""
2840
 
2841
+ #: lite/includes/classes/class-es-reports-table.php:125
2842
  msgid "No Reports avaliable."
2843
  msgstr ""
2844
 
2845
+ #: lite/includes/classes/class-es-reports-table.php:145
2846
  #: lite/public/class-email-subscribers-public.php:474
2847
+ #: pro/classes/class-es-pro-reports-data.php:144
2848
+ #: pro/classes/class-es-pro-reports-data.php:189
2849
  msgid "Post Notification"
2850
  msgstr ""
2851
 
2852
+ #: lite/includes/classes/class-es-reports-table.php:169
2853
+ #: lite/includes/classes/class-es-reports-table.php:509
2854
+ msgid "Completed"
2855
+ msgstr ""
2856
+
2857
+ #: lite/includes/classes/class-es-reports-table.php:210
2858
+ #: pro/classes/class-es-pro-sequence-report.php:267
2859
  msgid "View"
2860
  msgstr ""
2861
 
2862
+ #: lite/includes/classes/class-es-reports-table.php:231
2863
  msgid "Start Date"
2864
  msgstr ""
2865
 
2866
+ #: lite/includes/classes/class-es-reports-table.php:232
2867
  msgid "End Date"
2868
  msgstr ""
2869
 
2870
+ #: lite/includes/classes/class-es-reports-table.php:429
2871
  msgid "You do not have permission to view notification"
2872
  msgstr ""
2873
 
2874
+ #: lite/includes/classes/class-es-reports-table.php:438
2875
  msgid "You do not have permission to delete notification"
2876
  msgstr ""
2877
 
2878
+ #: lite/includes/classes/class-es-reports-table.php:444
2879
  msgid "Report deleted successfully!"
2880
  msgstr ""
2881
 
2882
+ #: lite/includes/classes/class-es-reports-table.php:458
2883
  msgid "Reports deleted successfully!"
2884
  msgstr ""
2885
 
2886
+ #: lite/includes/classes/class-es-reports-table.php:498
2887
  msgid "Search Reports"
2888
  msgstr ""
2889
 
3088
 
3089
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:184
3090
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:212
3091
+ #: lite/includes/pro-features.php:930
3092
  msgid "Check"
3093
  msgstr ""
3094
 
3113
 
3114
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:261
3115
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:341
3116
+ #: lite/includes/pro-features.php:913
3117
  msgid "UTM tracking"
3118
  msgstr ""
3119
 
3131
  msgid "This will be appended to every URL in this template with parameters: utm_source=es&utm_medium=email&utm_campaign=campaign_name"
3132
  msgstr ""
3133
 
3134
+ #: lite/includes/pro-features.php:95
3135
  msgid "Customize user roles permissions with "
3136
  msgstr ""
3137
 
3138
+ #: lite/includes/pro-features.php:104
3139
  #: starter/starter-class-email-subscribers.php:598
3140
  msgid "Roles"
3141
  msgstr ""
3142
 
3143
+ #: lite/includes/pro-features.php:109
3144
  #: starter/starter-class-email-subscribers.php:603
3145
  msgid "Sequences"
3146
  msgstr ""
3147
 
3148
+ #: lite/includes/pro-features.php:167
3149
  #: starter/starter-class-email-subscribers.php:577
3150
  msgid "User Roles"
3151
  msgstr ""
3152
 
3153
+ #: lite/includes/pro-features.php:194
3154
+ #: pro/pro-class-email-subscribers.php:885
3155
  msgid "Track clicks"
3156
  msgstr ""
3157
 
3158
  #. translators: %s: Icegram Pricing page url with utm tracking
3159
+ #: lite/includes/pro-features.php:201
3160
  msgid "Track key insight behaviour with PRO"
3161
  msgstr ""
3162
 
3163
+ #: lite/includes/pro-features.php:202
3164
  msgid "Understand key insight into customer behavior with Link Tracking and UTM tracking in <b class=\"font-medium text-teal-800\">Email Subscribers Pro</b>."
3165
  msgstr ""
3166
 
3167
+ #: lite/includes/pro-features.php:212
3168
  msgid "UTM Tracking"
3169
  msgstr ""
3170
 
3171
+ #: lite/includes/pro-features.php:236
3172
  #: starter/starter-class-email-subscribers.php:425
3173
  msgid "Block known attackers"
3174
  msgstr ""
3175
 
3176
+ #: lite/includes/pro-features.php:237
3177
  #: starter/starter-class-email-subscribers.php:426
3178
  msgid "Stop known spam bot attacker domains from signing up. Keeps this list up-to-date with Icegram servers."
3179
  msgstr ""
3180
 
3181
  #. translators: %s: Icegram Pricing page url with utm tracking
3182
+ #: lite/includes/pro-features.php:244
3183
  msgid "Prevent spam attacks with PRO"
3184
  msgstr ""
3185
 
3186
+ #: lite/includes/pro-features.php:245
3187
  msgid "Get a gatekeeper to secure your form and avoid spam signups with form Captcha <b class=\"font-medium text-teal-800\">Email Subscribers PRO</b>."
3188
  msgstr ""
3189
 
3190
+ #: lite/includes/pro-features.php:250
3191
  #: starter/starter-class-email-subscribers.php:433
3192
  msgid "Block temporary / fake emails"
3193
  msgstr ""
3194
 
3195
+ #: lite/includes/pro-features.php:251
3196
  #: starter/starter-class-email-subscribers.php:434
3197
  msgid "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."
3198
  msgstr ""
3199
 
3200
+ #: lite/includes/pro-features.php:262
3201
  #: starter/starter-class-email-subscribers.php:442
3202
  msgid "Enable Captcha"
3203
  msgstr ""
3204
 
3205
+ #: lite/includes/pro-features.php:263
3206
  msgid "Show a captcha in subscription forms to protect from bot signups."
3207
  msgstr ""
3208
 
3209
+ #: lite/includes/pro-features.php:287
3210
+ #: pro/pro-class-email-subscribers.php:893
3211
  msgid "Track IP address"
3212
  msgstr ""
3213
 
3214
+ #: lite/includes/pro-features.php:288
3215
  msgid "Store IP address on subscription"
3216
  msgstr ""
3217
 
3218
  #. translators: %s: Icegram Pricing page url with utm tracking
3219
+ #: lite/includes/pro-features.php:295
3220
  msgid "Track subscribers IP addresses with PRO"
3221
  msgstr ""
3222
 
3223
+ #: lite/includes/pro-features.php:296
3224
  msgid "Enable IP tracking and get more information about your subscribers <b>eg.</b> which country your subscribers are from."
3225
  msgstr ""
3226
 
3227
+ #: lite/includes/pro-features.php:312
3228
  #: starter/starter-class-es-integrations.php:63
3229
  msgid "Comments"
3230
  msgstr ""
3231
 
3232
+ #: lite/includes/pro-features.php:323
3233
  #: starter/starter-class-es-integrations.php:73
3234
  msgid "WooCommerce"
3235
  msgstr ""
3236
 
3237
+ #: lite/includes/pro-features.php:333
3238
  #: starter/starter-class-es-integrations.php:91
3239
  msgid "Contact Form 7"
3240
  msgstr ""
3241
 
3242
+ #: lite/includes/pro-features.php:343
3243
  #: starter/starter-class-es-integrations.php:100
3244
  msgid "WPForms"
3245
  msgstr ""
3246
 
3247
+ #: lite/includes/pro-features.php:353
3248
  #: starter/starter-class-es-integrations.php:109
3249
  msgid "Give"
3250
  msgstr ""
3251
 
3252
+ #: lite/includes/pro-features.php:363
3253
  #: starter/starter-class-es-integrations.php:118
3254
  msgid "Ninja Forms"
3255
  msgstr ""
3256
 
3257
+ #: lite/includes/pro-features.php:373
3258
  #: starter/starter-class-es-integrations.php:82
3259
  msgid "EDD"
3260
  msgstr ""
3261
 
 
 
 
 
3262
  #: lite/includes/pro-features.php:401
3263
+ msgid "Sync Comment Users"
3264
  msgstr ""
3265
 
3266
  #: lite/includes/pro-features.php:402
3267
+ msgid "Quickly add to your mailing list when someone post a comment on your website."
 
 
 
 
 
 
3268
  msgstr ""
3269
 
3270
  #: lite/includes/pro-features.php:403
3274
  #: lite/includes/pro-features.php:545
3275
  #: lite/includes/pro-features.php:581
3276
  #: lite/includes/pro-features.php:617
3277
+ msgid "How to setup?"
3278
+ msgstr ""
3279
+
3280
+ #: lite/includes/pro-features.php:404
3281
+ #: lite/includes/pro-features.php:437
3282
+ #: lite/includes/pro-features.php:474
3283
+ #: lite/includes/pro-features.php:510
3284
+ #: lite/includes/pro-features.php:546
3285
+ #: lite/includes/pro-features.php:582
3286
+ #: lite/includes/pro-features.php:618
3287
  msgid "Once you upgrade to "
3288
  msgstr ""
3289
 
3290
+ #: lite/includes/pro-features.php:404
3291
+ #: lite/includes/pro-features.php:411
3292
+ #: lite/includes/pro-features.php:437
3293
+ #: lite/includes/pro-features.php:445
3294
+ #: lite/includes/pro-features.php:476
3295
+ #: lite/includes/pro-features.php:512
3296
+ #: lite/includes/pro-features.php:548
3297
+ #: lite/includes/pro-features.php:553
3298
+ #: lite/includes/pro-features.php:584
3299
+ #: lite/includes/pro-features.php:620
3300
  msgid "Email Subscribers Starter"
3301
  msgstr ""
3302
 
3303
+ #: lite/includes/pro-features.php:406
3304
  msgid ""
3305
  "you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a\n"
3306
  "\t\tcomment."
3307
  msgstr ""
3308
 
3309
+ #: lite/includes/pro-features.php:411
3310
+ #: lite/includes/pro-features.php:445
3311
+ #: lite/includes/pro-features.php:481
3312
+ #: lite/includes/pro-features.php:517
3313
+ #: lite/includes/pro-features.php:553
3314
+ #: lite/includes/pro-features.php:589
3315
+ #: lite/includes/pro-features.php:625
3316
  msgid "Checkout "
3317
  msgstr ""
3318
 
3319
+ #: lite/includes/pro-features.php:411
3320
  msgid "now"
3321
  msgstr ""
3322
 
3323
+ #: lite/includes/pro-features.php:434
3324
  msgid "Sync WooCommerce Customers"
3325
  msgstr ""
3326
 
3327
+ #: lite/includes/pro-features.php:435
3328
  msgid "Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone make a purchase from you"
3329
  msgstr ""
3330
 
3331
+ #: lite/includes/pro-features.php:439
3332
  msgid ""
3333
  "you will have settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they\n"
3334
  "\t\t\tpurchase something\n"
3335
  "\t\t\tfrom you."
3336
  msgstr ""
3337
 
3338
+ #: lite/includes/pro-features.php:445
3339
+ #: lite/includes/pro-features.php:553
3340
  msgid " Now"
3341
  msgstr ""
3342
 
3343
+ #: lite/includes/pro-features.php:471
3344
  msgid "Sync Contact Form 7 users"
3345
  msgstr ""
3346
 
3347
+ #: lite/includes/pro-features.php:472
3348
  msgid "Are you using Contact Form 7 for your list building? You can use this integration to add to a specific list whenever new subscribers added from Contact Form 7"
3349
  msgstr ""
3350
 
3351
+ #: lite/includes/pro-features.php:479
3352
  msgid "you will have settings panel where you need to enable Contact form 7 sync and select the list in which you want to add people whenever they fill any of the Contact Form."
3353
  msgstr ""
3354
 
3355
+ #: lite/includes/pro-features.php:507
3356
+ #: lite/includes/pro-features.php:543
3357
  msgid "Sync Donors"
3358
  msgstr ""
3359
 
3360
+ #: lite/includes/pro-features.php:508
3361
  msgid "We found that you are using Give WordPress plugin to collect donations. Now, with this integration, you can add your donors to any of your subscriber list and send them Newsletters in future."
3362
  msgstr ""
3363
 
3364
+ #: lite/includes/pro-features.php:515
3365
  msgid "you will have settings panel where you need to enable Give integration and select the list in which you want to add people whenever they make donation."
3366
  msgstr ""
3367
 
3368
+ #: lite/includes/pro-features.php:544
3369
  msgid "Are you using Give WordPress plugin to collect donations? Want to send Thank You email to them? You can use this integration to be in touch with them."
3370
  msgstr ""
3371
 
3372
+ #: lite/includes/pro-features.php:551
3373
+ #: lite/includes/pro-features.php:587
3374
  msgid "you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation."
3375
  msgstr ""
3376
 
3377
+ #: lite/includes/pro-features.php:579
3378
  msgid "Sync Contacts"
3379
  msgstr ""
3380
 
3381
+ #: lite/includes/pro-features.php:580
3382
  msgid "We found that you are using Ninja Forms. Want to add your contact to a mailing list? You can use this integration to add your contact to add into mailing list"
3383
  msgstr ""
3384
 
3385
+ #: lite/includes/pro-features.php:615
3386
  msgid "Sync Customers"
3387
  msgstr ""
3388
 
3389
+ #: lite/includes/pro-features.php:616
3390
  msgid "We found that you are using EDD to sell digital goods online. You can use this integration to send Newsletters/ Post Notifications to your customers."
3391
  msgstr ""
3392
 
3393
+ #: lite/includes/pro-features.php:623
3394
  msgid "you will have settings panel where you need to enable EDD sync and select the list in which you want to add people whenever they purchase something from you."
3395
  msgstr ""
3396
 
3397
+ #: lite/includes/pro-features.php:645
3398
  msgid "ES PRO Integrations"
3399
  msgstr ""
3400
 
3401
+ #: lite/includes/pro-features.php:680
3402
  msgid ""
3403
  "<div class=\"flex items-start space-x-3 -ml-8\">\n"
3404
  "\t\t\t <div class=\"flex-shrink-0 h-5 w-5 relative flex justify-center\">\n"
3407
  "\t\t\t <p class=\"text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150\">"
3408
  msgstr ""
3409
 
3410
+ #: lite/includes/pro-features.php:687
3411
  msgid "</div><br>Powerup by integrating popular WordPress plugins with Email Subscribers. We have made things simple and automated for you to avoid manual actions."
3412
  msgstr ""
3413
 
3414
+ #: lite/includes/pro-features.php:689
3415
  msgid "Unlock plugin integrations with PRO"
3416
  msgstr ""
3417
 
3418
+ #: lite/includes/pro-features.php:731
3419
  msgid "Secure your list now with PRO"
3420
  msgstr ""
3421
 
3422
+ #: lite/includes/pro-features.php:733
3423
  msgid "Block known spam bot attacker domains, fake email addresses and bot signups with <b class=\"font-medium text-teal-800\">Email Subscribers PRO.</b>"
3424
  msgstr ""
3425
 
3426
+ #: lite/includes/pro-features.php:746
3427
  #: starter/starter-class-email-subscribers.php:1181
3428
  msgid "Show a captcha to protect from bot signups."
3429
  msgstr ""
3430
 
3431
+ #: lite/includes/pro-features.php:780
3432
  msgid "Enable multiple lists & post digest with PRO"
3433
  msgstr ""
3434
 
3435
+ #: lite/includes/pro-features.php:782
3436
  msgid ""
3437
  "<div class=\"flex items-start space-x-3 -ml-8\">\n"
3438
  "\t\t\t <div class=\"flex-shrink-0 h-5 w-5 relative flex justify-center\">\n"
3455
  "\t\t\t </div>"
3456
  msgstr ""
3457
 
3458
+ #: lite/includes/pro-features.php:807
3459
  #: pro/pro-class-post-digest.php:65
3460
  msgid "Is a post digest?"
3461
  msgstr ""
3462
 
3463
+ #: lite/includes/pro-features.php:824
3464
  #: pro/pro-class-post-digest.php:104
3465
  msgid "Schedules at"
3466
  msgstr ""
3467
 
3468
+ #: lite/includes/pro-features.php:826
3469
  #: pro/pro-class-post-digest.php:105
3470
  msgid "When to send?"
3471
  msgstr ""
3472
 
3473
+ #: lite/includes/pro-features.php:833
3474
  msgid "Once a day at"
3475
  msgstr ""
3476
 
3477
+ #: lite/includes/pro-features.php:836
3478
  msgid "12:00 pm"
3479
  msgstr ""
3480
 
3481
+ #: lite/includes/pro-features.php:882
3482
  msgid "Reduce the possibility to land in spam with PRO"
3483
  msgstr ""
3484
 
3485
+ #: lite/includes/pro-features.php:890
3486
+ #: pro/pro-class-email-subscribers.php:722
3487
  msgid "Link tracking"
3488
  msgstr ""
3489
 
3490
+ #: lite/includes/pro-features.php:928
3491
  msgid "Get spam score"
3492
  msgstr ""
3493
 
3494
+ #: lite/includes/pro-features.php:939
3495
+ #: pro/pro-class-email-subscribers.php:766
3496
  msgid "Send options"
3497
  msgstr ""
3498
 
3499
+ #: lite/includes/pro-features.php:942
3500
+ #: pro/pro-class-email-subscribers.php:769
3501
  msgid "Schedule for later"
3502
  msgstr ""
3503
 
3504
+ #: lite/includes/pro-features.php:949
3505
  #: lite/includes/workflows/admin/views/meta-box-timing.php:82
3506
  #: lite/includes/workflows/fields/class-es-date.php:31
3507
+ #: pro/pro-class-email-subscribers.php:782
3508
  msgid "Date"
3509
  msgstr ""
3510
 
3511
+ #: lite/includes/pro-features.php:958
3512
  #: lite/includes/workflows/fields/class-es-time.php:64
3513
+ #: pro/pro-class-email-subscribers.php:793
3514
  msgid "Time"
3515
  msgstr ""
3516
 
3517
+ #: lite/includes/pro-features.php:968
3518
+ #: pro/pro-class-email-subscribers.php:804
3519
  msgid "Local Time: "
3520
  msgstr ""
3521
 
3522
+ #: lite/includes/pro-features.php:998
3523
  msgid "Track campaign insights with PRO"
3524
  msgstr ""
3525
 
3526
+ #: lite/includes/pro-features.php:1000
3527
  msgid "Know your subscribers & their behaviour with detailed campaign insights using <b class=\"font-medium text-teal-800\">Email Subscribers Pro</b>."
3528
  msgstr ""
3529
 
3530
+ #: lite/includes/pro-features.php:1027
3531
+ #: pro/classes/class-es-pro-reports-data.php:317
3532
  msgid "Type: "
3533
  msgstr ""
3534
 
3535
+ #: lite/includes/pro-features.php:1030
3536
+ #: pro/classes/class-es-pro-reports-data.php:320
3537
  msgid "From: "
3538
  msgstr ""
3539
 
3540
+ #: lite/includes/pro-features.php:1031
3541
  msgid "hello@icegram.com"
3542
  msgstr ""
3543
 
3544
+ #: lite/includes/pro-features.php:1033
 
3545
  msgid "List(s): "
3546
  msgstr ""
3547
 
3548
+ #: lite/includes/pro-features.php:1034
3549
  msgid "Test, Main "
3550
  msgstr ""
3551
 
3552
+ #: lite/includes/pro-features.php:1036
3553
+ #: pro/classes/class-es-pro-reports-data.php:336
3554
  msgid "Date: "
3555
  msgstr ""
3556
 
3557
+ #: lite/includes/pro-features.php:1037
3558
  msgid "July 1, 2020 10:00 AM"
3559
  msgstr ""
3560
 
3561
+ #: lite/includes/pro-features.php:1044
3562
+ #: pro/classes/class-es-pro-reports-data.php:345
3563
  msgid "Statistics"
3564
  msgstr ""
3565
 
3566
+ #: lite/includes/pro-features.php:1060
3567
+ #: pro/classes/class-es-pro-reports-data.php:361
3568
  msgid "Avg Open Rate"
3569
  msgstr ""
3570
 
3571
+ #: lite/includes/pro-features.php:1086
3572
  msgid "Open and click activity"
3573
  msgstr ""
3574
 
3575
+ #: lite/includes/pro-features.php:1095
3576
  msgid "Country Opens"
3577
  msgstr ""
3578
 
3579
+ #: lite/includes/pro-features.php:1098
3580
  msgid "Mail Client Info"
3581
  msgstr ""
3582
 
3583
+ #: lite/includes/pro-features.php:1175
3584
+ #: lite/includes/pro-features.php:1390
3585
+ #: pro/classes/class-es-pro-reports-data.php:554
3586
+ #: pro/classes/class-es-pro-reports-data.php:933
 
 
 
 
 
 
 
 
3587
  msgid "Mail Client"
3588
  msgstr ""
3589
 
3590
+ #: lite/includes/pro-features.php:1204
3591
  msgid "Device Info"
3592
  msgstr ""
3593
 
3594
+ #: lite/includes/pro-features.php:1209
3595
  msgid "Browser Info"
3596
  msgstr ""
3597
 
3598
+ #: lite/includes/pro-features.php:1214
3599
  msgid "OS Info"
3600
  msgstr ""
3601
 
3602
+ #: lite/includes/pro-features.php:1233
3603
  msgid "Link Activity"
3604
  msgstr ""
3605
 
3606
+ #: lite/includes/pro-features.php:1240
3607
+ #: pro/classes/class-es-pro-reports-data.php:649
3608
  msgid "Link (URL)"
3609
  msgstr ""
3610
 
3611
+ #: lite/includes/pro-features.php:1242
3612
+ #: pro/classes/class-es-pro-reports-data.php:651
3613
  msgid "Unique Clicks"
3614
  msgstr ""
3615
 
3616
+ #: lite/includes/pro-features.php:1244
3617
+ #: pro/classes/class-es-pro-reports-data.php:653
3618
  msgid "Total Clicks"
3619
  msgstr ""
3620
 
3621
+ #: lite/includes/pro-features.php:1252
3622
  msgid "https://www.icegram.com/automate-workflow-and-reduce-chaos/"
3623
  msgstr ""
3624
 
3625
+ #: lite/includes/pro-features.php:1265
3626
  msgid "https://www.icegram.com/how-to-keep-email-out-of-spam-folder/"
3627
  msgstr ""
3628
 
3629
+ #: lite/includes/pro-features.php:1379
3630
  msgid "Last 10 Open Activity"
3631
  msgstr ""
3632
 
3633
+ #: lite/includes/pro-features.php:1389
3634
+ #: pro/classes/class-es-pro-reports-data.php:932
3635
  msgid "Device"
3636
  msgstr ""
3637
 
3638
+ #: lite/includes/pro-features.php:1391
3639
+ #: pro/classes/class-es-pro-reports-data.php:934
3640
  msgid "OS"
3641
  msgstr ""
3642
 
3643
+ #: lite/includes/pro-features.php:1418
3644
+ #: pro/classes/class-es-pro-reports-data.php:956
3645
  msgid "Desktop"
3646
  msgstr ""
3647
 
3648
+ #: lite/includes/pro-features.php:1427
3649
+ #: pro/classes/class-es-pro-reports-data.php:964
3650
  msgid "Tablet"
3651
  msgstr ""
3652
 
3653
+ #: lite/includes/pro-features.php:1436
3654
+ #: pro/classes/class-es-pro-reports-data.php:972
3655
  msgid "Mobile"
3656
  msgstr ""
3657
 
3658
+ #: lite/includes/pro-features.php:1495
3659
+ #: pro/pro-class-email-subscribers.php:1466
3660
  msgid "Add Attachments"
3661
  msgstr ""
3662
 
3663
+ #: lite/includes/pro-features.php:1525
3664
+ #: pro/pro-class-email-subscribers.php:1547
3665
  msgid "Import existing WordPress users"
3666
  msgstr ""
3667
 
3668
+ #: lite/includes/pro-features.php:1551
3669
+ msgid "is not in List [PRO]"
3670
+ msgstr ""
3671
+
3672
+ #: lite/includes/pro-features.php:1557
3673
+ msgid "Email [PRO]"
3674
+ msgstr ""
3675
+
3676
+ #: lite/includes/pro-features.php:1561
3677
+ msgid "Country [PRO]"
3678
+ msgstr ""
3679
+
3680
+ #: lite/includes/pro-features.php:1567
3681
+ msgid "has received [PRO]"
3682
+ msgstr ""
3683
+
3684
+ #: lite/includes/pro-features.php:1571
3685
+ msgid "has not received [PRO]"
3686
+ msgstr ""
3687
+
3688
+ #: lite/includes/pro-features.php:1575
3689
+ msgid "has received and opened [PRO]"
3690
+ msgstr ""
3691
+
3692
+ #: lite/includes/pro-features.php:1579
3693
+ msgid "has received but not opened [PRO]"
3694
+ msgstr ""
3695
+
3696
+ #: lite/includes/pro-features.php:1583
3697
+ msgid "has received and clicked [PRO]"
3698
+ msgstr ""
3699
+
3700
+ #: lite/includes/pro-features.php:1587
3701
+ msgid "has received and not clicked [PRO]"
3702
+ msgstr ""
3703
+
3704
  #: lite/includes/services/class-es-email-delivery-check.php:46
3705
  msgid " 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."
3706
  msgstr ""
4175
  msgstr ""
4176
 
4177
  #: lite/public/partials/cron-message.php:43
4178
+ #: pro/pro-class-email-subscribers.php:812
4179
  msgid "Send Now"
4180
  msgstr ""
4181
 
4207
  msgid "Free!"
4208
  msgstr ""
4209
 
4210
+ #: pro/classes/class-es-pro-campaign-rules.php:30
4211
+ msgid "is not in List"
4212
+ msgstr ""
4213
+
4214
+ #: pro/classes/class-es-pro-reports-data.php:146
4215
  #: pro/pro-class-post-digest.php:28
4216
  msgid "Post Digest"
4217
  msgstr ""
4218
 
4219
+ #: pro/classes/class-es-pro-reports-data.php:324
4220
+ msgid "Recipient(s): "
4221
+ msgstr ""
4222
+
4223
+ #: pro/classes/class-es-pro-reports-data.php:397
4224
  msgid "Open and Click activity"
4225
  msgstr ""
4226
 
4227
+ #: pro/classes/class-es-pro-reports-data.php:405
4228
  msgid "Country info"
4229
  msgstr ""
4230
 
4231
+ #: pro/classes/class-es-pro-reports-data.php:510
4232
  msgid "Others"
4233
  msgstr ""
4234
 
4235
+ #: pro/classes/class-es-pro-reports-data.php:538
4236
  msgid "No country data found."
4237
  msgstr ""
4238
 
4239
+ #: pro/classes/class-es-pro-reports-data.php:549
4240
  msgid "Mail Client info"
4241
  msgstr ""
4242
 
4243
+ #: pro/classes/class-es-pro-reports-data.php:585
4244
  msgid "No mail client data found."
4245
  msgstr ""
4246
 
4247
+ #: pro/classes/class-es-pro-reports-data.php:599
4248
  msgid "Device info"
4249
  msgstr ""
4250
 
4251
+ #: pro/classes/class-es-pro-reports-data.php:602
4252
  msgid "No device data found"
4253
  msgstr ""
4254
 
4255
+ #: pro/classes/class-es-pro-reports-data.php:606
4256
  msgid "Browser info"
4257
  msgstr ""
4258
 
4259
+ #: pro/classes/class-es-pro-reports-data.php:609
4260
  msgid "No browser data found"
4261
  msgstr ""
4262
 
4263
+ #: pro/classes/class-es-pro-reports-data.php:613
4264
  msgid "OS info"
4265
  msgstr ""
4266
 
4267
+ #: pro/classes/class-es-pro-reports-data.php:616
4268
  msgid "No OS data found"
4269
  msgstr ""
4270
 
4271
+ #: pro/classes/class-es-pro-reports-data.php:642
4272
  msgid "Link activity"
4273
  msgstr ""
4274
 
4275
+ #: pro/classes/class-es-pro-reports-data.php:746
 
 
 
 
 
 
 
 
 
 
 
 
 
4276
  #: pro/partials/es-dashboard.php:100
4277
  msgid "Clicks"
4278
  msgstr ""
4279
 
4280
+ #: pro/classes/class-es-pro-reports-data.php:875
4281
+ msgid "Filter Report"
4282
+ msgstr ""
4283
+
4284
+ #: pro/classes/class-es-pro-reports-data.php:887
4285
+ msgid "Not Opened"
4286
  msgstr ""
4287
 
4288
+ #: pro/classes/class-es-pro-sequence-report.php:196
4289
  msgid "No Reports available."
4290
  msgstr ""
4291
 
4292
+ #: pro/classes/class-es-pro-sequence-report.php:215
4293
  msgid "Sequence Message"
4294
  msgstr ""
4295
 
4296
+ #: pro/classes/class-es-pro-sequence-report.php:297
4297
  msgid "Total Contacts"
4298
  msgstr ""
4299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4300
  #: pro/classes/class-ig-es-unsubscribe-feedback.php:54
4301
  msgid "Your emails are not relevant to me"
4302
  msgstr ""
4423
  msgid "Lost"
4424
  msgstr ""
4425
 
4426
+ #: pro/pro-class-email-subscribers.php:192
4427
  msgid "Your cart has been restored."
4428
  msgstr ""
4429
 
4430
+ #: pro/pro-class-email-subscribers.php:195
4431
  msgid "Your cart could not be restored, it may have expired."
4432
  msgstr ""
4433
 
4434
+ #: pro/pro-class-email-subscribers.php:361
4435
  #: pro/pro-class-post-digest.php:25
4436
  msgid "Sequence"
4437
  msgstr ""
4438
 
4439
+ #: pro/pro-class-email-subscribers.php:479
4440
  msgid "Please enter an email address."
4441
  msgstr ""
4442
 
4443
+ #: pro/pro-class-email-subscribers.php:481
4444
  msgid "Add Attachment"
4445
  msgstr ""
4446
 
4447
  #. translators: %s: Attachmen max file size.
4448
+ #: pro/pro-class-email-subscribers.php:483
4449
  msgid "Please attach a file having size lower than %s."
4450
  msgstr ""
4451
 
4452
+ #: pro/pro-class-email-subscribers.php:613
4453
  msgid "Clean My List"
4454
  msgstr ""
4455
 
4456
+ #: pro/pro-class-email-subscribers.php:614
4457
  msgid "List cleanup is in progress..."
4458
  msgstr ""
4459
 
4460
+ #: pro/pro-class-email-subscribers.php:615
4461
  msgid "List cleanup completed successfully."
4462
  msgstr ""
4463
 
4464
+ #: pro/pro-class-email-subscribers.php:632
4465
  msgid "Email status"
4466
  msgstr ""
4467
 
4468
+ #: pro/pro-class-email-subscribers.php:633
4469
  msgid "Last opened at"
4470
  msgstr ""
4471
 
4472
+ #: pro/pro-class-email-subscribers.php:636
4473
  msgid "IP"
4474
  msgstr ""
4475
 
4476
+ #: pro/pro-class-email-subscribers.php:850
4477
  msgid "Select page"
4478
  msgstr ""
4479
 
4480
+ #: pro/pro-class-email-subscribers.php:863
4481
  msgid "Subscriber will be redirected to selected page once they click on unsubscribe link from the email."
4482
  msgstr ""
4483
 
4484
+ #: pro/pro-class-email-subscribers.php:876
4485
  msgid "Subscriber will be redirected to selected page once they click on email confirmation link from the double opt-in (confirmation) email."
4486
  msgstr ""
4487
 
4488
+ #: pro/pro-class-email-subscribers.php:915
4489
  msgid "Access Key ID"
4490
  msgstr ""
4491
 
4492
+ #: pro/pro-class-email-subscribers.php:926
4493
  msgid "Secret Access Key"
4494
  msgstr ""
4495
 
4496
+ #: pro/pro-class-email-subscribers.php:938
4497
  msgid "Closest Region"
4498
  msgstr ""
4499
 
4500
+ #: pro/pro-class-email-subscribers.php:939
4501
  msgid ""
4502
  "Please select the Amazon SES API region which is the closest to where your website is hosted.\n"
4503
  "\t\t\t\t\tThis can help to decrease network latency between your site and Amazon SES, which will speed up email sending."
4504
  msgstr ""
4505
 
4506
+ #: pro/pro-class-email-subscribers.php:1000
4507
  msgid "Clicked"
4508
  msgstr ""
4509
 
4510
  #. translators: 1: Page 2: Duplicate action 3: Campaign id 4: Wp nonce
4511
+ #: pro/pro-class-email-subscribers.php:1265
4512
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\">Duplicate</a>"
4513
  msgstr ""
4514
 
4515
+ #: pro/pro-class-email-subscribers.php:1286
4516
  msgid "You are not allowed to duplicate campaign."
4517
  msgstr ""
4518
 
4519
+ #: pro/pro-class-email-subscribers.php:1301
4520
  msgid "Campaign duplicated !"
4521
  msgstr ""
4522
 
4523
+ #: pro/pro-class-email-subscribers.php:1566
4524
  msgid "Import WordPress users with following roles"
4525
  msgstr ""
4526
 
4527
+ #: pro/pro-class-email-subscribers.php:1616
4528
  msgid "Proceed"
4529
  msgstr ""
4530
 
lite/public/js/email-subscribers-public.js CHANGED
@@ -122,12 +122,20 @@
122
  let subscription_forms = $('.es_subscription_form');
123
  // Check if page contains ES subscription form.
124
  if ( subscription_forms.length > 0 ) {
 
 
 
 
 
 
 
125
  // Send an ajax request to get updated nonce value.
126
  jQuery.ajax({
127
  type: 'POST',
128
  url: es_data.es_ajax_url,
129
  data: {
130
- action: 'ig_es_get_updated_subscription_nonce',
 
131
  },
132
  dataType: 'json',
133
  success: function(response) {
@@ -138,6 +146,15 @@
138
  jQuery(subscription_forms).find('input[name="es-subscribe"]').each(function(){
139
  $(this).val(updated_nonce);
140
  });
 
 
 
 
 
 
 
 
 
141
  }
142
  }
143
  });
122
  let subscription_forms = $('.es_subscription_form');
123
  // Check if page contains ES subscription form.
124
  if ( subscription_forms.length > 0 ) {
125
+ let list_ids = [];
126
+ jQuery(subscription_forms).find('input[name="lists[]"]').each(function(){
127
+ let list_id = $(this).val();
128
+ if ( ! isNaN( list_id ) ) {
129
+ list_ids.push(list_id);
130
+ }
131
+ });
132
  // Send an ajax request to get updated nonce value.
133
  jQuery.ajax({
134
  type: 'POST',
135
  url: es_data.es_ajax_url,
136
  data: {
137
+ action: 'ig_es_get_updated_subscription_data',
138
+ list_ids: list_ids,
139
  },
140
  dataType: 'json',
141
  success: function(response) {
146
  jQuery(subscription_forms).find('input[name="es-subscribe"]').each(function(){
147
  $(this).val(updated_nonce);
148
  });
149
+ let list_hashes = data.list_hashes;
150
+ // Update list ids with list hash
151
+ jQuery(subscription_forms).find('input[name="lists[]"]').each(function(){
152
+ let list_id = $(this).val();
153
+ if ( list_hashes.hasOwnProperty( list_id ) ) {
154
+ let list_hash = list_hashes[ list_id ];
155
+ $(this).val(list_hash);
156
+ }
157
+ });
158
  }
159
  }
160
  });
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.6.2
8
  Requires PHP: 5.6
9
- Stable tag: 4.6.11
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
@@ -304,6 +304,12 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
304
 
305
  == Changelog ==
306
 
 
 
 
 
 
 
307
  **4.6.11 (25.02.2021)**
308
 
309
  * New: Campaign rules to filter recipients while sending broadcast [PRO]
6
  Requires at least: 3.9
7
  Tested up to: 5.6.2
8
  Requires PHP: 5.6
9
+ Stable tag: 4.6.12
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
304
 
305
  == Changelog ==
306
 
307
+ **4.6.12 (04.03.2021)**
308
+
309
+ * New: Filter recipients using new campaign rules for 'is in List' and 'is not in List'[PRO] while sending broadcast
310
+ * Update: Improved campaign report UI
311
+ * Update: Improved securities in subscription form
312
+
313
  **4.6.11 (25.02.2021)**
314
 
315
  * New: Campaign rules to filter recipients while sending broadcast [PRO]