Newsletter - Version 5.1.4

Version Description

=

  • Fixed notices on email edit panel
  • Added microdata to the call to action block
  • Added filter on name field while sending. See this post
  • Improved the online viewability rules
  • Fixed theme editor bad behavior
  • Fixed the min size of thumbnails on default theme
  • Removed references to font awesome where not used

=

Download this release

Release Info

Developer satollo
Plugin Icon 128x128 Newsletter
Version 5.1.4
Comparing to
See all releases

Code changes from version 5.1.3 to 5.1.4

emails/blocks/cta/block.php CHANGED
@@ -34,6 +34,15 @@ if (empty($options['font_family'])) {
34
 
35
  <a href="<?php echo $options['url'] ?>" target="_blank" rel="noopener" style="line-height: normal; font-size: <?php echo $options['font_size'] ?>px; font-family: <?php echo $options['font_family'] ?>; font-weight: normal; color: <?php echo $options['color'] ?>; text-decoration: none; background-color: <?php echo $options['background'] ?>; border-top: 15px solid <?php echo $options['background'] ?>; border-bottom: 15px solid <?php echo $options['background'] ?>; border-left: 25px solid <?php echo $options['background'] ?>; border-right: 25px solid <?php echo $options['background'] ?>; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; display: inline-block;"><?php echo $options['text'] ?></a>
36
 
 
 
 
 
 
 
 
37
  </td>
38
  </tr>
39
  </table>
 
 
34
 
35
  <a href="<?php echo $options['url'] ?>" target="_blank" rel="noopener" style="line-height: normal; font-size: <?php echo $options['font_size'] ?>px; font-family: <?php echo $options['font_family'] ?>; font-weight: normal; color: <?php echo $options['color'] ?>; text-decoration: none; background-color: <?php echo $options['background'] ?>; border-top: 15px solid <?php echo $options['background'] ?>; border-bottom: 15px solid <?php echo $options['background'] ?>; border-left: 25px solid <?php echo $options['background'] ?>; border-right: 25px solid <?php echo $options['background'] ?>; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; display: inline-block;"><?php echo $options['text'] ?></a>
36
 
37
+ <div itemscope="" itemtype="http://schema.org/EmailMessage">
38
+ <div itemprop="potentialAction" itemscope="" itemtype="http://schema.org/ViewAction">
39
+ <meta itemprop="url" content="<?php echo $options['url'] ?>" />
40
+ <meta itemprop="name" content="<?php echo esc_attr($options['text']) ?>" />
41
+ </div>
42
+ <meta itemprop="description" content="<?php echo esc_attr($options['text']) ?>" />
43
+ </div>
44
  </td>
45
  </tr>
46
  </table>
47
+
48
+
emails/edit-editor.php CHANGED
@@ -1,6 +1,5 @@
1
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.5.3/tinymce.min.js"></script>
2
  <script type="text/javascript">
3
- var template = <?php echo json_encode($template) ?>;
4
 
5
  // https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols
6
  tinymce.init({
1
  <script src="https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.5.3/tinymce.min.js"></script>
2
  <script type="text/javascript">
 
3
 
4
  // https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols
5
  tinymce.init({
emails/edit-html.php CHANGED
@@ -14,6 +14,7 @@
14
  <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/addon/hint/xml-hint.js"></script>
15
  <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/addon/hint/html-hint.js"></script>
16
  <script>
 
17
  var templateEditor;
18
  jQuery(function () {
19
  templateEditor = CodeMirror.fromTextArea(document.getElementById("options-message"), {
14
  <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/addon/hint/xml-hint.js"></script>
15
  <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.20.2/addon/hint/html-hint.js"></script>
16
  <script>
17
+
18
  var templateEditor;
19
  jQuery(function () {
20
  templateEditor = CodeMirror.fromTextArea(document.getElementById("options-message"), {
emails/edit.php CHANGED
@@ -32,7 +32,7 @@ if (!isset($email['options']['lists'])) {
32
  }
33
  $controls->data['options_lists'] = array();
34
  $controls->data['options_lists_exclude'] = array();
35
-
36
  if (!empty($email['preferences'])) {
37
  $preferences = explode(',', $email['preferences']);
38
  $value = empty($email['options']['preferences_status']) ? 'on' : 'off';
@@ -97,16 +97,15 @@ if ($controls->is_action('test') || $controls->is_action('save') || $controls->i
97
 
98
  // Reset the options
99
  $email['options'] = array();
100
- $email['options']['composer'] = $composer;
101
-
102
  foreach ($controls->data as $name => $value) {
103
  if (strpos($name, 'options_') === 0) {
104
  $email['options'][substr($name, 8)] = $value;
105
  }
106
  }
107
-
108
- //var_dump($email);
109
 
 
110
  // Before send, we build the query to extract subscriber, so the delivery engine does not
111
  // have to worry about the email parameters
112
  if ($email['options']['status'] == 'S') {
@@ -120,9 +119,11 @@ if ($controls->is_action('test') || $controls->is_action('save') || $controls->i
120
  }
121
 
122
  $list_where = array();
123
- foreach ($email['options']['lists'] as $list) {
124
- $list = (int)$list;
125
- $list_where[] = 'list_' . $list . '=1';
 
 
126
  }
127
 
128
  if (!empty($list_where)) {
@@ -132,16 +133,18 @@ if ($controls->is_action('test') || $controls->is_action('save') || $controls->i
132
  $query .= ' and (' . implode(' or ', $list_where) . ')';
133
  }
134
  }
135
-
136
  $list_where = array();
137
- foreach ($email['options']['lists_exclude'] as $list) {
138
- $list = (int)$list;
139
- $list_where[] = 'list_' . $list . '=0';
 
 
140
  }
141
  if (!empty($list_where)) {
142
  $query .= ' and (' . implode(' or ', $list_where) . ')';
143
  }
144
-
145
  if (isset($email['options']['sex'])) {
146
  $sex = $email['options']['sex'];
147
  if (is_array($sex) && count($sex)) {
@@ -244,7 +247,7 @@ if ($email['editor'] == 0) {
244
  $controls->data['message'] = $module->extract_body($controls->data['message']);
245
  }
246
 
247
- if ($controls->data['options_status'] == 'S') {
248
  $controls->warnings[] = __('This newsletter will be sent to not confirmed subscribers.', 'newsletter');
249
  }
250
 
@@ -389,15 +392,15 @@ if ($controls->data['options_status'] == 'S') {
389
  <?php
390
  $lists = $controls->get_list_options();
391
  ?>
392
- <?php $controls->select('options_lists_operator', array('or'=>__('Match at least one of', 'newsletter'), 'and'=>__('Match all of', 'newsletter'))); ?>
393
-
394
  <?php $controls->select2('options_lists', $lists, null, true, null, __('All', 'newsletter')); ?>
395
-
396
- <p><?php _e('must not in one of', 'newsletter')?></p>
397
-
398
  <?php $controls->select2('options_lists_exclude', $lists, null, true, null, __('None', 'newsletter')); ?>
399
 
400
-
401
  </td>
402
  </tr>
403
 
32
  }
33
  $controls->data['options_lists'] = array();
34
  $controls->data['options_lists_exclude'] = array();
35
+
36
  if (!empty($email['preferences'])) {
37
  $preferences = explode(',', $email['preferences']);
38
  $value = empty($email['options']['preferences_status']) ? 'on' : 'off';
97
 
98
  // Reset the options
99
  $email['options'] = array();
100
+ if ($composer) $email['options']['composer'] = true;
101
+
102
  foreach ($controls->data as $name => $value) {
103
  if (strpos($name, 'options_') === 0) {
104
  $email['options'][substr($name, 8)] = $value;
105
  }
106
  }
 
 
107
 
108
+ //var_dump($email);
109
  // Before send, we build the query to extract subscriber, so the delivery engine does not
110
  // have to worry about the email parameters
111
  if ($email['options']['status'] == 'S') {
119
  }
120
 
121
  $list_where = array();
122
+ if (isset($email['options']['lists']) && count($email['options']['lists'])) {
123
+ foreach ($email['options']['lists'] as $list) {
124
+ $list = (int) $list;
125
+ $list_where[] = 'list_' . $list . '=1';
126
+ }
127
  }
128
 
129
  if (!empty($list_where)) {
133
  $query .= ' and (' . implode(' or ', $list_where) . ')';
134
  }
135
  }
136
+
137
  $list_where = array();
138
+ if (isset($email['options']['lists_exclude']) && count($email['options']['lists_exclude'])) {
139
+ foreach ($email['options']['lists_exclude'] as $list) {
140
+ $list = (int) $list;
141
+ $list_where[] = 'list_' . $list . '=0';
142
+ }
143
  }
144
  if (!empty($list_where)) {
145
  $query .= ' and (' . implode(' or ', $list_where) . ')';
146
  }
147
+
148
  if (isset($email['options']['sex'])) {
149
  $sex = $email['options']['sex'];
150
  if (is_array($sex) && count($sex)) {
247
  $controls->data['message'] = $module->extract_body($controls->data['message']);
248
  }
249
 
250
+ if (isset($controls->data['options_status']) && $controls->data['options_status'] == 'S') {
251
  $controls->warnings[] = __('This newsletter will be sent to not confirmed subscribers.', 'newsletter');
252
  }
253
 
392
  <?php
393
  $lists = $controls->get_list_options();
394
  ?>
395
+ <?php $controls->select('options_lists_operator', array('or' => __('Match at least one of', 'newsletter'), 'and' => __('Match all of', 'newsletter'))); ?>
396
+
397
  <?php $controls->select2('options_lists', $lists, null, true, null, __('All', 'newsletter')); ?>
398
+
399
+ <p><?php _e('must not in one of', 'newsletter') ?></p>
400
+
401
  <?php $controls->select2('options_lists_exclude', $lists, null, true, null, __('None', 'newsletter')); ?>
402
 
403
+
404
  </td>
405
  </tr>
406
 
emails/emails.php CHANGED
@@ -135,23 +135,26 @@ class NewsletterEmails extends NewsletterModule {
135
  header("HTTP/1.0 404 Not Found");
136
  die('Email not found');
137
  }
138
-
139
- if ($email->status == 'new') {
140
- header("HTTP/1.0 404 Not Found");
141
- die('Not sent yet');
142
- }
143
-
144
  $user = NewsletterSubscription::instance()->get_user_from_request();
145
-
146
- if ($email->private == 1) {
147
- if (!$user) {
148
- header("HTTP/1.0 404 Not Found");
149
- die('No available for online view');
150
- }
151
- $sent = $wpdb->get_row($wpdb->prepare("select * from " . NEWSLETTER_SENT_TABLE . " where email_id=%d and user_id=%d limit 1", $email->id, $user->id));
152
- if (!$sent) {
153
  header("HTTP/1.0 404 Not Found");
154
- die('No available for online view');
 
 
 
 
 
 
 
 
 
 
 
 
155
  }
156
  }
157
 
@@ -482,7 +485,7 @@ class NewsletterEmails extends NewsletterModule {
482
  // case 'content-02-heading.block': $id = '/plugins/newsletter/emails/blocks/heading';
483
  // break;
484
  }
485
-
486
  // TODO: Correct id for compatibility
487
  $blocks = $this->get_blocks();
488
  if (!isset($blocks[$id])) {
135
  header("HTTP/1.0 404 Not Found");
136
  die('Email not found');
137
  }
138
+
 
 
 
 
 
139
  $user = NewsletterSubscription::instance()->get_user_from_request();
140
+
141
+ if (!is_user_logged_in() || !(current_user_can('editor') || current_user_can('administrator'))) {
142
+
143
+ if ($email->status == 'new') {
 
 
 
 
144
  header("HTTP/1.0 404 Not Found");
145
+ die('Not sent yet');
146
+ }
147
+
148
+ if ($email->private == 1) {
149
+ if (!$user) {
150
+ header("HTTP/1.0 404 Not Found");
151
+ die('No available for online view');
152
+ }
153
+ $sent = $wpdb->get_row($wpdb->prepare("select * from " . NEWSLETTER_SENT_TABLE . " where email_id=%d and user_id=%d limit 1", $email->id, $user->id));
154
+ if (!$sent) {
155
+ header("HTTP/1.0 404 Not Found");
156
+ die('No available for online view');
157
+ }
158
  }
159
  }
160
 
485
  // case 'content-02-heading.block': $id = '/plugins/newsletter/emails/blocks/heading';
486
  // break;
487
  }
488
+
489
  // TODO: Correct id for compatibility
490
  $blocks = $this->get_blocks();
491
  if (!isset($blocks[$id])) {
emails/themes/default/theme.php CHANGED
@@ -14,7 +14,7 @@ global $newsletter, $post;
14
 
15
  defined('ABSPATH') || exit;
16
 
17
- if (empty($theme_options['theme_color'])) $color = '#000000';
18
  else $color = $theme_options['theme_color'];
19
 
20
  if (isset($theme_options['theme_posts'])) {
@@ -97,7 +97,7 @@ if (isset($theme_options['theme_posts'])) {
97
  <?php foreach ($posts as $post) { setup_postdata($post); ?>
98
  <tr>
99
  <?php if (isset($theme_options['theme_thumbnails'])) { ?>
100
- <td valign="top"><a target="_blank" href="<?php echo get_permalink($post); ?>"><img width="75" src="<?php echo newsletter_get_post_image($post->ID); ?>" alt="image"></a></td>
101
  <?php } ?>
102
  <td valign="top">
103
  <a target="_blank" href="<?php echo get_permalink(); ?>" style="font-size: 20px; line-height: 26px"><?php the_title(); ?></a>
14
 
15
  defined('ABSPATH') || exit;
16
 
17
+ if (empty($theme_options['theme_color'])) $color = '#555555';
18
  else $color = $theme_options['theme_color'];
19
 
20
  if (isset($theme_options['theme_posts'])) {
97
  <?php foreach ($posts as $post) { setup_postdata($post); ?>
98
  <tr>
99
  <?php if (isset($theme_options['theme_thumbnails'])) { ?>
100
+ <td valign="top"><a target="_blank" href="<?php echo get_permalink($post); ?>"><img width="75" style="width: 75px; min-width: 75px" src="<?php echo newsletter_get_post_image($post->ID); ?>" alt="image"></a></td>
101
  <?php } ?>
102
  <td valign="top">
103
  <a target="_blank" href="<?php echo get_permalink(); ?>" style="font-size: 20px; line-height: 26px"><?php the_title(); ?></a>
emails/tnp-composer/_scripts/newsletter-builder.js CHANGED
@@ -451,8 +451,6 @@ function create() {
451
  jQuery("#newsletter-preloaded-export .tnpc-row-delete").remove();
452
  jQuery("#newsletter-preloaded-export .tnpc-row-edit-block").remove();
453
  jQuery("#newsletter-preloaded-export .tnpc-row").removeClass("ui-draggable");
454
- // jQuery("#newsletter-preloaded-export .tnpc-row-edit").removeAttr("data-type");
455
- // jQuery("#newsletter-preloaded-export .tnpc-row-edit").removeClass("tnpc-row-edit");
456
  preload_export_html = jQuery("#newsletter-preloaded-export").html();
457
 
458
  if (preload_export_html.indexOf('<style type="text/css">') > -1) {
@@ -461,13 +459,10 @@ function create() {
461
  jQuery('#tnpc-form input[name="options[body]"]').attr('value', export_content);
462
  jQuery("#tnpc-form").submit();
463
  } else {
464
- //jQuery.get(ajaxurl, {action: "tnpc_css"}, function (data) {
465
  jQuery.get(TNP_HOME_URL + "?na=emails-composer-css&ver=" + Math.random(), {action: "tnpc_css"}, function (data) {
466
- // export_content = '<style>' + data + '</style><link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900,200italic,300italic,400italic,600italic,700italic,900italic" rel="stylesheet" type="text/css"><link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"><div id="tnpc-wrapper"><div id="tnpc-wrapper-newsletter">' + preload_export_html + '</div></div>';
467
  export_content = '<!DOCTYPE html><html><head><title>Newsletter</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta http-equiv="X-UA-Compatible" content="IE=edge" />';
468
  export_content += '<style type="text/css">' + data + '</style>';
469
- export_content += '<link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900,200italic,300italic,400italic,600italic,700italic,900italic" rel="stylesheet" type="text/css">';
470
- export_content += '<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">';
471
  export_content += '</head><body style="margin: 0; padding: 0;">';
472
  export_content += preload_export_html;
473
  export_content += '</body></html>';
451
  jQuery("#newsletter-preloaded-export .tnpc-row-delete").remove();
452
  jQuery("#newsletter-preloaded-export .tnpc-row-edit-block").remove();
453
  jQuery("#newsletter-preloaded-export .tnpc-row").removeClass("ui-draggable");
 
 
454
  preload_export_html = jQuery("#newsletter-preloaded-export").html();
455
 
456
  if (preload_export_html.indexOf('<style type="text/css">') > -1) {
459
  jQuery('#tnpc-form input[name="options[body]"]').attr('value', export_content);
460
  jQuery("#tnpc-form").submit();
461
  } else {
 
462
  jQuery.get(TNP_HOME_URL + "?na=emails-composer-css&ver=" + Math.random(), {action: "tnpc_css"}, function (data) {
 
463
  export_content = '<!DOCTYPE html><html><head><title>Newsletter</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta http-equiv="X-UA-Compatible" content="IE=edge" />';
464
  export_content += '<style type="text/css">' + data + '</style>';
465
+ export_content += '<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900,200italic,300italic,400italic,600italic,700italic,900italic" rel="stylesheet" type="text/css">';
 
466
  export_content += '</head><body style="margin: 0; padding: 0;">';
467
  export_content += preload_export_html;
468
  export_content += '</body></html>';
includes/module.php CHANGED
@@ -954,11 +954,12 @@ class NewsletterModule {
954
  $options_profile = get_option('newsletter_profile');
955
 
956
  $text = str_replace('{email}', $user->email, $text);
957
- if (empty($user->name)) {
 
958
  $text = str_replace(' {name}', '', $text);
959
  $text = str_replace('{name}', '', $text);
960
  } else {
961
- $text = str_replace('{name}', $user->name, $text);
962
  }
963
 
964
  switch ($user->sex) {
954
  $options_profile = get_option('newsletter_profile');
955
 
956
  $text = str_replace('{email}', $user->email, $text);
957
+ $name = apply_filters('newsletter_replace_name', $user->name, $user);
958
+ if (empty($name)) {
959
  $text = str_replace(' {name}', '', $text);
960
  $text = str_replace('{name}', '', $text);
961
  } else {
962
+ $text = str_replace('{name}', $name, $text);
963
  }
964
 
965
  switch ($user->sex) {
plugin.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Newsletter
5
  Plugin URI: https://www.thenewsletterplugin.com/plugins/newsletter
6
  Description: Newsletter is a cool plugin to create your own subscriber list, to send newsletters, to build your business. <strong>Before update give a look to <a href="https://www.thenewsletterplugin.com/category/release">this page</a> to know what's changed.</strong>
7
- Version: 5.1.3
8
  Author: Stefano Lissa & The Newsletter Team
9
  Author URI: https://www.thenewsletterplugin.com
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
@@ -14,7 +14,7 @@
14
  */
15
 
16
  // Used as dummy parameter on css and js links
17
- define('NEWSLETTER_VERSION', '5.1.3');
18
 
19
  global $wpdb, $newsletter;
20
 
@@ -394,15 +394,15 @@ class Newsletter extends NewsletterModule {
394
  wp_enqueue_script('jquery-ui-tabs');
395
  wp_enqueue_media();
396
  wp_enqueue_style('tnp-admin', plugins_url('newsletter') . '/admin.css', array(), filemtime(NEWSLETTER_DIR . '/admin.css'));
397
- wp_enqueue_script('tnp-admin', plugins_url('newsletter') . '/admin.js', array(), time());
398
 
399
  wp_enqueue_style('tnp-select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css');
400
  wp_enqueue_script('tnp-select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
401
- wp_enqueue_script('tnp-jquery-vmap', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/jquery.vmap.min.js');
402
  wp_enqueue_script('tnp-jquery-vmap-world', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/maps/jquery.vmap.world.js', array('tnp-jquery-vmap'));
403
  wp_enqueue_style('tnp-jquery-vmap', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/jqvmap.min.css');
404
 
405
- wp_register_script('tnp-chart', 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js');
406
 
407
  $dismissed = get_option('newsletter_dismissed', array());
408
 
4
  Plugin Name: Newsletter
5
  Plugin URI: https://www.thenewsletterplugin.com/plugins/newsletter
6
  Description: Newsletter is a cool plugin to create your own subscriber list, to send newsletters, to build your business. <strong>Before update give a look to <a href="https://www.thenewsletterplugin.com/category/release">this page</a> to know what's changed.</strong>
7
+ Version: 5.1.4
8
  Author: Stefano Lissa & The Newsletter Team
9
  Author URI: https://www.thenewsletterplugin.com
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
14
  */
15
 
16
  // Used as dummy parameter on css and js links
17
+ define('NEWSLETTER_VERSION', '5.1.4');
18
 
19
  global $wpdb, $newsletter;
20
 
394
  wp_enqueue_script('jquery-ui-tabs');
395
  wp_enqueue_media();
396
  wp_enqueue_style('tnp-admin', plugins_url('newsletter') . '/admin.css', array(), filemtime(NEWSLETTER_DIR . '/admin.css'));
397
+ wp_enqueue_script('tnp-admin', plugins_url('newsletter') . '/admin.js', array('jquery'), time());
398
 
399
  wp_enqueue_style('tnp-select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css');
400
  wp_enqueue_script('tnp-select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js');
401
+ wp_enqueue_script('tnp-jquery-vmap', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/jquery.vmap.min.js', array('jquery'));
402
  wp_enqueue_script('tnp-jquery-vmap-world', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/maps/jquery.vmap.world.js', array('tnp-jquery-vmap'));
403
  wp_enqueue_style('tnp-jquery-vmap', 'https://cdnjs.cloudflare.com/ajax/libs/jqvmap/1.5.1/jqvmap.min.css');
404
 
405
+ wp_register_script('tnp-chart', 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js', array('jquery'));
406
 
407
  $dismissed = get_option('newsletter_dismissed', array());
408
 
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Tags: newsletter,email,subscription,mass mail,list build,email marketing,direct mailing,automation,automated
3
  Requires at least: 3.4.0
4
  Tested up to: 4.9
5
- Stable tag: 5.1.3
6
  Contributors: satollo,webagile,michael-travan
7
 
8
  Add a real newsletter system to your blog. For free. With unlimited newsletters and subscribers.
@@ -14,16 +14,16 @@ send and track e-mails, headache-free. It just works out of box!
14
 
15
  = Main Features =
16
 
17
- * NEW **responsive email Drag & Drop composer**
18
- * **Unlimited Subscribers** with statistics
19
- * **Unlimited Emails** with tracking
20
  * Customizable **subscription widget**, **page** or **custom form**
21
  * Wordpress User Registration **seamless integration**
22
  * **Single** And **Double Opt-In** plus privacy checkbox for EU laws compliance
23
- * **Subscribers preferences** to fine-target your campaigns
24
  * SMTP-Ready
25
  * Customizable Themes
26
- * Html and Text versions of Emails
27
  * All messages are **fully translatable** from Admin Panel (no .po/.mo)
28
  * Diagnostics Panel to check your blog mailing capability
29
  * **Compatible with Postman, WP Mail SMTP, Easy WP SMTP, Easy SMTP Mail, WP Mail Bank**
@@ -85,7 +85,17 @@ Thank you, The Newsletter Team
85
 
86
  == Changelog ==
87
 
88
- == NEXT ==
 
 
 
 
 
 
 
 
 
 
89
 
90
  * Fixed newsletter duplication which was loosing the editor type
91
  * Fixed gender saving on targeting
2
  Tags: newsletter,email,subscription,mass mail,list build,email marketing,direct mailing,automation,automated
3
  Requires at least: 3.4.0
4
  Tested up to: 4.9
5
+ Stable tag: 5.1.4
6
  Contributors: satollo,webagile,michael-travan
7
 
8
  Add a real newsletter system to your blog. For free. With unlimited newsletters and subscribers.
14
 
15
  = Main Features =
16
 
17
+ * **Responsive email Drag & Drop composer**
18
+ * **Unlimited subscribers** with statistics
19
+ * **Unlimited newsletter** with tracking
20
  * Customizable **subscription widget**, **page** or **custom form**
21
  * Wordpress User Registration **seamless integration**
22
  * **Single** And **Double Opt-In** plus privacy checkbox for EU laws compliance
23
+ * **Subscribers lists** to fine-target your campaigns
24
  * SMTP-Ready
25
  * Customizable Themes
26
+ * Newsletter with Html and Text message versions
27
  * All messages are **fully translatable** from Admin Panel (no .po/.mo)
28
  * Diagnostics Panel to check your blog mailing capability
29
  * **Compatible with Postman, WP Mail SMTP, Easy WP SMTP, Easy SMTP Mail, WP Mail Bank**
85
 
86
  == Changelog ==
87
 
88
+ == 5.1.4 ==
89
+
90
+ * Fixed notices on email edit panel
91
+ * Added microdata to the call to action block
92
+ * Added filter on name field while sending. [See this post](https://www.thenewsletterplugin.com/?p=54292)
93
+ * Improved the online [viewability rules](https://www.thenewsletterplugin.com/documentation/newsletters-module#view-online)
94
+ * Fixed theme editor bad behavior
95
+ * Fixed the min size of thumbnails on default theme
96
+ * Removed references to font awesome where not used
97
+
98
+ == 5.1.3 ==
99
 
100
  * Fixed newsletter duplication which was loosing the editor type
101
  * Fixed gender saving on targeting