diff --git a/assets/css/src/newsletter_editor/libraryOverrides.styl b/assets/css/src/newsletter_editor/libraryOverrides.styl index 12c509df0d..2049608f1c 100644 --- a/assets/css/src/newsletter_editor/libraryOverrides.styl +++ b/assets/css/src/newsletter_editor/libraryOverrides.styl @@ -84,7 +84,7 @@ position: relative body overflow-x: auto -/* Hide the "Details" section of Wordpress Media manager */ +/* Hide the "Details" section of WordPress Media manager */ .media-sidebar display: none @@ -98,7 +98,7 @@ body .attachments-browser .uploader-inline right: 0 -/* Remove max width from date selector in Wordpress Media Manager */ +/* Remove max width from date selector in WordPress Media Manager */ #media-attachment-date-filters max-width: calc(100% - 12px) diff --git a/assets/js/src/newsletters/listings/welcome.jsx b/assets/js/src/newsletters/listings/welcome.jsx index 0c53af1e96..6c33c37c17 100644 --- a/assets/js/src/newsletters/listings/welcome.jsx +++ b/assets/js/src/newsletters/listings/welcome.jsx @@ -10,6 +10,8 @@ import jQuery from 'jquery' import MailPoet from 'mailpoet' import _ from 'underscore' +const mailpoet_roles = window.mailpoet_roles || {}; + const messages = { onTrash(response) { const count = ~~response; @@ -74,7 +76,8 @@ var columns = [ }, { name: 'statistics', - label: MailPoet.I18n.t('statistics') + label: MailPoet.I18n.t('statistics'), + display: mailpoet_tracking_enabled }, { name: 'updated_at', @@ -187,12 +190,20 @@ const NewsletterListWelcome = React.createClass({ ); }, renderSettings: function(newsletter) { - let settings; + let sendingEvent; + let sendingDelay; + // set sending event switch (newsletter.options.event) { case 'user': // WP User - settings = MailPoet.I18n.t('onWordpressUserRegistration'); + if (newsletter.options.role === 'mailpoet_all') { + sendingEvent = MailPoet.I18n.t('welcomeEventWPUserAnyRole'); + } else { + sendingEvent = MailPoet.I18n.t('welcomeEventWPUserWithRole').replace( + '%$1s', mailpoet_roles[newsletter.options.role] + ); + } break; case 'segment': @@ -201,40 +212,69 @@ const NewsletterListWelcome = React.createClass({ return (~~(segment.id) === ~~(newsletter.options.segment)); }); - settings = MailPoet.I18n.t('onSubscriptionToList') + ' ' +segment.name; + sendingEvent = MailPoet.I18n.t('welcomeEventSegment').replace( + '%$1s', segment.name + ); break; } + // set sending delay + if (newsletter.options.afterTimeType !== 'immediate') { + switch (newsletter.options.afterTimeType) { + case 'hours': + sendingDelay = MailPoet.I18n.t('sendingDelayHours').replace( + '%$1d', newsletter.options.afterTimeNumber + ); + break; + + case 'days': + sendingDelay = MailPoet.I18n.t('sendingDelayDays').replace( + '%$1d', newsletter.options.afterTimeNumber + ); + break; + + case 'weeks': + sendingDelay = MailPoet.I18n.t('sendingDelayWeeks').replace( + '%$1d', newsletter.options.afterTimeNumber + ); + break; + } + sendingEvent += ' [' + sendingDelay + ']'; + } + return ( - { settings } + { sendingEvent }. ); }, renderStatistics: function(newsletter) { - if(!newsletter.statistics || !newsletter.queue || newsletter.queue.count_processed == 0 || newsletter.queue.status === 'scheduled') { - return ( - - {MailPoet.I18n.t('notSentYet')} - - ); + if (mailpoet_tracking_enabled === false) { + return; } - var percentage_clicked = Math.round( - (newsletter.statistics.clicked * 100) / (newsletter.queue.count_processed) - ); - var percentage_opened = Math.round( - (newsletter.statistics.opened * 100) / (newsletter.queue.count_processed) - ); - var percentage_unsubscribed = Math.round( - (newsletter.statistics.unsubscribed * 100) / (newsletter.queue.count_processed) - ); + if(newsletter.statistics && newsletter.queue && newsletter.queue.status !== 'scheduled') { + const total_sent = ~~(newsletter.queue.count_processed); + const percentage_clicked = Math.round( + (~~(newsletter.statistics.clicked) * 100) / total_sent + ); + const percentage_opened = Math.round( + (~~(newsletter.statistics.opened) * 100) / total_sent + ); + const percentage_unsubscribed = Math.round( + (~~(newsletter.statistics.unsubscribed) * 100) / total_sent + ); - return ( - - { percentage_opened }%, { percentage_clicked }%, { percentage_unsubscribed }% - - ); + return ( + + { percentage_opened }%, { percentage_clicked }%, { percentage_unsubscribed }% + + ); + } else { + return ( + {MailPoet.I18n.t('notSentYet')} + ); + } }, renderItem: function(newsletter, actions) { var rowClasses = classNames( diff --git a/assets/js/src/newsletters/types/welcome/scheduling.jsx b/assets/js/src/newsletters/types/welcome/scheduling.jsx index 03e94c533b..1946cf9160 100644 --- a/assets/js/src/newsletters/types/welcome/scheduling.jsx +++ b/assets/js/src/newsletters/types/welcome/scheduling.jsx @@ -25,7 +25,7 @@ define( name: 'event', values: { 'segment': MailPoet.I18n.t('onSubscriptionToList'), - 'user': MailPoet.I18n.t('onWordpressUserRegistration'), + 'user': MailPoet.I18n.t('onWPUserRegistration'), } }; diff --git a/lib/Newsletter/Shortcodes/ShortcodesHelper.php b/lib/Newsletter/Shortcodes/ShortcodesHelper.php index 9baf4f533b..e461ab4ec4 100644 --- a/lib/Newsletter/Shortcodes/ShortcodesHelper.php +++ b/lib/Newsletter/Shortcodes/ShortcodesHelper.php @@ -21,7 +21,7 @@ class ShortcodesHelper { 'shortcode' => 'subscriber:email', ), array( - 'text' => __('Wordpress User Display Name'), + 'text' => __('WordPress User Display Name'), 'shortcode' => 'subscriber:displayname | default:member', ), array( diff --git a/lib/Router/Newsletters.php b/lib/Router/Newsletters.php index d7b6e1e91e..1e39520a8c 100644 --- a/lib/Router/Newsletters.php +++ b/lib/Router/Newsletters.php @@ -263,10 +263,6 @@ class Newsletters { ->withOptions() ->withTotalSent() ->withStatistics(); - - $options = $newsletter->options()->findArray(); - $newsletter->options = Helpers::arrayColumn($options, 'value', 'name'); - } else if($newsletter->type === Newsletter::TYPE_NOTIFICATION) { $newsletter ->withSegments() diff --git a/lib/WP/DateTime.php b/lib/WP/DateTime.php index 2b0359f094..eedcbd4d85 100644 --- a/lib/WP/DateTime.php +++ b/lib/WP/DateTime.php @@ -40,7 +40,7 @@ class DateTime { /** * Generates a list of time strings within an interval, - * formatted and mapped from DEFAULT_TIME_FORMAT to Wordpress time strings. + * formatted and mapped from DEFAULT_TIME_FORMAT to WordPress time strings. */ function getTimeInterval( $start_time='00:00:00', diff --git a/tests/_support/Helper/WordPress.php b/tests/_support/Helper/WordPress.php index 326dddd3fe..3508b30a8e 100644 --- a/tests/_support/Helper/WordPress.php +++ b/tests/_support/Helper/WordPress.php @@ -29,7 +29,8 @@ class WordPress extends \Codeception\Module namespace MailPoet\WP; function get_option($key) { - if ($callback = \Helper\Wordpress::getInterceptor('get_option')) + if($callback = \Helper\WordPress::getInterceptor('get_option')) { return $callback($key); + } return \get_option($key); } diff --git a/tests/unit/WP/DateTimeTest.php b/tests/unit/WP/DateTimeTest.php index 8eae9f9497..2620de3735 100644 --- a/tests/unit/WP/DateTimeTest.php +++ b/tests/unit/WP/DateTimeTest.php @@ -77,6 +77,6 @@ class DateTimeTest extends MailPoetTest { } function _afterStep() { - Wordpress::releaseAllFunctions(); + WordPress::releaseAllFunctions(); } } diff --git a/views/newsletters.html b/views/newsletters.html index 6389603dbc..d63104cfdf 100644 --- a/views/newsletters.html +++ b/views/newsletters.html @@ -137,7 +137,7 @@ 'selectEventToSendWelcomeEmail': __('Select an event to send this welcome email'), 'onSubscriptionToList': __('When someone subscribes to the list...'), - 'onWordpressUserRegistration': __('When a new WordPress user is added to your site...'), + 'onWPUserRegistration': __('When a new WordPress user is added to your site...'), 'delayImmediately': __('immediately'), 'delayHoursAfter': __('hour(s) after'), 'delayDaysAfter': __('day(s) after'), @@ -214,6 +214,15 @@ 'welcomeEmailActivated': __('Your welcome email is now active.'), 'welcomeEmailActivationFailed': __('Your welcome email could not be activated, check its settings.'), 'postNotificationActivated': __('Your post notification is now active.'), - 'postNotificationActivationFailed': __('Your post notification could not be activated, check its settings.') + 'postNotificationActivationFailed': __('Your post notification could not be activated, check its settings.'), + + 'welcomeEventSegment': __('This newsletter is sent when someone subscribes to the list "%$1s"'), + 'welcomeEventWPUserAnyRole': __('This newsletter is sent when a new WordPress user is added to your site'), + 'welcomeEventWPUserWithRole': __('This newsletter is sent when a new WordPress user with the role "%$1s" is added to your site'), + + 'sendingDelayHours': __('%$1d hour(s) later'), + 'sendingDelayDays': __('%$1d day(s) later'), + 'sendingDelayWeeks': __('%$1d week(s) later') + }) %> <% endblock %>