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()) %>;