From 1bd7639cc275332bca30e09cf2862b66629daf45 Mon Sep 17 00:00:00 2001 From: Vlad Date: Tue, 10 May 2016 20:06:20 -0400 Subject: [PATCH] - Formats all numbers >1000 to use comma - Removes subscriber count from segments if its === 0 Fixes #431 --- assets/js/src/listing/groups.jsx | 2 +- assets/js/src/listing/pages.jsx | 4 ++-- assets/js/src/segments/list.jsx | 12 ++++++++---- assets/js/src/subscribers/importExport/import.js | 12 +++++++----- assets/js/src/subscribers/list.jsx | 12 +++++++++--- lib/Models/Subscriber.php | 16 ++++++++++------ 6 files changed, 37 insertions(+), 21 deletions(-) diff --git a/assets/js/src/listing/groups.jsx b/assets/js/src/listing/groups.jsx index eda640f0cd..7da1780ef0 100644 --- a/assets/js/src/listing/groups.jsx +++ b/assets/js/src/listing/groups.jsx @@ -21,7 +21,7 @@ define(['react', 'classnames'], function(React, classNames) { href="javascript:;" className={classes} onClick={this.handleSelect.bind(this, group.name)} > - {group.label} ({ group.count }) + {group.label} ({ group.count.toLocaleString() }) ); diff --git a/assets/js/src/listing/pages.jsx b/assets/js/src/listing/pages.jsx index f885a9a44f..09f8fc5c53 100644 --- a/assets/js/src/listing/pages.jsx +++ b/assets/js/src/listing/pages.jsx @@ -148,7 +148,7 @@ define([ className="current-page" />  {MailPoet.I18n.t('pageOutOf')}  - {Math.ceil(this.props.count / this.props.limit)} + {Math.ceil(this.props.count / this.props.limit).toLocaleString()}   @@ -167,7 +167,7 @@ define([ return (
{ - MailPoet.I18n.t('numberOfItems').replace('%$1d', this.props.count) + MailPoet.I18n.t('numberOfItems').replace('%$1d', this.props.count.toLocaleString()) } { pagination }
diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index 5a54a6dd43..d09cf69893 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -165,7 +165,11 @@ const SegmentList = React.createClass({ 'manage-column', 'column-primary', 'has-row-actions' - ); + ), + subscribed = segment.subscribers_count.subscribed || 0, + unconfirmed = segment.subscribers_count.unconfirmed || 0, + unsubscribed = segment.subscribers_count.unsubscribed || 0; + return (
@@ -178,13 +182,13 @@ const SegmentList = React.createClass({ { segment.description } - { segment.subscribers_count.subscribed || 0 } + { parseInt(subscribed).toLocaleString() } - { segment.subscribers_count.unconfirmed || 0 } + { parseInt(unconfirmed).toLocaleString() } - { segment.subscribers_count.unsubscribed || 0 } + { parseInt(unsubscribed).toLocaleString() } { MailPoet.Date.full(segment.created_at) } diff --git a/assets/js/src/subscribers/importExport/import.js b/assets/js/src/subscribers/importExport/import.js index 508a5d6ae7..d623ed545a 100644 --- a/assets/js/src/subscribers/importExport/import.js +++ b/assets/js/src/subscribers/importExport/import.js @@ -490,7 +490,7 @@ define( ), invalid: (subscribers.invalid.length) ? MailPoet.I18n.t('importNoticeInvalid') - .replace('%1$s', '' + subscribers.invalid.length + '') + .replace('%1$s', '' + subscribers.invalid.length.toLocaleString() + '') .replace('%2$s', subscribers.invalid.join(', ')) : null, duplicate: (subscribers.duplicate.length) @@ -533,13 +533,15 @@ define( data: segments, width: '20em', templateResult: function (item) { + item.subscriberCount = parseInt(item.subscriberCount); return (item.subscriberCount > 0) - ? item.name + ' (' + item.subscriberCount + ')' + ? item.name + ' (' + item.subscriberCount.toLocaleString() + ')' : item.name; }, templateSelection: function (item) { + item.subscriberCount = parseInt(item.subscriberCount); return (item.subscriberCount > 0) - ? item.name + ' (' + item.subscriberCount + ')' + ? item.name + ' (' + item.subscriberCount.toLocaleString() + ')' : item.name; } }) @@ -1140,12 +1142,12 @@ define( importResults = { created: (importData.step2.created) ? MailPoet.I18n.t('subscribersCreated') - .replace('%1$s', '' + importData.step2.created + '') + .replace('%1$s', '' + importData.step2.created.toLocaleString() + '') .replace('%2$s', '"' + importData.step2.segments.join('", "') + '"') : false, updated: (importData.step2.updated) ? MailPoet.I18n.t('subscribersUpdated') - .replace('%1$s', '' + importData.step2.updated + '') + .replace('%1$s', '' + importData.step2.updated.toLocaleString() + '') .replace('%2$s', '"' + importData.step2.segments.join('", "') + '"') : false, noaction: (!importData.step2.updated && !importData.step2.created) diff --git a/assets/js/src/subscribers/list.jsx b/assets/js/src/subscribers/list.jsx index e64011d18b..832292d765 100644 --- a/assets/js/src/subscribers/list.jsx +++ b/assets/js/src/subscribers/list.jsx @@ -108,7 +108,9 @@ const bulk_actions = [ ); }, getLabel: function (segment) { - return segment.name + ' (' + segment.subscribers + ')'; + return (segment.subscribers > 0) ? + segment.name + ' (' + parseInt(segment.subscribers).toLocaleString() + ')' : + segment.name; } }; @@ -142,7 +144,9 @@ const bulk_actions = [ ); }, getLabel: function (segment) { - return segment.name + ' (' + segment.subscribers + ')'; + return (segment.subscribers > 0) ? + segment.name + ' (' + parseInt(segment.subscribers).toLocaleString() + ')' : + segment.name; } }; @@ -176,7 +180,9 @@ const bulk_actions = [ ); }, getLabel: function (segment) { - return segment.name + ' (' + segment.subscribers + ')'; + return (segment.subscribers > 0) ? + segment.name + ' (' + parseInt(segment.subscribers).toLocaleString() + ')' : + segment.name; } }; diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index 858c0f5f8e..2c6a60fd0c 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -127,7 +127,7 @@ class Subscriber extends Model { static function verifyToken($email, $token) { return (self::generateToken($email) === $token); } - + static function subscribe($subscriber_data = array(), $segment_ids = array()) { if(empty($subscriber_data) or empty($segment_ids)) { return false; @@ -192,11 +192,14 @@ class Subscriber extends Model { 'label' => __('All segments'), 'value' => '' ); + + $subscribers_without_segment = self::filter('withoutSegments')->count(); + $subscribers_without_segment_label = sprintf( + __('Subscribers without a segment (%s)'), + number_format($subscribers_without_segment) + ); $segment_list[] = array( - 'label' => sprintf( - __('Subscribers without a segment (%d)'), - self::filter('withoutSegments')->count() - ), + 'label' => str_replace(' (0)', '', $subscribers_without_segment_label), 'value' => 'none' ); @@ -205,8 +208,9 @@ class Subscriber extends Model { ->filter('groupBy', $group) ->count(); + $label = sprintf('%s (%s)', $segment->name, number_format($subscribers_count)); $segment_list[] = array( - 'label' => sprintf('%s (%d)', $segment->name, $subscribers_count), + 'label' => str_replace(' (0)', '', $label), 'value' => $segment->id() ); }