diff --git a/assets/js/src/form/form.jsx b/assets/js/src/form/form.jsx index b0497727ee..f5bcc307a0 100644 --- a/assets/js/src/form/form.jsx +++ b/assets/js/src/form/form.jsx @@ -181,11 +181,20 @@ define( } const fields = this.props.fields.map((field, i) => { + // Compose an onChange handler from the default and custom one + let onValueChange = this.handleValueChange; + if (field.onBeforeChange) { + onValueChange = (e) => { + field.onBeforeChange(e); + return this.handleValueChange(e); + }; + } + return ( ); }); diff --git a/assets/js/src/listing/filters.jsx b/assets/js/src/listing/filters.jsx index 00bc57fd1d..facbbc65d0 100644 --- a/assets/js/src/listing/filters.jsx +++ b/assets/js/src/listing/filters.jsx @@ -14,6 +14,9 @@ define([ this.getAvailableFilters().map((filter, i) => { filters[this.refs['filter-'+i].name] = this.refs['filter-'+i].value; }); + if (this.props.onBeforeSelectFilter) { + this.props.onBeforeSelectFilter(filters); + } return this.props.onSelectFilter(filters); }, handleEmptyTrash: function () { diff --git a/assets/js/src/listing/listing.jsx b/assets/js/src/listing/listing.jsx index bf8c456566..38e7c3d1d2 100644 --- a/assets/js/src/listing/listing.jsx +++ b/assets/js/src/listing/listing.jsx @@ -828,6 +828,7 @@ const Listing = React.createClass({ filters={ this.state.filters } filter={ this.state.filter } group={ this.state.group } + onBeforeSelectFilter={ this.props.onBeforeSelectFilter || null } onSelectFilter={ this.handleFilter } onEmptyTrash={ this.handleEmptyTrash } /> diff --git a/assets/js/src/newsletters/listings/mixins.jsx b/assets/js/src/newsletters/listings/mixins.jsx index 4379c26807..7d2e0dd0bb 100644 --- a/assets/js/src/newsletters/listings/mixins.jsx +++ b/assets/js/src/newsletters/listings/mixins.jsx @@ -286,6 +286,7 @@ const _StatisticsMixin = { {content} diff --git a/lib/Twig/Functions.php b/lib/Twig/Functions.php index 777b4405c1..83d014cb06 100644 --- a/lib/Twig/Functions.php +++ b/lib/Twig/Functions.php @@ -61,6 +61,11 @@ class Functions extends \Twig_Extension { array($this, 'getMailPoetVersion'), array('is_safe' => array('all')) ), + new \Twig_SimpleFunction( + 'mailpoet_premium_version', + array($this, 'getMailPoetPremiumVersion'), + array('is_safe' => array('all')) + ), new \Twig_SimpleFunction( 'wp_time_format', array($this, 'getWPTimeFormat'), @@ -125,6 +130,10 @@ class Functions extends \Twig_Extension { return MAILPOET_VERSION; } + function getMailPoetPremiumVersion() { + return (defined('MAILPOET_PREMIUM_VERSION')) ? MAILPOET_PREMIUM_VERSION : 'N/A'; + } + function getWPTimeFormat() { return (get_option('time_format')) ? get_option('time_format') : diff --git a/views/layout.html b/views/layout.html index c4884a9832..6e86042c99 100644 --- a/views/layout.html +++ b/views/layout.html @@ -45,6 +45,7 @@ jQuery('.toplevel_page_mailpoet-newsletters.menu-top-last') var mailpoet_date_format = "<%= wp_datetime_format()|escape('js') %>"; var mailpoet_time_format = "<%= wp_time_format()|escape('js') %>"; var mailpoet_version = "<%= mailpoet_version() %>"; + var mailpoet_premium_version = "<%= mailpoet_premium_version() %>"; var mailpoet_analytics_enabled = <%= is_analytics_enabled() | json_encode %>; var mailpoet_analytics_data = <%= json_encode(get_analytics_data()) %>;