Fix space-before-function-paren eslint rule
[MAILPOET-985]
This commit is contained in:
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
define([
|
define([
|
||||||
'react',
|
'react',
|
||||||
'moment',
|
'moment',
|
||||||
], function(
|
], function (
|
||||||
React,
|
React,
|
||||||
Moment
|
Moment
|
||||||
) {
|
) {
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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"
|
||||||
|
@ -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 }
|
||||||
|
@ -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(', ');
|
||||||
|
|
||||||
|
@ -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 }
|
||||||
|
@ -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 }
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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 },
|
||||||
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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) }
|
||||||
);
|
);
|
||||||
|
@ -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 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
@ -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'),
|
||||||
|
@ -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>
|
||||||
|
@ -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')
|
||||||
};
|
};
|
||||||
|
@ -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 = (
|
||||||
|
@ -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')
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
@ -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">
|
||||||
|
Reference in New Issue
Block a user