First step complete
This commit is contained in:
@@ -42,7 +42,22 @@ define(
|
||||
}.bind(this));
|
||||
},
|
||||
handleSelectTemplate: function(template) {
|
||||
console.log('select '+template.id);
|
||||
MailPoet.Ajax.post({
|
||||
endpoint: 'newsletters',
|
||||
action: 'create',
|
||||
data: {
|
||||
type: this.props.params.type,
|
||||
template: template.id
|
||||
}
|
||||
}).done(function(response) {
|
||||
if(response['url'] !== undefined) {
|
||||
window.location = response['url'];
|
||||
} else {
|
||||
response.map(function(error) {
|
||||
MailPoet.Notice.error(error);
|
||||
});
|
||||
}
|
||||
}.bind(this));
|
||||
},
|
||||
handlePreviewTemplate: function(template) {
|
||||
console.log('preview '+template.id);
|
||||
|
@@ -73,6 +73,7 @@ class Migrator {
|
||||
$attributes = array(
|
||||
'id mediumint(9) NOT NULL AUTO_INCREMENT,',
|
||||
'subject varchar(250) NOT NULL,',
|
||||
'type varchar(20) NOT NULL DEFAULT "standard",',
|
||||
'preheader varchar(250) NOT NULL,',
|
||||
'body longtext,',
|
||||
'created_at TIMESTAMP NOT NULL DEFAULT 0,',
|
||||
|
@@ -8,13 +8,6 @@ class Newsletter extends Model {
|
||||
|
||||
function __construct() {
|
||||
parent::__construct();
|
||||
|
||||
$this->addValidations('subject', array(
|
||||
'required' => __('You need to specify a subject.')
|
||||
));
|
||||
$this->addValidations('body', array(
|
||||
'required' => __('Newsletter cannot be empty.')
|
||||
));
|
||||
}
|
||||
|
||||
static function search($orm, $search = '') {
|
||||
|
@@ -5,6 +5,7 @@ use MailPoet\Listing;
|
||||
use MailPoet\Mailer\Bridge;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\NewsletterTemplate;
|
||||
use MailPoet\Newsletter\Renderer\Renderer;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
@@ -78,4 +79,27 @@ class Newsletters {
|
||||
);
|
||||
wp_send_json($bulk_action->apply());
|
||||
}
|
||||
|
||||
function create($data = array()) {
|
||||
$newsletter = Newsletter::create();
|
||||
$newsletter->type = $data['type'];
|
||||
$newsletter->body = '{}';
|
||||
|
||||
// try to load template data
|
||||
$template = NewsletterTemplate::findOne((int)$data['template']);
|
||||
if($template !== false) {
|
||||
$newsletter->body = $template->body;
|
||||
}
|
||||
|
||||
$result = $newsletter->save();
|
||||
if($result !== true) {
|
||||
wp_send_json($newsletter->getValidationErrors());
|
||||
} else {
|
||||
wp_send_json(array(
|
||||
'url' => admin_url(
|
||||
'admin.php?page=mailpoet-newsletter-editor&id='.$newsletter->id()
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -8,6 +8,7 @@ class NewsletterCest {
|
||||
$this->data = array(
|
||||
'subject' => 'new newsletter',
|
||||
'body' => 'body',
|
||||
'type' => 'standard',
|
||||
'preheader' => 'preaheader'
|
||||
);
|
||||
|
||||
@@ -20,19 +21,18 @@ class NewsletterCest {
|
||||
expect($this->result)->equals(true);
|
||||
}
|
||||
|
||||
function itHasToBeValid() {
|
||||
$empty_model = Newsletter::create();
|
||||
expect($empty_model->save())->notEquals(true);
|
||||
$validations = $empty_model->getValidationErrors();
|
||||
expect(count($validations))->equals(2);
|
||||
}
|
||||
|
||||
function itHasSubject() {
|
||||
$subscriber = Newsletter::where('subject', $this->data['subject'])
|
||||
->findOne();
|
||||
expect($subscriber->subject)->equals($this->data['subject']);
|
||||
}
|
||||
|
||||
function itHasType() {
|
||||
$subscriber = Newsletter::where('type', $this->data['type'])
|
||||
->findOne();
|
||||
expect($subscriber->type)->equals($this->data['type']);
|
||||
}
|
||||
|
||||
function itHasBody() {
|
||||
$subscriber = Newsletter::where('body', $this->data['body'])
|
||||
->findOne();
|
||||
|
Reference in New Issue
Block a user