Version Description
- 2017-02-23 =
- Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
- Fixed: sending is not interrupted when a post included in the email is trashed. Thanks Bernhard!
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (New) |
Version | 3.0.0-beta.20 |
Comparing to | |
See all releases |
Code changes from version 3.0.0-beta.19 to 3.0.0-beta.20
- assets/js/form_editor.js +16 -8
- assets/js/mailpoet.js +5 -5
- assets/js/public.js +5 -5
- lang/mailpoet.pot +52 -48
- lib/API/API.php +42 -17
- lib/API/Endpoints/Newsletters.php +11 -12
- lib/Models/NewsletterOption.php +16 -0
- lib/Newsletter/Shortcodes/Categories/Newsletter.php +1 -1
- lib/Subscribers/ImportExport/Import/Import.php +1 -1
- lib/Twig/Functions.php +5 -0
- mailpoet.php +2 -2
- readme.txt +5 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
- vendor/sebastian/index.php +0 -0
- views/settings/basics.html +1 -0
assets/js/form_editor.js
CHANGED
@@ -6593,20 +6593,25 @@ webpackJsonp([1],{
|
|
6593 |
adjustScrollWhenAboveVisible(cm, line, -height)
|
6594 |
regLineChange(cm, no, "widget")
|
6595 |
})
|
6596 |
-
signalLater(cm, "lineWidgetCleared", cm, this)
|
6597 |
}
|
6598 |
};
|
6599 |
|
6600 |
LineWidget.prototype.changed = function () {
|
|
|
|
|
6601 |
var oldH = this.height, cm = this.doc.cm, line = this.line
|
6602 |
this.height = null
|
6603 |
var diff = widgetHeight(this) - oldH
|
6604 |
if (!diff) { return }
|
6605 |
updateLineHeight(line, line.height + diff)
|
6606 |
-
if (cm) {
|
6607 |
-
cm
|
6608 |
-
|
6609 |
-
|
|
|
|
|
|
|
6610 |
};
|
6611 |
eventMixin(LineWidget)
|
6612 |
|
@@ -6632,7 +6637,7 @@ webpackJsonp([1],{
|
|
6632 |
}
|
6633 |
return true
|
6634 |
})
|
6635 |
-
signalLater(cm, "lineWidgetAdded", cm, widget)
|
6636 |
return widget
|
6637 |
}
|
6638 |
|
@@ -6700,7 +6705,7 @@ webpackJsonp([1],{
|
|
6700 |
this.doc.cantEdit = false
|
6701 |
if (cm) { reCheckSelection(cm.doc) }
|
6702 |
}
|
6703 |
-
if (cm) { signalLater(cm, "markerCleared", cm, this) }
|
6704 |
if (withOp) { endOperation(cm) }
|
6705 |
if (this.parent) { this.parent.clear() }
|
6706 |
};
|
@@ -6733,6 +6738,8 @@ webpackJsonp([1],{
|
|
6733 |
// Signals that the marker's widget changed, and surrounding layout
|
6734 |
// should be recomputed.
|
6735 |
TextMarker.prototype.changed = function () {
|
|
|
|
|
6736 |
var pos = this.find(-1, true), widget = this, cm = this.doc.cm
|
6737 |
if (!pos || !cm) { return }
|
6738 |
runInOp(cm, function () {
|
@@ -6750,6 +6757,7 @@ webpackJsonp([1],{
|
|
6750 |
if (dHeight)
|
6751 |
{ updateLineHeight(line, line.height + dHeight) }
|
6752 |
}
|
|
|
6753 |
})
|
6754 |
};
|
6755 |
|
@@ -10317,7 +10325,7 @@ webpackJsonp([1],{
|
|
10317 |
|
10318 |
addLegacyProps(CodeMirror)
|
10319 |
|
10320 |
-
CodeMirror.version = "5.24.
|
10321 |
|
10322 |
return CodeMirror;
|
10323 |
|
6593 |
adjustScrollWhenAboveVisible(cm, line, -height)
|
6594 |
regLineChange(cm, no, "widget")
|
6595 |
})
|
6596 |
+
signalLater(cm, "lineWidgetCleared", cm, this, no)
|
6597 |
}
|
6598 |
};
|
6599 |
|
6600 |
LineWidget.prototype.changed = function () {
|
6601 |
+
var this$1 = this;
|
6602 |
+
|
6603 |
var oldH = this.height, cm = this.doc.cm, line = this.line
|
6604 |
this.height = null
|
6605 |
var diff = widgetHeight(this) - oldH
|
6606 |
if (!diff) { return }
|
6607 |
updateLineHeight(line, line.height + diff)
|
6608 |
+
if (cm) {
|
6609 |
+
runInOp(cm, function () {
|
6610 |
+
cm.curOp.forceUpdate = true
|
6611 |
+
adjustScrollWhenAboveVisible(cm, line, diff)
|
6612 |
+
signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line))
|
6613 |
+
})
|
6614 |
+
}
|
6615 |
};
|
6616 |
eventMixin(LineWidget)
|
6617 |
|
6637 |
}
|
6638 |
return true
|
6639 |
})
|
6640 |
+
signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle))
|
6641 |
return widget
|
6642 |
}
|
6643 |
|
6705 |
this.doc.cantEdit = false
|
6706 |
if (cm) { reCheckSelection(cm.doc) }
|
6707 |
}
|
6708 |
+
if (cm) { signalLater(cm, "markerCleared", cm, this, min, max) }
|
6709 |
if (withOp) { endOperation(cm) }
|
6710 |
if (this.parent) { this.parent.clear() }
|
6711 |
};
|
6738 |
// Signals that the marker's widget changed, and surrounding layout
|
6739 |
// should be recomputed.
|
6740 |
TextMarker.prototype.changed = function () {
|
6741 |
+
var this$1 = this;
|
6742 |
+
|
6743 |
var pos = this.find(-1, true), widget = this, cm = this.doc.cm
|
6744 |
if (!pos || !cm) { return }
|
6745 |
runInOp(cm, function () {
|
6757 |
if (dHeight)
|
6758 |
{ updateLineHeight(line, line.height + dHeight) }
|
6759 |
}
|
6760 |
+
signalLater(cm, "markerChanged", cm, this$1)
|
6761 |
})
|
6762 |
};
|
6763 |
|
10325 |
|
10326 |
addLegacyProps(CodeMirror)
|
10327 |
|
10328 |
+
CodeMirror.version = "5.24.2"
|
10329 |
|
10330 |
return CodeMirror;
|
10331 |
|
assets/js/mailpoet.js
CHANGED
@@ -18093,7 +18093,7 @@ webpackJsonp([2],[
|
|
18093 |
|
18094 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
18095 |
* Parsley.js
|
18096 |
-
* Version 2.6.
|
18097 |
* http://parsleyjs.org
|
18098 |
* Guillaume Potier - <guillaume@wisembly.com>
|
18099 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
@@ -18532,7 +18532,7 @@ webpackJsonp([2],[
|
|
18532 |
|
18533 |
if (arguments.length > 3) // If more args then value, requirement, instance...
|
18534 |
requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
|
18535 |
-
return this.fn
|
18536 |
}
|
18537 |
|
18538 |
if ($.isArray(value)) {
|
@@ -19437,7 +19437,7 @@ webpackJsonp([2],[
|
|
19437 |
});
|
19438 |
|
19439 |
$.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
|
19440 |
-
field.
|
19441 |
});
|
19442 |
});
|
19443 |
return this;
|
@@ -19976,7 +19976,7 @@ webpackJsonp([2],[
|
|
19976 |
ParsleyFactory.prototype = {
|
19977 |
init: function init(options) {
|
19978 |
this.__class__ = 'Parsley';
|
19979 |
-
this.__version__ = '2.6.
|
19980 |
this.__id__ = ParsleyUtils__default.generateID();
|
19981 |
|
19982 |
// Pre-compute options
|
@@ -20098,7 +20098,7 @@ webpackJsonp([2],[
|
|
20098 |
actualizeOptions: null,
|
20099 |
_resetOptions: null,
|
20100 |
Factory: ParsleyFactory,
|
20101 |
-
version: '2.6.
|
20102 |
});
|
20103 |
|
20104 |
// Supplement ParsleyField and Form with ParsleyAbstract
|
18093 |
|
18094 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
18095 |
* Parsley.js
|
18096 |
+
* Version 2.6.4 - built Thu, Feb 23rd 2017, 3:02 pm
|
18097 |
* http://parsleyjs.org
|
18098 |
* Guillaume Potier - <guillaume@wisembly.com>
|
18099 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
18532 |
|
18533 |
if (arguments.length > 3) // If more args then value, requirement, instance...
|
18534 |
requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
|
18535 |
+
return this.fn(value, requirementFirstArg);
|
18536 |
}
|
18537 |
|
18538 |
if ($.isArray(value)) {
|
19437 |
});
|
19438 |
|
19439 |
$.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
|
19440 |
+
field.reset();
|
19441 |
});
|
19442 |
});
|
19443 |
return this;
|
19976 |
ParsleyFactory.prototype = {
|
19977 |
init: function init(options) {
|
19978 |
this.__class__ = 'Parsley';
|
19979 |
+
this.__version__ = '2.6.4';
|
19980 |
this.__id__ = ParsleyUtils__default.generateID();
|
19981 |
|
19982 |
// Pre-compute options
|
20098 |
actualizeOptions: null,
|
20099 |
_resetOptions: null,
|
20100 |
Factory: ParsleyFactory,
|
20101 |
+
version: '2.6.4'
|
20102 |
});
|
20103 |
|
20104 |
// Supplement ParsleyField and Form with ParsleyAbstract
|
assets/js/public.js
CHANGED
@@ -1945,7 +1945,7 @@
|
|
1945 |
|
1946 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
1947 |
* Parsley.js
|
1948 |
-
* Version 2.6.
|
1949 |
* http://parsleyjs.org
|
1950 |
* Guillaume Potier - <guillaume@wisembly.com>
|
1951 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
@@ -2384,7 +2384,7 @@
|
|
2384 |
|
2385 |
if (arguments.length > 3) // If more args then value, requirement, instance...
|
2386 |
requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
|
2387 |
-
return this.fn
|
2388 |
}
|
2389 |
|
2390 |
if ($.isArray(value)) {
|
@@ -3289,7 +3289,7 @@
|
|
3289 |
});
|
3290 |
|
3291 |
$.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
|
3292 |
-
field.
|
3293 |
});
|
3294 |
});
|
3295 |
return this;
|
@@ -3828,7 +3828,7 @@
|
|
3828 |
ParsleyFactory.prototype = {
|
3829 |
init: function init(options) {
|
3830 |
this.__class__ = 'Parsley';
|
3831 |
-
this.__version__ = '2.6.
|
3832 |
this.__id__ = ParsleyUtils__default.generateID();
|
3833 |
|
3834 |
// Pre-compute options
|
@@ -3950,7 +3950,7 @@
|
|
3950 |
actualizeOptions: null,
|
3951 |
_resetOptions: null,
|
3952 |
Factory: ParsleyFactory,
|
3953 |
-
version: '2.6.
|
3954 |
});
|
3955 |
|
3956 |
// Supplement ParsleyField and Form with ParsleyAbstract
|
1945 |
|
1946 |
/* WEBPACK VAR INJECTION */(function(global) {/*!
|
1947 |
* Parsley.js
|
1948 |
+
* Version 2.6.4 - built Thu, Feb 23rd 2017, 3:02 pm
|
1949 |
* http://parsleyjs.org
|
1950 |
* Guillaume Potier - <guillaume@wisembly.com>
|
1951 |
* Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
|
2384 |
|
2385 |
if (arguments.length > 3) // If more args then value, requirement, instance...
|
2386 |
requirementFirstArg = [].slice.call(arguments, 1, -1); // Skip first arg (value) and last (instance), combining the rest
|
2387 |
+
return this.fn(value, requirementFirstArg);
|
2388 |
}
|
2389 |
|
2390 |
if ($.isArray(value)) {
|
3289 |
});
|
3290 |
|
3291 |
$.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
|
3292 |
+
field.reset();
|
3293 |
});
|
3294 |
});
|
3295 |
return this;
|
3828 |
ParsleyFactory.prototype = {
|
3829 |
init: function init(options) {
|
3830 |
this.__class__ = 'Parsley';
|
3831 |
+
this.__version__ = '2.6.4';
|
3832 |
this.__id__ = ParsleyUtils__default.generateID();
|
3833 |
|
3834 |
// Pre-compute options
|
3950 |
actualizeOptions: null,
|
3951 |
_resetOptions: null,
|
3952 |
Factory: ParsleyFactory,
|
3953 |
+
version: '2.6.4'
|
3954 |
});
|
3955 |
|
3956 |
// Supplement ParsleyField and Form with ParsleyAbstract
|
lang/mailpoet.pot
CHANGED
@@ -4,7 +4,7 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
-
"POT-Creation-Date: 2017-02-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -26,11 +26,11 @@ msgstr ""
|
|
26 |
"X-Poedit-Bookmarks: \n"
|
27 |
"X-Textdomain-Support: yes\n"
|
28 |
|
29 |
-
#: lib/API/API.php:
|
30 |
msgid "Invalid request"
|
31 |
msgstr ""
|
32 |
|
33 |
-
#: lib/API/API.php:
|
34 |
msgid "You do not have the required permissions."
|
35 |
msgstr ""
|
36 |
|
@@ -74,12 +74,12 @@ msgstr ""
|
|
74 |
msgid "Check your inbox or spam folder to confirm your subscription."
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:
|
78 |
#: lib/API/Endpoints/Segments.php:119
|
79 |
msgid "Copy of %s"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:
|
83 |
msgid "The email could not be sent: %s"
|
84 |
msgstr ""
|
85 |
|
@@ -88,24 +88,24 @@ msgstr ""
|
|
88 |
msgid "This template does not exist."
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:
|
92 |
-
#: lib/API/Endpoints/Newsletters.php:
|
93 |
-
#: lib/API/Endpoints/Newsletters.php:
|
94 |
-
#: lib/API/Endpoints/Newsletters.php:
|
95 |
#: lib/API/Endpoints/SendingQueue.php:28 lib/API/Endpoints/SendingQueue.php:115
|
96 |
#: lib/API/Endpoints/SendingQueue.php:141
|
97 |
msgid "This newsletter does not exist."
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: lib/API/Endpoints/Newsletters.php:
|
101 |
msgid "You need to specify a status."
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: lib/API/Endpoints/Newsletters.php:
|
105 |
msgid "Newsletter data is missing."
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: lib/API/Endpoints/Newsletters.php:
|
109 |
msgid "Please specify receiver information."
|
110 |
msgstr ""
|
111 |
|
@@ -1487,6 +1487,10 @@ msgstr ""
|
|
1487 |
msgid "Missing or invalid subscriber data."
|
1488 |
msgstr ""
|
1489 |
|
|
|
|
|
|
|
|
|
1490 |
#: lib/Subscribers/ImportExport/Import/MailChimp.php:128
|
1491 |
msgid "Invalid API Key."
|
1492 |
msgstr ""
|
@@ -1626,19 +1630,19 @@ msgstr ""
|
|
1626 |
msgid "Accidentally unsubscribed?"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
-
#: lib/Twig/Functions.php:
|
1630 |
msgid "every minute"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
-
#: lib/Twig/Functions.php:
|
1634 |
msgid "every %1$d minutes"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
-
#: lib/Twig/Functions.php:
|
1638 |
msgid "every hour"
|
1639 |
msgstr ""
|
1640 |
|
1641 |
-
#: lib/Twig/Functions.php:
|
1642 |
msgid "every %1$d hours"
|
1643 |
msgstr ""
|
1644 |
|
@@ -1723,8 +1727,8 @@ msgstr ""
|
|
1723 |
|
1724 |
#: views/form/editor.html:195
|
1725 |
#: views/newsletter/templates/components/sidebar/preview.hbs:2
|
1726 |
-
#: views/newsletters.html:101 views/settings/basics.html:
|
1727 |
-
#: views/settings/basics.html:
|
1728 |
msgid "Preview"
|
1729 |
msgstr ""
|
1730 |
|
@@ -3230,7 +3234,7 @@ msgstr ""
|
|
3230 |
msgid "john.doe@email.com"
|
3231 |
msgstr ""
|
3232 |
|
3233 |
-
#: views/newsletters.html:158 views/settings/basics.html:
|
3234 |
#: views/settings/signup.html:85
|
3235 |
msgid "Reply-to"
|
3236 |
msgstr ""
|
@@ -3631,128 +3635,128 @@ msgid ""
|
|
3631 |
"(newsletters, statistics, subscribers, etc.)."
|
3632 |
msgstr ""
|
3633 |
|
3634 |
-
#: views/settings/basics.html:
|
3635 |
msgid "Default sender"
|
3636 |
msgstr ""
|
3637 |
|
3638 |
-
#: views/settings/basics.html:
|
3639 |
msgid "These email addresses will be selected by default for each new email."
|
3640 |
msgstr ""
|
3641 |
|
3642 |
-
#: views/settings/basics.html:
|
3643 |
msgid "From"
|
3644 |
msgstr ""
|
3645 |
|
3646 |
-
#: views/settings/basics.html:
|
3647 |
#: views/settings/signup.html:69 views/settings/signup.html:95
|
3648 |
msgid "Your name"
|
3649 |
msgstr ""
|
3650 |
|
3651 |
-
#: views/settings/basics.html:
|
3652 |
msgid "Email notifications"
|
3653 |
msgstr ""
|
3654 |
|
3655 |
-
#: views/settings/basics.html:
|
3656 |
msgid ""
|
3657 |
"These email addresses will receive notifications (separate each address "
|
3658 |
"with a comma)."
|
3659 |
msgstr ""
|
3660 |
|
3661 |
-
#: views/settings/basics.html:
|
3662 |
msgid "When someone subscribes"
|
3663 |
msgstr ""
|
3664 |
|
3665 |
-
#: views/settings/basics.html:
|
3666 |
msgid "When someone unsubscribes"
|
3667 |
msgstr ""
|
3668 |
|
3669 |
-
#: views/settings/basics.html:
|
3670 |
msgid "Subscribe in comments"
|
3671 |
msgstr ""
|
3672 |
|
3673 |
-
#: views/settings/basics.html:
|
3674 |
msgid "Visitors that comment on a post can subscribe to your list via a checkbox."
|
3675 |
msgstr ""
|
3676 |
|
3677 |
-
#: views/settings/basics.html:
|
3678 |
msgid "Yes, add me to your mailing list"
|
3679 |
msgstr ""
|
3680 |
|
3681 |
-
#: views/settings/basics.html:
|
3682 |
msgid "Users will be subscribed to these lists:"
|
3683 |
msgstr ""
|
3684 |
|
3685 |
-
#: views/settings/basics.html:
|
3686 |
msgid "Choose a list"
|
3687 |
msgstr ""
|
3688 |
|
3689 |
-
#: views/settings/basics.html:
|
3690 |
msgid "Subscribe in registration form"
|
3691 |
msgstr ""
|
3692 |
|
3693 |
-
#: views/settings/basics.html:
|
3694 |
msgid ""
|
3695 |
"Allow users who register as a WordPress user on your website to subscribe "
|
3696 |
"to a MailPoet list (in addition to the \"WordPress Users\" list)."
|
3697 |
msgstr ""
|
3698 |
|
3699 |
-
#: views/settings/basics.html:
|
3700 |
msgid "Registration is disabled on this site."
|
3701 |
msgstr ""
|
3702 |
|
3703 |
-
#: views/settings/basics.html:
|
3704 |
msgid "Manage Subscription page"
|
3705 |
msgstr ""
|
3706 |
|
3707 |
-
#: views/settings/basics.html:
|
3708 |
msgid ""
|
3709 |
"When your subscribers click the \"Manage your subscription\" link, they "
|
3710 |
"will be directed to this page."
|
3711 |
msgstr ""
|
3712 |
|
3713 |
-
#: views/settings/basics.html:
|
3714 |
#: views/settings/signup.html:176
|
3715 |
msgid "Preview page"
|
3716 |
msgstr ""
|
3717 |
|
3718 |
-
#: views/settings/basics.html:
|
3719 |
msgid "Subscribers can choose from these lists:"
|
3720 |
msgstr ""
|
3721 |
|
3722 |
-
#: views/settings/basics.html:
|
3723 |
-
#: views/settings/basics.html:
|
3724 |
msgid "Leave this field empty to display all lists"
|
3725 |
msgstr ""
|
3726 |
|
3727 |
-
#: views/settings/basics.html:
|
3728 |
msgid "Unsubscribe page"
|
3729 |
msgstr ""
|
3730 |
|
3731 |
-
#: views/settings/basics.html:
|
3732 |
msgid ""
|
3733 |
"When your subscribers click the \"Unsubscribe\" link, they will be directed "
|
3734 |
"to this page."
|
3735 |
msgstr ""
|
3736 |
|
3737 |
-
#: views/settings/basics.html:
|
3738 |
msgid ""
|
3739 |
"If you want to use a custom Unsubscribe page, simply paste this shortcode "
|
3740 |
"on to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
|
3741 |
msgstr ""
|
3742 |
|
3743 |
-
#: views/settings/basics.html:
|
3744 |
msgid "Archive page shortcode"
|
3745 |
msgstr ""
|
3746 |
|
3747 |
-
#: views/settings/basics.html:
|
3748 |
msgid "Paste this shortcode on a page to display a list of past newsletters."
|
3749 |
msgstr ""
|
3750 |
|
3751 |
-
#: views/settings/basics.html:
|
3752 |
msgid "Shortcode to display total number of subscribers"
|
3753 |
msgstr ""
|
3754 |
|
3755 |
-
#: views/settings/basics.html:
|
3756 |
msgid ""
|
3757 |
"Paste this shortcode on a post or page to display the total number of "
|
3758 |
"confirmed subscribers."
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
+
"POT-Creation-Date: 2017-02-23 23:10:22+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
26 |
"X-Poedit-Bookmarks: \n"
|
27 |
"X-Textdomain-Support: yes\n"
|
28 |
|
29 |
+
#: lib/API/API.php:50 lib/API/API.php:77
|
30 |
msgid "Invalid request"
|
31 |
msgstr ""
|
32 |
|
33 |
+
#: lib/API/API.php:131
|
34 |
msgid "You do not have the required permissions."
|
35 |
msgstr ""
|
36 |
|
74 |
msgid "Check your inbox or spam folder to confirm your subscription."
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:187
|
78 |
#: lib/API/Endpoints/Segments.php:119
|
79 |
msgid "Copy of %s"
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:285
|
83 |
msgid "The email could not be sent: %s"
|
84 |
msgstr ""
|
85 |
|
88 |
msgid "This template does not exist."
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:116
|
92 |
+
#: lib/API/Endpoints/Newsletters.php:137 lib/API/Endpoints/Newsletters.php:153
|
93 |
+
#: lib/API/Endpoints/Newsletters.php:169 lib/API/Endpoints/Newsletters.php:183
|
94 |
+
#: lib/API/Endpoints/Newsletters.php:215 lib/API/Endpoints/Newsletters.php:246
|
95 |
#: lib/API/Endpoints/SendingQueue.php:28 lib/API/Endpoints/SendingQueue.php:115
|
96 |
#: lib/API/Endpoints/SendingQueue.php:141
|
97 |
msgid "This newsletter does not exist."
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: lib/API/Endpoints/Newsletters.php:107
|
101 |
msgid "You need to specify a status."
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: lib/API/Endpoints/Newsletters.php:206
|
105 |
msgid "Newsletter data is missing."
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: lib/API/Endpoints/Newsletters.php:237
|
109 |
msgid "Please specify receiver information."
|
110 |
msgstr ""
|
111 |
|
1487 |
msgid "Missing or invalid subscriber data."
|
1488 |
msgstr ""
|
1489 |
|
1490 |
+
#: lib/Subscribers/ImportExport/Import/Import.php:111
|
1491 |
+
msgid "Unable to save imported subscribers."
|
1492 |
+
msgstr ""
|
1493 |
+
|
1494 |
#: lib/Subscribers/ImportExport/Import/MailChimp.php:128
|
1495 |
msgid "Invalid API Key."
|
1496 |
msgstr ""
|
1630 |
msgid "Accidentally unsubscribed?"
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
#: lib/Twig/Functions.php:83 views/settings/mta.html:1049
|
1634 |
msgid "every minute"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
+
#: lib/Twig/Functions.php:84 views/settings/mta.html:1050
|
1638 |
msgid "every %1$d minutes"
|
1639 |
msgstr ""
|
1640 |
|
1641 |
+
#: lib/Twig/Functions.php:85 views/settings/mta.html:1051
|
1642 |
msgid "every hour"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
#: lib/Twig/Functions.php:86 views/settings/mta.html:1052
|
1646 |
msgid "every %1$d hours"
|
1647 |
msgstr ""
|
1648 |
|
1727 |
|
1728 |
#: views/form/editor.html:195
|
1729 |
#: views/newsletter/templates/components/sidebar/preview.hbs:2
|
1730 |
+
#: views/newsletters.html:101 views/settings/basics.html:243
|
1731 |
+
#: views/settings/basics.html:300 views/settings/signup.html:177
|
1732 |
msgid "Preview"
|
1733 |
msgstr ""
|
1734 |
|
3234 |
msgid "john.doe@email.com"
|
3235 |
msgstr ""
|
3236 |
|
3237 |
+
#: views/newsletters.html:158 views/settings/basics.html:30
|
3238 |
#: views/settings/signup.html:85
|
3239 |
msgid "Reply-to"
|
3240 |
msgstr ""
|
3635 |
"(newsletters, statistics, subscribers, etc.)."
|
3636 |
msgstr ""
|
3637 |
|
3638 |
+
#: views/settings/basics.html:7
|
3639 |
msgid "Default sender"
|
3640 |
msgstr ""
|
3641 |
|
3642 |
+
#: views/settings/basics.html:10
|
3643 |
msgid "These email addresses will be selected by default for each new email."
|
3644 |
msgstr ""
|
3645 |
|
3646 |
+
#: views/settings/basics.html:16 views/settings/signup.html:59
|
3647 |
msgid "From"
|
3648 |
msgstr ""
|
3649 |
|
3650 |
+
#: views/settings/basics.html:21 views/settings/basics.html:35
|
3651 |
#: views/settings/signup.html:69 views/settings/signup.html:95
|
3652 |
msgid "Your name"
|
3653 |
msgstr ""
|
3654 |
|
3655 |
+
#: views/settings/basics.html:48
|
3656 |
msgid "Email notifications"
|
3657 |
msgstr ""
|
3658 |
|
3659 |
+
#: views/settings/basics.html:51
|
3660 |
msgid ""
|
3661 |
"These email addresses will receive notifications (separate each address "
|
3662 |
"with a comma)."
|
3663 |
msgstr ""
|
3664 |
|
3665 |
+
#: views/settings/basics.html:69
|
3666 |
msgid "When someone subscribes"
|
3667 |
msgstr ""
|
3668 |
|
3669 |
+
#: views/settings/basics.html:79
|
3670 |
msgid "When someone unsubscribes"
|
3671 |
msgstr ""
|
3672 |
|
3673 |
+
#: views/settings/basics.html:89
|
3674 |
msgid "Subscribe in comments"
|
3675 |
msgstr ""
|
3676 |
|
3677 |
+
#: views/settings/basics.html:92
|
3678 |
msgid "Visitors that comment on a post can subscribe to your list via a checkbox."
|
3679 |
msgstr ""
|
3680 |
|
3681 |
+
#: views/settings/basics.html:116 views/settings/basics.html:180
|
3682 |
msgid "Yes, add me to your mailing list"
|
3683 |
msgstr ""
|
3684 |
|
3685 |
+
#: views/settings/basics.html:121 views/settings/basics.html:185
|
3686 |
msgid "Users will be subscribed to these lists:"
|
3687 |
msgstr ""
|
3688 |
|
3689 |
+
#: views/settings/basics.html:127 views/settings/basics.html:191
|
3690 |
msgid "Choose a list"
|
3691 |
msgstr ""
|
3692 |
|
3693 |
+
#: views/settings/basics.html:149
|
3694 |
msgid "Subscribe in registration form"
|
3695 |
msgstr ""
|
3696 |
|
3697 |
+
#: views/settings/basics.html:152
|
3698 |
msgid ""
|
3699 |
"Allow users who register as a WordPress user on your website to subscribe "
|
3700 |
"to a MailPoet list (in addition to the \"WordPress Users\" list)."
|
3701 |
msgstr ""
|
3702 |
|
3703 |
+
#: views/settings/basics.html:207
|
3704 |
msgid "Registration is disabled on this site."
|
3705 |
msgstr ""
|
3706 |
|
3707 |
+
#: views/settings/basics.html:216
|
3708 |
msgid "Manage Subscription page"
|
3709 |
msgstr ""
|
3710 |
|
3711 |
+
#: views/settings/basics.html:219
|
3712 |
msgid ""
|
3713 |
"When your subscribers click the \"Manage your subscription\" link, they "
|
3714 |
"will be directed to this page."
|
3715 |
msgstr ""
|
3716 |
|
3717 |
+
#: views/settings/basics.html:242 views/settings/basics.html:299
|
3718 |
#: views/settings/signup.html:176
|
3719 |
msgid "Preview page"
|
3720 |
msgstr ""
|
3721 |
|
3722 |
+
#: views/settings/basics.html:246
|
3723 |
msgid "Subscribers can choose from these lists:"
|
3724 |
msgstr ""
|
3725 |
|
3726 |
+
#: views/settings/basics.html:252 views/settings/basics.html:330
|
3727 |
+
#: views/settings/basics.html:366
|
3728 |
msgid "Leave this field empty to display all lists"
|
3729 |
msgstr ""
|
3730 |
|
3731 |
+
#: views/settings/basics.html:271
|
3732 |
msgid "Unsubscribe page"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
+
#: views/settings/basics.html:274
|
3736 |
msgid ""
|
3737 |
"When your subscribers click the \"Unsubscribe\" link, they will be directed "
|
3738 |
"to this page."
|
3739 |
msgstr ""
|
3740 |
|
3741 |
+
#: views/settings/basics.html:276
|
3742 |
msgid ""
|
3743 |
"If you want to use a custom Unsubscribe page, simply paste this shortcode "
|
3744 |
"on to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
|
3745 |
msgstr ""
|
3746 |
|
3747 |
+
#: views/settings/basics.html:308
|
3748 |
msgid "Archive page shortcode"
|
3749 |
msgstr ""
|
3750 |
|
3751 |
+
#: views/settings/basics.html:311
|
3752 |
msgid "Paste this shortcode on a page to display a list of past newsletters."
|
3753 |
msgstr ""
|
3754 |
|
3755 |
+
#: views/settings/basics.html:344
|
3756 |
msgid "Shortcode to display total number of subscribers"
|
3757 |
msgstr ""
|
3758 |
|
3759 |
+
#: views/settings/basics.html:347
|
3760 |
msgid ""
|
3761 |
"Paste this shortcode on a post or page to display the total number of "
|
3762 |
"confirmed subscribers."
|
lib/API/API.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace MailPoet\API;
|
|
|
|
|
3 |
use MailPoet\Util\Security;
|
4 |
|
5 |
if(!defined('ABSPATH')) exit;
|
@@ -9,9 +11,14 @@ class API {
|
|
9 |
private $_method;
|
10 |
private $_token;
|
11 |
|
|
|
12 |
private $_endpoint_class;
|
13 |
private $_data = array();
|
14 |
|
|
|
|
|
|
|
|
|
15 |
function init() {
|
16 |
// Admin Security token
|
17 |
add_action(
|
@@ -33,7 +40,9 @@ class API {
|
|
33 |
}
|
34 |
|
35 |
function setupAjax() {
|
36 |
-
$this
|
|
|
|
|
37 |
|
38 |
if($this->checkToken() === false) {
|
39 |
$error_response = new ErrorResponse(
|
@@ -46,18 +55,19 @@ class API {
|
|
46 |
$error_response->send();
|
47 |
}
|
48 |
|
49 |
-
$this->processRoute();
|
|
|
50 |
}
|
51 |
|
52 |
-
function getRequestData() {
|
53 |
-
$this->_endpoint = isset($
|
54 |
-
? trim($
|
55 |
: null;
|
56 |
-
$this->_method = isset($
|
57 |
-
? trim($
|
58 |
: null;
|
59 |
-
$this->_token = isset($
|
60 |
-
? trim($
|
61 |
: null;
|
62 |
|
63 |
if(!$this->_endpoint || !$this->_method) {
|
@@ -71,12 +81,15 @@ class API {
|
|
71 |
);
|
72 |
$error_response->send();
|
73 |
} else {
|
74 |
-
$this->
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
77 |
|
78 |
-
$this->_data = isset($
|
79 |
-
? stripslashes_deep($
|
80 |
: array();
|
81 |
|
82 |
// remove reserved keywords from data
|
@@ -98,6 +111,10 @@ class API {
|
|
98 |
|
99 |
function processRoute() {
|
100 |
try {
|
|
|
|
|
|
|
|
|
101 |
$endpoint = new $this->_endpoint_class();
|
102 |
|
103 |
// check the accessibility of the requested endpoint's action
|
@@ -119,17 +136,17 @@ class API {
|
|
119 |
array(),
|
120 |
Response::STATUS_FORBIDDEN
|
121 |
);
|
122 |
-
$error_response
|
123 |
}
|
124 |
}
|
125 |
|
126 |
$response = $endpoint->{$this->_method}($this->_data);
|
127 |
-
$response
|
128 |
} catch(\Exception $e) {
|
129 |
$error_response = new ErrorResponse(
|
130 |
array($e->getCode() => $e->getMessage())
|
131 |
);
|
132 |
-
$error_response
|
133 |
}
|
134 |
}
|
135 |
|
@@ -149,4 +166,12 @@ class API {
|
|
149 |
$global .= '</script>';
|
150 |
echo $global;
|
151 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
}
|
1 |
<?php
|
2 |
namespace MailPoet\API;
|
3 |
+
|
4 |
+
use MailPoet\Util\Helpers;
|
5 |
use MailPoet\Util\Security;
|
6 |
|
7 |
if(!defined('ABSPATH')) exit;
|
11 |
private $_method;
|
12 |
private $_token;
|
13 |
|
14 |
+
private $_endpoint_namespaces = array();
|
15 |
private $_endpoint_class;
|
16 |
private $_data = array();
|
17 |
|
18 |
+
function __construct() {
|
19 |
+
$this->addEndpointNamespace(__NAMESPACE__ . "\\Endpoints");
|
20 |
+
}
|
21 |
+
|
22 |
function init() {
|
23 |
// Admin Security token
|
24 |
add_action(
|
40 |
}
|
41 |
|
42 |
function setupAjax() {
|
43 |
+
do_action('mailpoet_api_setup', array($this));
|
44 |
+
|
45 |
+
$this->getRequestData($_POST);
|
46 |
|
47 |
if($this->checkToken() === false) {
|
48 |
$error_response = new ErrorResponse(
|
55 |
$error_response->send();
|
56 |
}
|
57 |
|
58 |
+
$response = $this->processRoute();
|
59 |
+
$response->send();
|
60 |
}
|
61 |
|
62 |
+
function getRequestData($data) {
|
63 |
+
$this->_endpoint = isset($data['endpoint'])
|
64 |
+
? Helpers::underscoreToCamelCase(trim($data['endpoint']))
|
65 |
: null;
|
66 |
+
$this->_method = isset($data['method'])
|
67 |
+
? Helpers::underscoreToCamelCase(trim($data['method']))
|
68 |
: null;
|
69 |
+
$this->_token = isset($data['token'])
|
70 |
+
? trim($data['token'])
|
71 |
: null;
|
72 |
|
73 |
if(!$this->_endpoint || !$this->_method) {
|
81 |
);
|
82 |
$error_response->send();
|
83 |
} else {
|
84 |
+
foreach($this->_endpoint_namespaces as $namespace) {
|
85 |
+
$class_name = $namespace . "\\" . ucfirst($this->_endpoint);
|
86 |
+
if(class_exists($class_name)) {
|
87 |
+
$this->_endpoint_class = $class_name;
|
88 |
+
}
|
89 |
+
}
|
90 |
|
91 |
+
$this->_data = isset($data['data'])
|
92 |
+
? stripslashes_deep($data['data'])
|
93 |
: array();
|
94 |
|
95 |
// remove reserved keywords from data
|
111 |
|
112 |
function processRoute() {
|
113 |
try {
|
114 |
+
if(empty($this->_endpoint_class)) {
|
115 |
+
throw new \Exception('Invalid endpoint');
|
116 |
+
}
|
117 |
+
|
118 |
$endpoint = new $this->_endpoint_class();
|
119 |
|
120 |
// check the accessibility of the requested endpoint's action
|
136 |
array(),
|
137 |
Response::STATUS_FORBIDDEN
|
138 |
);
|
139 |
+
return $error_response;
|
140 |
}
|
141 |
}
|
142 |
|
143 |
$response = $endpoint->{$this->_method}($this->_data);
|
144 |
+
return $response;
|
145 |
} catch(\Exception $e) {
|
146 |
$error_response = new ErrorResponse(
|
147 |
array($e->getCode() => $e->getMessage())
|
148 |
);
|
149 |
+
return $error_response;
|
150 |
}
|
151 |
}
|
152 |
|
166 |
$global .= '</script>';
|
167 |
echo $global;
|
168 |
}
|
169 |
+
|
170 |
+
function addEndpointNamespace($namespace) {
|
171 |
+
$this->_endpoint_namespaces[] = $namespace;
|
172 |
+
}
|
173 |
+
|
174 |
+
function getEndpointNamespaces() {
|
175 |
+
return $this->_endpoint_namespaces;
|
176 |
+
}
|
177 |
}
|
lib/API/Endpoints/Newsletters.php
CHANGED
@@ -70,21 +70,20 @@ class Newsletters extends APIEndpoint {
|
|
70 |
}
|
71 |
|
72 |
if(!empty($options)) {
|
73 |
-
NewsletterOption::where('newsletter_id', $newsletter->id)
|
74 |
-
->deleteMany();
|
75 |
-
|
76 |
$option_fields = NewsletterOptionField::where(
|
77 |
'newsletter_type',
|
78 |
-
$
|
79 |
-
)->
|
80 |
|
81 |
foreach($option_fields as $option_field) {
|
82 |
-
if(isset($options[$option_field
|
83 |
-
$
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
|
|
|
|
88 |
}
|
89 |
}
|
90 |
}
|
@@ -434,4 +433,4 @@ class Newsletters extends APIEndpoint {
|
|
434 |
);
|
435 |
}
|
436 |
}
|
437 |
-
}
|
70 |
}
|
71 |
|
72 |
if(!empty($options)) {
|
|
|
|
|
|
|
73 |
$option_fields = NewsletterOptionField::where(
|
74 |
'newsletter_type',
|
75 |
+
$newsletter->type
|
76 |
+
)->findMany();
|
77 |
|
78 |
foreach($option_fields as $option_field) {
|
79 |
+
if(isset($options[$option_field->name])) {
|
80 |
+
$newsletter_option = NewsletterOption::createOrUpdate(
|
81 |
+
array(
|
82 |
+
'newsletter_id' => $newsletter->id,
|
83 |
+
'option_field_id' => $option_field->id,
|
84 |
+
'value' => $options[$option_field->name]
|
85 |
+
)
|
86 |
+
);
|
87 |
}
|
88 |
}
|
89 |
}
|
433 |
);
|
434 |
}
|
435 |
}
|
436 |
+
}
|
lib/Models/NewsletterOption.php
CHANGED
@@ -5,4 +5,20 @@ if(!defined('ABSPATH')) exit;
|
|
5 |
|
6 |
class NewsletterOption extends Model {
|
7 |
public static $_table = MP_NEWSLETTER_OPTION_TABLE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
}
|
5 |
|
6 |
class NewsletterOption extends Model {
|
7 |
public static $_table = MP_NEWSLETTER_OPTION_TABLE;
|
8 |
+
|
9 |
+
static function createOrUpdate($data = array()) {
|
10 |
+
if(!is_array($data) || empty($data['newsletter_id']) || empty($data['option_field_id'])) return;
|
11 |
+
|
12 |
+
$newsletter_option = self::where('option_field_id', $data['option_field_id'])
|
13 |
+
->where('newsletter_id', $data['newsletter_id'])
|
14 |
+
->findOne();
|
15 |
+
|
16 |
+
if(empty($newsletter_option)) $newsletter_option = self::create();
|
17 |
+
|
18 |
+
$newsletter_option->newsletter_id = $data['newsletter_id'];
|
19 |
+
$newsletter_option->option_field_id = $data['option_field_id'];
|
20 |
+
$newsletter_option->value = $data['value'];
|
21 |
+
$newsletter_option->save();
|
22 |
+
return $newsletter_option;
|
23 |
+
}
|
24 |
}
|
lib/Newsletter/Shortcodes/Categories/Newsletter.php
CHANGED
@@ -51,7 +51,7 @@ class Newsletter {
|
|
51 |
'order' => 'DESC'
|
52 |
)
|
53 |
);
|
54 |
-
return (
|
55 |
$posts->posts[0]->to_array() :
|
56 |
false;
|
57 |
}
|
51 |
'order' => 'DESC'
|
52 |
)
|
53 |
);
|
54 |
+
return (!empty($posts->posts[0])) ?
|
55 |
$posts->posts[0]->to_array() :
|
56 |
false;
|
57 |
}
|
lib/Subscribers/ImportExport/Import/Import.php
CHANGED
@@ -108,7 +108,7 @@ class Import {
|
|
108 |
}
|
109 |
}
|
110 |
} catch(\Exception $e) {
|
111 |
-
throw new \Exception(
|
112 |
}
|
113 |
$import_factory = new ImportExportFactory('import');
|
114 |
$segments = $import_factory->getSegments();
|
108 |
}
|
109 |
}
|
110 |
} catch(\Exception $e) {
|
111 |
+
throw new \Exception(__('Unable to save imported subscribers.', 'mailpoet'));
|
112 |
}
|
113 |
$import_factory = new ImportExportFactory('import');
|
114 |
$segments = $import_factory->getSegments();
|
lib/Twig/Functions.php
CHANGED
@@ -65,6 +65,11 @@ class Functions extends \Twig_Extension {
|
|
65 |
'wp_datetime_format',
|
66 |
array($this, 'getWPDateTimeFormat'),
|
67 |
array('is_safe' => array('all'))
|
|
|
|
|
|
|
|
|
|
|
68 |
)
|
69 |
);
|
70 |
}
|
65 |
'wp_datetime_format',
|
66 |
array($this, 'getWPDateTimeFormat'),
|
67 |
array('is_safe' => array('all'))
|
68 |
+
),
|
69 |
+
new \Twig_SimpleFunction(
|
70 |
+
'do_action',
|
71 |
+
'do_action',
|
72 |
+
array('is_safe' => array('all'))
|
73 |
)
|
74 |
);
|
75 |
}
|
mailpoet.php
CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
|
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet
|
7 |
-
* Version: 3.0.0-beta.
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
|
10 |
* Author: MailPoet
|
@@ -21,7 +21,7 @@ if(!defined('ABSPATH')) exit;
|
|
21 |
*/
|
22 |
|
23 |
$mailpoet_plugin = array(
|
24 |
-
'version' => '3.0.0-beta.
|
25 |
'filename' => __FILE__,
|
26 |
'path' => dirname(__FILE__),
|
27 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet
|
7 |
+
* Version: 3.0.0-beta.20
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
|
10 |
* Author: MailPoet
|
21 |
*/
|
22 |
|
23 |
$mailpoet_plugin = array(
|
24 |
+
'version' => '3.0.0-beta.20',
|
25 |
'filename' => __FILE__,
|
26 |
'path' => dirname(__FILE__),
|
27 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: mailpoet, wysija
|
|
3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
|
4 |
Requires at least: 4.6
|
5 |
Tested up to: 4.7.2
|
6 |
-
Stable tag: 3.0.0-beta.
|
7 |
Create and send beautiful emails and newsletters from WordPress.
|
8 |
|
9 |
== Description ==
|
@@ -83,6 +83,10 @@ Our [support site](https://docs.mailpoet.com/) has plenty of articles. You can w
|
|
83 |
|
84 |
== Changelog ==
|
85 |
|
|
|
|
|
|
|
|
|
86 |
= 3.0.0-beta.19 - 2017-02-21 =
|
87 |
* Improved: import uses stricter email validation rules. Kudos Oskar;
|
88 |
* Improved: database is cleaned up after deleting subscribers. Thx Eric;
|
3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
|
4 |
Requires at least: 4.6
|
5 |
Tested up to: 4.7.2
|
6 |
+
Stable tag: 3.0.0-beta.20
|
7 |
Create and send beautiful emails and newsletters from WordPress.
|
8 |
|
9 |
== Description ==
|
83 |
|
84 |
== Changelog ==
|
85 |
|
86 |
+
= 3.0.0-beta.20 - 2017-02-23 =
|
87 |
+
* Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
|
88 |
+
* Fixed: sending is not interrupted when a post included in the email is trashed. Thanks Bernhard!
|
89 |
+
|
90 |
= 3.0.0-beta.19 - 2017-02-21 =
|
91 |
* Improved: import uses stricter email validation rules. Kudos Oskar;
|
92 |
* Improved: database is cleaned up after deleting subscribers. Thx Eric;
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit2a66e8879c6d71d61f9412a09ab2b6c5
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit597ecaac233da259c5e6118bed1a4457', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit597ecaac233da259c5e6118bed1a4457::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequire597ecaac233da259c5e6118bed1a4457($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequire597ecaac233da259c5e6118bed1a4457($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
@@ -608,10 +608,10 @@ class ComposerStaticInit2a66e8879c6d71d61f9412a09ab2b6c5
|
|
608 |
public static function getInitializer(ClassLoader $loader)
|
609 |
{
|
610 |
return \Closure::bind(function () use ($loader) {
|
611 |
-
$loader->prefixLengthsPsr4 =
|
612 |
-
$loader->prefixDirsPsr4 =
|
613 |
-
$loader->prefixesPsr0 =
|
614 |
-
$loader->classMap =
|
615 |
|
616 |
}, null, ClassLoader::class);
|
617 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit597ecaac233da259c5e6118bed1a4457
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
608 |
public static function getInitializer(ClassLoader $loader)
|
609 |
{
|
610 |
return \Closure::bind(function () use ($loader) {
|
611 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixLengthsPsr4;
|
612 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixDirsPsr4;
|
613 |
+
$loader->prefixesPsr0 = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$prefixesPsr0;
|
614 |
+
$loader->classMap = ComposerStaticInit597ecaac233da259c5e6118bed1a4457::$classMap;
|
615 |
|
616 |
}, null, ClassLoader::class);
|
617 |
}
|
vendor/sebastian/index.php
ADDED
File without changes
|
views/settings/basics.html
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<table class="form-table">
|
2 |
<tbody>
|
|
|
3 |
<tr>
|
4 |
<th scope="row">
|
5 |
<label for="settings[from_name]">
|
1 |
<table class="form-table">
|
2 |
<tbody>
|
3 |
+
<%= do_action('mailpoet_settings_basics_before') %>
|
4 |
<tr>
|
5 |
<th scope="row">
|
6 |
<label for="settings[from_name]">
|