Version Description
- New: Added preview for workflow emails
- Fix: Duplicate drafts were getting created for campaigns in some cases
- Fix: Custom post type were not getting saved in post notification campaigns
- Fix: Encoding issues with pepipost email sending
=
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 5.3.7 |
Comparing to | |
See all releases |
Code changes from version 5.3.6 to 5.3.7
- email-subscribers.php +2 -2
- lite/admin/class-es-campaign-admin.php +10 -3
- lite/admin/js/email-subscribers-admin.js +109 -3
- lite/includes/class-email-subscribers.php +1 -0
- lite/includes/class-es-common.php +1 -1
- lite/includes/mailers/class-es-pepipost-mailer.php +0 -4
- lite/includes/workflows/abstracts/class-es-workflow-action.php +7 -0
- lite/includes/workflows/actions/class-es-action-send-email.php +18 -1
- lite/includes/workflows/admin/class-es-workflow-admin-edit.php +74 -15
- lite/includes/workflows/admin/views/action.php +1 -0
- lite/includes/workflows/admin/views/meta-box-actions.php +49 -0
- lite/includes/workflows/class-es-workflow-action-preview.php +233 -0
- lite/includes/workflows/class-es-workflow.php +8 -0
- lite/language.php +5 -0
- lite/languages/email-subscribers.pot +64 -39
- readme.txt +13 -5
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: 5.3.
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
@@ -187,7 +187,7 @@ if ( 'premium' === $ig_es_plan ) {
|
|
187 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
188 |
|
189 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
190 |
-
define( 'ES_PLUGIN_VERSION', '5.3.
|
191 |
}
|
192 |
|
193 |
// 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: 5.3.7
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
187 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
188 |
|
189 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
190 |
+
define( 'ES_PLUGIN_VERSION', '5.3.7' );
|
191 |
}
|
192 |
|
193 |
// Plugin Folder Path.
|
lite/admin/class-es-campaign-admin.php
CHANGED
@@ -1041,11 +1041,18 @@ if ( ! class_exists( 'ES_Campaign_Admin' ) ) {
|
|
1041 |
|
1042 |
public function add_post_notification_data( $campaign_data ) {
|
1043 |
|
1044 |
-
$
|
1045 |
$es_note_cat_parent = $campaign_data['es_note_cat_parent'];
|
1046 |
-
$
|
1047 |
|
1048 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1049 |
|
1050 |
return $campaign_data;
|
1051 |
}
|
1041 |
|
1042 |
public function add_post_notification_data( $campaign_data ) {
|
1043 |
|
1044 |
+
$categories = ! empty( $campaign_data['es_note_cat'] ) ? $campaign_data['es_note_cat'] : array();
|
1045 |
$es_note_cat_parent = $campaign_data['es_note_cat_parent'];
|
1046 |
+
$categories = ( ! empty( $es_note_cat_parent ) && in_array( $es_note_cat_parent, array( '{a}All{a}', '{a}None{a}' ), true ) ) ? array( $es_note_cat_parent ) : $categories;
|
1047 |
|
1048 |
+
// Check if custom post types are selected.
|
1049 |
+
if ( ! empty( $campaign_data['es_note_cpt'] ) ) {
|
1050 |
+
// Merge categories and selected custom post types.
|
1051 |
+
$categories = array_merge( $categories, $campaign_data['es_note_cpt'] );
|
1052 |
+
}
|
1053 |
+
|
1054 |
+
|
1055 |
+
$campaign_data['categories'] = ES_Common::convert_categories_array_to_string( $categories );
|
1056 |
|
1057 |
return $campaign_data;
|
1058 |
}
|
lite/admin/js/email-subscribers-admin.js
CHANGED
@@ -1216,8 +1216,15 @@
|
|
1216 |
$('#es_preview_template').hide();
|
1217 |
});
|
1218 |
|
1219 |
-
|
1220 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1221 |
|
1222 |
// Workflow JS
|
1223 |
IG_ES_Workflows = {
|
@@ -1430,6 +1437,76 @@
|
|
1430 |
IG_ES_Workflows.action_delete($action);
|
1431 |
IG_ES_Workflows.maybe_show_run_option();
|
1432 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1433 |
|
1434 |
$('#ig_es_workflow_save #publish').on('click', function(e){
|
1435 |
let trigger_name = $('.js-trigger-select').val();
|
@@ -1459,6 +1536,16 @@
|
|
1459 |
});
|
1460 |
}
|
1461 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1462 |
},
|
1463 |
|
1464 |
add_new_action: function() {
|
@@ -1531,10 +1618,20 @@
|
|
1531 |
$action.find('.action-title').text( response.data.title );
|
1532 |
|
1533 |
$action.find('.js-action-description').html( response.data.description );
|
1534 |
-
|
|
|
1535 |
});
|
1536 |
|
1537 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1538 |
|
1539 |
get_number_of_actions: function () {
|
1540 |
return $('.ig-es-action:not([data-action-number=""])').length;
|
@@ -2519,7 +2616,14 @@
|
|
2519 |
});
|
2520 |
}
|
2521 |
|
|
|
2522 |
function ig_es_draft_campaign( trigger_elem ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
2523 |
let is_draft_bttuon = $(trigger_elem).hasClass('ig_es_draft_campaign');
|
2524 |
let is_save_bttuon = $(trigger_elem).hasClass('ig_es_save_campaign');
|
2525 |
|
@@ -2528,6 +2632,7 @@
|
|
2528 |
if ( is_draft_bttuon ) {
|
2529 |
alert( ig_es_js_data.i18n_data.campaign_subject_empty_message );
|
2530 |
}
|
|
|
2531 |
return;
|
2532 |
}
|
2533 |
|
@@ -2572,6 +2677,7 @@
|
|
2572 |
alert( ig_es_js_data.i18n_data.ajax_error_message );
|
2573 |
}
|
2574 |
}).always(function(){
|
|
|
2575 |
$('#ig_es_campaign_submitted').removeClass('opacity-50 cursor-not-allowed').removeAttr('disabled');
|
2576 |
});
|
2577 |
}
|
1216 |
$('#es_preview_template').hide();
|
1217 |
});
|
1218 |
|
1219 |
+
// Prevent campaign form submission on enter key press
|
1220 |
+
$('#campaign_form input').on('keyup keypress', function(e) {
|
1221 |
+
let pressedKeyCode = e.keyCode || e.which;
|
1222 |
+
let enterKeyCode = 13;
|
1223 |
+
let enterKeyPressed = pressedKeyCode === enterKeyCode;
|
1224 |
+
if ( enterKeyPressed ) {
|
1225 |
+
e.preventDefault();
|
1226 |
+
}
|
1227 |
+
});
|
1228 |
|
1229 |
// Workflow JS
|
1230 |
IG_ES_Workflows = {
|
1437 |
IG_ES_Workflows.action_delete($action);
|
1438 |
IG_ES_Workflows.maybe_show_run_option();
|
1439 |
});
|
1440 |
+
|
1441 |
+
// Preview action
|
1442 |
+
$(document).on('click', '.js-preview-action', function (e) {
|
1443 |
+
e.preventDefault();
|
1444 |
+
e.stopImmediatePropagation();
|
1445 |
+
let preview_action_button = $(this);
|
1446 |
+
let $action = preview_action_button.parents('.ig-es-action').first();
|
1447 |
+
let action_id = $action.data('action-number');
|
1448 |
+
ig_es_sync_wp_editor_content();
|
1449 |
+
let content_container = $('#workflow-email-preview-container');
|
1450 |
+
let content_loader_container = $('#workflow-email-preview-loader');
|
1451 |
+
|
1452 |
+
let content = $('textarea[name="ig_es_workflow_data[actions][' + action_id + '][ig-es-email-content]"]').val();
|
1453 |
+
let subject = $('textarea[name="ig_es_workflow_data[actions][' + action_id + '][ig-es-email-subject]"]').val();
|
1454 |
+
|
1455 |
+
if (!content) {
|
1456 |
+
alert(ig_es_js_data.i18n_data.empty_template_message);
|
1457 |
+
return;
|
1458 |
+
}
|
1459 |
+
preview_action_button.attr('disabled', true);
|
1460 |
+
$('#browser-preview-tab').trigger('click');
|
1461 |
+
let form_data = {
|
1462 |
+
'action': 'ig_es_get_workflow_email_preview',
|
1463 |
+
'security': ig_es_js_data.security,
|
1464 |
+
'content': content,
|
1465 |
+
'subject': subject,
|
1466 |
+
'action_id': action_id,
|
1467 |
+
'preview_type': 'inline',
|
1468 |
+
'trigger': $('select[name="ig_es_workflow_data[trigger_name]"]').val()
|
1469 |
+
};
|
1470 |
+
content_container.addClass('hidden');
|
1471 |
+
content_loader_container.removeClass('hidden');
|
1472 |
+
|
1473 |
+
$('#workflow-email-preview-popup').removeClass('hidden');
|
1474 |
+
$('#workflow-email-preview-popup').css('visibility', 'visible');
|
1475 |
+
$('#send-workflow-preview-email-btn').data('action', action_id);
|
1476 |
+
$.ajax({
|
1477 |
+
method: 'POST',
|
1478 |
+
url: ajaxurl,
|
1479 |
+
data: form_data,
|
1480 |
+
dataType: 'json',
|
1481 |
+
success: function (response) {
|
1482 |
+
preview_action_button.attr('disabled', false);
|
1483 |
+
if (response.success) {
|
1484 |
+
if ('undefined' !== typeof response.data) {
|
1485 |
+
let response_data = response.data;
|
1486 |
+
let preview_html = response_data.preview_html;
|
1487 |
+
ig_es_load_iframe_preview('#workflow-preview-iframe-container', preview_html);
|
1488 |
+
// We are setting popup visiblity hidden so that we can calculate iframe width/height before it is shown to user.
|
1489 |
+
}
|
1490 |
+
} else {
|
1491 |
+
alert(ig_es_js_data.i18n_data.ajax_error_message);
|
1492 |
+
}
|
1493 |
+
},
|
1494 |
+
error: function (err) {
|
1495 |
+
preview_action_button.attr('disabled', false);
|
1496 |
+
alert(ig_es_js_data.i18n_data.ajax_error_message);
|
1497 |
+
}
|
1498 |
+
}).done(function () {
|
1499 |
+
preview_action_button.attr('disabled', false);
|
1500 |
+
content_container.removeClass('hidden');
|
1501 |
+
content_loader_container.addClass('hidden');
|
1502 |
+
});
|
1503 |
+
});
|
1504 |
+
|
1505 |
+
$('#close-workflow-email-preview-popup').on('click', function (event) {
|
1506 |
+
event.preventDefault();
|
1507 |
+
$('#workflow-email-preview-popup').addClass('hidden');
|
1508 |
+
$('#workflow-email-preview-popup').css('visibility', 'hidden');
|
1509 |
+
});
|
1510 |
|
1511 |
$('#ig_es_workflow_save #publish').on('click', function(e){
|
1512 |
let trigger_name = $('.js-trigger-select').val();
|
1536 |
});
|
1537 |
}
|
1538 |
});
|
1539 |
+
this.maybe_show_action_preview_on_init();
|
1540 |
+
},
|
1541 |
+
|
1542 |
+
maybe_show_action_preview_on_init: function () {
|
1543 |
+
let actions = $('.ig-es-action:not([data-action-number = ""]) .js-action-select');
|
1544 |
+
$(actions).each(function (action) {
|
1545 |
+
let selected_action = $(this).val();
|
1546 |
+
let $action = $(this).parents('.ig-es-action').first();
|
1547 |
+
IG_ES_Workflows.maybe_show_action_preview_option($action, selected_action);
|
1548 |
+
});
|
1549 |
},
|
1550 |
|
1551 |
add_new_action: function() {
|
1618 |
$action.find('.action-title').text( response.data.title );
|
1619 |
|
1620 |
$action.find('.js-action-description').html( response.data.description );
|
1621 |
+
|
1622 |
+
IG_ES_Workflows.maybe_show_action_preview_option( $action, selected_action );
|
1623 |
});
|
1624 |
|
1625 |
},
|
1626 |
+
|
1627 |
+
maybe_show_action_preview_option: function ($action, selected_action) {
|
1628 |
+
var preview_option = $action.find('.ig-es-action__header .row-options .js-preview-action');
|
1629 |
+
if ('ig_es_send_email' === selected_action) {
|
1630 |
+
preview_option.removeClass('hidden');
|
1631 |
+
} else {
|
1632 |
+
preview_option.addClass('hidden');
|
1633 |
+
}
|
1634 |
+
},
|
1635 |
|
1636 |
get_number_of_actions: function () {
|
1637 |
return $('.ig-es-action:not([data-action-number=""])').length;
|
2616 |
});
|
2617 |
}
|
2618 |
|
2619 |
+
let drafting_campaign = false;
|
2620 |
function ig_es_draft_campaign( trigger_elem ) {
|
2621 |
+
|
2622 |
+
if( drafting_campaign){
|
2623 |
+
return;
|
2624 |
+
}
|
2625 |
+
|
2626 |
+
drafting_campaign = true;
|
2627 |
let is_draft_bttuon = $(trigger_elem).hasClass('ig_es_draft_campaign');
|
2628 |
let is_save_bttuon = $(trigger_elem).hasClass('ig_es_save_campaign');
|
2629 |
|
2632 |
if ( is_draft_bttuon ) {
|
2633 |
alert( ig_es_js_data.i18n_data.campaign_subject_empty_message );
|
2634 |
}
|
2635 |
+
drafting_campaign = false;
|
2636 |
return;
|
2637 |
}
|
2638 |
|
2677 |
alert( ig_es_js_data.i18n_data.ajax_error_message );
|
2678 |
}
|
2679 |
}).always(function(){
|
2680 |
+
drafting_campaign = false;
|
2681 |
$('#ig_es_campaign_submitted').removeClass('opacity-50 cursor-not-allowed').removeAttr('disabled');
|
2682 |
});
|
2683 |
}
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -899,6 +899,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
899 |
'lite/includes/workflows/actions/class-es-action-update-contact.php',
|
900 |
'lite/includes/workflows/actions/class-es-action-send-email.php',
|
901 |
'lite/includes/workflows/class-es-workflow-actions.php',
|
|
|
902 |
|
903 |
// Workflow Query
|
904 |
'lite/includes/workflows/class-es-workflow-query.php',
|
899 |
'lite/includes/workflows/actions/class-es-action-update-contact.php',
|
900 |
'lite/includes/workflows/actions/class-es-action-send-email.php',
|
901 |
'lite/includes/workflows/class-es-workflow-actions.php',
|
902 |
+
'lite/includes/workflows/class-es-workflow-action-preview.php',
|
903 |
|
904 |
// Workflow Query
|
905 |
'lite/includes/workflows/class-es-workflow-query.php',
|
lite/includes/class-es-common.php
CHANGED
@@ -673,7 +673,7 @@ class ES_Common {
|
|
673 |
} else {
|
674 |
$checked = '';
|
675 |
}
|
676 |
-
$custom_post_type_html .= '<tr><td style="padding-top:4px;padding-bottom:4px;padding-right:10px;"><span class="block pr-4 text-sm font-medium text-gray-600 pb-2"><input type="checkbox" ' . esc_attr( $checked ) . ' value="{T}' . esc_html( $post_type ) . '{T}"
|
677 |
}
|
678 |
} else {
|
679 |
$custom_post_type_html = '<tr><span class="block pr-4 text-sm font-normal text-gray-600 pb-2">' . __( 'No Custom Post Types Available', 'email-subscribers' ) . '</tr>';
|
673 |
} else {
|
674 |
$checked = '';
|
675 |
}
|
676 |
+
$custom_post_type_html .= '<tr><td style="padding-top:4px;padding-bottom:4px;padding-right:10px;"><span class="block pr-4 text-sm font-medium text-gray-600 pb-2"><input type="checkbox" ' . esc_attr( $checked ) . ' value="{T}' . esc_html( $post_type ) . '{T}" class="es_custom_post_type form-checkbox" name="campaign_data[es_note_cpt][]">' . esc_html( $post_type ) . '</td></tr>';
|
677 |
}
|
678 |
} else {
|
679 |
$custom_post_type_html = '<tr><span class="block pr-4 text-sm font-normal text-gray-600 pb-2">' . __( 'No Custom Post Types Available', 'email-subscribers' ) . '</tr>';
|
lite/includes/mailers/class-es-pepipost-mailer.php
CHANGED
@@ -281,10 +281,6 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
|
|
281 |
*/
|
282 |
public function set_content( $content ) {
|
283 |
|
284 |
-
// We are decoding HTML entities i.e. converting “ to “ to fix garbage characters issue in CZech languange
|
285 |
-
// We need to decode entities only in case of Pepipost. For other mailers it is working as expected.
|
286 |
-
$content = ES_Common::decode_entities( $content );
|
287 |
-
|
288 |
$content = utf8_encode( $content );
|
289 |
|
290 |
$this->set_body_param(
|
281 |
*/
|
282 |
public function set_content( $content ) {
|
283 |
|
|
|
|
|
|
|
|
|
284 |
$content = utf8_encode( $content );
|
285 |
|
286 |
$this->set_body_param(
|
lite/includes/workflows/abstracts/class-es-workflow-action.php
CHANGED
@@ -333,4 +333,11 @@ abstract class ES_Workflow_Action {
|
|
333 |
return false;
|
334 |
}
|
335 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
}
|
333 |
return false;
|
334 |
}
|
335 |
|
336 |
+
/**
|
337 |
+
* Load preview for the action
|
338 |
+
* @return null
|
339 |
+
*/
|
340 |
+
public function load_preview() {
|
341 |
+
return null;
|
342 |
+
}
|
343 |
}
|
lite/includes/workflows/actions/class-es-action-send-email.php
CHANGED
@@ -66,7 +66,24 @@ if ( ! class_exists( 'ES_Action_Send_Email' ) ) {
|
|
66 |
$this->add_field( $tracking_campaign_id );
|
67 |
|
68 |
}
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* Called when an action should be run
|
72 |
*
|
66 |
$this->add_field( $tracking_campaign_id );
|
67 |
|
68 |
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Create content for showing preview
|
72 |
+
* @return mixed|null
|
73 |
+
*/
|
74 |
+
public function load_preview() {
|
75 |
+
$email_content = $this->get_option( 'ig-es-email-content', true, true );
|
76 |
+
$email_content = wpautop( $email_content );
|
77 |
+
$current_user = wp_get_current_user();
|
78 |
+
|
79 |
+
return ES_Common::replace_keywords_with_fallback( $email_content, array(
|
80 |
+
'EMAIL' => $current_user->user_email,
|
81 |
+
'NAME' => $current_user->display_name,
|
82 |
+
'FIRSTNAME' => $current_user->first_name,
|
83 |
+
'LASTNAME' => $current_user->last_name,
|
84 |
+
) );
|
85 |
+
}
|
86 |
+
|
87 |
/**
|
88 |
* Called when an action should be run
|
89 |
*
|
lite/includes/workflows/admin/class-es-workflow-admin-edit.php
CHANGED
@@ -64,6 +64,65 @@ class ES_Workflow_Admin_Edit {
|
|
64 |
add_action( 'ig_es_workflow_updated', array( __CLASS__, 'update_optin_email_wp_option' ), 10, 2 );
|
65 |
|
66 |
add_action( 'ig_es_after_campaign_status_updated', array( __CLASS__, 'update_campaign_workflow_status' ), 10, 2 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
|
69 |
/**
|
@@ -166,7 +225,7 @@ class ES_Workflow_Admin_Edit {
|
|
166 |
}
|
167 |
?>
|
168 |
<script>
|
169 |
-
jQuery(document).ready(function(){
|
170 |
postboxes.add_postbox_toggles(pagenow);
|
171 |
});
|
172 |
</script>
|
@@ -574,7 +633,7 @@ class ES_Workflow_Admin_Edit {
|
|
574 |
* @param int $workflow_id
|
575 |
* @param array $workflow_data
|
576 |
* @return void
|
577 |
-
*
|
578 |
* @since 5.0.6
|
579 |
*/
|
580 |
public static function update_campaign_data_in_workflow( $workflow_id, $workflow_data = array() ) {
|
@@ -595,10 +654,10 @@ class ES_Workflow_Admin_Edit {
|
|
595 |
|
596 |
$tracking_campaign_id = ! empty ( $action['ig-es-tracking-campaign-id'] ) ? $action['ig-es-tracking-campaign-id'] : 0;
|
597 |
if ( ! empty( $tracking_campaign_id ) ) {
|
598 |
-
ES()->workflows_db->update_child_tracking_campaign( $tracking_campaign_id, $action );
|
599 |
} else {
|
600 |
$tracking_campaign_id = ES()->workflows_db->create_child_tracking_campaign( $parent_campaign_id, $action );
|
601 |
-
|
602 |
$workflow_actions[$action_index]['ig-es-tracking-campaign-id'] = $tracking_campaign_id;
|
603 |
$actions_data_updated = true;
|
604 |
}
|
@@ -608,10 +667,10 @@ class ES_Workflow_Admin_Edit {
|
|
608 |
if ( $has_parent_workflow_campaign ) {
|
609 |
ES()->workflows_db->update_parent_workflow_campaign( $parent_campaign_id, $workflow_data );
|
610 |
}
|
611 |
-
|
612 |
$workflow_data['actions'] = maybe_serialize( $workflow_actions );
|
613 |
}
|
614 |
-
|
615 |
if ( $actions_data_updated ) {
|
616 |
ES()->workflows_db->update_workflow( $workflow_id, $workflow_data );
|
617 |
}
|
@@ -625,7 +684,7 @@ class ES_Workflow_Admin_Edit {
|
|
625 |
* @param int $workflow_id
|
626 |
* @param array $workflow_data
|
627 |
* @return void
|
628 |
-
*
|
629 |
* @since 5.0.6
|
630 |
*/
|
631 |
public static function delete_unmapped_child_tracking_campaigns( $workflow_id, $workflow_data = array() ) {
|
@@ -642,13 +701,13 @@ class ES_Workflow_Admin_Edit {
|
|
642 |
*
|
643 |
* @param int $workflow_id
|
644 |
* @return array $unmapped_child_tracking_campaigns_ids
|
645 |
-
*
|
646 |
* @since 5.0.6
|
647 |
*/
|
648 |
public static function get_unmapped_child_tracking_campaigns_ids( $workflow_id ) {
|
649 |
-
|
650 |
$mapped_child_tracking_campaign_ids = self::get_mapped_child_tracking_campaign_ids( $workflow_id );
|
651 |
-
$all_child_tracking_campaign_ids = ES()->workflows_db->get_all_child_tracking_campaign_ids( $workflow_id );
|
652 |
|
653 |
$unmapped_child_tracking_campaigns_ids = array_diff( $all_child_tracking_campaign_ids, $mapped_child_tracking_campaign_ids );
|
654 |
|
@@ -660,11 +719,11 @@ class ES_Workflow_Admin_Edit {
|
|
660 |
*
|
661 |
* @param int $workflow_id
|
662 |
* @return array $mapped_child_tracking_campaign_ids
|
663 |
-
*
|
664 |
* @since 5.0.6
|
665 |
*/
|
666 |
public static function get_mapped_child_tracking_campaign_ids( $workflow_id ) {
|
667 |
-
|
668 |
$mapped_child_tracking_campaign_ids = array();
|
669 |
|
670 |
$workflow = new ES_Workflow( $workflow_id );
|
@@ -692,7 +751,7 @@ class ES_Workflow_Admin_Edit {
|
|
692 |
* @param int $workflow_id
|
693 |
* @param array $workflow_data
|
694 |
* @return void
|
695 |
-
*
|
696 |
* @since 5.3.4
|
697 |
*/
|
698 |
public static function update_optin_email_wp_option( $workflow_id, $workflow_data = array() ) {
|
@@ -736,11 +795,11 @@ class ES_Workflow_Admin_Edit {
|
|
736 |
* @param int $campaign_ids
|
737 |
* @param array $new_status
|
738 |
* @return void
|
739 |
-
*
|
740 |
* @since 5.3.4
|
741 |
*/
|
742 |
public static function update_campaign_workflow_status( $campaign_ids, $new_status = 0 ) {
|
743 |
-
|
744 |
if ( empty( $campaign_ids ) ) {
|
745 |
return;
|
746 |
}
|
64 |
add_action( 'ig_es_workflow_updated', array( __CLASS__, 'update_optin_email_wp_option' ), 10, 2 );
|
65 |
|
66 |
add_action( 'ig_es_after_campaign_status_updated', array( __CLASS__, 'update_campaign_workflow_status' ), 10, 2 );
|
67 |
+
|
68 |
+
add_action( 'wp_ajax_ig_es_get_workflow_email_preview', array( __CLASS__, 'get_workflow_email_preview' ) );
|
69 |
+
add_action( 'wp_ajax_ig_es_send_workflow_action_test_email', array( __CLASS__, 'send_workflow_action_test_email' ) );
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Handle send test email for send email action
|
74 |
+
*
|
75 |
+
* @since 5.3.6
|
76 |
+
*/
|
77 |
+
public static function send_workflow_action_test_email() {
|
78 |
+
check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
|
79 |
+
|
80 |
+
$email = sanitize_email( ig_es_get_request_data( 'es_test_email' ) );
|
81 |
+
$subject = ig_es_get_request_data( 'subject', '' );
|
82 |
+
$content = ig_es_get_request_data( 'content', '', false );
|
83 |
+
$trigger = ig_es_get_request_data( 'trigger', '' );
|
84 |
+
|
85 |
+
$content = ES_Workflow_Action_Preview::get_preview( $trigger, array(
|
86 |
+
'action_name' => 'ig_es_send_email',
|
87 |
+
'ig-es-send-to' => '',
|
88 |
+
'ig-es-email-subject' => $subject,
|
89 |
+
'ig-es-email-content' => $content,
|
90 |
+
'ig-es-tracking-campaign-id' => ''
|
91 |
+
) );
|
92 |
+
|
93 |
+
$response = ES()->mailer->send_test_email( $email, $subject, $content, array() );
|
94 |
+
|
95 |
+
if ( $response && 'SUCCESS' === $response['status'] ) {
|
96 |
+
$response['message'] = __( 'Email has been sent. Please check your inbox', 'email-subscribers' );
|
97 |
+
}
|
98 |
+
wp_send_json( array( 'status' => 'SUCCESS' ) );
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Get the workflow email preview
|
103 |
+
*
|
104 |
+
* @since 5.3.6
|
105 |
+
*/
|
106 |
+
public static function get_workflow_email_preview() {
|
107 |
+
check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
|
108 |
+
|
109 |
+
$response = array();
|
110 |
+
$trigger = ig_es_get_request_data( 'trigger' );
|
111 |
+
$content = ig_es_get_request_data( 'content', '', false );
|
112 |
+
$subject = ig_es_get_request_data( 'subject', '' );
|
113 |
+
|
114 |
+
$response['preview_html'] = ES_Workflow_Action_Preview::get_preview( $trigger, array(
|
115 |
+
'action_name' => 'ig_es_send_email',
|
116 |
+
'ig-es-send-to' => '',
|
117 |
+
'ig-es-email-subject' => $subject,
|
118 |
+
'ig-es-email-content' => $content,
|
119 |
+
'ig-es-tracking-campaign-id' => ''
|
120 |
+
) );
|
121 |
+
if ( ! empty( $response ) ) {
|
122 |
+
wp_send_json_success( $response );
|
123 |
+
} else {
|
124 |
+
wp_send_json_error();
|
125 |
+
}
|
126 |
}
|
127 |
|
128 |
/**
|
225 |
}
|
226 |
?>
|
227 |
<script>
|
228 |
+
jQuery(document).ready(function(){
|
229 |
postboxes.add_postbox_toggles(pagenow);
|
230 |
});
|
231 |
</script>
|
633 |
* @param int $workflow_id
|
634 |
* @param array $workflow_data
|
635 |
* @return void
|
636 |
+
*
|
637 |
* @since 5.0.6
|
638 |
*/
|
639 |
public static function update_campaign_data_in_workflow( $workflow_id, $workflow_data = array() ) {
|
654 |
|
655 |
$tracking_campaign_id = ! empty ( $action['ig-es-tracking-campaign-id'] ) ? $action['ig-es-tracking-campaign-id'] : 0;
|
656 |
if ( ! empty( $tracking_campaign_id ) ) {
|
657 |
+
ES()->workflows_db->update_child_tracking_campaign( $tracking_campaign_id, $action );
|
658 |
} else {
|
659 |
$tracking_campaign_id = ES()->workflows_db->create_child_tracking_campaign( $parent_campaign_id, $action );
|
660 |
+
|
661 |
$workflow_actions[$action_index]['ig-es-tracking-campaign-id'] = $tracking_campaign_id;
|
662 |
$actions_data_updated = true;
|
663 |
}
|
667 |
if ( $has_parent_workflow_campaign ) {
|
668 |
ES()->workflows_db->update_parent_workflow_campaign( $parent_campaign_id, $workflow_data );
|
669 |
}
|
670 |
+
|
671 |
$workflow_data['actions'] = maybe_serialize( $workflow_actions );
|
672 |
}
|
673 |
+
|
674 |
if ( $actions_data_updated ) {
|
675 |
ES()->workflows_db->update_workflow( $workflow_id, $workflow_data );
|
676 |
}
|
684 |
* @param int $workflow_id
|
685 |
* @param array $workflow_data
|
686 |
* @return void
|
687 |
+
*
|
688 |
* @since 5.0.6
|
689 |
*/
|
690 |
public static function delete_unmapped_child_tracking_campaigns( $workflow_id, $workflow_data = array() ) {
|
701 |
*
|
702 |
* @param int $workflow_id
|
703 |
* @return array $unmapped_child_tracking_campaigns_ids
|
704 |
+
*
|
705 |
* @since 5.0.6
|
706 |
*/
|
707 |
public static function get_unmapped_child_tracking_campaigns_ids( $workflow_id ) {
|
708 |
+
|
709 |
$mapped_child_tracking_campaign_ids = self::get_mapped_child_tracking_campaign_ids( $workflow_id );
|
710 |
+
$all_child_tracking_campaign_ids = ES()->workflows_db->get_all_child_tracking_campaign_ids( $workflow_id );
|
711 |
|
712 |
$unmapped_child_tracking_campaigns_ids = array_diff( $all_child_tracking_campaign_ids, $mapped_child_tracking_campaign_ids );
|
713 |
|
719 |
*
|
720 |
* @param int $workflow_id
|
721 |
* @return array $mapped_child_tracking_campaign_ids
|
722 |
+
*
|
723 |
* @since 5.0.6
|
724 |
*/
|
725 |
public static function get_mapped_child_tracking_campaign_ids( $workflow_id ) {
|
726 |
+
|
727 |
$mapped_child_tracking_campaign_ids = array();
|
728 |
|
729 |
$workflow = new ES_Workflow( $workflow_id );
|
751 |
* @param int $workflow_id
|
752 |
* @param array $workflow_data
|
753 |
* @return void
|
754 |
+
*
|
755 |
* @since 5.3.4
|
756 |
*/
|
757 |
public static function update_optin_email_wp_option( $workflow_id, $workflow_data = array() ) {
|
795 |
* @param int $campaign_ids
|
796 |
* @param array $new_status
|
797 |
* @return void
|
798 |
+
*
|
799 |
* @since 5.3.4
|
800 |
*/
|
801 |
public static function update_campaign_workflow_status( $campaign_ids, $new_status = 0 ) {
|
802 |
+
|
803 |
if ( empty( $campaign_ids ) ) {
|
804 |
return;
|
805 |
}
|
lite/includes/workflows/admin/views/action.php
CHANGED
@@ -25,6 +25,7 @@ defined( 'ABSPATH' ) || exit;
|
|
25 |
|
26 |
<div class="ig-es-action__header">
|
27 |
<div class="row-options">
|
|
|
28 |
<a class="js-edit-action text-indigo-600" href="#" title="<?php esc_attr_e( 'Edit', 'email-subscribers' ); ?>"><span class="dashicons dashicons-edit"></span></a>
|
29 |
<a class="js-delete-action text-indigo-600" href="#" title="<?php esc_attr_e( 'Delete', 'email-subscribers' ); ?>"><span class="dashicons dashicons-trash"></span></a>
|
30 |
</div>
|
25 |
|
26 |
<div class="ig-es-action__header">
|
27 |
<div class="row-options">
|
28 |
+
<button class="js-preview-action text-indigo-600 hidden" title="<?php esc_attr_e( 'Preview', 'email-subscribers' ); ?>"><span class="dashicons dashicons-welcome-view-site"></span></button>
|
29 |
<a class="js-edit-action text-indigo-600" href="#" title="<?php esc_attr_e( 'Edit', 'email-subscribers' ); ?>"><span class="dashicons dashicons-edit"></span></a>
|
30 |
<a class="js-delete-action text-indigo-600" href="#" title="<?php esc_attr_e( 'Delete', 'email-subscribers' ); ?>"><span class="dashicons dashicons-trash"></span></a>
|
31 |
</div>
|
lite/includes/workflows/admin/views/meta-box-actions.php
CHANGED
@@ -75,3 +75,52 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
75 |
<div class="ig-es-metabox-footer">
|
76 |
<button type="button" class="js-ig-es-add-action inline-flex justify-center rounded-md border border-transparent px-4 py-1.5 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"><?php echo esc_html__( '+ Add action', 'email-subscribers' ); ?></button>
|
77 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
<div class="ig-es-metabox-footer">
|
76 |
<button type="button" class="js-ig-es-add-action inline-flex justify-center rounded-md border border-transparent px-4 py-1.5 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"><?php echo esc_html__( '+ Add action', 'email-subscribers' ); ?></button>
|
77 |
</div>
|
78 |
+
|
79 |
+
<!--Email Action Preview-->
|
80 |
+
<div class="hidden" id="workflow-email-preview-popup">
|
81 |
+
<div class="fixed top-0 left-0 flex items-center justify-center w-full h-full" style="background-color: rgba(0,0,0,.5); z-index: 999;">
|
82 |
+
<div id="campaign-preview-main-container" class="absolute h-auto pt-2 ml-16 mr-4 text-left bg-white rounded shadow-xl z-80 w-1/2 md:max-w-5xl lg:max-w-7xl md:pt-3 lg:pt-2">
|
83 |
+
<div class="py-2 px-4">
|
84 |
+
<div class="flex border-b border-gray-200 pb-2">
|
85 |
+
<h3 class="w-full text-2xl text-left">
|
86 |
+
<?php
|
87 |
+
echo esc_html__( 'Email Preview', 'email-subscribers' );
|
88 |
+
?>
|
89 |
+
</h3>
|
90 |
+
<div class="flex">
|
91 |
+
<div class="campaign-preview-options flex">
|
92 |
+
<div id="browser-preview-tab" class="campaign-preview-option cursor-pointer text-sm font-normal text-gray-600 active" title="<?php echo esc_attr__( 'Preview in browser', 'email-subscribers' ); ?>">
|
93 |
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
94 |
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9" />
|
95 |
+
</svg>
|
96 |
+
</div>
|
97 |
+
<?php do_action( 'ig_es_campaign_preview_tab_options', array() ); ?>
|
98 |
+
</div>
|
99 |
+
<button id="close-workflow-email-preview-popup" class="text-sm font-medium tracking-wide text-gray-700 select-none no-outline focus:outline-none focus:shadow-outline-red hover:border-red-400 active:shadow-lg">
|
100 |
+
<svg class="h-5 w-5 inline" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
101 |
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
102 |
+
</svg>
|
103 |
+
</button>
|
104 |
+
</div>
|
105 |
+
|
106 |
+
</div>
|
107 |
+
</div>
|
108 |
+
<div id="workflow-email-preview-container" class="hidden">
|
109 |
+
<div id="campaign-browser-preview-container">
|
110 |
+
<p class="mx-4 mb-2">
|
111 |
+
<?php echo esc_html__( 'There could be a slight variation on how your customer will view the email content.', 'email-subscribers' ); ?>
|
112 |
+
</p>
|
113 |
+
<div id="workflow-preview-iframe-container" class="py-4 list-decimal popup-preview">
|
114 |
+
</div>
|
115 |
+
</div>
|
116 |
+
<?php
|
117 |
+
do_action( 'ig_es_campaign_preview_options_content', array( 'type' => 'workflow' ) );
|
118 |
+
?>
|
119 |
+
</div>
|
120 |
+
<div id="workflow-email-preview-loader" class="p-13 text-center" style="min-width: 600px">
|
121 |
+
<img src="<?php echo esc_attr( ES_PLUGIN_URL . 'lite/admin/images/spinner-2x.gif' ); ?>" class="inline-block es-loader pl-2 h-5 w-7"
|
122 |
+
alt="<?php echo esc_attr__( 'Loading...', 'email-subscribers' ); ?>"/>
|
123 |
+
</div>
|
124 |
+
</div>
|
125 |
+
</div>
|
126 |
+
</div>
|
lite/includes/workflows/class-es-workflow-action-preview.php
ADDED
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
class ES_Workflow_Action_Preview {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Get email preview
|
11 |
+
*
|
12 |
+
* @param $trigger_name
|
13 |
+
* @param $action
|
14 |
+
*
|
15 |
+
* @return string|null
|
16 |
+
*/
|
17 |
+
public static function get_preview( $trigger_name, $action ) {
|
18 |
+
try {
|
19 |
+
$workflow = self::load_preview_workflow( $trigger_name, $action );
|
20 |
+
$trigger = ES_Workflow_Triggers::get( $trigger_name );
|
21 |
+
|
22 |
+
$required_items = $trigger->get_supplied_data_items();
|
23 |
+
$workflow->set_data_layer( self::get_preview_data_layer( $required_items ), false );
|
24 |
+
|
25 |
+
$workflow_action = $workflow->get_action( 1 );
|
26 |
+
$workflow_action->workflow = $workflow;
|
27 |
+
|
28 |
+
return $workflow_action->load_preview();
|
29 |
+
} catch ( Exception $exception ) {
|
30 |
+
return $exception->getMessage();
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Initialize Workflow dynamically for preview purpose
|
36 |
+
*
|
37 |
+
* @param $trigger_name
|
38 |
+
* @param $action
|
39 |
+
*
|
40 |
+
* @return ES_Workflow
|
41 |
+
*/
|
42 |
+
public static function load_preview_workflow( $trigger_name, $action ) {
|
43 |
+
$workflow_object = new stdClass();
|
44 |
+
$workflow_object->id = 0;
|
45 |
+
$workflow_object->name = 'action-preview';
|
46 |
+
$workflow_object->title = __( 'Action Preview', 'email-subscribers' );
|
47 |
+
$workflow_object->trigger_name = $trigger_name;
|
48 |
+
$workflow_object->trigger_options = array();
|
49 |
+
$workflow_object->rules = array();
|
50 |
+
$workflow_object->actions = array( $action );
|
51 |
+
$workflow_object->meta = array();
|
52 |
+
$workflow_object->status = 'draft';
|
53 |
+
$workflow_object->priority = 0;
|
54 |
+
$workflow_object->created_at = current_time( 'mysql', true );
|
55 |
+
$workflow_object->updated_at = current_time( 'mysql', true );
|
56 |
+
|
57 |
+
$workflow = new ES_Workflow( $workflow_object );
|
58 |
+
$workflow->preview_mode = true;
|
59 |
+
|
60 |
+
return $workflow;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Get data layer for preview
|
65 |
+
*
|
66 |
+
* @param array $required_items
|
67 |
+
* @return array $data_layer
|
68 |
+
*
|
69 |
+
* @throws Exception
|
70 |
+
*/
|
71 |
+
public static function get_preview_data_layer( $required_items = [] ) {
|
72 |
+
$data_layer = [];
|
73 |
+
|
74 |
+
if ( in_array( 'user', $required_items ) ) {
|
75 |
+
$data_layer['user'] = wp_get_current_user();
|
76 |
+
}
|
77 |
+
|
78 |
+
if ( in_array( 'customer', $required_items ) ) {
|
79 |
+
$data_layer['customer'] = IG_ES_Customer_Factory::get_by_user_id( get_current_user_id() );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Order and order item
|
84 |
+
*/
|
85 |
+
if ( in_array( 'wc_order', $required_items ) || in_array( 'order_item', $required_items ) ) {
|
86 |
+
$order = self::get_preview_order();
|
87 |
+
$order_items = $order->get_items();
|
88 |
+
|
89 |
+
if ( empty( $order_items ) ) {
|
90 |
+
throw new Exception( __( 'A valid "Order items" must exist to generate the preview.', 'email-subscribers' ) );
|
91 |
+
}
|
92 |
+
|
93 |
+
$data_layer['wc_order'] = $order;
|
94 |
+
$data_layer['order_item'] = current( $order_items );
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Product
|
99 |
+
*/
|
100 |
+
if ( in_array( 'product', $required_items ) ) {
|
101 |
+
$product_ids = self::get_preview_product_ids();
|
102 |
+
$data_layer['product'] = wc_get_product( $product_ids[0] );
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Cart
|
107 |
+
*/
|
108 |
+
if ( in_array( 'cart', $required_items ) ) {
|
109 |
+
$cart = new IG_ES_Cart();
|
110 |
+
$cart->set_id( 1 );
|
111 |
+
$cart->set_total( 100 );
|
112 |
+
$cart->set_user_id( get_current_user_id() );
|
113 |
+
$cart->set_token();
|
114 |
+
$cart->set_date_last_modified( new DateTime() );
|
115 |
+
|
116 |
+
$items = [];
|
117 |
+
|
118 |
+
foreach ( self::get_preview_product_ids() as $product_id ) {
|
119 |
+
$product = wc_get_product( $product_id );
|
120 |
+
|
121 |
+
// Reject products that can't be purchased
|
122 |
+
if ( ! $product->is_purchasable() ) {
|
123 |
+
continue;
|
124 |
+
}
|
125 |
+
|
126 |
+
$variation_id = 0;
|
127 |
+
$variation = [];
|
128 |
+
|
129 |
+
if ( $product->is_type( 'variable' ) ) {
|
130 |
+
$variations = $product->get_available_variations();
|
131 |
+
if ( $variations ) {
|
132 |
+
$variation_id = $variations[0]['variation_id'];
|
133 |
+
$variation = $variations[0]['attributes'];
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
$items[ uniqid() ] = [
|
138 |
+
'product_id' => $product_id,
|
139 |
+
'variation_id' => $variation_id,
|
140 |
+
'variation' => $variation,
|
141 |
+
'quantity' => 1,
|
142 |
+
'line_subtotal' => (float) $product->get_price(),
|
143 |
+
'line_subtotal_tax' => (float) wc_get_price_including_tax( $product ) - (float) $product->get_price(),
|
144 |
+
];
|
145 |
+
|
146 |
+
}
|
147 |
+
|
148 |
+
$cart->set_items( $items );
|
149 |
+
|
150 |
+
$cart->set_coupons( [
|
151 |
+
'10off' => [
|
152 |
+
'discount_incl_tax' => '10',
|
153 |
+
'discount_excl_tax' => '9',
|
154 |
+
'discount_tax' => '1'
|
155 |
+
]
|
156 |
+
] );
|
157 |
+
|
158 |
+
$data_layer['cart'] = $cart;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Guest
|
163 |
+
*/
|
164 |
+
if ( in_array( 'guest', $required_items ) ) {
|
165 |
+
$guest = new IG_ES_Guest();
|
166 |
+
$guest->set_email( 'guest@example.com' );
|
167 |
+
$data_layer['guest'] = $guest;
|
168 |
+
}
|
169 |
+
|
170 |
+
return apply_filters( 'ig_es_get_preview_data_layer', $data_layer, $required_items );
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Get preview products.
|
175 |
+
*
|
176 |
+
* @return array
|
177 |
+
*
|
178 |
+
* @throws Exception
|
179 |
+
*/
|
180 |
+
protected static function get_preview_product_ids() {
|
181 |
+
// Cache for request since this may be called multiple times
|
182 |
+
static $products = null;
|
183 |
+
if ( null === $products ) {
|
184 |
+
$product_query = new \WP_Query(
|
185 |
+
[
|
186 |
+
'post_type' => 'product',
|
187 |
+
'posts_per_page' => 4,
|
188 |
+
'fields' => 'ids'
|
189 |
+
]
|
190 |
+
);
|
191 |
+
|
192 |
+
$products = $product_query->posts;
|
193 |
+
if ( empty( $products ) ) {
|
194 |
+
throw new Exception( __( 'A valid "Product" must exist to generate the preview.', 'email-subscribers' ) );
|
195 |
+
}
|
196 |
+
}
|
197 |
+
|
198 |
+
return $products;
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Get an order for preview.
|
203 |
+
*
|
204 |
+
* @param int $offset used to do multiple attempts to get a valid order
|
205 |
+
*
|
206 |
+
* @return WC_Order
|
207 |
+
* @throws Exception
|
208 |
+
*/
|
209 |
+
protected static function get_preview_order( $offset = 0 ) {
|
210 |
+
|
211 |
+
$orders = wc_get_orders(
|
212 |
+
[
|
213 |
+
'type' => 'shop_order',
|
214 |
+
'limit' => 1,
|
215 |
+
'offset' => $offset,
|
216 |
+
'return' => 'ids',
|
217 |
+
]
|
218 |
+
);
|
219 |
+
|
220 |
+
if ( ! $orders ) {
|
221 |
+
throw new Exception( __( 'A valid "Order" must exist to generate the preview.', 'email-subscribers' ) );
|
222 |
+
}
|
223 |
+
|
224 |
+
$order = wc_get_order( $orders[0] );
|
225 |
+
|
226 |
+
// if the order has a blank email, it will cause issues
|
227 |
+
if ( $order && $order->get_billing_email() ) {
|
228 |
+
return $order;
|
229 |
+
}
|
230 |
+
|
231 |
+
return self::get_preview_order( $offset + 1 );
|
232 |
+
}
|
233 |
+
}
|
lite/includes/workflows/class-es-workflow.php
CHANGED
@@ -147,6 +147,14 @@ class ES_Workflow {
|
|
147 |
*/
|
148 |
public static $extra;
|
149 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
/**
|
151 |
* Class constructor
|
152 |
*
|
147 |
*/
|
148 |
public static $extra;
|
149 |
|
150 |
+
/**
|
151 |
+
* Is the workflow in preview mode
|
152 |
+
* @var bool
|
153 |
+
*
|
154 |
+
* @since 5.3.6
|
155 |
+
*/
|
156 |
+
public $preview_mode = false;
|
157 |
+
|
158 |
/**
|
159 |
* Class constructor
|
160 |
*
|
lite/language.php
CHANGED
@@ -1006,6 +1006,7 @@ __( 'Action', 'email-subscribers' ),
|
|
1006 |
/* translators: 1: Starting strong tag 2: Closing strong tag */
|
1007 |
__( 'No actions found. Click the %1$s+ Add action%2$s to create an action.', 'email-subscribers' ),
|
1008 |
__( '+ Add action', 'email-subscribers' ),
|
|
|
1009 |
__( 'Workflow priority', 'email-subscribers' ),
|
1010 |
__( 'Performs add to list action on existing orders that match trigger conditions.', 'email-subscribers' ),
|
1011 |
__( 'Run now', 'email-subscribers' ),
|
@@ -1046,6 +1047,10 @@ _n( '%d second', '%d seconds', 2, 'email-subscribers' ),
|
|
1046 |
__( '%s from now', 'email-subscribers' ),
|
1047 |
/* translators: %s: time difference */
|
1048 |
__( '%s ago', 'email-subscribers' ),
|
|
|
|
|
|
|
|
|
1049 |
/* translators: 1. Customer first name 2. Customer last name */
|
1050 |
/* translators: 1. Guest first name 2. Guest last name */
|
1051 |
esc_html_x( '%1$s %2$s', 'full name', 'email-subscribers' ),
|
1006 |
/* translators: 1: Starting strong tag 2: Closing strong tag */
|
1007 |
__( 'No actions found. Click the %1$s+ Add action%2$s to create an action.', 'email-subscribers' ),
|
1008 |
__( '+ Add action', 'email-subscribers' ),
|
1009 |
+
__( 'Email Preview', 'email-subscribers' ),
|
1010 |
__( 'Workflow priority', 'email-subscribers' ),
|
1011 |
__( 'Performs add to list action on existing orders that match trigger conditions.', 'email-subscribers' ),
|
1012 |
__( 'Run now', 'email-subscribers' ),
|
1047 |
__( '%s from now', 'email-subscribers' ),
|
1048 |
/* translators: %s: time difference */
|
1049 |
__( '%s ago', 'email-subscribers' ),
|
1050 |
+
__( 'Action Preview', 'email-subscribers' ),
|
1051 |
+
__( 'A valid "Order items" must exist to generate the preview.', 'email-subscribers' ),
|
1052 |
+
__( 'A valid "Product" must exist to generate the preview.', 'email-subscribers' ),
|
1053 |
+
__( 'A valid "Order" must exist to generate the preview.', 'email-subscribers' ),
|
1054 |
/* translators: 1. Customer first name 2. Customer last name */
|
1055 |
/* translators: 1. Guest first name 2. Guest last name */
|
1056 |
esc_html_x( '%1$s %2$s', 'full name', 'email-subscribers' ),
|
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 5.3.
|
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: 2022-03-
|
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 |
|
@@ -282,7 +282,7 @@ msgstr ""
|
|
282 |
|
283 |
#: lite/admin/class-email-subscribers-admin.php:334
|
284 |
#: lite/includes/pro-features.php:191
|
285 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
286 |
#: lite/includes/workflows/class-es-workflows-table.php:53
|
287 |
#: lite/includes/workflows/class-es-workflows-table.php:169
|
288 |
#: starter/starter-class-email-subscribers.php:653
|
@@ -324,7 +324,7 @@ msgstr ""
|
|
324 |
|
325 |
#: lite/admin/class-email-subscribers-admin.php:1327
|
326 |
#: lite/includes/class-email-subscribers-activator.php:61
|
327 |
-
#: lite/includes/class-email-subscribers.php:
|
328 |
#: lite/includes/classes/class-es-form-widget.php:11
|
329 |
#: lite/includes/classes/class-es-old-widget.php:13
|
330 |
#: lite/includes/classes/class-es-old-widget.php:15
|
@@ -431,6 +431,7 @@ msgstr ""
|
|
431 |
#: lite/includes/classes/class-es-newsletters.php:413
|
432 |
#: lite/includes/classes/class-es-newsletters.php:441
|
433 |
#: lite/includes/classes/class-es-reports-table.php:263
|
|
|
434 |
#: pro/classes/class-es-pro-sequence-report.php:273
|
435 |
msgid "Preview"
|
436 |
msgstr ""
|
@@ -450,7 +451,7 @@ msgstr ""
|
|
450 |
#: lite/admin/class-es-campaign-admin.php:343
|
451 |
#: lite/includes/classes/class-es-newsletters.php:296
|
452 |
#: lite/includes/classes/class-es-post-notifications.php:546
|
453 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
454 |
#: lite/includes/workflows/admin/views/meta-box-save.php:68
|
455 |
msgid "Save"
|
456 |
msgstr ""
|
@@ -472,6 +473,7 @@ msgid "Campaign Preview"
|
|
472 |
msgstr ""
|
473 |
|
474 |
#: lite/admin/class-es-campaign-admin.php:432
|
|
|
475 |
msgid "Preview in browser"
|
476 |
msgstr ""
|
477 |
|
@@ -479,6 +481,7 @@ msgstr ""
|
|
479 |
#: lite/includes/classes/class-es-newsletters.php:427
|
480 |
#: lite/includes/classes/class-es-reports-table.php:552
|
481 |
#: lite/includes/classes/class-es-templates-table.php:150
|
|
|
482 |
#: lite/admin/dist/main.js:1
|
483 |
#: lite/admin/js/src/views/GalleryItemPreview.js:29
|
484 |
msgid "There could be a slight variation on how your customer will view the email content."
|
@@ -528,13 +531,13 @@ msgstr ""
|
|
528 |
|
529 |
#: lite/admin/class-es-campaign-admin.php:646
|
530 |
#: lite/includes/classes/class-es-newsletters.php:445
|
531 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
532 |
msgid "Something went wrong. Please try again later"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: lite/admin/class-es-campaign-admin.php:
|
536 |
-
#: lite/admin/class-es-campaign-admin.php:
|
537 |
-
#: lite/admin/class-es-campaign-admin.php:
|
538 |
#: lite/includes/classes/class-es-templates-table.php:56
|
539 |
#: lite/includes/classes/class-es-templates-table.php:67
|
540 |
#: lite/includes/classes/class-es-templates-table.php:73
|
@@ -542,17 +545,17 @@ msgstr ""
|
|
542 |
msgid "Available Keywords"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: lite/admin/class-es-campaign-admin.php:
|
546 |
#: lite/includes/classes/class-es-templates-table.php:73
|
547 |
msgid "for Broadcast:"
|
548 |
msgstr ""
|
549 |
|
550 |
-
#: lite/admin/class-es-campaign-admin.php:
|
551 |
#: lite/includes/classes/class-es-templates-table.php:78
|
552 |
msgid "for Post Digest:"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: lite/admin/class-es-campaign-admin.php:
|
556 |
#: lite/includes/classes/class-es-templates-table.php:79
|
557 |
msgid "Any keywords related Post Notification"
|
558 |
msgstr ""
|
@@ -586,6 +589,7 @@ msgstr ""
|
|
586 |
|
587 |
#: lite/admin/class-ig-es-campaign-rules.php:224
|
588 |
#: lite/includes/classes/class-es-post-notifications.php:545
|
|
|
589 |
msgid "Loading..."
|
590 |
msgstr ""
|
591 |
|
@@ -1386,16 +1390,16 @@ msgid "OK, I Got it!"
|
|
1386 |
msgstr ""
|
1387 |
|
1388 |
#. translators: 1: Error message 2: File name 3: Line number
|
1389 |
-
#: lite/includes/class-email-subscribers.php:
|
1390 |
msgid "%1$s in %2$s on line %3$s"
|
1391 |
msgstr ""
|
1392 |
|
1393 |
-
#: lite/includes/class-email-subscribers.php:
|
1394 |
msgid "Icegram WC"
|
1395 |
msgstr ""
|
1396 |
|
1397 |
#. translators: %1$s - constant that was used
|
1398 |
-
#: lite/includes/class-email-subscribers.php:
|
1399 |
msgid "Value was set using constant %1$s"
|
1400 |
msgstr ""
|
1401 |
|
@@ -1622,7 +1626,7 @@ msgstr ""
|
|
1622 |
#: lite/includes/pro-features.php:1132
|
1623 |
#: lite/includes/workflows/admin/views/meta-box-timing.php:82
|
1624 |
#: lite/includes/workflows/fields/class-es-date.php:31
|
1625 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
1626 |
#: pro/pro-class-email-subscribers.php:858
|
1627 |
msgid "Date"
|
1628 |
msgstr ""
|
@@ -2079,7 +2083,7 @@ msgstr ""
|
|
2079 |
#: lite/includes/classes/class-es-contacts-table.php:1034
|
2080 |
#: lite/includes/classes/class-es-forms-table.php:967
|
2081 |
#: lite/includes/classes/class-es-lists-table.php:616
|
2082 |
-
#: lite/includes/workflows/admin/views/action.php:
|
2083 |
#: lite/includes/workflows/class-es-workflows-table.php:305
|
2084 |
#: pro/classes/class-es-pro-custom-fields-table.php:564
|
2085 |
msgid "Edit"
|
@@ -2094,7 +2098,7 @@ msgstr ""
|
|
2094 |
#: lite/includes/classes/class-es-lists-table.php:671
|
2095 |
#: lite/includes/classes/class-es-reports-table.php:262
|
2096 |
#: lite/includes/classes/class-es-reports-table.php:356
|
2097 |
-
#: lite/includes/workflows/admin/views/action.php:
|
2098 |
#: lite/includes/workflows/admin/views/meta-box-save.php:45
|
2099 |
#: lite/includes/workflows/class-es-workflows-table.php:306
|
2100 |
#: lite/includes/workflows/class-es-workflows-table.php:367
|
@@ -3181,7 +3185,7 @@ msgid "Close"
|
|
3181 |
msgstr ""
|
3182 |
|
3183 |
#: lite/includes/classes/class-es-newsletters.php:444
|
3184 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
3185 |
msgid "Email sent successfully "
|
3186 |
msgstr ""
|
3187 |
|
@@ -3440,6 +3444,7 @@ msgid "Copy"
|
|
3440 |
msgstr ""
|
3441 |
|
3442 |
#: lite/includes/classes/class-es-tools.php:78
|
|
|
3443 |
msgid "Email has been sent. Please check your inbox"
|
3444 |
msgstr ""
|
3445 |
|
@@ -4047,7 +4052,7 @@ msgid "Reduce the possibility to land in spam with PRO"
|
|
4047 |
msgstr ""
|
4048 |
|
4049 |
#: lite/includes/pro-features.php:1068
|
4050 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4051 |
msgid "Link tracking"
|
4052 |
msgstr ""
|
4053 |
|
@@ -4056,26 +4061,26 @@ msgid "Get spam score"
|
|
4056 |
msgstr ""
|
4057 |
|
4058 |
#: lite/includes/pro-features.php:1122
|
4059 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4060 |
#: pro/pro-class-email-subscribers.php:839
|
4061 |
msgid "Send options"
|
4062 |
msgstr ""
|
4063 |
|
4064 |
#: lite/includes/pro-features.php:1125
|
4065 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4066 |
#: pro/pro-class-email-subscribers.php:844
|
4067 |
msgid "Schedule for later"
|
4068 |
msgstr ""
|
4069 |
|
4070 |
#: lite/includes/pro-features.php:1141
|
4071 |
#: lite/includes/workflows/fields/class-es-time.php:64
|
4072 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4073 |
#: pro/pro-class-email-subscribers.php:872
|
4074 |
msgid "Time"
|
4075 |
msgstr ""
|
4076 |
|
4077 |
#: lite/includes/pro-features.php:1151
|
4078 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4079 |
#: pro/pro-class-email-subscribers.php:887
|
4080 |
msgid "Local Time: "
|
4081 |
msgstr ""
|
@@ -4340,36 +4345,36 @@ msgstr ""
|
|
4340 |
msgid "Variable not found."
|
4341 |
msgstr ""
|
4342 |
|
4343 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4344 |
msgid " Add New Workflow"
|
4345 |
msgstr ""
|
4346 |
|
4347 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4348 |
msgid " Edit Workflow"
|
4349 |
msgstr ""
|
4350 |
|
4351 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4352 |
msgid "Add title"
|
4353 |
msgstr ""
|
4354 |
|
4355 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4356 |
#: lite/includes/workflows/admin/views/meta-box-trigger.php:68
|
4357 |
msgid "Trigger"
|
4358 |
msgstr ""
|
4359 |
|
4360 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4361 |
msgid "Actions"
|
4362 |
msgstr ""
|
4363 |
|
4364 |
-
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:
|
4365 |
msgid "Placeholders"
|
4366 |
msgstr ""
|
4367 |
|
4368 |
-
#: lite/includes/workflows/admin/views/action.php:
|
4369 |
msgid "New Action"
|
4370 |
msgstr ""
|
4371 |
|
4372 |
-
#: lite/includes/workflows/admin/views/action.php:
|
4373 |
msgid "Action"
|
4374 |
msgstr ""
|
4375 |
|
@@ -4382,6 +4387,10 @@ msgstr ""
|
|
4382 |
msgid "+ Add action"
|
4383 |
msgstr ""
|
4384 |
|
|
|
|
|
|
|
|
|
4385 |
#: lite/includes/workflows/admin/views/meta-box-options.php:23
|
4386 |
msgid "Workflow priority"
|
4387 |
msgstr ""
|
@@ -4558,6 +4567,22 @@ msgstr ""
|
|
4558 |
msgid "%s ago"
|
4559 |
msgstr ""
|
4560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4561 |
#. translators: 1. Customer first name 2. Customer last name
|
4562 |
#. translators: 1. Guest first name 2. Guest last name
|
4563 |
#: lite/includes/workflows/class-es-workflow-data-layer.php:201
|
@@ -4567,11 +4592,11 @@ msgctxt "full name"
|
|
4567 |
msgid "%1$s %2$s"
|
4568 |
msgstr ""
|
4569 |
|
4570 |
-
#: lite/includes/workflows/class-es-workflow.php:
|
4571 |
msgid "Missing action_name key in array."
|
4572 |
msgstr ""
|
4573 |
|
4574 |
-
#: lite/includes/workflows/class-es-workflow.php:
|
4575 |
msgid "Could not retrieve the action."
|
4576 |
msgstr ""
|
4577 |
|
@@ -4850,7 +4875,7 @@ msgid "Total Emails In Queue"
|
|
4850 |
msgstr ""
|
4851 |
|
4852 |
#: lite/public/partials/cron-message.php:43
|
4853 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4854 |
#: pro/pro-class-email-subscribers.php:898
|
4855 |
msgid "Send Now"
|
4856 |
msgstr ""
|
@@ -4883,11 +4908,11 @@ msgstr ""
|
|
4883 |
msgid "Free!"
|
4884 |
msgstr ""
|
4885 |
|
4886 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4887 |
msgid "Email address to receive preview email for testing"
|
4888 |
msgstr ""
|
4889 |
|
4890 |
-
#: pro/classes/class-es-campaign-admin-pro.php:
|
4891 |
msgid "Send email"
|
4892 |
msgstr ""
|
4893 |
|
@@ -5163,7 +5188,7 @@ msgstr ""
|
|
5163 |
msgid "Please share the reason"
|
5164 |
msgstr ""
|
5165 |
|
5166 |
-
#: pro/classes/coupon/class-ig-es-coupon.php:
|
5167 |
msgid "Generated by Email subscribers and Newsletters"
|
5168 |
msgstr ""
|
5169 |
|
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 5.3.7\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: 2022-03-16T08:16:56+01: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:1598
|
33 |
msgid "Icegram"
|
34 |
msgstr ""
|
35 |
|
282 |
|
283 |
#: lite/admin/class-email-subscribers-admin.php:334
|
284 |
#: lite/includes/pro-features.php:191
|
285 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:325
|
286 |
#: lite/includes/workflows/class-es-workflows-table.php:53
|
287 |
#: lite/includes/workflows/class-es-workflows-table.php:169
|
288 |
#: starter/starter-class-email-subscribers.php:653
|
324 |
|
325 |
#: lite/admin/class-email-subscribers-admin.php:1327
|
326 |
#: lite/includes/class-email-subscribers-activator.php:61
|
327 |
+
#: lite/includes/class-email-subscribers.php:1595
|
328 |
#: lite/includes/classes/class-es-form-widget.php:11
|
329 |
#: lite/includes/classes/class-es-old-widget.php:13
|
330 |
#: lite/includes/classes/class-es-old-widget.php:15
|
431 |
#: lite/includes/classes/class-es-newsletters.php:413
|
432 |
#: lite/includes/classes/class-es-newsletters.php:441
|
433 |
#: lite/includes/classes/class-es-reports-table.php:263
|
434 |
+
#: lite/includes/workflows/admin/views/action.php:28
|
435 |
#: pro/classes/class-es-pro-sequence-report.php:273
|
436 |
msgid "Preview"
|
437 |
msgstr ""
|
451 |
#: lite/admin/class-es-campaign-admin.php:343
|
452 |
#: lite/includes/classes/class-es-newsletters.php:296
|
453 |
#: lite/includes/classes/class-es-post-notifications.php:546
|
454 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:385
|
455 |
#: lite/includes/workflows/admin/views/meta-box-save.php:68
|
456 |
msgid "Save"
|
457 |
msgstr ""
|
473 |
msgstr ""
|
474 |
|
475 |
#: lite/admin/class-es-campaign-admin.php:432
|
476 |
+
#: lite/includes/workflows/admin/views/meta-box-actions.php:92
|
477 |
msgid "Preview in browser"
|
478 |
msgstr ""
|
479 |
|
481 |
#: lite/includes/classes/class-es-newsletters.php:427
|
482 |
#: lite/includes/classes/class-es-reports-table.php:552
|
483 |
#: lite/includes/classes/class-es-templates-table.php:150
|
484 |
+
#: lite/includes/workflows/admin/views/meta-box-actions.php:111
|
485 |
#: lite/admin/dist/main.js:1
|
486 |
#: lite/admin/js/src/views/GalleryItemPreview.js:29
|
487 |
msgid "There could be a slight variation on how your customer will view the email content."
|
531 |
|
532 |
#: lite/admin/class-es-campaign-admin.php:646
|
533 |
#: lite/includes/classes/class-es-newsletters.php:445
|
534 |
+
#: pro/classes/class-es-campaign-admin-pro.php:103
|
535 |
msgid "Something went wrong. Please try again later"
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: lite/admin/class-es-campaign-admin.php:1145
|
539 |
+
#: lite/admin/class-es-campaign-admin.php:1165
|
540 |
+
#: lite/admin/class-es-campaign-admin.php:1174
|
541 |
#: lite/includes/classes/class-es-templates-table.php:56
|
542 |
#: lite/includes/classes/class-es-templates-table.php:67
|
543 |
#: lite/includes/classes/class-es-templates-table.php:73
|
545 |
msgid "Available Keywords"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: lite/admin/class-es-campaign-admin.php:1165
|
549 |
#: lite/includes/classes/class-es-templates-table.php:73
|
550 |
msgid "for Broadcast:"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: lite/admin/class-es-campaign-admin.php:1174
|
554 |
#: lite/includes/classes/class-es-templates-table.php:78
|
555 |
msgid "for Post Digest:"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: lite/admin/class-es-campaign-admin.php:1178
|
559 |
#: lite/includes/classes/class-es-templates-table.php:79
|
560 |
msgid "Any keywords related Post Notification"
|
561 |
msgstr ""
|
589 |
|
590 |
#: lite/admin/class-ig-es-campaign-rules.php:224
|
591 |
#: lite/includes/classes/class-es-post-notifications.php:545
|
592 |
+
#: lite/includes/workflows/admin/views/meta-box-actions.php:122
|
593 |
msgid "Loading..."
|
594 |
msgstr ""
|
595 |
|
1390 |
msgstr ""
|
1391 |
|
1392 |
#. translators: 1: Error message 2: File name 3: Line number
|
1393 |
+
#: lite/includes/class-email-subscribers.php:1345
|
1394 |
msgid "%1$s in %2$s on line %3$s"
|
1395 |
msgstr ""
|
1396 |
|
1397 |
+
#: lite/includes/class-email-subscribers.php:1608
|
1398 |
msgid "Icegram WC"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
#. translators: %1$s - constant that was used
|
1402 |
+
#: lite/includes/class-email-subscribers.php:2059
|
1403 |
msgid "Value was set using constant %1$s"
|
1404 |
msgstr ""
|
1405 |
|
1626 |
#: lite/includes/pro-features.php:1132
|
1627 |
#: lite/includes/workflows/admin/views/meta-box-timing.php:82
|
1628 |
#: lite/includes/workflows/fields/class-es-date.php:31
|
1629 |
+
#: pro/classes/class-es-campaign-admin-pro.php:196
|
1630 |
#: pro/pro-class-email-subscribers.php:858
|
1631 |
msgid "Date"
|
1632 |
msgstr ""
|
2083 |
#: lite/includes/classes/class-es-contacts-table.php:1034
|
2084 |
#: lite/includes/classes/class-es-forms-table.php:967
|
2085 |
#: lite/includes/classes/class-es-lists-table.php:616
|
2086 |
+
#: lite/includes/workflows/admin/views/action.php:29
|
2087 |
#: lite/includes/workflows/class-es-workflows-table.php:305
|
2088 |
#: pro/classes/class-es-pro-custom-fields-table.php:564
|
2089 |
msgid "Edit"
|
2098 |
#: lite/includes/classes/class-es-lists-table.php:671
|
2099 |
#: lite/includes/classes/class-es-reports-table.php:262
|
2100 |
#: lite/includes/classes/class-es-reports-table.php:356
|
2101 |
+
#: lite/includes/workflows/admin/views/action.php:30
|
2102 |
#: lite/includes/workflows/admin/views/meta-box-save.php:45
|
2103 |
#: lite/includes/workflows/class-es-workflows-table.php:306
|
2104 |
#: lite/includes/workflows/class-es-workflows-table.php:367
|
3185 |
msgstr ""
|
3186 |
|
3187 |
#: lite/includes/classes/class-es-newsletters.php:444
|
3188 |
+
#: pro/classes/class-es-campaign-admin-pro.php:100
|
3189 |
msgid "Email sent successfully "
|
3190 |
msgstr ""
|
3191 |
|
3444 |
msgstr ""
|
3445 |
|
3446 |
#: lite/includes/classes/class-es-tools.php:78
|
3447 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:96
|
3448 |
msgid "Email has been sent. Please check your inbox"
|
3449 |
msgstr ""
|
3450 |
|
4052 |
msgstr ""
|
4053 |
|
4054 |
#: lite/includes/pro-features.php:1068
|
4055 |
+
#: pro/classes/class-es-campaign-admin-pro.php:123
|
4056 |
msgid "Link tracking"
|
4057 |
msgstr ""
|
4058 |
|
4061 |
msgstr ""
|
4062 |
|
4063 |
#: lite/includes/pro-features.php:1122
|
4064 |
+
#: pro/classes/class-es-campaign-admin-pro.php:171
|
4065 |
#: pro/pro-class-email-subscribers.php:839
|
4066 |
msgid "Send options"
|
4067 |
msgstr ""
|
4068 |
|
4069 |
#: lite/includes/pro-features.php:1125
|
4070 |
+
#: pro/classes/class-es-campaign-admin-pro.php:182
|
4071 |
#: pro/pro-class-email-subscribers.php:844
|
4072 |
msgid "Schedule for later"
|
4073 |
msgstr ""
|
4074 |
|
4075 |
#: lite/includes/pro-features.php:1141
|
4076 |
#: lite/includes/workflows/fields/class-es-time.php:64
|
4077 |
+
#: pro/classes/class-es-campaign-admin-pro.php:210
|
4078 |
#: pro/pro-class-email-subscribers.php:872
|
4079 |
msgid "Time"
|
4080 |
msgstr ""
|
4081 |
|
4082 |
#: lite/includes/pro-features.php:1151
|
4083 |
+
#: pro/classes/class-es-campaign-admin-pro.php:225
|
4084 |
#: pro/pro-class-email-subscribers.php:887
|
4085 |
msgid "Local Time: "
|
4086 |
msgstr ""
|
4345 |
msgid "Variable not found."
|
4346 |
msgstr ""
|
4347 |
|
4348 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:313
|
4349 |
msgid " Add New Workflow"
|
4350 |
msgstr ""
|
4351 |
|
4352 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:315
|
4353 |
msgid " Edit Workflow"
|
4354 |
msgstr ""
|
4355 |
|
4356 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:352
|
4357 |
msgid "Add title"
|
4358 |
msgstr ""
|
4359 |
|
4360 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:383
|
4361 |
#: lite/includes/workflows/admin/views/meta-box-trigger.php:68
|
4362 |
msgid "Trigger"
|
4363 |
msgstr ""
|
4364 |
|
4365 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:384
|
4366 |
msgid "Actions"
|
4367 |
msgstr ""
|
4368 |
|
4369 |
+
#: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:386
|
4370 |
msgid "Placeholders"
|
4371 |
msgstr ""
|
4372 |
|
4373 |
+
#: lite/includes/workflows/admin/views/action.php:32
|
4374 |
msgid "New Action"
|
4375 |
msgstr ""
|
4376 |
|
4377 |
+
#: lite/includes/workflows/admin/views/action.php:39
|
4378 |
msgid "Action"
|
4379 |
msgstr ""
|
4380 |
|
4387 |
msgid "+ Add action"
|
4388 |
msgstr ""
|
4389 |
|
4390 |
+
#: lite/includes/workflows/admin/views/meta-box-actions.php:87
|
4391 |
+
msgid "Email Preview"
|
4392 |
+
msgstr ""
|
4393 |
+
|
4394 |
#: lite/includes/workflows/admin/views/meta-box-options.php:23
|
4395 |
msgid "Workflow priority"
|
4396 |
msgstr ""
|
4567 |
msgid "%s ago"
|
4568 |
msgstr ""
|
4569 |
|
4570 |
+
#: lite/includes/workflows/class-es-workflow-action-preview.php:46
|
4571 |
+
msgid "Action Preview"
|
4572 |
+
msgstr ""
|
4573 |
+
|
4574 |
+
#: lite/includes/workflows/class-es-workflow-action-preview.php:90
|
4575 |
+
msgid "A valid \"Order items\" must exist to generate the preview."
|
4576 |
+
msgstr ""
|
4577 |
+
|
4578 |
+
#: lite/includes/workflows/class-es-workflow-action-preview.php:194
|
4579 |
+
msgid "A valid \"Product\" must exist to generate the preview."
|
4580 |
+
msgstr ""
|
4581 |
+
|
4582 |
+
#: lite/includes/workflows/class-es-workflow-action-preview.php:221
|
4583 |
+
msgid "A valid \"Order\" must exist to generate the preview."
|
4584 |
+
msgstr ""
|
4585 |
+
|
4586 |
#. translators: 1. Customer first name 2. Customer last name
|
4587 |
#. translators: 1. Guest first name 2. Guest last name
|
4588 |
#: lite/includes/workflows/class-es-workflow-data-layer.php:201
|
4592 |
msgid "%1$s %2$s"
|
4593 |
msgstr ""
|
4594 |
|
4595 |
+
#: lite/includes/workflows/class-es-workflow.php:1024
|
4596 |
msgid "Missing action_name key in array."
|
4597 |
msgstr ""
|
4598 |
|
4599 |
+
#: lite/includes/workflows/class-es-workflow.php:1030
|
4600 |
msgid "Could not retrieve the action."
|
4601 |
msgstr ""
|
4602 |
|
4875 |
msgstr ""
|
4876 |
|
4877 |
#: lite/public/partials/cron-message.php:43
|
4878 |
+
#: pro/classes/class-es-campaign-admin-pro.php:176
|
4879 |
#: pro/pro-class-email-subscribers.php:898
|
4880 |
msgid "Send Now"
|
4881 |
msgstr ""
|
4908 |
msgid "Free!"
|
4909 |
msgstr ""
|
4910 |
|
4911 |
+
#: pro/classes/class-es-campaign-admin-pro.php:85
|
4912 |
msgid "Email address to receive preview email for testing"
|
4913 |
msgstr ""
|
4914 |
|
4915 |
+
#: pro/classes/class-es-campaign-admin-pro.php:90
|
4916 |
msgid "Send email"
|
4917 |
msgstr ""
|
4918 |
|
5188 |
msgid "Please share the reason"
|
5189 |
msgstr ""
|
5190 |
|
5191 |
+
#: pro/classes/coupon/class-ig-es-coupon.php:99
|
5192 |
msgid "Generated by Email subscribers and Newsletters"
|
5193 |
msgstr ""
|
5194 |
|
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.9.1
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 5.3.
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
@@ -310,14 +310,22 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
310 |
|
311 |
== Upgrade Notice ==
|
312 |
|
313 |
-
= 5.3.
|
314 |
|
315 |
-
* New: Added
|
316 |
-
* Fix:
|
317 |
-
* Fix:
|
|
|
318 |
|
319 |
== Changelog ==
|
320 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
**5.3.6 (09.03.2022)**
|
322 |
|
323 |
* New: Added support for fallback value for NAME and FIRSTNAME keywords
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.9.1
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 5.3.7
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
310 |
|
311 |
== Upgrade Notice ==
|
312 |
|
313 |
+
= 5.3.7 =
|
314 |
|
315 |
+
* New: Added preview for workflow emails
|
316 |
+
* Fix: Duplicate drafts were getting created for campaigns in some cases
|
317 |
+
* Fix: Custom post type were not getting saved in post notification campaigns
|
318 |
+
* Fix: Encoding issues with pepipost email sending
|
319 |
|
320 |
== Changelog ==
|
321 |
|
322 |
+
**5.3.7 (16.03.2022)**
|
323 |
+
|
324 |
+
* New: Added preview for workflow emails
|
325 |
+
* Fix: Duplicate drafts were getting created for campaigns in some cases
|
326 |
+
* Fix: Custom post type were not getting saved in post notification campaigns
|
327 |
+
* Fix: Encoding issues with pepipost email sending
|
328 |
+
|
329 |
**5.3.6 (09.03.2022)**
|
330 |
|
331 |
* New: Added support for fallback value for NAME and FIRSTNAME keywords
|