converted newsletterTemplates endpoint + react
This commit is contained in:
@ -104,7 +104,7 @@ define([
|
|||||||
return MailPoet.Ajax.post({
|
return MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletterTemplates',
|
endpoint: 'newsletterTemplates',
|
||||||
action: 'save',
|
action: 'save',
|
||||||
data: data,
|
data: data
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -30,33 +30,35 @@ define(
|
|||||||
endpoint: 'newsletterTemplates',
|
endpoint: 'newsletterTemplates',
|
||||||
action: 'save',
|
action: 'save',
|
||||||
data: template
|
data: template
|
||||||
}).done(function(response) {
|
}).always(function() {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
if(response.result === true) {
|
}).done((response) => {
|
||||||
this.props.onImport(template);
|
this.props.onImport(response.data);
|
||||||
} else {
|
}).fail((response) => {
|
||||||
response.map(function(error) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(error);
|
MailPoet.Notice.error(
|
||||||
});
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}.bind(this));
|
});
|
||||||
},
|
},
|
||||||
handleSubmit: function(e) {
|
handleSubmit: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
if (_.size(this.refs.templateFile.files) <= 0) return false;
|
if (_.size(this.refs.templateFile.files) <= 0) return false;
|
||||||
|
|
||||||
var file = _.first(this.refs.templateFile.files),
|
var file = _.first(this.refs.templateFile.files);
|
||||||
reader = new FileReader(),
|
var reader = new FileReader();
|
||||||
saveTemplate = this.saveTemplate;
|
var saveTemplate = this.saveTemplate;
|
||||||
|
|
||||||
reader.onload = function(e) {
|
reader.onload = (e) => {
|
||||||
try {
|
try {
|
||||||
saveTemplate(JSON.parse(e.target.result));
|
saveTemplate(JSON.parse(e.target.result));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
MailPoet.Notice.error(MailPoet.I18n.t('templateFileMalformedError'));
|
MailPoet.Notice.error(MailPoet.I18n.t('templateFileMalformedError'));
|
||||||
}
|
}
|
||||||
}.bind(this);
|
};
|
||||||
|
|
||||||
reader.readAsText(file);
|
reader.readAsText(file);
|
||||||
},
|
},
|
||||||
@ -97,12 +99,12 @@ define(
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletterTemplates',
|
endpoint: 'newsletterTemplates',
|
||||||
action: 'getAll',
|
action: 'getAll',
|
||||||
}).done(function(response) {
|
}).always(() => {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
|
}).done((response) => {
|
||||||
if (this.isMounted()) {
|
if (this.isMounted()) {
|
||||||
|
if (response.data.length === 0) {
|
||||||
if(response.length === 0) {
|
response.data = [
|
||||||
response = [
|
|
||||||
{
|
{
|
||||||
name:
|
name:
|
||||||
MailPoet.I18n.t('mailpoetGuideTemplateTitle'),
|
MailPoet.I18n.t('mailpoetGuideTemplateTitle'),
|
||||||
@ -110,14 +112,14 @@ define(
|
|||||||
MailPoet.I18n.t('mailpoetGuideTemplateDescription'),
|
MailPoet.I18n.t('mailpoetGuideTemplateDescription'),
|
||||||
readonly: "1"
|
readonly: "1"
|
||||||
}
|
}
|
||||||
]
|
];
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
templates: response,
|
templates: response.data,
|
||||||
loading: false
|
loading: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}.bind(this));
|
});
|
||||||
},
|
},
|
||||||
handleSelectTemplate: function(template) {
|
handleSelectTemplate: function(template) {
|
||||||
var body = template.body;
|
var body = template.body;
|
||||||
@ -158,10 +160,12 @@ define(
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletterTemplates',
|
endpoint: 'newsletterTemplates',
|
||||||
action: 'delete',
|
action: 'delete',
|
||||||
data: template.id
|
data: {
|
||||||
}).done(function(response) {
|
id: template.id
|
||||||
|
}
|
||||||
|
}).done((response) => {
|
||||||
this.getTemplates();
|
this.getTemplates();
|
||||||
}.bind(this));
|
});
|
||||||
} else {
|
} else {
|
||||||
this.setState({ loading: false });
|
this.setState({ loading: false });
|
||||||
}
|
}
|
||||||
@ -170,7 +174,7 @@ define(
|
|||||||
MailPoet.Modal.popup({
|
MailPoet.Modal.popup({
|
||||||
title: template.name,
|
title: template.name,
|
||||||
template: '<div class="mailpoet_boxes_preview" style="background-color: {{ body.globalStyles.body.backgroundColor }}"><img src="{{ thumbnail }}" /></div>',
|
template: '<div class="mailpoet_boxes_preview" style="background-color: {{ body.globalStyles.body.backgroundColor }}"><img src="{{ thumbnail }}" /></div>',
|
||||||
data: template,
|
data: template
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleTemplateImport: function() {
|
handleTemplateImport: function() {
|
||||||
|
@ -1,41 +1,60 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\API\Endpoints;
|
namespace MailPoet\API\Endpoints;
|
||||||
|
use \MailPoet\API\Endpoint as APIEndpoint;
|
||||||
|
use \MailPoet\API\Error as APIError;
|
||||||
|
|
||||||
use MailPoet\Models\NewsletterTemplate;
|
use MailPoet\Models\NewsletterTemplate;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
class NewsletterTemplates {
|
class NewsletterTemplates extends APIEndpoint {
|
||||||
function __construct() {
|
|
||||||
}
|
|
||||||
|
|
||||||
function get($id = false) {
|
function get($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : null);
|
||||||
$template = NewsletterTemplate::findOne($id);
|
$template = NewsletterTemplate::findOne($id);
|
||||||
if($template === false) {
|
if($template === false) {
|
||||||
return false;
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This template does not exist.')
|
||||||
|
));
|
||||||
} else {
|
} else {
|
||||||
return $template->asArray();
|
return $this->successResponse(
|
||||||
|
$template->asArray()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAll() {
|
function getAll() {
|
||||||
$collection = NewsletterTemplate::findMany();
|
$collection = NewsletterTemplate::findMany();
|
||||||
return array_map(function($item) {
|
$templates = array_map(function($item) {
|
||||||
return $item->asArray();
|
return $item->asArray();
|
||||||
}, $collection);
|
}, $collection);
|
||||||
|
|
||||||
|
return $this->successResponse($templates);
|
||||||
}
|
}
|
||||||
|
|
||||||
function save($data = array()) {
|
function save($data = array()) {
|
||||||
$template = NewsletterTemplate::createOrUpdate($data);
|
$template = NewsletterTemplate::createOrUpdate($data);
|
||||||
return ($template->getErrors() === false && $template->id() > 0);
|
$errors = $template->getErrors();
|
||||||
|
|
||||||
|
if(!empty($errors)) {
|
||||||
|
return $this->errorResponse($errors);
|
||||||
|
} else {
|
||||||
|
return $this->successResponse(
|
||||||
|
NewsletterTemplate::findOne($template->id)->asArray()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete($id) {
|
function delete($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : null);
|
||||||
$template = NewsletterTemplate::findOne($id);
|
$template = NewsletterTemplate::findOne($id);
|
||||||
if($template !== false) {
|
if($template === false) {
|
||||||
return $template->delete();
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This template does not exist.')
|
||||||
|
));
|
||||||
} else {
|
} else {
|
||||||
return false;
|
$template->delete();
|
||||||
|
$this->successResponse(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user