First step complete
This commit is contained in:
@@ -42,7 +42,22 @@ define(
|
|||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
handleSelectTemplate: function(template) {
|
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) {
|
handlePreviewTemplate: function(template) {
|
||||||
console.log('preview '+template.id);
|
console.log('preview '+template.id);
|
||||||
|
@@ -73,6 +73,7 @@ class Migrator {
|
|||||||
$attributes = array(
|
$attributes = array(
|
||||||
'id mediumint(9) NOT NULL AUTO_INCREMENT,',
|
'id mediumint(9) NOT NULL AUTO_INCREMENT,',
|
||||||
'subject varchar(250) NOT NULL,',
|
'subject varchar(250) NOT NULL,',
|
||||||
|
'type varchar(20) NOT NULL DEFAULT "standard",',
|
||||||
'preheader varchar(250) NOT NULL,',
|
'preheader varchar(250) NOT NULL,',
|
||||||
'body longtext,',
|
'body longtext,',
|
||||||
'created_at TIMESTAMP NOT NULL DEFAULT 0,',
|
'created_at TIMESTAMP NOT NULL DEFAULT 0,',
|
||||||
|
@@ -8,13 +8,6 @@ class Newsletter extends Model {
|
|||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__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 = '') {
|
static function search($orm, $search = '') {
|
||||||
|
@@ -5,6 +5,7 @@ use MailPoet\Listing;
|
|||||||
use MailPoet\Mailer\Bridge;
|
use MailPoet\Mailer\Bridge;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Models\NewsletterTemplate;
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
@@ -78,4 +79,27 @@ class Newsletters {
|
|||||||
);
|
);
|
||||||
wp_send_json($bulk_action->apply());
|
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(
|
$this->data = array(
|
||||||
'subject' => 'new newsletter',
|
'subject' => 'new newsletter',
|
||||||
'body' => 'body',
|
'body' => 'body',
|
||||||
|
'type' => 'standard',
|
||||||
'preheader' => 'preaheader'
|
'preheader' => 'preaheader'
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -20,19 +21,18 @@ class NewsletterCest {
|
|||||||
expect($this->result)->equals(true);
|
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() {
|
function itHasSubject() {
|
||||||
$subscriber = Newsletter::where('subject', $this->data['subject'])
|
$subscriber = Newsletter::where('subject', $this->data['subject'])
|
||||||
->findOne();
|
->findOne();
|
||||||
expect($subscriber->subject)->equals($this->data['subject']);
|
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() {
|
function itHasBody() {
|
||||||
$subscriber = Newsletter::where('body', $this->data['body'])
|
$subscriber = Newsletter::where('body', $this->data['body'])
|
||||||
->findOne();
|
->findOne();
|
||||||
|
Reference in New Issue
Block a user