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