First step complete

This commit is contained in:
Jonathan Labreuille
2015-09-30 15:56:13 +02:00
parent 2e3b565e8a
commit 45dccf6c50
5 changed files with 48 additions and 15 deletions

View File

@@ -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);

View File

@@ -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,',

View File

@@ -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 = '') {

View File

@@ -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()
)
));
}
}
}

View File

@@ -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();