Version Description
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.4.2 |
Comparing to | |
See all releases |
Code changes from version 4.4.1.1 to 4.4.2
- email-subscribers.php +123 -9
- lite/admin/class-email-subscribers-admin.php +80 -8
- lite/admin/css/email-subscribers-admin.css +1 -1
- lite/admin/dist/images/bfcm-2019.png +0 -0
- lite/admin/dist/images/bfcm-last-2019.png +0 -0
- lite/admin/dist/images/cf7-sync.png +0 -0
- lite/admin/dist/images/edd-sync.png +0 -0
- lite/admin/dist/images/email-marketing-mastery.png +0 -0
- lite/admin/dist/images/email-subscribers-pricing.png +0 -0
- lite/admin/dist/images/envelope.png +0 -0
- lite/admin/dist/images/es-captcha-2.png +0 -0
- lite/admin/dist/images/es-comments.png +0 -0
- lite/admin/dist/images/es-ig-integration.png +0 -0
- lite/admin/dist/images/es-logo-128x128.png +0 -0
- lite/admin/dist/images/es-logo-64x64.png +0 -0
- lite/admin/dist/images/es-rm-integration.png +0 -0
- lite/admin/dist/images/es-smtp-label.png +0 -0
- lite/admin/dist/images/es-smtp.png +0 -0
- lite/admin/dist/images/give-sync.png +0 -0
- lite/admin/dist/images/icegram-engage-more-subscribers-and-visitors.png +0 -0
- lite/admin/dist/images/icegram-engage-optimize-results.png +0 -0
- lite/admin/dist/images/icegram-engage-visitors-person-flow.png +0 -0
- lite/admin/dist/images/icon-64.png +0 -0
- lite/admin/dist/images/ninja-forms-sync.png +0 -0
- lite/admin/dist/images/optin_form_1.png +0 -0
- lite/admin/dist/images/optin_form_2.png +0 -0
- lite/admin/dist/images/pepipost.png +0 -0
- lite/admin/dist/images/phpmail.png +0 -0
- lite/admin/dist/images/pricing.png +0 -0
- lite/admin/dist/images/starter-tmpl.png +0 -0
- lite/admin/dist/images/woocommerce-sync.png +0 -0
- lite/admin/dist/images/wpforms-sync.png +0 -0
- lite/admin/dist/images/wpmail.png +0 -0
- lite/admin/dist/main.css +1 -1
- lite/admin/js/email-subscribers-admin.js +3 -1
- lite/admin/partials/dashboard.php +1 -9
- lite/admin/partials/help.php +191 -123
- lite/includes/class-email-subscribers.php +12 -6
- lite/includes/class-es-common.php +24 -0
- lite/includes/class-es-install.php +11 -0
- lite/includes/classes/class-es-campaigns-table.php +2 -0
- lite/includes/classes/class-es-contacts-table.php +3 -1
- lite/includes/classes/class-es-newsletters.php +22 -9
- lite/includes/classes/class-es-reports-data.php +8 -3
- lite/includes/db/class-es-db-contacts.php +75 -2
- lite/includes/db/class-es-db-lists-contacts.php +9 -43
- lite/includes/es-core-functions.php +0 -1
- lite/includes/feedback.php +2 -2
- lite/includes/feedback/class-ig-feedback.php +15 -13
- lite/includes/feedback/class-ig-tracker.php +4 -4
- lite/includes/upgrade/es-update-functions.php +36 -2
- lite/includes/workflows/actions/class-es-action-delete-contact.php +7 -15
- lite/includes/workflows/actions/class-es-action-update-contact.php +25 -1
- lite/includes/workflows/class-es-workflow-datetime.php +4 -4
- lite/includes/workflows/class-es-workflow-time-helper.php +1 -1
- lite/includes/workflows/class-es-workflow.php +3 -3
- readme.txt +12 -1
- webpack.config.js +3 -1
email-subscribers.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Email Subscribers & Newsletters
|
4 |
* Plugin URI: https://www.icegram.com/
|
5 |
* Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
|
6 |
-
* Version: 4.4.
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
@@ -62,11 +62,18 @@ if ( ! version_compare( PHP_VERSION, IG_ES_MIN_PHP_VER, '>=' ) ) {
|
|
62 |
* @since 4.3.0
|
63 |
*/
|
64 |
if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
|
65 |
-
define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.2.
|
66 |
}
|
67 |
|
68 |
|
69 |
global $ig_es_tracker;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/* ***************************** Initial Compatibility Work (Start) ******************* */
|
71 |
|
72 |
/* =========== Do not edit this code unless you know what you are doing ========= */
|
@@ -144,7 +151,7 @@ if ( $is_premium ) {
|
|
144 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
145 |
|
146 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
147 |
-
define( 'ES_PLUGIN_VERSION', '4.4.
|
148 |
}
|
149 |
|
150 |
// Plugin Folder Path.
|
@@ -168,11 +175,26 @@ if ( ! function_exists( 'activate_email_subscribers' ) ) {
|
|
168 |
/**
|
169 |
* The code that runs during plugin activation.
|
170 |
* This action is documented in includes/class-email-subscribers-activator.php
|
|
|
|
|
171 |
*/
|
172 |
-
function activate_email_subscribers() {
|
|
|
|
|
|
|
173 |
require_once ES_PLUGIN_DIR . 'lite/includes/class-email-subscribers-activator.php';
|
174 |
-
|
175 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
}
|
177 |
}
|
178 |
|
@@ -180,20 +202,112 @@ if ( ! function_exists( 'deactivate_email_subscribers' ) ) {
|
|
180 |
/**
|
181 |
* The code that runs during plugin deactivation.
|
182 |
* This action is documented in includes/class-email-subscribers-deactivator.php
|
|
|
|
|
|
|
183 |
*/
|
184 |
-
function deactivate_email_subscribers() {
|
|
|
185 |
require_once ES_PLUGIN_DIR . 'lite/includes/class-email-subscribers-deactivator.php';
|
186 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
}
|
188 |
}
|
189 |
|
190 |
register_activation_hook( __FILE__, 'activate_email_subscribers' );
|
191 |
register_deactivation_hook( __FILE__, 'deactivate_email_subscribers' );
|
192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
add_action( 'admin_init', 'email_subscribers_redirect' );
|
194 |
|
195 |
if ( ! function_exists( 'email_subscribers_redirect' ) ) {
|
196 |
function email_subscribers_redirect() {
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
if ( get_option( 'email_subscribers_do_activation_redirect', false ) ) {
|
198 |
delete_option( 'email_subscribers_do_activation_redirect' );
|
199 |
wp_redirect( 'admin.php?page=es_dashboard' );
|
@@ -239,4 +353,4 @@ if ( ! function_exists( 'ES' ) ) {
|
|
239 |
}
|
240 |
|
241 |
// Start ES
|
242 |
-
ES()->run();
|
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.4.2
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
62 |
* @since 4.3.0
|
63 |
*/
|
64 |
if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
|
65 |
+
define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.2.1' );
|
66 |
}
|
67 |
|
68 |
|
69 |
global $ig_es_tracker;
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @since 4.4.2
|
73 |
+
*/
|
74 |
+
global $wp_version;
|
75 |
+
|
76 |
+
|
77 |
/* ***************************** Initial Compatibility Work (Start) ******************* */
|
78 |
|
79 |
/* =========== Do not edit this code unless you know what you are doing ========= */
|
151 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
152 |
|
153 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
154 |
+
define( 'ES_PLUGIN_VERSION', '4.4.2' );
|
155 |
}
|
156 |
|
157 |
// Plugin Folder Path.
|
175 |
/**
|
176 |
* The code that runs during plugin activation.
|
177 |
* This action is documented in includes/class-email-subscribers-activator.php
|
178 |
+
*
|
179 |
+
* @param bool $network_wide Is plugin being activated on a network.
|
180 |
*/
|
181 |
+
function activate_email_subscribers( $network_wide ) {
|
182 |
+
|
183 |
+
global $wpdb;
|
184 |
+
|
185 |
require_once ES_PLUGIN_DIR . 'lite/includes/class-email-subscribers-activator.php';
|
186 |
+
|
187 |
+
if ( is_multisite() && $network_wide ) {
|
188 |
+
|
189 |
+
// Get all active blogs in the network and activate plugin on each one
|
190 |
+
$blog_ids = $wpdb->get_col( sprintf( "SELECT blog_id FROM $wpdb->blogs WHERE deleted = %d", 0 ) );
|
191 |
+
foreach ( $blog_ids as $blog_id ) {
|
192 |
+
ig_es_activate_on_blog( $blog_id );
|
193 |
+
}
|
194 |
+
} else {
|
195 |
+
Email_Subscribers_Activator::activate();
|
196 |
+
add_option( 'email_subscribers_do_activation_redirect', true );
|
197 |
+
}
|
198 |
}
|
199 |
}
|
200 |
|
202 |
/**
|
203 |
* The code that runs during plugin deactivation.
|
204 |
* This action is documented in includes/class-email-subscribers-deactivator.php
|
205 |
+
*
|
206 |
+
* @param bool $network_wide Is plugin being activated on a network.
|
207 |
+
*
|
208 |
*/
|
209 |
+
function deactivate_email_subscribers( $network_wide ) {
|
210 |
+
|
211 |
require_once ES_PLUGIN_DIR . 'lite/includes/class-email-subscribers-deactivator.php';
|
212 |
+
|
213 |
+
if ( is_multisite() && $network_wide ) {
|
214 |
+
|
215 |
+
global $wpdb;
|
216 |
+
|
217 |
+
// Get all active blogs in the network.
|
218 |
+
$blog_ids = $wpdb->get_col( sprintf( "SELECT blog_id FROM $wpdb->blogs WHERE deleted = %d", 0 ) );
|
219 |
+
foreach ( $blog_ids as $blog_id ) {
|
220 |
+
// Run deactivation code on each one
|
221 |
+
ig_es_trigger_deactivation_in_multisite( $blog_id );
|
222 |
+
}
|
223 |
+
} else {
|
224 |
+
Email_Subscribers_Deactivator::deactivate();
|
225 |
+
}
|
226 |
}
|
227 |
}
|
228 |
|
229 |
register_activation_hook( __FILE__, 'activate_email_subscribers' );
|
230 |
register_deactivation_hook( __FILE__, 'deactivate_email_subscribers' );
|
231 |
|
232 |
+
/**
|
233 |
+
* Function to handle new blog(site) creation/activation in WP Multisite
|
234 |
+
*
|
235 |
+
* @param int $blog_id Blog ID of new site.
|
236 |
+
*
|
237 |
+
* @since 4.4.2
|
238 |
+
*/
|
239 |
+
function ig_es_may_activate_on_blog( $blog_id ) {
|
240 |
+
|
241 |
+
// In WP > WP 5.1.0 WP_Site object is passed instead of blog_id.
|
242 |
+
if ( $blog_id instanceof WP_Site ) {
|
243 |
+
$blog_id = (int) $blog_id->blog_id;
|
244 |
+
}
|
245 |
+
|
246 |
+
if( empty( $blog_id ) || ! is_numeric( $blog_id ) ) {
|
247 |
+
return;
|
248 |
+
}
|
249 |
+
|
250 |
+
if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
|
251 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
252 |
+
}
|
253 |
+
|
254 |
+
if ( is_plugin_active_for_network( 'email-subscribers/email-subscribers.php' ) ) {
|
255 |
+
ig_es_activate_on_blog( $blog_id );
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
+
/**
|
260 |
+
* Function to trigger Email Subscribers' activation code for individual site/blog in a network.
|
261 |
+
*
|
262 |
+
* @param int $blog_id Blog ID of newly created site/blog.
|
263 |
+
*
|
264 |
+
* @since 4.4.2
|
265 |
+
*/
|
266 |
+
function ig_es_activate_on_blog( $blog_id ) {
|
267 |
+
switch_to_blog( $blog_id );
|
268 |
+
Email_Subscribers_Activator::activate();
|
269 |
+
add_option( 'email_subscribers_do_activation_redirect', true );
|
270 |
+
restore_current_blog();
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Function to trigger Email Subscribers' deactivation code for individual site in a network.
|
275 |
+
*
|
276 |
+
* @param int $blog_id Blog ID of newly created site/blog.
|
277 |
+
*
|
278 |
+
* @since 4.4.2
|
279 |
+
*/
|
280 |
+
function ig_es_trigger_deactivation_in_multisite( $blog_id ) {
|
281 |
+
switch_to_blog( $blog_id );
|
282 |
+
Email_Subscribers_Deactivator::deactivate();
|
283 |
+
restore_current_blog();
|
284 |
+
}
|
285 |
+
|
286 |
+
if( version_compare( $wp_version, '5.1.0', '>' ) ) {
|
287 |
+
/**
|
288 |
+
* New action when a new site/blog created in WP Multisite > 5.1.0. Priority is lower to allow other options of site to be set before we initiate our activation process.
|
289 |
+
*/
|
290 |
+
add_action( 'wp_initialize_site', 'ig_es_may_activate_on_blog', 99 );
|
291 |
+
} else {
|
292 |
+
/**
|
293 |
+
* Deprecated action when a new site/blog created in WP Multisite <= 5.1.0
|
294 |
+
*/
|
295 |
+
add_action( 'wpmu_new_blog', 'ig_es_may_activate_on_blog' );
|
296 |
+
}
|
297 |
+
|
298 |
+
// This action gets triggered when super admin activates a single site/blog.
|
299 |
+
add_action( 'activate_blog', 'ig_es_may_activate_on_blog' );
|
300 |
+
|
301 |
add_action( 'admin_init', 'email_subscribers_redirect' );
|
302 |
|
303 |
if ( ! function_exists( 'email_subscribers_redirect' ) ) {
|
304 |
function email_subscribers_redirect() {
|
305 |
+
|
306 |
+
// Check if it is multisite and the current user is in the network administrative interface. e.g. `/wp-admin/network/`
|
307 |
+
if( is_multisite() && is_network_admin() ) {
|
308 |
+
return;
|
309 |
+
}
|
310 |
+
|
311 |
if ( get_option( 'email_subscribers_do_activation_redirect', false ) ) {
|
312 |
delete_option( 'email_subscribers_do_activation_redirect' );
|
313 |
wp_redirect( 'admin.php?page=es_dashboard' );
|
353 |
}
|
354 |
|
355 |
// Start ES
|
356 |
+
ES()->run();
|
lite/admin/class-email-subscribers-admin.php
CHANGED
@@ -60,6 +60,7 @@ class Email_Subscribers_Admin {
|
|
60 |
$this->version = $version;
|
61 |
|
62 |
// Reorder ES Submenu
|
|
|
63 |
add_filter( 'custom_menu_order', array( $this, 'submenu_order' ) );
|
64 |
|
65 |
add_action( 'admin_menu', array( $this, 'email_subscribers_admin_menu' ) );
|
@@ -67,6 +68,7 @@ class Email_Subscribers_Admin {
|
|
67 |
add_action( 'admin_footer', array( $this, 'remove_submenu' ) );
|
68 |
add_action( 'wp_ajax_send_test_email', array( $this, 'send_test_email' ) );
|
69 |
add_action( 'admin_init', array( $this, 'es_save_onboarding_skip' ) );
|
|
|
70 |
}
|
71 |
|
72 |
/**
|
@@ -104,10 +106,12 @@ class Email_Subscribers_Admin {
|
|
104 |
wp_register_style( $this->email_subscribers . '-timepicker', plugin_dir_url( __FILE__ ) . 'css/jquery.timepicker.css' );
|
105 |
wp_enqueue_style( $this->email_subscribers . '-timepicker' );
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
111 |
|
112 |
}
|
113 |
|
@@ -180,7 +184,7 @@ class Email_Subscribers_Admin {
|
|
180 |
|
181 |
if ( in_array( 'workflows', $accessible_sub_menus ) ) {
|
182 |
|
183 |
-
|
184 |
// Add Workflows Submenu
|
185 |
$hook = add_submenu_page( 'es_dashboard', __( 'Workflows', 'email-subscribers' ), __( 'Workflows', 'email-subscribers' ), 'edit_posts', 'es_workflows', array( $this, 'render_workflows' ) );
|
186 |
|
@@ -622,16 +626,84 @@ class Email_Subscribers_Admin {
|
|
622 |
* @since 4.4.0
|
623 |
*/
|
624 |
public function remove_other_admin_notices() {
|
|
|
625 |
|
626 |
if ( ! ES()->is_es_admin_screen() ) {
|
627 |
return;
|
628 |
}
|
629 |
|
630 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
631 |
|
632 |
-
|
633 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
634 |
}
|
635 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
636 |
}
|
|
|
637 |
}
|
60 |
$this->version = $version;
|
61 |
|
62 |
// Reorder ES Submenu
|
63 |
+
|
64 |
add_filter( 'custom_menu_order', array( $this, 'submenu_order' ) );
|
65 |
|
66 |
add_action( 'admin_menu', array( $this, 'email_subscribers_admin_menu' ) );
|
68 |
add_action( 'admin_footer', array( $this, 'remove_submenu' ) );
|
69 |
add_action( 'wp_ajax_send_test_email', array( $this, 'send_test_email' ) );
|
70 |
add_action( 'admin_init', array( $this, 'es_save_onboarding_skip' ) );
|
71 |
+
|
72 |
}
|
73 |
|
74 |
/**
|
106 |
wp_register_style( $this->email_subscribers . '-timepicker', plugin_dir_url( __FILE__ ) . 'css/jquery.timepicker.css' );
|
107 |
wp_enqueue_style( $this->email_subscribers . '-timepicker' );
|
108 |
|
109 |
+
|
110 |
+
$allowed_pages = array( 'es_campaigns', 'es_reports', 'es_lists', 'es_forms', 'es_dashboard', 'es_workflows', 'es_settings', 'go_to_icegram', 'es_subscribers', 'es_general_information' );
|
111 |
+
//if ( ! empty( $get_page ) && ( in_array( $get_page, $allowed_pages , true ) ) ) {
|
112 |
+
wp_enqueue_style( 'ig-es-style', plugin_dir_url( __FILE__ ) . 'dist/main.css', array(), $this->version, 'all' );
|
113 |
+
//}
|
114 |
+
|
115 |
|
116 |
}
|
117 |
|
184 |
|
185 |
if ( in_array( 'workflows', $accessible_sub_menus ) ) {
|
186 |
|
187 |
+
|
188 |
// Add Workflows Submenu
|
189 |
$hook = add_submenu_page( 'es_dashboard', __( 'Workflows', 'email-subscribers' ), __( 'Workflows', 'email-subscribers' ), 'edit_posts', 'es_workflows', array( $this, 'render_workflows' ) );
|
190 |
|
626 |
* @since 4.4.0
|
627 |
*/
|
628 |
public function remove_other_admin_notices() {
|
629 |
+
global $wp_filter;
|
630 |
|
631 |
if ( ! ES()->is_es_admin_screen() ) {
|
632 |
return;
|
633 |
}
|
634 |
|
635 |
+
$es_display_notices = array(
|
636 |
+
'connect_icegram_notification',
|
637 |
+
'show_review_notice',
|
638 |
+
'custom_admin_notice',
|
639 |
+
'output_custom_notices',
|
640 |
+
'ig_es_fail_php_version_notice',
|
641 |
+
);
|
642 |
|
643 |
+
// User admin notices
|
644 |
+
if ( ! empty( $wp_filter['user_admin_notices']->callbacks ) && is_array( $wp_filter['user_admin_notices']->callbacks ) ) {
|
645 |
+
foreach ( $wp_filter['user_admin_notices']->callbacks as $priority => $callbacks ) {
|
646 |
+
foreach ( $callbacks as $name => $details ) {
|
647 |
+
|
648 |
+
if ( is_object( $details['function'] ) && $details['function'] instanceof \Closure ) {
|
649 |
+
unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
|
650 |
+
continue;
|
651 |
+
}
|
652 |
+
|
653 |
+
if ( ! empty( $details['function'][0] ) && is_object( $details['function'][0] ) && count( $details['function'] ) == 2 ) {
|
654 |
+
$notice_callback_name = $details['function'][1];
|
655 |
+
if ( ! in_array( $notice_callback_name, $es_display_notices ) ) {
|
656 |
+
unset( $wp_filter['user_admin_notices']->callbacks[ $priority ][ $name ] );
|
657 |
+
}
|
658 |
+
}
|
659 |
+
}
|
660 |
+
}
|
661 |
}
|
662 |
|
663 |
+
// Admin notices
|
664 |
+
if ( ! empty( $wp_filter['admin_notices']->callbacks ) && is_array( $wp_filter['admin_notices']->callbacks ) ) {
|
665 |
+
foreach ( $wp_filter['admin_notices']->callbacks as $priority => $callbacks ) {
|
666 |
+
foreach ( $callbacks as $name => $details ) {
|
667 |
+
|
668 |
+
if ( is_object( $details['function'] ) && $details['function'] instanceof \Closure ) {
|
669 |
+
unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
|
670 |
+
continue;
|
671 |
+
}
|
672 |
+
|
673 |
+
if ( ! empty( $details['function'][0] ) && is_object( $details['function'][0] ) && count( $details['function'] ) == 2 ) {
|
674 |
+
$notice_callback_name = $details['function'][1];
|
675 |
+
if ( ! in_array( $notice_callback_name, $es_display_notices ) ) {
|
676 |
+
unset( $wp_filter['admin_notices']->callbacks[ $priority ][ $name ] );
|
677 |
+
}
|
678 |
+
}
|
679 |
+
}
|
680 |
+
}
|
681 |
+
}
|
682 |
+
|
683 |
+
// All admin notices
|
684 |
+
if ( ! empty( $wp_filter['all_admin_notices']->callbacks ) && is_array( $wp_filter['all_admin_notices']->callbacks ) ) {
|
685 |
+
foreach ( $wp_filter['all_admin_notices']->callbacks as $priority => $callbacks ) {
|
686 |
+
foreach ( $callbacks as $name => $details ) {
|
687 |
+
|
688 |
+
if ( is_object( $details['function'] ) && $details['function'] instanceof \Closure ) {
|
689 |
+
unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
|
690 |
+
continue;
|
691 |
+
}
|
692 |
+
|
693 |
+
if ( ! empty( $details['function'][0] ) && is_object( $details['function'][0] ) && count( $details['function'] ) == 2 ) {
|
694 |
+
$notice_callback_name = $details['function'][1];
|
695 |
+
if ( ! in_array( $notice_callback_name, $es_display_notices ) ) {
|
696 |
+
unset( $wp_filter['all_admin_notices']->callbacks[ $priority ][ $name ] );
|
697 |
+
}
|
698 |
+
}
|
699 |
+
}
|
700 |
+
}
|
701 |
+
}
|
702 |
+
|
703 |
+
$get_page = ig_es_get_request_data( 'page' );
|
704 |
+
if ( ! empty( $get_page ) && 'es_dashboard' == $get_page ) {
|
705 |
+
remove_all_actions( 'admin_notices' );
|
706 |
+
}
|
707 |
}
|
708 |
+
|
709 |
}
|
lite/admin/css/email-subscribers-admin.css
CHANGED
@@ -1727,7 +1727,7 @@ body.email-subscribers_page_es_workflows #post-body .postbox .inside {
|
|
1727 |
opacity: 0.5;
|
1728 |
}
|
1729 |
|
1730 |
-
.email-subscribers_page_es_lists table.fixed, .email-subscribers_page_es_forms table.fixed, .email-subscribers_page_es_workflows table.fixed, .email-subscribers_page_es_subscribers table.fixed, .email-subscribers_page_es_reports table.fixed{
|
1731 |
position: static;
|
1732 |
}
|
1733 |
|
1727 |
opacity: 0.5;
|
1728 |
}
|
1729 |
|
1730 |
+
.email-subscribers_page_es_campaigns table.fixed, .email-subscribers_page_es_lists table.fixed, .email-subscribers_page_es_forms table.fixed, .email-subscribers_page_es_workflows table.fixed, .email-subscribers_page_es_subscribers table.fixed, .email-subscribers_page_es_reports table.fixed{
|
1731 |
position: static;
|
1732 |
}
|
1733 |
|
lite/admin/dist/images/bfcm-2019.png
ADDED
Binary file
|
lite/admin/dist/images/bfcm-last-2019.png
ADDED
Binary file
|
lite/admin/dist/images/cf7-sync.png
ADDED
Binary file
|
lite/admin/dist/images/edd-sync.png
ADDED
Binary file
|
lite/admin/dist/images/email-marketing-mastery.png
ADDED
Binary file
|
lite/admin/dist/images/email-subscribers-pricing.png
ADDED
Binary file
|
lite/admin/dist/images/envelope.png
ADDED
Binary file
|
lite/admin/dist/images/es-captcha-2.png
ADDED
Binary file
|
lite/admin/dist/images/es-comments.png
ADDED
Binary file
|
lite/admin/dist/images/es-ig-integration.png
ADDED
Binary file
|
lite/admin/dist/images/es-logo-128x128.png
ADDED
Binary file
|
lite/admin/dist/images/es-logo-64x64.png
ADDED
Binary file
|
lite/admin/dist/images/es-rm-integration.png
ADDED
Binary file
|
lite/admin/dist/images/es-smtp-label.png
ADDED
Binary file
|
lite/admin/dist/images/es-smtp.png
ADDED
Binary file
|
lite/admin/dist/images/give-sync.png
ADDED
Binary file
|
lite/admin/dist/images/icegram-engage-more-subscribers-and-visitors.png
ADDED
Binary file
|
lite/admin/dist/images/icegram-engage-optimize-results.png
ADDED
Binary file
|
lite/admin/dist/images/icegram-engage-visitors-person-flow.png
ADDED
Binary file
|
lite/admin/dist/images/icon-64.png
ADDED
Binary file
|
lite/admin/dist/images/ninja-forms-sync.png
ADDED
Binary file
|
lite/admin/dist/images/optin_form_1.png
ADDED
Binary file
|
lite/admin/dist/images/optin_form_2.png
ADDED
Binary file
|
lite/admin/dist/images/pepipost.png
ADDED
Binary file
|
lite/admin/dist/images/phpmail.png
ADDED
Binary file
|
lite/admin/dist/images/pricing.png
ADDED
Binary file
|
lite/admin/dist/images/starter-tmpl.png
ADDED
Binary file
|
lite/admin/dist/images/woocommerce-sync.png
ADDED
Binary file
|
lite/admin/dist/images/wpforms-sync.png
ADDED
Binary file
|
lite/admin/dist/images/wpmail.png
ADDED
Binary file
|
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;padding:0}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}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus,.ig-es-primary-button{border-color:transparent}.ig-es-primary-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;padding:.5rem 1rem;background-color:#fff;font-size:.875rem;line-height:1.25rem;font-weight:500;color:#fff;background-color:#5850ec;-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-primary-button:hover{background-color:#6875f5}.ig-es-primary-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-action.js-open .ig-es-action__header{background-color:#5850ec;color:#fff}.bg-white{background-color:#fff}.bg-green-100{background-color:#def7ec}.bg-indigo-500{background-color:#6875f5}.bg-indigo-600{background-color:#5850ec}.bg-indigo-800{background-color:#42389d}.hover\:bg-gray-50:hover{background-color:#f9fafb}.hover\:bg-gray-100:hover{background-color:#f4f5f7}.hover\:bg-indigo-500:hover{background-color:#6875f5}.focus\:bg-gray-50:focus{background-color:#f9fafb}.focus\:bg-gray-100:focus{background-color:#f4f5f7}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{border-color:#f4f5f7}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d2d6dc}.focus\:border-blue-300:focus{border-color:#a4cafe}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-0{border-width:0}.border{border-width:1px}.border-t{border-top-width:1px}.border-b{border-bottom-width:1px}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-cell{display:table-cell}.hidden{display:none}.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}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.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-shrink-0{-ms-flex-negative:0;flex-shrink:0}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-5{height:1.25rem}.h-20{height:5rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.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}.mr-6{margin-right:1.5rem}.ml-6{margin-left:1.5rem}.mr-1\.5{margin-right:.375rem}.-mr-1{margin-right:-.25rem}.max-w-7xl{max-width:80rem}.min-w-0{min-width:0}.opacity-0{opacity:0}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.p-2{padding:.5rem}.p-3{padding:.75rem}.py-1{padding-top:.25rem;padding-bottom:.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-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pr-4{padding-right:1rem}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.right-0{right:0}.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-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)}.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)}.text-left{text-align:left}.text-center{text-align:center}.text-white{color:#fff}.text-black{color:#000}.text-gray-400{color:#9fa6b2}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-900{color:#161e2e}.text-orange-400{color:#ff8a4c}.text-yellow-400{color:#e3a008}.text-green-400{color:#31c48d}.text-green-800{color:#03543f}.text-blue-700{color:#1a56db}.text-indigo-100{color:#e5edff}.text-indigo-400{color:#8da2fb}.text-indigo-500{color:#6875f5}.text-indigo-600{color:#5850ec}.hover\:text-white:hover{color:#fff}.hover\:text-gray-900:hover{color:#161e2e}.focus\:text-white:focus{color:#fff}.focus\:text-gray-900:focus{color:#161e2e}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-2xl{font-size:1.5rem}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-56{width:14rem}.w-1\/4{width:25%}.w-3\/5{width:60%}.w-11\/12{width:91.666667%}.w-full{width:100%}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}@media (min-width:640px){.sm\:rounded-md{border-radius:.375rem}.sm\:grid{display:grid}.sm\:leading-9{line-height:2.25rem}.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\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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\: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\:mt-0{margin-top:0}.md\:ml-4{margin-left:1rem}.md\:pt-6{padding-top:1.5rem}.md\:text-base{font-size:1rem}}@media (min-width:1024px){.lg\:rounded-full{border-radius:9999px}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.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\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}}
|
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;padding:0}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{color:#1c64f2}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus,.ig-es-primary-button{border-color:transparent}.ig-es-primary-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;padding:.5rem 1rem;background-color:#fff;font-size:.875rem;line-height:1.25rem;font-weight:500;color:#fff;background-color:#5850ec;-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-primary-button:hover{background-color:#6875f5}.ig-es-primary-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-action.js-open .ig-es-action__header{background-color:#5850ec;color:#fff}.bg-white{background-color:#fff}.bg-gray-200{background-color:#e5e7eb}.bg-green-100{background-color:#def7ec}.bg-green-600{background-color:#057a55}.bg-indigo-500{background-color:#6875f5}.bg-indigo-600{background-color:#5850ec}.bg-indigo-800{background-color:#42389d}.hover\:bg-gray-50:hover{background-color:#f9fafb}.hover\:bg-gray-100:hover{background-color:#f4f5f7}.hover\:bg-green-500:hover{background-color:#0e9f6e}.hover\:bg-indigo-500:hover{background-color:#6875f5}.focus\:bg-gray-50:focus{background-color:#f9fafb}.focus\:bg-gray-100:focus{background-color:#f4f5f7}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{border-color:#f4f5f7}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d2d6dc}.focus\:border-blue-300:focus{border-color:#a4cafe}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-dashed{border-style:dashed}.border-0{border-width:0}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.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}.grid{display:grid}.table{display:table}.table-cell{display:table-cell}.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}.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}.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-shrink-0{-ms-flex-negative:0;flex-shrink:0}.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-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.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}.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-auto{margin-left:auto;margin-right:auto}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.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}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mr-1\.5{margin-right:.375rem}.-mr-1{margin-right:-.25rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.min-w-0{min-width:0}.opacity-0{opacity:0}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.p-2{padding:.5rem}.p-3{padding:.75rem}.py-1{padding-top:.25rem;padding-bottom:.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}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.pt-1{padding-top:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pr-4{padding-right:1rem}.pt-6{padding-top:1.5rem}.pb-6{padding-bottom:1.5rem}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.right-0{right:0}.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-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)}.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)}.text-left{text-align:left}.text-center{text-align:center}.text-white{color:#fff}.text-black{color:#000}.text-gray-400{color:#9fa6b2}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-900{color:#161e2e}.text-red-600{color:#e02424}.text-orange-400{color:#ff8a4c}.text-orange-500{color:#ff5a1f}.text-yellow-400{color:#e3a008}.text-green-400{color:#31c48d}.text-green-600{color:#057a55}.text-green-800{color:#03543f}.text-blue-500{color:#3f83f8}.text-blue-700{color:#1a56db}.text-indigo-100{color:#e5edff}.text-indigo-400{color:#8da2fb}.text-indigo-500{color:#6875f5}.text-indigo-600{color:#5850ec}.hover\:text-white:hover{color:#fff}.hover\:text-gray-900:hover{color:#161e2e}.hover\:text-blue-700:hover{color:#1a56db}.focus\:text-white:focus{color:#fff}.focus\:text-gray-900:focus{color:#161e2e}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-2xl{font-size:1.5rem}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-56{width:14rem}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-4\/12{width:33.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}@media (min-width:640px){.sm\:rounded-md{border-radius:.375rem}.sm\:grid{display:grid}.sm\:leading-9{line-height:2.25rem}.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\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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\: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\:mt-0{margin-top:0}.md\:ml-4{margin-left:1rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:text-base{font-size:1rem}}@media (min-width:1024px){.lg\:rounded-full{border-radius:9999px}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.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\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}}@media (min-width:1280px){.xl\:pb-4{padding-bottom:1rem}}
|
lite/admin/js/email-subscribers-admin.js
CHANGED
@@ -263,6 +263,8 @@
|
|
263 |
//preview broadcast
|
264 |
// ig_es_preview_broadcast
|
265 |
jQuery(document).on('click', '#ig_es_preview_broadcast', function(e) {
|
|
|
|
|
266 |
if (jQuery('.wp-editor-boradcast').val() !== '') {
|
267 |
jQuery('.es-form').find('form').attr('target', '_blank');
|
268 |
jQuery('.es-form').find('form').find('#es_broadcast_preview').val('preview');
|
@@ -285,4 +287,4 @@
|
|
285 |
|
286 |
function checkDelete() {
|
287 |
return confirm('Are you sure?');
|
288 |
-
}
|
263 |
//preview broadcast
|
264 |
// ig_es_preview_broadcast
|
265 |
jQuery(document).on('click', '#ig_es_preview_broadcast', function(e) {
|
266 |
+
// Trigger save event for content of wp_editor instances before processing it.
|
267 |
+
window.tinyMCE.triggerSave();
|
268 |
if (jQuery('.wp-editor-boradcast').val() !== '') {
|
269 |
jQuery('.es-form').find('form').attr('target', '_blank');
|
270 |
jQuery('.es-form').find('form').find('#es_broadcast_preview').val('preview');
|
287 |
|
288 |
function checkDelete() {
|
289 |
return confirm('Are you sure?');
|
290 |
+
}
|
lite/admin/partials/dashboard.php
CHANGED
@@ -46,14 +46,7 @@ $templates_url = admin_url( 'edit.php?post_type=es_template' );
|
|
46 |
$settings_url = admin_url( 'admin.php?page=es_settings' );
|
47 |
$facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
|
48 |
|
49 |
-
$topics =
|
50 |
-
array( 'title' => __( 'Prevent Your Email From Landing In Spam', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx5' ),
|
51 |
-
array( 'title' => __( '8 Tips To Improve Email Open Rates', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx6' ),
|
52 |
-
array( 'title' => __( '<b>Email Subscribers Secret Club</b>', 'email_subscribers' ), 'link' => 'https://www.facebook.com/groups/2298909487017349/', 'label' => __( 'Join Now', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' ),
|
53 |
-
array( 'title' => __( 'Best Way To Keep Customers Engaged', 'email_subscribers' ), 'link' => 'https://www.icegram.com/ymrn' ),
|
54 |
-
array( 'title' => __( 'Access Control', 'email_subscribers' ), 'link' => 'https://www.icegram.com/81z9' ),
|
55 |
-
array( 'title' => __( 'Block Spammers Using Captcha', 'email_subscribers' ), 'link' => 'https://www.icegram.com/3jy4' ),
|
56 |
-
);
|
57 |
|
58 |
$topics_indexes = array_rand( $topics, 3 );
|
59 |
|
@@ -173,7 +166,6 @@ $topics_indexes = array_rand( $topics, 3 );
|
|
173 |
<div class="flex-1 min-w-0">
|
174 |
<div class="overflow-hidden">
|
175 |
<ul>
|
176 |
-
|
177 |
<?php foreach ( $topics_indexes as $index ) { ?>
|
178 |
<li class="border-b border-gray-200">
|
179 |
<a href="<?php echo $topics[ $index ]['link']; ?>" class="block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out" target="_blank">
|
46 |
$settings_url = admin_url( 'admin.php?page=es_settings' );
|
47 |
$facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
|
48 |
|
49 |
+
$topics = ES_Common::get_useful_articles();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
$topics_indexes = array_rand( $topics, 3 );
|
52 |
|
166 |
<div class="flex-1 min-w-0">
|
167 |
<div class="overflow-hidden">
|
168 |
<ul>
|
|
|
169 |
<?php foreach ( $topics_indexes as $index ) { ?>
|
170 |
<li class="border-b border-gray-200">
|
171 |
<a href="<?php echo $topics[ $index ]['link']; ?>" class="block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out" target="_blank">
|
lite/admin/partials/help.php
CHANGED
@@ -6,144 +6,212 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
6 |
}
|
7 |
|
8 |
?>
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
</div>
|
30 |
</div>
|
31 |
-
<div class="right-blog">
|
32 |
|
33 |
-
|
|
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
'center' => false,
|
38 |
-
'show_icon' => false
|
39 |
-
);
|
40 |
|
41 |
-
|
42 |
-
?>
|
43 |
|
44 |
-
|
45 |
-
<h3><?php echo __( 'Database Migration', 'email-subscribers' ); ?></h3>
|
46 |
-
|
47 |
-
<p><?php echo __( 'If you found duplicate campaigns, lists, forms, reports after upgrading from Email Subscribers 3.5.x to 4.x and want to run the database migration again to fix this, please click the below <b>Run the updater</b> button.', 'email-subscribers' ); ?></p>
|
48 |
-
|
49 |
-
<p><?php echo __( 'Once you click on <b>Run the updater</b> button, it will run the migration process from 3.5.x once again. So, if you have created new campaigns, forms or lists after migration to 4.x earlier, you will lose those data. So, make sure you have a backup with you.', 'email-subscribers' ); ?></p>
|
50 |
-
|
51 |
-
<p class="submit">
|
52 |
-
<a href="<?php echo esc_url( $update_url ); ?>" class="es-update-now button-primary"><?php echo __( 'Run the updater', 'email-subscribers' ); ?></a>
|
53 |
-
</p>
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
</div>
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
} ?>
|
63 |
-
|
64 |
-
<div class="subscribe-form">
|
65 |
-
<h4><?php echo __( 'Additional form settings', 'email-subscribers' ); ?></h4>
|
66 |
-
<ul>
|
67 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-redirect-subscribers-to-a-new-page-url-after-successful-sign-up/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to Redirect Subscribers to a new page/url after successful sign up?', 'email-subscribers' ); ?></a></li>
|
68 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-add-captcha-in-subscribe-form-of-email-subscribers/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to add captcha in Subscribe form of Email Subscribers?', 'email-subscribers' ); ?></a></li>
|
69 |
</ul>
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-import-or-export-email-addresses/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to Import or Export Email Addresses?', 'email-subscribers' ); ?></a></li>
|
78 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-add-update-existing-subscribers-group/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to Add/Update Existing Subscribers List & Status?', 'email-subscribers' ); ?></a></li>
|
79 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-change-update-translate-any-texts-from-email-subscribers/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to change/update/translate any texts from the plugin?', 'email-subscribers' ); ?></a></li>
|
80 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-add-unsubscribe-link-in-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to add Unsubscribe link in emails?', 'email-subscribers' ); ?></a></li>
|
81 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-check-sent-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to check sent emails?', 'email-subscribers' ); ?></a></li>
|
82 |
-
</ul>
|
83 |
-
</div>
|
84 |
</div>
|
85 |
-
</div>
|
86 |
|
87 |
-
|
88 |
-
<div class="feature-blog">
|
89 |
-
<h3><?php echo __( 'Newsletters', 'email-subscribers' ); ?></h3>
|
90 |
-
<ul>
|
91 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Create and Send Newsletter Emails', 'email-subscribers' ); ?></a></li>
|
92 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-newsletters/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Keywords in the Newsletters', 'email-subscribers' ); ?></a></li>
|
93 |
-
</ul>
|
94 |
-
</div>
|
95 |
-
<div class="feature-blog">
|
96 |
-
<h3><?php echo __( 'Cron Job Setup', 'email-subscribers' ); ?></h3>
|
97 |
-
<ul>
|
98 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-schedule-cron-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'What is Cron and how to Schedule Cron Emails?', 'email-subscribers' ); ?></a></li>
|
99 |
-
<li><a target="_blank" href="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"><?php echo __( 'Schedule Cron Emails in cPanel', 'email-subscribers' ); ?></a></li>
|
100 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-parallels-plesk/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Schedule Cron Emails in Parallels Plesk', 'email-subscribers' ); ?></a></li>
|
101 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-what-to-do-if-hosting-doesnt-support-cron-jobs/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Hosting doesn’t support Cron Jobs?', 'email-subscribers' ); ?></a></li>
|
102 |
-
</ul>
|
103 |
-
</div>
|
104 |
-
<div class="feature-blog">
|
105 |
-
<h3><?php echo __( '[GDPR] Email Subscribers', 'email-subscribers' ); ?></h3>
|
106 |
-
<ul>
|
107 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-gdpr-how-to-enable-consent-checkbox-in-the-subscription-form/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'How to enable consent checkbox in the subscribe form?', 'email-subscribers' ); ?></a></li>
|
108 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-gdpr-what-data-email-subscribers-stores-on-your-end/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'What data Email Subscribers stores on your end?', 'email-subscribers' ); ?></a></li>
|
109 |
-
</ul>
|
110 |
-
</div>
|
111 |
-
<div class="feature-blog">
|
112 |
-
<h3><?php echo __( 'Post Notifications', 'email-subscribers' ); ?></h3>
|
113 |
-
<ul>
|
114 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-create-and-send-post-notification-emails-when-new-posts-are-published/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Create and Send Post Notification Emails when new posts are published', 'email-subscribers' ); ?></a></li>
|
115 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-post-notifications/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Keywords in the Post Notifications', 'email-subscribers' ); ?></a></li>
|
116 |
-
<li><a target="_blank" href="https://www.icegram.com/documentation/es-how-to-send-a-sample-new-post-notification-email-to-testgroup-myself/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page"><?php echo __( 'Send a test post notification email to myself/testgroup', 'email-subscribers' ); ?></a></li>
|
117 |
-
</ul>
|
118 |
-
</div>
|
119 |
-
<div class="feature-blog">
|
120 |
-
<h3><?php echo __( 'Troubleshooting Steps', 'email-subscribers' ); ?></h3>
|
121 |
<ul>
|
122 |
-
|
123 |
-
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
</ul>
|
126 |
</div>
|
|
|
127 |
</div>
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
<
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
</div>
|
148 |
</div>
|
|
|
149 |
</div>
|
6 |
}
|
7 |
|
8 |
?>
|
9 |
+
<?php
|
10 |
+
global $ig_es_tracker, $ig_es_feedback;
|
11 |
+
$ig_install_url = admin_url( 'plugin-install.php?s=icegram&tab=search&type=term' );
|
12 |
+
$rainmaker_install_url = admin_url( 'plugin-install.php?s=rainmaker&tab=search&type=term' );
|
13 |
+
$smart_manager_install_url = admin_url( 'plugin-install.php?s=smart+manager&tab=search&type=term' );
|
14 |
+
$tlwp_install_url = admin_url( 'plugin-install.php?s=temporary+login+without+password&tab=search&type=term' );
|
15 |
+
$deactivate_link = admin_url( 'plugins.php' );
|
16 |
+
$icegram_plugin = 'icegram/icegram.php';
|
17 |
+
$rainmaker_plugin = 'icegram-rainmaker/icegram-rainmaker.php';
|
18 |
+
$smart_manager_plugin = 'smart-manager-for-wp-e-commerce/smart-manager';
|
19 |
+
$temporary_login = admin_url( 'plugin-install.php?s=temporary+login+without+password&tab=search&type=term' );
|
20 |
+
$active_plugins = $ig_es_tracker::get_active_plugins();
|
21 |
+
$inactive_plugins = $ig_es_tracker::get_inactive_plugins();
|
22 |
+
$all_plugins = $ig_es_tracker::get_plugins();
|
23 |
+
|
24 |
+
$contact_us_btn_class = "ig-feedback-button-{$ig_es_feedback->plugin}";
|
25 |
+
|
26 |
+
$plugins = array(
|
27 |
+
array(
|
28 |
+
'title' => __( 'Icegram', 'email-subscribers' ),
|
29 |
+
'logo' => 'https://ps.w.org/icegram/assets/icon-128x128.png',
|
30 |
+
'desc' => __( 'The best WP popup plugin that creates a popup. Customize popup, target popups to show offers, email signups, social buttons, etc and increase conversions on your website.', 'email-subscribers' ),
|
31 |
+
'name' => 'icegram/icegram.php',
|
32 |
+
'install_url' => $ig_install_url,
|
33 |
+
'plugin_url' => 'https://wordpress.org/plugins/icegram/',
|
34 |
+
),
|
35 |
+
array(
|
36 |
+
'title' => __( 'Rainmaker', 'email-subscribers' ),
|
37 |
+
'logo' => 'https://ps.w.org/icegram-rainmaker/assets/icon-128x128.png',
|
38 |
+
'desc' => __( 'Get readymade contact forms, email subscription forms and custom forms for your website. Choose from beautiful templates and get started within seconds', 'email-subscribers' ),
|
39 |
+
'name' => 'icegram-rainmaker/icegram-rainmaker.php',
|
40 |
+
'install_url' => $rainmaker_install_url,
|
41 |
+
'plugin_url' => 'https://wordpress.org/plugins/icegram-rainmaker/',
|
42 |
+
|
43 |
+
),
|
44 |
+
|
45 |
+
array(
|
46 |
+
'title' => __( 'Smart Manager For WooCommerce', 'email-subscribers' ),
|
47 |
+
'logo' => 'https://ps.w.org/smart-manager-for-wp-e-commerce/assets/icon-128x128.png',
|
48 |
+
'desc' => __( 'The #1 and a powerful tool to manage stock, inventory from a single place. Super quick and super easy', 'email-subscribers' ),
|
49 |
+
'name' => 'smart-manager-for-wp-e-commerce/smart-manager.php',
|
50 |
+
'install_url' => $smart_manager_install_url,
|
51 |
+
'plugin_url' => 'https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/',
|
52 |
+
),
|
53 |
+
|
54 |
+
array(
|
55 |
+
'title' => __( 'Temporary Login Without Password', 'email-subscribers' ),
|
56 |
+
'logo' => 'https://ps.w.org/temporary-login-without-password/assets/icon-128x128.png',
|
57 |
+
'desc' => __( 'Create self-expiring, automatic login links for WordPress. Give them to developers when they ask for admin access to your site.', 'email-subscribers' ),
|
58 |
+
'name' => 'temporary-login-without-password/temporary-login-without-password.php',
|
59 |
+
'install_url' => $tlwp_install_url,
|
60 |
+
'plugin_url' => 'https://wordpress.org/plugins/temporary-login-without-password/',
|
61 |
+
),
|
62 |
+
);
|
63 |
+
|
64 |
+
$topics = ES_Common::get_useful_articles();
|
65 |
+
|
66 |
+
$topics_indexes = array_rand( $topics, 5 );
|
67 |
+
|
68 |
+
$articles = array(
|
69 |
+
array( 'title' => 'Create and Send Newsletter Emails', 'link' => 'https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
70 |
+
array( 'title' => 'Schedule Cron Emails in cPanel', 'link' => 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
71 |
+
array( 'title' => 'How to enable consent checkbox in the subscribe form?', 'link' => 'https://www.icegram.com/documentation/es-gdpr-how-to-enable-consent-checkbox-in-the-subscription-form/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
72 |
+
array( 'title' => 'What data Email Subscribers stores on your end?', 'link' => 'https://www.icegram.com/documentation/es-gdpr-what-data-email-subscribers-stores-on-your-end/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
73 |
+
array( 'title' => 'Create and Send Post Notification Emails when new posts are published', 'link' => 'https://www.icegram.com/documentation/es-how-to-create-and-send-post-notification-emails-when-new-posts-are-published/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
74 |
+
array( 'title' => 'Keywords in the Broadcast', 'link' => 'https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-newsletters/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
75 |
+
array( 'title' => 'Keywords in the Post Notifications', 'link' => 'https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-post-notifications/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page', 'class' => 'font-medium text-blue-500 hover:text-blue-700' ),
|
76 |
+
);
|
77 |
+
|
78 |
+
?>
|
79 |
+
<h3 class="text-gray-700 font-medium text-2xl pl-2 my-3 "><?php _e( 'Help & Info', 'email-subscribers' ) ?></h3>
|
80 |
+
<div class="wrap font-sans">
|
81 |
+
<div class="container w-full flex flex-wrap border rounded-lg bg-white shadow ">
|
82 |
+
<div class="inline-block pl-2 border-r border-dashed px-2 w-4/12 ">
|
83 |
+
<div class="max-h-full" id="features_display">
|
84 |
+
<div class="mt-2 pt-6 pb-6 pl-2">
|
85 |
+
<ul class="mx-6 list-disc leading-relaxed">
|
86 |
+
<?php foreach ( $articles as $article ) { ?>
|
87 |
+
<li><a target="_blank" href="<?php echo $article['link']; ?>" class="<?php echo $article['class']; ?>"><?php echo $article['title']; ?></a></li>
|
88 |
+
<?php } ?>
|
89 |
+
</ul>
|
90 |
+
</div>
|
91 |
</div>
|
92 |
</div>
|
|
|
93 |
|
94 |
+
<div class="inline-block w-4/12 border-r border-dashed">
|
95 |
+
<?php if ( ES()->is_current_user_administrator() && $enable_manual_update ) { ?>
|
96 |
|
97 |
+
<div class="database-migration bg-gray-200 px-4 py-4">
|
98 |
+
<h3 class="mt-4 mb-6 text-center text-2xl font-medium text-gray-700"><?php echo __( 'Database Migration', 'email-subscribers' ); ?></h3>
|
|
|
|
|
|
|
99 |
|
100 |
+
<p class="py-2 px-2"><?php echo __( 'If you found duplicate campaigns, lists, forms, reports after upgrading from Email Subscribers 3.5.x to 4.x and want to run the database migration again to fix this, please click the below <b>Run the updater</b> button.', 'email-subscribers' ); ?></p>
|
|
|
101 |
|
102 |
+
<p class="py-2 px-2"><?php echo __( 'Once you click on <b>Run the updater</b> button, it will run the migration process from 3.5.x once again. So, if you have created new campaigns, forms or lists after migration to 4.x earlier, you will lose those data. So, make sure you have a backup with you.', 'email-subscribers' ); ?></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
|
104 |
+
<div class="flex w-2/3 py-2 justify-start">
|
105 |
+
<span class="rounded-md shadow-sm ">
|
106 |
+
<a href="<?php echo esc_url( $update_url ); ?>"><button type="button"
|
107 |
+
class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 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 __( 'Run the updater',
|
108 |
+
'email-subscribers' ); ?> </button></a>
|
109 |
+
</span>
|
110 |
+
</div>
|
111 |
</div>
|
112 |
+
<?php } else { ?>
|
113 |
+
<h3 class="mt-4 mb-6 text-center text-2xl font-medium text-gray-700"><?php _e( 'Get Help?', 'email-subscribers' ); ?></h3>
|
114 |
+
<ul class="mx-6 list-disc leading-relaxed">
|
115 |
+
<li>Install & Activate <a href="https://www.icegram.com/r7gg" target="_blank" class="text-indigo-600">Temporary Login Without Password</a> plugin</li>
|
116 |
+
<li>Create & Copy new Temporary Login link. <a href="https://www.icegram.com/r7gg" target="_blank" class="text-indigo-600">Learn why you should use this plugin</a></li>
|
117 |
+
<li>Click on <b>Contact US</b> button and let us know your queries along with Temporary Login Link </li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
</ul>
|
119 |
+
<div class="flex w-2/3 py-2 justify-center <?php echo $contact_us_btn_class; ?>">
|
120 |
+
<span class="rounded-md shadow-sm">
|
121 |
+
<button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 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 __( 'Contact US',
|
122 |
+
'email-subscribers' ); ?> </button>
|
123 |
+
</span>
|
124 |
+
</div>
|
125 |
+
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
</div>
|
|
|
127 |
|
128 |
+
<div class="inline-block w-4/12 ">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
<ul>
|
130 |
+
<?php foreach ( $topics_indexes as $index ) { ?>
|
131 |
+
<li class="border-b border-gray-200">
|
132 |
+
<a href="<?php echo $topics[ $index ]['link']; ?>" class="block hover:bg-gray-50 focus:outline-none focus:bg-gray-50 transition duration-150 ease-in-out" target="_blank">
|
133 |
+
|
134 |
+
<div class="flex items-center md:justify-between px-2 py-2 sm:px-2">
|
135 |
+
<div class="text-sm leading-5 text-gray-900">
|
136 |
+
<?php echo $topics[ $index ]['title'];
|
137 |
+
if ( ! empty( $topics[ $index ]['label'] ) ) { ?>
|
138 |
+
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full <?php echo $topics[ $index ]['label_class'] ?>"><?php echo $topics[ $index ]['label']; ?></span>
|
139 |
+
<?php } ?>
|
140 |
+
</div>
|
141 |
+
<div>
|
142 |
+
<svg class="h-5 w-5 text-gray-400" fill="currentColor" viewBox="0 0 20 20">
|
143 |
+
<path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
|
144 |
+
</svg>
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
</a>
|
148 |
+
</li>
|
149 |
+
<?php } ?>
|
150 |
</ul>
|
151 |
</div>
|
152 |
+
|
153 |
</div>
|
154 |
+
|
155 |
+
|
156 |
+
<div class="container w-full flex flex-wrap mt-4">
|
157 |
+
<div class="block mt-6">
|
158 |
+
<h3 class="text-gray-700 font-medium text-2xl "><?php _e( 'Other awesome plugins from same author', 'email_subscribers' ); ?></h3>
|
159 |
+
</div>
|
160 |
+
<div class="grid grid-cols-3 py-2 my-4 w-full">
|
161 |
+
<?php foreach ( $plugins as $plugin ) { ?>
|
162 |
+
<div class="flex flex-col mr-3 bg-white rounded-lg border shadow my-4">
|
163 |
+
<div class="flex h-48">
|
164 |
+
<div class="flex pl-1">
|
165 |
+
<div class="flex w-1/4 rounded">
|
166 |
+
<div class="flex flex-col h-6 w-full">
|
167 |
+
<div>
|
168 |
+
<img class="border-0 mx-auto my-4 h-15" src="<?php echo $plugin['logo']; ?>" alt="">
|
169 |
+
</div>
|
170 |
+
</div>
|
171 |
+
</div>
|
172 |
+
<div class="flex w-3/4 pt-2">
|
173 |
+
<div class="flex flex-col">
|
174 |
+
<div class="flex w-full">
|
175 |
+
<a href="<?php echo $plugin['plugin_url']; ?>" target="_blank"><h3 class="font-medium text-lg text-indigo-600 mt-2 pl-2 pb-2"><?php echo $plugin['title']; ?></h3></a>
|
176 |
+
</div>
|
177 |
+
<div class="flex w-full pl-2 leading-normal xl:pb-4 lg:pb-2 md:pb-2">
|
178 |
+
<h4 class="text-sm text-gray-700 pr-4 pt-1"><?php echo $plugin['desc']; ?></h4>
|
179 |
+
</div>
|
180 |
+
</div>
|
181 |
+
</div>
|
182 |
+
</div>
|
183 |
+
</div>
|
184 |
+
<div class="flex flex-row border-t mb-0">
|
185 |
+
<div class="flex w-2/3 py-5 px-3 text-sm"><?php _e( 'Status', 'email-subscribers' ); ?>:
|
186 |
+
<?php if ( in_array( $plugin['name'], $active_plugins ) ) { ?>
|
187 |
+
<span class="font-bold text-green-600"> <?php _e( 'Active', 'email_subscribers' ); ?></span>
|
188 |
+
<?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
|
189 |
+
<span class="font-bold text-red-600"> <?php _e( 'Inactive', 'email_subscribers' ); ?></span>
|
190 |
+
<?php } else { ?>
|
191 |
+
<span class="font-bold text-orange-500"> <?php _e( 'Not Installed', 'email_subscribers' ); ?></span>
|
192 |
+
<?php } ?>
|
193 |
+
</div>
|
194 |
+
<div class="flex w-1/3 py-3 md:pr-4 justify-center">
|
195 |
+
<span class="rounded-md shadow-sm ">
|
196 |
+
<?php if ( ! in_array( $plugin['name'], $active_plugins ) ) { ?>
|
197 |
+
<a href="<?php echo $plugin['install_url']; ?>">
|
198 |
+
<?php }
|
199 |
+
|
200 |
+
if ( ! in_array( $plugin['name'], $all_plugins ) ) { ?>
|
201 |
+
<button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-white text-sm leading-5 font-medium text-white bg-green-600 hover:bg-green-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150">
|
202 |
+
<?php _e( 'Install', 'email_subscribers' ); ?> </button>
|
203 |
+
<?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
|
204 |
+
<button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 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">
|
205 |
+
<?php _e( 'Activate', 'email_subscribers' ); ?> </button>
|
206 |
+
<?php } ?>
|
207 |
+
</a>
|
208 |
+
</span>
|
209 |
+
</div>
|
210 |
+
</div>
|
211 |
+
</div>
|
212 |
+
<?php } ?>
|
213 |
+
|
214 |
</div>
|
215 |
</div>
|
216 |
+
|
217 |
</div>
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -832,11 +832,10 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
832 |
$this->loader->add_action( 'plugins_loaded', $plugin_admin, 'plugins_loaded' );
|
833 |
|
834 |
$this->loader->add_filter( 'set-screen-option', $plugin_admin, 'save_screen_options', 20, 3 );
|
835 |
-
|
836 |
$this->loader->add_action( 'wp_ajax_count_contacts_by_list', $plugin_admin, 'count_contacts_by_list' );
|
837 |
$this->loader->add_action( 'wp_ajax_get_template_content', $plugin_admin, 'get_template_content' );
|
838 |
-
|
839 |
$this->loader->add_action( 'in_admin_header', $plugin_admin, 'remove_other_admin_notices' );
|
|
|
840 |
}
|
841 |
|
842 |
/**
|
@@ -970,7 +969,6 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
970 |
public function is_es_admin_screen( $screen_id = '' ) {
|
971 |
|
972 |
$current_screen_id = $this->get_current_screen_id();
|
973 |
-
|
974 |
// Check for specific admin screen id if passed.
|
975 |
if ( ! empty( $screen_id ) ) {
|
976 |
if ( $current_screen_id === $screen_id ) {
|
@@ -981,11 +979,9 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
981 |
}
|
982 |
|
983 |
$es_admin_screens = $this->get_es_admin_screens();
|
984 |
-
|
985 |
if ( in_array( $current_screen_id, $es_admin_screens ) ) {
|
986 |
return true;
|
987 |
}
|
988 |
-
|
989 |
return false;
|
990 |
}
|
991 |
|
@@ -1009,6 +1005,17 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1009 |
return ( $current_screen ? $current_screen->id : '' );
|
1010 |
}
|
1011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1012 |
/**
|
1013 |
* Register Widget Class
|
1014 |
*
|
@@ -1102,7 +1109,6 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
1102 |
$event_prefix = 'esstarter.';
|
1103 |
}
|
1104 |
|
1105 |
-
|
1106 |
$ig_es_feedback = new $ig_es_feedback_class( $name, $plugin, $plugin_abbr, $event_prefix, false );
|
1107 |
|
1108 |
$ig_es_feedback->render_deactivate_feedback();
|
832 |
$this->loader->add_action( 'plugins_loaded', $plugin_admin, 'plugins_loaded' );
|
833 |
|
834 |
$this->loader->add_filter( 'set-screen-option', $plugin_admin, 'save_screen_options', 20, 3 );
|
|
|
835 |
$this->loader->add_action( 'wp_ajax_count_contacts_by_list', $plugin_admin, 'count_contacts_by_list' );
|
836 |
$this->loader->add_action( 'wp_ajax_get_template_content', $plugin_admin, 'get_template_content' );
|
|
|
837 |
$this->loader->add_action( 'in_admin_header', $plugin_admin, 'remove_other_admin_notices' );
|
838 |
+
|
839 |
}
|
840 |
|
841 |
/**
|
969 |
public function is_es_admin_screen( $screen_id = '' ) {
|
970 |
|
971 |
$current_screen_id = $this->get_current_screen_id();
|
|
|
972 |
// Check for specific admin screen id if passed.
|
973 |
if ( ! empty( $screen_id ) ) {
|
974 |
if ( $current_screen_id === $screen_id ) {
|
979 |
}
|
980 |
|
981 |
$es_admin_screens = $this->get_es_admin_screens();
|
|
|
982 |
if ( in_array( $current_screen_id, $es_admin_screens ) ) {
|
983 |
return true;
|
984 |
}
|
|
|
985 |
return false;
|
986 |
}
|
987 |
|
1005 |
return ( $current_screen ? $current_screen->id : '' );
|
1006 |
}
|
1007 |
|
1008 |
+
/**
|
1009 |
+
* Check if the current user is admin
|
1010 |
+
*
|
1011 |
+
* @return bool
|
1012 |
+
*
|
1013 |
+
* @since 4.4.2
|
1014 |
+
*/
|
1015 |
+
public function is_current_user_administrator() {
|
1016 |
+
return current_user_can('administrator');
|
1017 |
+
}
|
1018 |
+
|
1019 |
/**
|
1020 |
* Register Widget Class
|
1021 |
*
|
1109 |
$event_prefix = 'esstarter.';
|
1110 |
}
|
1111 |
|
|
|
1112 |
$ig_es_feedback = new $ig_es_feedback_class( $name, $plugin, $plugin_abbr, $event_prefix, false );
|
1113 |
|
1114 |
$ig_es_feedback->render_deactivate_feedback();
|
lite/includes/class-es-common.php
CHANGED
@@ -1232,4 +1232,28 @@ Class ES_Common {
|
|
1232 |
|
1233 |
return substr( md5( uniqid() . uniqid() . wp_rand( $length, 64 ) ), 0, $length );
|
1234 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1235 |
}
|
1232 |
|
1233 |
return substr( md5( uniqid() . uniqid() . wp_rand( $length, 64 ) ), 0, $length );
|
1234 |
}
|
1235 |
+
|
1236 |
+
/**
|
1237 |
+
* Get useful article links
|
1238 |
+
*
|
1239 |
+
* @return array
|
1240 |
+
*
|
1241 |
+
* @since 4.4.2
|
1242 |
+
*/
|
1243 |
+
public static function get_useful_articles() {
|
1244 |
+
|
1245 |
+
$articles = array(
|
1246 |
+
array( 'title' => __( '8 Tips To Improve Email Open Rates', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx5' ),
|
1247 |
+
array( 'title' => __( 'Prevent Your Email From Landing In Spam', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx6' ),
|
1248 |
+
array( 'title' => __( '<b>Email Subscribers Secret Club</b>', 'email_subscribers' ), 'link' => 'https://www.facebook.com/groups/2298909487017349/', 'label' => __( 'Join Now', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' ),
|
1249 |
+
array( 'title' => __( 'Best Way To Keep Customers Engaged', 'email_subscribers' ), 'link' => 'https://www.icegram.com/ymrn' ),
|
1250 |
+
array( 'title' => __( 'Access Control', 'email_subscribers' ), 'link' => 'https://www.icegram.com/81z9' ),
|
1251 |
+
array( 'title' => __( 'Prevent Spam Subscription Using Captcha', 'email_subscribers' ), 'link' => 'https://www.icegram.com/3jy4' ),
|
1252 |
+
array( 'title' => __( 'Email Subscribers PRO', 'email_subscribers' ), 'link' => 'https://www.icegram.com/er6r', 'label' => __( 'Lifetime', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' )
|
1253 |
+
);
|
1254 |
+
|
1255 |
+
return $articles;
|
1256 |
+
|
1257 |
+
}
|
1258 |
+
|
1259 |
}
|
lite/includes/class-es-install.php
CHANGED
@@ -197,6 +197,11 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
197 |
'ig_es_update_441_create_tables',
|
198 |
'ig_es_update_441_migrate_audience_sync_settings',
|
199 |
'ig_es_update_441_db_version'
|
|
|
|
|
|
|
|
|
|
|
200 |
)
|
201 |
|
202 |
);
|
@@ -1643,6 +1648,7 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
1643 |
} else {
|
1644 |
$file = $upload_dir['basedir'] . '/' . $filename;
|
1645 |
}
|
|
|
1646 |
file_put_contents( $file, $image_data );
|
1647 |
|
1648 |
$wp_filetype = wp_check_filetype( $filename, null );
|
@@ -1725,11 +1731,16 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
1725 |
'administrator' => 'yes'
|
1726 |
);
|
1727 |
|
|
|
|
|
|
|
|
|
1728 |
$es_roles_default_permission['campaigns'] = $campaigns_permission;
|
1729 |
$es_roles_default_permission['reports'] = $reports_permission;
|
1730 |
$es_roles_default_permission['sequence'] = $sequence_permission;
|
1731 |
$es_roles_default_permission['audience'] = $audience_permission;
|
1732 |
$es_roles_default_permission['forms'] = $forms_permission;
|
|
|
1733 |
|
1734 |
return $es_roles_default_permission;
|
1735 |
}
|
197 |
'ig_es_update_441_create_tables',
|
198 |
'ig_es_update_441_migrate_audience_sync_settings',
|
199 |
'ig_es_update_441_db_version'
|
200 |
+
),
|
201 |
+
|
202 |
+
'4.4.2' => array(
|
203 |
+
'ig_es_update_442_set_workflows_default_permission',
|
204 |
+
'ig_es_update_442_db_version'
|
205 |
)
|
206 |
|
207 |
);
|
1648 |
} else {
|
1649 |
$file = $upload_dir['basedir'] . '/' . $filename;
|
1650 |
}
|
1651 |
+
|
1652 |
file_put_contents( $file, $image_data );
|
1653 |
|
1654 |
$wp_filetype = wp_check_filetype( $filename, null );
|
1731 |
'administrator' => 'yes'
|
1732 |
);
|
1733 |
|
1734 |
+
$workflows_permission = array(
|
1735 |
+
'administrator' => 'yes'
|
1736 |
+
);
|
1737 |
+
|
1738 |
$es_roles_default_permission['campaigns'] = $campaigns_permission;
|
1739 |
$es_roles_default_permission['reports'] = $reports_permission;
|
1740 |
$es_roles_default_permission['sequence'] = $sequence_permission;
|
1741 |
$es_roles_default_permission['audience'] = $audience_permission;
|
1742 |
$es_roles_default_permission['forms'] = $forms_permission;
|
1743 |
+
$es_roles_default_permission['workflows'] = $workflows_permission;
|
1744 |
|
1745 |
return $es_roles_default_permission;
|
1746 |
}
|
lite/includes/classes/class-es-campaigns-table.php
CHANGED
@@ -42,6 +42,7 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
42 |
$this->db = new ES_DB_Campaigns();
|
43 |
|
44 |
add_action( 'ig_es_campaign_deleted', array( $this, 'delete_child_campaigns' ), 10, 1 );
|
|
|
45 |
}
|
46 |
|
47 |
/**
|
@@ -79,6 +80,7 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
79 |
$this->db->delete_campaigns( $child_campaign_ids );
|
80 |
}
|
81 |
}
|
|
|
82 |
|
83 |
/**
|
84 |
* Render Campaigns table
|
42 |
$this->db = new ES_DB_Campaigns();
|
43 |
|
44 |
add_action( 'ig_es_campaign_deleted', array( $this, 'delete_child_campaigns' ), 10, 1 );
|
45 |
+
|
46 |
}
|
47 |
|
48 |
/**
|
80 |
$this->db->delete_campaigns( $child_campaign_ids );
|
81 |
}
|
82 |
}
|
83 |
+
|
84 |
|
85 |
/**
|
86 |
* Render Campaigns table
|
lite/includes/classes/class-es-contacts-table.php
CHANGED
@@ -757,8 +757,10 @@ class ES_Contacts_Table extends WP_List_Table {
|
|
757 |
// Show only 4 lists
|
758 |
//$contact_lists_to_display = array_slice( $lists, 0, 4 );
|
759 |
foreach ( $lists as $list_id => $status ) {
|
|
|
760 |
if ( ! empty( $this->lists_id_name_map[ $list_id ] ) ) {
|
761 |
-
|
|
|
762 |
}
|
763 |
}
|
764 |
}
|
757 |
// Show only 4 lists
|
758 |
//$contact_lists_to_display = array_slice( $lists, 0, 4 );
|
759 |
foreach ( $lists as $list_id => $status ) {
|
760 |
+
|
761 |
if ( ! empty( $this->lists_id_name_map[ $list_id ] ) ) {
|
762 |
+
|
763 |
+
$list_str .= '<span class="es_list_contact_status ' . strtolower( $status ) . '" title="' . ucwords( $status ) . '">' . $this->lists_id_name_map[ $list_id ] . '</span>';
|
764 |
}
|
765 |
}
|
766 |
}
|
lite/includes/classes/class-es-newsletters.php
CHANGED
@@ -57,7 +57,7 @@ class ES_Newsletters {
|
|
57 |
$broadcast_data['list_ids'] = $list_id;
|
58 |
$broadcast_data['status'] = 1;
|
59 |
$meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
|
60 |
-
$meta['pre_header'] = $broadcast_data['pre_header'];
|
61 |
$broadcast_data['meta'] = maybe_serialize( $meta );
|
62 |
self::es_send_email_callback( $broadcast_data );
|
63 |
|
@@ -72,13 +72,13 @@ class ES_Newsletters {
|
|
72 |
|
73 |
}
|
74 |
|
75 |
-
$this->prepare_newsletter_settings_form();
|
76 |
} elseif ( 'preview' === $preview ) {
|
77 |
// $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
|
78 |
if ( empty( $broadcast_data['body'] ) ) {
|
79 |
$message = __( 'Please add message content', 'email-subscribers' );
|
80 |
ES_Common::show_message( $message, 'error' );
|
81 |
-
$this->prepare_newsletter_settings_form();
|
82 |
} else {
|
83 |
//content validation
|
84 |
$template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
|
@@ -90,12 +90,23 @@ class ES_Newsletters {
|
|
90 |
}
|
91 |
}
|
92 |
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
$newsletter_data = array();
|
95 |
$templates = ES_Common::prepare_templates_dropdown_options( 'newsletter' );
|
96 |
$lists = ES_Common::prepare_list_dropdown_options();
|
97 |
$from_email = ES_Common::get_ig_option( 'from_email' );
|
98 |
|
|
|
|
|
|
|
|
|
99 |
?>
|
100 |
|
101 |
<div class="wrap">
|
@@ -107,19 +118,21 @@ class ES_Newsletters {
|
|
107 |
<form method="post" action="#">
|
108 |
<div class="es_newsletters_settings_wrapper">
|
109 |
<div class="es_campaign_name_wrapper ">
|
110 |
-
<input placeholder="Add Broadcast name" type="text" class="es_newsletter_name" name="broadcast_data[name]" value="">
|
111 |
<input id="ig_es_campaign_submit_button" class="es_primary_btn" type="submit" name="submit" value="Send Broadcast">
|
112 |
<input type="hidden" name="submitted" value="submitted">
|
113 |
</div>
|
114 |
<div class="es_settings_left_pan">
|
115 |
<div class="es_settings_field">
|
116 |
-
<label><?php _e( 'From Email', 'email-subscribers' ) ?><br/><input type="email" name="broadcast_data[from_email]" value="<?php echo $
|
117 |
</div>
|
118 |
<div class="es_settings_field">
|
119 |
<label><?php _e( 'Design template', 'email-subscribers' ) ?><br/><select name="broadcast_data[template_id]" id="base_template_id"><?php echo $templates ?></select></label>
|
120 |
</div>
|
121 |
-
<div class="es_settings_field"><label><?php _e( 'Subject', 'email-subscribers' )
|
122 |
-
|
|
|
|
|
123 |
<div class="es_settings_field">
|
124 |
<label><?php _e( 'Body', 'email-subscribers' ); ?></label>
|
125 |
<?php
|
@@ -140,7 +153,7 @@ class ES_Newsletters {
|
|
140 |
<div class="es_settings_right_pan">
|
141 |
<div class="es_settings_field">
|
142 |
<label><?php _e( 'Recipients', 'email-subscribers' ) ?><br/><select name="broadcast_data[list_ids]" id="ig_es_broadcast_list_ids"><?php echo $lists ?></select></label>
|
143 |
-
|
144 |
</div>
|
145 |
<hr>
|
146 |
<div class="es_settings_field">
|
57 |
$broadcast_data['list_ids'] = $list_id;
|
58 |
$broadcast_data['status'] = 1;
|
59 |
$meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
|
60 |
+
$meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
|
61 |
$broadcast_data['meta'] = maybe_serialize( $meta );
|
62 |
self::es_send_email_callback( $broadcast_data );
|
63 |
|
72 |
|
73 |
}
|
74 |
|
75 |
+
$this->prepare_newsletter_settings_form( $broadcast_data );
|
76 |
} elseif ( 'preview' === $preview ) {
|
77 |
// $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
|
78 |
if ( empty( $broadcast_data['body'] ) ) {
|
79 |
$message = __( 'Please add message content', 'email-subscribers' );
|
80 |
ES_Common::show_message( $message, 'error' );
|
81 |
+
$this->prepare_newsletter_settings_form( $broadcast_data );
|
82 |
} else {
|
83 |
//content validation
|
84 |
$template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
|
90 |
}
|
91 |
}
|
92 |
|
93 |
+
/**
|
94 |
+
* Method to display newsletter setting form
|
95 |
+
*
|
96 |
+
* @param array $broadcast_data Posted broadcast data
|
97 |
+
*
|
98 |
+
* @since 4.4.2 Added $broadcast_data param
|
99 |
+
*/
|
100 |
+
public function prepare_newsletter_settings_form( $broadcast_data = array() ) {
|
101 |
$newsletter_data = array();
|
102 |
$templates = ES_Common::prepare_templates_dropdown_options( 'newsletter' );
|
103 |
$lists = ES_Common::prepare_list_dropdown_options();
|
104 |
$from_email = ES_Common::get_ig_option( 'from_email' );
|
105 |
|
106 |
+
$broadcast_name = ! empty( $broadcast_data['name'] ) ? $broadcast_data['name'] : '';
|
107 |
+
$broadcast_email = ! empty( $broadcast_data['from_email'] ) ? $broadcast_data['from_email'] : $from_email;
|
108 |
+
$broadcast_subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
|
109 |
+
$broadcast_pre_header = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
|
110 |
?>
|
111 |
|
112 |
<div class="wrap">
|
118 |
<form method="post" action="#">
|
119 |
<div class="es_newsletters_settings_wrapper">
|
120 |
<div class="es_campaign_name_wrapper ">
|
121 |
+
<input placeholder="Add Broadcast name" type="text" class="es_newsletter_name" name="broadcast_data[name]" value="<?php echo esc_attr( $broadcast_name ); ?>">
|
122 |
<input id="ig_es_campaign_submit_button" class="es_primary_btn" type="submit" name="submit" value="Send Broadcast">
|
123 |
<input type="hidden" name="submitted" value="submitted">
|
124 |
</div>
|
125 |
<div class="es_settings_left_pan">
|
126 |
<div class="es_settings_field">
|
127 |
+
<label><?php _e( 'From Email', 'email-subscribers' ) ?><br/><input type="email" name="broadcast_data[from_email]" value="<?php echo esc_attr( $broadcast_email ); ?>"/></label>
|
128 |
</div>
|
129 |
<div class="es_settings_field">
|
130 |
<label><?php _e( 'Design template', 'email-subscribers' ) ?><br/><select name="broadcast_data[template_id]" id="base_template_id"><?php echo $templates ?></select></label>
|
131 |
</div>
|
132 |
+
<div class="es_settings_field"><label><?php _e( 'Subject', 'email-subscribers' ) ?>
|
133 |
+
<spam class="required">*</spam>
|
134 |
+
<br/><input type="text" id="ig_es_broadcast_subject" name="broadcast_data[subject]" placeholder="" value="<?php echo esc_attr( $broadcast_subject ); ?>"/></label></div>
|
135 |
+
<!-- <div class="es_settings_field"><label><?php _e( 'Pre Header', 'email-subscribers' ) ?><br/><input placeholder="<?php _e( 'Add Pre header', 'email-subscribers' ); ?>" type="text" name="broadcast_data[pre_header]" value="<?php echo esc_attr( $broadcast_pre_header ); ?>"/></label></div> -->
|
136 |
<div class="es_settings_field">
|
137 |
<label><?php _e( 'Body', 'email-subscribers' ); ?></label>
|
138 |
<?php
|
153 |
<div class="es_settings_right_pan">
|
154 |
<div class="es_settings_field">
|
155 |
<label><?php _e( 'Recipients', 'email-subscribers' ) ?><br/><select name="broadcast_data[list_ids]" id="ig_es_broadcast_list_ids"><?php echo $lists ?></select></label>
|
156 |
+
<span class="helper" id="ig_es_total_contacts"></span>
|
157 |
</div>
|
158 |
<hr>
|
159 |
<div class="es_settings_field">
|
lite/includes/classes/class-es-reports-data.php
CHANGED
@@ -121,16 +121,21 @@ if ( ! class_exists( 'ES_Reports_Data' ) ) {
|
|
121 |
* @since 4.4.0
|
122 |
*/
|
123 |
public static function get_contacts_growth( $days = 60 ) {
|
|
|
124 |
$contacts = ES()->contacts_db->get_total_contacts_by_date();
|
125 |
|
|
|
|
|
126 |
$data = array();
|
127 |
for ( $i = $days; $i >= 0; $i -- ) {
|
128 |
$date = date( "Y-m-d", strtotime( '-' . $i . ' days' ) );
|
129 |
|
130 |
-
$
|
131 |
-
}
|
132 |
|
133 |
-
|
|
|
|
|
|
|
134 |
|
135 |
return $data;
|
136 |
}
|
121 |
* @since 4.4.0
|
122 |
*/
|
123 |
public static function get_contacts_growth( $days = 60 ) {
|
124 |
+
|
125 |
$contacts = ES()->contacts_db->get_total_contacts_by_date();
|
126 |
|
127 |
+
$total = ES()->contacts_db->get_total_subscribed_contacts_before_days( $days );
|
128 |
+
|
129 |
$data = array();
|
130 |
for ( $i = $days; $i >= 0; $i -- ) {
|
131 |
$date = date( "Y-m-d", strtotime( '-' . $i . ' days' ) );
|
132 |
|
133 |
+
$count = isset( $contacts[ $date ] ) ? $contacts[ $date ] : 0;
|
|
|
134 |
|
135 |
+
$total += $count;
|
136 |
+
|
137 |
+
$data[ $date ] = $total;
|
138 |
+
}
|
139 |
|
140 |
return $data;
|
141 |
}
|
lite/includes/db/class-es-db-contacts.php
CHANGED
@@ -625,7 +625,7 @@ class ES_DB_Contacts extends ES_DB {
|
|
625 |
|
626 |
}
|
627 |
|
628 |
-
//Do import Lists Contacts
|
629 |
if ( count( $lists_contacts ) > 0 ) {
|
630 |
$list_name_id_map = ES()->lists_db->get_list_id_name_map( '', true );
|
631 |
foreach ( $lists_contacts as $list_name => $contacts ) {
|
@@ -687,7 +687,7 @@ class ES_DB_Contacts extends ES_DB {
|
|
687 |
public function get_total_contacts_by_date( $status = 'subscribed', $days = 60 ) {
|
688 |
|
689 |
if ( $status === 'subscribed' ) {
|
690 |
-
$results =
|
691 |
}
|
692 |
|
693 |
return $results;
|
@@ -711,4 +711,77 @@ class ES_DB_Contacts extends ES_DB {
|
|
711 |
return $this->get_column_by( 'id', 'wp_user_id', $user_id );
|
712 |
}
|
713 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
714 |
}
|
625 |
|
626 |
}
|
627 |
|
628 |
+
// Do import Lists Contacts
|
629 |
if ( count( $lists_contacts ) > 0 ) {
|
630 |
$list_name_id_map = ES()->lists_db->get_list_id_name_map( '', true );
|
631 |
foreach ( $lists_contacts as $list_name => $contacts ) {
|
687 |
public function get_total_contacts_by_date( $status = 'subscribed', $days = 60 ) {
|
688 |
|
689 |
if ( $status === 'subscribed' ) {
|
690 |
+
$results = $this->get_total_subscribed_contacts_by_date( $days );
|
691 |
}
|
692 |
|
693 |
return $results;
|
711 |
return $this->get_column_by( 'id', 'wp_user_id', $user_id );
|
712 |
}
|
713 |
|
714 |
+
/**
|
715 |
+
* Get total subscribed contacts by date
|
716 |
+
*
|
717 |
+
* @param string $status
|
718 |
+
* @param int $days
|
719 |
+
*
|
720 |
+
* @return array
|
721 |
+
*
|
722 |
+
* @since 4.4.2
|
723 |
+
*/
|
724 |
+
public function get_total_subscribed_contacts_by_date( $days = 60 ) {
|
725 |
+
global $wpdb;
|
726 |
+
|
727 |
+
$columns = array( 'DATE(created_at) as date', 'count(DISTINCT(id)) as total' );
|
728 |
+
$where = "unsubscribed = %d";
|
729 |
+
$args[] = 0;
|
730 |
+
|
731 |
+
if ( 0 != $days ) {
|
732 |
+
$days = esc_sql( $days );
|
733 |
+
$where .= " AND created_at >= DATE_SUB(NOW(), INTERVAL %d DAY)";
|
734 |
+
$args[] = $days;
|
735 |
+
}
|
736 |
+
|
737 |
+
$group_by = ' GROUP BY DATE(created_at)';
|
738 |
+
|
739 |
+
$where .= $group_by;
|
740 |
+
|
741 |
+
$where = $wpdb->prepare( $where, $args );
|
742 |
+
|
743 |
+
$results = $this->get_columns_by_condition( $columns, $where );
|
744 |
+
|
745 |
+
$contacts = array();
|
746 |
+
if ( ! empty( $results ) ) {
|
747 |
+
foreach ( $results as $result ) {
|
748 |
+
$contacts[ $result['date'] ] = $result['total'];
|
749 |
+
}
|
750 |
+
}
|
751 |
+
|
752 |
+
return $contacts;
|
753 |
+
}
|
754 |
+
|
755 |
+
/**
|
756 |
+
* Get total subscribed contacts before $days
|
757 |
+
*
|
758 |
+
* @param int $days
|
759 |
+
*
|
760 |
+
* @return array
|
761 |
+
*
|
762 |
+
* @since 4.4.2
|
763 |
+
*/
|
764 |
+
public function get_total_subscribed_contacts_before_days( $days = 60 ) {
|
765 |
+
global $wpdb;
|
766 |
+
|
767 |
+
$columns = array( 'count(DISTINCT(id)) as total' );
|
768 |
+
$where = "unsubscribed = %d";
|
769 |
+
$args[] = 0;
|
770 |
+
|
771 |
+
if ( 0 != $days ) {
|
772 |
+
$days = esc_sql( $days );
|
773 |
+
$where .= " AND created_at < DATE_SUB(NOW(), INTERVAL %d DAY)";
|
774 |
+
$args[] = $days;
|
775 |
+
}
|
776 |
+
|
777 |
+
$where = $wpdb->prepare( $where, $args );
|
778 |
+
|
779 |
+
$results = $this->get_columns_by_condition( $columns, $where );
|
780 |
+
|
781 |
+
$results = array_shift( $results );
|
782 |
+
|
783 |
+
return $results['total'];
|
784 |
+
}
|
785 |
+
|
786 |
+
|
787 |
}
|
lite/includes/db/class-es-db-lists-contacts.php
CHANGED
@@ -407,11 +407,17 @@ class ES_DB_Lists_Contacts extends ES_DB {
|
|
407 |
|
408 |
$where = "email IN ($contacts_str)";
|
409 |
|
410 |
-
$email_id_map =
|
411 |
|
412 |
foreach ( $contacts as $key => $contact ) {
|
413 |
-
|
414 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
if ( $contact['status'] === 'Single Opt In' ) {
|
416 |
$optin_type = IG_SINGLE_OPTIN;
|
417 |
} elseif ( $contact['status'] === 'Confirmed' ) {
|
@@ -931,45 +937,5 @@ class ES_DB_Lists_Contacts extends ES_DB {
|
|
931 |
return $this->get_contacts( 'all' );
|
932 |
}
|
933 |
|
934 |
-
/**
|
935 |
-
* Get total subscribed contacts by date
|
936 |
-
*
|
937 |
-
* @param string $status
|
938 |
-
* @param int $days
|
939 |
-
*
|
940 |
-
* @return array
|
941 |
-
*
|
942 |
-
* @since 4.4.0
|
943 |
-
*/
|
944 |
-
public function get_total_subscribed_contacts_by_date( $days = 60 ) {
|
945 |
-
global $wpdb;
|
946 |
-
|
947 |
-
$columns = array( 'DATE(subscribed_at) as date', 'count(DISTINCT(contact_id)) as total' );
|
948 |
-
$where = "status = %s";
|
949 |
-
$args[] = 'subscribed';
|
950 |
-
|
951 |
-
if ( 0 != $days ) {
|
952 |
-
$days = esc_sql( $days );
|
953 |
-
$where .= " AND subscribed_at >= DATE_SUB(NOW(), INTERVAL %d DAY)";
|
954 |
-
$args[] = $days;
|
955 |
-
}
|
956 |
-
|
957 |
-
$group_by = ' GROUP BY DATE(subscribed_at)';
|
958 |
-
|
959 |
-
$where .= $group_by;
|
960 |
-
|
961 |
-
$where = $wpdb->prepare( $where, $args );
|
962 |
-
|
963 |
-
$results = $this->get_columns_by_condition( $columns, $where );
|
964 |
-
|
965 |
-
$contacts = array();
|
966 |
-
if ( ! empty( $results ) ) {
|
967 |
-
foreach ( $results as $result ) {
|
968 |
-
$contacts[ $result['date'] ] = $result['total'];
|
969 |
-
}
|
970 |
-
}
|
971 |
-
|
972 |
-
return $contacts;
|
973 |
-
}
|
974 |
|
975 |
}
|
407 |
|
408 |
$where = "email IN ($contacts_str)";
|
409 |
|
410 |
+
$email_id_map = ES()->contacts_db->get_columns_map( 'email', 'id', $where );
|
411 |
|
412 |
foreach ( $contacts as $key => $contact ) {
|
413 |
+
|
414 |
+
if ( empty( $email_id_map[ $contact['email'] ] ) ) {
|
415 |
+
continue;
|
416 |
+
}
|
417 |
+
|
418 |
+
$contact[ $key ]['contact_id'] = $email_id_map[ $contact['email'] ];
|
419 |
+
$status = 'subscribed';
|
420 |
+
$optin_type = IG_SINGLE_OPTIN;
|
421 |
if ( $contact['status'] === 'Single Opt In' ) {
|
422 |
$optin_type = IG_SINGLE_OPTIN;
|
423 |
} elseif ( $contact['status'] === 'Confirmed' ) {
|
937 |
return $this->get_contacts( 'all' );
|
938 |
}
|
939 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
940 |
|
941 |
}
|
lite/includes/es-core-functions.php
CHANGED
@@ -202,7 +202,6 @@ if ( ! function_exists( 'ig_es_get_data' ) ) {
|
|
202 |
* @since 4.1.15
|
203 |
*/
|
204 |
function ig_es_get_data( $array = array(), $var = '', $default = '', $clean = false ) {
|
205 |
-
|
206 |
if ( ! empty( $var ) ) {
|
207 |
$value = isset( $array[ $var ] ) ? wp_unslash( $array[ $var ] ) : $default;
|
208 |
} else {
|
202 |
* @since 4.1.15
|
203 |
*/
|
204 |
function ig_es_get_data( $array = array(), $var = '', $default = '', $clean = false ) {
|
|
|
205 |
if ( ! empty( $var ) ) {
|
206 |
$value = isset( $array[ $var ] ) ? wp_unslash( $array[ $var ] ) : $default;
|
207 |
} else {
|
lite/includes/feedback.php
CHANGED
@@ -229,8 +229,8 @@ function ig_es_render_iges_merge_feedback() {
|
|
229 |
'desc' => '<div><p class="mt-4">You use <a href="https://wordpress.org/plugins/email-subscribers" target="_blank"><b class="text-blue-700 font-semibold underline">Email Subscribers</b></a> to send email campaigns.</p><p class="mt-3">Would you like us to include onsite popups and action bars in the plugin as well? This way you can <b class="font-semibold">convert visitors to subscribers, drive traffic and run email marketing from a single plugin</b>.</p> <p class="mt-3">Why do we ask?</p> <p class="mt-3">Our <a class="text-blue-700 font-semibold underline" href="https://wordpress.org/plugins/icegram" target="_blank"><b>Icegram</b></a> plugin already does onsite campaigns. We are thinking of merging Icegram & Email Subscribers into a single plugin.</p> <p class="mt-3"><b class="font-semibold">Will a comprehensive ConvertKit / MailChimp like email + onsite campaign plugin be useful to you?</b></p> </div><p class="mt-3">',
|
230 |
'poll_options' => array(
|
231 |
'yes' => array( 'text' => '<b>' . __( 'Yes', 'email-subscribers' ) . '</b>', 'color' => 'green' ),
|
232 |
-
'no' => array( 'text' => '<b>' . __( 'No', 'email-subscribers' ) . '</b>', 'color' => 'red')
|
233 |
-
),
|
234 |
'allow_multiple' => false,
|
235 |
'position' => 'bottom-center',
|
236 |
'width' => 400,
|
229 |
'desc' => '<div><p class="mt-4">You use <a href="https://wordpress.org/plugins/email-subscribers" target="_blank"><b class="text-blue-700 font-semibold underline">Email Subscribers</b></a> to send email campaigns.</p><p class="mt-3">Would you like us to include onsite popups and action bars in the plugin as well? This way you can <b class="font-semibold">convert visitors to subscribers, drive traffic and run email marketing from a single plugin</b>.</p> <p class="mt-3">Why do we ask?</p> <p class="mt-3">Our <a class="text-blue-700 font-semibold underline" href="https://wordpress.org/plugins/icegram" target="_blank"><b>Icegram</b></a> plugin already does onsite campaigns. We are thinking of merging Icegram & Email Subscribers into a single plugin.</p> <p class="mt-3"><b class="font-semibold">Will a comprehensive ConvertKit / MailChimp like email + onsite campaign plugin be useful to you?</b></p> </div><p class="mt-3">',
|
230 |
'poll_options' => array(
|
231 |
'yes' => array( 'text' => '<b>' . __( 'Yes', 'email-subscribers' ) . '</b>', 'color' => 'green' ),
|
232 |
+
'no' => array( 'text' => '<b>' . __( 'No', 'email-subscribers' ) . '</b>', 'color' => 'red' )
|
233 |
+
),
|
234 |
'allow_multiple' => false,
|
235 |
'position' => 'bottom-center',
|
236 |
'width' => 400,
|
lite/includes/feedback/class-ig-feedback.php
CHANGED
@@ -4,21 +4,21 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
4 |
exit; // Exit if accessed directly.
|
5 |
}
|
6 |
|
7 |
-
if ( ! class_exists( '
|
8 |
/**
|
9 |
* IG Feedback
|
10 |
*
|
11 |
* The IG Feedback class adds functionality to get quick interactive feedback from users.
|
12 |
* There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
|
13 |
*
|
14 |
-
* @class
|
15 |
* @since 1.0.0
|
16 |
* @copyright Copyright (c) 2019, Icegram
|
17 |
* @license https://opensource.org/licenses/gpl-license GNU Public License
|
18 |
* @author Icegram
|
19 |
* @package feedback
|
20 |
*/
|
21 |
-
class
|
22 |
|
23 |
/**
|
24 |
* Version of Feedback Library
|
@@ -27,7 +27,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
|
|
27 |
* @var string
|
28 |
*
|
29 |
*/
|
30 |
-
public $version = '1.2.
|
31 |
/**
|
32 |
* The API URL where we will send feedback data.
|
33 |
*
|
@@ -403,7 +403,8 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
|
|
403 |
'delay' => 3, // In Seconds
|
404 |
'consent_text' => 'You are agree to our terms and condition',
|
405 |
'email' => $this->get_contact_email(),
|
406 |
-
'name' => ''
|
|
|
407 |
);
|
408 |
|
409 |
$params = wp_parse_args( $params, $default_params );
|
@@ -636,9 +637,11 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
|
|
636 |
<label class="ig-label"">Feedback</label><br/>
|
637 |
<textarea name="feedback_data[details]" id="ig-feedback-data-message"></textarea>
|
638 |
</p>
|
639 |
-
|
640 |
-
<
|
641 |
-
|
|
|
|
|
642 |
</form>
|
643 |
</div>
|
644 |
|
@@ -696,12 +699,11 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
|
|
696 |
}
|
697 |
}
|
698 |
|
699 |
-
var
|
700 |
-
|
701 |
-
$('#wpwrap').append('<div class="ig-es-feedback-button" id="' + feedbackButtonID + '">Feedback</div>');
|
702 |
|
703 |
-
$('#'
|
704 |
|
|
|
705 |
Swal.mixin({
|
706 |
footer: '<?php echo $this->footer; ?>',
|
707 |
position: '<?php echo $params['position']; ?>',
|
@@ -744,7 +746,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
|
|
744 |
return;
|
745 |
}
|
746 |
|
747 |
-
var system_info =
|
748 |
if (consent === 'checked') {
|
749 |
system_info = true;
|
750 |
}
|
4 |
exit; // Exit if accessed directly.
|
5 |
}
|
6 |
|
7 |
+
if ( ! class_exists( 'IG_Feedback_V_1_2_1' ) ) {
|
8 |
/**
|
9 |
* IG Feedback
|
10 |
*
|
11 |
* The IG Feedback class adds functionality to get quick interactive feedback from users.
|
12 |
* There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
|
13 |
*
|
14 |
+
* @class IG_Feedback_V_1_2_1
|
15 |
* @since 1.0.0
|
16 |
* @copyright Copyright (c) 2019, Icegram
|
17 |
* @license https://opensource.org/licenses/gpl-license GNU Public License
|
18 |
* @author Icegram
|
19 |
* @package feedback
|
20 |
*/
|
21 |
+
class IG_Feedback_V_1_2_1 {
|
22 |
|
23 |
/**
|
24 |
* Version of Feedback Library
|
27 |
* @var string
|
28 |
*
|
29 |
*/
|
30 |
+
public $version = '1.2.1';
|
31 |
/**
|
32 |
* The API URL where we will send feedback data.
|
33 |
*
|
403 |
'delay' => 3, // In Seconds
|
404 |
'consent_text' => 'You are agree to our terms and condition',
|
405 |
'email' => $this->get_contact_email(),
|
406 |
+
'name' => '',
|
407 |
+
'consent' => false
|
408 |
);
|
409 |
|
410 |
$params = wp_parse_args( $params, $default_params );
|
637 |
<label class="ig-label"">Feedback</label><br/>
|
638 |
<textarea name="feedback_data[details]" id="ig-feedback-data-message"></textarea>
|
639 |
</p>
|
640 |
+
<?php if ( isset( $params['consent'] ) && $params['consent'] === true ) { ?>
|
641 |
+
<p>
|
642 |
+
<input type="checkbox" name="feedback_data[collect_system_info]" checked="checked" id="ig-feedback-data-consent"/><?php echo $params['consent_text']; ?>
|
643 |
+
</p>
|
644 |
+
<?php } ?>
|
645 |
</form>
|
646 |
</div>
|
647 |
|
699 |
}
|
700 |
}
|
701 |
|
702 |
+
var feedbackButtonClass = 'ig-feedback-button-<?php echo $this->plugin; ?>';
|
|
|
|
|
703 |
|
704 |
+
$('#wpwrap').append('<div class="ig-es-feedback-button ' + feedbackButtonClass + '">Feedback</div>');
|
705 |
|
706 |
+
$('.' + feedbackButtonClass).on('click', function () {
|
707 |
Swal.mixin({
|
708 |
footer: '<?php echo $this->footer; ?>',
|
709 |
position: '<?php echo $params['position']; ?>',
|
746 |
return;
|
747 |
}
|
748 |
|
749 |
+
var system_info = true;
|
750 |
if (consent === 'checked') {
|
751 |
system_info = true;
|
752 |
}
|
lite/includes/feedback/class-ig-tracker.php
CHANGED
@@ -4,15 +4,15 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
4 |
exit; // Exit if accessed directly.
|
5 |
}
|
6 |
|
7 |
-
if ( ! class_exists( '
|
8 |
|
9 |
/**
|
10 |
-
* Class
|
11 |
*
|
12 |
* Icegram tracker handler class is responsible for sending anonymous plugin
|
13 |
* data to Icegram servers for users that actively allowed data tracking.
|
14 |
*
|
15 |
-
* @class
|
16 |
* @since 1.0.0
|
17 |
*
|
18 |
* @copyright Copyright (c) 2019, Icegram
|
@@ -20,7 +20,7 @@ if ( ! class_exists( 'IG_Tracker_V_1_2_0' ) ) {
|
|
20 |
* @author Icegram
|
21 |
* @package feedback
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* Get Active, Inactive or all plugins info
|
4 |
exit; // Exit if accessed directly.
|
5 |
}
|
6 |
|
7 |
+
if ( ! class_exists( 'IG_Tracker_V_1_2_1' ) ) {
|
8 |
|
9 |
/**
|
10 |
+
* Class IG_Tracker_V_1_2_1
|
11 |
*
|
12 |
* Icegram tracker handler class is responsible for sending anonymous plugin
|
13 |
* data to Icegram servers for users that actively allowed data tracking.
|
14 |
*
|
15 |
+
* @class IG_Tracker_V_1_2_1
|
16 |
* @since 1.0.0
|
17 |
*
|
18 |
* @copyright Copyright (c) 2019, Icegram
|
20 |
* @author Icegram
|
21 |
* @package feedback
|
22 |
*/
|
23 |
+
class IG_Tracker_V_1_2_1 {
|
24 |
|
25 |
/**
|
26 |
* Get Active, Inactive or all plugins info
|
lite/includes/upgrade/es-update-functions.php
CHANGED
@@ -419,7 +419,10 @@ function ig_es_update_400_delete_tables() {
|
|
419 |
$wpdb->prefix . 'ig_mailing_queue',
|
420 |
$wpdb->prefix . 'ig_sending_queue',
|
421 |
$wpdb->prefix . 'ig_queue',
|
422 |
-
$wpdb->prefix . 'ig_actions'
|
|
|
|
|
|
|
423 |
);
|
424 |
|
425 |
foreach ( $tables_to_delete as $table ) {
|
@@ -1158,4 +1161,35 @@ function ig_es_update_441_migrate_audience_sync_settings() {
|
|
1158 |
function ig_es_update_441_db_version() {
|
1159 |
ES_Install::update_db_version( '4.4.1' );
|
1160 |
}
|
1161 |
-
/* --------------------- ES 4.4.1(End)--------------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
419 |
$wpdb->prefix . 'ig_mailing_queue',
|
420 |
$wpdb->prefix . 'ig_sending_queue',
|
421 |
$wpdb->prefix . 'ig_queue',
|
422 |
+
$wpdb->prefix . 'ig_actions',
|
423 |
+
$wpdb->prefix . 'ig_links',
|
424 |
+
$wpdb->prefix . 'ig_workflows',
|
425 |
+
$wpdb->prefix . 'ig_workflows_queue'
|
426 |
);
|
427 |
|
428 |
foreach ( $tables_to_delete as $table ) {
|
1161 |
function ig_es_update_441_db_version() {
|
1162 |
ES_Install::update_db_version( '4.4.1' );
|
1163 |
}
|
1164 |
+
/* --------------------- ES 4.4.1(End)--------------------------- */
|
1165 |
+
|
1166 |
+
|
1167 |
+
/* --------------------- ES 4.4.2(Start)--------------------------- */
|
1168 |
+
|
1169 |
+
/**
|
1170 |
+
* Adding workflows user role permissions.
|
1171 |
+
*
|
1172 |
+
* @since 4.4.2
|
1173 |
+
*/
|
1174 |
+
function ig_es_update_442_set_workflows_default_permission() {
|
1175 |
+
$user_role_permissions = get_option( 'ig_es_user_roles', false );
|
1176 |
+
if ( false === $user_role_permissions ) {
|
1177 |
+
update_option( 'ig_es_user_roles', ES_Install::get_default_permissions() );
|
1178 |
+
} else if( ! empty( $user_role_permissions ) && is_array( $user_role_permissions ) ) {
|
1179 |
+
$user_role_permissions['workflows'] = array(
|
1180 |
+
'administrator' => 'yes'
|
1181 |
+
);
|
1182 |
+
update_option( 'ig_es_user_roles', $user_role_permissions );
|
1183 |
+
}
|
1184 |
+
}
|
1185 |
+
|
1186 |
+
/**
|
1187 |
+
* Update DB version
|
1188 |
+
*
|
1189 |
+
* @since 4.4.2
|
1190 |
+
*/
|
1191 |
+
function ig_es_update_442_db_version() {
|
1192 |
+
ES_Install::update_db_version( '4.4.2' );
|
1193 |
+
}
|
1194 |
+
|
1195 |
+
/* --------------------- ES 4.4.2(End)--------------------------- */
|
lite/includes/workflows/actions/class-es-action-delete-contact.php
CHANGED
@@ -47,28 +47,20 @@ class ES_Action_Delete_Contact extends ES_Workflow_Action {
|
|
47 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
48 |
continue;
|
49 |
}
|
50 |
-
$data = $data_type->get_data( $data_item );
|
51 |
|
52 |
-
$
|
|
|
53 |
|
54 |
-
if ( ! empty( $
|
55 |
-
$
|
|
|
56 |
|
57 |
-
if ( $
|
58 |
-
$
|
59 |
-
|
60 |
-
$where = $wpdb->prepare( 'email = %s', $email );
|
61 |
-
$contact_id = ES()->contacts_db->get_column_by_condition( 'id', $where );
|
62 |
-
|
63 |
-
if ( $contact_id ) {
|
64 |
-
|
65 |
-
ES()->contacts_db->delete_contacts_by_ids( $contact_id );
|
66 |
-
}
|
67 |
}
|
68 |
}
|
69 |
}
|
70 |
}
|
71 |
-
|
72 |
}
|
73 |
|
74 |
}
|
47 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
48 |
continue;
|
49 |
}
|
|
|
50 |
|
51 |
+
$data = $data_type->get_data( $data_item );
|
52 |
+
$email = ! empty( $data['email'] ) ? $data['email'] : '';
|
53 |
|
54 |
+
if ( ! empty( $email ) ) {
|
55 |
+
$where = $wpdb->prepare( 'email = %s', $email );
|
56 |
+
$contact_id = ES()->contacts_db->get_column_by_condition( 'id', $where );
|
57 |
|
58 |
+
if ( $contact_id ) {
|
59 |
+
ES()->contacts_db->delete_contacts_by_ids( $contact_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
}
|
62 |
}
|
63 |
}
|
|
|
64 |
}
|
65 |
|
66 |
}
|
lite/includes/workflows/actions/class-es-action-update-contact.php
CHANGED
@@ -45,6 +45,7 @@ class ES_Action_Update_Contact extends ES_Workflow_Action {
|
|
45 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
46 |
continue;
|
47 |
}
|
|
|
48 |
$data = $data_type->get_data( $data_item );
|
49 |
|
50 |
$user_id = ! empty( $data['wp_user_id'] ) ? $data['wp_user_id'] : 0;
|
@@ -73,12 +74,35 @@ class ES_Action_Update_Contact extends ES_Workflow_Action {
|
|
73 |
'email' => $user->user_email,
|
74 |
'first_name' => $first_name,
|
75 |
'last_name' => $last_name,
|
76 |
-
'wp_user_id' => $user->ID
|
77 |
);
|
78 |
|
79 |
ES()->contacts_db->update_contact( $es_contact_id, $contact );
|
80 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
|
|
|
82 |
}
|
83 |
}
|
84 |
}
|
45 |
if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
|
46 |
continue;
|
47 |
}
|
48 |
+
|
49 |
$data = $data_type->get_data( $data_item );
|
50 |
|
51 |
$user_id = ! empty( $data['wp_user_id'] ) ? $data['wp_user_id'] : 0;
|
74 |
'email' => $user->user_email,
|
75 |
'first_name' => $first_name,
|
76 |
'last_name' => $last_name,
|
77 |
+
'wp_user_id' => $user->ID,
|
78 |
);
|
79 |
|
80 |
ES()->contacts_db->update_contact( $es_contact_id, $contact );
|
81 |
}
|
82 |
+
}
|
83 |
+
} else {
|
84 |
+
|
85 |
+
$email = ! empty( $data['email'] ) ? $data['email'] : '';
|
86 |
+
$es_contact_id = ES()->contacts_db->get_contact_id_by_email( $email );
|
87 |
+
if ( ! empty( $es_contact_id ) ) {
|
88 |
+
$first_name = ! empty( $data['first_name'] ) ? $data['first_name'] : '';
|
89 |
+
$last_name = ! empty( $data['last_name'] ) ? $data['last_name'] : '';
|
90 |
+
|
91 |
+
// Check if we are getting the name field.
|
92 |
+
if ( empty( $first_name ) && empty( $last_name ) && ! empty( $data['name'] ) ) {
|
93 |
+
$name = explode( ' ', $data['name'] );
|
94 |
+
$first_name = $name[0];
|
95 |
+
if ( isset( $name[1] ) ) {
|
96 |
+
$last_name = $name[1];
|
97 |
+
}
|
98 |
+
}
|
99 |
+
$contact = array(
|
100 |
+
'email' => $email,
|
101 |
+
'first_name' => $first_name,
|
102 |
+
'last_name' => $last_name,
|
103 |
+
);
|
104 |
|
105 |
+
ES()->contacts_db->update_contact( $es_contact_id, $contact );
|
106 |
}
|
107 |
}
|
108 |
}
|
lite/includes/workflows/class-es-workflow-datetime.php
CHANGED
@@ -13,11 +13,11 @@ defined( 'ABSPATH' ) || exit;
|
|
13 |
/**
|
14 |
* Class for Workflow date time options
|
15 |
*
|
16 |
-
* @class
|
17 |
*
|
18 |
* @since 4.4.1
|
19 |
*/
|
20 |
-
class
|
21 |
|
22 |
/**
|
23 |
* Same as parent but forces UTC timezone if no timezone is supplied instead of using the PHP default.
|
@@ -37,7 +37,7 @@ class ES_Worfklow_DateTime extends DateTime {
|
|
37 |
|
38 |
|
39 |
/**
|
40 |
-
* Convert
|
41 |
*
|
42 |
* Note this doesn't actually set the timezone property, it directly modifies the date.
|
43 |
*
|
@@ -50,7 +50,7 @@ class ES_Worfklow_DateTime extends DateTime {
|
|
50 |
|
51 |
|
52 |
/**
|
53 |
-
* Convert
|
54 |
*
|
55 |
* Note this doesn't actually set the timezone property, it directly modifies the date.
|
56 |
*
|
13 |
/**
|
14 |
* Class for Workflow date time options
|
15 |
*
|
16 |
+
* @class ES_Workflow_DateTime
|
17 |
*
|
18 |
* @since 4.4.1
|
19 |
*/
|
20 |
+
class ES_Workflow_DateTime extends DateTime {
|
21 |
|
22 |
/**
|
23 |
* Same as parent but forces UTC timezone if no timezone is supplied instead of using the PHP default.
|
37 |
|
38 |
|
39 |
/**
|
40 |
+
* Convert ES_Workflow_DateTime from site timezone to UTC.
|
41 |
*
|
42 |
* Note this doesn't actually set the timezone property, it directly modifies the date.
|
43 |
*
|
50 |
|
51 |
|
52 |
/**
|
53 |
+
* Convert ES_Workflow_DateTime from UTC to the site timezone.
|
54 |
*
|
55 |
* Note this doesn't actually set the timezone property, it directly modifies the date.
|
56 |
*
|
lite/includes/workflows/class-es-workflow-time-helper.php
CHANGED
@@ -43,7 +43,7 @@ class ES_Workflow_Time_Helper {
|
|
43 |
/**
|
44 |
* Convert local time to GMT time.
|
45 |
*
|
46 |
-
* @param \DateTime|
|
47 |
*/
|
48 |
public static function convert_to_gmt( $datetime ) {
|
49 |
$datetime->modify( '-' . self::get_timezone_offset() * HOUR_IN_SECONDS . ' seconds' );
|
43 |
/**
|
44 |
* Convert local time to GMT time.
|
45 |
*
|
46 |
+
* @param \DateTime|ES_Workflow_DateTime $datetime DateTime object.
|
47 |
*/
|
48 |
public static function convert_to_gmt( $datetime ) {
|
49 |
$datetime->modify( '-' . self::get_timezone_offset() * HOUR_IN_SECONDS . ' seconds' );
|
lite/includes/workflows/class-es-workflow.php
CHANGED
@@ -525,7 +525,7 @@ class ES_Workflow {
|
|
525 |
$scheduled_time_seconds_from_day_start = ES_Workflow_Time_Helper::calculate_seconds_from_day_start( $scheduled_time );
|
526 |
|
527 |
// get minimum datetime before scheduling can happen, if no delay is set then this will be now
|
528 |
-
$min_wait_datetime = new
|
529 |
$min_wait_datetime->setTimestamp( $current_timestamp + $this->get_timing_delay() );
|
530 |
$min_wait_time_seconds_from_day_start = ES_Workflow_Time_Helper::calculate_seconds_from_day_start( $min_wait_datetime );
|
531 |
|
@@ -549,7 +549,7 @@ class ES_Workflow {
|
|
549 |
}
|
550 |
}
|
551 |
|
552 |
-
$scheduled_time = new
|
553 |
$scheduled_time->setTimestamp( $min_wait_datetime->getTimestamp() );
|
554 |
$scheduled_time->modify( "+$scheduled_time_seconds_from_day_start seconds" );
|
555 |
$scheduled_time->convert_to_utc_time();
|
@@ -588,7 +588,7 @@ class ES_Workflow {
|
|
588 |
return false;
|
589 |
}
|
590 |
|
591 |
-
$datetime = new
|
592 |
$datetime->setTime( isset( $time[0] ) ? $time[0] : 0, isset( $time[1] ) ? $time[1] : 0, 0 );
|
593 |
$datetime->convert_to_utc_time();
|
594 |
|
525 |
$scheduled_time_seconds_from_day_start = ES_Workflow_Time_Helper::calculate_seconds_from_day_start( $scheduled_time );
|
526 |
|
527 |
// get minimum datetime before scheduling can happen, if no delay is set then this will be now
|
528 |
+
$min_wait_datetime = new ES_Workflow_DateTime();
|
529 |
$min_wait_datetime->setTimestamp( $current_timestamp + $this->get_timing_delay() );
|
530 |
$min_wait_time_seconds_from_day_start = ES_Workflow_Time_Helper::calculate_seconds_from_day_start( $min_wait_datetime );
|
531 |
|
549 |
}
|
550 |
}
|
551 |
|
552 |
+
$scheduled_time = new ES_Workflow_DateTime();
|
553 |
$scheduled_time->setTimestamp( $min_wait_datetime->getTimestamp() );
|
554 |
$scheduled_time->modify( "+$scheduled_time_seconds_from_day_start seconds" );
|
555 |
$scheduled_time->convert_to_utc_time();
|
588 |
return false;
|
589 |
}
|
590 |
|
591 |
+
$datetime = new ES_Workflow_DateTime( $date );
|
592 |
$datetime->setTime( isset( $time[0] ) ? $time[0] : 0, isset( $time[1] ) ? $time[1] : 0, 0 );
|
593 |
$datetime->convert_to_utc_time();
|
594 |
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Tags: subscription, newsletter, email marketing, post notification, email newsle
|
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.3.2
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 4.4.
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
@@ -262,6 +262,17 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
262 |
|
263 |
== Changelog ==
|
264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
**4.4.1.1 (12.03.2020)**
|
266 |
|
267 |
* Update: Show warning message for minimum PHP compatibility version
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.3.2
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 4.4.2
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
262 |
|
263 |
== Changelog ==
|
264 |
|
265 |
+
**4.4.2 (26.03.2020)**
|
266 |
+
|
267 |
+
* Update: Improve Help & Info page
|
268 |
+
* Update: Improve Active Contacts Growth based on cumulative contacts
|
269 |
+
* Fix: Migration issue
|
270 |
+
* Fix: Campaign was sent while previewing campaign
|
271 |
+
* Fix: Empty campaign body if any error occur
|
272 |
+
* Fix: Optimize images
|
273 |
+
* Fix: Campaigns list stick to bottom of the page
|
274 |
+
* Fix: PHP Warning during installation on multisite
|
275 |
+
|
276 |
**4.4.1.1 (12.03.2020)**
|
277 |
|
278 |
* Update: Show warning message for minimum PHP compatibility version
|
webpack.config.js
CHANGED
@@ -100,18 +100,20 @@ const config = {
|
|
100 |
}
|
101 |
]
|
102 |
},
|
|
|
103 |
resolve: {
|
104 |
alias: {
|
105 |
'@' : path.resolve('assets'),
|
106 |
'@images': path.resolve('../images')
|
107 |
}
|
108 |
},
|
|
|
109 |
plugins: [
|
110 |
new MiniCssExtractPlugin({
|
111 |
filename: `[name]${prefix}.css`,
|
112 |
}),
|
113 |
new CopyWebpackPlugin([{
|
114 |
-
from: './
|
115 |
to: 'images',
|
116 |
ignore: [
|
117 |
'.DS_Store'
|
100 |
}
|
101 |
]
|
102 |
},
|
103 |
+
|
104 |
resolve: {
|
105 |
alias: {
|
106 |
'@' : path.resolve('assets'),
|
107 |
'@images': path.resolve('../images')
|
108 |
}
|
109 |
},
|
110 |
+
|
111 |
plugins: [
|
112 |
new MiniCssExtractPlugin({
|
113 |
filename: `[name]${prefix}.css`,
|
114 |
}),
|
115 |
new CopyWebpackPlugin([{
|
116 |
+
from: './lite/admin/images/',
|
117 |
to: 'images',
|
118 |
ignore: [
|
119 |
'.DS_Store'
|