Version Description
4.7.2 (12.05.2021)
- New: Support for 'List-Unsubscribe' email header
- New: Support for 'Subscribed at' field while importing contacts through CSV
- Update: Support for Sendgrid batch email API [PRO]
- Update: Improved page load performance on Email Subscribers' admin pages
4.7.1 (30.04.2021)
- New: Send emails using Postmark batch API [PRO]
- Update: Improved dashboard UI
- Fix: Post digest category issue [PRO]
- Fix: Garbage characters in few cases when an email containing HTML entities is sent using Pepipost
- Fix: Ajax call on every page load
4.7.0 (05.04.2021)
- New: Support for list and status fields while importing contacts through CSV
- New: Using batch API to send emails through Mailgun [PRO]
4.6.14 (25.03.2021)
- New: Send emails using Mailgun, SparkPost and SendGrid [PRO]
- New: Import contacts from MailChimp
4.6.13 (17.03.2021)
- New: Campaign rules to filter recipients while sending sequence emails [PRO]
- Update: Tested upto WordPress 5.7
- Fix: Invalid date and time for campaign reports activity table
4.6.12.1 (05.03.2021)
- Fix: Subscription issue with Icegram plugin
4.6.12 (04.03.2021)
- New: Filter recipients using new campaign rules for 'is in List' and 'is not in List'[PRO] while sending broadcast
- Update: Improved campaign report UI
- Update: Improved securities in subscription form
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.7.2 |
Comparing to | |
See all releases |
Code changes from version 4.7.1 to 4.7.2
- email-subscribers.php +2 -2
- lite/admin/class-email-subscribers-admin.php +3 -1
- lite/admin/class-ig-es-onboarding.php +37 -4
- lite/admin/css/email-subscribers-admin.css +7 -2
- lite/admin/dist/main.css +1 -1
- lite/admin/js/email-subscribers-admin.js +4 -4
- lite/admin/partials/dashboard.php +1 -2
- lite/admin/partials/onboarding.php +1 -1
- lite/includes/class-email-subscribers.php +1 -0
- lite/includes/classes/class-es-actions.php +0 -2
- lite/includes/classes/class-es-admin-settings.php +1 -1
- lite/includes/classes/class-es-cache.php +42 -13
- lite/includes/classes/class-es-campaign-report.php +3 -3
- lite/includes/classes/class-es-contacts-table.php +25 -9
- lite/includes/classes/class-es-forms-table.php +192 -186
- lite/includes/classes/class-es-handle-post-notification.php +2 -2
- lite/includes/classes/class-es-handle-subscription.php +1 -1
- lite/includes/classes/class-es-import-subscribers.php +17 -7
- lite/includes/classes/class-es-lists-table.php +12 -0
- lite/includes/classes/class-es-mailer.php +166 -11
- lite/includes/classes/class-es-newsletters.php +11 -8
- lite/includes/classes/class-es-queue.php +1 -1
- lite/includes/classes/class-es-reports-table.php +1 -1
- lite/includes/classes/class-ig-es-subscriber-query.php +3 -3
- lite/includes/db/class-es-db-actions.php +18 -11
- lite/includes/db/class-es-db-contacts.php +18 -6
- lite/includes/db/class-es-db-links.php +2 -0
- lite/includes/db/class-es-db-lists-contacts.php +2 -3
- lite/includes/db/class-es-db-lists.php +4 -4
- lite/includes/db/class-es-db-mailing-queue.php +30 -12
- lite/includes/db/class-es-db-sending-queue.php +2 -14
- lite/includes/db/class-es-db.php +203 -27
- lite/includes/es-core-functions.php +1 -1
- lite/includes/mailers/class-es-base-mailer.php +45 -1
- lite/includes/mailers/class-es-pepipost-mailer.php +32 -6
- lite/includes/mailers/class-es-phpmail-mailer.php +6 -0
- lite/includes/workflows/class-es-workflow-data-types.php +2 -1
- lite/includes/workflows/data-types/class-es-data-type-subscriber.php +96 -0
- lite/includes/workflows/queue/class-es-workflow-queue.php +21 -10
- lite/includes/workflows/triggers/class-es-trigger-user-deleted.php +18 -8
- lite/languages/email-subscribers.pot +326 -310
- lite/public/class-email-subscribers-public.php +2 -1
- readme.txt +24 -4
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.7.
|
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.7.
|
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.7.2
|
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.7.2' );
|
182 |
}
|
183 |
|
184 |
// Plugin Folder Path.
|
lite/admin/class-email-subscribers-admin.php
CHANGED
@@ -213,9 +213,11 @@ class Email_Subscribers_Admin {
|
|
213 |
if ( 'es_workflows' === $get_page ) {
|
214 |
|
215 |
if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
|
216 |
-
|
217 |
}
|
218 |
|
|
|
|
|
219 |
if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
|
220 |
/**
|
221 |
* Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
|
213 |
if ( 'es_workflows' === $get_page ) {
|
214 |
|
215 |
if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
|
216 |
+
wp_register_script( 'clipboard', plugin_dir_url( __FILE__ ) . 'js/clipboard.js', array( 'jquery' ), '2.0.6', false );
|
217 |
}
|
218 |
|
219 |
+
wp_enqueue_script( 'clipboard' );
|
220 |
+
|
221 |
if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
|
222 |
/**
|
223 |
* Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
|
lite/admin/class-ig-es-onboarding.php
CHANGED
@@ -66,7 +66,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
66 |
'evaluate_email_delivery',
|
67 |
),
|
68 |
'completion_tasks' => array(
|
69 |
-
'
|
70 |
'save_final_configuration',
|
71 |
)
|
72 |
);
|
@@ -359,7 +359,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
359 |
$response['status'] = 'success';
|
360 |
}
|
361 |
$current_tasks_done[] = $current_task;
|
362 |
-
}
|
363 |
$response['status'] = 'skipped';
|
364 |
$current_tasks_skipped[] = $current_task;
|
365 |
} else {
|
@@ -472,6 +472,9 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
472 |
|
473 |
public function create_contacts_and_add_to_list() {
|
474 |
|
|
|
|
|
|
|
475 |
// Get default list data.
|
476 |
$default_list_id = 0;
|
477 |
$default_list = ES()->lists_db->get_list_by_name( IG_DEFAULT_LIST );
|
@@ -1196,9 +1199,39 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
|
|
1196 |
*
|
1197 |
* @since 4.6.0
|
1198 |
*/
|
1199 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1200 |
|
1201 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1202 |
|
1203 |
return $response;
|
1204 |
}
|
66 |
'evaluate_email_delivery',
|
67 |
),
|
68 |
'completion_tasks' => array(
|
69 |
+
'subscribe_to_es',
|
70 |
'save_final_configuration',
|
71 |
)
|
72 |
);
|
359 |
$response['status'] = 'success';
|
360 |
}
|
361 |
$current_tasks_done[] = $current_task;
|
362 |
+
} elseif ( 'skipped' === $task_response['status'] ) {
|
363 |
$response['status'] = 'skipped';
|
364 |
$current_tasks_skipped[] = $current_task;
|
365 |
} else {
|
472 |
|
473 |
public function create_contacts_and_add_to_list() {
|
474 |
|
475 |
+
// Flush cache to make sure we get data from DB instead of cache
|
476 |
+
ES_Cache::flush();
|
477 |
+
|
478 |
// Get default list data.
|
479 |
$default_list_id = 0;
|
480 |
$default_list = ES()->lists_db->get_list_by_name( IG_DEFAULT_LIST );
|
1199 |
*
|
1200 |
* @since 4.6.0
|
1201 |
*/
|
1202 |
+
public function subscribe_to_es() {
|
1203 |
+
|
1204 |
+
$response = array(
|
1205 |
+
'status' => 'error'
|
1206 |
+
);
|
1207 |
+
|
1208 |
+
$name = ig_es_get_request_data( 'name', '' );
|
1209 |
+
$email = ig_es_get_request_data( 'email', '' );
|
1210 |
+
$list = ig_es_get_request_data( 'list', '' );
|
1211 |
+
|
1212 |
+
if ( ! empty( $list ) && is_email( $email ) ) {
|
1213 |
+
$url_params = array(
|
1214 |
+
'ig_es_external_action' => 'subscribe',
|
1215 |
+
'name' => $name,
|
1216 |
+
'email' => $email,
|
1217 |
+
'list' => $list,
|
1218 |
+
);
|
1219 |
|
1220 |
+
$ig_es_url = 'https://www.icegram.com/';
|
1221 |
+
$ig_es_url = add_query_arg( $url_params, $ig_es_url );
|
1222 |
+
|
1223 |
+
// Make a asynchronous request.
|
1224 |
+
$api_response = wp_remote_get( $ig_es_url );
|
1225 |
+
if ( ! is_wp_error( $api_response ) ) {
|
1226 |
+
$body = ! empty( $api_response['body'] ) && ES_Common::is_valid_json( $api_response['body'] ) ? json_decode( $api_response['body'], true ) : '';
|
1227 |
+
if ( ! empty( $body ) ) {
|
1228 |
+
// If we have received an id in response then email is successfully queued at mailgun server.
|
1229 |
+
if ( ! empty( $body['status'] ) && 'SUCCESS' === $body['status'] ) {
|
1230 |
+
$response['status'] = 'success';
|
1231 |
+
}
|
1232 |
+
}
|
1233 |
+
}
|
1234 |
+
}
|
1235 |
|
1236 |
return $response;
|
1237 |
}
|
lite/admin/css/email-subscribers-admin.css
CHANGED
@@ -1703,7 +1703,7 @@ div.broadcast_side_content{
|
|
1703 |
margin-left: auto;
|
1704 |
margin-right: auto;
|
1705 |
}
|
1706 |
-
|
1707 |
-webkit-user-select: all;
|
1708 |
-ms-user-select: all;
|
1709 |
user-select: all;
|
@@ -2116,4 +2116,9 @@ body[class*="es_reports"] .recipient-text {
|
|
2116 |
.es-importer-logo {
|
2117 |
width: 160px;
|
2118 |
}
|
2119 |
-
/** Import subscribers CSS - END */
|
|
|
|
|
|
|
|
|
|
1703 |
margin-left: auto;
|
1704 |
margin-right: auto;
|
1705 |
}
|
1706 |
+
.es-code{
|
1707 |
-webkit-user-select: all;
|
1708 |
-ms-user-select: all;
|
1709 |
user-select: all;
|
2116 |
.es-importer-logo {
|
2117 |
width: 160px;
|
2118 |
}
|
2119 |
+
/** Import subscribers CSS - END */
|
2120 |
+
|
2121 |
+
.es-items-lists table.fixed{
|
2122 |
+
overflow:visible !important;
|
2123 |
+
border-color:transparent;
|
2124 |
+
}
|
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: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}li.menu-top div.wp-menu-image img{display:initial;border-style:none}.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))}.es_sequences_wrapper .ig-es-campaign-rules label{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-weight:500;--text-opacity:0.75;font-size:.875rem;letter-spacing:.025em;line-height:1.5rem}.email-subscribers_page_es_workflows #ig_es_workflow_trigger select option:disabled{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.installing{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.success{--text-opacity:1!important;color:#4b5563!important;color:rgba(75,85,99,var(--text-opacity))!important;font-weight:500!important;-webkit-animation:none!important;animation:none!important}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.skipping{--text-opacity:1!important;color:#9fa6b2!important;color:rgba(159,166,178,var(--text-opacity))!important;-webkit-animation:none!important;animation:none!important}.es_primary_link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1rem;font-size:.875rem;font-weight:700;--text-opacity:1;color:#5850ec;color:rgba(88,80,236,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-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);border-bottom-width:2px;border-color:transparent;cursor:pointer}.es_primary_link:active,.es_primary_link:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.es_primary_link:focus{outline:2px solid transparent;outline-offset:2px;--border-opacity:1;border-color:#5145cd;border-color:rgba(81,69,205,var(--border-opacity));-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.es_helper_text{font-style:italic;font-size:.75rem;font-weight:400;--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));line-height:1.375}.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-black{--bg-opacity:1;background-color:#000;background-color:rgba(0,0,0,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}.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}.my-16{margin-top:4rem;margin-bottom:4rem}.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-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.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-6{padding:1.5rem}.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}.bottom-0{bottom: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-500{--text-opacity:1;color:#0e9f6e;color:rgba(14,159,110,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}.text-opacity-100{--text-opacity:1}.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-tight{letter-spacing:-.025em}.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}.invisible{visibility:hidden}.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-1{grid-template-columns:repeat(1,minmax(0,1fr))}.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-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.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%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pr-3{padding-right:.75rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-64{width:16rem}.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}li.menu-top div.wp-menu-image img{display:initial;border-style:none}.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))}.es_sequences_wrapper .ig-es-campaign-rules label{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-weight:500;--text-opacity:0.75;font-size:.875rem;letter-spacing:.025em;line-height:1.5rem}.email-subscribers_page_es_workflows #ig_es_workflow_trigger select option:disabled{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.installing{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.success{--text-opacity:1!important;color:#4b5563!important;color:rgba(75,85,99,var(--text-opacity))!important;font-weight:500!important;-webkit-animation:none!important;animation:none!important}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.skipping{--text-opacity:1!important;color:#9fa6b2!important;color:rgba(159,166,178,var(--text-opacity))!important;-webkit-animation:none!important;animation:none!important}.es_primary_link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1rem;font-size:.875rem;font-weight:700;--text-opacity:1;color:#5850ec;color:rgba(88,80,236,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-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);border-bottom-width:2px;border-color:transparent;cursor:pointer}.es_primary_link:active,.es_primary_link:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.es_primary_link:focus{outline:2px solid transparent;outline-offset:2px;--border-opacity:1;border-color:#5145cd;border-color:rgba(81,69,205,var(--border-opacity));-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.es_helper_text{font-style:italic;font-size:.75rem;font-weight:400;--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));line-height:1.375}.es-documentation{border-color:transparent;border-radius:9999px;-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-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05);--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es-documentation:hover{border-radius:9999px;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.es-documentation:focus,.es-documentation:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05);--bg-opacity:1}.es-documentation:focus{background-color:#f4f5f7;background-color:rgba(244,245,247,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-black{--bg-opacity:1;background-color:#000;background-color:rgba(0,0,0,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}.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}.my-16{margin-top:4rem;margin-bottom:4rem}.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}.-mt-2\.5{margin-top:-.625rem}.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-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.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-6{padding:1.5rem}.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}.bottom-0{bottom: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-500{--text-opacity:1;color:#0e9f6e;color:rgba(14,159,110,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}.text-opacity-100{--text-opacity:1}.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-tight{letter-spacing:-.025em}.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}.invisible{visibility:hidden}.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-1{grid-template-columns:repeat(1,minmax(0,1fr))}.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-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.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%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-2{margin-left:.5rem}.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\:pr-3{padding-right:.75rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-64{width:16rem}.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/js/email-subscribers-admin.js
CHANGED
@@ -617,10 +617,10 @@
|
|
617 |
if ( response.hasOwnProperty('conditions_html') ) {
|
618 |
let conditions = $.parseHTML(response.conditions_html);
|
619 |
$(conditions).find('.campaign-name').each(function(){
|
620 |
-
let
|
621 |
-
if (edited_campaign_data.hasOwnProperty(
|
622 |
-
let
|
623 |
-
$(this).text(
|
624 |
}
|
625 |
});
|
626 |
$(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
|
617 |
if ( response.hasOwnProperty('conditions_html') ) {
|
618 |
let conditions = $.parseHTML(response.conditions_html);
|
619 |
$(conditions).find('.campaign-name').each(function(){
|
620 |
+
let campaign_id = $(this).data('campaign-id');
|
621 |
+
if (edited_campaign_data.hasOwnProperty(campaign_id)) {
|
622 |
+
let campaign_name = edited_campaign_data[campaign_id];
|
623 |
+
$(this).text(campaign_name);
|
624 |
}
|
625 |
});
|
626 |
$(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
|
lite/admin/partials/dashboard.php
CHANGED
@@ -43,7 +43,6 @@ $reports_url = admin_url( 'admin.php?page=es_reports' );
|
|
43 |
$templates_url = admin_url( 'edit.php?post_type=es_template' );
|
44 |
$settings_url = admin_url( 'admin.php?page=es_settings' );
|
45 |
$facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
|
46 |
-
$setup_email_sending_doc = 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers';
|
47 |
|
48 |
$feature_blocks = array(
|
49 |
'form' => array(
|
@@ -84,7 +83,7 @@ $feature_blocks = array(
|
|
84 |
'cta_text' => __('Start', 'email-subscribers'),
|
85 |
'feature_url' => $new_sequence_url,
|
86 |
'graphics_img' => 'lite/admin/images/dashboard-autoresponder-sequence.png',
|
87 |
-
'documentation_url' => 'https://www.icegram.com/documentation/email-sequence
|
88 |
),
|
89 |
);
|
90 |
|
43 |
$templates_url = admin_url( 'edit.php?post_type=es_template' );
|
44 |
$settings_url = admin_url( 'admin.php?page=es_settings' );
|
45 |
$facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
|
|
|
46 |
|
47 |
$feature_blocks = array(
|
48 |
'form' => array(
|
83 |
'cta_text' => __('Start', 'email-subscribers'),
|
84 |
'feature_url' => $new_sequence_url,
|
85 |
'graphics_img' => 'lite/admin/images/dashboard-autoresponder-sequence.png',
|
86 |
+
'documentation_url' => 'https://www.icegram.com/documentation/email-sequence/?utm_source=in_app&utm_medium=sequence&utm_campaign=es_doc_upsell',
|
87 |
),
|
88 |
);
|
89 |
|
lite/admin/partials/onboarding.php
CHANGED
@@ -422,7 +422,7 @@
|
|
422 |
>
|
423 |
<?php echo esc_html__('Done! Now speed up your success!', 'email-subscribers'); ?>
|
424 |
</h3>
|
425 |
-
<input type="hidden" id="sign-up-list" name="list" value="
|
426 |
<input type="hidden" id="sign-up-form-source" name="form-source" value=""/>
|
427 |
<div class="space-y-3 text-gray-800">
|
428 |
|
422 |
>
|
423 |
<?php echo esc_html__('Done! Now speed up your success!', 'email-subscribers'); ?>
|
424 |
</h3>
|
425 |
+
<input type="hidden" id="sign-up-list" name="list" value="bc4f8995201a"/>
|
426 |
<input type="hidden" id="sign-up-form-source" name="form-source" value=""/>
|
427 |
<div class="space-y-3 text-gray-800">
|
428 |
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -793,6 +793,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
793 |
// Data Types
|
794 |
'lite/includes/workflows/data-types/abstracts/class-es-data-type-form-data.php',
|
795 |
'lite/includes/workflows/data-types/class-es-data-type-user.php',
|
|
|
796 |
'lite/includes/workflows/class-es-workflow-data-types.php',
|
797 |
|
798 |
'lite/includes/workflows/variables/class-es-workflow-data-types.php',
|
793 |
// Data Types
|
794 |
'lite/includes/workflows/data-types/abstracts/class-es-data-type-form-data.php',
|
795 |
'lite/includes/workflows/data-types/class-es-data-type-user.php',
|
796 |
+
'lite/includes/workflows/data-types/class-es-data-type-subscriber.php',
|
797 |
'lite/includes/workflows/class-es-workflow-data-types.php',
|
798 |
|
799 |
'lite/includes/workflows/variables/class-es-workflow-data-types.php',
|
lite/includes/classes/class-es-actions.php
CHANGED
@@ -196,8 +196,6 @@ if ( ! class_exists( 'ES_Actions' ) ) {
|
|
196 |
// Track only if campaign sent.
|
197 |
if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
|
198 |
|
199 |
-
$this->update_viewed_status( $contact_id, $campaign_id, $message_id );
|
200 |
-
|
201 |
$action_data = array(
|
202 |
'contact_id' => $contact_id,
|
203 |
'message_id' => $message_id,
|
196 |
// Track only if campaign sent.
|
197 |
if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
|
198 |
|
|
|
|
|
199 |
$action_data = array(
|
200 |
'contact_id' => $contact_id,
|
201 |
'message_id' => $message_id,
|
lite/includes/classes/class-es-admin-settings.php
CHANGED
@@ -483,7 +483,7 @@ class ES_Admin_Settings {
|
|
483 |
$cron_url_setting_desc = sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' );
|
484 |
}
|
485 |
/* translators: %s: Link to Icegram Email Sending documentation */
|
486 |
-
$cron_url_setting_desc .= sprintf( __( '<div class="mt-2.5 ml-1"><a class="hover:underline text-sm font-medium" href="%s" target="_blank">How to configure Email Sending →</a></div>', 'email-subscribers' ), esc_url( 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers') );
|
487 |
|
488 |
$pepipost_api_key_defined = ES()->is_const_defined( 'pepipost', 'api_key' );
|
489 |
|
483 |
$cron_url_setting_desc = sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' );
|
484 |
}
|
485 |
/* translators: %s: Link to Icegram Email Sending documentation */
|
486 |
+
$cron_url_setting_desc .= sprintf( __( '<div class="mt-2.5 ml-1"><a class="hover:underline text-sm font-medium" href="%s" target="_blank">How to configure Email Sending →</a></div>', 'email-subscribers' ), esc_url( 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers?utm_source=in_app&utm_medium=setup_email_sending&utm_campaign=es_doc') );
|
487 |
|
488 |
$pepipost_api_key_defined = ES()->is_const_defined( 'pepipost', 'api_key' );
|
489 |
|
lite/includes/classes/class-es-cache.php
CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
5 |
exit;
|
6 |
}
|
7 |
|
8 |
-
/**
|
9 |
* Cache implementation of the plugin
|
10 |
*
|
11 |
* @credit - Inspired by the WooCommerce Cache implementation.
|
@@ -19,7 +19,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
19 |
class ES_Cache {
|
20 |
|
21 |
/**
|
22 |
-
* Cache enabled/disabled
|
23 |
*
|
24 |
* @var bool
|
25 |
*
|
@@ -41,7 +41,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
41 |
*
|
42 |
* @param $key
|
43 |
* @param $value
|
44 |
-
* @param bool
|
45 |
*
|
46 |
* @return bool
|
47 |
*/
|
@@ -88,7 +88,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
88 |
* Only sets if key is not falsy
|
89 |
*
|
90 |
* @param string $key
|
91 |
-
* @param mixed
|
92 |
* @param string $group
|
93 |
*
|
94 |
* @since 4.4.0
|
@@ -102,21 +102,21 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
102 |
}
|
103 |
|
104 |
/**
|
105 |
-
*
|
106 |
*
|
107 |
-
* @param
|
108 |
-
* @param
|
109 |
-
*
|
110 |
-
* @
|
111 |
*
|
112 |
-
* @
|
113 |
*/
|
114 |
-
public static function get( $key, $group ) {
|
115 |
if ( ! $key ) {
|
116 |
return false;
|
117 |
}
|
118 |
|
119 |
-
return wp_cache_get( (string) $key, "ig_es_$group" );
|
120 |
}
|
121 |
|
122 |
/**
|
@@ -129,11 +129,13 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
129 |
*
|
130 |
* @since 4.4.0
|
131 |
*/
|
132 |
-
public static function
|
133 |
if ( ! $key ) {
|
134 |
return false;
|
135 |
}
|
|
|
136 |
$found = false;
|
|
|
137 |
wp_cache_get( (string) $key, "ig_es_$group", false, $found );
|
138 |
|
139 |
return $found;
|
@@ -155,5 +157,32 @@ if ( ! class_exists( 'ES_Cache' ) ) {
|
|
155 |
wp_cache_delete( (string) $key, "ig_es_$group" );
|
156 |
}
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
}
|
159 |
}
|
5 |
exit;
|
6 |
}
|
7 |
|
8 |
+
/**
|
9 |
* Cache implementation of the plugin
|
10 |
*
|
11 |
* @credit - Inspired by the WooCommerce Cache implementation.
|
19 |
class ES_Cache {
|
20 |
|
21 |
/**
|
22 |
+
* Cache enabled/disabled
|
23 |
*
|
24 |
* @var bool
|
25 |
*
|
41 |
*
|
42 |
* @param $key
|
43 |
* @param $value
|
44 |
+
* @param bool $expiration
|
45 |
*
|
46 |
* @return bool
|
47 |
*/
|
88 |
* Only sets if key is not falsy
|
89 |
*
|
90 |
* @param string $key
|
91 |
+
* @param mixed $value
|
92 |
* @param string $group
|
93 |
*
|
94 |
* @since 4.4.0
|
102 |
}
|
103 |
|
104 |
/**
|
105 |
+
* Get the data
|
106 |
*
|
107 |
+
* @param $key
|
108 |
+
* @param $group
|
109 |
+
* @param false $force
|
110 |
+
* @param null $found
|
111 |
*
|
112 |
+
* @return false|mixed
|
113 |
*/
|
114 |
+
public static function get( $key, $group, $force = false, &$found = null ) {
|
115 |
if ( ! $key ) {
|
116 |
return false;
|
117 |
}
|
118 |
|
119 |
+
return wp_cache_get( (string) $key, "ig_es_$group", $force, $found );
|
120 |
}
|
121 |
|
122 |
/**
|
129 |
*
|
130 |
* @since 4.4.0
|
131 |
*/
|
132 |
+
public static function is_exists( $key, $group ) {
|
133 |
if ( ! $key ) {
|
134 |
return false;
|
135 |
}
|
136 |
+
|
137 |
$found = false;
|
138 |
+
|
139 |
wp_cache_get( (string) $key, "ig_es_$group", false, $found );
|
140 |
|
141 |
return $found;
|
157 |
wp_cache_delete( (string) $key, "ig_es_$group" );
|
158 |
}
|
159 |
|
160 |
+
/**
|
161 |
+
* Generate cache key
|
162 |
+
*
|
163 |
+
* @param string $string
|
164 |
+
*
|
165 |
+
* @return boolean $exists_in_cache
|
166 |
+
*
|
167 |
+
* @since 4.7.2
|
168 |
+
*/
|
169 |
+
public static function generate_key( $string = '' ) {
|
170 |
+
$cache_key = '';
|
171 |
+
if ( ! empty( $string ) ) {
|
172 |
+
$cache_key = md5( $string ); // Convert to md5 hash string
|
173 |
+
}
|
174 |
+
|
175 |
+
return $cache_key;
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Flush cache
|
180 |
+
*
|
181 |
+
* @since 4.7.2
|
182 |
+
*/
|
183 |
+
public static function flush() {
|
184 |
+
wp_cache_flush();
|
185 |
+
}
|
186 |
+
|
187 |
}
|
188 |
}
|
lite/includes/classes/class-es-campaign-report.php
CHANGED
@@ -117,8 +117,8 @@ class ES_Campaign_Report extends ES_List_Table {
|
|
117 |
*/
|
118 |
public function prepare_items() {
|
119 |
|
120 |
-
$columns
|
121 |
-
$hidden
|
122 |
$sortable = $this->get_sortable_columns();
|
123 |
|
124 |
$this->_column_headers = array($columns, $hidden, $sortable);
|
@@ -287,7 +287,7 @@ class ES_Campaign_Report extends ES_List_Table {
|
|
287 |
$queue_data = ES_DB_Sending_Queue::get_queue_data( $campaign_id, $message_id );
|
288 |
}
|
289 |
|
290 |
-
$notification =
|
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 );
|
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);
|
287 |
$queue_data = ES_DB_Sending_Queue::get_queue_data( $campaign_id, $message_id );
|
288 |
}
|
289 |
|
290 |
+
$notification = ES()->campaigns_db->get( $campaign_id );
|
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 );
|
lite/includes/classes/class-es-contacts-table.php
CHANGED
@@ -593,7 +593,7 @@ class ES_Contacts_Table extends ES_List_Table {
|
|
593 |
* @return mixed
|
594 |
*/
|
595 |
public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
|
596 |
-
global $
|
597 |
|
598 |
$order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
|
599 |
$order = ig_es_get_request_data( 'order' );
|
@@ -625,15 +625,15 @@ class ES_Contacts_Table extends ES_List_Table {
|
|
625 |
$where_clause_added = false;
|
626 |
|
627 |
if ( ! empty( $filter_by_list_id ) ) {
|
628 |
-
$list_filter_sql = $
|
629 |
$where_clause_added = true;
|
630 |
}
|
631 |
|
632 |
if ( ! empty( $filter_by_status ) ) {
|
633 |
if ( $where_clause_added ) {
|
634 |
-
$list_filter_sql .= $
|
635 |
} else {
|
636 |
-
$list_filter_sql .= $
|
637 |
}
|
638 |
}
|
639 |
|
@@ -644,9 +644,9 @@ class ES_Contacts_Table extends ES_List_Table {
|
|
644 |
// Prepare search query
|
645 |
if ( ! empty( $search ) ) {
|
646 |
$query[] = ' ( first_name LIKE %s OR last_name LIKE %s OR email LIKE %s ) ';
|
647 |
-
$args[] = '%' . $
|
648 |
-
$args[] = '%' . $
|
649 |
-
$args[] = '%' . $
|
650 |
}
|
651 |
|
652 |
if ( $add_where_clause || count( $query ) > 0 ) {
|
@@ -683,9 +683,25 @@ class ES_Contacts_Table extends ES_List_Table {
|
|
683 |
$sql .= $order_by_clause;
|
684 |
$sql .= " LIMIT {$offset}, {$per_page}";
|
685 |
|
686 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
} else {
|
688 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
689 |
}
|
690 |
|
691 |
return $result;
|
593 |
* @return mixed
|
594 |
*/
|
595 |
public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
|
596 |
+
global $wpbd;
|
597 |
|
598 |
$order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
|
599 |
$order = ig_es_get_request_data( 'order' );
|
625 |
$where_clause_added = false;
|
626 |
|
627 |
if ( ! empty( $filter_by_list_id ) ) {
|
628 |
+
$list_filter_sql = $wpbd->prepare( ' WHERE list_id = %d', $filter_by_list_id );
|
629 |
$where_clause_added = true;
|
630 |
}
|
631 |
|
632 |
if ( ! empty( $filter_by_status ) ) {
|
633 |
if ( $where_clause_added ) {
|
634 |
+
$list_filter_sql .= $wpbd->prepare( ' AND status = %s', $filter_by_status );
|
635 |
} else {
|
636 |
+
$list_filter_sql .= $wpbd->prepare( ' WHERE status = %s', $filter_by_status );
|
637 |
}
|
638 |
}
|
639 |
|
644 |
// Prepare search query
|
645 |
if ( ! empty( $search ) ) {
|
646 |
$query[] = ' ( first_name LIKE %s OR last_name LIKE %s OR email LIKE %s ) ';
|
647 |
+
$args[] = '%' . $wpbd->esc_like( $search ) . '%';
|
648 |
+
$args[] = '%' . $wpbd->esc_like( $search ) . '%';
|
649 |
+
$args[] = '%' . $wpbd->esc_like( $search ) . '%';
|
650 |
}
|
651 |
|
652 |
if ( $add_where_clause || count( $query ) > 0 ) {
|
683 |
$sql .= $order_by_clause;
|
684 |
$sql .= " LIMIT {$offset}, {$per_page}";
|
685 |
|
686 |
+
$cache_key = ES_Cache::generate_key( $sql );
|
687 |
+
$exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
|
688 |
+
|
689 |
+
if ( ! $exists_in_cache ) {
|
690 |
+
$result = $wpbd->get_results( $sql, 'ARRAY_A' );
|
691 |
+
ES_Cache::set( $cache_key, $result, 'query' );
|
692 |
+
} else {
|
693 |
+
$result = ES_Cache::get( $cache_key, 'query' );
|
694 |
+
}
|
695 |
} else {
|
696 |
+
|
697 |
+
$cache_key = ES_Cache::generate_key( $sql );
|
698 |
+
$exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
|
699 |
+
if ( ! $exists_in_cache ) {
|
700 |
+
$result = $wpbd->get_var( $sql );
|
701 |
+
ES_Cache::set( $cache_key, $result, 'query' );
|
702 |
+
} else {
|
703 |
+
$result = ES_Cache::get( $cache_key, 'query' );
|
704 |
+
}
|
705 |
}
|
706 |
|
707 |
return $result;
|
lite/includes/classes/class-es-forms-table.php
CHANGED
@@ -87,19 +87,19 @@ class ES_Forms_Table extends ES_List_Table {
|
|
87 |
echo wp_kses_post( $this->edit_form( absint( $form ) ) );
|
88 |
} else {
|
89 |
?>
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
<?php
|
104 |
if ( 'form_created' === $action ) {
|
105 |
$message = __( 'Form added successfully!', 'email-subscribers' );
|
@@ -133,7 +133,7 @@ class ES_Forms_Table extends ES_List_Table {
|
|
133 |
<br class="clear">
|
134 |
</div>
|
135 |
</div>
|
136 |
-
|
137 |
}
|
138 |
}
|
139 |
|
@@ -303,39 +303,45 @@ class ES_Forms_Table extends ES_List_Table {
|
|
303 |
|
304 |
<div class="max-w-full -mt-3 font-sans">
|
305 |
<header class="wp-heading-inline">
|
306 |
-
<
|
307 |
-
<div class="flex
|
308 |
-
<
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
</nav>
|
316 |
-
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
317 |
-
<?php
|
318 |
-
if ( $is_new ) {
|
319 |
-
esc_html_e( ' New Form', 'email-subscribers' );
|
320 |
-
} else {
|
321 |
-
esc_html_e( ' Edit Form', 'email-subscribers' );
|
322 |
-
}
|
323 |
-
|
324 |
-
?>
|
325 |
-
</h2>
|
326 |
</div>
|
327 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
328 |
</header>
|
329 |
<div class=""><hr class="wp-header-end"></div>
|
330 |
<div id="poststuff">
|
331 |
<div id="post-body" class="metabox-holder column-1">
|
332 |
<div id="post-body-content" class="pt-0.5">
|
333 |
-
<div class="
|
334 |
-
<a class="hover:underline text-base font-medium" href="https://www.icegram.com/documentation/how-to-create-a-form-in-email-subscribers/" target="_blank">
|
335 |
-
<?php esc_html_e( 'How to create form?', 'email-subscribers' ); ?> →
|
336 |
-
</a>
|
337 |
-
</div>
|
338 |
-
<div class="bg-white shadow-md rounded-lg mt-3 pt-1">
|
339 |
<form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
340 |
|
341 |
|
@@ -410,7 +416,7 @@ class ES_Forms_Table extends ES_List_Table {
|
|
410 |
echo 'checked="checked"';
|
411 |
}
|
412 |
?>
|
413 |
-
|
414 |
</td>
|
415 |
<td class="pr-6 pb-8">
|
416 |
<input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes"
|
@@ -422,157 +428,157 @@ class ES_Forms_Table extends ES_List_Table {
|
|
422 |
/>
|
423 |
</td>
|
424 |
<td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_label]" value="<?php echo esc_attr( $form_data['name_label'] ); ?>"
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
</div>
|
450 |
-
<div class="flex flex-row border-b border-gray-100">
|
451 |
-
<div class="flex w-1/5">
|
452 |
-
<div class="ml-4 pt-4 mb-2">
|
453 |
-
<label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Lists', 'email-subscribers' ); ?></span></label>
|
454 |
-
<p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
|
455 |
-
</div>
|
456 |
-
</div>
|
457 |
-
<div class="flex">
|
458 |
-
<div class="ml-16 mb-6 mr-4 mt-4">
|
459 |
-
<?php
|
460 |
-
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
461 |
-
if ( count( $lists ) > 0 ) {
|
462 |
-
$lists_checkboxes = ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
|
463 |
-
echo wp_kses( $lists_checkboxes , $allowedtags );
|
464 |
-
|
465 |
-
} else {
|
466 |
-
$create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
|
467 |
-
?>
|
468 |
-
<span><b class="text-sm font-normal text-gray-600 pb-2">
|
469 |
-
<?php
|
470 |
-
/* translators: %s: Create list page url */
|
471 |
-
echo sprintf( esc_html__('List not found. Please %s', 'email-subscribers' ), '<a href="' . esc_url( $create_list_link ) . '"> ' . esc_html__( 'create your first list', 'email-subscribers') . '</a>' );
|
472 |
-
?>
|
473 |
-
</b></span>
|
474 |
-
<?php } ?>
|
475 |
</div>
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
</div>
|
485 |
-
</div>
|
486 |
-
<div class="flex ">
|
487 |
-
<div class="ml-16 mb-4 mr-4 mt-12">
|
488 |
-
<label for="allow_contact" class=" inline-flex items-center cursor-pointer">
|
489 |
-
<span class="relative">
|
490 |
-
<input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes"
|
491 |
-
<?php
|
492 |
-
if ( 'yes' === $form_data['list_visible'] ) {
|
493 |
-
echo 'checked="checked"';
|
494 |
-
}
|
495 |
-
|
496 |
-
?>
|
497 |
-
/>
|
498 |
-
|
499 |
-
<span class="es-mail-toggle-line"></span>
|
500 |
-
<span class="es-mail-toggle-dot"></span>
|
501 |
-
</span>
|
502 |
-
|
503 |
-
</label>
|
504 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
505 |
</div>
|
506 |
-
</div>
|
507 |
-
</div>
|
508 |
|
509 |
-
|
510 |
-
<?php do_action('ig_es_add_additional_options', $form_data); ?>
|
511 |
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
<div class="
|
516 |
-
<
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
<
|
523 |
-
<
|
524 |
-
<
|
525 |
-
<
|
526 |
-
<
|
527 |
-
<
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
<
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
|
|
|
|
|
|
|
|
548 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
549 |
</div>
|
550 |
</div>
|
551 |
-
|
552 |
-
<input type="hidden" name="submitted" value="submitted"/>
|
553 |
-
<?php
|
554 |
-
$submit_button_text = $is_new ? __( 'Save Form', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
|
555 |
-
if ( count( $lists ) > 0 ) {
|
556 |
-
?>
|
557 |
-
<p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer align-middle ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php echo esc_attr( $submit_button_text ); ?>"/>
|
558 |
-
<a href="admin.php?page=es_forms" class="cursor-pointer align-middle rounded-md border border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo text-sm leading-5 font-medium transition ease-in-out duration-150 px-4 my-2 py-2 mx-2 "><?php esc_html_e( 'Cancel', 'email-subscribers' ); ?></a></p>
|
559 |
-
<?php
|
560 |
-
} else {
|
561 |
-
$lists_page_url = admin_url( 'admin.php?page=es_lists' );
|
562 |
-
/* translators: %s: List Page url */
|
563 |
-
$message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
|
564 |
-
$status = 'error';
|
565 |
-
ES_Common::show_message( $message, $status );
|
566 |
-
}
|
567 |
-
?>
|
568 |
-
</form>
|
569 |
</div>
|
570 |
-
</div>
|
571 |
-
</div>
|
572 |
-
</div>
|
573 |
|
574 |
|
575 |
-
|
576 |
|
577 |
}
|
578 |
|
@@ -835,7 +841,7 @@ class ES_Forms_Table extends ES_List_Table {
|
|
835 |
case 'shortcode':
|
836 |
$shortcode = '[email-subscribers-form id="' . $item['id'] . '"]';
|
837 |
|
838 |
-
return '<code
|
839 |
break;
|
840 |
case 'total_active_subscribers':
|
841 |
return ES()->contacts_db->get_total_contacts_by_form_id( $item['id'] );
|
@@ -984,11 +990,11 @@ class ES_Forms_Table extends ES_List_Table {
|
|
984 |
public function search_box( $text, $input_id) {
|
985 |
?>
|
986 |
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
<?php
|
993 |
}
|
994 |
|
87 |
echo wp_kses_post( $this->edit_form( absint( $form ) ) );
|
88 |
} else {
|
89 |
?>
|
90 |
+
<div class="flex">
|
91 |
+
<div>
|
92 |
+
<h2 class="wp-heading-inline text-3xl font-bold text-gray-700 sm:leading-9 sm:truncate pr-4">
|
93 |
+
<?php esc_html_e( 'Forms', 'email-subscribers' ); ?>
|
94 |
+
</h2>
|
95 |
+
</div>
|
96 |
+
<div class="mt-1">
|
97 |
+
<a href="admin.php?page=es_forms&action=new" class="ig-es-title-button ml-2 leading-5 align-middle">
|
98 |
+
<?php esc_html_e('Add New', 'email-subscribers'); ?>
|
99 |
+
</a>
|
100 |
+
</div>
|
101 |
+
</div>
|
102 |
+
<div><hr class="wp-header-end"></div>
|
103 |
<?php
|
104 |
if ( 'form_created' === $action ) {
|
105 |
$message = __( 'Form added successfully!', 'email-subscribers' );
|
133 |
<br class="clear">
|
134 |
</div>
|
135 |
</div>
|
136 |
+
<?php
|
137 |
}
|
138 |
}
|
139 |
|
303 |
|
304 |
<div class="max-w-full -mt-3 font-sans">
|
305 |
<header class="wp-heading-inline">
|
306 |
+
<nav class="text-gray-400 my-0" aria-label="Breadcrumb">
|
307 |
+
<div class="flex">
|
308 |
+
<div class="w-1/2">
|
309 |
+
<ol class="list-none p-0 inline-flex">
|
310 |
+
<li class="flex items-center text-sm tracking-wide">
|
311 |
+
<a class="hover:underline" href="admin.php?page=es_forms"><?php esc_html_e('Forms ', 'email-subscribers'); ?></a>
|
312 |
+
<svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
|
313 |
+
</li>
|
314 |
+
</ol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
</div>
|
316 |
</div>
|
317 |
+
</nav>
|
318 |
+
<div class="flex">
|
319 |
+
<div class="w-1/2">
|
320 |
+
<h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
|
321 |
+
<?php
|
322 |
+
if ( $is_new ) {
|
323 |
+
esc_html_e( ' New Form', 'email-subscribers' );
|
324 |
+
} else {
|
325 |
+
esc_html_e( ' Edit Form', 'email-subscribers' );
|
326 |
+
}
|
327 |
+
|
328 |
+
?>
|
329 |
+
</h2>
|
330 |
+
</div>
|
331 |
+
<div class="w-1/2 -mt-2.5 inline text-right">
|
332 |
+
<a class="px-1.5 py-2 mt-2 es-documentation" href="https://www.icegram.com/documentation/how-to-create-a-form-in-email-subscribers/?utm_source=in_app&utm_medium=es_forms&utm_campaign=es_doc" target="_blank">
|
333 |
+
<svg class="w-6 h-6 -mt-1 inline text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
334 |
+
<title><?php esc_html_e('Documentation ', 'email-subscribers'); ?></title>
|
335 |
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
|
336 |
+
</svg>
|
337 |
+
</a>
|
338 |
+
</div>
|
339 |
</header>
|
340 |
<div class=""><hr class="wp-header-end"></div>
|
341 |
<div id="poststuff">
|
342 |
<div id="post-body" class="metabox-holder column-1">
|
343 |
<div id="post-body-content" class="pt-0.5">
|
344 |
+
<div class="bg-white shadow-md rounded-lg mt-5 pt-1">
|
|
|
|
|
|
|
|
|
|
|
345 |
<form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
|
346 |
|
347 |
|
416 |
echo 'checked="checked"';
|
417 |
}
|
418 |
?>
|
419 |
+
/>
|
420 |
</td>
|
421 |
<td class="pr-6 pb-8">
|
422 |
<input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes"
|
428 |
/>
|
429 |
</td>
|
430 |
<td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_label]" value="<?php echo esc_attr( $form_data['name_label'] ); ?>"
|
431 |
+
<?php
|
432 |
+
if ( 'yes' === $form_data['name_required'] ) {
|
433 |
+
echo 'disabled=disabled';
|
434 |
+
}
|
435 |
+
?>
|
436 |
+
></td>
|
437 |
+
<td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_place_holder]" value="<?php echo esc_attr( $form_data['name_place_holder'] ); ?>"
|
438 |
+
<?php
|
439 |
+
if ( 'yes' === $form_data['name_required'] ) {
|
440 |
+
echo 'disabled=disabled';
|
441 |
+
}
|
442 |
+
?>
|
443 |
+
></td>
|
444 |
+
</tr>
|
445 |
+
<tr class="form-field">
|
446 |
+
<td class="pr-6 pb-6"><b class="text-gray-500 text-sm font-normal pb-2"><?php esc_html_e( 'Button', 'email-subscribers' ); ?></b></td>
|
447 |
+
<td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_visible]" value="yes" disabled="disabled" checked="checked"></td>
|
448 |
+
<td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_required]" value="yes" disabled="disabled" checked="checked"></td>
|
449 |
+
<td class="pr-6 pb-6"><input class="form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[button_label]" value="<?php echo esc_attr( $form_data['button_label'] ); ?>"></td>
|
450 |
+
</tr>
|
451 |
+
|
452 |
+
</table>
|
453 |
+
</div>
|
454 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
455 |
</div>
|
456 |
+
<div class="flex flex-row border-b border-gray-100">
|
457 |
+
<div class="flex w-1/5">
|
458 |
+
<div class="ml-4 pt-4 mb-2">
|
459 |
+
<label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Lists', 'email-subscribers' ); ?></span></label>
|
460 |
+
<p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
|
461 |
+
</div>
|
462 |
+
</div>
|
463 |
+
<div class="flex">
|
464 |
+
<div class="ml-16 mb-6 mr-4 mt-4">
|
465 |
+
<?php
|
466 |
+
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
467 |
+
if ( count( $lists ) > 0 ) {
|
468 |
+
$lists_checkboxes = ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
|
469 |
+
echo wp_kses( $lists_checkboxes , $allowedtags );
|
470 |
+
|
471 |
+
} else {
|
472 |
+
$create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
|
473 |
+
?>
|
474 |
+
<span><b class="text-sm font-normal text-gray-600 pb-2">
|
475 |
+
<?php
|
476 |
+
/* translators: %s: Create list page url */
|
477 |
+
echo sprintf( esc_html__('List not found. Please %s', 'email-subscribers' ), '<a href="' . esc_url( $create_list_link ) . '"> ' . esc_html__( 'create your first list', 'email-subscribers') . '</a>' );
|
478 |
+
?>
|
479 |
+
</b></span>
|
480 |
+
<?php } ?>
|
481 |
+
</div>
|
482 |
+
</div>
|
483 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
|
485 |
+
<div class="flex flex-row border-b border-gray-100">
|
486 |
+
<div class="flex w-1/5">
|
487 |
+
<div class="ml-4 pt-4 mb-2">
|
488 |
+
<label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Allow contact to choose list(s)', 'email-subscribers' ); ?></span></label>
|
489 |
+
<p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php esc_html_e( 'Allow contacts to choose list(s) in which they want to subscribe.', 'email-subscribers' ); ?></p>
|
490 |
+
</div>
|
491 |
+
</div>
|
492 |
+
<div class="flex ">
|
493 |
+
<div class="ml-16 mb-4 mr-4 mt-12">
|
494 |
+
<label for="allow_contact" class=" inline-flex items-center cursor-pointer">
|
495 |
+
<span class="relative">
|
496 |
+
<input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes"
|
497 |
+
<?php
|
498 |
+
if ( 'yes' === $form_data['list_visible'] ) {
|
499 |
+
echo 'checked="checked"';
|
500 |
+
}
|
501 |
+
|
502 |
+
?>
|
503 |
+
/>
|
504 |
+
|
505 |
+
<span class="es-mail-toggle-line"></span>
|
506 |
+
<span class="es-mail-toggle-dot"></span>
|
507 |
+
</span>
|
508 |
+
|
509 |
+
</label>
|
510 |
+
|
511 |
+
</div>
|
512 |
+
</div>
|
513 |
</div>
|
|
|
|
|
514 |
|
|
|
|
|
515 |
|
516 |
+
<?php do_action('ig_es_add_additional_options', $form_data); ?>
|
517 |
+
|
518 |
+
|
519 |
+
<div class="flex flex-row border-b border-gray-100">
|
520 |
+
<div class="flex w-1/5">
|
521 |
+
<div class="ml-4 pt-4 mb-2">
|
522 |
+
<label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Show GDPR consent checkbox', 'email-subscribers' ); ?></span></label>
|
523 |
+
<p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Show consent checkbox to get the consent of a contact before adding them to list(s)', 'email-subscribers' ); ?></p>
|
524 |
+
</div>
|
525 |
+
</div>
|
526 |
+
<div class="flex ">
|
527 |
+
<div class="ml-16 mb-2 mr-4 mt-6">
|
528 |
+
<table class="ig_es_form_table">
|
529 |
+
<tr>
|
530 |
+
<td>
|
531 |
+
<label for="gdpr_consent" class=" inline-flex items-center cursor-pointer">
|
532 |
+
<span class="relative">
|
533 |
+
<input id="gdpr_consent" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[gdpr_consent]" value="yes"
|
534 |
+
<?php
|
535 |
+
if ( 'yes' === $form_data['gdpr_consent'] ) {
|
536 |
+
echo 'checked="checked"';
|
537 |
+
}
|
538 |
+
?>
|
539 |
+
/>
|
540 |
+
|
541 |
+
<span class="es-mail-toggle-line"></span>
|
542 |
+
<span class="es-mail-toggle-dot"></span>
|
543 |
+
</span>
|
544 |
+
</label>
|
545 |
+
</td>
|
546 |
+
</tr>
|
547 |
+
<tr>
|
548 |
+
<td>
|
549 |
+
<textarea class="form-textarea text-sm" rows="2" cols="50" name="form_data[gdpr_consent_text]"><?php echo wp_kses_post( $form_data['gdpr_consent_text'] ); ?></textarea>
|
550 |
+
<p class="italic text-xs text-gray-400 mt-2 leading-snug pb-4"><?php esc_html_e( 'Consent text will show up at subscription form next to consent checkbox.', 'email-subscribers' ); ?></p>
|
551 |
+
</td>
|
552 |
+
</tr>
|
553 |
+
</table>
|
554 |
+
</div>
|
555 |
+
</div>
|
556 |
</div>
|
557 |
+
<input type="hidden" name="form_data[af_id]" value="<?php echo esc_attr( $form_data['af_id'] ); ?>"/>
|
558 |
+
<input type="hidden" name="submitted" value="submitted"/>
|
559 |
+
<?php
|
560 |
+
$submit_button_text = $is_new ? __( 'Save Form', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
|
561 |
+
if ( count( $lists ) > 0 ) {
|
562 |
+
?>
|
563 |
+
<p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer align-middle ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php echo esc_attr( $submit_button_text ); ?>"/>
|
564 |
+
<a href="admin.php?page=es_forms" class="cursor-pointer align-middle rounded-md border border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo text-sm leading-5 font-medium transition ease-in-out duration-150 px-4 my-2 py-2 mx-2 "><?php esc_html_e( 'Cancel', 'email-subscribers' ); ?></a></p>
|
565 |
+
<?php
|
566 |
+
} else {
|
567 |
+
$lists_page_url = admin_url( 'admin.php?page=es_lists' );
|
568 |
+
/* translators: %s: List Page url */
|
569 |
+
$message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
|
570 |
+
$status = 'error';
|
571 |
+
ES_Common::show_message( $message, $status );
|
572 |
+
}
|
573 |
+
?>
|
574 |
+
</form>
|
575 |
</div>
|
576 |
</div>
|
577 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
578 |
</div>
|
|
|
|
|
|
|
579 |
|
580 |
|
581 |
+
<?php
|
582 |
|
583 |
}
|
584 |
|
841 |
case 'shortcode':
|
842 |
$shortcode = '[email-subscribers-form id="' . $item['id'] . '"]';
|
843 |
|
844 |
+
return '<code class="es-code">' . $shortcode . '</code>';
|
845 |
break;
|
846 |
case 'total_active_subscribers':
|
847 |
return ES()->contacts_db->get_total_contacts_by_form_id( $item['id'] );
|
990 |
public function search_box( $text, $input_id) {
|
991 |
?>
|
992 |
|
993 |
+
<p class="search-box">
|
994 |
+
<label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
|
995 |
+
<input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
|
996 |
+
<?php submit_button( __( 'Search Forms', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
|
997 |
+
</p>
|
998 |
<?php
|
999 |
}
|
1000 |
|
lite/includes/classes/class-es-handle-post-notification.php
CHANGED
@@ -86,8 +86,8 @@ class ES_Handle_Post_Notification {
|
|
86 |
$template_id = $notification['base_template_id'];
|
87 |
$template = get_post( $template_id ); // to confirm if template exists in ES->Templates
|
88 |
if ( is_object( $template ) ) {
|
89 |
-
$list_id
|
90 |
-
$list_id
|
91 |
|
92 |
$post = get_post( $post_id );
|
93 |
|
86 |
$template_id = $notification['base_template_id'];
|
87 |
$template = get_post( $template_id ); // to confirm if template exists in ES->Templates
|
88 |
if ( is_object( $template ) ) {
|
89 |
+
$list_id = $notification['list_ids'];
|
90 |
+
$list_id = explode( ',', $list_id );
|
91 |
|
92 |
$post = get_post( $post_id );
|
93 |
|
lite/includes/classes/class-es-handle-subscription.php
CHANGED
@@ -535,7 +535,7 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
|
|
535 |
'esfpx_email' => $email,
|
536 |
'esfpx_es_hp_email' => $hp_email,
|
537 |
'esfpx_lists' => array(
|
538 |
-
$
|
539 |
),
|
540 |
'form_type' => 'external',
|
541 |
);
|
535 |
'esfpx_email' => $email,
|
536 |
'esfpx_es_hp_email' => $hp_email,
|
537 |
'esfpx_lists' => array(
|
538 |
+
$list_hash,
|
539 |
),
|
540 |
'form_type' => 'external',
|
541 |
);
|
lite/includes/classes/class-es-import-subscribers.php
CHANGED
@@ -129,7 +129,7 @@ class ES_Import_Subscribers {
|
|
129 |
<a class="font-medium hover:underline" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
|
130 |
</p>
|
131 |
<p class="mt-4 es_helper_text">
|
132 |
-
<a class="hover:underline text-sm font-medium" href="https://www.icegram.com/documentation/es-how-to-import-or-export-email-addresses
|
133 |
<?php esc_html_e( 'How to import contacts using CSV? ', 'email-subscribers' ); ?>→
|
134 |
</a>
|
135 |
</p>
|
@@ -650,6 +650,7 @@ class ES_Import_Subscribers {
|
|
650 |
'last_name' => __( 'Last Name', 'email-subscribers' ),
|
651 |
'first_last' => __( '(First Name) (Last Name)', 'email-subscribers' ),
|
652 |
'last_first' => __( '(Last Name) (First Name)', 'email-subscribers' ),
|
|
|
653 |
);
|
654 |
if ( ! empty( $response['data']['importing_from'] ) && 'wordpress_users' !== $response['data']['importing_from'] ) {
|
655 |
$fields['list_name'] = __( 'List Name', 'email-subscribers' );
|
@@ -811,7 +812,9 @@ class ES_Import_Subscribers {
|
|
811 |
if ( $raw_list_data ) {
|
812 |
|
813 |
$contacts_data = array();
|
814 |
-
$
|
|
|
|
|
815 |
$contact_emails = array();
|
816 |
$processed_emails = array();
|
817 |
$list_contact_data = array();
|
@@ -859,6 +862,12 @@ class ES_Import_Subscribers {
|
|
859 |
$insert['last_name'] = $name[0];
|
860 |
}
|
861 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
862 |
case '-1':
|
863 |
// ignored column
|
864 |
break;
|
@@ -887,12 +896,12 @@ class ES_Import_Subscribers {
|
|
887 |
}
|
888 |
|
889 |
$email = sanitize_email( strtolower( $insert['email'] ) );
|
890 |
-
|
891 |
if ( ! in_array( $email, $processed_emails, true ) ) {
|
892 |
$first_name = isset( $insert['first_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['first_name'] ) ) ) : '';
|
893 |
$last_name = isset( $insert['last_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['last_name'] ) ) ) : '';
|
894 |
$list_names = isset( $insert['list_name'] ) ? sanitize_text_field( trim( $insert['list_name'] ) ) : '';
|
895 |
-
|
|
|
896 |
if ( empty( $insert['list_name'] ) ) {
|
897 |
$list_names_arr = ES()->lists_db->get_lists_by_id( $list_id );
|
898 |
$list_names = implode( ',', array_column( $list_names_arr, 'name' ));
|
@@ -938,7 +947,7 @@ class ES_Import_Subscribers {
|
|
938 |
$contacts_data[$email]['source'] = 'import';
|
939 |
$contacts_data[$email]['status'] = 'verified';
|
940 |
$contacts_data[$email]['hash'] = $guid;
|
941 |
-
$contacts_data[$email]['created_at'] = $
|
942 |
|
943 |
$processed_emails[] = $email;
|
944 |
$bulkdata['imported']++;
|
@@ -986,10 +995,11 @@ class ES_Import_Subscribers {
|
|
986 |
}
|
987 |
|
988 |
foreach ($list_data as $status => $contact_emails) {
|
989 |
-
$
|
|
|
990 |
if ( count( $contact_ids ) > 0 ) {
|
991 |
ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
|
992 |
-
ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $
|
993 |
}
|
994 |
}
|
995 |
}
|
129 |
<a class="font-medium hover:underline" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
|
130 |
</p>
|
131 |
<p class="mt-4 es_helper_text">
|
132 |
+
<a class="hover:underline text-sm font-medium" href="https://www.icegram.com/documentation/es-how-to-import-or-export-email-addresses/?utm_source=in_app&utm_medium=import_contacts&utm_campaign=es_doc" target="_blank">
|
133 |
<?php esc_html_e( 'How to import contacts using CSV? ', 'email-subscribers' ); ?>→
|
134 |
</a>
|
135 |
</p>
|
650 |
'last_name' => __( 'Last Name', 'email-subscribers' ),
|
651 |
'first_last' => __( '(First Name) (Last Name)', 'email-subscribers' ),
|
652 |
'last_first' => __( '(Last Name) (First Name)', 'email-subscribers' ),
|
653 |
+
'created_at' => __( 'Subscribed at', 'email-subscribers' ),
|
654 |
);
|
655 |
if ( ! empty( $response['data']['importing_from'] ) && 'wordpress_users' !== $response['data']['importing_from'] ) {
|
656 |
$fields['list_name'] = __( 'List Name', 'email-subscribers' );
|
812 |
if ( $raw_list_data ) {
|
813 |
|
814 |
$contacts_data = array();
|
815 |
+
$gmt_offset_option = get_option( 'gmt_offset' );
|
816 |
+
$gmt_offset = ig_es_get_gmt_offset( true );
|
817 |
+
$current_date_time = gmdate( 'Y-m-d H:i:s', time() - $gmt_offset );
|
818 |
$contact_emails = array();
|
819 |
$processed_emails = array();
|
820 |
$list_contact_data = array();
|
862 |
$insert['last_name'] = $name[0];
|
863 |
}
|
864 |
break;
|
865 |
+
case 'created_at':
|
866 |
+
if ( ! is_numeric( $d ) && ! empty( $d ) ) {
|
867 |
+
$d = sanitize_text_field( $d );
|
868 |
+
$insert['created_at'] = gmdate( 'Y-m-d H:i:s', strtotime( $d ) - $gmt_offset );
|
869 |
+
}
|
870 |
+
break;
|
871 |
case '-1':
|
872 |
// ignored column
|
873 |
break;
|
896 |
}
|
897 |
|
898 |
$email = sanitize_email( strtolower( $insert['email'] ) );
|
|
|
899 |
if ( ! in_array( $email, $processed_emails, true ) ) {
|
900 |
$first_name = isset( $insert['first_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['first_name'] ) ) ) : '';
|
901 |
$last_name = isset( $insert['last_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['last_name'] ) ) ) : '';
|
902 |
$list_names = isset( $insert['list_name'] ) ? sanitize_text_field( trim( $insert['list_name'] ) ) : '';
|
903 |
+
$created_at = isset( $insert['created_at'] ) ? $insert['created_at'] : $current_date_time;
|
904 |
+
|
905 |
if ( empty( $insert['list_name'] ) ) {
|
906 |
$list_names_arr = ES()->lists_db->get_lists_by_id( $list_id );
|
907 |
$list_names = implode( ',', array_column( $list_names_arr, 'name' ));
|
947 |
$contacts_data[$email]['source'] = 'import';
|
948 |
$contacts_data[$email]['status'] = 'verified';
|
949 |
$contacts_data[$email]['hash'] = $guid;
|
950 |
+
$contacts_data[$email]['created_at'] = $created_at;
|
951 |
|
952 |
$processed_emails[] = $email;
|
953 |
$bulkdata['imported']++;
|
995 |
}
|
996 |
|
997 |
foreach ($list_data as $status => $contact_emails) {
|
998 |
+
$contact_id_date = ES()->contacts_db->get_contact_ids_created_at_date_by_emails( $contact_emails );
|
999 |
+
$contact_ids = array_keys( $contact_id_date );
|
1000 |
if ( count( $contact_ids ) > 0 ) {
|
1001 |
ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
|
1002 |
+
ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_id_date, $status, 1, $created_at );
|
1003 |
}
|
1004 |
}
|
1005 |
}
|
lite/includes/classes/class-es-lists-table.php
CHANGED
@@ -317,7 +317,9 @@ class ES_Lists_Table extends ES_List_Table {
|
|
317 |
</div>
|
318 |
</div>
|
319 |
</div>
|
|
|
320 |
<?php
|
|
|
321 |
$submit_button_text = $is_new ? __( 'Save List', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
|
322 |
?>
|
323 |
<input type="hidden" name="submitted" value="submitted"/>
|
@@ -501,6 +503,12 @@ class ES_Lists_Table extends ES_List_Table {
|
|
501 |
return "<a href='admin.php?page=download_report&report=users&status=select_list&list_id={$item['id']}&export-nonce={$export_nonce}'><svg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24' class='w-8 h-8 text-indigo-600 hover:text-indigo-500 active:text-indigo-600'><path d='M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></a>";
|
502 |
break;
|
503 |
|
|
|
|
|
|
|
|
|
|
|
|
|
504 |
default:
|
505 |
return '';
|
506 |
}
|
@@ -554,9 +562,13 @@ class ES_Lists_Table extends ES_List_Table {
|
|
554 |
*/
|
555 |
public function get_columns() {
|
556 |
|
|
|
|
|
|
|
557 |
$columns = array(
|
558 |
'cb' => '<input type="checkbox" />',
|
559 |
'name' => __( 'Name', 'email-subscribers' ),
|
|
|
560 |
'subscribed' => __( 'Subscribed', 'email-subscribers' ),
|
561 |
'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
|
562 |
'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
|
317 |
</div>
|
318 |
</div>
|
319 |
</div>
|
320 |
+
|
321 |
<?php
|
322 |
+
|
323 |
$submit_button_text = $is_new ? __( 'Save List', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
|
324 |
?>
|
325 |
<input type="hidden" name="submitted" value="submitted"/>
|
503 |
return "<a href='admin.php?page=download_report&report=users&status=select_list&list_id={$item['id']}&export-nonce={$export_nonce}'><svg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24' class='w-8 h-8 text-indigo-600 hover:text-indigo-500 active:text-indigo-600'><path d='M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></a>";
|
504 |
break;
|
505 |
|
506 |
+
case 'hash':
|
507 |
+
$list_hash = $item['hash'];
|
508 |
+
|
509 |
+
return '<code class="es-code">' . $list_hash . '</code>';
|
510 |
+
break;
|
511 |
+
|
512 |
default:
|
513 |
return '';
|
514 |
}
|
562 |
*/
|
563 |
public function get_columns() {
|
564 |
|
565 |
+
$allowedtags = ig_es_allowed_html_tags_in_esc();
|
566 |
+
$tooltip_html = ES_Common::get_tooltip_html( __( 'Unique hash key that can be used to subscribe users to this list from external sites.', 'email-subscribers' ) );
|
567 |
+
|
568 |
$columns = array(
|
569 |
'cb' => '<input type="checkbox" />',
|
570 |
'name' => __( 'Name', 'email-subscribers' ),
|
571 |
+
'hash' => __( 'Hash', 'email-subscribers' ) . ' ' . $tooltip_html,
|
572 |
'subscribed' => __( 'Subscribed', 'email-subscribers' ),
|
573 |
'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
|
574 |
'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
|
lite/includes/classes/class-es-mailer.php
CHANGED
@@ -635,7 +635,9 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
635 |
|
636 |
$total_emails_to_send = count( $emails );
|
637 |
|
638 |
-
|
|
|
|
|
639 |
|
640 |
$mailer_data_set = $this->mailer->set_mailer_data();
|
641 |
|
@@ -695,16 +697,23 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
695 |
$content = $this->add_links_variables( $content, $campaign_id, $message_id, $variable_string );
|
696 |
|
697 |
if ( $this->can_track_open() ) {
|
698 |
-
$
|
|
|
699 |
$content .= $tracking_image;
|
700 |
}
|
701 |
|
702 |
-
$this->
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
}
|
709 |
}
|
710 |
|
@@ -730,7 +739,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
730 |
'guid' => ig_es_get_data( $merge_tags, 'hash', '' ),
|
731 |
);
|
732 |
|
733 |
-
if ( $this->mailer->support_batch_sending ) {
|
734 |
|
735 |
if ( ! $this->mailer->is_batch_limit_reached() ) {
|
736 |
do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
|
@@ -795,10 +804,41 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
795 |
}
|
796 |
|
797 |
if ( $this->limits_exceeded() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
break;
|
799 |
}
|
800 |
}
|
801 |
|
|
|
|
|
|
|
|
|
802 |
return $response;
|
803 |
|
804 |
}
|
@@ -869,6 +909,13 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
869 |
'Content-Type: text/html; charset="' . $message->charset . '"'
|
870 |
);
|
871 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
872 |
$message->headers = $headers;
|
873 |
|
874 |
// $email = ig_es_get_data( $merge_tags, 'email', '' );
|
@@ -1301,12 +1348,12 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
1301 |
}
|
1302 |
|
1303 |
if ( ! empty( $hash )) {
|
1304 |
-
$new_link =
|
1305 |
|
1306 |
$old_link = ' href="' . $link . '"';
|
1307 |
$new_link = ' href="' . $new_link . '"';
|
1308 |
$pos = strpos( $content, $old_link );
|
1309 |
-
if ( false
|
1310 |
$content = preg_replace( '/' . preg_quote( $old_link, '/' ) . '/', $new_link, $content, 1 );
|
1311 |
$this->mailer->links[$link][] = $index;
|
1312 |
}
|
@@ -1317,6 +1364,71 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
1317 |
return $content;
|
1318 |
}
|
1319 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1320 |
/**
|
1321 |
* Get Sender Name
|
1322 |
*
|
@@ -1613,5 +1725,48 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
1613 |
return $message;
|
1614 |
|
1615 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1616 |
}
|
1617 |
}
|
635 |
|
636 |
$total_emails_to_send = count( $emails );
|
637 |
|
638 |
+
// In case mailser supporting batch APIs, we are setting API credentials, sender data before running the email loop
|
639 |
+
// For normal mailers, we are doing this inside the loop
|
640 |
+
if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
|
641 |
|
642 |
$mailer_data_set = $this->mailer->set_mailer_data();
|
643 |
|
697 |
$content = $this->add_links_variables( $content, $campaign_id, $message_id, $variable_string );
|
698 |
|
699 |
if ( $this->can_track_open() ) {
|
700 |
+
$tracking_pixel_variable_name = $this->mailer->get_variable_prefix() . $this->mailer->get_variable_string( 'tracking_pixel_url' ) . $this->mailer->get_variable_suffix();
|
701 |
+
$tracking_image = '<img src="' . $tracking_pixel_variable_name . '" width="1" height="1" alt=""/>';
|
702 |
$content .= $tracking_image;
|
703 |
}
|
704 |
|
705 |
+
if ( $this->unsubscribe_headers_enabled() ) {
|
706 |
+
$this->mailer->set_list_unsubscribe_header();
|
707 |
+
}
|
708 |
+
|
709 |
+
$email_data = array(
|
710 |
+
'sender_email' => $sender_email,
|
711 |
+
'sender_name' => $sender_name,
|
712 |
+
'reply_to_email' => $reply_to_email,
|
713 |
+
'subject' => $subject,
|
714 |
+
'content' => $content
|
715 |
+
);
|
716 |
+
$this->mailer->set_email_data( $email_data );
|
717 |
}
|
718 |
}
|
719 |
|
739 |
'guid' => ig_es_get_data( $merge_tags, 'hash', '' ),
|
740 |
);
|
741 |
|
742 |
+
if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
|
743 |
|
744 |
if ( ! $this->mailer->is_batch_limit_reached() ) {
|
745 |
do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
|
804 |
}
|
805 |
|
806 |
if ( $this->limits_exceeded() ) {
|
807 |
+
|
808 |
+
if ( $this->mailer->support_batch_sending && ! empty( $this->mailer->batch_data ) ) {
|
809 |
+
if ( 'multiple' === $this->mailer->batch_sending_mode ) {
|
810 |
+
if ( ! empty( $sender_data['attachments'] )) {
|
811 |
+
$this->mailer->set_attachments( $sender_data['attachments'] );
|
812 |
+
}
|
813 |
+
}
|
814 |
+
|
815 |
+
$send_response = $this->mailer->send_batch();
|
816 |
+
|
817 |
+
if ( ! is_wp_error( $send_response ) ) {
|
818 |
+
foreach ( $this->mailer->batch_data as $email_data ) {
|
819 |
+
$contact_id = $email_data['contact_id'];
|
820 |
+
do_action( 'ig_es_message_sent', $contact_id, $campaign_id, $message_id );
|
821 |
+
}
|
822 |
+
}
|
823 |
+
|
824 |
+
$this->email_limit -= $this->mailer->current_batch_size;
|
825 |
+
$this->mailer->clear_batch();
|
826 |
+
|
827 |
+
// Error Sending Email?
|
828 |
+
if ( is_wp_error( $send_response ) ) {
|
829 |
+
$response['status'] = 'ERROR';
|
830 |
+
$response['message'] = $send_response->get_error_messages();
|
831 |
+
// TODO: Log somewhere
|
832 |
+
}
|
833 |
+
}
|
834 |
break;
|
835 |
}
|
836 |
}
|
837 |
|
838 |
+
if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
|
839 |
+
$this->mailer->clear_email_data();
|
840 |
+
}
|
841 |
+
|
842 |
return $response;
|
843 |
|
844 |
}
|
909 |
'Content-Type: text/html; charset="' . $message->charset . '"'
|
910 |
);
|
911 |
|
912 |
+
$list_unsub_header = $this->get_list_unsubscribe_header( $email );
|
913 |
+
|
914 |
+
if ( ! empty( $list_unsub_header ) ) {
|
915 |
+
$headers[] = 'List-Unsubscribe: ' . $list_unsub_header;
|
916 |
+
$headers[] = 'List-Unsubscribe-Post: List-Unsubscribe=One-Click';
|
917 |
+
}
|
918 |
+
|
919 |
$message->headers = $headers;
|
920 |
|
921 |
// $email = ig_es_get_data( $merge_tags, 'email', '' );
|
1348 |
}
|
1349 |
|
1350 |
if ( ! empty( $hash )) {
|
1351 |
+
$new_link = $this->mailer->get_variable_prefix() . $variable_string . '_' . $link_index . $this->mailer->get_variable_suffix();
|
1352 |
|
1353 |
$old_link = ' href="' . $link . '"';
|
1354 |
$new_link = ' href="' . $new_link . '"';
|
1355 |
$pos = strpos( $content, $old_link );
|
1356 |
+
if ( false !== $pos ) {
|
1357 |
$content = preg_replace( '/' . preg_quote( $old_link, '/' ) . '/', $new_link, $content, 1 );
|
1358 |
$this->mailer->links[$link][] = $index;
|
1359 |
}
|
1364 |
return $content;
|
1365 |
}
|
1366 |
|
1367 |
+
/**
|
1368 |
+
* Get mailer specific link variables
|
1369 |
+
*
|
1370 |
+
* @param $contact_id
|
1371 |
+
* @param $campaign_id
|
1372 |
+
* @param $message_id
|
1373 |
+
*
|
1374 |
+
* @return array $link_variables
|
1375 |
+
*
|
1376 |
+
* @since 4.7.0
|
1377 |
+
*/
|
1378 |
+
public function get_link_variables( $links, $contact_id, $campaign_id, $message_id ) {
|
1379 |
+
|
1380 |
+
$link_variables = array();
|
1381 |
+
if ( ! empty( $links ) ) {
|
1382 |
+
|
1383 |
+
$link_counter = 0; // Counter for total links in email
|
1384 |
+
foreach ( $links as $link => $link_indexes ) {
|
1385 |
+
foreach ( $link_indexes as $index ) {
|
1386 |
+
$result = ES()->links_db->get_link_by_campaign_id( $link, $campaign_id, $message_id, $index );
|
1387 |
+
|
1388 |
+
if ( is_array( $result ) && count( $result ) > 0 ) {
|
1389 |
+
$hash = $result[0]['hash'];
|
1390 |
+
|
1391 |
+
$data = array(
|
1392 |
+
'action' => 'click',
|
1393 |
+
'link_hash' => $hash,
|
1394 |
+
'contact_id' => $contact_id,
|
1395 |
+
);
|
1396 |
+
|
1397 |
+
$new_link = ES()->mailer->prepare_link( $data );
|
1398 |
+
$link_variables['link_' . $link_counter ] = $new_link;
|
1399 |
+
}
|
1400 |
+
$link_counter++;
|
1401 |
+
}
|
1402 |
+
|
1403 |
+
}
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
return $link_variables;
|
1407 |
+
}
|
1408 |
+
|
1409 |
+
/**
|
1410 |
+
* Get tracking url
|
1411 |
+
*
|
1412 |
+
* @param $link_data
|
1413 |
+
*
|
1414 |
+
* @return string $tracking_pixel_url
|
1415 |
+
*
|
1416 |
+
* @since 4.7.0
|
1417 |
+
*/
|
1418 |
+
public function get_tracking_pixel_url( $link_data = array() ) {
|
1419 |
+
|
1420 |
+
$tracking_pixel_url = '';
|
1421 |
+
|
1422 |
+
if ( ! empty( $link_data ) && $this->can_track_open() ) {
|
1423 |
+
|
1424 |
+
$link_data['action'] = 'open';
|
1425 |
+
|
1426 |
+
$tracking_pixel_url = $this->prepare_link( $link_data );
|
1427 |
+
}
|
1428 |
+
|
1429 |
+
return $tracking_pixel_url;
|
1430 |
+
}
|
1431 |
+
|
1432 |
/**
|
1433 |
* Get Sender Name
|
1434 |
*
|
1725 |
return $message;
|
1726 |
|
1727 |
}
|
1728 |
+
|
1729 |
+
/**
|
1730 |
+
* Get list unsubscribe header string
|
1731 |
+
*
|
1732 |
+
* @return string $list_unsub_header
|
1733 |
+
*
|
1734 |
+
* @since 4.7.2
|
1735 |
+
*/
|
1736 |
+
public function get_list_unsubscribe_header( $email ) {
|
1737 |
+
|
1738 |
+
$list_unsub_header = '';
|
1739 |
+
|
1740 |
+
// Check if it is an campaign email and headers are enabled on the site.
|
1741 |
+
if ( $this->unsubscribe_headers_enabled() ) {
|
1742 |
+
$unsubscribe_link = $this->get_unsubscribe_link( $this->link_data );
|
1743 |
+
|
1744 |
+
$list_unsub_header = sprintf(
|
1745 |
+
/* translators: 1. Unsubscribe link 2. Blog admin email 3. Subscriber email 4. Blog name */
|
1746 |
+
__( '<%1$s>,<mailto:%2$s?subject=Unsubscribe %3$s from %4$s>', 'email-subscribers' ),
|
1747 |
+
$unsubscribe_link,
|
1748 |
+
get_bloginfo( 'admin_email' ),
|
1749 |
+
$email,
|
1750 |
+
get_bloginfo( 'name' )
|
1751 |
+
);
|
1752 |
+
}
|
1753 |
+
|
1754 |
+
return $list_unsub_header;
|
1755 |
+
}
|
1756 |
+
|
1757 |
+
/**
|
1758 |
+
* Check if List-Unsubcribe headers are enabled
|
1759 |
+
*
|
1760 |
+
* @return boolean $enabled
|
1761 |
+
*
|
1762 |
+
* @since 4.7.2
|
1763 |
+
*/
|
1764 |
+
public function unsubscribe_headers_enabled() {
|
1765 |
+
$enabled = false;
|
1766 |
+
if ( ! empty( $this->link_data['campaign_id'] ) && apply_filters( 'ig_es_enable_list_unsubscribe_header', true ) ) {
|
1767 |
+
$enabled = true;
|
1768 |
+
}
|
1769 |
+
return $enabled;
|
1770 |
+
}
|
1771 |
}
|
1772 |
}
|
lite/includes/classes/class-es-newsletters.php
CHANGED
@@ -271,7 +271,7 @@ class ES_Newsletters {
|
|
271 |
</ul>
|
272 |
</div>
|
273 |
</div>
|
274 |
-
<div class="flex md:mt-0
|
275 |
|
276 |
<div id="broadcast_button" class="inline-block text-left ">
|
277 |
<button type="button"
|
@@ -285,7 +285,7 @@ class ES_Newsletters {
|
|
285 |
</button>
|
286 |
</div>
|
287 |
|
288 |
-
<div id="broadcast_button1" class="flex hidden mt-4 md:mt-0
|
289 |
<span>
|
290 |
<div class="relative inline-block text-left">
|
291 |
<span>
|
@@ -330,6 +330,14 @@ class ES_Newsletters {
|
|
330 |
</span>
|
331 |
</div>
|
332 |
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
</div>
|
334 |
</div>
|
335 |
</header>
|
@@ -337,12 +345,7 @@ class ES_Newsletters {
|
|
337 |
<div class="mx-auto max-w-7xl">
|
338 |
<hr class="wp-header-end">
|
339 |
</div>
|
340 |
-
<div class="
|
341 |
-
<a class="hover:underline text-base font-medium" href="https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/" target="_blank">
|
342 |
-
<?php esc_html_e( 'How to create Broadcast?', 'email-subscribers' ); ?> →
|
343 |
-
</a>
|
344 |
-
</div>
|
345 |
-
<div class="mx-auto mt-3 es_broadcast_first max-w-7xl">
|
346 |
<div>
|
347 |
<div class=" bg-white rounded-lg shadow-md md:flex">
|
348 |
<div class="broadcast_main_content py-4 pl-2">
|
271 |
</ul>
|
272 |
</div>
|
273 |
</div>
|
274 |
+
<div class="flex md:mt-0 xl:ml-4">
|
275 |
|
276 |
<div id="broadcast_button" class="inline-block text-left ">
|
277 |
<button type="button"
|
285 |
</button>
|
286 |
</div>
|
287 |
|
288 |
+
<div id="broadcast_button1" class="flex hidden mt-4 md:mt-0">
|
289 |
<span>
|
290 |
<div class="relative inline-block text-left">
|
291 |
<span>
|
330 |
</span>
|
331 |
</div>
|
332 |
</span>
|
333 |
+
<div class="ml-1 xl:ml-2 mt-2">
|
334 |
+
<a class="px-1.5 py-2 es-documentation" href="https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/?utm_source=in_app&utm_medium=broadcast&utm_campaign=es_doc" target="_blank">
|
335 |
+
<svg class="w-6 h-6 -mt-1 inline text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
336 |
+
<title><?php esc_html_e('Documentation ', 'email-subscribers'); ?></title>
|
337 |
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
|
338 |
+
</svg>
|
339 |
+
</a>
|
340 |
+
</div>
|
341 |
</div>
|
342 |
</div>
|
343 |
</header>
|
345 |
<div class="mx-auto max-w-7xl">
|
346 |
<hr class="wp-header-end">
|
347 |
</div>
|
348 |
+
<div class="mx-auto mt-6 es_broadcast_first max-w-7xl">
|
|
|
|
|
|
|
|
|
|
|
349 |
<div>
|
350 |
<div class=" bg-white rounded-lg shadow-md md:flex">
|
351 |
<div class="broadcast_main_content py-4 pl-2">
|
lite/includes/classes/class-es-queue.php
CHANGED
@@ -633,7 +633,7 @@ if ( ! class_exists( 'ES_Queue' ) ) {
|
|
633 |
|
634 |
// Check if email sending limit or time limit or memory limit has been reached.
|
635 |
if ( $email_sending_limit <= 0 || IG_ES_Background_Process_Helper::time_exceeded( $batch_start_time, 0.8 ) || IG_ES_Background_Process_Helper::memory_exceeded() ) {
|
636 |
-
break 2;
|
637 |
}
|
638 |
}
|
639 |
}
|
633 |
|
634 |
// Check if email sending limit or time limit or memory limit has been reached.
|
635 |
if ( $email_sending_limit <= 0 || IG_ES_Background_Process_Helper::time_exceeded( $batch_start_time, 0.8 ) || IG_ES_Background_Process_Helper::memory_exceeded() ) {
|
636 |
+
break 2; // Break inner and outer loop
|
637 |
}
|
638 |
}
|
639 |
}
|
lite/includes/classes/class-es-reports-table.php
CHANGED
@@ -35,7 +35,7 @@ class ES_Reports_Table extends ES_List_Table {
|
|
35 |
|
36 |
$campaign_types = array( 'sequence', 'sequence_message' );
|
37 |
//Only if it is sequence then control will transfer to Sequence Reports class.
|
38 |
-
if ( ! empty ( $campaign_type ) && in_array( $campaign_type, $campaign_types ) ) {
|
39 |
if ( ES()->is_pro() ) {
|
40 |
$reports = ES_Pro_Sequence_Reports::get_instance();
|
41 |
$reports->es_sequence_reports_callback();
|
35 |
|
36 |
$campaign_types = array( 'sequence', 'sequence_message' );
|
37 |
//Only if it is sequence then control will transfer to Sequence Reports class.
|
38 |
+
if ( ! empty ( $campaign_type ) && in_array( $campaign_type, $campaign_types, true ) ) {
|
39 |
if ( ES()->is_pro() ) {
|
40 |
$reports = ES_Pro_Sequence_Reports::get_instance();
|
41 |
$reports->es_sequence_reports_callback();
|
lite/includes/classes/class-ig-es-subscriber-query.php
CHANGED
@@ -226,14 +226,14 @@ class IG_ES_Subscribers_Query {
|
|
226 |
if ( '_lists__in' === $field ) {
|
227 |
|
228 |
if ( $value ) {
|
229 |
-
$sub_cond[] = "
|
230 |
}
|
231 |
} elseif ( '_lists__not_in' === $field ) {
|
232 |
|
233 |
if ( $value ) {
|
234 |
-
$sub_cond[] = "
|
235 |
} else {
|
236 |
-
$sub_cond[] = "
|
237 |
}
|
238 |
} elseif ( 0 === strpos( $field, '_sent' ) ) {
|
239 |
|
226 |
if ( '_lists__in' === $field ) {
|
227 |
|
228 |
if ( $value ) {
|
229 |
+
$sub_cond[] = "lists_subscribers.contact_id IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
|
230 |
}
|
231 |
} elseif ( '_lists__not_in' === $field ) {
|
232 |
|
233 |
if ( $value ) {
|
234 |
+
$sub_cond[] = "lists_subscribers.contact_id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
|
235 |
} else {
|
236 |
+
$sub_cond[] = "lists_subscribers.contact_id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id <> 0 )";
|
237 |
}
|
238 |
} elseif ( 0 === strpos( $field, '_sent' ) ) {
|
239 |
|
lite/includes/db/class-es-db-actions.php
CHANGED
@@ -379,7 +379,7 @@ class ES_DB_Actions extends ES_DB {
|
|
379 |
* @since 4.5.2
|
380 |
*/
|
381 |
public function get_count_based_on_id_type( $campaign_id, $message_id, $type, $distinct = true ) {
|
382 |
-
global $
|
383 |
|
384 |
$args = array();
|
385 |
|
@@ -389,19 +389,26 @@ class ES_DB_Actions extends ES_DB {
|
|
389 |
|
390 |
$count = 0;
|
391 |
if ( $distinct ) {
|
392 |
-
$
|
393 |
-
$
|
394 |
-
|
395 |
-
$args
|
396 |
-
)
|
397 |
);
|
398 |
} else {
|
399 |
-
$
|
400 |
-
$
|
401 |
-
|
402 |
-
|
403 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
);
|
|
|
|
|
|
|
405 |
}
|
406 |
|
407 |
return $count;
|
379 |
* @since 4.5.2
|
380 |
*/
|
381 |
public function get_count_based_on_id_type( $campaign_id, $message_id, $type, $distinct = true ) {
|
382 |
+
global $wpbd;
|
383 |
|
384 |
$args = array();
|
385 |
|
389 |
|
390 |
$count = 0;
|
391 |
if ( $distinct ) {
|
392 |
+
$query = $wpbd->prepare(
|
393 |
+
"SELECT COUNT(DISTINCT(`contact_id`)) as count FROM {$wpbd->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
|
394 |
+
$args
|
|
|
|
|
395 |
);
|
396 |
} else {
|
397 |
+
$query = $wpbd->prepare(
|
398 |
+
"SELECT COUNT(`contact_id`) as count FROM {$wpbd->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
|
399 |
+
$args
|
400 |
+
);
|
401 |
+
}
|
402 |
+
|
403 |
+
$cache_key = ES_Cache::generate_key( $query );
|
404 |
+
$exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
|
405 |
+
if ( ! $exists_in_cache ) {
|
406 |
+
$count = $wpbd->get_var(
|
407 |
+
$query
|
408 |
);
|
409 |
+
ES_Cache::set( $cache_key, $count, 'query' );
|
410 |
+
} else {
|
411 |
+
$count = ES_Cache::get( $cache_key, 'query' );
|
412 |
}
|
413 |
|
414 |
return $count;
|
lite/includes/db/class-es-db-contacts.php
CHANGED
@@ -446,6 +446,9 @@ class ES_DB_Contacts extends ES_DB {
|
|
446 |
public function is_contact_exist_in_list( $email, $list_id ) {
|
447 |
global $wpbd;
|
448 |
|
|
|
|
|
|
|
449 |
$contact_id = $this->get_column_by( 'id', 'email', $email );
|
450 |
|
451 |
$data = array();
|
@@ -536,21 +539,30 @@ class ES_DB_Contacts extends ES_DB {
|
|
536 |
* @since 4.0.0
|
537 |
* @since 4.3.4 Used prepare_for_in_query instead of array_to_str
|
538 |
*/
|
539 |
-
public function
|
540 |
global $wpbd;
|
541 |
|
542 |
if ( count( $emails ) > 0 ) {
|
543 |
$ids_count = count( $emails );
|
544 |
$ids_placeholders = array_fill( 0, $ids_count, '%s' );
|
545 |
-
$
|
546 |
-
"SELECT id FROM {$wpbd->prefix}ig_contacts WHERE email IN( " . implode( ',', $ids_placeholders ) . ' )',
|
547 |
$emails
|
548 |
-
)
|
|
|
|
|
549 |
} else {
|
550 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
551 |
}
|
552 |
|
553 |
-
return $
|
554 |
}
|
555 |
|
556 |
/**
|
446 |
public function is_contact_exist_in_list( $email, $list_id ) {
|
447 |
global $wpbd;
|
448 |
|
449 |
+
// Flush cache to ensure we have latest results.
|
450 |
+
ES_Cache::flush();
|
451 |
+
|
452 |
$contact_id = $this->get_column_by( 'id', 'email', $email );
|
453 |
|
454 |
$data = array();
|
539 |
* @since 4.0.0
|
540 |
* @since 4.3.4 Used prepare_for_in_query instead of array_to_str
|
541 |
*/
|
542 |
+
public function get_contact_ids_created_at_date_by_emails( $emails = array() ) {
|
543 |
global $wpbd;
|
544 |
|
545 |
if ( count( $emails ) > 0 ) {
|
546 |
$ids_count = count( $emails );
|
547 |
$ids_placeholders = array_fill( 0, $ids_count, '%s' );
|
548 |
+
$results = $wpbd->get_results( $wpbd->prepare(
|
549 |
+
"SELECT id, created_at FROM {$wpbd->prefix}ig_contacts WHERE email IN( " . implode( ',', $ids_placeholders ) . ' )',
|
550 |
$emails
|
551 |
+
),
|
552 |
+
ARRAY_A
|
553 |
+
);
|
554 |
} else {
|
555 |
+
$results = $wpbd->get_results( "SELECT id , created_at FROM {$wpbd->prefix}ig_contacts" );
|
556 |
+
}
|
557 |
+
|
558 |
+
$map = array();
|
559 |
+
if ( count( $results ) > 0 ) {
|
560 |
+
foreach ( $results as $result ) {
|
561 |
+
$map[ $result['id'] ] = $result['created_at'];
|
562 |
+
}
|
563 |
}
|
564 |
|
565 |
+
return $map;
|
566 |
}
|
567 |
|
568 |
/**
|
lite/includes/db/class-es-db-links.php
CHANGED
@@ -142,6 +142,8 @@ if ( ! class_exists( 'ES_DB_Links' ) ) {
|
|
142 |
public function get_link_by_campaign_id( $link, $campaign_id = 0, $message_id = 0, $index = 0 ) {
|
143 |
global $wpdb;
|
144 |
|
|
|
|
|
145 |
$where = $wpdb->prepare( ' link = %s AND campaign_id = %d AND message_id = %d AND i = %d', $link, $campaign_id, $message_id, $index );
|
146 |
|
147 |
return $this->get_by_conditions( $where );
|
142 |
public function get_link_by_campaign_id( $link, $campaign_id = 0, $message_id = 0, $index = 0 ) {
|
143 |
global $wpdb;
|
144 |
|
145 |
+
ES_Cache::flush();
|
146 |
+
|
147 |
$where = $wpdb->prepare( ' link = %s AND campaign_id = %d AND message_id = %d AND i = %d', $link, $campaign_id, $message_id, $index );
|
148 |
|
149 |
return $this->get_by_conditions( $where );
|
lite/includes/db/class-es-db-lists-contacts.php
CHANGED
@@ -478,15 +478,14 @@ class ES_DB_Lists_Contacts extends ES_DB {
|
|
478 |
}
|
479 |
|
480 |
$key = 0;
|
481 |
-
foreach ( $contacts as $contact_id ) {
|
482 |
-
|
483 |
foreach ( $list_ids as $list_id ) {
|
484 |
|
485 |
$values[ $key ]['contact_id'] = $contact_id;
|
486 |
$values[ $key ]['list_id'] = $list_id;
|
487 |
$values[ $key ]['status'] = $status;
|
488 |
$values[ $key ]['optin_type'] = $optin_type;
|
489 |
-
$values[ $key ]['subscribed_at'] = $
|
490 |
$values[ $key ]['subscribed_ip'] = $subscribed_ip;
|
491 |
$values[ $key ]['unsubscribed_at'] = $unsubscribed_at;
|
492 |
$values[ $key ]['unsubscribed_ip'] = $unsubscribed_ip;
|
478 |
}
|
479 |
|
480 |
$key = 0;
|
481 |
+
foreach ( $contacts as $contact_id => $created_at ) {
|
|
|
482 |
foreach ( $list_ids as $list_id ) {
|
483 |
|
484 |
$values[ $key ]['contact_id'] = $contact_id;
|
485 |
$values[ $key ]['list_id'] = $list_id;
|
486 |
$values[ $key ]['status'] = $status;
|
487 |
$values[ $key ]['optin_type'] = $optin_type;
|
488 |
+
$values[ $key ]['subscribed_at'] = $created_at;
|
489 |
$values[ $key ]['subscribed_ip'] = $subscribed_ip;
|
490 |
$values[ $key ]['unsubscribed_at'] = $unsubscribed_at;
|
491 |
$values[ $key ]['unsubscribed_ip'] = $unsubscribed_ip;
|
lite/includes/db/class-es-db-lists.php
CHANGED
@@ -302,15 +302,15 @@ class ES_DB_Lists extends ES_DB {
|
|
302 |
if ( empty( $list ) || ! is_scalar( $list ) ) {
|
303 |
return 0;
|
304 |
}
|
305 |
-
|
306 |
$lower_list = strtolower( $list );
|
307 |
-
|
308 |
$is_list_exists = $this->is_list_exists( $lower_list );
|
309 |
-
|
310 |
if ( $is_list_exists ) {
|
311 |
return 0;
|
312 |
}
|
313 |
-
|
314 |
$data = array(
|
315 |
'slug' => ! empty( $slug ) ? $slug : sanitize_title( $list ),
|
316 |
'name' => $list,
|
302 |
if ( empty( $list ) || ! is_scalar( $list ) ) {
|
303 |
return 0;
|
304 |
}
|
305 |
+
|
306 |
$lower_list = strtolower( $list );
|
307 |
+
|
308 |
$is_list_exists = $this->is_list_exists( $lower_list );
|
309 |
+
|
310 |
if ( $is_list_exists ) {
|
311 |
return 0;
|
312 |
}
|
313 |
+
|
314 |
$data = array(
|
315 |
'slug' => ! empty( $slug ) ? $slug : sanitize_title( $list ),
|
316 |
'name' => $list,
|
lite/includes/db/class-es-db-mailing-queue.php
CHANGED
@@ -177,17 +177,26 @@ class ES_DB_Mailing_Queue {
|
|
177 |
}
|
178 |
|
179 |
public static function get_notification_by_hash( $notification_hash ) {
|
180 |
-
global $
|
181 |
|
182 |
$notification = array();
|
183 |
-
$
|
184 |
-
$
|
185 |
-
|
186 |
-
$notification_hash
|
187 |
-
),
|
188 |
-
ARRAY_A
|
189 |
);
|
190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
if ( count( $results ) > 0 ) {
|
192 |
$notification = array_shift( $results );
|
193 |
}
|
@@ -196,13 +205,22 @@ class ES_DB_Mailing_Queue {
|
|
196 |
}
|
197 |
|
198 |
public static function get_notification_by_campaign_id( $campaign_id ) {
|
199 |
-
global $
|
200 |
|
201 |
$notification = array();
|
202 |
-
$
|
203 |
-
|
204 |
-
|
205 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
if ( count( $results ) > 0 ) {
|
208 |
$notification = array_shift( $results );
|
177 |
}
|
178 |
|
179 |
public static function get_notification_by_hash( $notification_hash ) {
|
180 |
+
global $wpbd;
|
181 |
|
182 |
$notification = array();
|
183 |
+
$query = $wpbd->prepare(
|
184 |
+
"SELECT * FROM {$wpbd->prefix}ig_mailing_queue WHERE hash = %s",
|
185 |
+
$notification_hash
|
|
|
|
|
|
|
186 |
);
|
187 |
|
188 |
+
$cache_key = ES_Cache::generate_key( $query );
|
189 |
+
$exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
|
190 |
+
if ( ! $exists_in_cache ) {
|
191 |
+
$results = $wpbd->get_results(
|
192 |
+
$query,
|
193 |
+
ARRAY_A
|
194 |
+
);
|
195 |
+
ES_Cache::set( $cache_key, $results, 'query' );
|
196 |
+
} else {
|
197 |
+
$results = ES_Cache::get( $cache_key, 'query' );
|
198 |
+
}
|
199 |
+
|
200 |
if ( count( $results ) > 0 ) {
|
201 |
$notification = array_shift( $results );
|
202 |
}
|
205 |
}
|
206 |
|
207 |
public static function get_notification_by_campaign_id( $campaign_id ) {
|
208 |
+
global $wpbd;
|
209 |
|
210 |
$notification = array();
|
211 |
+
$query = $wpbd->prepare( "SELECT * FROM {$wpbd->prefix}ig_mailing_queue WHERE campaign_id = %d", $campaign_id );
|
212 |
+
|
213 |
+
$cache_key = ES_Cache::generate_key( $query );
|
214 |
+
$exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
|
215 |
+
if ( ! $exists_in_cache ) {
|
216 |
+
$results = $wpbd->get_results(
|
217 |
+
$query,
|
218 |
+
ARRAY_A
|
219 |
+
);
|
220 |
+
ES_Cache::set( $cache_key, $results, 'query' );
|
221 |
+
} else {
|
222 |
+
$results = ES_Cache::get( $cache_key, 'query' );
|
223 |
+
}
|
224 |
|
225 |
if ( count( $results ) > 0 ) {
|
226 |
$notification = array_shift( $results );
|
lite/includes/db/class-es-db-sending-queue.php
CHANGED
@@ -292,7 +292,7 @@ class ES_DB_Sending_Queue {
|
|
292 |
$queue_opened_at = isset( $column_defaults['opened_at'] ) ? $column_defaults['opened_at'] : null;
|
293 |
|
294 |
$campaign = ES()->campaigns_db->get( $campaign_id );
|
295 |
-
$args
|
296 |
'select' => array( 'subscribers.id' ),
|
297 |
'lists' => $list_ids,
|
298 |
'return_sql' => true, // This flag will return the required sql query
|
@@ -608,7 +608,7 @@ class ES_DB_Sending_Queue {
|
|
608 |
|
609 |
$result = 0;
|
610 |
|
611 |
-
if ( ''
|
612 |
$result = $wpdb->get_var(
|
613 |
$wpdb->prepare(
|
614 |
"SELECT COUNT(*) AS count FROM {$wpdb->prefix}ig_sending_queue WHERE opened = 1 AND mailing_queue_hash = %s",
|
@@ -616,18 +616,6 @@ class ES_DB_Sending_Queue {
|
|
616 |
)
|
617 |
);
|
618 |
|
619 |
-
if ( 0 == $result ) {
|
620 |
-
$table_name = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->prefix . 'es_deliverreport' ) );
|
621 |
-
if ( $table_name === $wpdb->prefix . 'es_deliverreport' ) {
|
622 |
-
$result = $wpdb->get_var(
|
623 |
-
$wpdb->prepare(
|
624 |
-
"SELECT COUNT(*) AS count FROM {$wpdb->prefix}es_deliverreport WHERE es_deliver_status = 'Viewed' AND es_deliver_sentguid = %s",
|
625 |
-
array( $hash )
|
626 |
-
)
|
627 |
-
);
|
628 |
-
}
|
629 |
-
}
|
630 |
-
|
631 |
}
|
632 |
|
633 |
return $result;
|
292 |
$queue_opened_at = isset( $column_defaults['opened_at'] ) ? $column_defaults['opened_at'] : null;
|
293 |
|
294 |
$campaign = ES()->campaigns_db->get( $campaign_id );
|
295 |
+
$args = array(
|
296 |
'select' => array( 'subscribers.id' ),
|
297 |
'lists' => $list_ids,
|
298 |
'return_sql' => true, // This flag will return the required sql query
|
608 |
|
609 |
$result = 0;
|
610 |
|
611 |
+
if ( '' !== $hash ) {
|
612 |
$result = $wpdb->get_var(
|
613 |
$wpdb->prepare(
|
614 |
"SELECT COUNT(*) AS count FROM {$wpdb->prefix}ig_sending_queue WHERE opened = 1 AND mailing_queue_hash = %s",
|
616 |
)
|
617 |
);
|
618 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
619 |
}
|
620 |
|
621 |
return $result;
|
lite/includes/db/class-es-db.php
CHANGED
@@ -10,10 +10,10 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
* @since 4.0
|
11 |
*/
|
12 |
abstract class ES_DB {
|
13 |
-
|
14 |
/**
|
15 |
* Table name
|
16 |
-
*
|
17 |
* @since 4.0.0
|
18 |
* @var $table_name
|
19 |
*
|
@@ -22,7 +22,7 @@ abstract class ES_DB {
|
|
22 |
|
23 |
/**
|
24 |
* Table DB version
|
25 |
-
*
|
26 |
* @since 4.0.0
|
27 |
* @var $version
|
28 |
*
|
@@ -31,7 +31,7 @@ abstract class ES_DB {
|
|
31 |
|
32 |
/**
|
33 |
* Table primary key column name
|
34 |
-
*
|
35 |
* @since 4.0.0
|
36 |
* @var $primary_key
|
37 |
*
|
@@ -59,7 +59,7 @@ abstract class ES_DB {
|
|
59 |
|
60 |
/**
|
61 |
* Get columns default values
|
62 |
-
*
|
63 |
* @return array
|
64 |
*
|
65 |
* @since 4.0.0
|
@@ -72,15 +72,33 @@ abstract class ES_DB {
|
|
72 |
* Retrieve a row by the primary key
|
73 |
*
|
74 |
* @param $row_id
|
|
|
75 |
*
|
76 |
-
* @return
|
77 |
*
|
78 |
* @since 4.0.0
|
79 |
*/
|
80 |
public function get( $row_id, $output = ARRAY_A ) {
|
|
|
81 |
global $wpbd;
|
82 |
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
|
86 |
/**
|
@@ -88,8 +106,9 @@ abstract class ES_DB {
|
|
88 |
*
|
89 |
* @param $column
|
90 |
* @param $row_id
|
|
|
91 |
*
|
92 |
-
* @return
|
93 |
*
|
94 |
* @since 4.0.0
|
95 |
*/
|
@@ -97,7 +116,22 @@ abstract class ES_DB {
|
|
97 |
global $wpbd;
|
98 |
$column = esc_sql( $column );
|
99 |
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
|
103 |
/**
|
@@ -116,7 +150,20 @@ abstract class ES_DB {
|
|
116 |
$query .= " WHERE $where";
|
117 |
}
|
118 |
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
121 |
|
122 |
/**
|
@@ -146,10 +193,28 @@ abstract class ES_DB {
|
|
146 |
$column = esc_sql( $column );
|
147 |
|
148 |
if ( $row_id ) {
|
149 |
-
|
150 |
} else {
|
151 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
}
|
|
|
|
|
153 |
}
|
154 |
|
155 |
/**
|
@@ -172,10 +237,28 @@ abstract class ES_DB {
|
|
172 |
$column = esc_sql( $column );
|
173 |
|
174 |
if ( $only_one ) {
|
175 |
-
|
176 |
} else {
|
177 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
}
|
|
|
|
|
179 |
}
|
180 |
|
181 |
/**
|
@@ -193,11 +276,24 @@ abstract class ES_DB {
|
|
193 |
|
194 |
$column = esc_sql( $column );
|
195 |
|
|
|
196 |
if ( ! empty( $where ) ) {
|
197 |
-
|
198 |
-
}
|
199 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
|
|
|
|
201 |
}
|
202 |
|
203 |
/**
|
@@ -221,11 +317,25 @@ abstract class ES_DB {
|
|
221 |
|
222 |
$columns = implode( ', ', $columns );
|
223 |
|
|
|
224 |
if ( ! empty( $where ) ) {
|
225 |
-
|
226 |
-
} else {
|
227 |
-
return $wpbd->get_results( "SELECT $columns FROM $this->table_name", $output );
|
228 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
}
|
230 |
|
231 |
/**
|
@@ -434,8 +544,20 @@ abstract class ES_DB {
|
|
434 |
if ( ! empty( $where ) ) {
|
435 |
$query .= " WHERE $where";
|
436 |
}
|
437 |
-
|
438 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
439 |
}
|
440 |
|
441 |
/**
|
@@ -504,9 +626,9 @@ abstract class ES_DB {
|
|
504 |
$fields_str = '`' . implode( '`, `', $fields ) . '`';
|
505 |
}
|
506 |
|
507 |
-
$query
|
508 |
$query .= implode( ', ', $place_holders );
|
509 |
-
$sql
|
510 |
|
511 |
if ( ! $wpbd->query( $sql ) ) {
|
512 |
$error_flag = true;
|
@@ -523,7 +645,7 @@ abstract class ES_DB {
|
|
523 |
|
524 |
/**
|
525 |
* Bulk insert data into given table
|
526 |
-
*
|
527 |
* @param $table_name
|
528 |
* @param $fields
|
529 |
* @param $place_holders
|
@@ -537,9 +659,9 @@ abstract class ES_DB {
|
|
537 |
|
538 |
$fields_str = '`' . implode( '`, `', $fields ) . '`';
|
539 |
|
540 |
-
$query
|
541 |
$query .= implode( ', ', $place_holders );
|
542 |
-
$sql
|
543 |
|
544 |
if ( $wpbd->query( $sql ) ) {
|
545 |
return true;
|
@@ -638,4 +760,58 @@ abstract class ES_DB {
|
|
638 |
return '';
|
639 |
}
|
640 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
}
|
10 |
* @since 4.0
|
11 |
*/
|
12 |
abstract class ES_DB {
|
13 |
+
|
14 |
/**
|
15 |
* Table name
|
16 |
+
*
|
17 |
* @since 4.0.0
|
18 |
* @var $table_name
|
19 |
*
|
22 |
|
23 |
/**
|
24 |
* Table DB version
|
25 |
+
*
|
26 |
* @since 4.0.0
|
27 |
* @var $version
|
28 |
*
|
31 |
|
32 |
/**
|
33 |
* Table primary key column name
|
34 |
+
*
|
35 |
* @since 4.0.0
|
36 |
* @var $primary_key
|
37 |
*
|
59 |
|
60 |
/**
|
61 |
* Get columns default values
|
62 |
+
*
|
63 |
* @return array
|
64 |
*
|
65 |
* @since 4.0.0
|
72 |
* Retrieve a row by the primary key
|
73 |
*
|
74 |
* @param $row_id
|
75 |
+
* @param string $output
|
76 |
*
|
77 |
+
* @return bool|mixed
|
78 |
*
|
79 |
* @since 4.0.0
|
80 |
*/
|
81 |
public function get( $row_id, $output = ARRAY_A ) {
|
82 |
+
|
83 |
global $wpbd;
|
84 |
|
85 |
+
$query = $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id );
|
86 |
+
|
87 |
+
// Considering $output also while considering key generation
|
88 |
+
$cache_key = $this->generate_cache_key( $query . $output );
|
89 |
+
|
90 |
+
$found = false;
|
91 |
+
|
92 |
+
$result = $this->get_cache( $cache_key, $found );
|
93 |
+
|
94 |
+
if ( ! $found ) {
|
95 |
+
|
96 |
+
$result = $wpbd->get_row( $query, $output );
|
97 |
+
|
98 |
+
$this->set_cache( $cache_key, $result );
|
99 |
+
}
|
100 |
+
|
101 |
+
return $result;
|
102 |
}
|
103 |
|
104 |
/**
|
106 |
*
|
107 |
* @param $column
|
108 |
* @param $row_id
|
109 |
+
* @param string $output
|
110 |
*
|
111 |
+
* @return false|mixed
|
112 |
*
|
113 |
* @since 4.0.0
|
114 |
*/
|
116 |
global $wpbd;
|
117 |
$column = esc_sql( $column );
|
118 |
|
119 |
+
$query = $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id );
|
120 |
+
|
121 |
+
// Consider $output also while generating cache key
|
122 |
+
$cache_key = $this->generate_cache_key( $query . $output );
|
123 |
+
|
124 |
+
$found = false;
|
125 |
+
|
126 |
+
$result = $this->get_cache( $cache_key, $found );
|
127 |
+
|
128 |
+
if ( ! $found ) {
|
129 |
+
$result = $wpbd->get_row( $query, $output );
|
130 |
+
|
131 |
+
$this->set_cache( $cache_key, $result );
|
132 |
+
}
|
133 |
+
|
134 |
+
return $result;
|
135 |
}
|
136 |
|
137 |
/**
|
150 |
$query .= " WHERE $where";
|
151 |
}
|
152 |
|
153 |
+
// Consider $output also while generating cache key
|
154 |
+
$cache_key = $this->generate_cache_key( $query . $output );
|
155 |
+
|
156 |
+
$found = false;
|
157 |
+
|
158 |
+
$result = $this->get_cache( $cache_key, $found );
|
159 |
+
|
160 |
+
if ( ! $found ) {
|
161 |
+
$result = $wpbd->get_results( $query, $output );
|
162 |
+
|
163 |
+
$this->set_cache( $cache_key, $result );
|
164 |
+
}
|
165 |
+
|
166 |
+
return $result;
|
167 |
}
|
168 |
|
169 |
/**
|
193 |
$column = esc_sql( $column );
|
194 |
|
195 |
if ( $row_id ) {
|
196 |
+
$query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id );
|
197 |
} else {
|
198 |
+
$query = "SELECT $column FROM $this->table_name";
|
199 |
+
}
|
200 |
+
|
201 |
+
$cache_key = $this->generate_cache_key( $query );
|
202 |
+
|
203 |
+
$found = false;
|
204 |
+
|
205 |
+
$result = $this->get_cache( $cache_key, $found );
|
206 |
+
|
207 |
+
if ( ! $found ) {
|
208 |
+
if ( $row_id ) {
|
209 |
+
$result = $wpbd->get_var( $query );
|
210 |
+
} else {
|
211 |
+
$result = $wpbd->get_col( $query );
|
212 |
+
}
|
213 |
+
|
214 |
+
$this->set_cache( $cache_key, $result );
|
215 |
}
|
216 |
+
|
217 |
+
return $result;
|
218 |
}
|
219 |
|
220 |
/**
|
237 |
$column = esc_sql( $column );
|
238 |
|
239 |
if ( $only_one ) {
|
240 |
+
$query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value );
|
241 |
} else {
|
242 |
+
$query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s;", $column_value );
|
243 |
+
}
|
244 |
+
|
245 |
+
$cache_key = $this->generate_cache_key( $query );
|
246 |
+
|
247 |
+
$found = false;
|
248 |
+
|
249 |
+
$result = $this->get_cache( $cache_key, $found );
|
250 |
+
|
251 |
+
if ( ! $found ) {
|
252 |
+
if ( $only_one ) {
|
253 |
+
$result = $wpbd->get_var( $query );
|
254 |
+
} else {
|
255 |
+
$result = $wpbd->get_col( $query );
|
256 |
+
}
|
257 |
+
|
258 |
+
$this->set_cache( $cache_key, $result );
|
259 |
}
|
260 |
+
|
261 |
+
return $result;
|
262 |
}
|
263 |
|
264 |
/**
|
276 |
|
277 |
$column = esc_sql( $column );
|
278 |
|
279 |
+
$query = "SELECT $column FROM $this->table_name";
|
280 |
if ( ! empty( $where ) ) {
|
281 |
+
$query .= " WHERE $where";
|
282 |
+
}
|
283 |
+
|
284 |
+
$cache_key = $this->generate_cache_key( $query );
|
285 |
+
|
286 |
+
$found = false;
|
287 |
+
|
288 |
+
$result = $this->get_cache( $cache_key, $found );
|
289 |
+
|
290 |
+
if ( ! $found ) {
|
291 |
+
$result = $wpbd->get_col( $query );
|
292 |
+
|
293 |
+
$this->set_cache( $cache_key, $result );
|
294 |
}
|
295 |
+
|
296 |
+
return $result;
|
297 |
}
|
298 |
|
299 |
/**
|
317 |
|
318 |
$columns = implode( ', ', $columns );
|
319 |
|
320 |
+
$query = "SELECT $columns FROM $this->table_name";
|
321 |
if ( ! empty( $where ) ) {
|
322 |
+
$query .= " WHERE $where";
|
|
|
|
|
323 |
}
|
324 |
+
|
325 |
+
// Consider $output also while generating cache key
|
326 |
+
$cache_key = $this->generate_cache_key( $query . $output );
|
327 |
+
|
328 |
+
$found = false;
|
329 |
+
|
330 |
+
$result = $this->get_cache( $cache_key, $found );
|
331 |
+
|
332 |
+
if ( ! $found ) {
|
333 |
+
$result = $wpbd->get_results( $query, $output );
|
334 |
+
|
335 |
+
$this->set_cache( $cache_key, $result );
|
336 |
+
}
|
337 |
+
|
338 |
+
return $result;
|
339 |
}
|
340 |
|
341 |
/**
|
544 |
if ( ! empty( $where ) ) {
|
545 |
$query .= " WHERE $where";
|
546 |
}
|
547 |
+
|
548 |
+
$cache_key = $this->generate_cache_key( $query );
|
549 |
+
|
550 |
+
$found = false;
|
551 |
+
|
552 |
+
$result = $this->get_cache( $cache_key, $found );
|
553 |
+
|
554 |
+
if ( ! $found ) {
|
555 |
+
$result = $wpbd->get_var( $query );
|
556 |
+
|
557 |
+
$this->set_cache( $cache_key, $result );
|
558 |
+
}
|
559 |
+
|
560 |
+
return $result;
|
561 |
}
|
562 |
|
563 |
/**
|
626 |
$fields_str = '`' . implode( '`, `', $fields ) . '`';
|
627 |
}
|
628 |
|
629 |
+
$query = "INSERT INTO $this->table_name ({$fields_str}) VALUES ";
|
630 |
$query .= implode( ', ', $place_holders );
|
631 |
+
$sql = $wpbd->prepare( $query, $final_values );
|
632 |
|
633 |
if ( ! $wpbd->query( $sql ) ) {
|
634 |
$error_flag = true;
|
645 |
|
646 |
/**
|
647 |
* Bulk insert data into given table
|
648 |
+
*
|
649 |
* @param $table_name
|
650 |
* @param $fields
|
651 |
* @param $place_holders
|
659 |
|
660 |
$fields_str = '`' . implode( '`, `', $fields ) . '`';
|
661 |
|
662 |
+
$query = "INSERT INTO $table_name ({$fields_str}) VALUES ";
|
663 |
$query .= implode( ', ', $place_holders );
|
664 |
+
$sql = $wpbd->prepare( $query, $values );
|
665 |
|
666 |
if ( $wpbd->query( $sql ) ) {
|
667 |
return true;
|
760 |
return '';
|
761 |
}
|
762 |
|
763 |
+
/**
|
764 |
+
* Generate Cache key
|
765 |
+
*
|
766 |
+
* @param string $str
|
767 |
+
*
|
768 |
+
* @return bool|string
|
769 |
+
*
|
770 |
+
* @since 4.7.2
|
771 |
+
*/
|
772 |
+
public function generate_cache_key( $str = '' ) {
|
773 |
+
return ES_Cache::generate_key( $str );
|
774 |
+
}
|
775 |
+
|
776 |
+
/**
|
777 |
+
* Get data from cache
|
778 |
+
*
|
779 |
+
* @param $key
|
780 |
+
* @param null $found
|
781 |
+
*
|
782 |
+
* @return false|mixed
|
783 |
+
*
|
784 |
+
* @since 4.7.2
|
785 |
+
*/
|
786 |
+
public function get_cache( $key, &$found = null ) {
|
787 |
+
return ES_Cache::get( $key, 'query', false, $found );
|
788 |
+
}
|
789 |
+
|
790 |
+
/**
|
791 |
+
* Set data into cache
|
792 |
+
*
|
793 |
+
* @param string $key
|
794 |
+
* @param string $value
|
795 |
+
*
|
796 |
+
* @since 4.7.2
|
797 |
+
*/
|
798 |
+
public function set_cache( $key = '', $value = '' ) {
|
799 |
+
if ( ! empty( $key ) ) {
|
800 |
+
ES_Cache::set( $key, $value, 'query' );
|
801 |
+
}
|
802 |
+
}
|
803 |
+
|
804 |
+
/**
|
805 |
+
* Check if cache exists?
|
806 |
+
*
|
807 |
+
* @param string $key
|
808 |
+
*
|
809 |
+
* @return bool
|
810 |
+
*
|
811 |
+
* @since 4.7.2
|
812 |
+
*/
|
813 |
+
public function cache_exists( $key = '' ) {
|
814 |
+
return ES_Cache::is_exists( $key, 'query' );
|
815 |
+
}
|
816 |
+
|
817 |
}
|
lite/includes/es-core-functions.php
CHANGED
@@ -345,7 +345,7 @@ if ( ! function_exists( 'ig_es_get_gmt_offset' ) ) {
|
|
345 |
*/
|
346 |
function ig_es_get_gmt_offset( $in_seconds = false, $timestamp = null ) {
|
347 |
|
348 |
-
$offset = get_option( 'gmt_offset' );
|
349 |
|
350 |
// check if timestamp has DST
|
351 |
if ( ! is_null( $timestamp ) ) {
|
345 |
*/
|
346 |
function ig_es_get_gmt_offset( $in_seconds = false, $timestamp = null ) {
|
347 |
|
348 |
+
$offset = get_option( 'gmt_offset', 0 );
|
349 |
|
350 |
// check if timestamp has DST
|
351 |
if ( ! is_null( $timestamp ) ) {
|
lite/includes/mailers/class-es-base-mailer.php
CHANGED
@@ -253,6 +253,17 @@ if ( ! class_exists( 'ES_Base_Mailer' ) ) {
|
|
253 |
public function get_headers() {
|
254 |
return apply_filters( 'ig_es_mailer_get_headers', $this->headers, $this );
|
255 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
|
257 |
/**
|
258 |
* Reset mailer data
|
@@ -274,7 +285,40 @@ if ( ! class_exists( 'ES_Base_Mailer' ) ) {
|
|
274 |
* @since 4.7.0
|
275 |
*/
|
276 |
public function is_batch_limit_reached() {
|
277 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
}
|
279 |
}
|
280 |
}
|
253 |
public function get_headers() {
|
254 |
return apply_filters( 'ig_es_mailer_get_headers', $this->headers, $this );
|
255 |
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Get placeholder variable name string
|
259 |
+
*
|
260 |
+
* @return string $variable_string
|
261 |
+
*
|
262 |
+
* @since 4.7.2
|
263 |
+
*/
|
264 |
+
public function get_variable_string( $variable_name = '' ) {
|
265 |
+
return $variable_name;
|
266 |
+
}
|
267 |
|
268 |
/**
|
269 |
* Reset mailer data
|
285 |
* @since 4.7.0
|
286 |
*/
|
287 |
public function is_batch_limit_reached() {
|
288 |
+
return $this->current_batch_size >= $this->batch_limit;
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Convert ES tags to mailer tags
|
293 |
+
*
|
294 |
+
* @param string $string
|
295 |
+
*
|
296 |
+
* @return string $string
|
297 |
+
*
|
298 |
+
* @since 4.7.0
|
299 |
+
*/
|
300 |
+
public function convert_es_tags_to_mailer_tags( $string = '' ) {
|
301 |
+
return $string;
|
302 |
+
}
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Send batch email
|
306 |
+
*
|
307 |
+
* @since 4.7.2
|
308 |
+
*/
|
309 |
+
public function send_batch() {
|
310 |
+
|
311 |
+
$response = $this->send_email();
|
312 |
+
return $response;
|
313 |
+
}
|
314 |
+
|
315 |
+
/**
|
316 |
+
* Clear mailer data
|
317 |
+
*
|
318 |
+
* @since 4.7.2
|
319 |
+
*/
|
320 |
+
public function clear_email_data() {
|
321 |
+
// Clear mailer specific data
|
322 |
}
|
323 |
}
|
324 |
}
|
lite/includes/mailers/class-es-pepipost-mailer.php
CHANGED
@@ -68,12 +68,23 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
|
|
68 |
// We need to decode entities only in case of Pepipost. For other mailers it is working as expected.
|
69 |
$message->body = ES_Common::decode_entities( $message->body );
|
70 |
|
71 |
-
$
|
72 |
-
|
73 |
-
$
|
74 |
-
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
$tracking_settings = array(
|
79 |
'opentrack' => ES()->mailer->can_track_open() ? 1 : 0,
|
@@ -82,6 +93,14 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
|
|
82 |
|
83 |
$params['settings'] = $tracking_settings;
|
84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
$attachments = $message->attachments;
|
86 |
if ( ! empty( $attachments ) ) {
|
87 |
foreach ( $attachments as $attachment_name => $attachment_path ) {
|
@@ -103,16 +122,23 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
|
|
103 |
'api_key' => $this->api_key
|
104 |
);
|
105 |
|
|
|
|
|
|
|
|
|
|
|
106 |
$headers = ! empty( $message->headers ) ? array_merge( $headers, $message->headers ) : $headers;
|
107 |
$method = 'POST';
|
108 |
$qs = json_encode( $params );
|
109 |
|
|
|
110 |
$options = array(
|
111 |
'timeout' => 15,
|
112 |
'method' => $method,
|
113 |
'headers' => $headers
|
114 |
);
|
115 |
|
|
|
116 |
if ( 'POST' == $method ) {
|
117 |
$options['body'] = $qs;
|
118 |
}
|
68 |
// We need to decode entities only in case of Pepipost. For other mailers it is working as expected.
|
69 |
$message->body = ES_Common::decode_entities( $message->body );
|
70 |
|
71 |
+
$list_unsubscribe_header = ES()->mailer->get_list_unsubscribe_header( $message->to );
|
72 |
+
|
73 |
+
if ( ! empty( $list_unsubscribe_header ) ) {
|
74 |
+
$params['personalizations'][] = array(
|
75 |
+
'recipient' => $message->to,
|
76 |
+
'X-List-Unsubscribe' => $list_unsubscribe_header,
|
77 |
+
'X-List-Unsubscribe-Post' => 'List-Unsubscribe=One-Click',
|
78 |
+
);
|
79 |
+
} else {
|
80 |
+
$params['personalizations'][]['recipient'] = $message->to;
|
81 |
+
}
|
82 |
+
|
83 |
+
$params['from']['fromEmail'] = $message->from;
|
84 |
+
$params['from']['fromName'] = $message->from_name;
|
85 |
+
$params['subject'] = $message->subject;
|
86 |
+
$params['content'] = $message->body;
|
87 |
+
$params['replyToId'] = $message->reply_to_email;
|
88 |
|
89 |
$tracking_settings = array(
|
90 |
'opentrack' => ES()->mailer->can_track_open() ? 1 : 0,
|
93 |
|
94 |
$params['settings'] = $tracking_settings;
|
95 |
|
96 |
+
|
97 |
+
if ( ! empty( $list_unsubscribe_header ) ) {
|
98 |
+
$params['x-headers'] = array(
|
99 |
+
'List-Unsubscribe' => $list_unsubscribe_header,
|
100 |
+
'List-Unsubscribe-Post' => 'List-Unsubscribe=One-Click',
|
101 |
+
);
|
102 |
+
}
|
103 |
+
|
104 |
$attachments = $message->attachments;
|
105 |
if ( ! empty( $attachments ) ) {
|
106 |
foreach ( $attachments as $attachment_name => $attachment_path ) {
|
122 |
'api_key' => $this->api_key
|
123 |
);
|
124 |
|
125 |
+
if ( ! empty( $list_unsubscribe_header ) ) {
|
126 |
+
$headers['X-List-Unsubscribe'] = $list_unsubscribe_header;
|
127 |
+
$headers['X-List-Unsubscribe-Post'] = 'List-Unsubscribe=One-Click';
|
128 |
+
}
|
129 |
+
|
130 |
$headers = ! empty( $message->headers ) ? array_merge( $headers, $message->headers ) : $headers;
|
131 |
$method = 'POST';
|
132 |
$qs = json_encode( $params );
|
133 |
|
134 |
+
|
135 |
$options = array(
|
136 |
'timeout' => 15,
|
137 |
'method' => $method,
|
138 |
'headers' => $headers
|
139 |
);
|
140 |
|
141 |
+
|
142 |
if ( 'POST' == $method ) {
|
143 |
$options['body'] = $qs;
|
144 |
}
|
lite/includes/mailers/class-es-phpmail-mailer.php
CHANGED
@@ -65,6 +65,12 @@ if ( ! class_exists( 'ES_Phpmail_Mailer' ) ) {
|
|
65 |
$phpmailer->WordWrap = 50;
|
66 |
$phpmailer->isHTML( true );
|
67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
$phpmailer->Subject = $message->subject;
|
69 |
$phpmailer->Body = $message->body;
|
70 |
$phpmailer->AltBody = $message->body_text; //Text Email Body for non html email client
|
65 |
$phpmailer->WordWrap = 50;
|
66 |
$phpmailer->isHTML( true );
|
67 |
|
68 |
+
$list_unsubscribe_header = ES()->mailer->get_list_unsubscribe_header( $message->to );
|
69 |
+
if ( ! empty( $list_unsubscribe_header ) ) {
|
70 |
+
$phpmailer->addCustomHeader( 'List-Unsubscribe', $list_unsubscribe_header );
|
71 |
+
$phpmailer->addCustomHeader( 'List-Unsubscribe-Post', 'List-Unsubscribe=One-Click' );
|
72 |
+
}
|
73 |
+
|
74 |
$phpmailer->Subject = $message->subject;
|
75 |
$phpmailer->Body = $message->body;
|
76 |
$phpmailer->AltBody = $message->body_text; //Text Email Body for non html email client
|
lite/includes/workflows/class-es-workflow-data-types.php
CHANGED
@@ -38,7 +38,8 @@ class ES_Workflow_Data_Types extends ES_Workflow_Registry {
|
|
38 |
return apply_filters(
|
39 |
'ig_es_data_types_includes',
|
40 |
array(
|
41 |
-
'user'
|
|
|
42 |
)
|
43 |
);
|
44 |
}
|
38 |
return apply_filters(
|
39 |
'ig_es_data_types_includes',
|
40 |
array(
|
41 |
+
'user' => 'ES_Data_Type_User',
|
42 |
+
'subscriber' => 'ES_Data_Type_Subscriber',
|
43 |
)
|
44 |
);
|
45 |
}
|
lite/includes/workflows/data-types/class-es-data-type-subscriber.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Workflow data type subscriber
|
4 |
+
*
|
5 |
+
* @since 4.7.2
|
6 |
+
* @version 1.0
|
7 |
+
* @package Email Subscribers
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
+
exit;
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class to handle subscriber data item
|
16 |
+
*
|
17 |
+
* @class ES_Data_Type_Subscriber
|
18 |
+
*
|
19 |
+
* @since 4.7.2
|
20 |
+
*/
|
21 |
+
class ES_Data_Type_Subscriber extends ES_Workflow_Data_Type {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Validate given data item
|
25 |
+
*
|
26 |
+
* @since 4.7.2
|
27 |
+
*
|
28 |
+
* @param WP_User $item Data item object.
|
29 |
+
*
|
30 |
+
* @return bool
|
31 |
+
*/
|
32 |
+
public function validate( $item ) {
|
33 |
+
|
34 |
+
if ( empty( $item['email'] ) || ! is_email( $item['email'] ) ) {
|
35 |
+
return false;
|
36 |
+
}
|
37 |
+
|
38 |
+
return true;
|
39 |
+
}
|
40 |
+
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Returns id of given data item object. Only validated $items should be passed to this method
|
44 |
+
*
|
45 |
+
* @since 4.7.2
|
46 |
+
*
|
47 |
+
* @param WP_User $item Data item object.
|
48 |
+
*
|
49 |
+
* @return mixed
|
50 |
+
*/
|
51 |
+
public function compress( $item ) {
|
52 |
+
return $item['email'];
|
53 |
+
}
|
54 |
+
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Return data item object from given id.
|
58 |
+
*
|
59 |
+
* @since 4.7.2
|
60 |
+
*
|
61 |
+
* @param string $compressed_item Data item object ID.
|
62 |
+
* @param array $compressed_data_layer Data layer.
|
63 |
+
*
|
64 |
+
* @return mixed
|
65 |
+
*/
|
66 |
+
public function decompress( $compressed_item, $compressed_data_layer ) {
|
67 |
+
|
68 |
+
$data = array();
|
69 |
+
|
70 |
+
if ( is_email( $compressed_item ) ) {
|
71 |
+
$data['email'] = $compressed_item;
|
72 |
+
}
|
73 |
+
|
74 |
+
return $data;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Abstract required data from data item object
|
79 |
+
*
|
80 |
+
* @since 4.7.2
|
81 |
+
*
|
82 |
+
* @param array $item Data item object.
|
83 |
+
* @return array
|
84 |
+
*/
|
85 |
+
public function get_data( $item ) {
|
86 |
+
|
87 |
+
$data = array();
|
88 |
+
|
89 |
+
if ( ! empty( $item['email'] ) ) {
|
90 |
+
$data = $item;
|
91 |
+
$data['source'] = 'wp';
|
92 |
+
}
|
93 |
+
|
94 |
+
return $data;
|
95 |
+
}
|
96 |
+
}
|
lite/includes/workflows/queue/class-es-workflow-queue.php
CHANGED
@@ -24,8 +24,8 @@ class ES_Workflow_Queue extends ES_DB_Workflows_Queue {
|
|
24 |
|
25 |
// error messages
|
26 |
const F_WORKFLOW_INACTIVE = 100;
|
27 |
-
const F_MISSING_DATA
|
28 |
-
const F_FATAL_ERROR
|
29 |
|
30 |
/**
|
31 |
* Workflow queue id
|
@@ -215,36 +215,47 @@ class ES_Workflow_Queue extends ES_DB_Workflows_Queue {
|
|
215 |
|
216 |
$this->uncompressed_data_layer = $data_layer->get_raw_data();
|
217 |
|
|
|
218 |
foreach ( $this->uncompressed_data_layer as $data_type_id => $data_item ) {
|
219 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
}
|
221 |
}
|
222 |
|
223 |
|
224 |
/**
|
225 |
-
*
|
226 |
*
|
227 |
* @param $data_type_id
|
228 |
* @param $data_item
|
|
|
|
|
229 |
*/
|
230 |
-
private function
|
231 |
|
232 |
$data_type = ES_Workflow_Data_Types::get( $data_type_id );
|
233 |
|
234 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
235 |
-
return;
|
236 |
}
|
237 |
|
238 |
$storage_key = $data_type_id;
|
239 |
$storage_value = $data_type->compress( $data_item );
|
240 |
-
|
241 |
if ( $storage_key ) {
|
242 |
-
$
|
243 |
-
$meta_data = array(
|
244 |
$storage_key => $storage_value
|
245 |
);
|
246 |
-
$this->update_meta( $queue_id, $meta_data );
|
247 |
}
|
|
|
|
|
248 |
}
|
249 |
|
250 |
|
24 |
|
25 |
// error messages
|
26 |
const F_WORKFLOW_INACTIVE = 100;
|
27 |
+
const F_MISSING_DATA = 101;
|
28 |
+
const F_FATAL_ERROR = 102;
|
29 |
|
30 |
/**
|
31 |
* Workflow queue id
|
215 |
|
216 |
$this->uncompressed_data_layer = $data_layer->get_raw_data();
|
217 |
|
218 |
+
$items_data = array();
|
219 |
foreach ( $this->uncompressed_data_layer as $data_type_id => $data_item ) {
|
220 |
+
$item_data = $this->get_item_data( $data_type_id, $data_item );
|
221 |
+
if ( ! empty( $item_data ) ) {
|
222 |
+
$items_data = array_merge( $items_data, $item_data );
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
if ( ! empty( $items_data ) ) {
|
227 |
+
$queue_id = $this->get_id();
|
228 |
+
$this->update_meta( $queue_id, $items_data );
|
229 |
}
|
230 |
}
|
231 |
|
232 |
|
233 |
/**
|
234 |
+
* Get workflow data item's data
|
235 |
*
|
236 |
* @param $data_type_id
|
237 |
* @param $data_item
|
238 |
+
*
|
239 |
+
* @return $item_data
|
240 |
*/
|
241 |
+
private function get_item_data( $data_type_id, $data_item ) {
|
242 |
|
243 |
$data_type = ES_Workflow_Data_Types::get( $data_type_id );
|
244 |
|
245 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
246 |
+
return array();
|
247 |
}
|
248 |
|
249 |
$storage_key = $data_type_id;
|
250 |
$storage_value = $data_type->compress( $data_item );
|
251 |
+
$item_data = array();
|
252 |
if ( $storage_key ) {
|
253 |
+
$item_data = array(
|
|
|
254 |
$storage_key => $storage_value
|
255 |
);
|
|
|
256 |
}
|
257 |
+
|
258 |
+
return $item_data;
|
259 |
}
|
260 |
|
261 |
|
lite/includes/workflows/triggers/class-es-trigger-user-deleted.php
CHANGED
@@ -21,7 +21,7 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
|
|
21 |
*
|
22 |
* @var array
|
23 |
*/
|
24 |
-
public $supplied_data_items = array( '
|
25 |
|
26 |
/**
|
27 |
* Load trigger admin props.
|
@@ -53,12 +53,22 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
|
|
53 |
return;
|
54 |
}
|
55 |
|
56 |
-
|
57 |
-
$data = array(
|
58 |
-
'user' => $user,
|
59 |
-
);
|
60 |
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
|
@@ -71,9 +81,9 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
|
|
71 |
*/
|
72 |
public function validate_workflow( $workflow ) {
|
73 |
|
74 |
-
$
|
75 |
|
76 |
-
if ( ! $
|
77 |
return false;
|
78 |
}
|
79 |
|
21 |
*
|
22 |
* @var array
|
23 |
*/
|
24 |
+
public $supplied_data_items = array( 'subscriber' );
|
25 |
|
26 |
/**
|
27 |
* Load trigger admin props.
|
53 |
return;
|
54 |
}
|
55 |
|
56 |
+
$email = $user->user_email;
|
|
|
|
|
|
|
57 |
|
58 |
+
if ( ! empty( $email ) ) {
|
59 |
+
|
60 |
+
$subscriber = array(
|
61 |
+
'email' => $email,
|
62 |
+
);
|
63 |
+
|
64 |
+
// Prepare data.
|
65 |
+
$data = array(
|
66 |
+
'subscriber' => $subscriber,
|
67 |
+
);
|
68 |
+
|
69 |
+
$this->maybe_run( $data );
|
70 |
+
}
|
71 |
+
|
72 |
}
|
73 |
|
74 |
|
81 |
*/
|
82 |
public function validate_workflow( $workflow ) {
|
83 |
|
84 |
+
$subscriber = $workflow->data_layer()->get_item( 'subscriber' );
|
85 |
|
86 |
+
if ( ! $subscriber ) {
|
87 |
return false;
|
88 |
}
|
89 |
|
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.7.
|
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-
|
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:
|
33 |
msgid "Icegram"
|
34 |
msgstr ""
|
35 |
|
@@ -88,7 +88,7 @@ msgid "Please add a broadcast subject before saving."
|
|
88 |
msgstr ""
|
89 |
|
90 |
#: lite/admin/class-email-subscribers-admin.php:170
|
91 |
-
#: pro/pro-class-email-subscribers.php:
|
92 |
msgid "Please add email body."
|
93 |
msgstr ""
|
94 |
|
@@ -199,27 +199,27 @@ msgstr ""
|
|
199 |
msgid "Fetching contacts from MailChimp...Please do not close this window"
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
203 |
-
#: lite/admin/partials/dashboard.php:
|
204 |
msgid "Dashboard"
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
208 |
-
#: lite/admin/partials/dashboard.php:
|
209 |
#: lite/includes/classes/class-es-contacts-table.php:219
|
210 |
#: lite/includes/pro-features.php:153
|
211 |
#: starter/starter-class-email-subscribers.php:624
|
212 |
msgid "Audience"
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
216 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
217 |
#: lite/includes/classes/class-es-lists-table.php:34
|
218 |
#: lite/includes/classes/class-es-lists-table.php:88
|
219 |
msgid "Lists"
|
220 |
msgstr ""
|
221 |
|
222 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
223 |
#: lite/includes/classes/class-es-form-widget.php:70
|
224 |
#: lite/includes/classes/class-es-forms-table.php:39
|
225 |
#: lite/includes/classes/class-es-forms-table.php:40
|
@@ -229,7 +229,7 @@ msgstr ""
|
|
229 |
msgid "Forms"
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
233 |
#: lite/includes/classes/class-es-campaigns-table.php:109
|
234 |
#: lite/includes/classes/class-es-newsletters.php:245
|
235 |
#: lite/includes/classes/class-es-newsletters.php:251
|
@@ -239,29 +239,29 @@ msgstr ""
|
|
239 |
msgid "Campaigns"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
243 |
msgid "Post Notifications"
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
247 |
#: lite/includes/classes/class-es-campaigns-table.php:356
|
248 |
#: lite/includes/classes/class-es-newsletters.php:260
|
249 |
#: lite/includes/classes/class-es-reports-table.php:149
|
250 |
#: lite/includes/classes/class-es-templates-table.php:282
|
251 |
#: lite/includes/pro-features.php:1072
|
252 |
-
#: lite/public/class-email-subscribers-public.php:
|
253 |
#: pro/classes/class-es-pro-reports-data.php:142
|
254 |
#: pro/classes/class-es-pro-reports-data.php:193
|
255 |
msgid "Broadcast"
|
256 |
msgstr ""
|
257 |
|
258 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
259 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
260 |
#: lite/includes/classes/class-es-reports-table.php:472
|
261 |
msgid "Template Preview"
|
262 |
msgstr ""
|
263 |
|
264 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
265 |
#: lite/includes/pro-features.php:158
|
266 |
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
|
267 |
#: lite/includes/workflows/class-es-workflows-table.php:53
|
@@ -270,8 +270,8 @@ msgstr ""
|
|
270 |
msgid "Workflows"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
274 |
-
#: lite/admin/partials/dashboard.php:
|
275 |
#: lite/includes/classes/class-es-campaign-report.php:17
|
276 |
#: lite/includes/classes/class-es-reports-table.php:17
|
277 |
#: lite/includes/classes/class-es-reports-table.php:56
|
@@ -284,22 +284,22 @@ msgstr ""
|
|
284 |
msgid "Reports"
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
288 |
-
#: lite/admin/partials/dashboard.php:
|
289 |
#: lite/includes/classes/class-es-admin-settings.php:119
|
290 |
msgid "Settings"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
294 |
msgid "Go To Icegram"
|
295 |
msgstr ""
|
296 |
|
297 |
#. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
|
298 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
299 |
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>"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: lite/admin/class-email-subscribers-admin.php:
|
303 |
msgid "Something went wrong"
|
304 |
msgstr ""
|
305 |
|
@@ -393,14 +393,14 @@ msgstr ""
|
|
393 |
#: lite/admin/class-ig-es-campaign-rules.php:593
|
394 |
#: lite/includes/classes/class-es-admin-settings.php:199
|
395 |
#: lite/includes/classes/class-es-campaign-report.php:179
|
396 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
397 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
398 |
#: lite/includes/classes/class-es-export-subscribers.php:339
|
399 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
400 |
#: lite/includes/classes/class-es-import-subscribers.php:557
|
401 |
#: lite/includes/classes/class-es-import-subscribers.php:648
|
402 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
403 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
404 |
#: lite/includes/pro-features.php:901
|
405 |
#: lite/includes/pro-features.php:1432
|
406 |
#: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
|
@@ -546,153 +546,153 @@ msgstr ""
|
|
546 |
msgid "Unable to create %1$s and %2$s list."
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
550 |
#: lite/includes/workflows/db/class-es-db-workflows.php:370
|
551 |
#: lite/includes/workflows/triggers/class-es-trigger-user-registered.php:30
|
552 |
msgid "User Registered"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
556 |
#: lite/includes/classes/class-es-forms-table.php:293
|
557 |
msgid "Please accept terms & condition"
|
558 |
msgstr ""
|
559 |
|
560 |
#. translators: Active sidebar name.
|
561 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
562 |
msgid "Adding the form to \"%s\" sidebar, so you can show it on the site"
|
563 |
msgstr ""
|
564 |
|
565 |
#. translators: Active sidebar name.
|
566 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
567 |
msgid "Unable to add form widget to \"%s\" sidebar. Widget may already exists."
|
568 |
msgstr ""
|
569 |
|
570 |
#. translators: Active sidebar name.
|
571 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
572 |
msgid "Unable to add form widget to \"%s\" sidebar. No subscription form found."
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
576 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
577 |
msgid "Welcome To Email Subscribers"
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
581 |
msgid "Seems like your server is not setup correctly to send emails. Please confirm if you're getting any other emails from within WordPress"
|
582 |
msgstr ""
|
583 |
|
584 |
-
#: lite/admin/class-ig-es-onboarding.php:
|
585 |
msgid "New Post Published - {{POSTTITLE}}"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: lite/admin/partials/dashboard.php:
|
589 |
msgid "Add a Subscription Form"
|
590 |
msgstr ""
|
591 |
|
592 |
-
#: lite/admin/partials/dashboard.php:
|
593 |
msgid "Grow subscribers. Add a newsletter signup form to your site."
|
594 |
msgstr ""
|
595 |
|
596 |
-
#: lite/admin/partials/dashboard.php:
|
597 |
-
#: lite/admin/partials/dashboard.php:
|
598 |
msgid "Create"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: lite/admin/partials/dashboard.php:
|
602 |
#: lite/includes/classes/class-es-contacts-table.php:138
|
603 |
#: lite/includes/classes/class-es-import-subscribers.php:390
|
604 |
msgid "Import Contacts"
|
605 |
msgstr ""
|
606 |
|
607 |
-
#: lite/admin/partials/dashboard.php:
|
608 |
msgid "Coming from another email marketing system? Upload a CSV file to import subscribers."
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: lite/admin/partials/dashboard.php:
|
612 |
#: lite/includes/classes/class-es-import-subscribers.php:353
|
613 |
msgid "Import"
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: lite/admin/partials/dashboard.php:
|
617 |
msgid "Configure Email Sending"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: lite/admin/partials/dashboard.php:
|
621 |
msgid " Essential for high email delivery and reaching the inbox. SMTP, email service providers... set it all up."
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: lite/admin/partials/dashboard.php:
|
625 |
msgid "Setup"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: lite/admin/partials/dashboard.php:
|
629 |
msgid "Send a Newsletter"
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: lite/admin/partials/dashboard.php:
|
633 |
msgid "Broadcast a newsletter campaign to all or selected subscribers."
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: lite/admin/partials/dashboard.php:
|
637 |
msgid "Begin"
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: lite/admin/partials/dashboard.php:
|
641 |
msgid "Create an Auto-responder Sequence"
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: lite/admin/partials/dashboard.php:
|
645 |
msgid "Welcome emails, drip campaigns... Send automatic emails at regular intervals to engage readers."
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: lite/admin/partials/dashboard.php:
|
649 |
msgid "Start"
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: lite/admin/partials/dashboard.php:
|
653 |
msgid "New Broadcast"
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: lite/admin/partials/dashboard.php:
|
657 |
msgid "New Post Notification"
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: lite/admin/partials/dashboard.php:
|
661 |
-
#: lite/admin/partials/dashboard.php:
|
662 |
#: pro/pro-class-sequences.php:48
|
663 |
msgid "New Sequence"
|
664 |
msgstr ""
|
665 |
|
666 |
-
#: lite/admin/partials/dashboard.php:
|
667 |
msgid "Premium"
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: lite/admin/partials/dashboard.php:
|
671 |
msgid "New Template"
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: lite/admin/partials/dashboard.php:
|
675 |
msgid "New Form"
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: lite/admin/partials/dashboard.php:
|
679 |
msgid "New List"
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: lite/admin/partials/dashboard.php:
|
683 |
msgid "New Contact"
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: lite/admin/partials/dashboard.php:
|
687 |
msgid " active contacts"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: lite/admin/partials/dashboard.php:
|
691 |
#: lite/includes/classes/class-es-contacts-table.php:325
|
692 |
msgid "Last 60 days"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: lite/admin/partials/dashboard.php:
|
696 |
#: lite/includes/pro-features.php:1184
|
697 |
#: lite/includes/pro-features.php:1222
|
698 |
#: pro/classes/class-es-pro-reports-data.php:416
|
@@ -702,25 +702,25 @@ msgstr ""
|
|
702 |
msgid "Opens"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: lite/admin/partials/dashboard.php:
|
706 |
msgid " Avg Open Rate"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: lite/admin/partials/dashboard.php:
|
710 |
msgid "Messages Sent"
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: lite/admin/partials/dashboard.php:
|
714 |
#: lite/includes/pro-features.php:1120
|
715 |
#: pro/classes/class-es-pro-reports-data.php:379
|
716 |
msgid "Avg Click Rate"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: lite/admin/partials/dashboard.php:
|
720 |
msgid "Jump to: "
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: lite/admin/partials/dashboard.php:
|
724 |
#: lite/includes/class-email-subscribers-activator.php:43
|
725 |
#: lite/includes/class-email-subscribers-activator.php:44
|
726 |
#: lite/includes/class-email-subscribers-activator.php:49
|
@@ -795,8 +795,8 @@ msgstr ""
|
|
795 |
#: lite/includes/classes/class-es-campaign-report.php:180
|
796 |
#: lite/includes/classes/class-es-campaigns-table.php:619
|
797 |
#: lite/includes/classes/class-es-export-subscribers.php:341
|
798 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
799 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
800 |
#: lite/includes/classes/class-es-reports-table.php:230
|
801 |
#: lite/includes/workflows/class-es-workflows-table.php:311
|
802 |
#: pro/classes/class-es-pro-sequence-report.php:297
|
@@ -1075,7 +1075,7 @@ msgid "No Templates found in Trash"
|
|
1075 |
msgstr ""
|
1076 |
|
1077 |
#: lite/includes/class-email-subscribers-activator.php:55
|
1078 |
-
#: lite/includes/class-email-subscribers.php:
|
1079 |
#: lite/includes/classes/class-es-form-widget.php:11
|
1080 |
#: lite/includes/classes/class-es-old-widget.php:13
|
1081 |
#: lite/includes/classes/class-es-old-widget.php:15
|
@@ -1111,39 +1111,39 @@ msgid "OK, I Got it!"
|
|
1111 |
msgstr ""
|
1112 |
|
1113 |
#. translators: 1: Error message 2: File name 3: Line number
|
1114 |
-
#: lite/includes/class-email-subscribers.php:
|
1115 |
msgid "%1$s in %2$s on line %3$s"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: lite/includes/class-email-subscribers.php:
|
1119 |
msgid "Icegram WC"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
#. translators: %1$s - constant that was used
|
1123 |
-
#: lite/includes/class-email-subscribers.php:
|
1124 |
msgid "Value was set using constant %1$s"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
#: lite/includes/class-es-common.php:187
|
1128 |
#: lite/includes/classes/class-es-contacts-table.php:332
|
1129 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
1130 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
1131 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1132 |
msgid "Subscribed"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
#: lite/includes/class-es-common.php:188
|
1136 |
#: lite/includes/classes/class-es-contacts-table.php:348
|
1137 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
1138 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
1139 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1140 |
msgid "Unconfirmed"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
#: lite/includes/class-es-common.php:189
|
1144 |
#: lite/includes/classes/class-es-contacts-table.php:340
|
1145 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
1146 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1147 |
msgid "Unsubscribed"
|
1148 |
msgstr ""
|
1149 |
|
@@ -1271,7 +1271,7 @@ msgstr ""
|
|
1271 |
|
1272 |
#: lite/includes/class-es-common.php:1677
|
1273 |
#: lite/includes/classes/class-es-campaigns-table.php:679
|
1274 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1275 |
msgid "All Statuses"
|
1276 |
msgstr ""
|
1277 |
|
@@ -1326,10 +1326,10 @@ msgstr ""
|
|
1326 |
#: lite/includes/classes/class-es-admin-settings.php:190
|
1327 |
#: lite/includes/classes/class-es-admin-settings.php:193
|
1328 |
#: lite/includes/classes/class-es-campaigns-table.php:614
|
1329 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1330 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1331 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1332 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1333 |
#: lite/public/partials/class-es-shortcode.php:152
|
1334 |
msgid "Name"
|
1335 |
msgstr ""
|
@@ -1448,7 +1448,7 @@ msgstr ""
|
|
1448 |
#: lite/includes/classes/class-es-admin-settings.php:386
|
1449 |
#: lite/includes/classes/class-es-admin-settings.php:419
|
1450 |
#: lite/includes/classes/class-es-admin-settings.php:456
|
1451 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
1452 |
#: lite/includes/classes/class-es-reports-table.php:228
|
1453 |
#: pro/classes/class-es-pro-sequence-report.php:295
|
1454 |
msgid "Subject"
|
@@ -1459,7 +1459,7 @@ msgstr ""
|
|
1459 |
#: lite/includes/classes/class-es-admin-settings.php:427
|
1460 |
#: lite/includes/classes/class-es-admin-settings.php:467
|
1461 |
#: lite/includes/classes/class-es-newsletters.php:266
|
1462 |
-
#: pro/pro-class-sequences.php:
|
1463 |
msgid "Content"
|
1464 |
msgstr ""
|
1465 |
|
@@ -1757,14 +1757,14 @@ msgstr ""
|
|
1757 |
#. translators: 1: Page 2: Edit action 3: List id 4: List nonce
|
1758 |
#: lite/includes/classes/class-es-campaigns-table.php:432
|
1759 |
#: lite/includes/classes/class-es-campaigns-table.php:456
|
1760 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1761 |
msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
1762 |
msgstr ""
|
1763 |
|
1764 |
#. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
|
1765 |
#. translators: 1: Page 2: Delete action 3: List id 4: List nonce
|
1766 |
#: lite/includes/classes/class-es-campaigns-table.php:481
|
1767 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1768 |
msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
1769 |
msgstr ""
|
1770 |
|
@@ -1775,8 +1775,8 @@ msgid "Type"
|
|
1775 |
msgstr ""
|
1776 |
|
1777 |
#: lite/includes/classes/class-es-campaigns-table.php:616
|
1778 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1779 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1780 |
msgid "List(s)"
|
1781 |
msgstr ""
|
1782 |
|
@@ -1785,9 +1785,9 @@ msgid "Categories"
|
|
1785 |
msgstr ""
|
1786 |
|
1787 |
#: lite/includes/classes/class-es-campaigns-table.php:618
|
1788 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1789 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1790 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1791 |
#: lite/includes/workflows/class-es-workflows-table.php:310
|
1792 |
msgid "Created"
|
1793 |
msgstr ""
|
@@ -1887,7 +1887,7 @@ msgstr ""
|
|
1887 |
|
1888 |
#: lite/includes/classes/class-es-contacts-table.php:526
|
1889 |
#: lite/includes/classes/class-es-export-subscribers.php:36
|
1890 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1891 |
msgid "Please select list"
|
1892 |
msgstr ""
|
1893 |
|
@@ -1904,76 +1904,76 @@ msgstr ""
|
|
1904 |
msgid "Audience "
|
1905 |
msgstr ""
|
1906 |
|
1907 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1908 |
msgid "No list found"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1912 |
msgid "First name"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1916 |
msgid "Enter first name"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1920 |
msgid "Last name"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1924 |
msgid "Enter last name"
|
1925 |
msgstr ""
|
1926 |
|
1927 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1928 |
#: lite/includes/pro-features.php:907
|
1929 |
#: pro/pro-class-email-subscribers.php:822
|
1930 |
msgid "Enter email"
|
1931 |
msgstr ""
|
1932 |
|
1933 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1934 |
msgid "Send welcome email?"
|
1935 |
msgstr ""
|
1936 |
|
1937 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1938 |
msgid "Save Contact"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1942 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1943 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1944 |
#: lite/includes/classes/class-es-post-notifications.php:429
|
1945 |
msgid "Save Changes"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1949 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1950 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1951 |
#: lite/includes/classes/class-es-post-notifications.php:432
|
1952 |
msgid "Cancel"
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1956 |
msgid "No contacts avaliable."
|
1957 |
msgstr ""
|
1958 |
|
1959 |
#. translators: 1: Page 2: Edit action 3: Contact id 4: Wp nonce
|
1960 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1961 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
#. translators: 1: Page 2: Delete action 3: Contact id 4: Wp nonce
|
1965 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1966 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
1967 |
msgstr ""
|
1968 |
|
1969 |
#. translators: 1: Page 2: Resend action 3: Contact id 4: Wp nonce
|
1970 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1971 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Resend Confirmation<a>"
|
1972 |
msgstr ""
|
1973 |
|
1974 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1975 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
1976 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
1977 |
#: lite/includes/classes/class-es-reports-table.php:211
|
1978 |
#: lite/includes/classes/class-es-reports-table.php:296
|
1979 |
#: lite/includes/workflows/admin/views/action.php:29
|
@@ -1983,60 +1983,60 @@ msgstr ""
|
|
1983 |
msgid "Delete"
|
1984 |
msgstr ""
|
1985 |
|
1986 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1987 |
#: pro/workflows/actions/class-es-action-move-to-list.php:29
|
1988 |
msgid "Move to list"
|
1989 |
msgstr ""
|
1990 |
|
1991 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1992 |
#: lite/includes/workflows/actions/class-es-action-add-to-list.php:29
|
1993 |
msgid "Add to list"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
1997 |
msgid "Change status"
|
1998 |
msgstr ""
|
1999 |
|
2000 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2001 |
msgid "Search Contacts"
|
2002 |
msgstr ""
|
2003 |
|
2004 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2005 |
msgid "All Lists"
|
2006 |
msgstr ""
|
2007 |
|
2008 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2009 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2010 |
msgid "Contact(s) deleted successfully!"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2014 |
msgid "Confirmation email sent successfully!"
|
2015 |
msgstr ""
|
2016 |
|
2017 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2018 |
msgid "Please select subscribers to update."
|
2019 |
msgstr ""
|
2020 |
|
2021 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2022 |
msgid "Please select status."
|
2023 |
msgstr ""
|
2024 |
|
2025 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2026 |
msgid "Contact(s) status changed successfully!"
|
2027 |
msgstr ""
|
2028 |
|
2029 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2030 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2031 |
#: lite/includes/classes/class-es-post-notifications.php:51
|
2032 |
msgid "Please select list."
|
2033 |
msgstr ""
|
2034 |
|
2035 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2036 |
msgid "Contact(s) moved to list successfully!"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
-
#: lite/includes/classes/class-es-contacts-table.php:
|
2040 |
msgid "Contact(s) added to list successfully!"
|
2041 |
msgstr ""
|
2042 |
|
@@ -2119,12 +2119,12 @@ msgid "No."
|
|
2119 |
msgstr ""
|
2120 |
|
2121 |
#: lite/includes/classes/class-es-export-subscribers.php:83
|
2122 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2123 |
msgid "Export"
|
2124 |
msgstr ""
|
2125 |
|
2126 |
#: lite/includes/classes/class-es-export-subscribers.php:97
|
2127 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2128 |
msgid "All contacts"
|
2129 |
msgstr ""
|
2130 |
|
@@ -2147,16 +2147,16 @@ msgstr ""
|
|
2147 |
#: lite/includes/classes/class-es-export-subscribers.php:337
|
2148 |
#: lite/includes/classes/class-es-import-subscribers.php:558
|
2149 |
#: lite/includes/classes/class-es-import-subscribers.php:649
|
2150 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2151 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2152 |
msgid "First Name"
|
2153 |
msgstr ""
|
2154 |
|
2155 |
#: lite/includes/classes/class-es-export-subscribers.php:338
|
2156 |
#: lite/includes/classes/class-es-import-subscribers.php:559
|
2157 |
#: lite/includes/classes/class-es-import-subscribers.php:650
|
2158 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2159 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2160 |
msgid "Last Name"
|
2161 |
msgstr ""
|
2162 |
|
@@ -2221,149 +2221,151 @@ msgstr ""
|
|
2221 |
msgid "Forms "
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2225 |
msgid " New Form"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2229 |
msgid " Edit Form"
|
2230 |
msgstr ""
|
2231 |
|
2232 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2233 |
-
|
|
|
|
|
2234 |
msgstr ""
|
2235 |
|
2236 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2237 |
msgid "Form name"
|
2238 |
msgstr ""
|
2239 |
|
2240 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2241 |
msgid "Enter form name"
|
2242 |
msgstr ""
|
2243 |
|
2244 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2245 |
msgid "Description"
|
2246 |
msgstr ""
|
2247 |
|
2248 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2249 |
msgid "Enter description"
|
2250 |
msgstr ""
|
2251 |
|
2252 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2253 |
msgid "Form fields"
|
2254 |
msgstr ""
|
2255 |
|
2256 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2257 |
msgid "Field"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2261 |
msgid "Show?"
|
2262 |
msgstr ""
|
2263 |
|
2264 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2265 |
msgid "Required?"
|
2266 |
msgstr ""
|
2267 |
|
2268 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2269 |
msgid "Label"
|
2270 |
msgstr ""
|
2271 |
|
2272 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2273 |
msgid "Placeholder"
|
2274 |
msgstr ""
|
2275 |
|
2276 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2277 |
msgid "Button"
|
2278 |
msgstr ""
|
2279 |
|
2280 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2281 |
msgid "Contacts will be added into selected list(s)"
|
2282 |
msgstr ""
|
2283 |
|
2284 |
#. translators: %s: Create list page url
|
2285 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2286 |
msgid "List not found. Please %s"
|
2287 |
msgstr ""
|
2288 |
|
2289 |
#. translators: %s: Create list page url
|
2290 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2291 |
msgid "create your first list"
|
2292 |
msgstr ""
|
2293 |
|
2294 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2295 |
msgid "Allow contact to choose list(s)"
|
2296 |
msgstr ""
|
2297 |
|
2298 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2299 |
msgid "Allow contacts to choose list(s) in which they want to subscribe."
|
2300 |
msgstr ""
|
2301 |
|
2302 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2303 |
msgid "Show GDPR consent checkbox"
|
2304 |
msgstr ""
|
2305 |
|
2306 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2307 |
msgid "Show consent checkbox to get the consent of a contact before adding them to list(s)"
|
2308 |
msgstr ""
|
2309 |
|
2310 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2311 |
msgid "Consent text will show up at subscription form next to consent checkbox."
|
2312 |
msgstr ""
|
2313 |
|
2314 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2315 |
msgid "Save Form"
|
2316 |
msgstr ""
|
2317 |
|
2318 |
#. translators: 1: Page 2: Edit Action 3: Form id 4. WP Nonce
|
2319 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2320 |
msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
2321 |
msgstr ""
|
2322 |
|
2323 |
#. translators: 1: Page 2: Delete Action 3: Form id 4. WP Nonce
|
2324 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2325 |
msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
2326 |
msgstr ""
|
2327 |
|
2328 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2329 |
msgid "Shortcode"
|
2330 |
msgstr ""
|
2331 |
|
2332 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2333 |
msgid "Subscribers"
|
2334 |
msgstr ""
|
2335 |
|
2336 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2337 |
msgid "You do not have permission to delete this form."
|
2338 |
msgstr ""
|
2339 |
|
2340 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2341 |
msgid "Form deleted successfully!"
|
2342 |
msgstr ""
|
2343 |
|
2344 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2345 |
msgid "Form(s) deleted successfully!"
|
2346 |
msgstr ""
|
2347 |
|
2348 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2349 |
msgid "Please select form(s) to delete."
|
2350 |
msgstr ""
|
2351 |
|
2352 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2353 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2354 |
msgid "Enable"
|
2355 |
msgstr ""
|
2356 |
|
2357 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2358 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2359 |
msgid "Disable"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2363 |
msgid "Search Forms"
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#: lite/includes/classes/class-es-forms-table.php:
|
2367 |
msgid "No Forms avaliable."
|
2368 |
msgstr ""
|
2369 |
|
@@ -2590,59 +2592,63 @@ msgstr ""
|
|
2590 |
msgid "(Last Name) (First Name)"
|
2591 |
msgstr ""
|
2592 |
|
2593 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2594 |
-
|
|
|
|
|
|
|
|
|
2595 |
msgid "List Name"
|
2596 |
msgstr ""
|
2597 |
|
2598 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2599 |
msgid "Select columns for mapping"
|
2600 |
msgstr ""
|
2601 |
|
2602 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2603 |
msgid "Define which column represents which field"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2607 |
msgid "Ignore column"
|
2608 |
msgstr ""
|
2609 |
|
2610 |
#. translators: %s: Hidden contacts count
|
2611 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2612 |
msgid "%s contacts are hidden"
|
2613 |
msgstr ""
|
2614 |
|
2615 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2616 |
msgid "Email address is invalid."
|
2617 |
msgstr ""
|
2618 |
|
2619 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2620 |
msgid "Email address is empty."
|
2621 |
msgstr ""
|
2622 |
|
2623 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2624 |
msgid "Duplicate email in the CSV file. Only the first record imported."
|
2625 |
msgstr ""
|
2626 |
|
2627 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2628 |
msgid "Unubscribed"
|
2629 |
msgstr ""
|
2630 |
|
2631 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2632 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2633 |
msgid "Hard Bounced"
|
2634 |
msgstr ""
|
2635 |
|
2636 |
#. translators: 1. Total imported contacts 2. Total contacts
|
2637 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2638 |
msgid "%1$s of %2$s contacts imported"
|
2639 |
msgstr ""
|
2640 |
|
2641 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2642 |
msgid "The following contacts were skipped"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
-
#: lite/includes/classes/class-es-import-subscribers.php:
|
2646 |
msgid "Reason"
|
2647 |
msgstr ""
|
2648 |
|
@@ -2659,7 +2665,7 @@ msgid "Number of lists per page"
|
|
2659 |
msgstr ""
|
2660 |
|
2661 |
#: lite/includes/classes/class-es-lists-table.php:138
|
2662 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2663 |
msgid "You do not have permission to edit list"
|
2664 |
msgstr ""
|
2665 |
|
@@ -2676,7 +2682,7 @@ msgid "List added successfully!"
|
|
2676 |
msgstr ""
|
2677 |
|
2678 |
#: lite/includes/classes/class-es-lists-table.php:234
|
2679 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2680 |
msgid "List updated successfully!"
|
2681 |
msgstr ""
|
2682 |
|
@@ -2700,7 +2706,7 @@ msgstr ""
|
|
2700 |
msgid "Enter list name"
|
2701 |
msgstr ""
|
2702 |
|
2703 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2704 |
msgid "Save List"
|
2705 |
msgstr ""
|
2706 |
|
@@ -2708,30 +2714,38 @@ msgstr ""
|
|
2708 |
#. translators: 1: Unsubscribed-Filter url 2: Count
|
2709 |
#. translators: 1: Unconfirmed-Filter url 2: Count
|
2710 |
#. translators: 1: All contacts flters 2: Count
|
2711 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2712 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2713 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2714 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2715 |
msgid "<a href=\"%1$s\" target=\"_blank\">%2$d</a>"
|
2716 |
msgstr ""
|
2717 |
|
2718 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2719 |
msgid "Search lists"
|
2720 |
msgstr ""
|
2721 |
|
2722 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2723 |
msgid "You do not have permission to delete list"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2727 |
msgid "List deleted successfully!"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2731 |
msgid "List(s) deleted successfully!"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
-
#: lite/includes/classes/class-es-lists-table.php:
|
2735 |
msgid "No lists avaliable."
|
2736 |
msgstr ""
|
2737 |
|
@@ -2757,6 +2771,11 @@ msgstr ""
|
|
2757 |
msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
|
2758 |
msgstr ""
|
2759 |
|
|
|
|
|
|
|
|
|
|
|
2760 |
#: lite/includes/classes/class-es-newsletters.php:94
|
2761 |
msgid "Sorry, you are not allowed to add/edit broadcast."
|
2762 |
msgstr ""
|
@@ -2803,69 +2822,65 @@ msgstr ""
|
|
2803 |
msgid "Send"
|
2804 |
msgstr ""
|
2805 |
|
2806 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2807 |
-
msgid "How to create Broadcast?"
|
2808 |
-
msgstr ""
|
2809 |
-
|
2810 |
-
#: lite/includes/classes/class-es-newsletters.php:354
|
2811 |
msgid "From Name"
|
2812 |
msgstr ""
|
2813 |
|
2814 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2815 |
msgid "From Email"
|
2816 |
msgstr ""
|
2817 |
|
2818 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2819 |
msgid "Reply To"
|
2820 |
msgstr ""
|
2821 |
|
2822 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2823 |
msgid "Message"
|
2824 |
msgstr ""
|
2825 |
|
2826 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2827 |
msgid "Design template"
|
2828 |
msgstr ""
|
2829 |
|
2830 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2831 |
msgid "Total recipients:"
|
2832 |
msgstr ""
|
2833 |
|
2834 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2835 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2836 |
#: lite/includes/classes/class-es-reports-table.php:212
|
2837 |
#: pro/classes/class-es-pro-sequence-report.php:269
|
2838 |
msgid "Preview"
|
2839 |
msgstr ""
|
2840 |
|
2841 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2842 |
msgid "Browser"
|
2843 |
msgstr ""
|
2844 |
|
2845 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2846 |
#: lite/includes/classes/class-es-reports-table.php:473
|
2847 |
msgid "There could be a slight variation on how your customer will view the email content."
|
2848 |
msgstr ""
|
2849 |
|
2850 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2851 |
#: lite/includes/classes/class-es-reports-table.php:477
|
2852 |
#: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
|
2853 |
msgid "Close"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2857 |
msgid "Email sent successfully "
|
2858 |
msgstr ""
|
2859 |
|
2860 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2861 |
msgid "Something went wrong. Please try again later"
|
2862 |
msgstr ""
|
2863 |
|
2864 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2865 |
msgid "Email Content Preview"
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
#: lite/includes/classes/class-es-newsletters.php:
|
2869 |
msgid "Open tracking"
|
2870 |
msgstr ""
|
2871 |
|
@@ -2933,7 +2948,7 @@ msgid " Edit Post Notification"
|
|
2933 |
msgstr ""
|
2934 |
|
2935 |
#: lite/includes/classes/class-es-post-notifications.php:294
|
2936 |
-
#: pro/pro-class-sequences.php:
|
2937 |
msgid "Campaigns "
|
2938 |
msgstr ""
|
2939 |
|
@@ -2989,7 +3004,7 @@ msgid "No Reports avaliable."
|
|
2989 |
msgstr ""
|
2990 |
|
2991 |
#: lite/includes/classes/class-es-reports-table.php:145
|
2992 |
-
#: lite/public/class-email-subscribers-public.php:
|
2993 |
#: pro/classes/class-es-pro-reports-data.php:144
|
2994 |
#: pro/classes/class-es-pro-reports-data.php:189
|
2995 |
msgid "Post Notification"
|
@@ -4268,7 +4283,7 @@ msgid "WP Editor"
|
|
4268 |
msgstr ""
|
4269 |
|
4270 |
#. translators: %s: Table name
|
4271 |
-
#: lite/includes/workflows/queue/class-es-workflow-queue.php:
|
4272 |
#: pro/classes/abandoned-cart/class-ig-es-cart.php:784
|
4273 |
#: pro/classes/abandoned-cart/class-ig-es-guest.php:411
|
4274 |
msgid "Could not insert into '%1$s' table. '%1$s' may not be present in the database."
|
@@ -4305,32 +4320,32 @@ msgstr ""
|
|
4305 |
msgid "Sorry, you are not allowed to access this page."
|
4306 |
msgstr ""
|
4307 |
|
4308 |
-
#: lite/public/class-email-subscribers-public.php:
|
4309 |
msgid "You are already subscribed!"
|
4310 |
msgstr ""
|
4311 |
|
4312 |
-
#: lite/public/class-email-subscribers-public.php:
|
4313 |
msgid "You are already unsubscribed!"
|
4314 |
msgstr ""
|
4315 |
|
4316 |
-
#: lite/public/class-email-subscribers-public.php:
|
4317 |
msgid "Sorry, we couldn't find you. Please contact admin."
|
4318 |
msgstr ""
|
4319 |
|
4320 |
-
#: lite/public/class-email-subscribers-public.php:
|
4321 |
#: starter/starter-class-email-subscribers.php:882
|
4322 |
msgid "is subscribed to our mailing list(s)."
|
4323 |
msgstr ""
|
4324 |
|
4325 |
-
#: lite/public/class-email-subscribers-public.php:
|
4326 |
msgid "Unsubscribe from all list(s)"
|
4327 |
msgstr ""
|
4328 |
|
4329 |
-
#: lite/public/class-email-subscribers-public.php:
|
4330 |
msgid "You will be unsubscribed from receiving all future emails sent from us."
|
4331 |
msgstr ""
|
4332 |
|
4333 |
-
#: lite/public/class-email-subscribers-public.php:
|
4334 |
#: starter/starter-class-email-subscribers.php:906
|
4335 |
msgid "Unsubscribe"
|
4336 |
msgstr ""
|
@@ -4502,117 +4517,122 @@ msgstr ""
|
|
4502 |
msgid "Please share the reason"
|
4503 |
msgstr ""
|
4504 |
|
4505 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
|
|
4506 |
msgid "Access Key ID is empty."
|
4507 |
msgstr ""
|
4508 |
|
4509 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
|
|
4510 |
msgid "Secret Access Key is empty."
|
4511 |
msgstr ""
|
4512 |
|
4513 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
|
|
4514 |
msgid "Closest region is not set."
|
4515 |
msgstr ""
|
4516 |
|
4517 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4518 |
msgid "US East (N. Virginia)"
|
4519 |
msgstr ""
|
4520 |
|
4521 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4522 |
msgid "US East (Ohio)"
|
4523 |
msgstr ""
|
4524 |
|
4525 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4526 |
msgid "US West (Oregon)"
|
4527 |
msgstr ""
|
4528 |
|
4529 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4530 |
msgid "US AWS GovCloud"
|
4531 |
msgstr ""
|
4532 |
|
4533 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4534 |
msgid "EU (Ireland)"
|
4535 |
msgstr ""
|
4536 |
|
4537 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4538 |
msgid "EU (London)"
|
4539 |
msgstr ""
|
4540 |
|
4541 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4542 |
msgid "EU (Frankfurt)"
|
4543 |
msgstr ""
|
4544 |
|
4545 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4546 |
msgid "Asia Pacific (Mumbai)"
|
4547 |
msgstr ""
|
4548 |
|
4549 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4550 |
msgid "Asia Pacific (Tokyo)"
|
4551 |
msgstr ""
|
4552 |
|
4553 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4554 |
msgid "Asia Pacific (Seoul)"
|
4555 |
msgstr ""
|
4556 |
|
4557 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4558 |
msgid "Asia Pacific (Singapore)"
|
4559 |
msgstr ""
|
4560 |
|
4561 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4562 |
msgid "Asia Pacific (Sydney)"
|
4563 |
msgstr ""
|
4564 |
|
4565 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4566 |
msgid "Canada (Central)"
|
4567 |
msgstr ""
|
4568 |
|
4569 |
-
#: pro/mailers/class-es-amazon-ses-mailer.php:
|
4570 |
msgid "South America (São Paulo)"
|
4571 |
msgstr ""
|
4572 |
|
4573 |
-
#: pro/mailers/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4574 |
msgid "Private API key is empty."
|
4575 |
msgstr ""
|
4576 |
|
4577 |
-
#: pro/mailers/class-es-mailgun-mailer.php:
|
4578 |
msgid "Domain name is empty"
|
4579 |
msgstr ""
|
4580 |
|
4581 |
-
#: pro/mailers/class-es-mailgun-mailer.php:
|
4582 |
#: pro/mailers/class-es-sparkpost-mailer.php:84
|
4583 |
msgid "Region is empty"
|
4584 |
msgstr ""
|
4585 |
|
4586 |
-
#: pro/mailers/class-es-mailgun-mailer.php:
|
4587 |
-
#: pro/mailers/class-es-postmark-mailer.php:
|
4588 |
-
#: pro/mailers/class-es-sendgrid-mailer.php:
|
|
|
4589 |
#: pro/mailers/class-es-sparkpost-mailer.php:137
|
4590 |
msgid "An unknown error has occured. Please try again later."
|
4591 |
msgstr ""
|
4592 |
|
4593 |
-
#: pro/mailers/class-es-postmark-mailer.php:
|
4594 |
msgid "API token is empty."
|
4595 |
msgstr ""
|
4596 |
|
4597 |
-
#: pro/mailers/class-es-sendgrid-mailer.php:
|
|
|
4598 |
#: pro/mailers/class-es-sparkpost-mailer.php:74
|
4599 |
msgid "API key is empty."
|
4600 |
msgstr ""
|
4601 |
|
4602 |
-
#: pro/mailers/php-aws-ses/SimpleEmailService.php:623
|
4603 |
-
msgid "Encountered an error, but no description given"
|
4604 |
-
msgstr ""
|
4605 |
-
|
4606 |
-
#. translators: 1. Error type 2. Error code 3. Error message 4. Request Id
|
4607 |
-
#: pro/mailers/php-aws-ses/SimpleEmailService.php:629
|
4608 |
-
msgid "%1$s - %2$s <br/>%3$s <br/>Request Id: %4$s"
|
4609 |
-
msgstr ""
|
4610 |
-
|
4611 |
-
#. translators: %s: Error message.
|
4612 |
-
#: pro/mailers/php-aws-ses/SimpleEmailService.php:633
|
4613 |
-
msgid "Encountered an error: %s"
|
4614 |
-
msgstr ""
|
4615 |
-
|
4616 |
#: pro/partials/es-dashboard.php:52
|
4617 |
msgid "Sent on"
|
4618 |
msgstr ""
|
@@ -4633,25 +4653,25 @@ msgstr ""
|
|
4633 |
msgid "Your cart could not be restored, it may have expired."
|
4634 |
msgstr ""
|
4635 |
|
4636 |
-
#: pro/pro-class-email-subscribers.php:
|
4637 |
#: pro/pro-class-post-digest.php:25
|
4638 |
msgid "Sequence"
|
4639 |
msgstr ""
|
4640 |
|
4641 |
-
#: pro/pro-class-email-subscribers.php:
|
4642 |
msgid "Please enter an email address."
|
4643 |
msgstr ""
|
4644 |
|
4645 |
-
#: pro/pro-class-email-subscribers.php:
|
4646 |
msgid "Add Attachment"
|
4647 |
msgstr ""
|
4648 |
|
4649 |
#. translators: %s: Attachmen max file size.
|
4650 |
-
#: pro/pro-class-email-subscribers.php:
|
4651 |
msgid "Please attach a file having size lower than %s."
|
4652 |
msgstr ""
|
4653 |
|
4654 |
-
#: pro/pro-class-email-subscribers.php:
|
4655 |
msgid "Are you sure you want to delete this?"
|
4656 |
msgstr ""
|
4657 |
|
@@ -4772,23 +4792,23 @@ msgstr ""
|
|
4772 |
msgid "Proceed"
|
4773 |
msgstr ""
|
4774 |
|
4775 |
-
#: pro/pro-class-email-subscribers.php:
|
4776 |
msgid "How to configure Mailgun to send emails in the Email Subscribers plugin?"
|
4777 |
msgstr ""
|
4778 |
|
4779 |
-
#: pro/pro-class-email-subscribers.php:
|
4780 |
msgid "How to configure SendGrid to send emails in the Email Subscribers plugin?"
|
4781 |
msgstr ""
|
4782 |
|
4783 |
-
#: pro/pro-class-email-subscribers.php:
|
4784 |
msgid "How to configure Sparkpost to send emails in the Email Subscribers plugin?"
|
4785 |
msgstr ""
|
4786 |
|
4787 |
-
#: pro/pro-class-email-subscribers.php:
|
4788 |
msgid "How to configure Amazon SES to send emails in the Email Subscribers plugin?"
|
4789 |
msgstr ""
|
4790 |
|
4791 |
-
#: pro/pro-class-email-subscribers.php:
|
4792 |
msgid "How to configure Postmark to send emails in the Email Subscribers plugin?"
|
4793 |
msgstr ""
|
4794 |
|
@@ -4872,73 +4892,69 @@ msgstr ""
|
|
4872 |
msgid "Edit Sequence"
|
4873 |
msgstr ""
|
4874 |
|
4875 |
-
#: pro/pro-class-sequences.php:
|
4876 |
-
msgid "How to create Email Sequence?"
|
4877 |
-
msgstr ""
|
4878 |
-
|
4879 |
-
#: pro/pro-class-sequences.php:104
|
4880 |
msgid "Add Sequence name"
|
4881 |
msgstr ""
|
4882 |
|
4883 |
-
#: pro/pro-class-sequences.php:
|
4884 |
-
#: pro/pro-class-sequences.php:
|
4885 |
msgid "Save All"
|
4886 |
msgstr ""
|
4887 |
|
4888 |
-
#: pro/pro-class-sequences.php:
|
4889 |
msgid "+ Add Email"
|
4890 |
msgstr ""
|
4891 |
|
4892 |
-
#: pro/pro-class-sequences.php:
|
4893 |
-
#: pro/pro-class-sequences.php:
|
4894 |
msgid "Sequence should have atleast one email"
|
4895 |
msgstr ""
|
4896 |
|
4897 |
-
#: pro/pro-class-sequences.php:
|
4898 |
msgid "Sequence added successfully!"
|
4899 |
msgstr ""
|
4900 |
|
4901 |
-
#: pro/pro-class-sequences.php:
|
4902 |
msgid "Sorry, you are not allowed to add sequence."
|
4903 |
msgstr ""
|
4904 |
|
4905 |
-
#: pro/pro-class-sequences.php:
|
4906 |
msgid "Sequence updated successfully!"
|
4907 |
msgstr ""
|
4908 |
|
4909 |
-
#: pro/pro-class-sequences.php:
|
4910 |
msgid "Sorry, you are not allowed to edit sequence."
|
4911 |
msgstr ""
|
4912 |
|
4913 |
-
#: pro/pro-class-sequences.php:
|
4914 |
-
#: pro/pro-class-sequences.php:
|
4915 |
msgid " day"
|
4916 |
msgstr ""
|
4917 |
|
4918 |
-
#: pro/pro-class-sequences.php:
|
4919 |
-
#: pro/pro-class-sequences.php:
|
4920 |
msgid " days"
|
4921 |
msgstr ""
|
4922 |
|
4923 |
-
#: pro/pro-class-sequences.php:
|
4924 |
-
#: pro/pro-class-sequences.php:
|
4925 |
msgid "Welcome"
|
4926 |
msgstr ""
|
4927 |
|
4928 |
-
#: pro/pro-class-sequences.php:363
|
4929 |
#: pro/pro-class-sequences.php:366
|
|
|
4930 |
msgid "Delete this email"
|
4931 |
msgstr ""
|
4932 |
|
4933 |
-
#: pro/pro-class-sequences.php:
|
4934 |
msgid "Email Subject"
|
4935 |
msgstr ""
|
4936 |
|
4937 |
-
#: pro/pro-class-sequences.php:
|
4938 |
msgid "When to send"
|
4939 |
msgstr ""
|
4940 |
|
4941 |
-
#: pro/pro-class-sequences.php:
|
4942 |
msgid " after subscription"
|
4943 |
msgstr ""
|
4944 |
|
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.7.2\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-05-12T06:15:19+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 |
|
30 |
#. Author of the plugin
|
31 |
#: lite/admin/partials/help.php:28
|
32 |
+
#: lite/includes/class-email-subscribers.php:1490
|
33 |
msgid "Icegram"
|
34 |
msgstr ""
|
35 |
|
88 |
msgstr ""
|
89 |
|
90 |
#: lite/admin/class-email-subscribers-admin.php:170
|
91 |
+
#: pro/pro-class-email-subscribers.php:487
|
92 |
msgid "Please add email body."
|
93 |
msgstr ""
|
94 |
|
199 |
msgid "Fetching contacts from MailChimp...Please do not close this window"
|
200 |
msgstr ""
|
201 |
|
202 |
+
#: lite/admin/class-email-subscribers-admin.php:286
|
203 |
+
#: lite/admin/partials/dashboard.php:100
|
204 |
msgid "Dashboard"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: lite/admin/class-email-subscribers-admin.php:291
|
208 |
+
#: lite/admin/partials/dashboard.php:107
|
209 |
#: lite/includes/classes/class-es-contacts-table.php:219
|
210 |
#: lite/includes/pro-features.php:153
|
211 |
#: starter/starter-class-email-subscribers.php:624
|
212 |
msgid "Audience"
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: lite/admin/class-email-subscribers-admin.php:295
|
216 |
+
#: lite/includes/classes/class-es-forms-table.php:459
|
217 |
#: lite/includes/classes/class-es-lists-table.php:34
|
218 |
#: lite/includes/classes/class-es-lists-table.php:88
|
219 |
msgid "Lists"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: lite/admin/class-email-subscribers-admin.php:301
|
223 |
#: lite/includes/classes/class-es-form-widget.php:70
|
224 |
#: lite/includes/classes/class-es-forms-table.php:39
|
225 |
#: lite/includes/classes/class-es-forms-table.php:40
|
229 |
msgid "Forms"
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: lite/admin/class-email-subscribers-admin.php:307
|
233 |
#: lite/includes/classes/class-es-campaigns-table.php:109
|
234 |
#: lite/includes/classes/class-es-newsletters.php:245
|
235 |
#: lite/includes/classes/class-es-newsletters.php:251
|
239 |
msgid "Campaigns"
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: lite/admin/class-email-subscribers-admin.php:311
|
243 |
msgid "Post Notifications"
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: lite/admin/class-email-subscribers-admin.php:313
|
247 |
#: lite/includes/classes/class-es-campaigns-table.php:356
|
248 |
#: lite/includes/classes/class-es-newsletters.php:260
|
249 |
#: lite/includes/classes/class-es-reports-table.php:149
|
250 |
#: lite/includes/classes/class-es-templates-table.php:282
|
251 |
#: lite/includes/pro-features.php:1072
|
252 |
+
#: lite/public/class-email-subscribers-public.php:472
|
253 |
#: pro/classes/class-es-pro-reports-data.php:142
|
254 |
#: pro/classes/class-es-pro-reports-data.php:193
|
255 |
msgid "Broadcast"
|
256 |
msgstr ""
|
257 |
|
258 |
+
#: lite/admin/class-email-subscribers-admin.php:314
|
259 |
+
#: lite/includes/classes/class-es-newsletters.php:427
|
260 |
#: lite/includes/classes/class-es-reports-table.php:472
|
261 |
msgid "Template Preview"
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: lite/admin/class-email-subscribers-admin.php:321
|
265 |
#: lite/includes/pro-features.php:158
|
266 |
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
|
267 |
#: lite/includes/workflows/class-es-workflows-table.php:53
|
270 |
msgid "Workflows"
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: lite/admin/class-email-subscribers-admin.php:330
|
274 |
+
#: lite/admin/partials/dashboard.php:238
|
275 |
#: lite/includes/classes/class-es-campaign-report.php:17
|
276 |
#: lite/includes/classes/class-es-reports-table.php:17
|
277 |
#: lite/includes/classes/class-es-reports-table.php:56
|
284 |
msgid "Reports"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: lite/admin/class-email-subscribers-admin.php:334
|
288 |
+
#: lite/admin/partials/dashboard.php:246
|
289 |
#: lite/includes/classes/class-es-admin-settings.php:119
|
290 |
msgid "Settings"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: lite/admin/class-email-subscribers-admin.php:339
|
294 |
msgid "Go To Icegram"
|
295 |
msgstr ""
|
296 |
|
297 |
#. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
|
298 |
+
#: lite/admin/class-email-subscribers-admin.php:884
|
299 |
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>"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: lite/admin/class-email-subscribers-admin.php:912
|
303 |
msgid "Something went wrong"
|
304 |
msgstr ""
|
305 |
|
393 |
#: lite/admin/class-ig-es-campaign-rules.php:593
|
394 |
#: lite/includes/classes/class-es-admin-settings.php:199
|
395 |
#: lite/includes/classes/class-es-campaign-report.php:179
|
396 |
+
#: lite/includes/classes/class-es-contacts-table.php:780
|
397 |
+
#: lite/includes/classes/class-es-contacts-table.php:1042
|
398 |
#: lite/includes/classes/class-es-export-subscribers.php:339
|
399 |
+
#: lite/includes/classes/class-es-forms-table.php:393
|
400 |
#: lite/includes/classes/class-es-import-subscribers.php:557
|
401 |
#: lite/includes/classes/class-es-import-subscribers.php:648
|
402 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1040
|
403 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1175
|
404 |
#: lite/includes/pro-features.php:901
|
405 |
#: lite/includes/pro-features.php:1432
|
406 |
#: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
|
546 |
msgid "Unable to create %1$s and %2$s list."
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: lite/admin/class-ig-es-onboarding.php:606
|
550 |
#: lite/includes/workflows/db/class-es-db-workflows.php:370
|
551 |
#: lite/includes/workflows/triggers/class-es-trigger-user-registered.php:30
|
552 |
msgid "User Registered"
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: lite/admin/class-ig-es-onboarding.php:721
|
556 |
#: lite/includes/classes/class-es-forms-table.php:293
|
557 |
msgid "Please accept terms & condition"
|
558 |
msgstr ""
|
559 |
|
560 |
#. translators: Active sidebar name.
|
561 |
+
#: lite/admin/class-ig-es-onboarding.php:779
|
562 |
msgid "Adding the form to \"%s\" sidebar, so you can show it on the site"
|
563 |
msgstr ""
|
564 |
|
565 |
#. translators: Active sidebar name.
|
566 |
+
#: lite/admin/class-ig-es-onboarding.php:782
|
567 |
msgid "Unable to add form widget to \"%s\" sidebar. Widget may already exists."
|
568 |
msgstr ""
|
569 |
|
570 |
#. translators: Active sidebar name.
|
571 |
+
#: lite/admin/class-ig-es-onboarding.php:787
|
572 |
msgid "Unable to add form widget to \"%s\" sidebar. No subscription form found."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: lite/admin/class-ig-es-onboarding.php:839
|
576 |
+
#: lite/admin/class-ig-es-onboarding.php:840
|
577 |
msgid "Welcome To Email Subscribers"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: lite/admin/class-ig-es-onboarding.php:1012
|
581 |
msgid "Seems like your server is not setup correctly to send emails. Please confirm if you're getting any other emails from within WordPress"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: lite/admin/class-ig-es-onboarding.php:1138
|
585 |
msgid "New Post Published - {{POSTTITLE}}"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: lite/admin/partials/dashboard.php:49
|
589 |
msgid "Add a Subscription Form"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: lite/admin/partials/dashboard.php:50
|
593 |
msgid "Grow subscribers. Add a newsletter signup form to your site."
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: lite/admin/partials/dashboard.php:51
|
597 |
+
#: lite/admin/partials/dashboard.php:116
|
598 |
msgid "Create"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: lite/admin/partials/dashboard.php:57
|
602 |
#: lite/includes/classes/class-es-contacts-table.php:138
|
603 |
#: lite/includes/classes/class-es-import-subscribers.php:390
|
604 |
msgid "Import Contacts"
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: lite/admin/partials/dashboard.php:58
|
608 |
msgid "Coming from another email marketing system? Upload a CSV file to import subscribers."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: lite/admin/partials/dashboard.php:59
|
612 |
#: lite/includes/classes/class-es-import-subscribers.php:353
|
613 |
msgid "Import"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: lite/admin/partials/dashboard.php:65
|
617 |
msgid "Configure Email Sending"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: lite/admin/partials/dashboard.php:66
|
621 |
msgid " Essential for high email delivery and reaching the inbox. SMTP, email service providers... set it all up."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: lite/admin/partials/dashboard.php:67
|
625 |
msgid "Setup"
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: lite/admin/partials/dashboard.php:73
|
629 |
msgid "Send a Newsletter"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: lite/admin/partials/dashboard.php:74
|
633 |
msgid "Broadcast a newsletter campaign to all or selected subscribers."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: lite/admin/partials/dashboard.php:75
|
637 |
msgid "Begin"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: lite/admin/partials/dashboard.php:81
|
641 |
msgid "Create an Auto-responder Sequence"
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: lite/admin/partials/dashboard.php:82
|
645 |
msgid "Welcome emails, drip campaigns... Send automatic emails at regular intervals to engage readers."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: lite/admin/partials/dashboard.php:83
|
649 |
msgid "Start"
|
650 |
msgstr ""
|
651 |
|
652 |
+
#: lite/admin/partials/dashboard.php:127
|
653 |
msgid "New Broadcast"
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: lite/admin/partials/dashboard.php:129
|
657 |
msgid "New Post Notification"
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: lite/admin/partials/dashboard.php:132
|
661 |
+
#: lite/admin/partials/dashboard.php:134
|
662 |
#: pro/pro-class-sequences.php:48
|
663 |
msgid "New Sequence"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: lite/admin/partials/dashboard.php:135
|
667 |
msgid "Premium"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: lite/admin/partials/dashboard.php:140
|
671 |
msgid "New Template"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: lite/admin/partials/dashboard.php:144
|
675 |
msgid "New Form"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: lite/admin/partials/dashboard.php:145
|
679 |
msgid "New List"
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: lite/admin/partials/dashboard.php:146
|
683 |
msgid "New Contact"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: lite/admin/partials/dashboard.php:161
|
687 |
msgid " active contacts"
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: lite/admin/partials/dashboard.php:169
|
691 |
#: lite/includes/classes/class-es-contacts-table.php:325
|
692 |
msgid "Last 60 days"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: lite/admin/partials/dashboard.php:177
|
696 |
#: lite/includes/pro-features.php:1184
|
697 |
#: lite/includes/pro-features.php:1222
|
698 |
#: pro/classes/class-es-pro-reports-data.php:416
|
702 |
msgid "Opens"
|
703 |
msgstr ""
|
704 |
|
705 |
+
#: lite/admin/partials/dashboard.php:185
|
706 |
msgid " Avg Open Rate"
|
707 |
msgstr ""
|
708 |
|
709 |
+
#: lite/admin/partials/dashboard.php:193
|
710 |
msgid "Messages Sent"
|
711 |
msgstr ""
|
712 |
|
713 |
+
#: lite/admin/partials/dashboard.php:201
|
714 |
#: lite/includes/pro-features.php:1120
|
715 |
#: pro/classes/class-es-pro-reports-data.php:379
|
716 |
msgid "Avg Click Rate"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: lite/admin/partials/dashboard.php:236
|
720 |
msgid "Jump to: "
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: lite/admin/partials/dashboard.php:242
|
724 |
#: lite/includes/class-email-subscribers-activator.php:43
|
725 |
#: lite/includes/class-email-subscribers-activator.php:44
|
726 |
#: lite/includes/class-email-subscribers-activator.php:49
|
795 |
#: lite/includes/classes/class-es-campaign-report.php:180
|
796 |
#: lite/includes/classes/class-es-campaigns-table.php:619
|
797 |
#: lite/includes/classes/class-es-export-subscribers.php:341
|
798 |
+
#: lite/includes/classes/class-es-import-subscribers.php:657
|
799 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1178
|
800 |
#: lite/includes/classes/class-es-reports-table.php:230
|
801 |
#: lite/includes/workflows/class-es-workflows-table.php:311
|
802 |
#: pro/classes/class-es-pro-sequence-report.php:297
|
1075 |
msgstr ""
|
1076 |
|
1077 |
#: lite/includes/class-email-subscribers-activator.php:55
|
1078 |
+
#: lite/includes/class-email-subscribers.php:1487
|
1079 |
#: lite/includes/classes/class-es-form-widget.php:11
|
1080 |
#: lite/includes/classes/class-es-old-widget.php:13
|
1081 |
#: lite/includes/classes/class-es-old-widget.php:15
|
1111 |
msgstr ""
|
1112 |
|
1113 |
#. translators: 1: Error message 2: File name 3: Line number
|
1114 |
+
#: lite/includes/class-email-subscribers.php:1273
|
1115 |
msgid "%1$s in %2$s on line %3$s"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: lite/includes/class-email-subscribers.php:1500
|
1119 |
msgid "Icegram WC"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
#. translators: %1$s - constant that was used
|
1123 |
+
#: lite/includes/class-email-subscribers.php:1909
|
1124 |
msgid "Value was set using constant %1$s"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
#: lite/includes/class-es-common.php:187
|
1128 |
#: lite/includes/classes/class-es-contacts-table.php:332
|
1129 |
+
#: lite/includes/classes/class-es-import-subscribers.php:822
|
1130 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1185
|
1131 |
+
#: lite/includes/classes/class-es-lists-table.php:572
|
1132 |
msgid "Subscribed"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
#: lite/includes/class-es-common.php:188
|
1136 |
#: lite/includes/classes/class-es-contacts-table.php:348
|
1137 |
+
#: lite/includes/classes/class-es-import-subscribers.php:824
|
1138 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1187
|
1139 |
+
#: lite/includes/classes/class-es-lists-table.php:574
|
1140 |
msgid "Unconfirmed"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
#: lite/includes/class-es-common.php:189
|
1144 |
#: lite/includes/classes/class-es-contacts-table.php:340
|
1145 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1186
|
1146 |
+
#: lite/includes/classes/class-es-lists-table.php:573
|
1147 |
msgid "Unsubscribed"
|
1148 |
msgstr ""
|
1149 |
|
1271 |
|
1272 |
#: lite/includes/class-es-common.php:1677
|
1273 |
#: lite/includes/classes/class-es-campaigns-table.php:679
|
1274 |
+
#: lite/includes/classes/class-es-contacts-table.php:1109
|
1275 |
msgid "All Statuses"
|
1276 |
msgstr ""
|
1277 |
|
1326 |
#: lite/includes/classes/class-es-admin-settings.php:190
|
1327 |
#: lite/includes/classes/class-es-admin-settings.php:193
|
1328 |
#: lite/includes/classes/class-es-campaigns-table.php:614
|
1329 |
+
#: lite/includes/classes/class-es-contacts-table.php:1041
|
1330 |
+
#: lite/includes/classes/class-es-forms-table.php:410
|
1331 |
+
#: lite/includes/classes/class-es-forms-table.php:900
|
1332 |
+
#: lite/includes/classes/class-es-lists-table.php:570
|
1333 |
#: lite/public/partials/class-es-shortcode.php:152
|
1334 |
msgid "Name"
|
1335 |
msgstr ""
|
1448 |
#: lite/includes/classes/class-es-admin-settings.php:386
|
1449 |
#: lite/includes/classes/class-es-admin-settings.php:419
|
1450 |
#: lite/includes/classes/class-es-admin-settings.php:456
|
1451 |
+
#: lite/includes/classes/class-es-newsletters.php:353
|
1452 |
#: lite/includes/classes/class-es-reports-table.php:228
|
1453 |
#: pro/classes/class-es-pro-sequence-report.php:295
|
1454 |
msgid "Subject"
|
1459 |
#: lite/includes/classes/class-es-admin-settings.php:427
|
1460 |
#: lite/includes/classes/class-es-admin-settings.php:467
|
1461 |
#: lite/includes/classes/class-es-newsletters.php:266
|
1462 |
+
#: pro/pro-class-sequences.php:405
|
1463 |
msgid "Content"
|
1464 |
msgstr ""
|
1465 |
|
1757 |
#. translators: 1: Page 2: Edit action 3: List id 4: List nonce
|
1758 |
#: lite/includes/classes/class-es-campaigns-table.php:432
|
1759 |
#: lite/includes/classes/class-es-campaigns-table.php:456
|
1760 |
+
#: lite/includes/classes/class-es-lists-table.php:548
|
1761 |
msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
1762 |
msgstr ""
|
1763 |
|
1764 |
#. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
|
1765 |
#. translators: 1: Page 2: Delete action 3: List id 4: List nonce
|
1766 |
#: lite/includes/classes/class-es-campaigns-table.php:481
|
1767 |
+
#: lite/includes/classes/class-es-lists-table.php:550
|
1768 |
msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
1769 |
msgstr ""
|
1770 |
|
1775 |
msgstr ""
|
1776 |
|
1777 |
#: lite/includes/classes/class-es-campaigns-table.php:616
|
1778 |
+
#: lite/includes/classes/class-es-contacts-table.php:831
|
1779 |
+
#: lite/includes/classes/class-es-contacts-table.php:1043
|
1780 |
msgid "List(s)"
|
1781 |
msgstr ""
|
1782 |
|
1785 |
msgstr ""
|
1786 |
|
1787 |
#: lite/includes/classes/class-es-campaigns-table.php:618
|
1788 |
+
#: lite/includes/classes/class-es-contacts-table.php:1044
|
1789 |
+
#: lite/includes/classes/class-es-forms-table.php:903
|
1790 |
+
#: lite/includes/classes/class-es-lists-table.php:576
|
1791 |
#: lite/includes/workflows/class-es-workflows-table.php:310
|
1792 |
msgid "Created"
|
1793 |
msgstr ""
|
1887 |
|
1888 |
#: lite/includes/classes/class-es-contacts-table.php:526
|
1889 |
#: lite/includes/classes/class-es-export-subscribers.php:36
|
1890 |
+
#: lite/includes/classes/class-es-lists-table.php:706
|
1891 |
msgid "Please select list"
|
1892 |
msgstr ""
|
1893 |
|
1904 |
msgid "Audience "
|
1905 |
msgstr ""
|
1906 |
|
1907 |
+
#: lite/includes/classes/class-es-contacts-table.php:727
|
1908 |
msgid "No list found"
|
1909 |
msgstr ""
|
1910 |
|
1911 |
+
#: lite/includes/classes/class-es-contacts-table.php:738
|
1912 |
msgid "First name"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
+
#: lite/includes/classes/class-es-contacts-table.php:750
|
1916 |
msgid "Enter first name"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
+
#: lite/includes/classes/class-es-contacts-table.php:760
|
1920 |
msgid "Last name"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
+
#: lite/includes/classes/class-es-contacts-table.php:771
|
1924 |
msgid "Enter last name"
|
1925 |
msgstr ""
|
1926 |
|
1927 |
+
#: lite/includes/classes/class-es-contacts-table.php:792
|
1928 |
#: lite/includes/pro-features.php:907
|
1929 |
#: pro/pro-class-email-subscribers.php:822
|
1930 |
msgid "Enter email"
|
1931 |
msgstr ""
|
1932 |
|
1933 |
+
#: lite/includes/classes/class-es-contacts-table.php:802
|
1934 |
msgid "Send welcome email?"
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: lite/includes/classes/class-es-contacts-table.php:848
|
1938 |
msgid "Save Contact"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: lite/includes/classes/class-es-contacts-table.php:848
|
1942 |
+
#: lite/includes/classes/class-es-forms-table.php:560
|
1943 |
+
#: lite/includes/classes/class-es-lists-table.php:323
|
1944 |
#: lite/includes/classes/class-es-post-notifications.php:429
|
1945 |
msgid "Save Changes"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
+
#: lite/includes/classes/class-es-contacts-table.php:855
|
1949 |
+
#: lite/includes/classes/class-es-forms-table.php:564
|
1950 |
+
#: lite/includes/classes/class-es-lists-table.php:327
|
1951 |
#: lite/includes/classes/class-es-post-notifications.php:432
|
1952 |
msgid "Cancel"
|
1953 |
msgstr ""
|
1954 |
|
1955 |
+
#: lite/includes/classes/class-es-contacts-table.php:871
|
1956 |
msgid "No contacts avaliable."
|
1957 |
msgstr ""
|
1958 |
|
1959 |
#. translators: 1: Page 2: Edit action 3: Contact id 4: Wp nonce
|
1960 |
+
#: lite/includes/classes/class-es-contacts-table.php:1021
|
1961 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
#. translators: 1: Page 2: Delete action 3: Contact id 4: Wp nonce
|
1965 |
+
#: lite/includes/classes/class-es-contacts-table.php:1023
|
1966 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
1967 |
msgstr ""
|
1968 |
|
1969 |
#. translators: 1: Page 2: Resend action 3: Contact id 4: Wp nonce
|
1970 |
+
#: lite/includes/classes/class-es-contacts-table.php:1026
|
1971 |
msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Resend Confirmation<a>"
|
1972 |
msgstr ""
|
1973 |
|
1974 |
+
#: lite/includes/classes/class-es-contacts-table.php:1077
|
1975 |
+
#: lite/includes/classes/class-es-forms-table.php:931
|
1976 |
+
#: lite/includes/classes/class-es-lists-table.php:605
|
1977 |
#: lite/includes/classes/class-es-reports-table.php:211
|
1978 |
#: lite/includes/classes/class-es-reports-table.php:296
|
1979 |
#: lite/includes/workflows/admin/views/action.php:29
|
1983 |
msgid "Delete"
|
1984 |
msgstr ""
|
1985 |
|
1986 |
+
#: lite/includes/classes/class-es-contacts-table.php:1078
|
1987 |
#: pro/workflows/actions/class-es-action-move-to-list.php:29
|
1988 |
msgid "Move to list"
|
1989 |
msgstr ""
|
1990 |
|
1991 |
+
#: lite/includes/classes/class-es-contacts-table.php:1079
|
1992 |
#: lite/includes/workflows/actions/class-es-action-add-to-list.php:29
|
1993 |
msgid "Add to list"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: lite/includes/classes/class-es-contacts-table.php:1080
|
1997 |
msgid "Change status"
|
1998 |
msgstr ""
|
1999 |
|
2000 |
+
#: lite/includes/classes/class-es-contacts-table.php:1101
|
2001 |
msgid "Search Contacts"
|
2002 |
msgstr ""
|
2003 |
|
2004 |
+
#: lite/includes/classes/class-es-contacts-table.php:1118
|
2005 |
msgid "All Lists"
|
2006 |
msgstr ""
|
2007 |
|
2008 |
+
#: lite/includes/classes/class-es-contacts-table.php:1231
|
2009 |
+
#: lite/includes/classes/class-es-contacts-table.php:1294
|
2010 |
msgid "Contact(s) deleted successfully!"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
+
#: lite/includes/classes/class-es-contacts-table.php:1256
|
2014 |
msgid "Confirmation email sent successfully!"
|
2015 |
msgstr ""
|
2016 |
|
2017 |
+
#: lite/includes/classes/class-es-contacts-table.php:1282
|
2018 |
msgid "Please select subscribers to update."
|
2019 |
msgstr ""
|
2020 |
|
2021 |
+
#: lite/includes/classes/class-es-contacts-table.php:1305
|
2022 |
msgid "Please select status."
|
2023 |
msgstr ""
|
2024 |
|
2025 |
+
#: lite/includes/classes/class-es-contacts-table.php:1315
|
2026 |
msgid "Contact(s) status changed successfully!"
|
2027 |
msgstr ""
|
2028 |
|
2029 |
+
#: lite/includes/classes/class-es-contacts-table.php:1326
|
2030 |
+
#: lite/includes/classes/class-es-contacts-table.php:1347
|
2031 |
#: lite/includes/classes/class-es-post-notifications.php:51
|
2032 |
msgid "Please select list."
|
2033 |
msgstr ""
|
2034 |
|
2035 |
+
#: lite/includes/classes/class-es-contacts-table.php:1335
|
2036 |
msgid "Contact(s) moved to list successfully!"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
+
#: lite/includes/classes/class-es-contacts-table.php:1356
|
2040 |
msgid "Contact(s) added to list successfully!"
|
2041 |
msgstr ""
|
2042 |
|
2119 |
msgstr ""
|
2120 |
|
2121 |
#: lite/includes/classes/class-es-export-subscribers.php:83
|
2122 |
+
#: lite/includes/classes/class-es-lists-table.php:577
|
2123 |
msgid "Export"
|
2124 |
msgstr ""
|
2125 |
|
2126 |
#: lite/includes/classes/class-es-export-subscribers.php:97
|
2127 |
+
#: lite/includes/classes/class-es-lists-table.php:575
|
2128 |
msgid "All contacts"
|
2129 |
msgstr ""
|
2130 |
|
2147 |
#: lite/includes/classes/class-es-export-subscribers.php:337
|
2148 |
#: lite/includes/classes/class-es-import-subscribers.php:558
|
2149 |
#: lite/includes/classes/class-es-import-subscribers.php:649
|
2150 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1032
|
2151 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1176
|
2152 |
msgid "First Name"
|
2153 |
msgstr ""
|
2154 |
|
2155 |
#: lite/includes/classes/class-es-export-subscribers.php:338
|
2156 |
#: lite/includes/classes/class-es-import-subscribers.php:559
|
2157 |
#: lite/includes/classes/class-es-import-subscribers.php:650
|
2158 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1037
|
2159 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1177
|
2160 |
msgid "Last Name"
|
2161 |
msgstr ""
|
2162 |
|
2221 |
msgid "Forms "
|
2222 |
msgstr ""
|
2223 |
|
2224 |
+
#: lite/includes/classes/class-es-forms-table.php:323
|
2225 |
msgid " New Form"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
+
#: lite/includes/classes/class-es-forms-table.php:325
|
2229 |
msgid " Edit Form"
|
2230 |
msgstr ""
|
2231 |
|
2232 |
+
#: lite/includes/classes/class-es-forms-table.php:334
|
2233 |
+
#: lite/includes/classes/class-es-newsletters.php:336
|
2234 |
+
#: pro/pro-class-sequences.php:93
|
2235 |
+
msgid "Documentation "
|
2236 |
msgstr ""
|
2237 |
|
2238 |
+
#: lite/includes/classes/class-es-forms-table.php:351
|
2239 |
msgid "Form name"
|
2240 |
msgstr ""
|
2241 |
|
2242 |
+
#: lite/includes/classes/class-es-forms-table.php:357
|
2243 |
msgid "Enter form name"
|
2244 |
msgstr ""
|
2245 |
|
2246 |
+
#: lite/includes/classes/class-es-forms-table.php:365
|
2247 |
msgid "Description"
|
2248 |
msgstr ""
|
2249 |
|
2250 |
+
#: lite/includes/classes/class-es-forms-table.php:371
|
2251 |
msgid "Enter description"
|
2252 |
msgstr ""
|
2253 |
|
2254 |
+
#: lite/includes/classes/class-es-forms-table.php:379
|
2255 |
msgid "Form fields"
|
2256 |
msgstr ""
|
2257 |
|
2258 |
+
#: lite/includes/classes/class-es-forms-table.php:386
|
2259 |
msgid "Field"
|
2260 |
msgstr ""
|
2261 |
|
2262 |
+
#: lite/includes/classes/class-es-forms-table.php:387
|
2263 |
msgid "Show?"
|
2264 |
msgstr ""
|
2265 |
|
2266 |
+
#: lite/includes/classes/class-es-forms-table.php:388
|
2267 |
msgid "Required?"
|
2268 |
msgstr ""
|
2269 |
|
2270 |
+
#: lite/includes/classes/class-es-forms-table.php:389
|
2271 |
msgid "Label"
|
2272 |
msgstr ""
|
2273 |
|
2274 |
+
#: lite/includes/classes/class-es-forms-table.php:390
|
2275 |
msgid "Placeholder"
|
2276 |
msgstr ""
|
2277 |
|
2278 |
+
#: lite/includes/classes/class-es-forms-table.php:446
|
2279 |
msgid "Button"
|
2280 |
msgstr ""
|
2281 |
|
2282 |
+
#: lite/includes/classes/class-es-forms-table.php:460
|
2283 |
msgid "Contacts will be added into selected list(s)"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
#. translators: %s: Create list page url
|
2287 |
+
#: lite/includes/classes/class-es-forms-table.php:477
|
2288 |
msgid "List not found. Please %s"
|
2289 |
msgstr ""
|
2290 |
|
2291 |
#. translators: %s: Create list page url
|
2292 |
+
#: lite/includes/classes/class-es-forms-table.php:477
|
2293 |
msgid "create your first list"
|
2294 |
msgstr ""
|
2295 |
|
2296 |
+
#: lite/includes/classes/class-es-forms-table.php:488
|
2297 |
msgid "Allow contact to choose list(s)"
|
2298 |
msgstr ""
|
2299 |
|
2300 |
+
#: lite/includes/classes/class-es-forms-table.php:489
|
2301 |
msgid "Allow contacts to choose list(s) in which they want to subscribe."
|
2302 |
msgstr ""
|
2303 |
|
2304 |
+
#: lite/includes/classes/class-es-forms-table.php:522
|
2305 |
msgid "Show GDPR consent checkbox"
|
2306 |
msgstr ""
|
2307 |
|
2308 |
+
#: lite/includes/classes/class-es-forms-table.php:523
|
2309 |
msgid "Show consent checkbox to get the consent of a contact before adding them to list(s)"
|
2310 |
msgstr ""
|
2311 |
|
2312 |
+
#: lite/includes/classes/class-es-forms-table.php:550
|
2313 |
msgid "Consent text will show up at subscription form next to consent checkbox."
|
2314 |
msgstr ""
|
2315 |
|
2316 |
+
#: lite/includes/classes/class-es-forms-table.php:560
|
2317 |
msgid "Save Form"
|
2318 |
msgstr ""
|
2319 |
|
2320 |
#. translators: 1: Page 2: Edit Action 3: Form id 4. WP Nonce
|
2321 |
+
#: lite/includes/classes/class-es-forms-table.php:883
|
2322 |
msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
#. translators: 1: Page 2: Delete Action 3: Form id 4. WP Nonce
|
2326 |
+
#: lite/includes/classes/class-es-forms-table.php:885
|
2327 |
msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
|
2328 |
msgstr ""
|
2329 |
|
2330 |
+
#: lite/includes/classes/class-es-forms-table.php:901
|
2331 |
msgid "Shortcode"
|
2332 |
msgstr ""
|
2333 |
|
2334 |
+
#: lite/includes/classes/class-es-forms-table.php:902
|
2335 |
msgid "Subscribers"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
+
#: lite/includes/classes/class-es-forms-table.php:943
|
2339 |
msgid "You do not have permission to delete this form."
|
2340 |
msgstr ""
|
2341 |
|
2342 |
+
#: lite/includes/classes/class-es-forms-table.php:950
|
2343 |
msgid "Form deleted successfully!"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
+
#: lite/includes/classes/class-es-forms-table.php:965
|
2347 |
msgid "Form(s) deleted successfully!"
|
2348 |
msgstr ""
|
2349 |
|
2350 |
+
#: lite/includes/classes/class-es-forms-table.php:968
|
2351 |
msgid "Please select form(s) to delete."
|
2352 |
msgstr ""
|
2353 |
|
2354 |
+
#: lite/includes/classes/class-es-forms-table.php:979
|
2355 |
+
#: lite/includes/classes/class-es-lists-table.php:717
|
2356 |
msgid "Enable"
|
2357 |
msgstr ""
|
2358 |
|
2359 |
+
#: lite/includes/classes/class-es-forms-table.php:980
|
2360 |
+
#: lite/includes/classes/class-es-lists-table.php:718
|
2361 |
msgid "Disable"
|
2362 |
msgstr ""
|
2363 |
|
2364 |
+
#: lite/includes/classes/class-es-forms-table.php:996
|
2365 |
msgid "Search Forms"
|
2366 |
msgstr ""
|
2367 |
|
2368 |
+
#: lite/includes/classes/class-es-forms-table.php:1007
|
2369 |
msgid "No Forms avaliable."
|
2370 |
msgstr ""
|
2371 |
|
2592 |
msgid "(Last Name) (First Name)"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
+
#: lite/includes/classes/class-es-import-subscribers.php:653
|
2596 |
+
msgid "Subscribed at"
|
2597 |
+
msgstr ""
|
2598 |
+
|
2599 |
+
#: lite/includes/classes/class-es-import-subscribers.php:656
|
2600 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1179
|
2601 |
msgid "List Name"
|
2602 |
msgstr ""
|
2603 |
|
2604 |
+
#: lite/includes/classes/class-es-import-subscribers.php:665
|
2605 |
msgid "Select columns for mapping"
|
2606 |
msgstr ""
|
2607 |
|
2608 |
+
#: lite/includes/classes/class-es-import-subscribers.php:668
|
2609 |
msgid "Define which column represents which field"
|
2610 |
msgstr ""
|
2611 |
|
2612 |
+
#: lite/includes/classes/class-es-import-subscribers.php:685
|
2613 |
msgid "Ignore column"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
#. translators: %s: Hidden contacts count
|
2617 |
+
#: lite/includes/classes/class-es-import-subscribers.php:724
|
2618 |
msgid "%s contacts are hidden"
|
2619 |
msgstr ""
|
2620 |
|
2621 |
+
#: lite/includes/classes/class-es-import-subscribers.php:791
|
2622 |
msgid "Email address is invalid."
|
2623 |
msgstr ""
|
2624 |
|
2625 |
+
#: lite/includes/classes/class-es-import-subscribers.php:792
|
2626 |
msgid "Email address is empty."
|
2627 |
msgstr ""
|
2628 |
|
2629 |
+
#: lite/includes/classes/class-es-import-subscribers.php:793
|
2630 |
msgid "Duplicate email in the CSV file. Only the first record imported."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
+
#: lite/includes/classes/class-es-import-subscribers.php:823
|
2634 |
msgid "Unubscribed"
|
2635 |
msgstr ""
|
2636 |
|
2637 |
+
#: lite/includes/classes/class-es-import-subscribers.php:825
|
2638 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1188
|
2639 |
msgid "Hard Bounced"
|
2640 |
msgstr ""
|
2641 |
|
2642 |
#. translators: 1. Total imported contacts 2. Total contacts
|
2643 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1022
|
2644 |
msgid "%1$s of %2$s contacts imported"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1026
|
2648 |
msgid "The following contacts were skipped"
|
2649 |
msgstr ""
|
2650 |
|
2651 |
+
#: lite/includes/classes/class-es-import-subscribers.php:1041
|
2652 |
msgid "Reason"
|
2653 |
msgstr ""
|
2654 |
|
2665 |
msgstr ""
|
2666 |
|
2667 |
#: lite/includes/classes/class-es-lists-table.php:138
|
2668 |
+
#: lite/includes/classes/class-es-lists-table.php:666
|
2669 |
msgid "You do not have permission to edit list"
|
2670 |
msgstr ""
|
2671 |
|
2682 |
msgstr ""
|
2683 |
|
2684 |
#: lite/includes/classes/class-es-lists-table.php:234
|
2685 |
+
#: lite/includes/classes/class-es-lists-table.php:670
|
2686 |
msgid "List updated successfully!"
|
2687 |
msgstr ""
|
2688 |
|
2706 |
msgid "Enter list name"
|
2707 |
msgstr ""
|
2708 |
|
2709 |
+
#: lite/includes/classes/class-es-lists-table.php:323
|
2710 |
msgid "Save List"
|
2711 |
msgstr ""
|
2712 |
|
2714 |
#. translators: 1: Unsubscribed-Filter url 2: Count
|
2715 |
#. translators: 1: Unconfirmed-Filter url 2: Count
|
2716 |
#. translators: 1: All contacts flters 2: Count
|
2717 |
+
#: lite/includes/classes/class-es-lists-table.php:458
|
2718 |
+
#: lite/includes/classes/class-es-lists-table.php:469
|
2719 |
+
#: lite/includes/classes/class-es-lists-table.php:480
|
2720 |
+
#: lite/includes/classes/class-es-lists-table.php:491
|
2721 |
msgid "<a href=\"%1$s\" target=\"_blank\">%2$d</a>"
|
2722 |
msgstr ""
|
2723 |
|
2724 |
+
#: lite/includes/classes/class-es-lists-table.php:566
|
2725 |
+
msgid "Unique hash key that can be used to subscribe users to this list from external sites."
|
2726 |
+
msgstr ""
|
2727 |
+
|
2728 |
+
#: lite/includes/classes/class-es-lists-table.php:571
|
2729 |
+
msgid "Hash"
|
2730 |
+
msgstr ""
|
2731 |
+
|
2732 |
+
#: lite/includes/classes/class-es-lists-table.php:626
|
2733 |
msgid "Search lists"
|
2734 |
msgstr ""
|
2735 |
|
2736 |
+
#: lite/includes/classes/class-es-lists-table.php:681
|
2737 |
msgid "You do not have permission to delete list"
|
2738 |
msgstr ""
|
2739 |
|
2740 |
+
#: lite/includes/classes/class-es-lists-table.php:688
|
2741 |
msgid "List deleted successfully!"
|
2742 |
msgstr ""
|
2743 |
|
2744 |
+
#: lite/includes/classes/class-es-lists-table.php:703
|
2745 |
msgid "List(s) deleted successfully!"
|
2746 |
msgstr ""
|
2747 |
|
2748 |
+
#: lite/includes/classes/class-es-lists-table.php:730
|
2749 |
msgid "No lists avaliable."
|
2750 |
msgstr ""
|
2751 |
|
2771 |
msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
|
2772 |
msgstr ""
|
2773 |
|
2774 |
+
#. translators: 1. Unsubscribe link 2. Blog admin email 3. Subscriber email 4. Blog name
|
2775 |
+
#: lite/includes/classes/class-es-mailer.php:1746
|
2776 |
+
msgid "<%1$s>,<mailto:%2$s?subject=Unsubscribe %3$s from %4$s>"
|
2777 |
+
msgstr ""
|
2778 |
+
|
2779 |
#: lite/includes/classes/class-es-newsletters.php:94
|
2780 |
msgid "Sorry, you are not allowed to add/edit broadcast."
|
2781 |
msgstr ""
|
2822 |
msgid "Send"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
+
#: lite/includes/classes/class-es-newsletters.php:357
|
|
|
|
|
|
|
|
|
2826 |
msgid "From Name"
|
2827 |
msgstr ""
|
2828 |
|
2829 |
+
#: lite/includes/classes/class-es-newsletters.php:361
|
2830 |
msgid "From Email"
|
2831 |
msgstr ""
|
2832 |
|
2833 |
+
#: lite/includes/classes/class-es-newsletters.php:365
|
2834 |
msgid "Reply To"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
+
#: lite/includes/classes/class-es-newsletters.php:370
|
2838 |
msgid "Message"
|
2839 |
msgstr ""
|
2840 |
|
2841 |
+
#: lite/includes/classes/class-es-newsletters.php:388
|
2842 |
msgid "Design template"
|
2843 |
msgstr ""
|
2844 |
|
2845 |
+
#: lite/includes/classes/class-es-newsletters.php:404
|
2846 |
msgid "Total recipients:"
|
2847 |
msgstr ""
|
2848 |
|
2849 |
+
#: lite/includes/classes/class-es-newsletters.php:414
|
2850 |
+
#: lite/includes/classes/class-es-newsletters.php:442
|
2851 |
#: lite/includes/classes/class-es-reports-table.php:212
|
2852 |
#: pro/classes/class-es-pro-sequence-report.php:269
|
2853 |
msgid "Preview"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
+
#: lite/includes/classes/class-es-newsletters.php:417
|
2857 |
msgid "Browser"
|
2858 |
msgstr ""
|
2859 |
|
2860 |
+
#: lite/includes/classes/class-es-newsletters.php:428
|
2861 |
#: lite/includes/classes/class-es-reports-table.php:473
|
2862 |
msgid "There could be a slight variation on how your customer will view the email content."
|
2863 |
msgstr ""
|
2864 |
|
2865 |
+
#: lite/includes/classes/class-es-newsletters.php:432
|
2866 |
#: lite/includes/classes/class-es-reports-table.php:477
|
2867 |
#: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
|
2868 |
msgid "Close"
|
2869 |
msgstr ""
|
2870 |
|
2871 |
+
#: lite/includes/classes/class-es-newsletters.php:445
|
2872 |
msgid "Email sent successfully "
|
2873 |
msgstr ""
|
2874 |
|
2875 |
+
#: lite/includes/classes/class-es-newsletters.php:446
|
2876 |
msgid "Something went wrong. Please try again later"
|
2877 |
msgstr ""
|
2878 |
|
2879 |
+
#: lite/includes/classes/class-es-newsletters.php:463
|
2880 |
msgid "Email Content Preview"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: lite/includes/classes/class-es-newsletters.php:503
|
2884 |
msgid "Open tracking"
|
2885 |
msgstr ""
|
2886 |
|
2948 |
msgstr ""
|
2949 |
|
2950 |
#: lite/includes/classes/class-es-post-notifications.php:294
|
2951 |
+
#: pro/pro-class-sequences.php:79
|
2952 |
msgid "Campaigns "
|
2953 |
msgstr ""
|
2954 |
|
3004 |
msgstr ""
|
3005 |
|
3006 |
#: lite/includes/classes/class-es-reports-table.php:145
|
3007 |
+
#: lite/public/class-email-subscribers-public.php:475
|
3008 |
#: pro/classes/class-es-pro-reports-data.php:144
|
3009 |
#: pro/classes/class-es-pro-reports-data.php:189
|
3010 |
msgid "Post Notification"
|
4283 |
msgstr ""
|
4284 |
|
4285 |
#. translators: %s: Table name
|
4286 |
+
#: lite/includes/workflows/queue/class-es-workflow-queue.php:479
|
4287 |
#: pro/classes/abandoned-cart/class-ig-es-cart.php:784
|
4288 |
#: pro/classes/abandoned-cart/class-ig-es-guest.php:411
|
4289 |
msgid "Could not insert into '%1$s' table. '%1$s' may not be present in the database."
|
4320 |
msgid "Sorry, you are not allowed to access this page."
|
4321 |
msgstr ""
|
4322 |
|
4323 |
+
#: lite/public/class-email-subscribers-public.php:251
|
4324 |
msgid "You are already subscribed!"
|
4325 |
msgstr ""
|
4326 |
|
4327 |
+
#: lite/public/class-email-subscribers-public.php:253
|
4328 |
msgid "You are already unsubscribed!"
|
4329 |
msgstr ""
|
4330 |
|
4331 |
+
#: lite/public/class-email-subscribers-public.php:258
|
4332 |
msgid "Sorry, we couldn't find you. Please contact admin."
|
4333 |
msgstr ""
|
4334 |
|
4335 |
+
#: lite/public/class-email-subscribers-public.php:436
|
4336 |
#: starter/starter-class-email-subscribers.php:882
|
4337 |
msgid "is subscribed to our mailing list(s)."
|
4338 |
msgstr ""
|
4339 |
|
4340 |
+
#: lite/public/class-email-subscribers-public.php:444
|
4341 |
msgid "Unsubscribe from all list(s)"
|
4342 |
msgstr ""
|
4343 |
|
4344 |
+
#: lite/public/class-email-subscribers-public.php:445
|
4345 |
msgid "You will be unsubscribed from receiving all future emails sent from us."
|
4346 |
msgstr ""
|
4347 |
|
4348 |
+
#: lite/public/class-email-subscribers-public.php:451
|
4349 |
#: starter/starter-class-email-subscribers.php:906
|
4350 |
msgid "Unsubscribe"
|
4351 |
msgstr ""
|
4517 |
msgid "Please share the reason"
|
4518 |
msgstr ""
|
4519 |
|
4520 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:99
|
4521 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:319
|
4522 |
msgid "Access Key ID is empty."
|
4523 |
msgstr ""
|
4524 |
|
4525 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:109
|
4526 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:329
|
4527 |
msgid "Secret Access Key is empty."
|
4528 |
msgstr ""
|
4529 |
|
4530 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:119
|
4531 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:339
|
4532 |
msgid "Closest region is not set."
|
4533 |
msgstr ""
|
4534 |
|
4535 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:393
|
4536 |
msgid "US East (N. Virginia)"
|
4537 |
msgstr ""
|
4538 |
|
4539 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:394
|
4540 |
msgid "US East (Ohio)"
|
4541 |
msgstr ""
|
4542 |
|
4543 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:395
|
4544 |
msgid "US West (Oregon)"
|
4545 |
msgstr ""
|
4546 |
|
4547 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:396
|
4548 |
msgid "US AWS GovCloud"
|
4549 |
msgstr ""
|
4550 |
|
4551 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:397
|
4552 |
msgid "EU (Ireland)"
|
4553 |
msgstr ""
|
4554 |
|
4555 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:398
|
4556 |
msgid "EU (London)"
|
4557 |
msgstr ""
|
4558 |
|
4559 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:399
|
4560 |
msgid "EU (Frankfurt)"
|
4561 |
msgstr ""
|
4562 |
|
4563 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:400
|
4564 |
msgid "Asia Pacific (Mumbai)"
|
4565 |
msgstr ""
|
4566 |
|
4567 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:401
|
4568 |
msgid "Asia Pacific (Tokyo)"
|
4569 |
msgstr ""
|
4570 |
|
4571 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:402
|
4572 |
msgid "Asia Pacific (Seoul)"
|
4573 |
msgstr ""
|
4574 |
|
4575 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:403
|
4576 |
msgid "Asia Pacific (Singapore)"
|
4577 |
msgstr ""
|
4578 |
|
4579 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:404
|
4580 |
msgid "Asia Pacific (Sydney)"
|
4581 |
msgstr ""
|
4582 |
|
4583 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:405
|
4584 |
msgid "Canada (Central)"
|
4585 |
msgstr ""
|
4586 |
|
4587 |
+
#: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:406
|
4588 |
msgid "South America (São Paulo)"
|
4589 |
msgstr ""
|
4590 |
|
4591 |
+
#: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:623
|
4592 |
+
msgid "Encountered an error, but no description given"
|
4593 |
+
msgstr ""
|
4594 |
+
|
4595 |
+
#. translators: 1. Error type 2. Error code 3. Error message 4. Request Id
|
4596 |
+
#: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:629
|
4597 |
+
msgid "%1$s - %2$s <br/>%3$s <br/>Request Id: %4$s"
|
4598 |
+
msgstr ""
|
4599 |
+
|
4600 |
+
#. translators: %s: Error message.
|
4601 |
+
#: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:633
|
4602 |
+
msgid "Encountered an error: %s"
|
4603 |
+
msgstr ""
|
4604 |
+
|
4605 |
+
#: pro/mailers/class-es-mailgun-mailer.php:149
|
4606 |
msgid "Private API key is empty."
|
4607 |
msgstr ""
|
4608 |
|
4609 |
+
#: pro/mailers/class-es-mailgun-mailer.php:159
|
4610 |
msgid "Domain name is empty"
|
4611 |
msgstr ""
|
4612 |
|
4613 |
+
#: pro/mailers/class-es-mailgun-mailer.php:169
|
4614 |
#: pro/mailers/class-es-sparkpost-mailer.php:84
|
4615 |
msgid "Region is empty"
|
4616 |
msgstr ""
|
4617 |
|
4618 |
+
#: pro/mailers/class-es-mailgun-mailer.php:569
|
4619 |
+
#: pro/mailers/class-es-postmark-mailer.php:300
|
4620 |
+
#: pro/mailers/class-es-sendgrid-mailer.php:339
|
4621 |
+
#: pro/mailers/class-es-sendgrid-mailer.php:679
|
4622 |
#: pro/mailers/class-es-sparkpost-mailer.php:137
|
4623 |
msgid "An unknown error has occured. Please try again later."
|
4624 |
msgstr ""
|
4625 |
|
4626 |
+
#: pro/mailers/class-es-postmark-mailer.php:107
|
4627 |
msgid "API token is empty."
|
4628 |
msgstr ""
|
4629 |
|
4630 |
+
#: pro/mailers/class-es-sendgrid-mailer.php:107
|
4631 |
+
#: pro/mailers/class-es-sendgrid-mailer.php:288
|
4632 |
#: pro/mailers/class-es-sparkpost-mailer.php:74
|
4633 |
msgid "API key is empty."
|
4634 |
msgstr ""
|
4635 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4636 |
#: pro/partials/es-dashboard.php:52
|
4637 |
msgid "Sent on"
|
4638 |
msgstr ""
|
4653 |
msgid "Your cart could not be restored, it may have expired."
|
4654 |
msgstr ""
|
4655 |
|
4656 |
+
#: pro/pro-class-email-subscribers.php:368
|
4657 |
#: pro/pro-class-post-digest.php:25
|
4658 |
msgid "Sequence"
|
4659 |
msgstr ""
|
4660 |
|
4661 |
+
#: pro/pro-class-email-subscribers.php:486
|
4662 |
msgid "Please enter an email address."
|
4663 |
msgstr ""
|
4664 |
|
4665 |
+
#: pro/pro-class-email-subscribers.php:488
|
4666 |
msgid "Add Attachment"
|
4667 |
msgstr ""
|
4668 |
|
4669 |
#. translators: %s: Attachmen max file size.
|
4670 |
+
#: pro/pro-class-email-subscribers.php:490
|
4671 |
msgid "Please attach a file having size lower than %s."
|
4672 |
msgstr ""
|
4673 |
|
4674 |
+
#: pro/pro-class-email-subscribers.php:491
|
4675 |
msgid "Are you sure you want to delete this?"
|
4676 |
msgstr ""
|
4677 |
|
4792 |
msgid "Proceed"
|
4793 |
msgstr ""
|
4794 |
|
4795 |
+
#: pro/pro-class-email-subscribers.php:1850
|
4796 |
msgid "How to configure Mailgun to send emails in the Email Subscribers plugin?"
|
4797 |
msgstr ""
|
4798 |
|
4799 |
+
#: pro/pro-class-email-subscribers.php:1878
|
4800 |
msgid "How to configure SendGrid to send emails in the Email Subscribers plugin?"
|
4801 |
msgstr ""
|
4802 |
|
4803 |
+
#: pro/pro-class-email-subscribers.php:1907
|
4804 |
msgid "How to configure Sparkpost to send emails in the Email Subscribers plugin?"
|
4805 |
msgstr ""
|
4806 |
|
4807 |
+
#: pro/pro-class-email-subscribers.php:1934
|
4808 |
msgid "How to configure Amazon SES to send emails in the Email Subscribers plugin?"
|
4809 |
msgstr ""
|
4810 |
|
4811 |
+
#: pro/pro-class-email-subscribers.php:1961
|
4812 |
msgid "How to configure Postmark to send emails in the Email Subscribers plugin?"
|
4813 |
msgstr ""
|
4814 |
|
4892 |
msgid "Edit Sequence"
|
4893 |
msgstr ""
|
4894 |
|
4895 |
+
#: pro/pro-class-sequences.php:107
|
|
|
|
|
|
|
|
|
4896 |
msgid "Add Sequence name"
|
4897 |
msgstr ""
|
4898 |
|
4899 |
+
#: pro/pro-class-sequences.php:108
|
4900 |
+
#: pro/pro-class-sequences.php:334
|
4901 |
msgid "Save All"
|
4902 |
msgstr ""
|
4903 |
|
4904 |
+
#: pro/pro-class-sequences.php:129
|
4905 |
msgid "+ Add Email"
|
4906 |
msgstr ""
|
4907 |
|
4908 |
+
#: pro/pro-class-sequences.php:169
|
4909 |
+
#: pro/pro-class-sequences.php:241
|
4910 |
msgid "Sequence should have atleast one email"
|
4911 |
msgstr ""
|
4912 |
|
4913 |
+
#: pro/pro-class-sequences.php:213
|
4914 |
msgid "Sequence added successfully!"
|
4915 |
msgstr ""
|
4916 |
|
4917 |
+
#: pro/pro-class-sequences.php:217
|
4918 |
msgid "Sorry, you are not allowed to add sequence."
|
4919 |
msgstr ""
|
4920 |
|
4921 |
+
#: pro/pro-class-sequences.php:316
|
4922 |
msgid "Sequence updated successfully!"
|
4923 |
msgstr ""
|
4924 |
|
4925 |
+
#: pro/pro-class-sequences.php:320
|
4926 |
msgid "Sorry, you are not allowed to edit sequence."
|
4927 |
msgstr ""
|
4928 |
|
4929 |
+
#: pro/pro-class-sequences.php:358
|
4930 |
+
#: pro/pro-class-sequences.php:443
|
4931 |
msgid " day"
|
4932 |
msgstr ""
|
4933 |
|
4934 |
+
#: pro/pro-class-sequences.php:358
|
4935 |
+
#: pro/pro-class-sequences.php:443
|
4936 |
msgid " days"
|
4937 |
msgstr ""
|
4938 |
|
4939 |
+
#: pro/pro-class-sequences.php:363
|
4940 |
+
#: pro/pro-class-sequences.php:401
|
4941 |
msgid "Welcome"
|
4942 |
msgstr ""
|
4943 |
|
|
|
4944 |
#: pro/pro-class-sequences.php:366
|
4945 |
+
#: pro/pro-class-sequences.php:369
|
4946 |
msgid "Delete this email"
|
4947 |
msgstr ""
|
4948 |
|
4949 |
+
#: pro/pro-class-sequences.php:399
|
4950 |
msgid "Email Subject"
|
4951 |
msgstr ""
|
4952 |
|
4953 |
+
#: pro/pro-class-sequences.php:448
|
4954 |
msgid "When to send"
|
4955 |
msgstr ""
|
4956 |
|
4957 |
+
#: pro/pro-class-sequences.php:454
|
4958 |
msgid " after subscription"
|
4959 |
msgstr ""
|
4960 |
|
lite/public/class-email-subscribers-public.php
CHANGED
@@ -209,6 +209,8 @@ class Email_Subscribers_Public {
|
|
209 |
echo esc_html__( 'Sorry, you are not allowed to access this page.', 'email-subscribers' );
|
210 |
die();
|
211 |
}
|
|
|
|
|
212 |
}
|
213 |
|
214 |
$message = get_option( 'ig_es_unsubscribe_success_message' );
|
@@ -261,7 +263,6 @@ class Email_Subscribers_Public {
|
|
261 |
|
262 |
} elseif ( in_array( $option, array( 'viewstatus', 'open' ) ) ) {
|
263 |
if ( ! empty( $guid ) && ! empty( $email ) ) {
|
264 |
-
ES_DB_Sending_Queue::update_viewed_status( $guid, $email, $message_id );
|
265 |
|
266 |
if ( $campaign_id > 0 && $db_id > 0 ) {
|
267 |
do_action( 'ig_es_message_open', $db_id, $message_id, $campaign_id );
|
209 |
echo esc_html__( 'Sorry, you are not allowed to access this page.', 'email-subscribers' );
|
210 |
die();
|
211 |
}
|
212 |
+
} elseif ( ! empty( $_POST['List-Unsubscribe'] ) && 'One-Click' === $_POST['List-Unsubscribe'] ) {
|
213 |
+
$unsubscribe_lists = ES()->lists_contacts_db->get_list_ids_by_contact( $db_id, 'subscribed' );
|
214 |
}
|
215 |
|
216 |
$message = get_option( 'ig_es_unsubscribe_success_message' );
|
263 |
|
264 |
} elseif ( in_array( $option, array( 'viewstatus', 'open' ) ) ) {
|
265 |
if ( ! empty( $guid ) && ! empty( $email ) ) {
|
|
|
266 |
|
267 |
if ( $campaign_id > 0 && $db_id > 0 ) {
|
268 |
do_action( 'ig_es_message_open', $db_id, $message_id, $campaign_id );
|
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.7.1
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 4.7.
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
@@ -135,9 +135,15 @@ If you like Email Subscribers, please leave us a [⭐⭐⭐⭐⭐](https://wordp
|
|
135 |
|
136 |
**Some of our other free plugins on WordPress.org**
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
|
142 |
== Installation ==
|
143 |
|
@@ -304,6 +310,13 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
304 |
|
305 |
== Upgrade Notice ==
|
306 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
**4.7.1 (30.04.2021)**
|
308 |
|
309 |
* New: Send emails using Postmark batch API **[PRO]**
|
@@ -340,6 +353,13 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
340 |
|
341 |
== Changelog ==
|
342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
**4.7.1 (30.04.2021)**
|
344 |
|
345 |
* New: Send emails using Postmark batch API [PRO]
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.7.1
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 4.7.2
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
135 |
|
136 |
**Some of our other free plugins on WordPress.org**
|
137 |
|
138 |
+
[Icegram](https://wordpress.org/plugins/icegram/) - Popups, Welcome Bar, Opt-Ins and Lead Generation Plugin
|
139 |
+
|
140 |
+
[Rainmaker](https://wordpress.org/plugins/icegram-rainmaker/) - Best Forms Plugin on WordPress
|
141 |
+
|
142 |
+
[Temporary Login Without Password](https://wordpress.org/plugins/temporary-login-without-password/) -It's a handy tool to support our customers. We use it daily.
|
143 |
+
|
144 |
+
[Smart Manager](https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/) - Manage & Bulk edit Products, Orders & more..
|
145 |
+
|
146 |
+
[Offermative](https://wordpress.org/plugins/offermative-discount-pricing-related-products-upsell-funnels-for-woocommerce/) - Dynamic discount pricing, related product recommendations, upsells and funnels for WooCommerce.
|
147 |
|
148 |
== Installation ==
|
149 |
|
310 |
|
311 |
== Upgrade Notice ==
|
312 |
|
313 |
+
**4.7.2 (12.05.2021)**
|
314 |
+
|
315 |
+
* New: Support for 'List-Unsubscribe' email header
|
316 |
+
* New: Support for 'Subscribed at' field while importing contacts through CSV
|
317 |
+
* Update: Support for Sendgrid batch email API [PRO]
|
318 |
+
* Update: Improved page load performance on Email Subscribers' admin pages
|
319 |
+
|
320 |
**4.7.1 (30.04.2021)**
|
321 |
|
322 |
* New: Send emails using Postmark batch API **[PRO]**
|
353 |
|
354 |
== Changelog ==
|
355 |
|
356 |
+
**4.7.2 (12.05.2021)**
|
357 |
+
|
358 |
+
* New: Support for 'List-Unsubscribe' email header
|
359 |
+
* New: Support for 'Subscribed at' field while importing contacts through CSV
|
360 |
+
* Update: Support for Sendgrid batch email API [PRO]
|
361 |
+
* Update: Improved page load performance on Email Subscribers' admin pages
|
362 |
+
|
363 |
**4.7.1 (30.04.2021)**
|
364 |
|
365 |
* New: Send emails using Postmark batch API [PRO]
|