Fix space-before-function-paren eslint rule

[MAILPOET-985]
This commit is contained in:
Pavel Dohnal
2017-07-05 09:31:46 +01:00
parent 6dc1bf4e95
commit f39cbe6b55
37 changed files with 374 additions and 375 deletions

View File

@ -42,7 +42,6 @@
"comma-dangle": 0, "comma-dangle": 0,
"prefer-arrow-callback": 0, "prefer-arrow-callback": 0,
"func-names": 0, "func-names": 0,
"space-before-function-paren": 0,
"object-shorthand": 0, "object-shorthand": 0,
"no-bitwise": 0, "no-bitwise": 0,
"arrow-body-style": 0, "arrow-body-style": 0,

View File

@ -1,15 +1,15 @@
define([ define([
'react' 'react'
], ],
function( function (
React React
) { ) {
const FormFieldCheckbox = React.createClass({ const FormFieldCheckbox = React.createClass({
onValueChange: function(e) { onValueChange: function (e) {
e.target.value = this.refs.checkbox.checked ? '1' : '0'; e.target.value = this.refs.checkbox.checked ? '1' : '0';
return this.props.onValueChange(e); return this.props.onValueChange(e);
}, },
render: function() { render: function () {
if (this.props.field.values === undefined) { if (this.props.field.values === undefined) {
return false; return false;
} }

View File

@ -1,7 +1,7 @@
define([ define([
'react', 'react',
'moment', 'moment',
], function( ], function (
React, React,
Moment Moment
) { ) {

View File

@ -8,7 +8,7 @@ define([
'form/fields/selection.jsx', 'form/fields/selection.jsx',
'form/fields/date.jsx', 'form/fields/date.jsx',
], ],
function( function (
React, React,
FormFieldText, FormFieldText,
FormFieldTextarea, FormFieldTextarea,
@ -19,7 +19,7 @@ function(
FormFieldDate FormFieldDate
) { ) {
var FormField = React.createClass({ var FormField = React.createClass({
renderField: function(data, inline = false) { renderField: function (data, inline = false) {
var description = false; var description = false;
if(data.field.description) { if(data.field.description) {
description = ( description = (
@ -83,11 +83,11 @@ function(
); );
} }
}, },
render: function() { render: function () {
var field = false; var field = false;
if(this.props.field['fields'] !== undefined) { if(this.props.field['fields'] !== undefined) {
field = this.props.field.fields.map(function(subfield, index) { field = this.props.field.fields.map(function (subfield, index) {
return this.renderField({ return this.renderField({
index: index, index: index,
field: subfield, field: subfield,

View File

@ -1,11 +1,11 @@
define([ define([
'react' 'react'
], ],
function( function (
React React
) { ) {
const FormFieldRadio = React.createClass({ const FormFieldRadio = React.createClass({
render: function() { render: function () {
if (this.props.field.values === undefined) { if (this.props.field.values === undefined) {
return false; return false;
} }

View File

@ -4,33 +4,33 @@ define([
'jquery', 'jquery',
'select2' 'select2'
], ],
function( function (
React, React,
ReactDOM, ReactDOM,
jQuery jQuery
) { ) {
var Selection = React.createClass({ var Selection = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
items: [], items: [],
select2: false select2: false
}; };
}, },
componentWillMount: function() { componentWillMount: function () {
this.loadCachedItems(); this.loadCachedItems();
}, },
allowMultipleValues: function() { allowMultipleValues: function () {
return (this.props.field.multiple === true); return (this.props.field.multiple === true);
}, },
isSelect2Initialized: function() { isSelect2Initialized: function () {
return (this.state.select2 === true); return (this.state.select2 === true);
}, },
componentDidMount: function() { componentDidMount: function () {
if(this.allowMultipleValues()) { if(this.allowMultipleValues()) {
this.setupSelect2(); this.setupSelect2();
} }
}, },
componentDidUpdate: function(prevProps, prevState) { componentDidUpdate: function (prevProps, prevState) {
if( if(
(this.props.item !== undefined && prevProps.item !== undefined) (this.props.item !== undefined && prevProps.item !== undefined)
&& (this.props.item.id !== prevProps.item.id) && (this.props.item.id !== prevProps.item.id)
@ -40,24 +40,24 @@ function(
.trigger('change'); .trigger('change');
} }
}, },
componentWillUnmount: function() { componentWillUnmount: function () {
if(this.allowMultipleValues()) { if(this.allowMultipleValues()) {
this.destroySelect2(); this.destroySelect2();
} }
}, },
destroySelect2: function() { destroySelect2: function () {
if(this.isSelect2Initialized()) { if(this.isSelect2Initialized()) {
jQuery('#'+this.refs.select.id).select2('destroy'); jQuery('#'+this.refs.select.id).select2('destroy');
} }
}, },
setupSelect2: function() { setupSelect2: function () {
if(this.isSelect2Initialized()) { if(this.isSelect2Initialized()) {
return; return;
} }
var select2 = jQuery('#'+this.refs.select.id).select2({ var select2 = jQuery('#'+this.refs.select.id).select2({
width: (this.props.width || ''), width: (this.props.width || ''),
templateResult: function(item) { templateResult: function (item) {
if(item.element && item.element.selected) { if(item.element && item.element.selected) {
return null; return null;
} else { } else {
@ -71,10 +71,10 @@ function(
}); });
var hasRemoved = false; var hasRemoved = false;
select2.on('select2:unselecting', function(e) { select2.on('select2:unselecting', function (e) {
hasRemoved = true; hasRemoved = true;
}); });
select2.on('select2:opening', function(e) { select2.on('select2:opening', function (e) {
if(hasRemoved === true) { if(hasRemoved === true) {
hasRemoved = false; hasRemoved = false;
e.preventDefault(); e.preventDefault();
@ -85,13 +85,13 @@ function(
this.setState({ select2: true }); this.setState({ select2: true });
}, },
getSelectedValues: function() { getSelectedValues: function () {
if(this.props.field['selected'] !== undefined) { if(this.props.field['selected'] !== undefined) {
return this.props.field['selected'](this.props.item); return this.props.field['selected'](this.props.item);
} else if(this.props.item !== undefined && this.props.field.name !== undefined) { } else if(this.props.item !== undefined && this.props.field.name !== undefined) {
if (this.allowMultipleValues()) { if (this.allowMultipleValues()) {
if (Array.isArray(this.props.item[this.props.field.name])) { if (Array.isArray(this.props.item[this.props.field.name])) {
return this.props.item[this.props.field.name].map(function(item) { return this.props.item[this.props.field.name].map(function (item) {
return item.id; return item.id;
}); });
} }
@ -101,7 +101,7 @@ function(
} }
return null; return null;
}, },
loadCachedItems: function() { loadCachedItems: function () {
if(typeof(window['mailpoet_'+this.props.field.endpoint]) !== 'undefined') { if(typeof(window['mailpoet_'+this.props.field.endpoint]) !== 'undefined') {
var items = window['mailpoet_'+this.props.field.endpoint]; var items = window['mailpoet_'+this.props.field.endpoint];
@ -115,7 +115,7 @@ function(
}); });
} }
}, },
handleChange: function(e) { handleChange: function (e) {
if(this.props.onValueChange !== undefined) { if(this.props.onValueChange !== undefined) {
if(this.props.field.multiple) { if(this.props.field.multiple) {
value = jQuery('#'+this.refs.select.id).val(); value = jQuery('#'+this.refs.select.id).val();
@ -131,19 +131,19 @@ function(
}); });
} }
}, },
getLabel: function(item) { getLabel: function (item) {
if(this.props.field['getLabel'] !== undefined) { if(this.props.field['getLabel'] !== undefined) {
return this.props.field.getLabel(item, this.props.item); return this.props.field.getLabel(item, this.props.item);
} }
return item.name; return item.name;
}, },
getSearchLabel: function(item) { getSearchLabel: function (item) {
if(this.props.field['getSearchLabel'] !== undefined) { if(this.props.field['getSearchLabel'] !== undefined) {
return this.props.field.getSearchLabel(item, this.props.item); return this.props.field.getSearchLabel(item, this.props.item);
} }
return null; return null;
}, },
getValue: function(item) { getValue: function (item) {
if(this.props.field['getValue'] !== undefined) { if(this.props.field['getValue'] !== undefined) {
return this.props.field.getValue(item, this.props.item); return this.props.field.getValue(item, this.props.item);
} }
@ -152,14 +152,14 @@ function(
// When it's impossible to represent the desired value in DOM, // When it's impossible to represent the desired value in DOM,
// this function may be used to transform the placeholder value into // this function may be used to transform the placeholder value into
// desired value. // desired value.
transformChangedValue: function(value) { transformChangedValue: function (value) {
if(typeof this.props.field['transformChangedValue'] === 'function') { if(typeof this.props.field['transformChangedValue'] === 'function') {
return this.props.field.transformChangedValue.call(this, value); return this.props.field.transformChangedValue.call(this, value);
} else { } else {
return value; return value;
} }
}, },
render: function() { render: function () {
const options = this.state.items.map((item, index) => { const options = this.state.items.map((item, index) => {
let label = this.getLabel(item); let label = this.getLabel(item);
let searchLabel = this.getSearchLabel(item); let searchLabel = this.getSearchLabel(item);

View File

@ -1,11 +1,11 @@
define([ define([
'react' 'react'
], ],
function( function (
React React
) { ) {
var FormFieldTextarea = React.createClass({ var FormFieldTextarea = React.createClass({
render: function() { render: function () {
return ( return (
<textarea <textarea
type="text" type="text"

View File

@ -6,7 +6,7 @@ define(
'react-router', 'react-router',
'form/fields/field.jsx' 'form/fields/field.jsx'
], ],
function( function (
React, React,
MailPoet, MailPoet,
classNames, classNames,
@ -18,25 +18,25 @@ define(
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
getDefaultProps: function() { getDefaultProps: function () {
return { return {
params: {}, params: {},
}; };
}, },
getInitialState: function() { getInitialState: function () {
return { return {
loading: false, loading: false,
errors: [], errors: [],
item: {} item: {}
}; };
}, },
getValues: function() { getValues: function () {
return this.props.item ? this.props.item : this.state.item; return this.props.item ? this.props.item : this.state.item;
}, },
getErrors: function() { getErrors: function () {
return this.props.errors ? this.props.errors : this.state.errors; return this.props.errors ? this.props.errors : this.state.errors;
}, },
componentDidMount: function() { componentDidMount: function () {
if(this.isMounted()) { if(this.isMounted()) {
if(this.props.params.id !== undefined) { if(this.props.params.id !== undefined) {
this.loadItem(this.props.params.id); this.loadItem(this.props.params.id);
@ -47,7 +47,7 @@ define(
} }
} }
}, },
componentWillReceiveProps: function(props) { componentWillReceiveProps: function (props) {
if(props.params.id === undefined) { if(props.params.id === undefined) {
this.setState({ this.setState({
loading: false, loading: false,
@ -60,7 +60,7 @@ define(
this.loadItem(props.params.id); this.loadItem(props.params.id);
} }
}, },
loadItem: function(id) { loadItem: function (id) {
this.setState({ loading: true }); this.setState({ loading: true });
MailPoet.Ajax.post({ MailPoet.Ajax.post({
@ -79,12 +79,12 @@ define(
this.setState({ this.setState({
loading: false, loading: false,
item: {} item: {}
}, function() { }, function () {
this.context.router.push('/new'); this.context.router.push('/new');
}); });
}); });
}, },
handleSubmit: function(e) { handleSubmit: function (e) {
e.preventDefault(); e.preventDefault();
// handle validation // handle validation
@ -98,9 +98,9 @@ define(
// only get values from displayed fields // only get values from displayed fields
var item = {}; var item = {};
this.props.fields.map(function(field) { this.props.fields.map(function (field) {
if(field['fields'] !== undefined) { if(field['fields'] !== undefined) {
field.fields.map(function(subfield) { field.fields.map(function (subfield) {
item[subfield.name] = this.state.item[subfield.name]; item[subfield.name] = this.state.item[subfield.name];
}.bind(this)); }.bind(this));
} else { } else {
@ -137,7 +137,7 @@ define(
} }
}); });
}, },
handleValueChange: function(e) { handleValueChange: function (e) {
if (this.props.onChange) { if (this.props.onChange) {
return this.props.onChange(e); return this.props.onChange(e);
} else { } else {
@ -152,9 +152,9 @@ define(
return true; return true;
} }
}, },
render: function() { render: function () {
if(this.getErrors() !== undefined) { if(this.getErrors() !== undefined) {
var errors = this.getErrors().map(function(error, index) { var errors = this.getErrors().map(function (error, index) {
return ( return (
<p key={ 'error-'+index } className="mailpoet_error"> <p key={ 'error-'+index } className="mailpoet_error">
{ error.message } { error.message }
@ -179,7 +179,7 @@ define(
afterFormContent = this.props.afterFormContent(this.getValues()); afterFormContent = this.props.afterFormContent(this.getValues());
} }
var fields = this.props.fields.map(function(field, i) { var fields = this.props.fields.map(function (field, i) {
return ( return (
<FormField <FormField
field={ field } field={ field }

View File

@ -86,7 +86,7 @@ const item_actions = [
{ {
name: 'edit', name: 'edit',
label: MailPoet.I18n.t('edit'), label: MailPoet.I18n.t('edit'),
link: function(item) { link: function (item) {
return ( return (
<a href={ `admin.php?page=mailpoet-form-editor&id=${item.id}` }>{MailPoet.I18n.t('edit')}</a> <a href={ `admin.php?page=mailpoet-form-editor&id=${item.id}` }>{MailPoet.I18n.t('edit')}</a>
); );
@ -95,7 +95,7 @@ const item_actions = [
{ {
name: 'duplicate', name: 'duplicate',
label: MailPoet.I18n.t('duplicate'), label: MailPoet.I18n.t('duplicate'),
onClick: function(item, refresh) { onClick: function (item, refresh) {
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'forms', endpoint: 'forms',
@ -111,7 +111,7 @@ const item_actions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
@ -134,7 +134,7 @@ const FormList = React.createClass({
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
@ -147,9 +147,9 @@ const FormList = React.createClass({
'has-row-actions' 'has-row-actions'
); );
let segments = mailpoet_segments.filter(function(segment) { let segments = mailpoet_segments.filter(function (segment) {
return (jQuery.inArray(segment.id, form.segments) !== -1); return (jQuery.inArray(segment.id, form.segments) !== -1);
}).map(function(segment) { }).map(function (segment) {
return segment.name; return segment.name;
}).join(', '); }).join(', ');

View File

@ -2,22 +2,22 @@ define([
'react', 'react',
'mailpoet' 'mailpoet'
], ],
function( function (
React, React,
MailPoet MailPoet
) { ) {
var ListingBulkActions = React.createClass({ var ListingBulkActions = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
action: false, action: false,
extra: false extra: false
}; };
}, },
handleChangeAction: function(e) { handleChangeAction: function (e) {
this.setState({ this.setState({
action: e.target.value, action: e.target.value,
extra: false extra: false
}, function() { }, function () {
var action = this.getSelectedAction(); var action = this.getSelectedAction();
// action on select callback // action on select callback
@ -28,7 +28,7 @@ function(
} }
}.bind(this)); }.bind(this));
}, },
handleApplyAction: function(e) { handleApplyAction: function (e) {
e.preventDefault(); e.preventDefault();
var action = this.getSelectedAction(); var action = this.getSelectedAction();
@ -47,7 +47,7 @@ function(
data.action = this.state.action; data.action = this.state.action;
var onSuccess = function() {}; var onSuccess = function () {};
if(action['onSuccess'] !== undefined) { if(action['onSuccess'] !== undefined) {
onSuccess = action.onSuccess; onSuccess = action.onSuccess;
} }
@ -64,10 +64,10 @@ function(
extra: false extra: false
}); });
}, },
getSelectedAction: function() { getSelectedAction: function () {
var selected_action = this.refs.action.value; var selected_action = this.refs.action.value;
if(selected_action.length > 0) { if(selected_action.length > 0) {
var action = this.props.bulk_actions.filter(function(action) { var action = this.props.bulk_actions.filter(function (action) {
return (action.name === selected_action); return (action.name === selected_action);
}); });
@ -77,7 +77,7 @@ function(
} }
return null; return null;
}, },
render: function() { render: function () {
if(this.props.bulk_actions.length === 0) { if(this.props.bulk_actions.length === 0) {
return null; return null;
} }
@ -97,7 +97,7 @@ function(
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(function(action, index) { { this.props.bulk_actions.map(function (action, index) {
return ( return (
<option <option
value={ action.name } value={ action.name }

View File

@ -3,25 +3,25 @@ define([
'jquery', 'jquery',
'mailpoet' 'mailpoet'
], ],
function( function (
React, React,
jQuery, jQuery,
MailPoet MailPoet
) { ) {
var ListingFilters = React.createClass({ var ListingFilters = React.createClass({
handleFilterAction: function() { handleFilterAction: function () {
let filters = {}; let filters = {};
this.getAvailableFilters().map((filter, i) => { this.getAvailableFilters().map((filter, i) => {
filters[this.refs['filter-'+i].name] = this.refs['filter-'+i].value; filters[this.refs['filter-'+i].name] = this.refs['filter-'+i].value;
}); });
return this.props.onSelectFilter(filters); return this.props.onSelectFilter(filters);
}, },
handleEmptyTrash: function() { handleEmptyTrash: function () {
return this.props.onEmptyTrash(); return this.props.onEmptyTrash();
}, },
getAvailableFilters: function() { getAvailableFilters: function () {
let filters = this.props.filters; let filters = this.props.filters;
return Object.keys(filters).filter(function(filter) { return Object.keys(filters).filter(function (filter) {
return !( return !(
filters[filter].length === 0 filters[filter].length === 0
|| ( || (
@ -31,10 +31,10 @@ function(
); );
}); });
}, },
componentDidUpdate: function() { componentDidUpdate: function () {
const selected_filters = this.props.filter; const selected_filters = this.props.filter;
const available_filters = this.getAvailableFilters().map( const available_filters = this.getAvailableFilters().map(
function(filter, i) { function (filter, i) {
if (selected_filters[filter] !== undefined && selected_filters[filter]) { if (selected_filters[filter] !== undefined && selected_filters[filter]) {
jQuery(this.refs['filter-'+i]) jQuery(this.refs['filter-'+i])
.val(selected_filters[filter]) .val(selected_filters[filter])
@ -43,17 +43,17 @@ function(
}.bind(this) }.bind(this)
); );
}, },
render: function() { render: function () {
const filters = this.props.filters; const filters = this.props.filters;
const available_filters = this.getAvailableFilters() const available_filters = this.getAvailableFilters()
.map(function(filter, i) { .map(function (filter, i) {
return ( return (
<select <select
ref={ `filter-${i}` } ref={ `filter-${i}` }
key={ `filter-${i}` } key={ `filter-${i}` }
name={ filter } name={ filter }
> >
{ filters[filter].map(function(option, j) { { filters[filter].map(function (option, j) {
return ( return (
<option <option
value={ option.value } value={ option.value }

View File

@ -1,11 +1,11 @@
define(['react', 'classnames'], function(React, classNames) { define(['react', 'classnames'], function (React, classNames) {
var ListingGroups = React.createClass({ var ListingGroups = React.createClass({
handleSelect: function(group) { handleSelect: function (group) {
return this.props.onSelectGroup(group); return this.props.onSelectGroup(group);
}, },
render: function() { render: function () {
var groups = this.props.groups.map(function(group, index) { var groups = this.props.groups.map(function (group, index) {
if(group.name === 'trash' && group.count === 0) { if(group.name === 'trash' && group.count === 0) {
return false; return false;
} }

View File

@ -3,13 +3,13 @@ import React from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
const ListingHeader = React.createClass({ const ListingHeader = React.createClass({
handleSelectItems: function() { handleSelectItems: function () {
return this.props.onSelectItems( return this.props.onSelectItems(
this.refs.toggle.checked this.refs.toggle.checked
); );
}, },
render: function() { render: function () {
const columns = this.props.columns.map(function(column, index) { const columns = this.props.columns.map(function (column, index) {
column.is_primary = (index === 0); column.is_primary = (index === 0);
column.sorted = (this.props.sort_by === column.name) column.sorted = (this.props.sort_by === column.name)
? this.props.sort_order ? this.props.sort_order
@ -52,12 +52,12 @@ const ListingHeader = React.createClass({
}); });
const ListingColumn = React.createClass({ const ListingColumn = React.createClass({
handleSort: function() { handleSort: function () {
const sort_by = this.props.column.name; const sort_by = this.props.column.name;
const sort_order = (this.props.column.sorted === 'asc') ? 'desc' : 'asc'; const sort_order = (this.props.column.sorted === 'asc') ? 'desc' : 'asc';
this.props.onSort(sort_by, sort_order); this.props.onSort(sort_by, sort_order);
}, },
render: function() { render: function () {
const classes = classNames( const classes = classNames(
'manage-column', 'manage-column',
{ 'column-primary': this.props.column.is_primary }, { 'column-primary': this.props.column.is_primary },

View File

@ -12,12 +12,12 @@ import ListingGroups from 'listing/groups.jsx';
import ListingFilters from 'listing/filters.jsx'; import ListingFilters from 'listing/filters.jsx';
const ListingItem = React.createClass({ const ListingItem = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
expanded: false expanded: false
}; };
}, },
handleSelectItem: function(e) { handleSelectItem: function (e) {
this.props.onSelectItem( this.props.onSelectItem(
parseInt(e.target.value, 10), parseInt(e.target.value, 10),
e.target.checked e.target.checked
@ -25,19 +25,19 @@ const ListingItem = React.createClass({
return !e.target.checked; return !e.target.checked;
}, },
handleRestoreItem: function(id) { handleRestoreItem: function (id) {
this.props.onRestoreItem(id); this.props.onRestoreItem(id);
}, },
handleTrashItem: function(id) { handleTrashItem: function (id) {
this.props.onTrashItem(id); this.props.onTrashItem(id);
}, },
handleDeleteItem: function(id) { handleDeleteItem: function (id) {
this.props.onDeleteItem(id); this.props.onDeleteItem(id);
}, },
handleToggleItem: function(id) { handleToggleItem: function (id) {
this.setState({ expanded: !this.state.expanded }); this.setState({ expanded: !this.state.expanded });
}, },
render: function() { render: function () {
var checkbox = false; var checkbox = false;
if (this.props.is_selectable === true) { if (this.props.is_selectable === true) {
@ -63,7 +63,7 @@ const ListingItem = React.createClass({
if (custom_actions.length > 0) { if (custom_actions.length > 0) {
let is_first = true; let is_first = true;
item_actions = custom_actions.map(function(action, index) { item_actions = custom_actions.map(function (action, index) {
if (action.display !== undefined) { if (action.display !== undefined) {
if (action.display(this.props.item) === false) { if (action.display(this.props.item) === false) {
return; return;
@ -196,7 +196,7 @@ const ListingItem = React.createClass({
const ListingItems = React.createClass({ const ListingItems = React.createClass({
render: function() { render: function () {
if (this.props.items.length === 0) { if (this.props.items.length === 0) {
let message; let message;
if (this.props.loading === true) { if (this.props.loading === true) {
@ -259,7 +259,7 @@ const ListingItems = React.createClass({
</td> </td>
</tr> </tr>
{this.props.items.map(function(item, index) { {this.props.items.map(function (item, index) {
item.id = parseInt(item.id, 10); item.id = parseInt(item.id, 10);
item.selected = (this.props.selected_ids.indexOf(item.id) !== -1); item.selected = (this.props.selected_ids.indexOf(item.id) !== -1);
@ -290,7 +290,7 @@ const Listing = React.createClass({
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
getInitialState: function() { getInitialState: function () {
return { return {
loading: false, loading: false,
search: '', search: '',
@ -309,12 +309,12 @@ const Listing = React.createClass({
meta: {} meta: {}
}; };
}, },
getParam: function(param) { getParam: function (param) {
const regex = /(.*)\[(.*)\]/; const regex = /(.*)\[(.*)\]/;
const matches = regex.exec(param); const matches = regex.exec(param);
return [matches[1], matches[2]]; return [matches[1], matches[2]];
}, },
initWithParams: function(params) { initWithParams: function (params) {
let state = this.getInitialState(); let state = this.getInitialState();
// check for url params // check for url params
if (params.splat) { if (params.splat) {
@ -323,7 +323,7 @@ const Listing = React.createClass({
switch(key) { switch(key) {
case 'filter': case 'filter':
let filters = {}; let filters = {};
value.split('&').map(function(pair) { value.split('&').map(function (pair) {
let [k, v] = pair.split('='); let [k, v] = pair.split('=');
filters[k] = v; filters[k] = v;
} }
@ -352,11 +352,11 @@ const Listing = React.createClass({
state.sort_order = this.props.sort_order; state.sort_order = this.props.sort_order;
} }
this.setState(state, function() { this.setState(state, function () {
this.getItems(); this.getItems();
}.bind(this)); }.bind(this));
}, },
getParams: function() { getParams: function () {
// get all route parameters (without the "splat") // get all route parameters (without the "splat")
let params = _.omit(this.props.params, 'splat'); let params = _.omit(this.props.params, 'splat');
// TODO: // TODO:
@ -367,7 +367,7 @@ const Listing = React.createClass({
} }
return params; return params;
}, },
setParams: function() { setParams: function () {
if (this.props.location) { if (this.props.location) {
let params = Object.keys(this.state) let params = Object.keys(this.state)
.filter(key => { .filter(key => {
@ -405,7 +405,7 @@ const Listing = React.createClass({
} }
} }
}, },
getUrlWithParams: function(params) { getUrlWithParams: function (params) {
let base_url = (this.props.base_url !== undefined) let base_url = (this.props.base_url !== undefined)
? this.props.base_url ? this.props.base_url
: null; : null;
@ -417,7 +417,7 @@ const Listing = React.createClass({
return `/${ params }`; return `/${ params }`;
} }
}, },
setBaseUrlParams: function(base_url) { setBaseUrlParams: function (base_url) {
if (base_url.indexOf(':') !== -1) { if (base_url.indexOf(':') !== -1) {
const params = this.getParams(); const params = this.getParams();
Object.keys(params).map((key) => { Object.keys(params).map((key) => {
@ -429,23 +429,23 @@ const Listing = React.createClass({
return base_url; return base_url;
}, },
componentDidMount: function() { componentDidMount: function () {
if (this.isMounted()) { if (this.isMounted()) {
const params = this.props.params || {}; const params = this.props.params || {};
this.initWithParams(params); this.initWithParams(params);
if (this.props.auto_refresh) { if (this.props.auto_refresh) {
jQuery(document).on('heartbeat-tick.mailpoet', function(e, data) { jQuery(document).on('heartbeat-tick.mailpoet', function (e, data) {
this.getItems(); this.getItems();
}.bind(this)); }.bind(this));
} }
} }
}, },
componentWillReceiveProps: function(nextProps) { componentWillReceiveProps: function (nextProps) {
const params = nextProps.params || {}; const params = nextProps.params || {};
this.initWithParams(params); this.initWithParams(params);
}, },
getItems: function() { getItems: function () {
if (this.isMounted()) { if (this.isMounted()) {
this.setState({ loading: true }); this.setState({ loading: true });
@ -489,14 +489,14 @@ const Listing = React.createClass({
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
} }
}, },
handleRestoreItem: function(id) { handleRestoreItem: function (id) {
this.setState({ this.setState({
loading: true, loading: true,
page: 1 page: 1
@ -519,12 +519,12 @@ const Listing = React.createClass({
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
}); });
}, },
handleTrashItem: function(id) { handleTrashItem: function (id) {
this.setState({ this.setState({
loading: true, loading: true,
page: 1 page: 1
@ -547,12 +547,12 @@ const Listing = React.createClass({
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
}); });
}, },
handleDeleteItem: function(id) { handleDeleteItem: function (id) {
this.setState({ this.setState({
loading: true, loading: true,
page: 1 page: 1
@ -575,12 +575,12 @@ const Listing = React.createClass({
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
}); });
}, },
handleEmptyTrash: function() { handleEmptyTrash: function () {
return this.handleBulkAction('all', { return this.handleBulkAction('all', {
action: 'delete', action: 'delete',
group: 'trash' group: 'trash'
@ -592,12 +592,12 @@ const Listing = React.createClass({
this.handleGroup('all'); this.handleGroup('all');
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
}); });
}, },
handleBulkAction: function(selected_ids, params) { handleBulkAction: function (selected_ids, params) {
if ( if (
this.state.selection === false this.state.selection === false
&& this.state.selected_ids.length === 0 && this.state.selected_ids.length === 0
@ -630,25 +630,25 @@ const Listing = React.createClass({
this.getItems(); this.getItems();
}); });
}, },
handleSearch: function(search) { handleSearch: function (search) {
this.setState({ this.setState({
search: search, search: search,
page: 1, page: 1,
selection: false, selection: false,
selected_ids: [] selected_ids: []
}, function() { }, function () {
this.setParams(); this.setParams();
}.bind(this)); }.bind(this));
}, },
handleSort: function(sort_by, sort_order = 'asc') { handleSort: function (sort_by, sort_order = 'asc') {
this.setState({ this.setState({
sort_by: sort_by, sort_by: sort_by,
sort_order: (sort_order === 'asc') ? 'asc' : 'desc', sort_order: (sort_order === 'asc') ? 'asc' : 'desc',
}, function() { }, function () {
this.setParams(); this.setParams();
}.bind(this)); }.bind(this));
}, },
handleSelectItem: function(id, is_checked) { handleSelectItem: function (id, is_checked) {
var selected_ids = this.state.selected_ids, var selected_ids = this.state.selected_ids,
selection = false; selection = false;
@ -669,11 +669,11 @@ const Listing = React.createClass({
selected_ids: selected_ids selected_ids: selected_ids
}); });
}, },
handleSelectItems: function(is_checked) { handleSelectItems: function (is_checked) {
if (is_checked === false) { if (is_checked === false) {
this.clearSelection(); this.clearSelection();
} else { } else {
var selected_ids = this.state.items.map(function(item) { var selected_ids = this.state.items.map(function (item) {
return ~~item.id; return ~~item.id;
}); });
@ -683,7 +683,7 @@ const Listing = React.createClass({
}); });
} }
}, },
handleSelectAll: function() { handleSelectAll: function () {
if (this.state.selection === 'all') { if (this.state.selection === 'all') {
this.clearSelection(); this.clearSelection();
} else { } else {
@ -693,21 +693,21 @@ const Listing = React.createClass({
}); });
} }
}, },
clearSelection: function() { clearSelection: function () {
this.setState({ this.setState({
selection: false, selection: false,
selected_ids: [] selected_ids: []
}); });
}, },
handleFilter: function(filters) { handleFilter: function (filters) {
this.setState({ this.setState({
filter: filters, filter: filters,
page: 1 page: 1
}, function() { }, function () {
this.setParams(); this.setParams();
}.bind(this)); }.bind(this));
}, },
handleGroup: function(group) { handleGroup: function (group) {
// reset search // reset search
jQuery('#search_input').val(''); jQuery('#search_input').val('');
@ -716,34 +716,34 @@ const Listing = React.createClass({
filter: {}, filter: {},
search: '', search: '',
page: 1 page: 1
}, function() { }, function () {
this.setParams(); this.setParams();
}.bind(this)); }.bind(this));
}, },
handleSetPage: function(page) { handleSetPage: function (page) {
this.setState({ this.setState({
page: page, page: page,
selection: false, selection: false,
selected_ids: [] selected_ids: []
}, function() { }, function () {
this.setParams(); this.setParams();
}.bind(this)); }.bind(this));
}, },
handleRenderItem: function(item, actions) { handleRenderItem: function (item, actions) {
const render = this.props.onRenderItem(item, actions, this.state.meta); const render = this.props.onRenderItem(item, actions, this.state.meta);
return render.props.children; return render.props.children;
}, },
handleRefreshItems: function() { handleRefreshItems: function () {
this.getItems(); this.getItems();
}, },
render: function() { render: function () {
const items = this.state.items; const items = this.state.items;
const sort_by = this.state.sort_by; const sort_by = this.state.sort_by;
const sort_order = this.state.sort_order; const sort_order = this.state.sort_order;
// columns // columns
let columns = this.props.columns || []; let columns = this.props.columns || [];
columns = columns.filter(function(column) { columns = columns.filter(function (column) {
return (column.display === undefined || !!(column.display) === true); return (column.display === undefined || !!(column.display) === true);
}); });

View File

@ -2,61 +2,61 @@ define([
'react', 'react',
'classnames', 'classnames',
'mailpoet' 'mailpoet'
], function( ], function (
React, React,
classNames, classNames,
MailPoet MailPoet
) { ) {
var ListingPages = React.createClass({ var ListingPages = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
page: null page: null
}; };
}, },
setPage: function(page) { setPage: function (page) {
this.setState({ this.setState({
page: null page: null
}, function () { }, function () {
this.props.onSetPage(this.constrainPage(page)); this.props.onSetPage(this.constrainPage(page));
}.bind(this)); }.bind(this));
}, },
setFirstPage: function() { setFirstPage: function () {
this.setPage(1); this.setPage(1);
}, },
setLastPage: function() { setLastPage: function () {
this.setPage(this.getLastPage()); this.setPage(this.getLastPage());
}, },
setPreviousPage: function() { setPreviousPage: function () {
this.setPage(this.constrainPage( this.setPage(this.constrainPage(
parseInt(this.props.page, 10) - 1) parseInt(this.props.page, 10) - 1)
); );
}, },
setNextPage: function() { setNextPage: function () {
this.setPage(this.constrainPage( this.setPage(this.constrainPage(
parseInt(this.props.page, 10) + 1) parseInt(this.props.page, 10) + 1)
); );
}, },
constrainPage: function(page) { constrainPage: function (page) {
return Math.min(Math.max(1, Math.abs(~~page)), this.getLastPage()); return Math.min(Math.max(1, Math.abs(~~page)), this.getLastPage());
}, },
handleSetManualPage: function(e) { handleSetManualPage: function (e) {
if(e.which === 13) { if(e.which === 13) {
this.setPage(this.state.page); this.setPage(this.state.page);
} }
}, },
handleChangeManualPage: function(e) { handleChangeManualPage: function (e) {
this.setState({ this.setState({
page: e.target.value page: e.target.value
}); });
}, },
handleBlurManualPage: function(e) { handleBlurManualPage: function (e) {
this.setPage(e.target.value); this.setPage(e.target.value);
}, },
getLastPage: function() { getLastPage: function () {
return Math.ceil(this.props.count / this.props.limit); return Math.ceil(this.props.count / this.props.limit);
}, },
render: function() { render: function () {
if(this.props.count === 0) { if(this.props.count === 0) {
return false; return false;
} else { } else {

View File

@ -1,22 +1,22 @@
define([ define([
'mailpoet', 'mailpoet',
'react' 'react'
], function( ], function (
MailPoet, MailPoet,
React React
) { ) {
var ListingSearch = React.createClass({ var ListingSearch = React.createClass({
handleSearch: function(e) { handleSearch: function (e) {
e.preventDefault(); e.preventDefault();
this.props.onSearch( this.props.onSearch(
this.refs.search.value this.refs.search.value
); );
}, },
componentWillReceiveProps: function(nextProps) { componentWillReceiveProps: function (nextProps) {
this.refs.search.value = nextProps.search; this.refs.search.value = nextProps.search;
}, },
render: function() { render: function () {
if(this.props.search === false) { if(this.props.search === false) {
return false; return false;
} else { } else {

View File

@ -5,7 +5,7 @@ define(
'classnames', 'classnames',
'mailpoet' 'mailpoet'
], ],
function( function (
React, React,
Router, Router,
classNames, classNames,
@ -14,7 +14,7 @@ define(
var Link = Router.Link; var Link = Router.Link;
var Breadcrumb = React.createClass({ var Breadcrumb = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
step: null, step: null,
steps: [ steps: [
@ -38,8 +38,8 @@ define(
] ]
}; };
}, },
render: function() { render: function () {
var steps = this.state.steps.map(function(step, index) { var steps = this.state.steps.map(function (step, index) {
var stepClasses = classNames( var stepClasses = classNames(
{ 'mailpoet_current': (this.props.step === step.name) } { 'mailpoet_current': (this.props.step === step.name) }
); );

View File

@ -10,7 +10,7 @@ import Hooks from 'wp-js-hooks';
import StatsBadge from 'newsletters/badges/stats.jsx'; import StatsBadge from 'newsletters/badges/stats.jsx';
const _QueueMixin = { const _QueueMixin = {
pauseSending: function(newsletter) { pauseSending: function (newsletter) {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'sendingQueue', endpoint: 'sendingQueue',
@ -18,19 +18,19 @@ const _QueueMixin = {
data: { data: {
newsletter_id: newsletter.id newsletter_id: newsletter.id
} }
}).done(function() { }).done(function () {
jQuery('#resume_'+newsletter.id).show(); jQuery('#resume_'+newsletter.id).show();
jQuery('#pause_'+newsletter.id).hide(); jQuery('#pause_'+newsletter.id).hide();
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
resumeSending: function(newsletter) { resumeSending: function (newsletter) {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'sendingQueue', endpoint: 'sendingQueue',
@ -38,19 +38,19 @@ const _QueueMixin = {
data: { data: {
newsletter_id: newsletter.id newsletter_id: newsletter.id
} }
}).done(function() { }).done(function () {
jQuery('#pause_'+newsletter.id).show(); jQuery('#pause_'+newsletter.id).show();
jQuery('#resume_'+newsletter.id).hide(); jQuery('#resume_'+newsletter.id).hide();
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
renderQueueStatus: function(newsletter, mailer_log) { renderQueueStatus: function (newsletter, mailer_log) {
if (!newsletter.queue) { if (!newsletter.queue) {
return ( return (
<span>{MailPoet.I18n.t('notSentYet')}</span> <span>{MailPoet.I18n.t('notSentYet')}</span>
@ -144,7 +144,7 @@ const _QueueMixin = {
}; };
const _StatisticsMixin = { const _StatisticsMixin = {
renderStatistics: function(newsletter, is_sent, current_time) { renderStatistics: function (newsletter, is_sent, current_time) {
if (is_sent === undefined) { if (is_sent === undefined) {
// condition for standard and post notification listings // condition for standard and post notification listings
is_sent = newsletter.statistics is_sent = newsletter.statistics
@ -304,7 +304,7 @@ const _StatisticsMixin = {
}; };
const _MailerMixin = { const _MailerMixin = {
checkMailerStatus: function(state) { checkMailerStatus: function (state) {
if (state.meta.mta_log.error && state.meta.mta_log.status === 'paused') { if (state.meta.mta_log.error && state.meta.mta_log.status === 'paused') {
MailPoet.Notice.error( MailPoet.Notice.error(
'', '',
@ -356,14 +356,14 @@ const _MailerMixin = {
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'mailer', endpoint: 'mailer',
action: 'resumeSending' action: 'resumeSending'
}).done(function() { }).done(function () {
MailPoet.Notice.hide('mailpoet_mailer_error'); MailPoet.Notice.hide('mailpoet_mailer_error');
MailPoet.Notice.success(MailPoet.I18n.t('mailerSendingResumedNotice')); MailPoet.Notice.success(MailPoet.I18n.t('mailerSendingResumedNotice'));
window.mailpoet_listing.forceUpdate(); window.mailpoet_listing.forceUpdate();
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -106,7 +106,7 @@ const bulk_actions = [
const newsletter_actions = [ const newsletter_actions = [
{ {
name: 'view', name: 'view',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ newsletter.preview_url } target="_blank"> <a href={ newsletter.preview_url } target="_blank">
{MailPoet.I18n.t('preview')} {MailPoet.I18n.t('preview')}
@ -116,7 +116,7 @@ const newsletter_actions = [
}, },
{ {
name: 'edit', name: 'edit',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }> <a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }>
{MailPoet.I18n.t('edit')} {MailPoet.I18n.t('edit')}
@ -127,7 +127,7 @@ const newsletter_actions = [
{ {
name: 'duplicate', name: 'duplicate',
label: MailPoet.I18n.t('duplicate'), label: MailPoet.I18n.t('duplicate'),
onClick: function(newsletter, refresh) { onClick: function (newsletter, refresh) {
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
@ -145,7 +145,7 @@ const newsletter_actions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
@ -159,7 +159,7 @@ const newsletter_actions = [
const NewsletterListNotification = React.createClass({ const NewsletterListNotification = React.createClass({
mixins: [ MailerMixin ], mixins: [ MailerMixin ],
updateStatus: function(e) { updateStatus: function (e) {
// make the event persist so that we can still override the selected value // make the event persist so that we can still override the selected value
// in the ajax callback // in the ajax callback
e.persist(); e.persist();
@ -185,7 +185,7 @@ const NewsletterListNotification = React.createClass({
e.target.value = response.status; e.target.value = response.status;
}); });
}, },
renderStatus: function(newsletter) { renderStatus: function (newsletter) {
return ( return (
<select <select
data-id={ newsletter.id } data-id={ newsletter.id }
@ -197,12 +197,12 @@ const NewsletterListNotification = React.createClass({
</select> </select>
); );
}, },
renderSettings: function(newsletter) { renderSettings: function (newsletter) {
let sendingFrequency; let sendingFrequency;
let sendingToSegments; let sendingToSegments;
// get list of segments' name // get list of segments' name
const segments = newsletter.segments.map(function(segment) { const segments = newsletter.segments.map(function (segment) {
return segment.name; return segment.name;
}); });
@ -264,7 +264,7 @@ const NewsletterListNotification = React.createClass({
</span> </span>
); );
}, },
renderHistoryLink: function(newsletter) { renderHistoryLink: function (newsletter) {
const childrenCount = ~~(newsletter.children_count); const childrenCount = ~~(newsletter.children_count);
if (childrenCount === 0) { if (childrenCount === 0) {
return ( return (
@ -278,7 +278,7 @@ const NewsletterListNotification = React.createClass({
); );
} }
}, },
renderItem: function(newsletter, actions) { renderItem: function (newsletter, actions) {
const rowClasses = classNames( const rowClasses = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
@ -311,7 +311,7 @@ const NewsletterListNotification = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -44,7 +44,7 @@ const columns = [
let newsletter_actions = [ let newsletter_actions = [
{ {
name: 'view', name: 'view',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ newsletter.preview_url } target="_blank"> <a href={ newsletter.preview_url } target="_blank">
{MailPoet.I18n.t('preview')} {MailPoet.I18n.t('preview')}
@ -58,19 +58,19 @@ newsletter_actions = Hooks.applyFilters('mailpoet_newsletters_listings_notificat
const NewsletterListNotificationHistory = React.createClass({ const NewsletterListNotificationHistory = React.createClass({
mixins: [ QueueMixin, StatisticsMixin, MailerMixin ], mixins: [ QueueMixin, StatisticsMixin, MailerMixin ],
renderSentDate: function(newsletter) { renderSentDate: function (newsletter) {
return (newsletter.queue.status === 'completed') return (newsletter.queue.status === 'completed')
? ( <abbr>{ MailPoet.Date.format(newsletter.updated_at) }</abbr> ) ? ( <abbr>{ MailPoet.Date.format(newsletter.updated_at) }</abbr> )
: MailPoet.I18n.t('notSentYet'); : MailPoet.I18n.t('notSentYet');
}, },
renderItem: function(newsletter, actions, meta) { renderItem: function (newsletter, actions, meta) {
const rowClasses = classNames( const rowClasses = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
'has-row-actions' 'has-row-actions'
); );
const segments = newsletter.segments.map(function(segment) { const segments = newsletter.segments.map(function (segment) {
return segment.name; return segment.name;
}).join(', '); }).join(', ');
@ -104,7 +104,7 @@ const NewsletterListNotificationHistory = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -101,7 +101,7 @@ const bulk_actions = [
let newsletter_actions = [ let newsletter_actions = [
{ {
name: 'view', name: 'view',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ newsletter.preview_url } target="_blank"> <a href={ newsletter.preview_url } target="_blank">
{MailPoet.I18n.t('preview')} {MailPoet.I18n.t('preview')}
@ -111,7 +111,7 @@ let newsletter_actions = [
}, },
{ {
name: 'edit', name: 'edit',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }> <a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }>
{MailPoet.I18n.t('edit')} {MailPoet.I18n.t('edit')}
@ -122,7 +122,7 @@ let newsletter_actions = [
{ {
name: 'duplicate', name: 'duplicate',
label: MailPoet.I18n.t('duplicate'), label: MailPoet.I18n.t('duplicate'),
onClick: function(newsletter, refresh) { onClick: function (newsletter, refresh) {
return MailPoet.Ajax.post({ return MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
@ -140,7 +140,7 @@ let newsletter_actions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
@ -156,14 +156,14 @@ newsletter_actions = Hooks.applyFilters('mailpoet_newsletters_listings_standard_
const NewsletterListStandard = React.createClass({ const NewsletterListStandard = React.createClass({
mixins: [ QueueMixin, StatisticsMixin, MailerMixin ], mixins: [ QueueMixin, StatisticsMixin, MailerMixin ],
renderItem: function(newsletter, actions, meta) { renderItem: function (newsletter, actions, meta) {
const rowClasses = classNames( const rowClasses = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
'has-row-actions' 'has-row-actions'
); );
const segments = newsletter.segments.map(function(segment) { const segments = newsletter.segments.map(function (segment) {
return segment.name; return segment.name;
}).join(', '); }).join(', ');
@ -195,7 +195,7 @@ const NewsletterListStandard = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -104,7 +104,7 @@ const bulk_actions = [
let newsletter_actions = [ let newsletter_actions = [
{ {
name: 'view', name: 'view',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ newsletter.preview_url } target="_blank"> <a href={ newsletter.preview_url } target="_blank">
{MailPoet.I18n.t('preview')} {MailPoet.I18n.t('preview')}
@ -114,7 +114,7 @@ let newsletter_actions = [
}, },
{ {
name: 'edit', name: 'edit',
link: function(newsletter) { link: function (newsletter) {
return ( return (
<a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }> <a href={ `?page=mailpoet-newsletter-editor&id=${ newsletter.id }` }>
{MailPoet.I18n.t('edit')} {MailPoet.I18n.t('edit')}
@ -131,7 +131,7 @@ newsletter_actions = Hooks.applyFilters('mailpoet_newsletters_listings_welcome_n
const NewsletterListWelcome = React.createClass({ const NewsletterListWelcome = React.createClass({
mixins: [ StatisticsMixin, MailerMixin ], mixins: [ StatisticsMixin, MailerMixin ],
updateStatus: function(e) { updateStatus: function (e) {
// make the event persist so that we can still override the selected value // make the event persist so that we can still override the selected value
// in the ajax callback // in the ajax callback
e.persist(); e.persist();
@ -157,7 +157,7 @@ const NewsletterListWelcome = React.createClass({
e.target.value = response.status; e.target.value = response.status;
}); });
}, },
renderStatus: function(newsletter) { renderStatus: function (newsletter) {
let total_sent; let total_sent;
total_sent = ( total_sent = (
MailPoet.I18n.t('sentToXSubscribers') MailPoet.I18n.t('sentToXSubscribers')
@ -180,7 +180,7 @@ const NewsletterListWelcome = React.createClass({
</div> </div>
); );
}, },
renderSettings: function(newsletter) { renderSettings: function (newsletter) {
let sendingEvent; let sendingEvent;
let sendingDelay; let sendingDelay;
@ -199,7 +199,7 @@ const NewsletterListWelcome = React.createClass({
case 'segment': case 'segment':
// get segment // get segment
const segment = _.find(mailpoet_segments, function(segment) { const segment = _.find(mailpoet_segments, function (segment) {
return (~~(segment.id) === ~~(newsletter.options.segment)); return (~~(segment.id) === ~~(newsletter.options.segment));
}); });
@ -251,7 +251,7 @@ const NewsletterListWelcome = React.createClass({
</span> </span>
); );
}, },
renderItem: function(newsletter, actions) { renderItem: function (newsletter, actions) {
const rowClasses = classNames( const rowClasses = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
@ -289,7 +289,7 @@ const NewsletterListWelcome = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -25,9 +25,9 @@ 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,function(step) { _.times(numberOfTimeSteps,function (step) {
return step * TIME_STEP_SECONDS; return step * TIME_STEP_SECONDS;
}), function(seconds) { }), function (seconds) {
let date = new Date(null); let 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 });
@ -48,9 +48,9 @@ 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, function(day) { _.times(NUMBER_OF_DAYS_IN_MONTH, function (day) {
return day; return day;
}), function(day) { }), function (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'),

View File

@ -10,7 +10,7 @@ define(
'newsletters/send/welcome.jsx', 'newsletters/send/welcome.jsx',
'newsletters/breadcrumb.jsx' 'newsletters/breadcrumb.jsx'
], ],
function( function (
React, React,
Router, Router,
_, _,
@ -26,41 +26,41 @@ define(
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
getInitialState: function() { getInitialState: function () {
return { return {
fields: [], fields: [],
item: {}, item: {},
loading: false, loading: false,
}; };
}, },
getFieldsByNewsletter: function(newsletter) { getFieldsByNewsletter: function (newsletter) {
var type = this.getSubtype(newsletter); var type = this.getSubtype(newsletter);
return type.getFields(newsletter); return type.getFields(newsletter);
}, },
getSendButtonOptions: function() { getSendButtonOptions: function () {
var type = this.getSubtype(this.state.item); var type = this.getSubtype(this.state.item);
return type.getSendButtonOptions(this.state.item); return type.getSendButtonOptions(this.state.item);
}, },
getSubtype: function(newsletter) { getSubtype: function (newsletter) {
switch(newsletter.type) { switch(newsletter.type) {
case 'notification': return NotificationNewsletterFields; case 'notification': return NotificationNewsletterFields;
case 'welcome': return WelcomeNewsletterFields; case 'welcome': return WelcomeNewsletterFields;
default: return StandardNewsletterFields; default: return StandardNewsletterFields;
} }
}, },
isValid: function() { isValid: function () {
return jQuery('#mailpoet_newsletter').parsley().isValid(); return jQuery('#mailpoet_newsletter').parsley().isValid();
}, },
componentDidMount: function() { componentDidMount: function () {
if(this.isMounted()) { if(this.isMounted()) {
this.loadItem(this.props.params.id); this.loadItem(this.props.params.id);
} }
jQuery('#mailpoet_newsletter').parsley(); jQuery('#mailpoet_newsletter').parsley();
}, },
componentWillReceiveProps: function(props) { componentWillReceiveProps: function (props) {
this.loadItem(props.params.id); this.loadItem(props.params.id);
}, },
loadItem: function(id) { loadItem: function (id) {
this.setState({ loading: true }); this.setState({ loading: true });
MailPoet.Ajax.post({ MailPoet.Ajax.post({
@ -85,7 +85,7 @@ define(
}); });
}); });
}, },
handleSend: function(e) { handleSend: function (e) {
e.preventDefault(); e.preventDefault();
if(!this.isValid()) { if(!this.isValid()) {
@ -149,7 +149,7 @@ define(
} }
return false; return false;
}, },
handleSave: function(e) { handleSave: function (e) {
e.preventDefault(); e.preventDefault();
this._save(e).done((response) => { this._save(e).done((response) => {
@ -160,7 +160,7 @@ define(
this.context.router.push(`/${ this.state.item.type || '' }`); this.context.router.push(`/${ this.state.item.type || '' }`);
}).fail(this._showError); }).fail(this._showError);
}, },
handleRedirectToDesign: function(e) { handleRedirectToDesign: function (e) {
e.preventDefault(); e.preventDefault();
var redirectTo = e.target.href; var redirectTo = e.target.href;
@ -172,7 +172,7 @@ define(
window.location = redirectTo; window.location = redirectTo;
}).fail(this._showError); }).fail(this._showError);
}, },
_save: function(e) { _save: function (e) {
var data = this.state.item; var data = this.state.item;
this.setState({ loading: true }); this.setState({ loading: true });
@ -198,12 +198,12 @@ define(
_showError: (response) => { _showError: (response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}, },
handleFormChange: function(e) { handleFormChange: function (e) {
var item = this.state.item, var item = this.state.item,
field = e.target.name; field = e.target.name;
@ -214,7 +214,7 @@ define(
}); });
return true; return true;
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1>{MailPoet.I18n.t('finalNewsletterStep')}</h1> <h1>{MailPoet.I18n.t('finalNewsletterStep')}</h1>

View File

@ -5,7 +5,7 @@ define(
'newsletters/types/notification/scheduling.jsx', 'newsletters/types/notification/scheduling.jsx',
'underscore' 'underscore'
], ],
function( function (
MailPoet, MailPoet,
Hooks, Hooks,
Scheduling, Scheduling,
@ -41,16 +41,16 @@ define(
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
multiple: true, multiple: true,
filter: function(segment) { filter: function (segment) {
return !!(!segment.deleted_at); return !!(!segment.deleted_at);
}, },
getLabel: function(segment) { getLabel: function (segment) {
return segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')'; return segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')';
}, },
transformChangedValue: function(segment_ids) { transformChangedValue: function (segment_ids) {
var all_segments = this.state.items; var all_segments = this.state.items;
return _.map(segment_ids, function(id) { return _.map(segment_ids, function (id) {
return _.find(all_segments, function(segment) { return _.find(all_segments, function (segment) {
return segment.id === id; return segment.id === id;
}); });
}); });
@ -107,10 +107,10 @@ define(
fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields); fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields);
return { return {
getFields: function(newsletter) { getFields: function (newsletter) {
return fields; return fields;
}, },
getSendButtonOptions: function(newsletter) { getSendButtonOptions: function (newsletter) {
return { return {
value: MailPoet.I18n.t('activate') value: MailPoet.I18n.t('activate')
}; };

View File

@ -9,7 +9,7 @@ define(
'form/fields/select.jsx', 'form/fields/select.jsx',
'form/fields/text.jsx', 'form/fields/text.jsx',
], ],
function( function (
React, React,
jQuery, jQuery,
_, _,
@ -90,7 +90,7 @@ define(
}; };
var DateText = React.createClass({ var DateText = React.createClass({
onChange: function(event) { onChange: function (event) {
// Swap display format to storage format // Swap display format to storage format
var displayDate = event.target.value, var displayDate = event.target.value,
storageDate = this.getStorageDate(displayDate); storageDate = this.getStorageDate(displayDate);
@ -98,19 +98,19 @@ define(
event.target.value = storageDate; event.target.value = storageDate;
this.props.onChange(event); this.props.onChange(event);
}, },
componentDidMount: function() { componentDidMount: function () {
var $element = jQuery(this.refs.dateInput), var $element = jQuery(this.refs.dateInput),
that = this; that = this;
if ($element.datepicker) { if ($element.datepicker) {
// Override jQuery UI datepicker Date parsing and formatting // Override jQuery UI datepicker Date parsing and formatting
jQuery.datepicker.parseDate = function(format, value) { jQuery.datepicker.parseDate = function (format, value) {
// Transform string format to Date object // Transform string format to Date object
return MailPoet.Date.toDate(value, { return MailPoet.Date.toDate(value, {
parseFormat: dateDisplayFormat, parseFormat: dateDisplayFormat,
format: format format: format
}); });
}; };
jQuery.datepicker.formatDate = function(format, value) { jQuery.datepicker.formatDate = function (format, value) {
// Transform Date object to string format // Transform Date object to string format
var newValue = MailPoet.Date.format(value, { var newValue = MailPoet.Date.format(value, {
format: format format: format
@ -121,7 +121,7 @@ define(
$element.datepicker(_.extend({ $element.datepicker(_.extend({
dateFormat: this.props.displayFormat, dateFormat: this.props.displayFormat,
isRTL: false, isRTL: false,
onSelect: function(value) { onSelect: function (value) {
that.onChange({ that.onChange({
target: { target: {
name: that.getFieldName(), name: that.getFieldName(),
@ -134,27 +134,27 @@ define(
this.datepickerInitialized = true; this.datepickerInitialized = true;
} }
}, },
componentWillUnmount: function() { componentWillUnmount: function () {
if (this.datepickerInitialized) { if (this.datepickerInitialized) {
jQuery(this.refs.dateInput).datepicker('destroy'); jQuery(this.refs.dateInput).datepicker('destroy');
} }
}, },
getFieldName: function() { getFieldName: function () {
return this.props.name || 'date'; return this.props.name || 'date';
}, },
getDisplayDate: function(date) { getDisplayDate: function (date) {
return MailPoet.Date.format(date, { return MailPoet.Date.format(date, {
parseFormat: this.props.storageFormat, parseFormat: this.props.storageFormat,
format: this.props.displayFormat format: this.props.displayFormat
}); });
}, },
getStorageDate: function(date) { getStorageDate: function (date) {
return MailPoet.Date.format(date, { return MailPoet.Date.format(date, {
parseFormat: this.props.displayFormat, parseFormat: this.props.displayFormat,
format: this.props.storageFormat format: this.props.storageFormat
}); });
}, },
render: function() { render: function () {
return ( return (
<input <input
type="text" type="text"
@ -170,7 +170,7 @@ define(
}); });
var TimeSelect = React.createClass({ var TimeSelect = React.createClass({
render: function() { render: function () {
const options = Object.keys(timeOfDayItems).map( const options = Object.keys(timeOfDayItems).map(
(value, index) => { (value, index) => {
return ( return (
@ -198,13 +198,13 @@ define(
var DateTime = React.createClass({ var DateTime = React.createClass({
_DATE_TIME_SEPARATOR: " ", _DATE_TIME_SEPARATOR: " ",
getInitialState: function() { getInitialState: function () {
return this._buildStateFromProps(this.props); return this._buildStateFromProps(this.props);
}, },
componentWillReceiveProps: function(nextProps) { componentWillReceiveProps: function (nextProps) {
this.setState(this._buildStateFromProps(nextProps)); this.setState(this._buildStateFromProps(nextProps));
}, },
_buildStateFromProps: function(props) { _buildStateFromProps: function (props) {
let value = props.value || defaultDateTime; let value = props.value || defaultDateTime;
const [date, time] = value.split(this._DATE_TIME_SEPARATOR); const [date, time] = value.split(this._DATE_TIME_SEPARATOR);
return { return {
@ -212,15 +212,15 @@ define(
time: time, time: time,
}; };
}, },
handleChange: function(event) { handleChange: function (event) {
var newState = {}; var newState = {};
newState[event.target.name] = event.target.value; newState[event.target.name] = event.target.value;
this.setState(newState, function() { this.setState(newState, function () {
this.propagateChange(); this.propagateChange();
}); });
}, },
propagateChange: function() { propagateChange: function () {
if (this.props.onChange) { if (this.props.onChange) {
return this.props.onChange({ return this.props.onChange({
target: { target: {
@ -230,10 +230,10 @@ define(
}); });
} }
}, },
getDateTime: function() { getDateTime: function () {
return [this.state.date, this.state.time].join(this._DATE_TIME_SEPARATOR); return [this.state.date, this.state.time].join(this._DATE_TIME_SEPARATOR);
}, },
render: function() { render: function () {
return ( return (
<span> <span>
<DateText <DateText
@ -254,7 +254,7 @@ define(
}); });
var StandardScheduling = React.createClass({ var StandardScheduling = React.createClass({
_getCurrentValue: function() { _getCurrentValue: function () {
return _.defaults( return _.defaults(
this.props.item[this.props.field.name] || {}, this.props.item[this.props.field.name] || {},
{ {
@ -263,7 +263,7 @@ define(
} }
); );
}, },
handleValueChange: function(event) { handleValueChange: function (event) {
var oldValue = this._getCurrentValue(), var oldValue = this._getCurrentValue(),
newValue = {}; newValue = {};
newValue[event.target.name] = event.target.value; newValue[event.target.name] = event.target.value;
@ -275,21 +275,21 @@ define(
} }
}); });
}, },
handleCheckboxChange: function(event) { handleCheckboxChange: function (event) {
event.target.value = this.refs.isScheduled.checked ? '1' : '0'; event.target.value = this.refs.isScheduled.checked ? '1' : '0';
return this.handleValueChange(event); return this.handleValueChange(event);
}, },
isScheduled: function() { isScheduled: function () {
return this._getCurrentValue().isScheduled === '1'; return this._getCurrentValue().isScheduled === '1';
}, },
getDateValidation: function() { getDateValidation: function () {
return { return {
'data-parsley-required': true, 'data-parsley-required': true,
'data-parsley-required-message': MailPoet.I18n.t('noScheduledDateError'), 'data-parsley-required-message': MailPoet.I18n.t('noScheduledDateError'),
'data-parsley-errors-container': '#mailpoet_scheduling', 'data-parsley-errors-container': '#mailpoet_scheduling',
}; };
}, },
render: function() { render: function () {
var schedulingOptions; var schedulingOptions;
if (this.isScheduled()) { if (this.isScheduled()) {
@ -345,16 +345,16 @@ define(
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
multiple: true, multiple: true,
filter: function(segment) { filter: function (segment) {
return !!(!segment.deleted_at); return !!(!segment.deleted_at);
}, },
getLabel: function(segment) { getLabel: function (segment) {
return segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')'; return segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')';
}, },
transformChangedValue: function(segment_ids) { transformChangedValue: function (segment_ids) {
var all_segments = this.state.items; var all_segments = this.state.items;
return _.map(segment_ids, function(id) { return _.map(segment_ids, function (id) {
return _.find(all_segments, function(segment) { return _.find(all_segments, function (segment) {
return segment.id === id; return segment.id === id;
}); });
}); });
@ -417,10 +417,10 @@ define(
fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields); fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields);
return { return {
getFields: function(newsletter) { getFields: function (newsletter) {
return fields; return fields;
}, },
getSendButtonOptions: function(newsletter) { getSendButtonOptions: function (newsletter) {
newsletter = newsletter || {}; newsletter = newsletter || {};
let isScheduled = ( let isScheduled = (

View File

@ -4,7 +4,7 @@ define(
'wp-js-hooks', 'wp-js-hooks',
'newsletters/types/welcome/scheduling.jsx' 'newsletters/types/welcome/scheduling.jsx'
], ],
function( function (
MailPoet, MailPoet,
Hooks, Hooks,
Scheduling Scheduling
@ -76,10 +76,10 @@ define(
fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields); fields = Hooks.applyFilters('mailpoet_newsletters_3rd_step_fields', fields);
return { return {
getFields: function(newsletter) { getFields: function (newsletter) {
return fields; return fields;
}, },
getSendButtonOptions: function(newsletter) { getSendButtonOptions: function (newsletter) {
return { return {
value: MailPoet.I18n.t('activate') value: MailPoet.I18n.t('activate')
}; };

View File

@ -7,7 +7,7 @@ define(
'classnames', 'classnames',
'newsletters/breadcrumb.jsx' 'newsletters/breadcrumb.jsx'
], ],
function( function (
React, React,
_, _,
MailPoet, MailPoet,
@ -17,7 +17,7 @@ define(
) { ) {
var ImportTemplate = React.createClass({ var ImportTemplate = React.createClass({
saveTemplate: function(template) { saveTemplate: function (template) {
// Stringify to enable transmission of primitive non-string value types // Stringify to enable transmission of primitive non-string value types
if (!_.isUndefined(template.body)) { if (!_.isUndefined(template.body)) {
@ -31,20 +31,20 @@ define(
endpoint: 'newsletterTemplates', endpoint: 'newsletterTemplates',
action: 'save', action: 'save',
data: template data: template
}).always(function() { }).always(function () {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}).done((response) => { }).done((response) => {
this.props.onImport(response.data); this.props.onImport(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(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
handleSubmit: function(e) { handleSubmit: function (e) {
e.preventDefault(); e.preventDefault();
if (_.size(this.refs.templateFile.files) <= 0) return false; if (_.size(this.refs.templateFile.files) <= 0) return false;
@ -63,7 +63,7 @@ define(
reader.readAsText(file); reader.readAsText(file);
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h2>{MailPoet.I18n.t('importTemplateTitle')}</h2> <h2>{MailPoet.I18n.t('importTemplateTitle')}</h2>
@ -83,16 +83,16 @@ define(
}); });
var NewsletterTemplates = React.createClass({ var NewsletterTemplates = React.createClass({
getInitialState: function() { getInitialState: function () {
return { return {
loading: false, loading: false,
templates: [] templates: []
}; };
}, },
componentDidMount: function() { componentDidMount: function () {
this.getTemplates(); this.getTemplates();
}, },
getTemplates: function() { getTemplates: function () {
this.setState({ loading: true }); this.setState({ loading: true });
MailPoet.Modal.loading(true); MailPoet.Modal.loading(true);
@ -123,7 +123,7 @@ define(
} }
}); });
}, },
handleSelectTemplate: function(template) { handleSelectTemplate: function (template) {
var body = template.body; var body = template.body;
// Stringify to enable transmission of primitive non-string value types // Stringify to enable transmission of primitive non-string value types
@ -145,13 +145,13 @@ define(
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
handleDeleteTemplate: function(template) { handleDeleteTemplate: function (template) {
this.setState({ loading: true }); this.setState({ loading: true });
if( if(
window.confirm( window.confirm(
@ -174,18 +174,18 @@ define(
this.setState({ loading: false }); this.setState({ loading: false });
} }
}, },
handleShowTemplate: function(template) { handleShowTemplate: function (template) {
MailPoet.Modal.popup({ MailPoet.Modal.popup({
title: template.name, title: template.name,
template: '<div class="mailpoet_boxes_preview" style="background-color: {{ body.globalStyles.body.backgroundColor }}"><img src="{{ thumbnail }}" /></div>', template: '<div class="mailpoet_boxes_preview" style="background-color: {{ body.globalStyles.body.backgroundColor }}"><img src="{{ thumbnail }}" /></div>',
data: template data: template
}); });
}, },
handleTemplateImport: function() { handleTemplateImport: function () {
this.getTemplates(); this.getTemplates();
}, },
render: function() { render: function () {
var templates = this.state.templates.map(function(template, index) { var templates = this.state.templates.map(function (template, index) {
var deleteLink = ( var deleteLink = (
<div className="mailpoet_delete"> <div className="mailpoet_delete">
<a <a

View File

@ -6,7 +6,7 @@ define(
'react-router', 'react-router',
'newsletters/breadcrumb.jsx' 'newsletters/breadcrumb.jsx'
], ],
function( function (
React, React,
MailPoet, MailPoet,
Hooks, Hooks,
@ -17,12 +17,12 @@ define(
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
setupNewsletter: function(type) { setupNewsletter: function (type) {
if(type !== undefined) { if(type !== undefined) {
this.context.router.push(`/new/${type}`); this.context.router.push(`/new/${type}`);
} }
}, },
createNewsletter: function(type) { createNewsletter: function (type) {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
@ -36,19 +36,19 @@ define(
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
render: function() { render: function () {
var types = [ var types = [
{ {
'id': 'standard', 'id': 'standard',
'title': MailPoet.I18n.t('regularNewsletterTypeTitle'), 'title': MailPoet.I18n.t('regularNewsletterTypeTitle'),
'description': MailPoet.I18n.t('regularNewsletterTypeDescription'), 'description': MailPoet.I18n.t('regularNewsletterTypeDescription'),
'action': function() { 'action': function () {
return ( return (
<a className="button button-primary" onClick={ this.createNewsletter.bind(null, 'standard') }> <a className="button button-primary" onClick={ this.createNewsletter.bind(null, 'standard') }>
{MailPoet.I18n.t('create')} {MailPoet.I18n.t('create')}
@ -60,7 +60,7 @@ define(
'id': 'welcome', 'id': 'welcome',
'title': MailPoet.I18n.t('welcomeNewsletterTypeTitle'), 'title': MailPoet.I18n.t('welcomeNewsletterTypeTitle'),
'description': MailPoet.I18n.t('welcomeNewsletterTypeDescription'), 'description': MailPoet.I18n.t('welcomeNewsletterTypeDescription'),
'action': function() { 'action': function () {
return ( return (
<div> <div>
<a href="?page=mailpoet-premium" target="_blank"> <a href="?page=mailpoet-premium" target="_blank">
@ -74,7 +74,7 @@ define(
'id': 'notification', 'id': 'notification',
'title': MailPoet.I18n.t('postNotificationNewsletterTypeTitle'), 'title': MailPoet.I18n.t('postNotificationNewsletterTypeTitle'),
'description': MailPoet.I18n.t('postNotificationNewsletterTypeDescription'), 'description': MailPoet.I18n.t('postNotificationNewsletterTypeDescription'),
'action': function() { 'action': function () {
return ( return (
<a className="button button-primary" onClick={ this.setupNewsletter.bind(null, 'notification') }> <a className="button button-primary" onClick={ this.setupNewsletter.bind(null, 'notification') }>
{MailPoet.I18n.t('setUp')} {MailPoet.I18n.t('setUp')}
@ -93,7 +93,7 @@ define(
<Breadcrumb step="type" /> <Breadcrumb step="type" />
<ul className="mailpoet_boxes clearfix"> <ul className="mailpoet_boxes clearfix">
{types.map(function(type, index) { {types.map(function (type, index) {
return ( return (
<li key={index} data-type={type.id}> <li key={index} data-type={type.id}>
<div> <div>

View File

@ -7,7 +7,7 @@ define(
'newsletters/types/notification/scheduling.jsx', 'newsletters/types/notification/scheduling.jsx',
'newsletters/breadcrumb.jsx' 'newsletters/breadcrumb.jsx'
], ],
function( function (
_, _,
React, React,
Router, Router,
@ -26,7 +26,7 @@ define(
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
getInitialState: function() { getInitialState: function () {
return { return {
options: { options: {
intervalType: 'daily', intervalType: 'daily',
@ -37,12 +37,12 @@ define(
} }
}; };
}, },
handleValueChange: function(event) { handleValueChange: function (event) {
var state = this.state; var state = this.state;
state[event.target.name] = event.target.value; state[event.target.name] = event.target.value;
this.setState(state); this.setState(state);
}, },
handleNext: function() { handleNext: function () {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
@ -56,16 +56,16 @@ define(
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
showTemplateSelection: function(newsletterId) { showTemplateSelection: function (newsletterId) {
this.context.router.push(`/template/${newsletterId}`); this.context.router.push(`/template/${newsletterId}`);
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1>{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}</h1> <h1>{MailPoet.I18n.t('postNotificationNewsletterTypeTitle')}</h1>

View File

@ -35,10 +35,10 @@ const nthWeekDayField = {
}; };
const NotificationScheduling = React.createClass({ const NotificationScheduling = React.createClass({
_getCurrentValue: function() { _getCurrentValue: function () {
return (this.props.item[this.props.field.name] || {}); return (this.props.item[this.props.field.name] || {});
}, },
handleValueChange: function(name, value) { handleValueChange: function (name, value) {
const oldValue = this._getCurrentValue(); const oldValue = this._getCurrentValue();
let newValue = {}; let newValue = {};
@ -51,37 +51,37 @@ const NotificationScheduling = React.createClass({
} }
}); });
}, },
handleIntervalChange: function(event) { handleIntervalChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'intervalType', 'intervalType',
event.target.value event.target.value
); );
}, },
handleTimeOfDayChange: function(event) { handleTimeOfDayChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'timeOfDay', 'timeOfDay',
event.target.value event.target.value
); );
}, },
handleWeekDayChange: function(event) { handleWeekDayChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'weekDay', 'weekDay',
event.target.value event.target.value
); );
}, },
handleMonthDayChange: function(event) { handleMonthDayChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'monthDay', 'monthDay',
event.target.value event.target.value
); );
}, },
handleNthWeekDayChange: function(event) { handleNthWeekDayChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'nthWeekDay', 'nthWeekDay',
event.target.value event.target.value
); );
}, },
render: function() { render: function () {
const value = this._getCurrentValue(); const value = this._getCurrentValue();
let timeOfDaySelection; let timeOfDaySelection;
let weekDaySelection; let weekDaySelection;

View File

@ -5,7 +5,7 @@ define(
'mailpoet', 'mailpoet',
'newsletters/breadcrumb.jsx' 'newsletters/breadcrumb.jsx'
], ],
function( function (
React, React,
Router, Router,
MailPoet, MailPoet,
@ -16,10 +16,10 @@ define(
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
showTemplateSelection: function(newsletterId) { showTemplateSelection: function (newsletterId) {
this.context.router.push(`/template/${newsletterId}`); this.context.router.push(`/template/${newsletterId}`);
}, },
componentDidMount: function() { componentDidMount: function () {
// No options for this type, create a newsletter upon mounting // No options for this type, create a newsletter upon mounting
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
@ -33,13 +33,13 @@ define(
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1>{MailPoet.I18n.t('regularNewsletterTypeTitle')}</h1> <h1>{MailPoet.I18n.t('regularNewsletterTypeTitle')}</h1>

View File

@ -26,7 +26,7 @@ const events = {
const availableSegmentValues = _.object(_.map( const availableSegmentValues = _.object(_.map(
availableSegments, availableSegments,
function(segment) { function (segment) {
let name = segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')'; let name = segment.name + ' (' + parseInt(segment.subscribers, 10).toLocaleString() + ')';
return [segment.id, name]; return [segment.id, name];
} }
@ -56,10 +56,10 @@ const WelcomeScheduling = React.createClass({
contextTypes: { contextTypes: {
router: React.PropTypes.object.isRequired router: React.PropTypes.object.isRequired
}, },
_getCurrentValue: function() { _getCurrentValue: function () {
return (this.props.item[this.props.field.name] || {}); return (this.props.item[this.props.field.name] || {});
}, },
handleValueChange: function(name, value) { handleValueChange: function (name, value) {
const oldValue = this._getCurrentValue(); const oldValue = this._getCurrentValue();
let newValue = {}; let newValue = {};
@ -72,37 +72,37 @@ const WelcomeScheduling = React.createClass({
} }
}); });
}, },
handleEventChange: function(event) { handleEventChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'event', 'event',
event.target.value event.target.value
); );
}, },
handleSegmentChange: function(event) { handleSegmentChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'segment', 'segment',
event.target.value event.target.value
); );
}, },
handleRoleChange: function(event) { handleRoleChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'role', 'role',
event.target.value event.target.value
); );
}, },
handleAfterTimeNumberChange: function(event) { handleAfterTimeNumberChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'afterTimeNumber', 'afterTimeNumber',
event.target.value event.target.value
); );
}, },
handleAfterTimeTypeChange: function(event) { handleAfterTimeTypeChange: function (event) {
return this.handleValueChange( return this.handleValueChange(
'afterTimeType', 'afterTimeType',
event.target.value event.target.value
); );
}, },
handleNext: function() { handleNext: function () {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
@ -116,16 +116,16 @@ const WelcomeScheduling = React.createClass({
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
} }
}); });
}, },
showTemplateSelection: function(newsletterId) { showTemplateSelection: function (newsletterId) {
this.context.router.push(`/template/${ newsletterId }`); this.context.router.push(`/template/${ newsletterId }`);
}, },
render: function() { render: function () {
const value = this._getCurrentValue(); const value = this._getCurrentValue();
let roleSegmentSelection; let roleSegmentSelection;
let timeNumber; let timeNumber;

View File

@ -5,7 +5,7 @@ define(
'mailpoet', 'mailpoet',
'form/form.jsx' 'form/form.jsx'
], ],
function( function (
React, React,
Router, Router,
MailPoet, MailPoet,
@ -27,10 +27,10 @@ define(
]; ];
const messages = { const messages = {
onUpdate: function() { onUpdate: function () {
MailPoet.Notice.success(MailPoet.I18n.t('segmentUpdated')); MailPoet.Notice.success(MailPoet.I18n.t('segmentUpdated'));
}, },
onCreate: function() { onCreate: function () {
MailPoet.Notice.success(MailPoet.I18n.t('segmentAdded')); MailPoet.Notice.success(MailPoet.I18n.t('segmentAdded'));
} }
}; };
@ -38,7 +38,7 @@ define(
var Link = Router.Link; var Link = Router.Link;
const SegmentForm = React.createClass({ const SegmentForm = React.createClass({
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -98,12 +98,12 @@ const bulk_actions = [
const item_actions = [ const item_actions = [
{ {
name: 'edit', name: 'edit',
link: function(item) { link: function (item) {
return ( return (
<Link to={ `/edit/${item.id}` }>{MailPoet.I18n.t('edit')}</Link> <Link to={ `/edit/${item.id}` }>{MailPoet.I18n.t('edit')}</Link>
); );
}, },
display: function(segment) { display: function (segment) {
return (segment.type !== 'wp_users'); return (segment.type !== 'wp_users');
} }
}, },
@ -125,18 +125,18 @@ const item_actions = [
refresh(); refresh();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(function(error) { return error.message; }), response.errors.map(function (error) { return error.message; }),
{ scroll: true } { scroll: true }
); );
}); });
}, },
display: function(segment) { display: function (segment) {
return (segment.type !== 'wp_users'); return (segment.type !== 'wp_users');
} }
}, },
{ {
name: 'read_more', name: 'read_more',
link: function(item) { link: function (item) {
return ( return (
<a <a
href="http://docs.mailpoet.com/article/133-the-wordpress-users-list" href="http://docs.mailpoet.com/article/133-the-wordpress-users-list"
@ -144,20 +144,20 @@ const item_actions = [
>{MailPoet.I18n.t('readMore')}</a> >{MailPoet.I18n.t('readMore')}</a>
); );
}, },
display: function(segment) { display: function (segment) {
return (segment.type === 'wp_users'); return (segment.type === 'wp_users');
} }
}, },
{ {
name: 'synchronize_segment', name: 'synchronize_segment',
label: MailPoet.I18n.t('forceSync'), label: MailPoet.I18n.t('forceSync'),
onClick: function(item, refresh) { onClick: function (item, refresh) {
MailPoet.Modal.loading(true); MailPoet.Modal.loading(true);
MailPoet.Ajax.post({ MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
action: 'synchronize' action: 'synchronize'
}).done(function(response) { }).done(function (response) {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
if(response === true) { if(response === true) {
MailPoet.Notice.success( MailPoet.Notice.success(
@ -167,13 +167,13 @@ const item_actions = [
} }
}); });
}, },
display: function(segment) { display: function (segment) {
return (segment.type === 'wp_users'); return (segment.type === 'wp_users');
} }
}, },
{ {
name: 'view_subscribers', name: 'view_subscribers',
link: function(item) { link: function (item) {
return ( return (
<a href={ item.subscribers_url }>{MailPoet.I18n.t('viewSubscribers')}</a> <a href={ item.subscribers_url }>{MailPoet.I18n.t('viewSubscribers')}</a>
); );
@ -181,14 +181,14 @@ const item_actions = [
}, },
{ {
name: 'trash', name: 'trash',
display: function(segment) { display: function (segment) {
return (segment.type !== 'wp_users'); return (segment.type !== 'wp_users');
} }
} }
]; ];
const SegmentList = React.createClass({ const SegmentList = React.createClass({
renderItem: function(segment, actions) { renderItem: function (segment, actions) {
var rowClasses = classNames( var rowClasses = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
@ -245,7 +245,7 @@ const SegmentList = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -6,7 +6,7 @@ define(
'form/form.jsx', 'form/form.jsx',
'react-string-replace' 'react-string-replace'
], ],
function( function (
React, React,
Router, Router,
MailPoet, MailPoet,
@ -18,7 +18,7 @@ define(
name: 'email', name: 'email',
label: MailPoet.I18n.t('email'), label: MailPoet.I18n.t('email'),
type: 'text', type: 'text',
disabled: function(subscriber) { disabled: function (subscriber) {
return ~~(subscriber.wp_user_id > 0); return ~~(subscriber.wp_user_id > 0);
} }
}, },
@ -26,7 +26,7 @@ define(
name: 'first_name', name: 'first_name',
label: MailPoet.I18n.t('firstname'), label: MailPoet.I18n.t('firstname'),
type: 'text', type: 'text',
disabled: function(subscriber) { disabled: function (subscriber) {
return ~~(subscriber.wp_user_id > 0); return ~~(subscriber.wp_user_id > 0);
} }
}, },
@ -34,7 +34,7 @@ define(
name: 'last_name', name: 'last_name',
label: MailPoet.I18n.t('lastname'), label: MailPoet.I18n.t('lastname'),
type: 'text', type: 'text',
disabled: function(subscriber) { disabled: function (subscriber) {
return ~~(subscriber.wp_user_id > 0); return ~~(subscriber.wp_user_id > 0);
} }
}, },
@ -48,7 +48,7 @@ define(
'unsubscribed': MailPoet.I18n.t('unsubscribed'), 'unsubscribed': MailPoet.I18n.t('unsubscribed'),
'bounced': MailPoet.I18n.t('bounced') 'bounced': MailPoet.I18n.t('bounced')
}, },
filter: function(subscriber, value) { filter: function (subscriber, value) {
if (~~(subscriber.wp_user_id) > 0 && value === 'unconfirmed') { if (~~(subscriber.wp_user_id) > 0 && value === 'unconfirmed') {
return false; return false;
} }
@ -63,28 +63,28 @@ define(
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
multiple: true, multiple: true,
selected: function(subscriber) { selected: function (subscriber) {
if (Array.isArray(subscriber.subscriptions) === false) { if (Array.isArray(subscriber.subscriptions) === false) {
return null; return null;
} }
return subscriber.subscriptions.map(function(subscription) { return subscriber.subscriptions.map(function (subscription) {
if (subscription.status === 'subscribed') { if (subscription.status === 'subscribed') {
return subscription.segment_id; return subscription.segment_id;
} }
}); });
}, },
filter: function(segment) { filter: function (segment) {
return !!(!segment.deleted_at && segment.type === 'default'); return !!(!segment.deleted_at && segment.type === 'default');
}, },
getLabel: function(segment) { getLabel: function (segment) {
return segment.name + ' ('+ segment.subscribers +')'; return segment.name + ' ('+ segment.subscribers +')';
}, },
getSearchLabel: function(segment, subscriber) { getSearchLabel: function (segment, subscriber) {
let label = ''; let label = '';
if (subscriber.subscriptions !== undefined) { if (subscriber.subscriptions !== undefined) {
subscriber.subscriptions.map(function(subscription) { subscriber.subscriptions.map(function (subscription) {
if (segment.id === subscription.segment_id) { if (segment.id === subscription.segment_id) {
label = segment.name; label = segment.name;
@ -139,15 +139,15 @@ define(
}); });
var messages = { var messages = {
onUpdate: function() { onUpdate: function () {
MailPoet.Notice.success(MailPoet.I18n.t('subscriberUpdated')); MailPoet.Notice.success(MailPoet.I18n.t('subscriberUpdated'));
}, },
onCreate: function() { onCreate: function () {
MailPoet.Notice.success(MailPoet.I18n.t('subscriberAdded')); MailPoet.Notice.success(MailPoet.I18n.t('subscriberAdded'));
} }
}; };
var beforeFormContent = function(subscriber) { var beforeFormContent = function (subscriber) {
if (~~(subscriber.wp_user_id) > 0) { if (~~(subscriber.wp_user_id) > 0) {
return ( return (
<p className="description"> <p className="description">
@ -167,7 +167,7 @@ define(
} }
}; };
var afterFormContent = function(subscriber) { var afterFormContent = function (subscriber) {
return ( return (
<p className="description"> <p className="description">
<strong> <strong>
@ -180,7 +180,7 @@ define(
var Link = Router.Link; var Link = Router.Link;
var SubscriberForm = React.createClass({ var SubscriberForm = React.createClass({
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">

View File

@ -104,12 +104,12 @@ const bulk_actions = [
{ {
name: 'moveToList', name: 'moveToList',
label: MailPoet.I18n.t('moveToList'), label: MailPoet.I18n.t('moveToList'),
onSelect: function() { onSelect: function () {
let field = { let field = {
id: 'move_to_segment', id: 'move_to_segment',
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
filter: function(segment) { filter: function (segment) {
return !!( return !!(
!segment.deleted_at && segment.type === 'default' !segment.deleted_at && segment.type === 'default'
); );
@ -120,12 +120,12 @@ const bulk_actions = [
<Selection field={ field }/> <Selection field={ field }/>
); );
}, },
getData: function() { getData: function () {
return { return {
segment_id: ~~(jQuery('#move_to_segment').val()) segment_id: ~~(jQuery('#move_to_segment').val())
}; };
}, },
onSuccess: function(response) { onSuccess: function (response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersMovedToList') MailPoet.I18n.t('multipleSubscribersMovedToList')
.replace('%$1d', (~~(response.meta.count)).toLocaleString()) .replace('%$1d', (~~(response.meta.count)).toLocaleString())
@ -136,12 +136,12 @@ const bulk_actions = [
{ {
name: 'addToList', name: 'addToList',
label: MailPoet.I18n.t('addToList'), label: MailPoet.I18n.t('addToList'),
onSelect: function() { onSelect: function () {
let field = { let field = {
id: 'add_to_segment', id: 'add_to_segment',
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
filter: function(segment) { filter: function (segment) {
return !!( return !!(
!segment.deleted_at && segment.type === 'default' !segment.deleted_at && segment.type === 'default'
); );
@ -152,12 +152,12 @@ const bulk_actions = [
<Selection field={ field }/> <Selection field={ field }/>
); );
}, },
getData: function() { getData: function () {
return { return {
segment_id: ~~(jQuery('#add_to_segment').val()) segment_id: ~~(jQuery('#add_to_segment').val())
}; };
}, },
onSuccess: function(response) { onSuccess: function (response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersAddedToList') MailPoet.I18n.t('multipleSubscribersAddedToList')
.replace('%$1d', (~~response.meta.count).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
@ -168,12 +168,12 @@ const bulk_actions = [
{ {
name: 'removeFromList', name: 'removeFromList',
label: MailPoet.I18n.t('removeFromList'), label: MailPoet.I18n.t('removeFromList'),
onSelect: function() { onSelect: function () {
let field = { let field = {
id: 'remove_from_segment', id: 'remove_from_segment',
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
filter: function(segment) { filter: function (segment) {
return !!( return !!(
segment.type === 'default' segment.type === 'default'
); );
@ -184,12 +184,12 @@ const bulk_actions = [
<Selection field={ field }/> <Selection field={ field }/>
); );
}, },
getData: function() { getData: function () {
return { return {
segment_id: ~~(jQuery('#remove_from_segment').val()) segment_id: ~~(jQuery('#remove_from_segment').val())
}; };
}, },
onSuccess: function(response) { onSuccess: function (response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersRemovedFromList') MailPoet.I18n.t('multipleSubscribersRemovedFromList')
.replace('%$1d', (~~response.meta.count).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
@ -200,7 +200,7 @@ const bulk_actions = [
{ {
name: 'removeFromAllLists', name: 'removeFromAllLists',
label: MailPoet.I18n.t('removeFromAllLists'), label: MailPoet.I18n.t('removeFromAllLists'),
onSuccess: function(response) { onSuccess: function (response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists') MailPoet.I18n.t('multipleSubscribersRemovedFromAllLists')
.replace('%$1d', (~~response.meta.count).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
@ -210,7 +210,7 @@ const bulk_actions = [
{ {
name: 'sendConfirmationEmail', name: 'sendConfirmationEmail',
label: MailPoet.I18n.t('resendConfirmationEmail'), label: MailPoet.I18n.t('resendConfirmationEmail'),
onSuccess: function(response) { onSuccess: function (response) {
MailPoet.Notice.success( MailPoet.Notice.success(
MailPoet.I18n.t('multipleConfirmationEmailsSent') MailPoet.I18n.t('multipleConfirmationEmailsSent')
.replace('%$1d', (~~response.meta.count).toLocaleString()) .replace('%$1d', (~~response.meta.count).toLocaleString())
@ -228,7 +228,7 @@ const item_actions = [
{ {
name: 'edit', name: 'edit',
label: MailPoet.I18n.t('edit'), label: MailPoet.I18n.t('edit'),
link: function(subscriber) { link: function (subscriber) {
return ( return (
<Link to={ `/edit/${subscriber.id}` }>{MailPoet.I18n.t('edit')}</Link> <Link to={ `/edit/${subscriber.id}` }>{MailPoet.I18n.t('edit')}</Link>
); );
@ -236,23 +236,23 @@ const item_actions = [
}, },
{ {
name: 'trash', name: 'trash',
display: function(subscriber) { display: function (subscriber) {
return !!(~~subscriber.wp_user_id === 0); return !!(~~subscriber.wp_user_id === 0);
} }
} }
]; ];
const SubscriberList = React.createClass({ const SubscriberList = React.createClass({
getSegmentFromId: function(segment_id) { getSegmentFromId: function (segment_id) {
let result = false; let result = false;
mailpoet_segments.map(function(segment) { mailpoet_segments.map(function (segment) {
if (segment.id === segment_id) { if (segment.id === segment_id) {
result = segment; result = segment;
} }
}); });
return result; return result;
}, },
renderItem: function(subscriber, actions) { renderItem: function (subscriber, actions) {
let row_classes = classNames( let row_classes = classNames(
'manage-column', 'manage-column',
'column-primary', 'column-primary',
@ -344,7 +344,7 @@ const SubscriberList = React.createClass({
</div> </div>
); );
}, },
render: function() { render: function () {
return ( return (
<div> <div>
<h1 className="title"> <h1 className="title">