diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx index aaa83c2959..6ba23048c9 100644 --- a/assets/js/src/newsletters/listings/notification.jsx +++ b/assets/js/src/newsletters/listings/notification.jsx @@ -252,6 +252,20 @@ const NewsletterListNotification = React.createClass({ ); }, + renderHistoryLink: function(newsletter) { + const childrenCount = ~~(newsletter.children_count); + if (childrenCount === 0) { + return ( + MailPoet.I18n.t('notSentYet') + ); + } else { + return ( + { MailPoet.I18n.t('viewHistory') } + ); + } + }, renderItem: function(newsletter, actions) { const rowClasses = classNames( 'manage-column', @@ -277,9 +291,7 @@ const NewsletterListNotification = React.createClass({ { this.renderSettings(newsletter) } - { MailPoet.I18n.t('viewHistory') } + { this.renderHistoryLink(newsletter) } { MailPoet.Date.format(newsletter.updated_at) } diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index b39ee0e868..220ece6e31 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -123,7 +123,8 @@ class Newsletter extends Model { 'parent_id' => $this->id, 'type' => self::TYPE_NOTIFICATION_HISTORY, 'status' => self::STATUS_SENDING - )); + ) + ); $notification_history = self::create(); $notification_history->hydrate($data); @@ -163,6 +164,14 @@ class Newsletter extends Model { return parent::delete(); } + function children() { + return $this->has_many( + __NAMESPACE__.'\Newsletter', + 'parent_id', + 'id' + ); + } + function segments() { return $this->has_many_through( __NAMESPACE__.'\Segment', @@ -177,6 +186,11 @@ class Newsletter extends Model { return $this; } + function withChildrenCount() { + $this->children_count = $this->children()->count(); + return $this; + } + function options() { return $this->has_many_through( __NAMESPACE__.'\NewsletterOptionField', diff --git a/lib/Router/Newsletters.php b/lib/Router/Newsletters.php index 5af1a7a278..9e6b958358 100644 --- a/lib/Router/Newsletters.php +++ b/lib/Router/Newsletters.php @@ -267,7 +267,8 @@ class Newsletters { } else if($newsletter->type === Newsletter::TYPE_NOTIFICATION) { $newsletter ->withOptions() - ->withSegments(); + ->withSegments() + ->withChildrenCount(); } else if($newsletter->type === Newsletter::TYPE_NOTIFICATION_HISTORY) { $newsletter ->withSegments()