fixed duplicated templates when scheduling/sending same newsletter twice
This commit is contained in:
@ -101,6 +101,7 @@ define(
|
||||
endpoint: 'newsletterTemplates',
|
||||
action: 'save',
|
||||
data: {
|
||||
newsletter_id: response.data.id,
|
||||
name: response.data.subject,
|
||||
description: response.data.preheader,
|
||||
thumbnail: thumbnail.toDataURL('image/jpeg'),
|
||||
@ -189,12 +190,17 @@ define(
|
||||
'MailPoet Free version': window.mailpoet_version,
|
||||
});
|
||||
}
|
||||
this.setState({ loading: false });
|
||||
});
|
||||
}).fail(this.showError);
|
||||
})
|
||||
.fail((err) => {
|
||||
this.showError(err);
|
||||
this.setState({ loading: false });
|
||||
});
|
||||
}
|
||||
})
|
||||
.fail(this.showError)
|
||||
.always(() => {
|
||||
.fail((err) => {
|
||||
this.showError(err);
|
||||
this.setState({ loading: false });
|
||||
});
|
||||
}
|
||||
|
@ -38,6 +38,13 @@ class NewsletterTemplates extends APIEndpoint {
|
||||
}
|
||||
|
||||
function save($data = array()) {
|
||||
if(!empty($data['newsletter_id'])) {
|
||||
$template = NewsletterTemplate::whereEqual('newsletter_id', $data['newsletter_id'])->findOne();
|
||||
if(!empty($template)) {
|
||||
$template = $template->asArray();
|
||||
$data['id'] = $template['id'];
|
||||
}
|
||||
}
|
||||
$template = NewsletterTemplate::createOrUpdate($data);
|
||||
$errors = $template->getErrors();
|
||||
|
||||
|
@ -244,6 +244,7 @@ class Migrator {
|
||||
function newsletterTemplates() {
|
||||
$attributes = array(
|
||||
'id int(11) unsigned NOT NULL AUTO_INCREMENT,',
|
||||
'newsletter_id int NULL DEFAULT 0,',
|
||||
'name varchar(250) NOT NULL,',
|
||||
'categories varchar(250) NOT NULL DEFAULT "[]",',
|
||||
'description varchar(250) NOT NULL,',
|
||||
|
@ -15,6 +15,7 @@ class NewsletterTemplatesTest extends \MailPoetTest {
|
||||
|
||||
NewsletterTemplate::createOrUpdate(array(
|
||||
'name' => 'Template #2',
|
||||
'newsletter_id' => 1,
|
||||
'description' => 'My Second Template',
|
||||
'body' => '{"key2": "value2"}'
|
||||
));
|
||||
@ -53,7 +54,7 @@ class NewsletterTemplatesTest extends \MailPoetTest {
|
||||
expect($response->data)->equals($templates);
|
||||
}
|
||||
|
||||
function testItCanSaveANewsletterTemplate() {
|
||||
function testItCanSaveANewTemplate() {
|
||||
$template_data = array(
|
||||
'name' => 'Template #3',
|
||||
'description' => 'My Third Template',
|
||||
@ -68,6 +69,41 @@ class NewsletterTemplatesTest extends \MailPoetTest {
|
||||
);
|
||||
}
|
||||
|
||||
function testItCanSaveANewTemplateAssociatedWithANewsletter() {
|
||||
$template_data = array(
|
||||
'newsletter_id' => 2,
|
||||
'name' => 'Template #3',
|
||||
'description' => 'My Third Template',
|
||||
'body' => '{"key3": "value3"}'
|
||||
);
|
||||
|
||||
$router = new NewsletterTemplates();
|
||||
$response = $router->save($template_data);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($response->data)->equals(
|
||||
NewsletterTemplate::findOne($response->data['id'])->asArray()
|
||||
);
|
||||
}
|
||||
|
||||
function testItCanUpdateTemplateAssociatedWithANewsletter() {
|
||||
$template_data = array(
|
||||
'newsletter_id' => 1,
|
||||
'name' => 'Template #2',
|
||||
'description' => 'My Updated Second Template',
|
||||
'body' => '{"key3": "value3"}'
|
||||
);
|
||||
|
||||
$router = new NewsletterTemplates();
|
||||
$response = $router->save($template_data);
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
expect($response->data)->equals(
|
||||
NewsletterTemplate::findOne($response->data['id'])->asArray()
|
||||
);
|
||||
|
||||
$template = NewsletterTemplate::whereEqual('newsletter_id', 1)->findOne();
|
||||
expect($response->data)->equals($template->asArray());
|
||||
}
|
||||
|
||||
function testItCanDeleteANewsletterTemplate() {
|
||||
$template = NewsletterTemplate::where('name', 'Template #2')->findOne();
|
||||
expect($template->deleted_at)->null();
|
||||
|
Reference in New Issue
Block a user