Add eslint rule to require parentheses in arrow functions
[MAILPOET-2162]
This commit is contained in:
committed by
Jack Kitterhing
parent
a1bf7ec23f
commit
a78562c774
@ -22,6 +22,7 @@
|
|||||||
"react-hooks/rules-of-hooks": "error",
|
"react-hooks/rules-of-hooks": "error",
|
||||||
"react-hooks/exhaustive-deps": "warn",
|
"react-hooks/exhaustive-deps": "warn",
|
||||||
// Exceptions
|
// Exceptions
|
||||||
|
"arrow-parens": ["error", "always"],
|
||||||
"comma-dangle": ["error", "always-multiline"],
|
"comma-dangle": ["error", "always-multiline"],
|
||||||
"no-script-url": 0,
|
"no-script-url": 0,
|
||||||
"import/extensions": 0, // we wouldn't be able to import jQuery without this line
|
"import/extensions": 0, // we wouldn't be able to import jQuery without this line
|
||||||
|
@ -23,7 +23,7 @@ class FeatureAnnouncement extends React.Component {
|
|||||||
const updateMailPoetNotice = ReactStringReplace(
|
const updateMailPoetNotice = ReactStringReplace(
|
||||||
MailPoet.I18n.t('updateMailPoetNotice'),
|
MailPoet.I18n.t('updateMailPoetNotice'),
|
||||||
/\[link\](.*?)\[\/link\]/,
|
/\[link\](.*?)\[\/link\]/,
|
||||||
match => `<a href="update-core.php">${match}</a>`
|
(match) => `<a href="update-core.php">${match}</a>`
|
||||||
).join('');
|
).join('');
|
||||||
jQuery('#beamerOverlay').append(
|
jQuery('#beamerOverlay').append(
|
||||||
`<p id="mailpoet_update_notice" class="mailpoet_in_beamer_update_notice">${updateMailPoetNotice}</p>`
|
`<p id="mailpoet_update_notice" class="mailpoet_in_beamer_update_notice">${updateMailPoetNotice}</p>`
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
const KeyValueTable = props => (
|
const KeyValueTable = (props) => (
|
||||||
<table className="widefat fixed" style={{ maxWidth: props.max_width }}>
|
<table className="widefat fixed" style={{ maxWidth: props.max_width }}>
|
||||||
<tbody>
|
<tbody>
|
||||||
{props.rows.map(row => (
|
{props.rows.map((row) => (
|
||||||
<tr key={`row_${row.key}`}>
|
<tr key={`row_${row.key}`}>
|
||||||
<td className="row-title">{ row.key }</td>
|
<td className="row-title">{ row.key }</td>
|
||||||
<td>{ row.value }</td>
|
<td>{ row.value }</td>
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const PrintBoolean = props => (
|
const PrintBoolean = (props) => (
|
||||||
<span>
|
<span>
|
||||||
{(props.children === true && props.truthy)
|
{(props.children === true && props.truthy)
|
||||||
|| (props.children === false && props.falsy)
|
|| (props.children === false && props.falsy)
|
||||||
|
@ -8,7 +8,7 @@ const SteppedProgressBar = (props) => {
|
|||||||
return (
|
return (
|
||||||
<div className="mailpoet_stepped_progress_bar">
|
<div className="mailpoet_stepped_progress_bar">
|
||||||
{
|
{
|
||||||
[...Array(props.steps_count).keys()].map(step => (
|
[...Array(props.steps_count).keys()].map((step) => (
|
||||||
<div
|
<div
|
||||||
className={`
|
className={`
|
||||||
mailpoet_stepped_progress_bar_step ${(step < props.step ? 'active' : '')} ${(step === (props.step - 1) ? 'current' : '')}
|
mailpoet_stepped_progress_bar_step ${(step < props.step ? 'active' : '')} ${(step === (props.step - 1) ? 'current' : '')}
|
||||||
|
@ -21,7 +21,7 @@ export const fromDom = async (element) => {
|
|||||||
* @param {String} url
|
* @param {String} url
|
||||||
* @return {Promise<String>} DataURL of the generated image.
|
* @return {Promise<String>} DataURL of the generated image.
|
||||||
*/
|
*/
|
||||||
export const fromUrl = url => new Promise((resolve, reject) => {
|
export const fromUrl = (url) => new Promise((resolve, reject) => {
|
||||||
const iframe = document.createElement('iframe');
|
const iframe = document.createElement('iframe');
|
||||||
const protocol = document.location.href.startsWith('https://') ? 'https:' : 'http:';
|
const protocol = document.location.href.startsWith('https://') ? 'https:' : 'http:';
|
||||||
iframe.src = protocol + url.replace(/^https?:/, '');
|
iframe.src = protocol + url.replace(/^https?:/, '');
|
||||||
@ -59,7 +59,7 @@ export const fromUrl = url => new Promise((resolve, reject) => {
|
|||||||
* @param {Object} data
|
* @param {Object} data
|
||||||
* @return {Promise<String>} DataURL of the generated image.
|
* @return {Promise<String>} DataURL of the generated image.
|
||||||
*/
|
*/
|
||||||
export const fromNewsletter = data => new Promise((resolve, reject) => {
|
export const fromNewsletter = (data) => new Promise((resolve, reject) => {
|
||||||
const json = data;
|
const json = data;
|
||||||
if (!_.isUndefined(json.body)) {
|
if (!_.isUndefined(json.body)) {
|
||||||
json.body = JSON.stringify(json.body);
|
json.body = JSON.stringify(json.body);
|
||||||
@ -69,7 +69,7 @@ export const fromNewsletter = data => new Promise((resolve, reject) => {
|
|||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'showPreview',
|
action: 'showPreview',
|
||||||
data: json,
|
data: json,
|
||||||
}).done(response => fromUrl(response.meta.preview_url)
|
}).done((response) => fromUrl(response.meta.preview_url)
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch(reject)).fail(response => reject(response.errors));
|
.catch(reject)).fail((response) => reject(response.errors));
|
||||||
});
|
});
|
||||||
|
@ -16,7 +16,7 @@ const ExperimentalFeatures = () => {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ const ExperimentalFeatures = () => {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ class FormFieldCheckbox extends React.Component {
|
|||||||
// it will be false in case value is "0" or empty
|
// it will be false in case value is "0" or empty
|
||||||
const isChecked = !!(Number(this.props.item[this.props.field.name]));
|
const isChecked = !!(Number(this.props.item[this.props.field.name]));
|
||||||
const options = Object.keys(this.props.field.values).map(
|
const options = Object.keys(this.props.field.values).map(
|
||||||
value => (
|
(value) => (
|
||||||
<p key={`checkbox-${value}`}>
|
<p key={`checkbox-${value}`}>
|
||||||
<label htmlFor={this.props.field.name}>
|
<label htmlFor={this.props.field.name}>
|
||||||
<input
|
<input
|
||||||
|
@ -9,7 +9,7 @@ class FormFieldRadio extends React.Component { // eslint-disable-line react/pref
|
|||||||
|
|
||||||
const selectedValue = this.props.item[this.props.field.name];
|
const selectedValue = this.props.item[this.props.field.name];
|
||||||
const options = Object.keys(this.props.field.values).map(
|
const options = Object.keys(this.props.field.values).map(
|
||||||
value => (
|
(value) => (
|
||||||
<p key={`radio-${value}`}>
|
<p key={`radio-${value}`}>
|
||||||
<label htmlFor={this.props.field.name}>
|
<label htmlFor={this.props.field.name}>
|
||||||
<input
|
<input
|
||||||
|
@ -33,9 +33,9 @@ class FormFieldSelect extends React.Component {
|
|||||||
keys = _.map(
|
keys = _.map(
|
||||||
_.sortBy(
|
_.sortBy(
|
||||||
_.pairs(this.props.field.values),
|
_.pairs(this.props.field.values),
|
||||||
item => sortBy(item[0], item[1])
|
(item) => sortBy(item[0], item[1])
|
||||||
),
|
),
|
||||||
item => item[0]
|
(item) => item[0]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
keys = Object.keys(this.props.field.values);
|
keys = Object.keys(this.props.field.values);
|
||||||
@ -47,7 +47,7 @@ class FormFieldSelect extends React.Component {
|
|||||||
return filter(this.props.item, value);
|
return filter(this.props.item, value);
|
||||||
})
|
})
|
||||||
.map(
|
.map(
|
||||||
value => (
|
(value) => (
|
||||||
<option
|
<option
|
||||||
key={`option-${value}`}
|
key={`option-${value}`}
|
||||||
value={value}
|
value={value}
|
||||||
|
@ -52,7 +52,7 @@ class Selection extends React.Component {
|
|||||||
if (this.props.item !== undefined && this.props.field.name !== undefined) {
|
if (this.props.item !== undefined && this.props.field.name !== undefined) {
|
||||||
if (this.allowMultipleValues()) {
|
if (this.allowMultipleValues()) {
|
||||||
if (_.isArray(this.props.item[this.props.field.name])) {
|
if (_.isArray(this.props.item[this.props.field.name])) {
|
||||||
return this.props.item[this.props.field.name].map(item => item.id);
|
return this.props.item[this.props.field.name].map((item) => item.id);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return this.props.item[this.props.field.name];
|
return this.props.item[this.props.field.name];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
const FormFieldTextarea = props => (
|
const FormFieldTextarea = (props) => (
|
||||||
<textarea
|
<textarea
|
||||||
type="text"
|
type="text"
|
||||||
className="regular-text"
|
className="regular-text"
|
||||||
|
@ -175,7 +175,7 @@ class Form extends React.Component {
|
|||||||
render() {
|
render() {
|
||||||
let errors;
|
let errors;
|
||||||
if (this.getErrors() !== undefined) {
|
if (this.getErrors() !== undefined) {
|
||||||
errors = this.getErrors().map(error => (
|
errors = this.getErrors().map((error) => (
|
||||||
<div className="mailpoet_notice notice inline error is-dismissible" key={`error-${error.message}`}>
|
<div className="mailpoet_notice notice inline error is-dismissible" key={`error-${error.message}`}>
|
||||||
<p>{ error.message }</p>
|
<p>{ error.message }</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -111,7 +111,7 @@ const itemActions = [
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ class FormList extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -149,8 +149,8 @@ class FormList extends React.Component {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let segments = window.mailpoet_segments
|
let segments = window.mailpoet_segments
|
||||||
.filter(segment => (jQuery.inArray(segment.id, form.segments) !== -1))
|
.filter((segment) => (jQuery.inArray(segment.id, form.segments) !== -1))
|
||||||
.map(segment => segment.name)
|
.map((segment) => segment.name)
|
||||||
.join(', ');
|
.join(', ');
|
||||||
|
|
||||||
if (form.settings.segments_selected_by === 'user') {
|
if (form.settings.segments_selected_by === 'user') {
|
||||||
|
@ -14,7 +14,7 @@ const CronStatus = (props) => {
|
|||||||
? (
|
? (
|
||||||
<>
|
<>
|
||||||
{
|
{
|
||||||
status.last_error.map(error => (
|
status.last_error.map((error) => (
|
||||||
<div key={error.worker}>
|
<div key={error.worker}>
|
||||||
{error.worker}
|
{error.worker}
|
||||||
:
|
:
|
||||||
|
@ -47,13 +47,13 @@ const QueueStatus = (props) => {
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<h4>{MailPoet.I18n.t('scheduledTasks')}</h4>
|
<h4>{MailPoet.I18n.t('scheduledTasks')}</h4>
|
||||||
<TasksList show_scheduled_at tasks={status.latestTasks.filter(task => (task.status === 'scheduled'))} />
|
<TasksList show_scheduled_at tasks={status.latestTasks.filter((task) => (task.status === 'scheduled'))} />
|
||||||
|
|
||||||
<h4>{MailPoet.I18n.t('runningTasks')}</h4>
|
<h4>{MailPoet.I18n.t('runningTasks')}</h4>
|
||||||
<TasksList tasks={status.latestTasks.filter(task => (task.status === null))} />
|
<TasksList tasks={status.latestTasks.filter((task) => (task.status === null))} />
|
||||||
|
|
||||||
<h4>{MailPoet.I18n.t('completedTasks')}</h4>
|
<h4>{MailPoet.I18n.t('completedTasks')}</h4>
|
||||||
<TasksList tasks={status.latestTasks.filter(task => (task.status === 'completed'))} />
|
<TasksList tasks={status.latestTasks.filter((task) => (task.status === 'completed'))} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,7 @@ function handleFocus(event) {
|
|||||||
|
|
||||||
function printData(data) {
|
function printData(data) {
|
||||||
if (_.isObject(data)) {
|
if (_.isObject(data)) {
|
||||||
const printableData = Object.keys(data).map(key => `${key}: ${data[key]}`);
|
const printableData = Object.keys(data).map((key) => `${key}: ${data[key]}`);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<textarea
|
<textarea
|
||||||
|
@ -15,7 +15,7 @@ function renderStatusMessage(status, error, link) {
|
|||||||
noticeMessage = ReactStringReplace(
|
noticeMessage = ReactStringReplace(
|
||||||
noticeMessage,
|
noticeMessage,
|
||||||
/\[link\](.*?)\[\/link\]/g,
|
/\[link\](.*?)\[\/link\]/g,
|
||||||
match => (
|
(match) => (
|
||||||
<a href={`${link}`} key="kb-link">{ match }</a>
|
<a href={`${link}`} key="kb-link">{ match }</a>
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -12,7 +12,7 @@ const TasksList = (props) => {
|
|||||||
<thead><TaskListLabelsRow show_scheduled_at={props.show_scheduled_at} /></thead>
|
<thead><TaskListLabelsRow show_scheduled_at={props.show_scheduled_at} /></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{
|
{
|
||||||
props.tasks.length ? props.tasks.map(task => (
|
props.tasks.length ? props.tasks.map((task) => (
|
||||||
<TaskListDataRow
|
<TaskListDataRow
|
||||||
key={task.id}
|
key={task.id}
|
||||||
task={task}
|
task={task}
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const TasksListDataRow = props => (
|
const TasksListDataRow = (props) => (
|
||||||
<tr>
|
<tr>
|
||||||
<td className="column column-primary">
|
<td className="column column-primary">
|
||||||
{ props.task.id }
|
{ props.task.id }
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const TasksListLabelsRow = props => (
|
const TasksListLabelsRow = (props) => (
|
||||||
<tr>
|
<tr>
|
||||||
<th className="row-title">Id</th>
|
<th className="row-title">Id</th>
|
||||||
<th className="row-title">{MailPoet.I18n.t('type')}</th>
|
<th className="row-title">{MailPoet.I18n.t('type')}</th>
|
||||||
|
@ -17,7 +17,7 @@ class ListingBulkActions extends React.Component {
|
|||||||
getSelectedAction() {
|
getSelectedAction() {
|
||||||
const selectedAction = this.myRef.current.value;
|
const selectedAction = this.myRef.current.value;
|
||||||
if (selectedAction.length > 0) {
|
if (selectedAction.length > 0) {
|
||||||
const action = this.props.bulk_actions.filter(act => (act.name === selectedAction));
|
const action = this.props.bulk_actions.filter((act) => (act.name === selectedAction));
|
||||||
|
|
||||||
if (action.length > 0) {
|
if (action.length > 0) {
|
||||||
return action[0];
|
return action[0];
|
||||||
@ -100,7 +100,7 @@ class ListingBulkActions extends React.Component {
|
|||||||
onChange={this.handleChangeAction}
|
onChange={this.handleChangeAction}
|
||||||
>
|
>
|
||||||
<option value="">{MailPoet.I18n.t('bulkActions')}</option>
|
<option value="">{MailPoet.I18n.t('bulkActions')}</option>
|
||||||
{ this.props.bulk_actions.map(action => (
|
{ this.props.bulk_actions.map((action) => (
|
||||||
<option
|
<option
|
||||||
value={action.name}
|
value={action.name}
|
||||||
key={`action-${action.name}`}
|
key={`action-${action.name}`}
|
||||||
|
@ -19,7 +19,7 @@ class ListingFilters extends React.Component {
|
|||||||
|
|
||||||
getAvailableFilters = () => {
|
getAvailableFilters = () => {
|
||||||
const filters = this.props.filters;
|
const filters = this.props.filters;
|
||||||
return Object.keys(filters).filter(filter => !(
|
return Object.keys(filters).filter((filter) => !(
|
||||||
filters[filter].length === 0
|
filters[filter].length === 0
|
||||||
|| (
|
|| (
|
||||||
filters[filter].length === 1
|
filters[filter].length === 1
|
||||||
@ -50,7 +50,7 @@ class ListingFilters extends React.Component {
|
|||||||
key={`filter-${filter}`}
|
key={`filter-${filter}`}
|
||||||
name={filter}
|
name={filter}
|
||||||
>
|
>
|
||||||
{ filters[filter].map(option => (
|
{ filters[filter].map((option) => (
|
||||||
<option
|
<option
|
||||||
value={option.value}
|
value={option.value}
|
||||||
key={`filter-option-${option.value}`}
|
key={`filter-option-${option.value}`}
|
||||||
|
@ -123,7 +123,7 @@ class Listing extends React.Component {
|
|||||||
setParams = () => {
|
setParams = () => {
|
||||||
if (this.props.location) {
|
if (this.props.location) {
|
||||||
const params = Object.keys(this.state)
|
const params = Object.keys(this.state)
|
||||||
.filter(key => (
|
.filter((key) => (
|
||||||
[
|
[
|
||||||
'group',
|
'group',
|
||||||
'filter',
|
'filter',
|
||||||
@ -248,7 +248,7 @@ class Listing extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -324,7 +324,7 @@ class Listing extends React.Component {
|
|||||||
this.getItems();
|
this.getItems();
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -353,7 +353,7 @@ class Listing extends React.Component {
|
|||||||
this.getItems();
|
this.getItems();
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -382,7 +382,7 @@ class Listing extends React.Component {
|
|||||||
this.getItems();
|
this.getItems();
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -402,7 +402,7 @@ class Listing extends React.Component {
|
|||||||
this.handleGroup('all');
|
this.handleGroup('all');
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -441,7 +441,7 @@ class Listing extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -497,7 +497,7 @@ class Listing extends React.Component {
|
|||||||
this.clearSelection();
|
this.clearSelection();
|
||||||
} else {
|
} else {
|
||||||
this.setState((prevState) => {
|
this.setState((prevState) => {
|
||||||
const selectedIds = prevState.items.map(item => Number(item.id));
|
const selectedIds = prevState.items.map((item) => Number(item.id));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
selected_ids: selectedIds,
|
selected_ids: selectedIds,
|
||||||
@ -575,7 +575,7 @@ class Listing extends React.Component {
|
|||||||
// columns
|
// columns
|
||||||
let columns = this.props.columns || [];
|
let columns = this.props.columns || [];
|
||||||
columns = columns.filter(
|
columns = columns.filter(
|
||||||
column => (column.display === undefined || !!(column.display) === true)
|
(column) => (column.display === undefined || !!(column.display) === true)
|
||||||
);
|
);
|
||||||
|
|
||||||
// bulk actions
|
// bulk actions
|
||||||
|
@ -31,7 +31,7 @@ class ListingItem extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
handleToggleItem = () => {
|
handleToggleItem = () => {
|
||||||
this.setState(prevState => ({
|
this.setState((prevState) => ({
|
||||||
expanded: !prevState.expanded,
|
expanded: !prevState.expanded,
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
@ -67,7 +67,7 @@ class ListingItem extends React.Component {
|
|||||||
if (customActions.length > 0) {
|
if (customActions.length > 0) {
|
||||||
let isFirst = true;
|
let isFirst = true;
|
||||||
itemActions = customActions
|
itemActions = customActions
|
||||||
.filter(action => action.display === undefined || action.display(this.props.item))
|
.filter((action) => action.display === undefined || action.display(this.props.item))
|
||||||
.map((action, index) => {
|
.map((action, index) => {
|
||||||
let customAction = null;
|
let customAction = null;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ const resumeMailerSending = () => {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -132,7 +132,7 @@ const MailerCheckSettingsNotice = () => (
|
|||||||
ReactStringReplace(
|
ReactStringReplace(
|
||||||
MailPoet.I18n.t('mailerCheckSettingsNotice'),
|
MailPoet.I18n.t('mailerCheckSettingsNotice'),
|
||||||
/\[link\](.*?)\[\/link\]/g,
|
/\[link\](.*?)\[\/link\]/g,
|
||||||
match => <a href="?page=mailpoet-settings#mta" key="check-sending">{ match }</a>
|
(match) => <a href="?page=mailpoet-settings#mta" key="check-sending">{ match }</a>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</p>
|
</p>
|
||||||
|
@ -54,7 +54,7 @@ class ListingPages extends React.Component {
|
|||||||
this.setPage(e.target.value);
|
this.setPage(e.target.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
constrainPage = page => Math.min(Math.max(1, Math.abs(Number(page))), this.getLastPage());
|
constrainPage = (page) => Math.min(Math.max(1, Math.abs(Number(page))), this.getLastPage());
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (this.props.count === 0) {
|
if (this.props.count === 0) {
|
||||||
|
@ -19,7 +19,7 @@ const renderBreadcrumb = (newsletterType) => {
|
|||||||
|
|
||||||
const initializeEditor = (config) => {
|
const initializeEditor = (config) => {
|
||||||
const editorContainer = document.getElementById('mailpoet_editor');
|
const editorContainer = document.getElementById('mailpoet_editor');
|
||||||
const getUrlParam = param => (document.location.search.split(`${param}=`)[1] || '').split('&')[0];
|
const getUrlParam = (param) => (document.location.search.split(`${param}=`)[1] || '').split('&')[0];
|
||||||
|
|
||||||
if (!editorContainer || !window.EditorApplication) return;
|
if (!editorContainer || !window.EditorApplication) return;
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ const initializeEditor = (config) => {
|
|||||||
.fail((pauseFailResponse) => {
|
.fail((pauseFailResponse) => {
|
||||||
if (pauseFailResponse.errors.length > 0) {
|
if (pauseFailResponse.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
pauseFailResponse.errors.map(error => error.message),
|
pauseFailResponse.errors.map((error) => error.message),
|
||||||
{ scroll: true, static: true }
|
{ scroll: true, static: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ const initializeEditor = (config) => {
|
|||||||
.fail((response) => {
|
.fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true, static: true }
|
{ scroll: true, static: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ function NewsletterStatsInfo(props) {
|
|||||||
newsletter.reply_to_name || ''
|
newsletter.reply_to_name || ''
|
||||||
);
|
);
|
||||||
|
|
||||||
const segments = (newsletter.segments || []).map(segment => segment.name).join(', ');
|
const segments = (newsletter.segments || []).map((segment) => segment.name).join(', ');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -51,7 +51,7 @@ class CampaignStatsPage extends React.Component {
|
|||||||
});
|
});
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -147,7 +147,7 @@ const newsletterActions = [
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -196,7 +196,7 @@ class NewsletterListNotification extends React.Component {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
renderStatus = newsletter => (
|
renderStatus = (newsletter) => (
|
||||||
<select
|
<select
|
||||||
data-id={newsletter.id}
|
data-id={newsletter.id}
|
||||||
defaultValue={newsletter.status}
|
defaultValue={newsletter.status}
|
||||||
@ -211,7 +211,7 @@ class NewsletterListNotification extends React.Component {
|
|||||||
let sendingFrequency;
|
let sendingFrequency;
|
||||||
|
|
||||||
// get list of segments' name
|
// get list of segments' name
|
||||||
const segments = newsletter.segments.map(segment => segment.name);
|
const segments = newsletter.segments.map((segment) => segment.name);
|
||||||
const sendingToSegments = MailPoet.I18n.t('ifNewContentToSegments').replace(
|
const sendingToSegments = MailPoet.I18n.t('ifNewContentToSegments').replace(
|
||||||
'%$1s', segments.join(', ')
|
'%$1s', segments.join(', ')
|
||||||
);
|
);
|
||||||
|
@ -74,7 +74,7 @@ class NewsletterListNotificationHistory extends React.Component {
|
|||||||
'has-row-actions'
|
'has-row-actions'
|
||||||
);
|
);
|
||||||
|
|
||||||
const segments = newsletter.segments.map(segment => segment.name).join(', ');
|
const segments = newsletter.segments.map((segment) => segment.name).join(', ');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -102,7 +102,7 @@ const QueueSending = ({ newsletter }) => {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
.done(() => setPaused(true))
|
.done(() => setPaused(true))
|
||||||
.fail(response => setErrors(response.errors));
|
.fail((response) => setErrors(response.errors));
|
||||||
};
|
};
|
||||||
|
|
||||||
const resumeSending = () => {
|
const resumeSending = () => {
|
||||||
@ -116,7 +116,7 @@ const QueueSending = ({ newsletter }) => {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
.done(() => setPaused(false))
|
.done(() => setPaused(false))
|
||||||
.fail(response => setErrors(response.errors));
|
.fail((response) => setErrors(response.errors));
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -155,7 +155,7 @@ let newsletterActions = [
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -185,7 +185,7 @@ class NewsletterListStandard extends React.Component {
|
|||||||
'has-row-actions'
|
'has-row-actions'
|
||||||
);
|
);
|
||||||
|
|
||||||
const segments = newsletter.segments.map(segment => segment.name).join(', ');
|
const segments = newsletter.segments.map((segment) => segment.name).join(', ');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
|
@ -57,7 +57,7 @@ export const checkCronStatus = (state) => {
|
|||||||
const cronPingCheckNotice = ReactStringReplace(
|
const cronPingCheckNotice = ReactStringReplace(
|
||||||
MailPoet.I18n.t('cronNotAccessibleNotice'),
|
MailPoet.I18n.t('cronNotAccessibleNotice'),
|
||||||
/\[link\](.*?)\[\/link\]/g,
|
/\[link\](.*?)\[\/link\]/g,
|
||||||
match => (
|
(match) => (
|
||||||
<a
|
<a
|
||||||
href="https://kb.mailpoet.com/article/231-sending-does-not-work"
|
href="https://kb.mailpoet.com/article/231-sending-does-not-work"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -132,7 +132,7 @@ let newsletterActions = [
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -246,7 +246,7 @@ class NewsletterListWelcome extends React.Component {
|
|||||||
// get segment
|
// get segment
|
||||||
segment = _.find(
|
segment = _.find(
|
||||||
mailpoetSegments,
|
mailpoetSegments,
|
||||||
seg => (Number(seg.id) === Number(newsletter.options.segment))
|
(seg) => (Number(seg.id) === Number(newsletter.options.segment))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (segment === undefined) {
|
if (segment === undefined) {
|
||||||
|
@ -37,7 +37,7 @@ const container = document.getElementById('newsletters_container');
|
|||||||
const getAutomaticEmailsRoutes = () => {
|
const getAutomaticEmailsRoutes = () => {
|
||||||
if (!window.mailpoet_automatic_emails) return null;
|
if (!window.mailpoet_automatic_emails) return null;
|
||||||
|
|
||||||
return _.map(window.mailpoet_automatic_emails, automaticEmail => ({
|
return _.map(window.mailpoet_automatic_emails, (automaticEmail) => ({
|
||||||
path: `new/${automaticEmail.slug}`,
|
path: `new/${automaticEmail.slug}`,
|
||||||
name: automaticEmail.slug,
|
name: automaticEmail.slug,
|
||||||
component: AutomaticEmailEventsList,
|
component: AutomaticEmailEventsList,
|
||||||
@ -116,7 +116,7 @@ if (container) {
|
|||||||
<HashRouter>
|
<HashRouter>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route exact path="/" render={() => <Redirect to="/standard" />} />
|
<Route exact path="/" render={() => <Redirect to="/standard" />} />
|
||||||
{routes.map(route => (
|
{routes.map((route) => (
|
||||||
<Route
|
<Route
|
||||||
key={route.path}
|
key={route.path}
|
||||||
path={route.path}
|
path={route.path}
|
||||||
|
@ -25,7 +25,7 @@ const TIME_STEP_SECONDS = 3600;
|
|||||||
const numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
|
const numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
|
||||||
|
|
||||||
const timeOfDayValues = _.object(_.map(
|
const timeOfDayValues = _.object(_.map(
|
||||||
_.times(numberOfTimeSteps, step => step * TIME_STEP_SECONDS), (seconds) => {
|
_.times(numberOfTimeSteps, (step) => step * TIME_STEP_SECONDS), (seconds) => {
|
||||||
const date = new Date(null);
|
const date = new Date(null);
|
||||||
date.setSeconds(seconds);
|
date.setSeconds(seconds);
|
||||||
const timeLabel = MailPoet.Date.format(date, { format: timeFormat, offset: 0 });
|
const timeLabel = MailPoet.Date.format(date, { format: timeFormat, offset: 0 });
|
||||||
@ -46,7 +46,7 @@ const weekDayValues = {
|
|||||||
const NUMBER_OF_DAYS_IN_MONTH = 28;
|
const NUMBER_OF_DAYS_IN_MONTH = 28;
|
||||||
const monthDayValues = _.object(
|
const monthDayValues = _.object(
|
||||||
_.map(
|
_.map(
|
||||||
_.times(NUMBER_OF_DAYS_IN_MONTH, day => day), (day) => {
|
_.times(NUMBER_OF_DAYS_IN_MONTH, (day) => day), (day) => {
|
||||||
const labels = {
|
const labels = {
|
||||||
0: MailPoet.I18n.t('first'),
|
0: MailPoet.I18n.t('first'),
|
||||||
1: MailPoet.I18n.t('second'),
|
1: MailPoet.I18n.t('second'),
|
||||||
|
@ -72,7 +72,7 @@ class NewsletterSend extends React.Component {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
getThumbnailPromise = url => (
|
getThumbnailPromise = (url) => (
|
||||||
this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url)
|
this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ class NewsletterSend extends React.Component {
|
|||||||
errorMessage = ReactStringReplace(
|
errorMessage = ReactStringReplace(
|
||||||
errorMessage,
|
errorMessage,
|
||||||
/\[link\](.*?)\[\/link\]/g,
|
/\[link\](.*?)\[\/link\]/g,
|
||||||
match => `<a href="https://account.mailpoet.com/authorization" target="_blank" rel="noopener noreferrer">${match}</a>`
|
(match) => `<a href="https://account.mailpoet.com/authorization" target="_blank" rel="noopener noreferrer">${match}</a>`
|
||||||
);
|
);
|
||||||
jQuery('#field_sender_address')
|
jQuery('#field_sender_address')
|
||||||
.parsley()
|
.parsley()
|
||||||
@ -215,7 +215,7 @@ class NewsletterSend extends React.Component {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
sendNewsletter = newsletter => MailPoet.Ajax.post(
|
sendNewsletter = (newsletter) => MailPoet.Ajax.post(
|
||||||
Hooks.applyFilters(
|
Hooks.applyFilters(
|
||||||
'mailpoet_newsletters_send_server_request_parameters',
|
'mailpoet_newsletters_send_server_request_parameters',
|
||||||
{
|
{
|
||||||
@ -267,7 +267,7 @@ class NewsletterSend extends React.Component {
|
|||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
activateNewsletter = newsletter => MailPoet.Ajax.post({
|
activateNewsletter = (newsletter) => MailPoet.Ajax.post({
|
||||||
api_version: window.mailpoet_api_version,
|
api_version: window.mailpoet_api_version,
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
action: 'setStatus',
|
action: 'setStatus',
|
||||||
@ -336,7 +336,7 @@ class NewsletterSend extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -408,7 +408,7 @@ class NewsletterSend extends React.Component {
|
|||||||
showError = (response) => {
|
showError = (response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,7 @@ class Congratulate extends React.Component {
|
|||||||
id,
|
id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.done(response => this.newsletterLoaded(response.data));
|
.done((response) => this.newsletterLoaded(response.data));
|
||||||
}
|
}
|
||||||
|
|
||||||
newsletterLoaded(newsletter) {
|
newsletterLoaded(newsletter) {
|
||||||
|
@ -39,7 +39,7 @@ let fields = [
|
|||||||
},
|
},
|
||||||
transformChangedValue: function transformChangedValue(segmentIds) {
|
transformChangedValue: function transformChangedValue(segmentIds) {
|
||||||
const allSegments = this.getItems();
|
const allSegments = this.getItems();
|
||||||
return _.map(segmentIds, id => _.find(allSegments, segment => segment.id === id));
|
return _.map(segmentIds, (id) => _.find(allSegments, (segment) => segment.id === id));
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
'data-parsley-required': true,
|
'data-parsley-required': true,
|
||||||
|
@ -137,7 +137,7 @@ let fields = [
|
|||||||
},
|
},
|
||||||
transformChangedValue: function transformChangedValue(segmentIds) {
|
transformChangedValue: function transformChangedValue(segmentIds) {
|
||||||
const allSegments = this.getItems();
|
const allSegments = this.getItems();
|
||||||
return _.map(segmentIds, id => _.find(allSegments, segment => segment.id === id));
|
return _.map(segmentIds, (id) => _.find(allSegments, (segment) => segment.id === id));
|
||||||
},
|
},
|
||||||
validation: {
|
validation: {
|
||||||
'data-parsley-required': true,
|
'data-parsley-required': true,
|
||||||
|
@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
|||||||
class TimeSelect extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
class TimeSelect extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
||||||
render() {
|
render() {
|
||||||
const options = Object.keys(this.props.timeOfDayItems).map(
|
const options = Object.keys(this.props.timeOfDayItems).map(
|
||||||
value => (
|
(value) => (
|
||||||
<option
|
<option
|
||||||
key={`option-${this.props.timeOfDayItems[value]}`}
|
key={`option-${this.props.timeOfDayItems[value]}`}
|
||||||
value={value}
|
value={value}
|
||||||
|
@ -39,8 +39,8 @@ const SendingStatus = (props) => {
|
|||||||
id: newsletterId,
|
id: newsletterId,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.done(res => setNewsletterSubject(res.data.subject))
|
.done((res) => setNewsletterSubject(res.data.subject))
|
||||||
.fail(res => MailPoet.Notice.showApiErrorNotice(res));
|
.fail((res) => MailPoet.Notice.showApiErrorNotice(res));
|
||||||
}, [newsletterId]);
|
}, [newsletterId]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -77,8 +77,8 @@ const SendingStatusListing = React.memo(({ location, params }) => (
|
|||||||
params={params}
|
params={params}
|
||||||
endpoint="sending_task_subscribers"
|
endpoint="sending_task_subscribers"
|
||||||
base_url="sending-status/:id"
|
base_url="sending-status/:id"
|
||||||
onRenderItem={item => <div><ListingItem {...item} /></div>}
|
onRenderItem={(item) => <div><ListingItem {...item} /></div>}
|
||||||
getListingItemKey={item => `${item.taskId}-${item.subscriberId}`}
|
getListingItemKey={(item) => `${item.taskId}-${item.subscriberId}`}
|
||||||
columns={columns}
|
columns={columns}
|
||||||
messages={messages}
|
messages={messages}
|
||||||
auto_refresh
|
auto_refresh
|
||||||
@ -123,7 +123,7 @@ const ListingItem = ({
|
|||||||
data: { taskId, subscriberId },
|
data: { taskId, subscriberId },
|
||||||
})
|
})
|
||||||
.done(() => window.mailpoet_listing.forceUpdate())
|
.done(() => window.mailpoet_listing.forceUpdate())
|
||||||
.fail(res => MailPoet.Notice.showApiErrorNotice(res));
|
.fail((res) => MailPoet.Notice.showApiErrorNotice(res));
|
||||||
};
|
};
|
||||||
|
|
||||||
const rowClasses = classNames(
|
const rowClasses = classNames(
|
||||||
|
@ -9,7 +9,7 @@ import Hooks from 'wp-js-hooks';
|
|||||||
import _ from 'underscore';
|
import _ from 'underscore';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
const getEditorUrl = id => `admin.php?page=mailpoet-newsletter-editor&id=${id}`;
|
const getEditorUrl = (id) => `admin.php?page=mailpoet-newsletter-editor&id=${id}`;
|
||||||
|
|
||||||
const templatesCategories = [
|
const templatesCategories = [
|
||||||
{
|
{
|
||||||
@ -88,7 +88,7 @@ class NewsletterTemplates extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -98,12 +98,12 @@ class NewsletterTemplates extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addTemplate(template) {
|
addTemplate(template) {
|
||||||
const categoriesNames = templatesCategories.map(category => category.name);
|
const categoriesNames = templatesCategories.map((category) => category.name);
|
||||||
let categories;
|
let categories;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
categories = JSON.parse(template.categories)
|
categories = JSON.parse(template.categories)
|
||||||
.filter(name => categoriesNames.indexOf(name) !== -1);
|
.filter((name) => categoriesNames.indexOf(name) !== -1);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
categories = [];
|
categories = [];
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ class NewsletterTemplates extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -173,7 +173,9 @@ class NewsletterTemplates extends React.Component {
|
|||||||
afterTemplateDelete(success, id) {
|
afterTemplateDelete(success, id) {
|
||||||
if (success) {
|
if (success) {
|
||||||
Object.keys(this.templates).forEach((category) => {
|
Object.keys(this.templates).forEach((category) => {
|
||||||
this.templates[category] = this.templates[category].filter(template => template.id !== id);
|
this.templates[category] = this.templates[category].filter(
|
||||||
|
(template) => template.id !== id
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
@ -259,7 +261,7 @@ class NewsletterTemplates extends React.Component {
|
|||||||
<Tabs
|
<Tabs
|
||||||
tabs={tabs}
|
tabs={tabs}
|
||||||
selected={this.state.selectedTab}
|
selected={this.state.selectedTab}
|
||||||
select={name => this.setState({ selectedTab: name })}
|
select={(name) => this.setState({ selectedTab: name })}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{content}
|
{content}
|
||||||
|
@ -52,7 +52,7 @@ class ImportTemplate extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class TemplateBox extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ class TemplateBox extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ class NewsletterTypes extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ class NewsletterTypes extends React.Component {
|
|||||||
<Breadcrumb step="type" />
|
<Breadcrumb step="type" />
|
||||||
|
|
||||||
<ul className="mailpoet_boxes mailpoet_boxes_types">
|
<ul className="mailpoet_boxes mailpoet_boxes_types">
|
||||||
{types.map(type => (
|
{types.map((type) => (
|
||||||
<li key={type.slug} data-type={type.slug} className="mailpoet_newsletter_types">
|
<li key={type.slug} data-type={type.slug} className="mailpoet_newsletter_types">
|
||||||
<div className="mailpoet_thumbnail">
|
<div className="mailpoet_thumbnail">
|
||||||
{type.thumbnailImage ? <img src={type.thumbnailImage} alt="" /> : null}
|
{type.thumbnailImage ? <img src={type.thumbnailImage} alt="" /> : null}
|
||||||
|
@ -49,7 +49,7 @@ class NewsletterNotification extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -59,13 +59,13 @@ class NotificationScheduling extends React.Component {
|
|||||||
this.handleValueChanges(changes);
|
this.handleValueChanges(changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleTimeOfDayChange = event => this.handleValueChanges({ timeOfDay: event.target.value });
|
handleTimeOfDayChange = (event) => this.handleValueChanges({ timeOfDay: event.target.value });
|
||||||
|
|
||||||
handleWeekDayChange = event => this.handleValueChanges({ weekDay: event.target.value });
|
handleWeekDayChange = (event) => this.handleValueChanges({ weekDay: event.target.value });
|
||||||
|
|
||||||
handleMonthDayChange = event => this.handleValueChanges({ monthDay: event.target.value });
|
handleMonthDayChange = (event) => this.handleValueChanges({ monthDay: event.target.value });
|
||||||
|
|
||||||
handleNthWeekDayChange = event => this.handleValueChanges({ nthWeekDay: event.target.value });
|
handleNthWeekDayChange = (event) => this.handleValueChanges({ nthWeekDay: event.target.value });
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const value = this.getCurrentValue();
|
const value = this.getCurrentValue();
|
||||||
|
@ -25,7 +25,7 @@ class NewsletterStandard extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import { withRouter } from 'react-router-dom';
|
|||||||
const availableRoles = window.mailpoet_roles || {};
|
const availableRoles = window.mailpoet_roles || {};
|
||||||
const availableSegments = _.filter(
|
const availableSegments = _.filter(
|
||||||
window.mailpoet_segments || [],
|
window.mailpoet_segments || [],
|
||||||
segment => segment.type === 'default'
|
(segment) => segment.type === 'default'
|
||||||
);
|
);
|
||||||
|
|
||||||
const events = {
|
const events = {
|
||||||
@ -66,15 +66,15 @@ class WelcomeScheduling extends React.Component {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
handleEventChange = event => this.handleValueChange('event', event.target.value);
|
handleEventChange = (event) => this.handleValueChange('event', event.target.value);
|
||||||
|
|
||||||
handleSegmentChange = event => this.handleValueChange('segment', event.target.value);
|
handleSegmentChange = (event) => this.handleValueChange('segment', event.target.value);
|
||||||
|
|
||||||
handleRoleChange = event => this.handleValueChange('role', event.target.value);
|
handleRoleChange = (event) => this.handleValueChange('role', event.target.value);
|
||||||
|
|
||||||
handleAfterTimeNumberChange = event => this.handleValueChange('afterTimeNumber', event.target.value);
|
handleAfterTimeNumberChange = (event) => this.handleValueChange('afterTimeNumber', event.target.value);
|
||||||
|
|
||||||
handleAfterTimeTypeChange = event => this.handleValueChange('afterTimeType', event.target.value);
|
handleAfterTimeTypeChange = (event) => this.handleValueChange('afterTimeType', event.target.value);
|
||||||
|
|
||||||
handleNext = () => {
|
handleNext = () => {
|
||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
@ -90,7 +90,7 @@ class WelcomeScheduling extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ class NewsletterWelcome extends React.Component {
|
|||||||
super(props);
|
super(props);
|
||||||
let availableSegments = window.mailpoet_segments || [];
|
let availableSegments = window.mailpoet_segments || [];
|
||||||
let defaultSegment = 1;
|
let defaultSegment = 1;
|
||||||
availableSegments = availableSegments.filter(segment => segment.type === 'default');
|
availableSegments = availableSegments.filter((segment) => segment.type === 'default');
|
||||||
|
|
||||||
if (_.size(availableSegments) > 0) {
|
if (_.size(availableSegments) > 0) {
|
||||||
defaultSegment = _.first(availableSegments).id;
|
defaultSegment = _.first(availableSegments).id;
|
||||||
@ -57,7 +57,7 @@ class NewsletterWelcome extends React.Component {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import Notice from 'notices/notice.jsx';
|
|||||||
|
|
||||||
const APIErrorsNotice = ({ errors }) => {
|
const APIErrorsNotice = ({ errors }) => {
|
||||||
if (errors.length < 1) return null;
|
if (errors.length < 1) return null;
|
||||||
return <Notice type="error">{errors.map(err => <p key={err.message}>{err.message}</p>)}</Notice>;
|
return <Notice type="error">{errors.map((err) => <p key={err.message}>{err.message}</p>)}</Notice>;
|
||||||
};
|
};
|
||||||
APIErrorsNotice.propTypes = {
|
APIErrorsNotice.propTypes = {
|
||||||
errors: PropTypes.arrayOf(PropTypes.shape({
|
errors: PropTypes.arrayOf(PropTypes.shape({
|
||||||
|
@ -65,7 +65,7 @@ const useNpsPoll = () => {
|
|||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
const withNpsPoll = Component => (props) => {
|
const withNpsPoll = (Component) => (props) => {
|
||||||
useNpsPoll();
|
useNpsPoll();
|
||||||
return <Component {...props} />;
|
return <Component {...props} />;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const getSettingsKey = pollType => `show_poll_success_delivery_${pollType}`;
|
const getSettingsKey = (pollType) => `show_poll_success_delivery_${pollType}`;
|
||||||
|
|
||||||
const initTypeformScript = () => {
|
const initTypeformScript = () => {
|
||||||
if (!document.getElementById('typef_orm')) {
|
if (!document.getElementById('typef_orm')) {
|
||||||
|
@ -30,7 +30,7 @@ const messages = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const SegmentForm = props => (
|
const SegmentForm = (props) => (
|
||||||
<div>
|
<div>
|
||||||
<h1 className="title">
|
<h1 className="title">
|
||||||
{MailPoet.I18n.t('segment')}
|
{MailPoet.I18n.t('segment')}
|
||||||
|
@ -6,9 +6,9 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import Listing from 'listing/listing.jsx';
|
import Listing from 'listing/listing.jsx';
|
||||||
|
|
||||||
const isWPUsersSegment = segment => segment.type === 'wp_users';
|
const isWPUsersSegment = (segment) => segment.type === 'wp_users';
|
||||||
const isWooCommerceCustomersSegment = segment => segment.type === 'woocommerce_users';
|
const isWooCommerceCustomersSegment = (segment) => segment.type === 'woocommerce_users';
|
||||||
const isSpecialSegment = segmt => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt);
|
const isSpecialSegment = (segmt) => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt);
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
@ -132,7 +132,7 @@ const itemActions = [
|
|||||||
refresh();
|
refresh();
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
@ -179,7 +179,7 @@ const itemActions = [
|
|||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -58,8 +58,8 @@ const fields = [
|
|||||||
}
|
}
|
||||||
|
|
||||||
return subscriber.subscriptions
|
return subscriber.subscriptions
|
||||||
.filter(subscription => subscription.status === 'subscribed')
|
.filter((subscription) => subscription.status === 'subscribed')
|
||||||
.map(subscription => subscription.segment_id);
|
.map((subscription) => subscription.segment_id);
|
||||||
},
|
},
|
||||||
filter: function filter(segment) {
|
filter: function filter(segment) {
|
||||||
return (!segment.deleted_at && segment.type === 'default');
|
return (!segment.deleted_at && segment.type === 'default');
|
||||||
|
@ -23,7 +23,7 @@ const ImportSubscribers = () => {
|
|||||||
<Switch>
|
<Switch>
|
||||||
<Route
|
<Route
|
||||||
path="/step_method_selection"
|
path="/step_method_selection"
|
||||||
render={props => (
|
render={(props) => (
|
||||||
<StepMethodSelection
|
<StepMethodSelection
|
||||||
{...props}
|
{...props}
|
||||||
setStepMethodSelectionData={setStepMethodSelectionData}
|
setStepMethodSelectionData={setStepMethodSelectionData}
|
||||||
@ -33,7 +33,7 @@ const ImportSubscribers = () => {
|
|||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path="/step_input_validation"
|
path="/step_input_validation"
|
||||||
render={props => (
|
render={(props) => (
|
||||||
<StepInputValidation
|
<StepInputValidation
|
||||||
{...props}
|
{...props}
|
||||||
stepMethodSelectionData={stepMethodSelectionData}
|
stepMethodSelectionData={stepMethodSelectionData}
|
||||||
@ -42,7 +42,7 @@ const ImportSubscribers = () => {
|
|||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path="/step_data_manipulation"
|
path="/step_data_manipulation"
|
||||||
render={props => (
|
render={(props) => (
|
||||||
<StepDataManipulation
|
<StepDataManipulation
|
||||||
{...props}
|
{...props}
|
||||||
stepMethodSelectionData={stepMethodSelectionData}
|
stepMethodSelectionData={stepMethodSelectionData}
|
||||||
@ -53,7 +53,7 @@ const ImportSubscribers = () => {
|
|||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path="/step_results"
|
path="/step_results"
|
||||||
render={props => (
|
render={(props) => (
|
||||||
<StepResults
|
<StepResults
|
||||||
{...props}
|
{...props}
|
||||||
errors={stepDataManipulationData.errors}
|
errors={stepDataManipulationData.errors}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
import jQuery from 'jquery';
|
import jQuery from 'jquery';
|
||||||
import _ from 'underscore';
|
import _ from 'underscore';
|
||||||
|
|
||||||
const isRoleEmail = email => window.roleBasedEmails.findIndex(element => email.startsWith(`${element}@`)) >= 0;
|
const isRoleEmail = (email) => window.roleBasedEmails.findIndex((element) => email.startsWith(`${element}@`)) >= 0;
|
||||||
|
|
||||||
const detectAndCleanupEmail = (emailString) => {
|
const detectAndCleanupEmail = (emailString) => {
|
||||||
let test;
|
let test;
|
||||||
@ -53,7 +53,7 @@ function sanitizeCSVData(csvData) {
|
|||||||
let rowData;
|
let rowData;
|
||||||
let rowColumnCount;
|
let rowColumnCount;
|
||||||
Object.keys(csvData).forEach((rowCount) => {
|
Object.keys(csvData).forEach((rowCount) => {
|
||||||
rowData = csvData[rowCount].map(el => el.trim());
|
rowData = csvData[rowCount].map((el) => el.trim());
|
||||||
rowColumnCount = rowData.length;
|
rowColumnCount = rowData.length;
|
||||||
// set the number of row elements based on the first non-empty row
|
// set the number of row elements based on the first non-empty row
|
||||||
if (columnCount === null) {
|
if (columnCount === null) {
|
||||||
|
@ -36,7 +36,7 @@ export default (onCreateSegment) => {
|
|||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.hide();
|
MailPoet.Notice.hide();
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ positionAfter: '#new_segment_name' }
|
{ positionAfter: '#new_segment_name' }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
|
|||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -89,9 +89,9 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
|
|||||||
importResult.segments = _.map(
|
importResult.segments = _.map(
|
||||||
_.filter(
|
_.filter(
|
||||||
importResult.segments,
|
importResult.segments,
|
||||||
segment => segments.includes(segment.id)
|
(segment) => segments.includes(segment.id)
|
||||||
),
|
),
|
||||||
data => data.name
|
(data) => data.name
|
||||||
);
|
);
|
||||||
onImportComplete(importResult);
|
onImportComplete(importResult);
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ export default () => {
|
|||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ positionAfter: '#field_name' }
|
{ positionAfter: '#field_name' }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ export default (subscribers, header) => {
|
|||||||
columnId = 'email';
|
columnId = 'email';
|
||||||
} else if (header) {
|
} else if (header) {
|
||||||
headerName = header[i];
|
headerName = header[i];
|
||||||
headerNameMatch = window.mailpoetColumns.map(el => el.name).indexOf(headerName);
|
headerNameMatch = window.mailpoetColumns.map((el) => el.name).indexOf(headerName);
|
||||||
// set column type using header
|
// set column type using header
|
||||||
if (headerNameMatch !== -1) {
|
if (headerNameMatch !== -1) {
|
||||||
columnId = window.mailpoetColumns[headerNameMatch].id;
|
columnId = window.mailpoetColumns[headerNameMatch].id;
|
||||||
|
@ -48,7 +48,7 @@ function Header({ header }) {
|
|||||||
return (
|
return (
|
||||||
<tr className="mailpoet_header">
|
<tr className="mailpoet_header">
|
||||||
<td />
|
<td />
|
||||||
{header.map(headerName => <td key={headerName}>{headerName}</td>)}
|
{header.map((headerName) => <td key={headerName}>{headerName}</td>)}
|
||||||
</tr>
|
</tr>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -30,11 +30,11 @@ const MethodMailChimp = ({ onFinish }) => {
|
|||||||
.always(() => {
|
.always(() => {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
})
|
})
|
||||||
.done(response => setMailChimpLoadedLists(response.data))
|
.done((response) => setMailChimpLoadedLists(response.data))
|
||||||
.fail((response) => {
|
.fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -55,11 +55,11 @@ const MethodMailChimp = ({ onFinish }) => {
|
|||||||
.always(() => {
|
.always(() => {
|
||||||
MailPoet.Modal.loading(false);
|
MailPoet.Modal.loading(false);
|
||||||
})
|
})
|
||||||
.done(response => onFinish(response.data))
|
.done((response) => onFinish(response.data))
|
||||||
.fail((response) => {
|
.fail((response) => {
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ const MethodMailChimp = ({ onFinish }) => {
|
|||||||
forceSelect2: true,
|
forceSelect2: true,
|
||||||
values: mailChimpLoadedLists,
|
values: mailChimpLoadedLists,
|
||||||
}}
|
}}
|
||||||
onValueChange={e => setSelectedLists(e.target.value)}
|
onValueChange={(e) => setSelectedLists(e.target.value)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -27,7 +27,7 @@ const MethodPaste = ({
|
|||||||
{ReactStringReplace(
|
{ReactStringReplace(
|
||||||
MailPoet.I18n.t('pasteDescription'),
|
MailPoet.I18n.t('pasteDescription'),
|
||||||
/\[link\](.*?)\[\/link\]/,
|
/\[link\](.*?)\[\/link\]/,
|
||||||
match => (
|
(match) => (
|
||||||
<a
|
<a
|
||||||
href={`${kbLink}`}
|
href={`${kbLink}`}
|
||||||
key="kb-link"
|
key="kb-link"
|
||||||
|
@ -28,7 +28,7 @@ const MethodUpload = ({ onValueChange, canFinish, onFinish }) => {
|
|||||||
{ReactStringReplace(
|
{ReactStringReplace(
|
||||||
MailPoet.I18n.t('pasteDescription'),
|
MailPoet.I18n.t('pasteDescription'),
|
||||||
/\[link\](.*?)\[\/link\]/,
|
/\[link\](.*?)\[\/link\]/,
|
||||||
match => (
|
(match) => (
|
||||||
<a
|
<a
|
||||||
href={`${kbLink}`}
|
href={`${kbLink}`}
|
||||||
key="kb-link"
|
key="kb-link"
|
||||||
|
@ -10,7 +10,7 @@ function RevenueTrackingPermission() {
|
|||||||
MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
|
MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
const updateSettings = data => MailPoet.Ajax.post({
|
const updateSettings = (data) => MailPoet.Ajax.post({
|
||||||
api_version: window.mailpoet_api_version,
|
api_version: window.mailpoet_api_version,
|
||||||
endpoint: 'settings',
|
endpoint: 'settings',
|
||||||
action: 'set',
|
action: 'set',
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const WelcomeWizardEmailCourseStep = props => (
|
const WelcomeWizardEmailCourseStep = (props) => (
|
||||||
<div className="mailpoet_welcome_wizard_step_content">
|
<div className="mailpoet_welcome_wizard_step_content">
|
||||||
<h1>{MailPoet.I18n.t('welcomeWizardEmailCourseTitle')}</h1>
|
<h1>{MailPoet.I18n.t('welcomeWizardEmailCourseTitle')}</h1>
|
||||||
<p>{MailPoet.I18n.t('welcomeWizardEmailCourseText')}</p>
|
<p>{MailPoet.I18n.t('welcomeWizardEmailCourseText')}</p>
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const WelcomeWizardMigratedUserStep = props => (
|
const WelcomeWizardMigratedUserStep = (props) => (
|
||||||
<div className="mailpoet_welcome_wizard_step_content">
|
<div className="mailpoet_welcome_wizard_step_content">
|
||||||
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
||||||
<p>{MailPoet.I18n.t('welcomeWizardSenderMigratedUserText')}</p>
|
<p>{MailPoet.I18n.t('welcomeWizardSenderMigratedUserText')}</p>
|
||||||
|
@ -29,7 +29,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
|
|||||||
type="radio"
|
type="radio"
|
||||||
name="import_type"
|
name="import_type"
|
||||||
checked={allowed === 'true'}
|
checked={allowed === 'true'}
|
||||||
onChange={e => setAllowed(e.target.value)}
|
onChange={(e) => setAllowed(e.target.value)}
|
||||||
value="true"
|
value="true"
|
||||||
/>
|
/>
|
||||||
{MailPoet.I18n.t('revenueTrackingAllow')}
|
{MailPoet.I18n.t('revenueTrackingAllow')}
|
||||||
@ -40,7 +40,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
|
|||||||
type="radio"
|
type="radio"
|
||||||
name="import_type"
|
name="import_type"
|
||||||
checked={allowed === 'false'}
|
checked={allowed === 'false'}
|
||||||
onChange={e => setAllowed(e.target.value)}
|
onChange={(e) => setAllowed(e.target.value)}
|
||||||
value="false"
|
value="false"
|
||||||
/>
|
/>
|
||||||
{MailPoet.I18n.t('revenueTrackingDontAllow')}
|
{MailPoet.I18n.t('revenueTrackingDontAllow')}
|
||||||
|
@ -3,7 +3,7 @@ import React from 'react';
|
|||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
import jQuery from 'jquery';
|
import jQuery from 'jquery';
|
||||||
|
|
||||||
const WelcomeWizardSenderStep = props => (
|
const WelcomeWizardSenderStep = (props) => (
|
||||||
<div className="mailpoet_welcome_wizard_step_content">
|
<div className="mailpoet_welcome_wizard_step_content">
|
||||||
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
||||||
<p>{MailPoet.I18n.t('welcomeWizardSenderText')}</p>
|
<p>{MailPoet.I18n.t('welcomeWizardSenderText')}</p>
|
||||||
@ -25,7 +25,7 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
placeholder="John Doe"
|
placeholder="John Doe"
|
||||||
value={props.sender ? props.sender.name : ''}
|
value={props.sender ? props.sender.name : ''}
|
||||||
data-parsley-required
|
data-parsley-required
|
||||||
onChange={e => props.update_sender({ name: e.target.value })}
|
onChange={(e) => props.update_sender({ name: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
<label htmlFor="senderAddress">
|
<label htmlFor="senderAddress">
|
||||||
@ -38,7 +38,7 @@ const WelcomeWizardSenderStep = props => (
|
|||||||
value={props.sender ? props.sender.address : ''}
|
value={props.sender ? props.sender.address : ''}
|
||||||
data-parsley-required
|
data-parsley-required
|
||||||
data-parsley-type="email"
|
data-parsley-type="email"
|
||||||
onChange={e => props.update_sender({ address: e.target.value })}
|
onChange={(e) => props.update_sender({ address: e.target.value })}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
<div className="mailpoet_welcome_wizard_step_controls">
|
<div className="mailpoet_welcome_wizard_step_controls">
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import SteppedProgressBar from '../../common/stepped_progess_bar.jsx';
|
import SteppedProgressBar from '../../common/stepped_progess_bar.jsx';
|
||||||
|
|
||||||
const WelcomeWizardStepLayout = props => (
|
const WelcomeWizardStepLayout = (props) => (
|
||||||
<>
|
<>
|
||||||
<div className="mailpoet_welcome_wizard_header">
|
<div className="mailpoet_welcome_wizard_header">
|
||||||
<img src={window.mailpoet_logo_url} width="200" height="87" alt="MailPoet logo" />
|
<img src={window.mailpoet_logo_url} width="200" height="87" alt="MailPoet logo" />
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const WelcomeWizardUsageTrackingStep = props => (
|
const WelcomeWizardUsageTrackingStep = (props) => (
|
||||||
<div className="mailpoet_welcome_wizard_step_content">
|
<div className="mailpoet_welcome_wizard_step_content">
|
||||||
<h1>{MailPoet.I18n.t('welcomeWizardUsageTrackingStepTitle')}</h1>
|
<h1>{MailPoet.I18n.t('welcomeWizardUsageTrackingStepTitle')}</h1>
|
||||||
<p>{MailPoet.I18n.t('welcomeWizardTrackingText')}</p>
|
<p>{MailPoet.I18n.t('welcomeWizardTrackingText')}</p>
|
||||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import MailPoet from 'mailpoet';
|
import MailPoet from 'mailpoet';
|
||||||
|
|
||||||
const WelcomeWizardWooCommerceStep = props => (
|
const WelcomeWizardWooCommerceStep = (props) => (
|
||||||
<div className="mailpoet_welcome_wizard_step_content">
|
<div className="mailpoet_welcome_wizard_step_content">
|
||||||
<h1>{MailPoet.I18n.t('welcomeWizardWooCommerceStepTitle')}</h1>
|
<h1>{MailPoet.I18n.t('welcomeWizardWooCommerceStepTitle')}</h1>
|
||||||
<p>
|
<p>
|
||||||
|
@ -48,7 +48,7 @@ const WelcomeWizardStepsController = (props) => {
|
|||||||
setLoading(false);
|
setLoading(false);
|
||||||
if (response.errors.length > 0) {
|
if (response.errors.length > 0) {
|
||||||
MailPoet.Notice.error(
|
MailPoet.Notice.error(
|
||||||
response.errors.map(error => error.message),
|
response.errors.map((error) => error.message),
|
||||||
{ scroll: true }
|
{ scroll: true }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user