diff --git a/assets/js/src/newsletters/types/automatic_emails/events_list.jsx b/assets/js/src/newsletters/types/automatic_emails/events_list.jsx index d38dc3e39d..7883897abf 100644 --- a/assets/js/src/newsletters/types/automatic_emails/events_list.jsx +++ b/assets/js/src/newsletters/types/automatic_emails/events_list.jsx @@ -2,6 +2,7 @@ import React from 'react'; import AutomaticEmailsBreadcrumb from 'newsletters/types/automatic_emails/breadcrumb.jsx'; import MailPoet from 'mailpoet'; import _ from 'underscore'; +import PropTypes from 'prop-types'; class AutomaticEmailEventsList extends React.Component { constructor(props) { @@ -21,7 +22,8 @@ class AutomaticEmailEventsList extends React.Component { if (this.email.premium) { action = ( - {MailPoet.I18n.t('premiumFeatureLink')} @@ -31,7 +33,8 @@ class AutomaticEmailEventsList extends React.Component { const disabled = event.soon; action = ( - @@ -91,4 +94,18 @@ class AutomaticEmailEventsList extends React.Component { } } +AutomaticEmailEventsList.propTypes = { + + route: PropTypes.shape({ + data: PropTypes.shape({ + email: PropTypes.string.isRequired, + }).isRequired, + }).isRequired, + + router: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, + +}; + module.exports = AutomaticEmailEventsList; diff --git a/assets/js/src/newsletters/types/notification/notification.jsx b/assets/js/src/newsletters/types/notification/notification.jsx index b8d8ec1ef8..5cfadb1f44 100644 --- a/assets/js/src/newsletters/types/notification/notification.jsx +++ b/assets/js/src/newsletters/types/notification/notification.jsx @@ -1,96 +1,84 @@ -define( - [ - 'underscore', - 'react', - 'react-router', - 'mailpoet', - 'newsletters/types/notification/scheduling.jsx', - 'newsletters/breadcrumb.jsx', - ], - ( - _, - React, - Router, - MailPoet, - Scheduling, - Breadcrumb - ) => { - const field = { - name: 'options', - type: 'reactComponent', - component: Scheduling, +import React from 'react'; +import MailPoet from 'mailpoet'; +import Breadcrumb from 'newsletters/breadcrumb.jsx'; +import _ from 'underscore'; +import Scheduling from 'newsletters/types/notification/scheduling.jsx'; + +const field = { + name: 'options', + type: 'reactComponent', + component: Scheduling, +}; + +const NewsletterNotification = React.createClass({ + contextTypes: { + router: React.PropTypes.object.isRequired, + }, + getInitialState: function getInitialState() { + return { + options: { + intervalType: 'daily', + timeOfDay: 0, + weekDay: 1, + monthDay: 0, + nthWeekDay: 1, + }, }; - - const NewsletterNotification = React.createClass({ - contextTypes: { - router: React.PropTypes.object.isRequired, - }, - getInitialState: function getInitialState() { - return { - options: { - intervalType: 'daily', - timeOfDay: 0, - weekDay: 1, - monthDay: 0, - nthWeekDay: 1, - }, - }; - }, - handleValueChange: function handleValueChange(event) { - const state = this.state; - state[event.target.name] = event.target.value; - this.setState(state); - }, - handleNext: function handleNext() { - MailPoet.Ajax.post({ - api_version: window.mailpoet_api_version, - endpoint: 'newsletters', - action: 'create', - data: _.extend({}, this.state, { - type: 'notification', - subject: MailPoet.I18n.t('draftNewsletterTitle'), - }), - }).done((response) => { - this.showTemplateSelection(response.data.id); - }).fail((response) => { - if (response.errors.length > 0) { - MailPoet.Notice.error( - response.errors.map(error => error.message), - { scroll: true } - ); - } - }); - }, - showTemplateSelection: function showTemplateSelection(newsletterId) { - this.context.router.push(`/template/${newsletterId}`); - }, - render: function render() { - return ( -
-

{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}

- - -

{MailPoet.I18n.t('selectFrequency')}

- - - -

- -

-
+ }, + handleValueChange: function handleValueChange(event) { + const state = this.state; + state[event.target.name] = event.target.value; + this.setState(state); + }, + handleNext: function handleNext() { + MailPoet.Ajax.post({ + api_version: window.mailpoet_api_version, + endpoint: 'newsletters', + action: 'create', + data: _.extend({}, this.state, { + type: 'notification', + subject: MailPoet.I18n.t('draftNewsletterTitle'), + }), + }).done((response) => { + this.showTemplateSelection(response.data.id); + }).fail((response) => { + if (response.errors.length > 0) { + MailPoet.Notice.error( + response.errors.map(error => error.message), + { scroll: true } ); - }, + } }); + }, + showTemplateSelection: function showTemplateSelection(newsletterId) { + this.context.router.push(`/template/${newsletterId}`); + }, + render: function render() { + return ( +
+

{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}

+ + +

{MailPoet.I18n.t('selectFrequency')}

+ + + +

+ +

+
+ ); + }, +}); + +module.exports = NewsletterNotification; - return NewsletterNotification; - } -); diff --git a/assets/js/src/newsletters/types/standard.jsx b/assets/js/src/newsletters/types/standard.jsx index 0d9d79d426..883c0b806d 100644 --- a/assets/js/src/newsletters/types/standard.jsx +++ b/assets/js/src/newsletters/types/standard.jsx @@ -1,53 +1,43 @@ -define( - [ - 'react', - 'react-router', - 'mailpoet', - 'newsletters/breadcrumb.jsx', - ], - ( - React, - Router, - MailPoet, - Breadcrumb - ) => { - const NewsletterStandard = React.createClass({ - contextTypes: { - router: React.PropTypes.object.isRequired, - }, - showTemplateSelection: function showTemplateSelection(newsletterId) { - this.context.router.push(`/template/${newsletterId}`); - }, - componentDidMount: function componentDidMount() { - // No options for this type, create a newsletter upon mounting - MailPoet.Ajax.post({ - api_version: window.mailpoet_api_version, - endpoint: 'newsletters', - action: 'create', - data: { - type: 'standard', - }, - }).done((response) => { - this.showTemplateSelection(response.data.id); - }).fail((response) => { - if (response.errors.length > 0) { - MailPoet.Notice.error( - response.errors.map(error => error.message), - { scroll: true } - ); - } - }); - }, - render: function render() { - return ( -
-

{MailPoet.I18n.t('regularNewsletterTypeTitle')}

- -
- ); - }, - }); +import React from 'react'; +import MailPoet from 'mailpoet'; +import Breadcrumb from 'newsletters/breadcrumb.jsx'; + +const NewsletterStandard = React.createClass({ + contextTypes: { + router: React.PropTypes.object.isRequired, + }, + showTemplateSelection: function showTemplateSelection(newsletterId) { + this.context.router.push(`/template/${newsletterId}`); + }, + componentDidMount: function componentDidMount() { + // No options for this type, create a newsletter upon mounting + MailPoet.Ajax.post({ + api_version: window.mailpoet_api_version, + endpoint: 'newsletters', + action: 'create', + data: { + type: 'standard', + }, + }).done((response) => { + this.showTemplateSelection(response.data.id); + }).fail((response) => { + if (response.errors.length > 0) { + MailPoet.Notice.error( + response.errors.map(error => error.message), + { scroll: true } + ); + } + }); + }, + render: function render() { + return ( +
+

{MailPoet.I18n.t('regularNewsletterTypeTitle')}

+ +
+ ); + }, +}); + +module.exports = NewsletterStandard; - return NewsletterStandard; - } -);