forms & newsletters endpoints
This commit is contained in:
@ -99,14 +99,21 @@ const item_actions = [
|
|||||||
return MailPoet.Ajax.post({
|
return MailPoet.Ajax.post({
|
||||||
endpoint: 'forms',
|
endpoint: 'forms',
|
||||||
action: 'duplicate',
|
action: 'duplicate',
|
||||||
data: item.id
|
data: {
|
||||||
}).done(function(response) {
|
id: item.id
|
||||||
if (response !== false && response['name'] !== undefined) {
|
}
|
||||||
MailPoet.Notice.success(
|
}).done((response) => {
|
||||||
(MailPoet.I18n.t('formDuplicated')).replace('%$1s', response.name)
|
MailPoet.Notice.success(
|
||||||
|
(MailPoet.I18n.t('formDuplicated')).replace('%$1s', response.data.name)
|
||||||
|
);
|
||||||
|
refresh();
|
||||||
|
}).fail((response) => {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
refresh();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -120,9 +127,14 @@ const FormList = React.createClass({
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'forms',
|
endpoint: 'forms',
|
||||||
action: 'create'
|
action: 'create'
|
||||||
}).done(function(response) {
|
}).done((response) => {
|
||||||
if(response.result && response.form_id) {
|
window.location = mailpoet_form_edit_url + response.data.id;
|
||||||
window.location = mailpoet_form_edit_url + response.form_id;
|
}).fail((response) => {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -11,7 +11,7 @@ define([
|
|||||||
return MailPoet.Ajax.post({
|
return MailPoet.Ajax.post({
|
||||||
endpoint: 'automatedLatestContent',
|
endpoint: 'automatedLatestContent',
|
||||||
action: args.action,
|
action: args.action,
|
||||||
data: args.options || {},
|
data: args.options || {}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
Module._cachedQuery = _.memoize(Module._query, JSON.stringify);
|
Module._cachedQuery = _.memoize(Module._query, JSON.stringify);
|
||||||
@ -19,14 +19,14 @@ define([
|
|||||||
Module.getNewsletter = function(options) {
|
Module.getNewsletter = function(options) {
|
||||||
return Module._query({
|
return Module._query({
|
||||||
action: 'get',
|
action: 'get',
|
||||||
options: options,
|
options: options
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Module.getPostTypes = function() {
|
Module.getPostTypes = function() {
|
||||||
return Module._cachedQuery({
|
return Module._cachedQuery({
|
||||||
action: 'getPostTypes',
|
action: 'getPostTypes',
|
||||||
options: {},
|
options: {}
|
||||||
}).then(function(response) {
|
}).then(function(response) {
|
||||||
return _.values(response.data);
|
return _.values(response.data);
|
||||||
});
|
});
|
||||||
@ -83,7 +83,7 @@ define([
|
|||||||
return MailPoet.Ajax.post({
|
return MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'save',
|
action: 'save',
|
||||||
data: options || {},
|
data: options || {}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ define([
|
|||||||
return MailPoet.Ajax.post({
|
return MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'sendPreview',
|
action: 'sendPreview',
|
||||||
data: options || {},
|
data: options || {}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -252,32 +252,31 @@ define([
|
|||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'showPreview',
|
action: 'showPreview',
|
||||||
data: json,
|
data: json,
|
||||||
}).done(function(response) {
|
|
||||||
if (response.result === true) {
|
|
||||||
this.previewView = new Module.NewsletterPreviewView({
|
|
||||||
previewUrl: response.data.url
|
|
||||||
});
|
|
||||||
|
|
||||||
var view = this.previewView.render();
|
|
||||||
|
|
||||||
MailPoet.Modal.popup({
|
|
||||||
template: '',
|
|
||||||
element: this.previewView.$el,
|
|
||||||
title: MailPoet.I18n.t('newsletterPreview'),
|
|
||||||
onCancel: function() {
|
|
||||||
this.previewView.destroy();
|
|
||||||
this.previewView = null;
|
|
||||||
}.bind(this)
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
MailPoet.Notice.error(response.errors);
|
|
||||||
}
|
|
||||||
}.bind(this)).fail(function(error) {
|
|
||||||
MailPoet.Notice.error(
|
|
||||||
MailPoet.I18n.t('newsletterPreviewFailed')
|
|
||||||
);
|
|
||||||
}).always(function() {
|
}).always(function() {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
|
}).done(function(response) {
|
||||||
|
this.previewView = new Module.NewsletterPreviewView({
|
||||||
|
previewUrl: response.meta.preview_url
|
||||||
|
});
|
||||||
|
|
||||||
|
var view = this.previewView.render();
|
||||||
|
|
||||||
|
MailPoet.Modal.popup({
|
||||||
|
template: '',
|
||||||
|
element: this.previewView.$el,
|
||||||
|
title: MailPoet.I18n.t('newsletterPreview'),
|
||||||
|
onCancel: function() {
|
||||||
|
this.previewView.destroy();
|
||||||
|
this.previewView = null;
|
||||||
|
}.bind(this)
|
||||||
|
});
|
||||||
|
}.bind(this)).fail(function(response) {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
sendPreview: function() {
|
sendPreview: function() {
|
||||||
@ -302,28 +301,19 @@ define([
|
|||||||
// send test email
|
// send test email
|
||||||
MailPoet.Modal.loading(true);
|
MailPoet.Modal.loading(true);
|
||||||
|
|
||||||
CommunicationComponent.previewNewsletter(data).done(function(response) {
|
CommunicationComponent.previewNewsletter(data).always(function() {
|
||||||
if(response.result !== undefined && response.result === true) {
|
|
||||||
MailPoet.Notice.success(MailPoet.I18n.t('newsletterPreviewSent'), { scroll: true });
|
|
||||||
} else {
|
|
||||||
if (_.isArray(response.errors)) {
|
|
||||||
response.errors.map(function(error) {
|
|
||||||
MailPoet.Notice.error(error, { scroll: true });
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
MailPoet.Notice.error(
|
|
||||||
MailPoet.I18n.t('newsletterPreviewFailedToSend'),
|
|
||||||
{
|
|
||||||
scroll: true,
|
|
||||||
static: true,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
|
}).done(function(response) {
|
||||||
|
MailPoet.Notice.success(
|
||||||
|
MailPoet.I18n.t('newsletterPreviewSent'),
|
||||||
|
{ scroll: true });
|
||||||
}).fail(function(response) {
|
}).fail(function(response) {
|
||||||
// an error occurred
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true, static: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -66,22 +66,22 @@ define(
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'get',
|
action: 'get',
|
||||||
data: id
|
data: {
|
||||||
}).done((response) => {
|
id: id
|
||||||
if(response === false) {
|
|
||||||
this.setState({
|
|
||||||
loading: false,
|
|
||||||
item: {},
|
|
||||||
}, function() {
|
|
||||||
this.context.router.push('/new');
|
|
||||||
}.bind(this));
|
|
||||||
} else {
|
|
||||||
this.setState({
|
|
||||||
loading: false,
|
|
||||||
item: response,
|
|
||||||
fields: this.getFieldsByNewsletter(response),
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
}).done((response) => {
|
||||||
|
this.setState({
|
||||||
|
loading: false,
|
||||||
|
item: response.data,
|
||||||
|
fields: this.getFieldsByNewsletter(response.data)
|
||||||
|
});
|
||||||
|
}).fail((response) => {
|
||||||
|
this.setState({
|
||||||
|
loading: false,
|
||||||
|
item: {}
|
||||||
|
}, () => {
|
||||||
|
this.context.router.push('/new');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleSend: function(e) {
|
handleSend: function(e) {
|
||||||
|
@ -28,17 +28,16 @@ define(
|
|||||||
type: type,
|
type: type,
|
||||||
subject: MailPoet.I18n.t('draftNewsletterTitle'),
|
subject: MailPoet.I18n.t('draftNewsletterTitle'),
|
||||||
}
|
}
|
||||||
}).done(function(response) {
|
}).done((response) => {
|
||||||
if(response.result && response.newsletter.id) {
|
this.context.router.push(`/template/${response.data.id}`);
|
||||||
this.context.router.push(`/template/${response.newsletter.id}`);
|
}).fail((response) => {
|
||||||
} else {
|
if (response.errors.length > 0) {
|
||||||
if(response.errors.length > 0) {
|
MailPoet.Notice.error(
|
||||||
response.errors.map(function(error) {
|
response.errors.map(function(error) { return error.message; }),
|
||||||
MailPoet.Notice.error(error);
|
{ scroll: true }
|
||||||
});
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}.bind(this));
|
});
|
||||||
},
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
|
@ -50,17 +50,16 @@ define(
|
|||||||
type: 'notification',
|
type: 'notification',
|
||||||
subject: MailPoet.I18n.t('draftNewsletterTitle'),
|
subject: MailPoet.I18n.t('draftNewsletterTitle'),
|
||||||
}),
|
}),
|
||||||
}).done(function(response) {
|
}).done((response) => {
|
||||||
if(response.result && response.newsletter.id) {
|
this.showTemplateSelection(response.data.id);
|
||||||
this.showTemplateSelection(response.newsletter.id);
|
}).fail((response) => {
|
||||||
} else {
|
if (response.errors.length > 0) {
|
||||||
if(response.errors.length > 0) {
|
MailPoet.Notice.error(
|
||||||
response.errors.map(function(error) {
|
response.errors.map(function(error) { return error.message; }),
|
||||||
MailPoet.Notice.error(error);
|
{ scroll: true }
|
||||||
});
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}.bind(this));
|
});
|
||||||
},
|
},
|
||||||
showTemplateSelection: function(newsletterId) {
|
showTemplateSelection: function(newsletterId) {
|
||||||
this.context.router.push(`/template/${newsletterId}`);
|
this.context.router.push(`/template/${newsletterId}`);
|
||||||
|
@ -25,19 +25,18 @@ define(
|
|||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'create',
|
action: 'create',
|
||||||
data: {
|
data: {
|
||||||
type: 'standard',
|
type: 'standard'
|
||||||
}
|
}
|
||||||
}).done(function(response) {
|
}).done((response) => {
|
||||||
if(response.result && response.newsletter.id) {
|
this.showTemplateSelection(response.data.id);
|
||||||
this.showTemplateSelection(response.newsletter.id);
|
}).fail((response) => {
|
||||||
} else {
|
if (response.errors.length > 0) {
|
||||||
if(response.errors.length > 0) {
|
MailPoet.Notice.error(
|
||||||
response.errors.map(function(error) {
|
response.errors.map(function(error) { return error.message; }),
|
||||||
MailPoet.Notice.error(error);
|
{ scroll: true }
|
||||||
});
|
);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}.bind(this));
|
});
|
||||||
},
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<?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\Form;
|
use \MailPoet\Models\Form;
|
||||||
use \MailPoet\Models\StatisticsForms;
|
use \MailPoet\Models\StatisticsForms;
|
||||||
@ -9,16 +11,17 @@ use \MailPoet\Form\Util;
|
|||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
class Forms {
|
class Forms extends APIEndpoint {
|
||||||
function __construct() {
|
function get($data = array()) {
|
||||||
}
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
|
||||||
function get($id = false) {
|
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
if($form !== false) {
|
if($form === false) {
|
||||||
$form = $form->asArray();
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
return $this->successResponse($form->asArray());
|
||||||
}
|
}
|
||||||
return $form;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function listing($data = array()) {
|
function listing($data = array()) {
|
||||||
@ -87,14 +90,10 @@ class Forms {
|
|||||||
$errors = $form->getErrors();
|
$errors = $form->getErrors();
|
||||||
|
|
||||||
if(!empty($errors)) {
|
if(!empty($errors)) {
|
||||||
return array(
|
return $this->badRequest($errors);
|
||||||
'result' => false,
|
|
||||||
'errors' => $errors
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
return array(
|
return $this->successResponse(
|
||||||
'result' => true,
|
Form::findOne($form->id)->asArray()
|
||||||
'form_id' => $form->id()
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,76 +108,74 @@ class Forms {
|
|||||||
// styles
|
// styles
|
||||||
$css = new Util\Styles(FormRenderer::getStyles($data));
|
$css = new Util\Styles(FormRenderer::getStyles($data));
|
||||||
|
|
||||||
return array(
|
return $this->successResponse(array(
|
||||||
'html' => $html,
|
'html' => $html,
|
||||||
'css' => $css->render()
|
'css' => $css->render()
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function exportsEditor($id) {
|
function exportsEditor($data = array()) {
|
||||||
$exports = false;
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
|
if($form === false) {
|
||||||
if($form !== false) {
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
$exports = Util\Export::getAll($form->asArray());
|
$exports = Util\Export::getAll($form->asArray());
|
||||||
|
return $this->successResponse($exports);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $exports;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveEditor($data = array()) {
|
function saveEditor($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
|
||||||
$form_id = (isset($data['id']) ? (int)$data['id'] : 0);
|
$form_id = (isset($data['id']) ? (int)$data['id'] : 0);
|
||||||
$name = (isset($data['name']) ? $data['name'] : __('New form'));
|
$name = (isset($data['name']) ? $data['name'] : __('New form'));
|
||||||
$body = (isset($data['body']) ? $data['body'] : array());
|
$body = (isset($data['body']) ? $data['body'] : array());
|
||||||
$settings = (isset($data['settings']) ? $data['settings'] : array());
|
$settings = (isset($data['settings']) ? $data['settings'] : array());
|
||||||
$styles = (isset($data['styles']) ? $data['styles'] : '');
|
$styles = (isset($data['styles']) ? $data['styles'] : '');
|
||||||
|
|
||||||
if(empty($body) || empty($settings)) {
|
// check if the form is used as a widget
|
||||||
// error
|
$is_widget = false;
|
||||||
return false;
|
$widgets = get_option('widget_mailpoet_form');
|
||||||
} else {
|
if(!empty($widgets)) {
|
||||||
// check if the form is used as a widget
|
foreach($widgets as $widget) {
|
||||||
$is_widget = false;
|
if(isset($widget['form']) && (int)$widget['form'] === $form_id) {
|
||||||
$widgets = get_option('widget_mailpoet_form');
|
$is_widget = true;
|
||||||
if(!empty($widgets)) {
|
|
||||||
foreach($widgets as $widget) {
|
|
||||||
if(isset($widget['form']) && (int)$widget['form'] === $form_id) {
|
|
||||||
$is_widget = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if the user gets to pick his own lists
|
|
||||||
// or if it's selected by the admin
|
|
||||||
$has_segment_selection = false;
|
|
||||||
|
|
||||||
foreach($body as $i => $block) {
|
|
||||||
if($block['type'] === 'segment') {
|
|
||||||
$has_segment_selection = true;
|
|
||||||
if(!empty($block['params']['values'])) {
|
|
||||||
$list_selection = array_filter(
|
|
||||||
array_map(function($segment) {
|
|
||||||
return (isset($segment['id'])
|
|
||||||
? (int)$segment['id']
|
|
||||||
: null
|
|
||||||
);
|
|
||||||
}, $block['params']['values'])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check list selection
|
// check if the user gets to pick his own lists
|
||||||
if($has_segment_selection === true) {
|
// or if it's selected by the admin
|
||||||
$settings['segments_selected_by'] = 'user';
|
$has_segment_selection = false;
|
||||||
} else {
|
|
||||||
$settings['segments_selected_by'] = 'admin';
|
foreach($body as $i => $block) {
|
||||||
|
if($block['type'] === 'segment') {
|
||||||
|
$has_segment_selection = true;
|
||||||
|
if(!empty($block['params']['values'])) {
|
||||||
|
$list_selection = array_filter(
|
||||||
|
array_map(function($segment) {
|
||||||
|
return (isset($segment['id'])
|
||||||
|
? (int)$segment['id']
|
||||||
|
: null
|
||||||
|
);
|
||||||
|
}, $block['params']['values'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check list selection
|
||||||
|
if($has_segment_selection === true) {
|
||||||
|
$settings['segments_selected_by'] = 'user';
|
||||||
|
} else {
|
||||||
|
$settings['segments_selected_by'] = 'admin';
|
||||||
|
}
|
||||||
|
|
||||||
$form = Form::createOrUpdate(array(
|
$form = Form::createOrUpdate(array(
|
||||||
'id' => $form_id,
|
'id' => $form_id,
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
@ -187,64 +184,101 @@ class Forms {
|
|||||||
'styles' => $styles
|
'styles' => $styles
|
||||||
));
|
));
|
||||||
|
|
||||||
if($form->getErrors() === false) {
|
$errors = $form->getErrors();
|
||||||
return array(
|
|
||||||
'result' => true,
|
if(!empty($errors)) {
|
||||||
'is_widget' => $is_widget
|
return $this->badRequest($errors);
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
return array(
|
return $this->successResponse(
|
||||||
'result' => false,
|
Form::findOne($form->id)->asArray(),
|
||||||
'errors' => $form->getErrors()
|
array('is_widget' => $is_widget)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore($id) {
|
function restore($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
if($form !== false) {
|
if($form === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
$form->restore();
|
$form->restore();
|
||||||
|
return $this->successResponse(
|
||||||
|
Form::findOne($form->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return ($form->getErrors() === false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function trash($id) {
|
function trash($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
if($form !== false) {
|
if($form === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
$form->trash();
|
$form->trash();
|
||||||
|
return $this->successResponse(
|
||||||
|
Form::findOne($form->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return ($form->getErrors() === false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function delete($id) {
|
function delete($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
if($form !== false) {
|
if($form === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
$form->delete();
|
$form->delete();
|
||||||
return 1;
|
return $this->successResponse(null, array('count' => 1));
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function duplicate($id) {
|
function duplicate($data = array()) {
|
||||||
$result = false;
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
|
||||||
$form = Form::findOne($id);
|
$form = Form::findOne($id);
|
||||||
if($form !== false) {
|
|
||||||
|
if($form === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This form does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
$data = array(
|
$data = array(
|
||||||
'name' => sprintf(__('Copy of %s'), $form->name)
|
'name' => sprintf(__('Copy of %s'), $form->name)
|
||||||
);
|
);
|
||||||
$result = $form->duplicate($data)->asArray();
|
$duplicate = $form->duplicate($data);
|
||||||
}
|
$errors = $duplicate->getErrors();
|
||||||
|
|
||||||
return $result;
|
if(!empty($errors)) {
|
||||||
|
return $this->errorResponse($errors);
|
||||||
|
} else {
|
||||||
|
return $this->successResponse(
|
||||||
|
Form::findOne($duplicate->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function bulkAction($data = array()) {
|
function bulkAction($data = array()) {
|
||||||
$bulk_action = new Listing\BulkAction(
|
try {
|
||||||
'\MailPoet\Models\Form',
|
$bulk_action = new Listing\BulkAction(
|
||||||
$data
|
'\MailPoet\Models\Form',
|
||||||
);
|
$data
|
||||||
|
);
|
||||||
return $bulk_action->apply();
|
$count = $bulk_action->apply();
|
||||||
|
return $this->successResponse(null, array('count' => $count));
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
$e->getCode() => $e->getMessage()
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,19 +22,20 @@ if(!defined('ABSPATH')) exit;
|
|||||||
require_once(ABSPATH . 'wp-includes/pluggable.php');
|
require_once(ABSPATH . 'wp-includes/pluggable.php');
|
||||||
|
|
||||||
class Newsletters extends APIEndpoint {
|
class Newsletters extends APIEndpoint {
|
||||||
function get($id = false) {
|
function get($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
$newsletter = Newsletter::findOne($id);
|
$newsletter = Newsletter::findOne($id);
|
||||||
if($newsletter === false) {
|
if($newsletter === false) {
|
||||||
return false;
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
|
));
|
||||||
} else {
|
} else {
|
||||||
$segments = $newsletter->segments()->findArray();
|
return $this->successResponse(
|
||||||
$options = $newsletter->options()->findArray();
|
$newsletter
|
||||||
$newsletter = $newsletter->asArray();
|
->withSegments()
|
||||||
$newsletter['segments'] = array_map(function($segment) {
|
->withOptions()
|
||||||
return $segment['id'];
|
->asArray()
|
||||||
}, $segments);
|
);
|
||||||
$newsletter['options'] = Helpers::arrayColumn($options, 'value', 'name');
|
|
||||||
return $newsletter;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,125 +125,161 @@ class Newsletters extends APIEndpoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function restore($id) {
|
function restore($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
$newsletter = Newsletter::findOne($id);
|
$newsletter = Newsletter::findOne($id);
|
||||||
if($newsletter !== false) {
|
if($newsletter === false) {
|
||||||
$newsletter->restore();
|
return $this->errorResponse(array(
|
||||||
}
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
return ($newsletter->getErrors() === false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function trash($id) {
|
|
||||||
$newsletter = Newsletter::findOne($id);
|
|
||||||
if($newsletter !== false) {
|
|
||||||
$newsletter->trash();
|
|
||||||
}
|
|
||||||
return ($newsletter->getErrors() === false);
|
|
||||||
}
|
|
||||||
|
|
||||||
function delete($id) {
|
|
||||||
$newsletter = Newsletter::findOne($id);
|
|
||||||
if($newsletter !== false) {
|
|
||||||
$newsletter->delete();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function duplicate($id = false) {
|
|
||||||
$result = false;
|
|
||||||
|
|
||||||
$newsletter = Newsletter::findOne($id);
|
|
||||||
if($newsletter !== false) {
|
|
||||||
$duplicate = $newsletter->duplicate(array(
|
|
||||||
'subject' => sprintf(__('Copy of %s'), $newsletter->subject)
|
|
||||||
));
|
));
|
||||||
|
} else {
|
||||||
|
$newsletter->restore();
|
||||||
|
return $this->successResponse(
|
||||||
|
Newsletter::findOne($newsletter->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($duplicate !== false && $duplicate->getErrors() === false) {
|
function trash($data = array()) {
|
||||||
$result = $duplicate->asArray();
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
$newsletter = Newsletter::findOne($id);
|
||||||
|
if($newsletter === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$newsletter->trash();
|
||||||
|
return $this->successResponse(
|
||||||
|
Newsletter::findOne($newsletter->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
$newsletter = Newsletter::findOne($id);
|
||||||
|
if($newsletter === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$newsletter->delete();
|
||||||
|
return $this->successResponse(null, array('count' => 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function duplicate($data = array()) {
|
||||||
|
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||||
|
$newsletter = Newsletter::findOne($id);
|
||||||
|
|
||||||
|
if($newsletter === false) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$data = array(
|
||||||
|
'subject' => sprintf(__('Copy of %s'), $newsletter->subject)
|
||||||
|
);
|
||||||
|
$duplicate = $newsletter->duplicate($data);
|
||||||
|
$errors = $duplicate->getErrors();
|
||||||
|
|
||||||
|
if(!empty($errors)) {
|
||||||
|
return $this->errorResponse($errors);
|
||||||
|
} else {
|
||||||
|
return $this->successResponse(
|
||||||
|
Newsletter::findOne($duplicate->id)->asArray(),
|
||||||
|
array('count' => 1)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showPreview($data = array()) {
|
function showPreview($data = array()) {
|
||||||
if(!isset($data['body'])) {
|
if(empty($data['body'])) {
|
||||||
return array(
|
return $this->badRequest(array(
|
||||||
'result' => false,
|
APIError::BAD_REQUEST => __('Newsletter data is missing.')
|
||||||
'errors' => array(__('Newsletter data is missing'))
|
));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
$newsletter_id = (isset($data['id'])) ? (int)$data['id'] : null;
|
|
||||||
$newsletter = Newsletter::findOne($newsletter_id);
|
|
||||||
if(!$newsletter) {
|
|
||||||
return array(
|
|
||||||
'result' => false,
|
|
||||||
'errors' => array(__('Newsletter could not be read'))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
$newsletter->body = $data['body'];
|
|
||||||
$newsletter->save();
|
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
|
||||||
$preview_url = NewsletterUrl::getViewInBrowserUrl(
|
|
||||||
$data, $subscriber, $queue = false, $preview = true
|
|
||||||
);
|
|
||||||
return array(
|
|
||||||
'result' => true,
|
|
||||||
'data' => array('url' => $preview_url)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function sendPreview($data = array()) {
|
|
||||||
$id = (isset($data['id'])) ? (int)$data['id'] : false;
|
$id = (isset($data['id'])) ? (int)$data['id'] : false;
|
||||||
$newsletter = Newsletter::findOne($id);
|
$newsletter = Newsletter::findOne($id);
|
||||||
|
|
||||||
if($newsletter === false) {
|
if($newsletter === false) {
|
||||||
return array(
|
return $this->errorResponse(array(
|
||||||
'result' => false
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
$newsletter->body = $data['body'];
|
||||||
|
$newsletter->save();
|
||||||
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
|
$preview_url = NewsletterUrl::getViewInBrowserUrl(
|
||||||
|
$data, $subscriber, $queue = false, $preview = true
|
||||||
|
);
|
||||||
|
|
||||||
|
return $this->successResponse(
|
||||||
|
Newsletter::findOne($newsletter->id)->asArray(),
|
||||||
|
array('preview_url' => $preview_url)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendPreview($data = array()) {
|
||||||
if(empty($data['subscriber'])) {
|
if(empty($data['subscriber'])) {
|
||||||
return array(
|
return $this->badRequest(array(
|
||||||
'result' => false,
|
APIError::BAD_REQUEST => __('Please specify receiver information.')
|
||||||
'errors' => array(__('Please specify receiver information.'))
|
));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$newsletter = $newsletter->asArray();
|
$id = (isset($data['id'])) ? (int)$data['id'] : false;
|
||||||
|
$newsletter = Newsletter::findOne($id);
|
||||||
|
|
||||||
$renderer = new Renderer($newsletter, $preview = true);
|
if($newsletter === false) {
|
||||||
$rendered_newsletter = $renderer->render();
|
return $this->errorResponse(array(
|
||||||
$divider = '***MailPoet***';
|
APIError::NOT_FOUND => __('This newsletter does not exist.')
|
||||||
$data_for_shortcodes =
|
));
|
||||||
array_merge(array($newsletter['subject']), $rendered_newsletter);
|
} else {
|
||||||
$body = implode($divider, $data_for_shortcodes);
|
$newsletter = $newsletter->asArray();
|
||||||
|
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$renderer = new Renderer($newsletter, $preview = true);
|
||||||
$subscriber = ($subscriber) ? $subscriber->asArray() : false;
|
$rendered_newsletter = $renderer->render();
|
||||||
|
$divider = '***MailPoet***';
|
||||||
|
$data_for_shortcodes = array_merge(
|
||||||
|
array($newsletter['subject']),
|
||||||
|
$rendered_newsletter
|
||||||
|
);
|
||||||
|
|
||||||
$shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes(
|
$body = implode($divider, $data_for_shortcodes);
|
||||||
$newsletter,
|
|
||||||
$subscriber
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
);
|
$subscriber = ($subscriber) ? $subscriber->asArray() : false;
|
||||||
list($newsletter['subject'],
|
|
||||||
$newsletter['body']['html'],
|
$shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes(
|
||||||
$newsletter['body']['text']
|
$newsletter,
|
||||||
|
$subscriber
|
||||||
|
);
|
||||||
|
list(
|
||||||
|
$newsletter['subject'],
|
||||||
|
$newsletter['body']['html'],
|
||||||
|
$newsletter['body']['text']
|
||||||
) = explode($divider, $shortcodes->replace($body));
|
) = explode($divider, $shortcodes->replace($body));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$mailer = new \MailPoet\Mailer\Mailer(
|
$mailer = new \MailPoet\Mailer\Mailer(
|
||||||
$mailer = false,
|
$mailer = false,
|
||||||
$sender = false,
|
$sender = false,
|
||||||
$reply_to = false
|
$reply_to = false
|
||||||
);
|
);
|
||||||
$result = $mailer->send($newsletter, $data['subscriber']);
|
$mailer->send($newsletter, $data['subscriber']);
|
||||||
|
return $this->successResponse(
|
||||||
return array('result' => $result);
|
Newsletter::findOne($id)->asArray()
|
||||||
} catch(\Exception $e) {
|
);
|
||||||
return array(
|
} catch(\Exception $e) {
|
||||||
'result' => false,
|
return $this->errorResponse(array(
|
||||||
'errors' => array($e->getMessage()),
|
$e->getCode() => $e->getMessage()
|
||||||
);
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,11 +335,18 @@ class Newsletters extends APIEndpoint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function bulkAction($data = array()) {
|
function bulkAction($data = array()) {
|
||||||
$bulk_action = new Listing\BulkAction(
|
try {
|
||||||
'\MailPoet\Models\Newsletter',
|
$bulk_action = new Listing\BulkAction(
|
||||||
$data
|
'\MailPoet\Models\Newsletter',
|
||||||
);
|
$data
|
||||||
return $bulk_action->apply();
|
);
|
||||||
|
$count = $bulk_action->apply();
|
||||||
|
return $this->successResponse(null, array('count' => $count));
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
return $this->errorResponse(array(
|
||||||
|
$e->getCode() => $e->getMessage()
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function create($data = array()) {
|
function create($data = array()) {
|
||||||
@ -313,23 +357,25 @@ class Newsletters extends APIEndpoint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$newsletter = Newsletter::createOrUpdate($data);
|
$newsletter = Newsletter::createOrUpdate($data);
|
||||||
|
$errors = $newsletter->getErrors();
|
||||||
|
|
||||||
// try to load template data
|
if(!empty($errors)) {
|
||||||
$template_id = (!empty($data['template']) ? (int)$data['template'] : false);
|
return $this->badRequest($errors);
|
||||||
$template = NewsletterTemplate::findOne($template_id);
|
|
||||||
if($template !== false) {
|
|
||||||
$newsletter->body = $template->body;
|
|
||||||
} else {
|
} else {
|
||||||
$newsletter->body = array();
|
// try to load template data
|
||||||
|
$template_id = (isset($data['template']) ? (int)$data['template'] : false);
|
||||||
|
$template = NewsletterTemplate::findOne($template_id);
|
||||||
|
if($template === false) {
|
||||||
|
$newsletter->body = array();
|
||||||
|
} else {
|
||||||
|
$newsletter->body = $template->body;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$newsletter->save();
|
$newsletter->save();
|
||||||
$errors = $newsletter->getErrors();
|
$errors = $newsletter->getErrors();
|
||||||
if(!empty($errors)) {
|
if(!empty($errors)) {
|
||||||
return array(
|
return $this->badRequest($errors);
|
||||||
'result' => false,
|
|
||||||
'errors' =>$errors
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
if(!empty($options)) {
|
if(!empty($options)) {
|
||||||
$option_fields = NewsletterOptionField::where(
|
$option_fields = NewsletterOptionField::where(
|
||||||
@ -346,15 +392,19 @@ class Newsletters extends APIEndpoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!isset($data['id']) &&
|
|
||||||
isset($data['type']) &&
|
if(
|
||||||
$data['type'] === 'notification'
|
empty($data['id'])
|
||||||
|
&&
|
||||||
|
isset($data['type'])
|
||||||
|
&&
|
||||||
|
$data['type'] === Newsletter::TYPE_NOTIFICATION
|
||||||
) {
|
) {
|
||||||
Scheduler::processPostNotificationSchedule($newsletter->id);
|
Scheduler::processPostNotificationSchedule($newsletter->id);
|
||||||
}
|
}
|
||||||
return array(
|
|
||||||
'result' => true,
|
return $this->successResponse(
|
||||||
'newsletter' => $newsletter->asArray()
|
Newsletter::findOne($newsletter->id)->asArray()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,34 @@
|
|||||||
<?php
|
<?php
|
||||||
use \MailPoet\API\Endpoints\Forms;
|
use \MailPoet\API\Endpoints\Forms;
|
||||||
|
use \MailPoet\API\Response as APIResponse;
|
||||||
use \MailPoet\Models\Form;
|
use \MailPoet\Models\Form;
|
||||||
use \MailPoet\Models\Segment;
|
use \MailPoet\Models\Segment;
|
||||||
|
|
||||||
class FormsTest extends MailPoetTest {
|
class FormsTest extends MailPoetTest {
|
||||||
function _before() {
|
function _before() {
|
||||||
Form::createOrUpdate(array('name' => 'Form 1'));
|
$this->form_1 = Form::createOrUpdate(array('name' => 'Form 1'));
|
||||||
Form::createOrUpdate(array('name' => 'Form 2'));
|
$this->form_2 = Form::createOrUpdate(array('name' => 'Form 2'));
|
||||||
Form::createOrUpdate(array('name' => 'Form 3'));
|
$this->form_3 = Form::createOrUpdate(array('name' => 'Form 3'));
|
||||||
Segment::createOrUpdate(array('name' => 'Segment 1'));
|
Segment::createOrUpdate(array('name' => 'Segment 1'));
|
||||||
Segment::createOrUpdate(array('name' => 'Segment 2'));
|
Segment::createOrUpdate(array('name' => 'Segment 2'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanGetAForm() {
|
function testItCanGetAForm() {
|
||||||
$form = Form::where('name', 'Form 1')->findOne();
|
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
|
|
||||||
$response = $router->get(/* missing id */);
|
$response = $router->get(/* missing id */);
|
||||||
expect($response)->false();
|
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
|
||||||
|
expect($response->errors[0]['message'])->equals('This form does not exist.');
|
||||||
|
|
||||||
$response = $router->get('not_an_id');
|
$response = $router->get(array('id' => 'not_an_id'));
|
||||||
expect($response)->false();
|
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
|
||||||
|
expect($response->errors[0]['message'])->equals('This form does not exist.');
|
||||||
|
|
||||||
$response = $router->get($form->id);
|
$response = $router->get(array('id' => $this->form_1->id));
|
||||||
expect($response['id'])->equals($form->id);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['name'])->equals($form->name);
|
expect($response->data)->equals(
|
||||||
|
Form::findOne($this->form_1->id)->asArray()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanGetListingData() {
|
function testItCanGetListingData() {
|
||||||
@ -43,12 +46,11 @@ class FormsTest extends MailPoetTest {
|
|||||||
function testItCanCreateANewForm() {
|
function testItCanCreateANewForm() {
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->create();
|
$response = $router->create();
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['form_id'] > 0)->true();
|
expect($response->data)->equals(
|
||||||
expect($response)->hasntKey('errors');
|
Form::findOne($response->data['id'])->asArray()
|
||||||
|
);
|
||||||
$created_form = Form::findOne($response['form_id']);
|
expect($response->data['name'])->equals('New form');
|
||||||
expect($created_form->name)->equals('New form');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanSaveAForm() {
|
function testItCanSaveAForm() {
|
||||||
@ -58,133 +60,127 @@ class FormsTest extends MailPoetTest {
|
|||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->save(/* missing data */);
|
$response = $router->save(/* missing data */);
|
||||||
expect($response['result'])->false();
|
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
||||||
expect($response['errors'][0])->equals('Please specify a name');
|
expect($response->errors[0]['message'])->equals('Please specify a name');
|
||||||
|
|
||||||
$response = $router->save($form_data);
|
$response = $router->save($form_data);
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['form_id'] > 0)->true();
|
expect($response->data)->equals(
|
||||||
|
Form::where('name', 'My first form')->findOne()->asArray()
|
||||||
$form = Form::where('name', 'My first form')->findOne();
|
);
|
||||||
expect($form->id)->equals($response['form_id']);
|
|
||||||
expect($form->name)->equals('My first form');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanPreviewAForm() {
|
function testItCanPreviewAForm() {
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
|
|
||||||
$response = $router->create();
|
$response = $router->create();
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['form_id'] > 0)->true();
|
expect($response->data)->equals(
|
||||||
|
Form::where('name', 'New form')->findOne()->asArray()
|
||||||
|
);
|
||||||
|
|
||||||
$form = Form::findOne($response['form_id']);
|
$response = $router->previewEditor($response->data);
|
||||||
$response = $router->previewEditor($form->asArray());
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['html'])->notEmpty();
|
expect($response->data['html'])->notEmpty();
|
||||||
expect($response['css'])->notEmpty();
|
expect($response->data['css'])->notEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanExportAForm() {
|
function testItCanExportAForm() {
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
|
|
||||||
$response = $router->create();
|
$response = $router->create();
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['form_id'] > 0)->true();
|
|
||||||
|
|
||||||
$response = $router->exportsEditor($response['form_id']);
|
$response = $router->exportsEditor($response->data);
|
||||||
expect($response['html'])->notEmpty();
|
expect($response->data['html'])->notEmpty();
|
||||||
expect($response['php'])->notEmpty();
|
expect($response->data['php'])->notEmpty();
|
||||||
expect($response['iframe'])->notEmpty();
|
expect($response->data['iframe'])->notEmpty();
|
||||||
expect($response['shortcode'])->notEmpty();
|
expect($response->data['shortcode'])->notEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanSaveFormEditor() {
|
function testItCanSaveFormEditor() {
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
|
|
||||||
$response = $router->create();
|
$response = $router->create();
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['form_id'] > 0)->true();
|
|
||||||
|
|
||||||
$form = Form::findOne($response['form_id'])->asArray();
|
$form = Form::findOne($response->data['id'])->asArray();
|
||||||
$form['name'] = 'Updated form';
|
$form['name'] = 'Updated form';
|
||||||
|
|
||||||
$response = $router->saveEditor($form);
|
$response = $router->saveEditor($form);
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['is_widget'])->false();
|
expect($response->meta['is_widget'])->false();
|
||||||
|
expect($response->data['name'])->equals('Updated form');
|
||||||
$saved_form = Form::findOne($form['id']);
|
|
||||||
expect($saved_form->name)->equals('Updated form');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanRestoreAForm() {
|
function testItCanRestoreAForm() {
|
||||||
$form = Form::where('name', 'Form 1')->findOne();
|
$this->form_1->trash();
|
||||||
$form->trash();
|
|
||||||
|
|
||||||
$trashed_form = Form::findOne($form->id);
|
$trashed_form = Form::findOne($this->form_1->id);
|
||||||
expect($trashed_form->deleted_at)->notNull();
|
expect($trashed_form->deleted_at)->notNull();
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->restore($form->id);
|
$response = $router->restore(array('id' => $this->form_1->id));
|
||||||
expect($response)->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
$restored_form = Form::findOne($form->id);
|
Form::findOne($this->form_1->id)->asArray()
|
||||||
expect($restored_form->deleted_at)->null();
|
);
|
||||||
|
expect($response->data['deleted_at'])->null();
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanTrashAForm() {
|
function testItCanTrashAForm() {
|
||||||
$form = Form::where('name', 'Form 1')->findOne();
|
|
||||||
expect($form->deleted_at)->null();
|
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->trash($form->id);
|
$response = $router->trash(array('id' => $this->form_2->id));
|
||||||
expect($response)->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
$trashed_form = Form::findOne($form->id);
|
Form::findOne($this->form_2->id)->asArray()
|
||||||
expect($trashed_form->deleted_at)->notNull();
|
);
|
||||||
|
expect($response->data['deleted_at'])->notNull();
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanDeleteAForm() {
|
function testItCanDeleteAForm() {
|
||||||
$form = Form::where('name', 'Form 2')->findOne();
|
|
||||||
expect($form->deleted_at)->null();
|
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->delete($form->id);
|
$response = $router->delete(array('id' => $this->form_3->id));
|
||||||
expect($response)->equals(1);
|
expect($response->data)->isEmpty();
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
$deleted_form = Form::findOne($form->id);
|
expect($response->meta['count'])->equals(1);
|
||||||
expect($deleted_form)->false();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanDuplicateAForm() {
|
function testItCanDuplicateAForm() {
|
||||||
$form = Form::where('name', 'Form 3')->findOne();
|
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->duplicate($form->id);
|
$response = $router->duplicate(array('id' => $this->form_1->id));
|
||||||
expect($response['name'])->equals('Copy of '.$form->name);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
$duplicated_form = Form::findOne($response['id']);
|
Form::where('name', 'Copy of Form 1')->findOne()->asArray()
|
||||||
expect($duplicated_form->name)->equals('Copy of '.$form->name);
|
);
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanBulkDeleteForms() {
|
function testItCanBulkDeleteForms() {
|
||||||
expect(Form::count())->equals(3);
|
$router = new Forms();
|
||||||
|
$response = $router->bulkAction(array(
|
||||||
$forms = Form::findMany();
|
'action' => 'trash',
|
||||||
foreach($forms as $form) {
|
'listing' => array('group' => 'all')
|
||||||
$form->trash();
|
));
|
||||||
}
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(3);
|
||||||
|
|
||||||
$router = new Forms();
|
$router = new Forms();
|
||||||
$response = $router->bulkAction(array(
|
$response = $router->bulkAction(array(
|
||||||
'action' => 'delete',
|
'action' => 'delete',
|
||||||
'listing' => array('group' => 'trash')
|
'listing' => array('group' => 'trash')
|
||||||
));
|
));
|
||||||
expect($response)->equals(3);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(3);
|
||||||
|
|
||||||
$response = $router->bulkAction(array(
|
$response = $router->bulkAction(array(
|
||||||
'action' => 'delete',
|
'action' => 'delete',
|
||||||
'listing' => array('group' => 'trash')
|
'listing' => array('group' => 'trash')
|
||||||
));
|
));
|
||||||
expect($response)->equals(0);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
|
@ -23,14 +23,24 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
function testItCanGetANewsletter() {
|
function testItCanGetANewsletter() {
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
|
|
||||||
$response = $router->get($this->newsletter->id());
|
$response = $router->get(/* missing id */);
|
||||||
expect($response['id'])->equals($this->newsletter->id());
|
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
|
||||||
|
expect($response->errors[0]['message'])
|
||||||
|
->equals('This newsletter does not exist.');
|
||||||
|
|
||||||
$response = $router->get('not_an_id');
|
$response = $router->get(array('id' => 'not_an_id'));
|
||||||
expect($response)->false();
|
expect($response->status)->equals(APIResponse::STATUS_NOT_FOUND);
|
||||||
|
expect($response->errors[0]['message'])
|
||||||
|
->equals('This newsletter does not exist.');
|
||||||
|
|
||||||
$response = $router->get(/* missing argument */);
|
$response = $router->get(array('id' => $this->newsletter->id));
|
||||||
expect($response)->false();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
|
Newsletter::findOne($this->newsletter->id)
|
||||||
|
->withSegments()
|
||||||
|
->withOptions()
|
||||||
|
->asArray()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanSaveANewNewsletter() {
|
function testItCanSaveANewNewsletter() {
|
||||||
@ -110,43 +120,57 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
function testItCanRestoreANewsletter() {
|
function testItCanRestoreANewsletter() {
|
||||||
$this->newsletter->trash();
|
$this->newsletter->trash();
|
||||||
|
|
||||||
expect($this->newsletter->deleted_at)->notNull();
|
$trashed_newsletter = Newsletter::findOne($this->newsletter->id);
|
||||||
|
expect($trashed_newsletter->deleted_at)->notNull();
|
||||||
|
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$router->restore($this->newsletter->id());
|
$response = $router->restore(array('id' => $this->newsletter->id));
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
$restored_subscriber = Newsletter::findOne($this->newsletter->id());
|
expect($response->data)->equals(
|
||||||
expect($restored_subscriber->deleted_at)->null();
|
Newsletter::findOne($this->newsletter->id)->asArray()
|
||||||
|
);
|
||||||
|
expect($response->data['deleted_at'])->null();
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanTrashANewsletter() {
|
function testItCanTrashANewsletter() {
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->trash($this->newsletter->id());
|
$response = $router->trash(array('id' => $this->newsletter->id));
|
||||||
expect($response)->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
$trashed_subscriber = Newsletter::findOne($this->newsletter->id());
|
Newsletter::findOne($this->newsletter->id)->asArray()
|
||||||
expect($trashed_subscriber->deleted_at)->notNull();
|
);
|
||||||
|
expect($response->data['deleted_at'])->notNull();
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanDeleteANewsletter() {
|
function testItCanDeleteANewsletter() {
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->delete($this->newsletter->id());
|
$response = $router->delete(array('id' => $this->newsletter->id));
|
||||||
expect($response)->equals(1);
|
expect($response->data)->isEmpty();
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect(Newsletter::findOne($this->newsletter->id()))->false();
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanDuplicateANewsletter() {
|
function testItCanDuplicateANewsletter() {
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->duplicate($this->newsletter->id());
|
$response = $router->duplicate(array('id' => $this->newsletter->id));
|
||||||
expect($response['subject'])->equals('Copy of My Standard Newsletter');
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['type'])->equals(Newsletter::TYPE_STANDARD);
|
expect($response->data)->equals(
|
||||||
expect($response['body'])->equals($this->newsletter->body);
|
Newsletter::where('subject', 'Copy of My Standard Newsletter')
|
||||||
|
->findOne()
|
||||||
|
->asArray()
|
||||||
|
);
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
|
|
||||||
$response = $router->duplicate($this->post_notification->id());
|
$response = $router->duplicate(array('id' => $this->post_notification->id));
|
||||||
expect($response['subject'])->equals('Copy of My Post Notification');
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['type'])->equals(Newsletter::TYPE_NOTIFICATION);
|
expect($response->data)->equals(
|
||||||
expect($response['body'])->equals($this->post_notification->body);
|
Newsletter::where('subject', 'Copy of My Post Notification')
|
||||||
|
->findOne()
|
||||||
|
->asArray()
|
||||||
|
);
|
||||||
|
expect($response->meta['count'])->equals(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanCreateANewsletter() {
|
function testItCanCreateANewsletter() {
|
||||||
@ -156,16 +180,16 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
);
|
);
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->create($data);
|
$response = $router->create($data);
|
||||||
expect($response['result'])->true();
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
expect($response['newsletter']['id'] > 0)->true();
|
expect($response->data)->equals(
|
||||||
expect($response['newsletter']['subject'])->equals('My New Newsletter');
|
Newsletter::where('subject', 'My New Newsletter')
|
||||||
expect($response['newsletter']['type'])->equals(Newsletter::TYPE_STANDARD);
|
->findOne()
|
||||||
expect($response['newsletter']['body'])->equals(array());
|
->asArray()
|
||||||
expect($response)->hasntKey('errors');
|
);
|
||||||
|
|
||||||
$response = $router->create();
|
$response = $router->create();
|
||||||
expect($response['result'])->false();
|
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
||||||
expect($response['errors'][0])->equals('Please specify a type');
|
expect($response->errors[0]['message'])->equals('Please specify a type');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanGetListingData() {
|
function testItCanGetListingData() {
|
||||||
@ -174,22 +198,22 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
|
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->newsletter->id(),
|
'newsletter_id' => $this->newsletter->id,
|
||||||
'segment_id' => $segment_1->id()
|
'segment_id' => $segment_1->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->newsletter->id(),
|
'newsletter_id' => $this->newsletter->id,
|
||||||
'segment_id' => $segment_2->id()
|
'segment_id' => $segment_2->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->post_notification->id(),
|
'newsletter_id' => $this->post_notification->id,
|
||||||
'segment_id' => $segment_2->id()
|
'segment_id' => $segment_2->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
@ -226,23 +250,23 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
// link standard newsletter to the 2 segments
|
// link standard newsletter to the 2 segments
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->newsletter->id(),
|
'newsletter_id' => $this->newsletter->id,
|
||||||
'segment_id' => $segment_1->id()
|
'segment_id' => $segment_1->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->newsletter->id(),
|
'newsletter_id' => $this->newsletter->id,
|
||||||
'segment_id' => $segment_2->id()
|
'segment_id' => $segment_2->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
// link post notification to the 2nd segment
|
// link post notification to the 2nd segment
|
||||||
$newsletter_segment = NewsletterSegment::create();
|
$newsletter_segment = NewsletterSegment::create();
|
||||||
$newsletter_segment->hydrate(array(
|
$newsletter_segment->hydrate(array(
|
||||||
'newsletter_id' => $this->post_notification->id(),
|
'newsletter_id' => $this->post_notification->id,
|
||||||
'segment_id' => $segment_2->id()
|
'segment_id' => $segment_2->id
|
||||||
));
|
));
|
||||||
$newsletter_segment->save();
|
$newsletter_segment->save();
|
||||||
|
|
||||||
@ -301,14 +325,9 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItCanBulkDeleteSelectionOfNewsletters() {
|
function testItCanBulkDeleteSelectionOfNewsletters() {
|
||||||
$newsletter = Newsletter::createOrUpdate(array(
|
|
||||||
'subject' => 'To be deleted',
|
|
||||||
'type' => Newsletter::TYPE_STANDARD
|
|
||||||
));
|
|
||||||
|
|
||||||
$selection_ids = array(
|
$selection_ids = array(
|
||||||
$newsletter->id,
|
$this->newsletter->id,
|
||||||
$this->newsletter->id
|
$this->post_notification->id
|
||||||
);
|
);
|
||||||
|
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
@ -319,29 +338,33 @@ class NewslettersTest extends MailPoetTest {
|
|||||||
'action' => 'delete'
|
'action' => 'delete'
|
||||||
));
|
));
|
||||||
|
|
||||||
expect($response)->equals(count($selection_ids));
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(count($selection_ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCanBulkDeleteNewsletters() {
|
function testItCanBulkDeleteNewsletters() {
|
||||||
expect(Newsletter::count())->equals(2);
|
$router = new Newsletters();
|
||||||
|
$response = $router->bulkAction(array(
|
||||||
$newsletters = Newsletter::findMany();
|
'action' => 'trash',
|
||||||
foreach($newsletters as $newsletter) {
|
'listing' => array('group' => 'all')
|
||||||
$newsletter->trash();
|
));
|
||||||
}
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(2);
|
||||||
|
|
||||||
$router = new Newsletters();
|
$router = new Newsletters();
|
||||||
$response = $router->bulkAction(array(
|
$response = $router->bulkAction(array(
|
||||||
'action' => 'delete',
|
'action' => 'delete',
|
||||||
'listing' => array('group' => 'trash')
|
'listing' => array('group' => 'trash')
|
||||||
));
|
));
|
||||||
expect($response)->equals(2);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(2);
|
||||||
|
|
||||||
$response = $router->bulkAction(array(
|
$response = $router->bulkAction(array(
|
||||||
'action' => 'delete',
|
'action' => 'delete',
|
||||||
'listing' => array('group' => 'trash')
|
'listing' => array('group' => 'trash')
|
||||||
));
|
));
|
||||||
expect($response)->equals(0);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->meta['count'])->equals(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
|
@ -414,6 +414,13 @@
|
|||||||
MailPoet.Notice.success(
|
MailPoet.Notice.success(
|
||||||
"<%= __('The form name was successfully updated!') %>"
|
"<%= __('The form name was successfully updated!') %>"
|
||||||
);
|
);
|
||||||
|
}).fail(function(response) {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -454,9 +461,16 @@
|
|||||||
MailPoet.Modal.popup({
|
MailPoet.Modal.popup({
|
||||||
title: "<%= __('Form preview') %>",
|
title: "<%= __('Form preview') %>",
|
||||||
template: $('#mailpoet_form_preview_template').html(),
|
template: $('#mailpoet_form_preview_template').html(),
|
||||||
data: response
|
data: response.data
|
||||||
});
|
});
|
||||||
})
|
}).fail(function(response) {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function mailpoet_form_save(callback) {
|
function mailpoet_form_save(callback) {
|
||||||
@ -490,7 +504,7 @@
|
|||||||
if(callback !== false) {
|
if(callback !== false) {
|
||||||
var message = null;
|
var message = null;
|
||||||
|
|
||||||
if(response.is_widget === true) {
|
if(response.meta.is_widget === true) {
|
||||||
message = "<%= __('Saved! The changes are now active in your widget.') %>";
|
message = "<%= __('Saved! The changes are now active in your widget.') %>";
|
||||||
} else {
|
} else {
|
||||||
message = "<%= __('Saved! Add this form to %1$sa widget%2$s.') | format("<a href='widgets.php' target='_blank'>", '</a>') | raw %>";
|
message = "<%= __('Saved! Add this form to %1$sa widget%2$s.') | format("<a href='widgets.php' target='_blank'>", '</a>') | raw %>";
|
||||||
@ -500,7 +514,7 @@
|
|||||||
MailPoet.Notice.hide();
|
MailPoet.Notice.hide();
|
||||||
MailPoet.Notice.success(message, {
|
MailPoet.Notice.success(message, {
|
||||||
scroll: true,
|
scroll: true,
|
||||||
static: (response.is_widget === false)
|
static: (response.meta.is_widget === false)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,10 +553,17 @@
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'forms',
|
endpoint: 'forms',
|
||||||
action: 'exportsEditor',
|
action: 'exportsEditor',
|
||||||
data: $('#mailpoet_form_id').val()
|
data: {
|
||||||
|
id: $('#mailpoet_form_id').val()
|
||||||
|
}
|
||||||
}).done(function(response) {
|
}).done(function(response) {
|
||||||
if(response.result !== false) {
|
$('#mailpoet_form_export').html(template({ exports: response.data }));
|
||||||
$('#mailpoet_form_export').html(template({ exports: response }));
|
}).fail(function(response) {
|
||||||
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -324,9 +324,7 @@
|
|||||||
'shortcodesWindowTitle': __('Select a shortcode'),
|
'shortcodesWindowTitle': __('Select a shortcode'),
|
||||||
'unsubscribeLinkMissing': __('All newsletters must include an "Unsubscribe" link. Add a footer widget to your newsletter to continue'),
|
'unsubscribeLinkMissing': __('All newsletters must include an "Unsubscribe" link. Add a footer widget to your newsletter to continue'),
|
||||||
'newsletterPreviewEmailMissing': __('Enter an email address to send the preview newsletter to'),
|
'newsletterPreviewEmailMissing': __('Enter an email address to send the preview newsletter to'),
|
||||||
'newsletterPreviewFailed': __('Preview failed. Please check console log'),
|
|
||||||
'newsletterPreviewSent': __('Your test email has been sent!'),
|
'newsletterPreviewSent': __('Your test email has been sent!'),
|
||||||
'newsletterPreviewFailedToSend': __('Attempt to send a newsletter preview email failed. Please verify that your sending method is configured correctly and try again'),
|
|
||||||
'templateNameMissing': __('Please add a template name'),
|
'templateNameMissing': __('Please add a template name'),
|
||||||
'templateDescriptionMissing': __('Please add a template description'),
|
'templateDescriptionMissing': __('Please add a template description'),
|
||||||
'templateSaved': __('Template has been saved.'),
|
'templateSaved': __('Template has been saved.'),
|
||||||
@ -1197,14 +1195,23 @@
|
|||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'get',
|
action: 'get',
|
||||||
data: <%= params('id') %>
|
data: {
|
||||||
}).done(function(newsletter) {
|
id: <%= params('id') %>
|
||||||
|
}
|
||||||
|
}).always(function() {
|
||||||
|
MailPoet.Modal.loading(false);
|
||||||
|
}).done(function(response) {
|
||||||
EditorApplication.start({
|
EditorApplication.start({
|
||||||
newsletter: newsletter,
|
newsletter: response.data,
|
||||||
config: config,
|
config: config,
|
||||||
});
|
});
|
||||||
|
}).fail(function(response) {
|
||||||
MailPoet.Modal.loading(false);
|
if (response.errors.length > 0) {
|
||||||
|
MailPoet.Notice.error(
|
||||||
|
response.errors.map(function(error) { return error.message; }),
|
||||||
|
{ scroll: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<% endblock %>
|
<% endblock %>
|
||||||
|
Reference in New Issue
Block a user