show 'Resume' button if the Newsletter was paused.

This commit is contained in:
Amine Ben hammou
2017-07-21 14:51:50 +00:00
parent df9ba7e6c8
commit 4b4b5dd556
4 changed files with 64 additions and 18 deletions

View File

@@ -149,6 +149,37 @@ define(
} }
return false; return false;
}, },
handleResume: function (e) {
e.preventDefault();
if(!this.isValid()) {
jQuery('#mailpoet_newsletter').parsley().validate();
} else {
this._save(e).done(() => {
this.setState({ loading: true });
}).done(() => {
MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'sendingQueue',
action: 'resume',
data: {
newsletter_id: this.state.item.id
}
}).done(() => {
this.context.router.push(`/${ this.state.item.type || '' }`);
}).fail((response) => {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map((error) => { return error.message; }),
{ scroll: true }
);
}
});
}).fail(this._showError).always(() => {
this.setState({ loading: false });
});
}
return false;
},
handleSave: function (e) { handleSave: function (e) {
e.preventDefault(); e.preventDefault();
@@ -174,6 +205,7 @@ define(
}, },
_save: function () { _save: function () {
const data = this.state.item; const data = this.state.item;
data.queue = undefined;
this.setState({ loading: true }); this.setState({ loading: true });
// Store only properties that can be changed on this page // Store only properties that can be changed on this page
@@ -238,6 +270,15 @@ define(
{...this.getSendButtonOptions()} {...this.getSendButtonOptions()}
/> />
   
{
this.state.item.queue && this.state.item.queue.status == 'paused'
? <input
className="button button-secondary"
type="button"
onClick={ this.handleResume }
value={MailPoet.I18n.t('resume')} />
: null
}
<input <input
className="button button-secondary" className="button button-secondary"
type="submit" type="submit"

View File

@@ -33,6 +33,7 @@ class Newsletters extends APIEndpoint {
$newsletter = $newsletter $newsletter = $newsletter
->withSegments() ->withSegments()
->withOptions() ->withOptions()
->withSendingQueue()
->asArray(); ->asArray();
$newsletter = Hooks::applyFilters('mailpoet_api_newsletters_get_after', $newsletter); $newsletter = Hooks::applyFilters('mailpoet_api_newsletters_get_after', $newsletter);
return $this->successResponse($newsletter); return $this->successResponse($newsletter);
@@ -111,7 +112,7 @@ class Newsletters extends APIEndpoint {
} }
$queue = $newsletter->getQueue(); $queue = $newsletter->getQueue();
if ($queue) { if($queue) {
$queue->newsletter_rendered_body = null; $queue->newsletter_rendered_body = null;
$queue->newsletter_rendered_subject = null; $queue->newsletter_rendered_subject = null;
$queue->save(); $queue->save();

View File

@@ -99,6 +99,7 @@ class NewslettersTest extends \MailPoetTest {
Newsletter::findOne($this->newsletter->id) Newsletter::findOne($this->newsletter->id)
->withSegments() ->withSegments()
->withOptions() ->withOptions()
->withSendingQueue()
->asArray() ->asArray()
); );
$hook_name = 'mailpoet_api_newsletters_get_after'; $hook_name = 'mailpoet_api_newsletters_get_after';

View File

@@ -1215,23 +1215,26 @@
newsletter: response.data, newsletter: response.data,
config: config, config: config,
}); });
MailPoet.Ajax.post({ var queue = response.data.queue;
api_version: window.mailpoet_api_version, if (queue && queue.status == 'scheduled') {
endpoint: 'sending_queue', MailPoet.Ajax.post({
action: 'pause', api_version: window.mailpoet_api_version,
data: { endpoint: 'sending_queue',
newsletter_id: response.data.id action: 'pause',
data: {
newsletter_id: response.data.id
}
}).done(response =>
MailPoet.Notice.success(MailPoet.I18n.t('newsletterIsPaused'))
)
}).fail(function(response) {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }),
{ scroll: true, static: true }
);
} }
}).done(response => });
MailPoet.Notice.success(MailPoet.I18n.t('newsletterIsPaused')) }
)
}).fail(function(response) {
if (response.errors.length > 0) {
MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }),
{ scroll: true, static: true }
);
}
});
</script> </script>
<% endblock %> <% endblock %>