diff --git a/assets/js/src/newsletters/templates.jsx b/assets/js/src/newsletters/templates.jsx
index 1e2997890a..0b72b02f2e 100644
--- a/assets/js/src/newsletters/templates.jsx
+++ b/assets/js/src/newsletters/templates.jsx
@@ -6,280 +6,280 @@ import classNames from 'classnames';
import Breadcrumb from 'newsletters/breadcrumb.jsx';
import HelpTooltip from 'help-tooltip.jsx';
- const ImportTemplate = React.createClass({
- saveTemplate: function (saveTemplate) {
- const template = saveTemplate;
+const ImportTemplate = React.createClass({
+ saveTemplate: function (saveTemplate) {
+ const template = saveTemplate;
- // Stringify to enable transmission of primitive non-string value types
- if (!_.isUndefined(template.body)) {
- template.body = JSON.stringify(template.body);
- }
+ // Stringify to enable transmission of primitive non-string value types
+ if (!_.isUndefined(template.body)) {
+ template.body = JSON.stringify(template.body);
+ }
- MailPoet.Modal.loading(true);
+ MailPoet.Modal.loading(true);
- MailPoet.Ajax.post({
- api_version: window.mailpoet_api_version,
- endpoint: 'newsletterTemplates',
- action: 'save',
- data: template,
- }).always(() => {
- MailPoet.Modal.loading(false);
- }).done((response) => {
- this.props.onImport(response.data);
- }).fail((response) => {
- if (response.errors.length > 0) {
- MailPoet.Notice.error(
- response.errors.map((error) => { return error.message; }),
- { scroll: true }
- );
- }
- });
- },
- handleSubmit: function (e) {
- e.preventDefault();
-
- if (_.size(this.refs.templateFile.files) <= 0) return false;
-
-
- const file = _.first(this.refs.templateFile.files);
- const reader = new FileReader();
- const saveTemplate = this.saveTemplate;
-
- reader.onload = (evt) => {
- try {
- saveTemplate(JSON.parse(evt.target.result));
- MailPoet.trackEvent('Emails > Template imported', {
- 'MailPoet Free version': window.mailpoet_version,
- });
- } catch (err) {
- MailPoet.Notice.error(MailPoet.I18n.t('templateFileMalformedError'));
- }
- };
-
- reader.readAsText(file);
- },
- render: function () {
- return (
-
-
{MailPoet.I18n.t('importTemplateTitle')}
-
-
+ MailPoet.Ajax.post({
+ api_version: window.mailpoet_api_version,
+ endpoint: 'newsletterTemplates',
+ action: 'save',
+ data: template,
+ }).always(() => {
+ MailPoet.Modal.loading(false);
+ }).done((response) => {
+ this.props.onImport(response.data);
+ }).fail((response) => {
+ if (response.errors.length > 0) {
+ MailPoet.Notice.error(
+ response.errors.map((error) => { return error.message; }),
+ { scroll: true }
);
- },
+ }
});
+ },
+ handleSubmit: function (e) {
+ e.preventDefault();
- const NewsletterTemplates = React.createClass({
- getInitialState: function () {
- return {
- loading: false,
- templates: [],
- };
- },
- componentDidMount: function () {
- this.getTemplates();
- },
- getTemplates: function () {
- this.setState({ loading: true });
+ if (_.size(this.refs.templateFile.files) <= 0) return false;
- MailPoet.Modal.loading(true);
- MailPoet.Ajax.post({
- api_version: window.mailpoet_api_version,
- endpoint: 'newsletterTemplates',
- action: 'getAll',
- }).always(() => {
- MailPoet.Modal.loading(false);
- }).done((response) => {
- if (this.isMounted()) {
- if (response.data.length === 0) {
- response.data = [
- {
- name:
- MailPoet.I18n.t('mailpoetGuideTemplateTitle'),
- description:
- MailPoet.I18n.t('mailpoetGuideTemplateDescription'),
- readonly: '1',
- },
- ];
- }
- this.setState({
- templates: response.data,
- loading: false,
- });
- }
- }).fail((response) => {
- if (response.errors.length > 0) {
- MailPoet.Notice.error(
- response.errors.map((error) => { return error.message; }),
- { scroll: true }
- );
- }
- });
- },
- handleSelectTemplate: function (template) {
- let body = template.body;
+ const file = _.first(this.refs.templateFile.files);
+ const reader = new FileReader();
+ const saveTemplate = this.saveTemplate;
- // Stringify to enable transmission of primitive non-string value types
- if (!_.isUndefined(body)) {
- body = JSON.stringify(body);
- }
-
- MailPoet.trackEvent('Emails > Template selected', {
+ reader.onload = (evt) => {
+ try {
+ saveTemplate(JSON.parse(evt.target.result));
+ MailPoet.trackEvent('Emails > Template imported', {
'MailPoet Free version': window.mailpoet_version,
- 'Email name': template.name,
});
+ } catch (err) {
+ MailPoet.Notice.error(MailPoet.I18n.t('templateFileMalformedError'));
+ }
+ };
- MailPoet.Ajax.post({
- api_version: window.mailpoet_api_version,
- endpoint: 'newsletters',
- action: 'save',
- data: {
- id: this.props.params.id,
- body: body,
- },
- }).done((response) => {
- // TODO: Move this URL elsewhere
- window.location = 'admin.php?page=mailpoet-newsletter-editor&id=' + response.data.id;
- }).fail((response) => {
- if (response.errors.length > 0) {
- MailPoet.Notice.error(
- response.errors.map((error) => { return error.message; }),
- { scroll: true }
- );
- }
- });
- },
- handleDeleteTemplate: function (template) {
- this.setState({ loading: true });
- const onConfirm = () => {
- MailPoet.Ajax.post({
- api_version: window.mailpoet_api_version,
- endpoint: 'newsletterTemplates',
- action: 'delete',
- data: {
- id: template.id,
+ reader.readAsText(file);
+ },
+ render: function () {
+ return (
+
+
{MailPoet.I18n.t('importTemplateTitle')}
+
+
+ );
+ },
+});
+
+const NewsletterTemplates = React.createClass({
+ getInitialState: function () {
+ return {
+ loading: false,
+ templates: [],
+ };
+ },
+ componentDidMount: function () {
+ this.getTemplates();
+ },
+ getTemplates: function () {
+ this.setState({ loading: true });
+
+ MailPoet.Modal.loading(true);
+
+ MailPoet.Ajax.post({
+ api_version: window.mailpoet_api_version,
+ endpoint: 'newsletterTemplates',
+ action: 'getAll',
+ }).always(() => {
+ MailPoet.Modal.loading(false);
+ }).done((response) => {
+ if (this.isMounted()) {
+ if (response.data.length === 0) {
+ response.data = [
+ {
+ name:
+ MailPoet.I18n.t('mailpoetGuideTemplateTitle'),
+ description:
+ MailPoet.I18n.t('mailpoetGuideTemplateDescription'),
+ readonly: '1',
},
- }).done(() => {
- this.getTemplates();
- }).fail((response) => {
- if (response.errors.length > 0) {
- MailPoet.Notice.error(
- response.errors.map((error) => { return error.message; }),
- { scroll: true }
- );
- }
- });
- };
- const onCancel = () => {
- this.setState({ loading: false });
- };
- confirmAlert({
- title: MailPoet.I18n.t('confirmTitle'),
- message: MailPoet.I18n.t('confirmTemplateDeletion').replace('%$1s', template.name),
- confirmLabel: MailPoet.I18n.t('confirmLabel'),
- cancelLabel: MailPoet.I18n.t('cancelLabel'),
- onConfirm: onConfirm,
- onCancel: onCancel,
+ ];
+ }
+ this.setState({
+ templates: response.data,
+ loading: false,
});
- },
- handleShowTemplate: function (template) {
- MailPoet.Modal.popup({
- title: template.name,
- template: '',
- data: template,
- });
- },
- handleTemplateImport: function () {
- this.getTemplates();
- },
- render: function () {
- const templates = this.state.templates.map((template, index) => {
- const deleteLink = (
-
- );
- let thumbnail = '';
-
- if (typeof template.thumbnail === 'string'
- && template.thumbnail.length > 0) {
- thumbnail = (
-
-
-
-
- );
- }
-
- return (
-
-
- { thumbnail }
-
-
-
-
{ template.name }
-
{ template.description }
-
-
-
- { (template.readonly === '1') ? false : deleteLink }
-
- );
- });
-
- const boxClasses = classNames(
- 'mailpoet_boxes',
- 'clearfix',
- { mailpoet_boxes_loading: this.state.loading }
+ }
+ }).fail((response) => {
+ if (response.errors.length > 0) {
+ MailPoet.Notice.error(
+ response.errors.map((error) => { return error.message; }),
+ { scroll: true }
);
-
- return (
-
-
{MailPoet.I18n.t('selectTemplateTitle')}
-
-
-
-
-
-
-
- );
- },
+ }
});
+ },
+ handleSelectTemplate: function (template) {
+ let body = template.body;
+
+ // Stringify to enable transmission of primitive non-string value types
+ if (!_.isUndefined(body)) {
+ body = JSON.stringify(body);
+ }
+
+ MailPoet.trackEvent('Emails > Template selected', {
+ 'MailPoet Free version': window.mailpoet_version,
+ 'Email name': template.name,
+ });
+
+ MailPoet.Ajax.post({
+ api_version: window.mailpoet_api_version,
+ endpoint: 'newsletters',
+ action: 'save',
+ data: {
+ id: this.props.params.id,
+ body: body,
+ },
+ }).done((response) => {
+ // TODO: Move this URL elsewhere
+ window.location = 'admin.php?page=mailpoet-newsletter-editor&id=' + response.data.id;
+ }).fail((response) => {
+ if (response.errors.length > 0) {
+ MailPoet.Notice.error(
+ response.errors.map((error) => { return error.message; }),
+ { scroll: true }
+ );
+ }
+ });
+ },
+ handleDeleteTemplate: function (template) {
+ this.setState({ loading: true });
+ const onConfirm = () => {
+ MailPoet.Ajax.post({
+ api_version: window.mailpoet_api_version,
+ endpoint: 'newsletterTemplates',
+ action: 'delete',
+ data: {
+ id: template.id,
+ },
+ }).done(() => {
+ this.getTemplates();
+ }).fail((response) => {
+ if (response.errors.length > 0) {
+ MailPoet.Notice.error(
+ response.errors.map((error) => { return error.message; }),
+ { scroll: true }
+ );
+ }
+ });
+ };
+ const onCancel = () => {
+ this.setState({ loading: false });
+ };
+ confirmAlert({
+ title: MailPoet.I18n.t('confirmTitle'),
+ message: MailPoet.I18n.t('confirmTemplateDeletion').replace('%$1s', template.name),
+ confirmLabel: MailPoet.I18n.t('confirmLabel'),
+ cancelLabel: MailPoet.I18n.t('cancelLabel'),
+ onConfirm: onConfirm,
+ onCancel: onCancel,
+ });
+ },
+ handleShowTemplate: function (template) {
+ MailPoet.Modal.popup({
+ title: template.name,
+ template: '',
+ data: template,
+ });
+ },
+ handleTemplateImport: function () {
+ this.getTemplates();
+ },
+ render: function () {
+ const templates = this.state.templates.map((template, index) => {
+ const deleteLink = (
+
+ );
+ let thumbnail = '';
+
+ if (typeof template.thumbnail === 'string'
+ && template.thumbnail.length > 0) {
+ thumbnail = (
+
+
+
+
+ );
+ }
+
+ return (
+
+
+ { thumbnail }
+
+
+
+
{ template.name }
+
{ template.description }
+
+
+
+ { (template.readonly === '1') ? false : deleteLink }
+
+ );
+ });
+
+ const boxClasses = classNames(
+ 'mailpoet_boxes',
+ 'clearfix',
+ { mailpoet_boxes_loading: this.state.loading }
+ );
+
+ return (
+
+
{MailPoet.I18n.t('selectTemplateTitle')}
+
+
+
+
+
+
+
+ );
+ },
+});
export default NewsletterTemplates;