- Adds "scheduled for" status for notifications
- Adds post notification/welcome activation message - Implements schedule update when editing newsletter Implements #405 (3 & 7)
This commit is contained in:
@ -141,11 +141,17 @@ define(
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
renderStatus: function(item) {
|
renderStatus: function(item) {
|
||||||
|
console.log(item);
|
||||||
if(!item.queue) {
|
if(!item.queue) {
|
||||||
return (
|
return (
|
||||||
<span>{MailPoet.I18n.t('notSentYet')}</span>
|
<span>{MailPoet.I18n.t('notSentYet')}</span>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
if (item.queue.status === 'scheduled') {
|
||||||
|
return (
|
||||||
|
<span>{MailPoet.I18n.t('scheduledFor')} { item.queue.scheduled_at } </span>
|
||||||
|
)
|
||||||
|
}
|
||||||
var progressClasses = classNames(
|
var progressClasses = classNames(
|
||||||
'mailpoet_progress',
|
'mailpoet_progress',
|
||||||
{ 'mailpoet_progress_complete': item.queue.status === 'completed'}
|
{ 'mailpoet_progress_complete': item.queue.status === 'completed'}
|
||||||
|
@ -107,9 +107,7 @@ define(
|
|||||||
this.setState({ loading: false });
|
this.setState({ loading: false });
|
||||||
if(response.result === true) {
|
if(response.result === true) {
|
||||||
this.history.pushState(null, '/');
|
this.history.pushState(null, '/');
|
||||||
MailPoet.Notice.success(
|
MailPoet.Notice.success(response.data.message);
|
||||||
MailPoet.I18n.t('newsletterIsBeingSent')
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
if(response.errors) {
|
if(response.errors) {
|
||||||
MailPoet.Notice.error(response.errors);
|
MailPoet.Notice.error(response.errors);
|
||||||
|
@ -68,7 +68,6 @@ class Newsletter extends Model {
|
|||||||
|
|
||||||
function getQueue() {
|
function getQueue() {
|
||||||
return SendingQueue::where('newsletter_id', $this->id)
|
return SendingQueue::where('newsletter_id', $this->id)
|
||||||
->whereRaw(('`status` IS NULL OR `status` != "scheduled"'))
|
|
||||||
->orderByDesc('updated_at')
|
->orderByDesc('updated_at')
|
||||||
->findOne();
|
->findOne();
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ use MailPoet\Models\NewsletterOptionField;
|
|||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
|
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
use Cron\CronExpression as Cron;
|
use Cron\CronExpression as Cron;
|
||||||
|
|
||||||
@ -33,9 +34,46 @@ class SendingQueue {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create or update newsletter options, including schedule time
|
||||||
|
$options = array();
|
||||||
|
if(isset($data['options'])) {
|
||||||
|
$options = $data['options'];
|
||||||
|
unset($data['options']);
|
||||||
|
}
|
||||||
|
if ($options &&
|
||||||
|
($newsletter->type === 'notification' || $newsletter->type === 'welcome')
|
||||||
|
) {
|
||||||
|
$option_fields = NewsletterOptionField::where(
|
||||||
|
'newsletter_type', $newsletter->type
|
||||||
|
)->findArray();
|
||||||
|
foreach($option_fields as $option_field) {
|
||||||
|
if(isset($options[$option_field['name']])) {
|
||||||
|
$relation = NewsletterOption::where('option_field_id', $option_field['id'])
|
||||||
|
->where('newsletter_id', $newsletter->id)
|
||||||
|
->findOne();
|
||||||
|
if (!$relation) {
|
||||||
|
$relation = NewsletterOption::create();
|
||||||
|
$relation->newsletter_id = $newsletter->id;
|
||||||
|
$relation->option_field_id = $option_field['id'];
|
||||||
|
}
|
||||||
|
$relation->value = ($option_field['name'] === 'segments') ?
|
||||||
|
serialize($data['segments']) :
|
||||||
|
$options[$option_field['name']];
|
||||||
|
$relation->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($newsletter->type === 'notification') {
|
||||||
|
Scheduler::postNotification($newsletter->id);
|
||||||
|
}
|
||||||
|
$newsletter = Newsletter::filter('filterWithOptions')
|
||||||
|
->findOne($data['newsletter_id']);
|
||||||
|
}
|
||||||
if($newsletter->type === 'welcome') {
|
if($newsletter->type === 'welcome') {
|
||||||
return array(
|
return array(
|
||||||
'result' => true
|
'result' => true,
|
||||||
|
'data' => array(
|
||||||
|
'message' => __('Your welcome notification is activated.')
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,20 +88,6 @@ class SendingQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($newsletter->type === 'notification') {
|
if($newsletter->type === 'notification') {
|
||||||
$option_field = NewsletterOptionField::where('name', 'segments')
|
|
||||||
->where('newsletter_type', 'notification')
|
|
||||||
->findOne();
|
|
||||||
$relation = NewsletterOption::where('option_field_id', $option_field->id)
|
|
||||||
->where('newsletter_id', $newsletter->id)
|
|
||||||
->findOne();
|
|
||||||
if(!$relation) {
|
|
||||||
$relation = NewsletterOption::create();
|
|
||||||
$relation->newsletter_id = $newsletter->id;
|
|
||||||
$relation->option_field_id = $option_field->id;
|
|
||||||
}
|
|
||||||
$relation->value = serialize($data['segments']);
|
|
||||||
$relation->save();
|
|
||||||
|
|
||||||
$queue = \MailPoet\Models\SendingQueue::where('status', 'scheduled')
|
$queue = \MailPoet\Models\SendingQueue::where('status', 'scheduled')
|
||||||
->where('newsletter_id', $newsletter->id)
|
->where('newsletter_id', $newsletter->id)
|
||||||
->findOne();
|
->findOne();
|
||||||
@ -78,7 +102,9 @@ class SendingQueue {
|
|||||||
$queue->save();
|
$queue->save();
|
||||||
return array(
|
return array(
|
||||||
'result' => true,
|
'result' => true,
|
||||||
'data' => array(__('Newsletter was scheduled for sending.'))
|
'data' => array(
|
||||||
|
'message' => __('Your post notifications is activated.')
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +137,9 @@ class SendingQueue {
|
|||||||
} else {
|
} else {
|
||||||
return array(
|
return array(
|
||||||
'result' => true,
|
'result' => true,
|
||||||
'data' => array($queue->id)
|
'data' => array(
|
||||||
|
'message' => __('The newsletter is being sent...')
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
'trash': __('Trash'),
|
'trash': __('Trash'),
|
||||||
'edit': __('Edit'),
|
'edit': __('Edit'),
|
||||||
'notSentYet': __('Not sent yet.'),
|
'notSentYet': __('Not sent yet.'),
|
||||||
|
'scheduledFor': __('Scheduled for'),
|
||||||
'newsletterQueueCompleted': __('Sent to %$1d of %$2d.'),
|
'newsletterQueueCompleted': __('Sent to %$1d of %$2d.'),
|
||||||
'resume': __('Resume'),
|
'resume': __('Resume'),
|
||||||
'pause': __('Pause'),
|
'pause': __('Pause'),
|
||||||
@ -137,7 +138,6 @@
|
|||||||
'replyToAddressPlaceholder': __('john.doe@email.com'),
|
'replyToAddressPlaceholder': __('john.doe@email.com'),
|
||||||
'newsletterUpdated': __('Newsletter successfully updated!'),
|
'newsletterUpdated': __('Newsletter successfully updated!'),
|
||||||
'newsletterAdded': __('Newsletter successfully added!'),
|
'newsletterAdded': __('Newsletter successfully added!'),
|
||||||
'newsletterIsBeingSent': __('The newsletter is being sent...'),
|
|
||||||
'newsletterSendingError': __('An error occurred while trying to send. <a href="%$1s">Check your settings.</a>'),
|
'newsletterSendingError': __('An error occurred while trying to send. <a href="%$1s">Check your settings.</a>'),
|
||||||
'finalNewsletterStep': __('Final step: last details'),
|
'finalNewsletterStep': __('Final step: last details'),
|
||||||
'saveDraftAndClose': __('Save as draft and close'),
|
'saveDraftAndClose': __('Save as draft and close'),
|
||||||
|
Reference in New Issue
Block a user