Version Description
- 2017-07-18 =
- Added: you can now duplicate any item in the email designer;
- Improved: added filter to specify custom SMTP connection timeout value. Thanks, Rik;
- Improved: added a custom filter to whitelist JS/CSS styles that are loaded by other plugins on MailPoet's pages;
- Fixed: sending is not interrupted if a newsletter contains URLs with unicode characters. Thanks Sam!
- Fixed: sent date is reset when newsletter is duplicated;
- Fixed: SMTP sending frequency is properly updated when changed;
- Fixed: newsletter/form/subscriber listings no longer throw an error on some PHP 5.3 hosts. Thanks, Jrme!
Download this release
Release Info
| Developer | wysija |
| Plugin | |
| Version | 3.0.0-beta.36.3.1 |
| Comparing to | |
| See all releases | |
Code changes from version 3.0.0-beta.36.3.0 to 3.0.0-beta.36.3.1
- assets/css/{admin.c73ddfe6.css → admin.06d5a0b9.css} +127 -25
- assets/css/manifest.json +1 -1
- assets/js/{admin.65d0dc6d.js → admin.f15adcea.js} +20 -17
- assets/js/{admin_vendor.927b0f96.js → admin_vendor.e019c409.js} +1 -1
- assets/js/manifest.json +4 -4
- assets/js/{newsletter_editor.7d386d8d.js → newsletter_editor.cec09cf2.js} +12 -0
- assets/js/{vendor.c136ccd7.js → vendor.6d57818a.js} +1 -1
- lang/mailpoet.pot +166 -101
- lib/Config/Menu.php +1 -1
- lib/Config/Populator.php +9 -3
- lib/Cron/Workers/SendingQueue/SendingQueue.php +1 -1
- lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php +7 -0
- lib/Mailer/MailerLog.php +1 -1
- lib/Mailer/Methods/SMTP.php +4 -3
- lib/Models/Model.php +10 -1
- lib/Models/Newsletter.php +3 -0
- lib/Newsletter/Links/Links.php +47 -66
- lib/Newsletter/Renderer/Renderer.php +1 -1
- lib/Newsletter/Shortcodes/Categories/Link.php +2 -0
- lib/Util/ConflictResolver.php +2 -0
- mailpoet.php +2 -2
- readme.txt +11 -2
- vendor/autoload.php +1 -1
- vendor/composer/ClassLoader.php +3 -7
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
- views/newsletter/templates/blocks/base/toolsGeneric.hbs +3 -2
- views/newsletter/templates/svg/block-tools/duplicate.svg +30 -0
- views/settings/mta.html +72 -85
- views/settings/premium.html +4 -4
- views/update.html +60 -11
- views/welcome.html +5 -2
assets/css/{admin.c73ddfe6.css → admin.06d5a0b9.css}
RENAMED
|
@@ -2780,16 +2780,68 @@ textarea.parsley-error {
|
|
| 2780 |
}
|
| 2781 |
#mailpoet_settings .mailpoet_sending_methods {
|
| 2782 |
margin: 25px 0 0 0;
|
| 2783 |
-
|
| 2784 |
-
|
| 2785 |
-
|
| 2786 |
-
|
| 2787 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2788 |
margin: 0 25px 25px 0;
|
| 2789 |
-
width: 300px;
|
| 2790 |
-
height: 300px;
|
| 2791 |
border: 1px solid #dedede;
|
| 2792 |
background-color: #fff;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2793 |
}
|
| 2794 |
#mailpoet_settings .mailpoet_sending_methods h3 {
|
| 2795 |
text-align: center;
|
|
@@ -2800,12 +2852,32 @@ textarea.parsley-error {
|
|
| 2800 |
font-size: 14px;
|
| 2801 |
}
|
| 2802 |
#mailpoet_settings .mailpoet_sending_methods .mailpoet_status {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2803 |
background-color: #2f2f2f;
|
| 2804 |
color: #fff;
|
| 2805 |
-
position: absolute;
|
| 2806 |
-
bottom: 0;
|
| 2807 |
-
left: 0;
|
| 2808 |
-
right: 0;
|
| 2809 |
-o-text-overflow: ellipsis;
|
| 2810 |
text-overflow: ellipsis;
|
| 2811 |
padding: 15px;
|
|
@@ -2823,30 +2895,42 @@ textarea.parsley-error {
|
|
| 2823 |
#mailpoet_settings .mailpoet_sending_methods .mailpoet_active #mailpoet_mta_activate {
|
| 2824 |
visibility: hidden;
|
| 2825 |
}
|
| 2826 |
-
#mailpoet_settings .
|
| 2827 |
-
|
| 2828 |
-
|
| 2829 |
-
|
| 2830 |
-
position: absolute;
|
| 2831 |
-
right: 15px;
|
| 2832 |
-
}
|
| 2833 |
-
#mailpoet_settings .mailpoet_sending_methods .mailpoet_actions .button-secondary {
|
| 2834 |
-
margin: 0 -6px -4px 0;
|
| 2835 |
}
|
| 2836 |
-
#mailpoet_settings .
|
| 2837 |
content: '✔ ';
|
| 2838 |
}
|
| 2839 |
-
#mailpoet_settings .
|
| 2840 |
content: '✗ ';
|
| 2841 |
}
|
| 2842 |
@media screen and (max-width: 782px) {
|
| 2843 |
#mailpoet_settings .form-table th {
|
| 2844 |
width: auto;
|
| 2845 |
}
|
| 2846 |
-
#mailpoet_settings .mailpoet_sending_methods
|
| 2847 |
-
|
| 2848 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2849 |
margin-right: 0;
|
|
|
|
|
|
|
| 2850 |
}
|
| 2851 |
}
|
| 2852 |
.mailpoet_progress {
|
|
@@ -2998,6 +3082,24 @@ textarea.parsley-error {
|
|
| 2998 |
.mailpoet-about-wrap .feature-section.two-col h3 {
|
| 2999 |
margin-top: 0;
|
| 3000 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3001 |
.mailpoet-about-wrap .feature-section h4 {
|
| 3002 |
margin: 1.4em 0 0.6em 0;
|
| 3003 |
font-size: 1em;
|
| 2780 |
}
|
| 2781 |
#mailpoet_settings .mailpoet_sending_methods {
|
| 2782 |
margin: 25px 0 0 0;
|
| 2783 |
+
display: -webkit-box;
|
| 2784 |
+
display: -moz-box;
|
| 2785 |
+
display: -webkit-flex;
|
| 2786 |
+
display: -ms-flexbox;
|
| 2787 |
+
display: box;
|
| 2788 |
+
display: flex;
|
| 2789 |
+
-webkit-box-orient: horizontal;
|
| 2790 |
+
-moz-box-orient: horizontal;
|
| 2791 |
+
-o-box-orient: horizontal;
|
| 2792 |
+
-webkit-flex-direction: row;
|
| 2793 |
+
-ms-flex-direction: row;
|
| 2794 |
+
flex-direction: row;
|
| 2795 |
+
-webkit-box-pack: start;
|
| 2796 |
+
-moz-box-pack: start;
|
| 2797 |
+
-o-box-pack: start;
|
| 2798 |
+
-ms-flex-pack: start;
|
| 2799 |
+
-webkit-justify-content: flex-start;
|
| 2800 |
+
justify-content: flex-start;
|
| 2801 |
+
}
|
| 2802 |
+
#mailpoet_settings .mailpoet_sending_methods > li {
|
| 2803 |
+
-webkit-box-flex: 1;
|
| 2804 |
+
-moz-box-flex: 1;
|
| 2805 |
+
-o-box-flex: 1;
|
| 2806 |
+
-ms-box-flex: 1;
|
| 2807 |
+
box-flex: 1;
|
| 2808 |
+
-webkit-flex-grow: 1;
|
| 2809 |
+
flex-grow: 1;
|
| 2810 |
+
-webkit-flex-shrink: 1;
|
| 2811 |
+
flex-shrink: 1;
|
| 2812 |
+
display: -webkit-box;
|
| 2813 |
+
display: -moz-box;
|
| 2814 |
+
display: -webkit-flex;
|
| 2815 |
+
display: -ms-flexbox;
|
| 2816 |
+
display: box;
|
| 2817 |
+
display: flex;
|
| 2818 |
+
-webkit-box-orient: vertical;
|
| 2819 |
+
-moz-box-orient: vertical;
|
| 2820 |
+
-o-box-orient: vertical;
|
| 2821 |
+
-webkit-flex-direction: column;
|
| 2822 |
+
-ms-flex-direction: column;
|
| 2823 |
+
flex-direction: column;
|
| 2824 |
+
-webkit-flex-basis: 0;
|
| 2825 |
+
flex-basis: 0;
|
| 2826 |
margin: 0 25px 25px 0;
|
|
|
|
|
|
|
| 2827 |
border: 1px solid #dedede;
|
| 2828 |
background-color: #fff;
|
| 2829 |
+
max-width: 500px;
|
| 2830 |
+
}
|
| 2831 |
+
#mailpoet_settings .mailpoet_sending_methods > li .mailpoet_sending_method_description {
|
| 2832 |
+
padding: 25px;
|
| 2833 |
+
-webkit-box-flex: 1;
|
| 2834 |
+
-moz-box-flex: 1;
|
| 2835 |
+
-o-box-flex: 1;
|
| 2836 |
+
-ms-box-flex: 1;
|
| 2837 |
+
box-flex: 1;
|
| 2838 |
+
-webkit-flex-grow: 1;
|
| 2839 |
+
flex-grow: 1;
|
| 2840 |
+
-webkit-flex-shrink: 0;
|
| 2841 |
+
flex-shrink: 0;
|
| 2842 |
+
}
|
| 2843 |
+
#mailpoet_settings .mailpoet_sending_methods > li:last-child {
|
| 2844 |
+
margin-right: 0;
|
| 2845 |
}
|
| 2846 |
#mailpoet_settings .mailpoet_sending_methods h3 {
|
| 2847 |
text-align: center;
|
| 2852 |
font-size: 14px;
|
| 2853 |
}
|
| 2854 |
#mailpoet_settings .mailpoet_sending_methods .mailpoet_status {
|
| 2855 |
+
display: -webkit-box;
|
| 2856 |
+
display: -moz-box;
|
| 2857 |
+
display: -webkit-flex;
|
| 2858 |
+
display: -ms-flexbox;
|
| 2859 |
+
display: box;
|
| 2860 |
+
display: flex;
|
| 2861 |
+
-webkit-box-orient: horizontal;
|
| 2862 |
+
-moz-box-orient: horizontal;
|
| 2863 |
+
-o-box-orient: horizontal;
|
| 2864 |
+
-webkit-flex-direction: row;
|
| 2865 |
+
-ms-flex-direction: row;
|
| 2866 |
+
flex-direction: row;
|
| 2867 |
+
-webkit-box-pack: justify;
|
| 2868 |
+
-moz-box-pack: justify;
|
| 2869 |
+
-o-box-pack: justify;
|
| 2870 |
+
-ms-flex-pack: justify;
|
| 2871 |
+
-webkit-justify-content: space-between;
|
| 2872 |
+
justify-content: space-between;
|
| 2873 |
+
-webkit-box-align: center;
|
| 2874 |
+
-moz-box-align: center;
|
| 2875 |
+
-o-box-align: center;
|
| 2876 |
+
-ms-flex-align: center;
|
| 2877 |
+
-webkit-align-items: center;
|
| 2878 |
+
align-items: center;
|
| 2879 |
background-color: #2f2f2f;
|
| 2880 |
color: #fff;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2881 |
-o-text-overflow: ellipsis;
|
| 2882 |
text-overflow: ellipsis;
|
| 2883 |
padding: 15px;
|
| 2895 |
#mailpoet_settings .mailpoet_sending_methods .mailpoet_active #mailpoet_mta_activate {
|
| 2896 |
visibility: hidden;
|
| 2897 |
}
|
| 2898 |
+
#mailpoet_settings ul.sending-method-benefits {
|
| 2899 |
+
list-style-type: none;
|
| 2900 |
+
margin-bottom: 2em;
|
| 2901 |
+
margin-top: 2em;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2902 |
}
|
| 2903 |
+
#mailpoet_settings .mailpoet_success_item::before {
|
| 2904 |
content: '✔ ';
|
| 2905 |
}
|
| 2906 |
+
#mailpoet_settings .mailpoet_error_item::before {
|
| 2907 |
content: '✗ ';
|
| 2908 |
}
|
| 2909 |
@media screen and (max-width: 782px) {
|
| 2910 |
#mailpoet_settings .form-table th {
|
| 2911 |
width: auto;
|
| 2912 |
}
|
| 2913 |
+
#mailpoet_settings .mailpoet_sending_methods {
|
| 2914 |
+
-webkit-box-orient: horizontal;
|
| 2915 |
+
-moz-box-orient: horizontal;
|
| 2916 |
+
-o-box-orient: horizontal;
|
| 2917 |
+
-webkit-box-lines: multiple;
|
| 2918 |
+
-moz-box-lines: multiple;
|
| 2919 |
+
-o-box-lines: multiple;
|
| 2920 |
+
-webkit-flex-flow: row wrap;
|
| 2921 |
+
-ms-flex-flow: row wrap;
|
| 2922 |
+
flex-flow: row wrap;
|
| 2923 |
+
-webkit-box-pack: distribute;
|
| 2924 |
+
-moz-box-pack: distribute;
|
| 2925 |
+
-o-box-pack: distribute;
|
| 2926 |
+
-ms-flex-pack: distribute;
|
| 2927 |
+
-webkit-justify-content: space-around;
|
| 2928 |
+
justify-content: space-around;
|
| 2929 |
+
}
|
| 2930 |
+
#mailpoet_settings .mailpoet_sending_methods > li {
|
| 2931 |
margin-right: 0;
|
| 2932 |
+
-webkit-flex-basis: auto;
|
| 2933 |
+
flex-basis: auto;
|
| 2934 |
}
|
| 2935 |
}
|
| 2936 |
.mailpoet_progress {
|
| 3082 |
.mailpoet-about-wrap .feature-section.two-col h3 {
|
| 3083 |
margin-top: 0;
|
| 3084 |
}
|
| 3085 |
+
.mailpoet-about-wrap .feature-section.one-col {
|
| 3086 |
+
width: 700px;
|
| 3087 |
+
margin: 0 auto;
|
| 3088 |
+
text-align: center;
|
| 3089 |
+
}
|
| 3090 |
+
.mailpoet-about-wrap .feature-section.one-col > a.button {
|
| 3091 |
+
margin-top: 2em;
|
| 3092 |
+
}
|
| 3093 |
+
.mailpoet-about-wrap .feature-section.one-col-left {
|
| 3094 |
+
width: 700px;
|
| 3095 |
+
margin: 0 auto;
|
| 3096 |
+
}
|
| 3097 |
+
.mailpoet-about-wrap .feature-section h2.mailpoet-feature-top {
|
| 3098 |
+
margin: 50px auto;
|
| 3099 |
+
}
|
| 3100 |
+
.mailpoet-about-wrap .feature-section .lead-description ~ p {
|
| 3101 |
+
margin-top: 3em;
|
| 3102 |
+
}
|
| 3103 |
.mailpoet-about-wrap .feature-section h4 {
|
| 3104 |
margin: 1.4em 0 0.6em 0;
|
| 3105 |
font-size: 1em;
|
assets/css/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
{
|
| 2 |
-
"admin.css": "admin.
|
| 3 |
"importExport.css": "importExport.b3745466.css",
|
| 4 |
"newsletter_editor.css": "newsletter_editor.aace9f8f.css",
|
| 5 |
"public.css": "public.cae357df.css",
|
| 1 |
{
|
| 2 |
+
"admin.css": "admin.06d5a0b9.css",
|
| 3 |
"importExport.css": "importExport.b3745466.css",
|
| 4 |
"newsletter_editor.css": "newsletter_editor.aace9f8f.css",
|
| 5 |
"public.css": "public.cae357df.css",
|
assets/js/{admin.65d0dc6d.js → admin.f15adcea.js}
RENAMED
|
@@ -9473,8 +9473,8 @@ webpackJsonp([0],[
|
|
| 9473 |
if (this.props.onChange) {
|
| 9474 |
return this.props.onChange(e);
|
| 9475 |
} else {
|
| 9476 |
-
var item = this.state.item
|
| 9477 |
-
|
| 9478 |
|
| 9479 |
item[field] = e.target.value;
|
| 9480 |
|
|
@@ -9487,8 +9487,9 @@ webpackJsonp([0],[
|
|
| 9487 |
render: function render() {
|
| 9488 |
var _this3 = this;
|
| 9489 |
|
|
|
|
| 9490 |
if (this.getErrors() !== undefined) {
|
| 9491 |
-
|
| 9492 |
return React.createElement(
|
| 9493 |
'p',
|
| 9494 |
{ key: 'error-' + index, className: 'mailpoet_error' },
|
|
@@ -26409,8 +26410,8 @@ webpackJsonp([0],[
|
|
| 26409 |
},
|
| 26410 |
MailPoet.I18n.t('delete')
|
| 26411 |
)
|
| 26412 |
-
)
|
| 26413 |
-
|
| 26414 |
|
| 26415 |
if (typeof template.thumbnail === 'string' && template.thumbnail.length > 0) {
|
| 26416 |
thumbnail = React.createElement(
|
|
@@ -26678,8 +26679,8 @@ webpackJsonp([0],[
|
|
| 26678 |
}
|
| 26679 |
},
|
| 26680 |
handleFormChange: function handleFormChange(e) {
|
| 26681 |
-
var item = this.state.item
|
| 26682 |
-
|
| 26683 |
|
| 26684 |
item[field] = e.target.value;
|
| 26685 |
|
|
@@ -26754,9 +26755,11 @@ webpackJsonp([0],[
|
|
| 26754 |
|
| 26755 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(273), __webpack_require__(278), __webpack_require__(274), __webpack_require__(422)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, jQuery, _, MailPoet, Hooks) {
|
| 26756 |
|
| 26757 |
-
var currentTime = window.mailpoet_current_time || '00:00'
|
| 26758 |
-
|
| 26759 |
-
timeOfDayItems = window.mailpoet_schedule_time_of_day
|
|
|
|
|
|
|
| 26760 |
|
| 26761 |
var datepickerTranslations = {
|
| 26762 |
closeText: MailPoet.I18n.t('close'),
|
|
@@ -26775,15 +26778,15 @@ webpackJsonp([0],[
|
|
| 26775 |
|
| 26776 |
onChange: function onChange(event) {
|
| 26777 |
// Swap display format to storage format
|
| 26778 |
-
var displayDate = event.target.value
|
| 26779 |
-
|
| 26780 |
|
| 26781 |
event.target.value = storageDate;
|
| 26782 |
this.props.onChange(event);
|
| 26783 |
},
|
| 26784 |
componentDidMount: function componentDidMount() {
|
| 26785 |
-
var $element = jQuery(this.refs.dateInput)
|
| 26786 |
-
|
| 26787 |
if ($element.datepicker) {
|
| 26788 |
// Override jQuery UI datepicker Date parsing and formatting
|
| 26789 |
jQuery.datepicker.parseDate = function (format, value) {
|
|
@@ -26952,8 +26955,8 @@ webpackJsonp([0],[
|
|
| 26952 |
});
|
| 26953 |
},
|
| 26954 |
handleValueChange: function handleValueChange(event) {
|
| 26955 |
-
var oldValue = this._getCurrentValue()
|
| 26956 |
-
|
| 26957 |
newValue[event.target.name] = event.target.value;
|
| 26958 |
|
| 26959 |
return this.props.onValueChange({
|
|
@@ -26978,7 +26981,7 @@ webpackJsonp([0],[
|
|
| 26978 |
};
|
| 26979 |
},
|
| 26980 |
render: function render() {
|
| 26981 |
-
var schedulingOptions;
|
| 26982 |
|
| 26983 |
if (this.isScheduled()) {
|
| 26984 |
schedulingOptions = React.createElement(
|
| 9473 |
if (this.props.onChange) {
|
| 9474 |
return this.props.onChange(e);
|
| 9475 |
} else {
|
| 9476 |
+
var item = this.state.item;
|
| 9477 |
+
var field = e.target.name;
|
| 9478 |
|
| 9479 |
item[field] = e.target.value;
|
| 9480 |
|
| 9487 |
render: function render() {
|
| 9488 |
var _this3 = this;
|
| 9489 |
|
| 9490 |
+
var errors = undefined;
|
| 9491 |
if (this.getErrors() !== undefined) {
|
| 9492 |
+
errors = this.getErrors().map(function (error, index) {
|
| 9493 |
return React.createElement(
|
| 9494 |
'p',
|
| 9495 |
{ key: 'error-' + index, className: 'mailpoet_error' },
|
| 26410 |
},
|
| 26411 |
MailPoet.I18n.t('delete')
|
| 26412 |
)
|
| 26413 |
+
);
|
| 26414 |
+
var thumbnail = '';
|
| 26415 |
|
| 26416 |
if (typeof template.thumbnail === 'string' && template.thumbnail.length > 0) {
|
| 26417 |
thumbnail = React.createElement(
|
| 26679 |
}
|
| 26680 |
},
|
| 26681 |
handleFormChange: function handleFormChange(e) {
|
| 26682 |
+
var item = this.state.item;
|
| 26683 |
+
var field = e.target.name;
|
| 26684 |
|
| 26685 |
item[field] = e.target.value;
|
| 26686 |
|
| 26755 |
|
| 26756 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(273), __webpack_require__(278), __webpack_require__(274), __webpack_require__(422)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, jQuery, _, MailPoet, Hooks) {
|
| 26757 |
|
| 26758 |
+
var currentTime = window.mailpoet_current_time || '00:00';
|
| 26759 |
+
var defaultDateTime = window.mailpoet_current_date + ' ' + '00:00:00';
|
| 26760 |
+
var timeOfDayItems = window.mailpoet_schedule_time_of_day;
|
| 26761 |
+
var dateDisplayFormat = window.mailpoet_date_display_format;
|
| 26762 |
+
var dateStorageFormat = window.mailpoet_date_storage_format;
|
| 26763 |
|
| 26764 |
var datepickerTranslations = {
|
| 26765 |
closeText: MailPoet.I18n.t('close'),
|
| 26778 |
|
| 26779 |
onChange: function onChange(event) {
|
| 26780 |
// Swap display format to storage format
|
| 26781 |
+
var displayDate = event.target.value;
|
| 26782 |
+
var storageDate = this.getStorageDate(displayDate);
|
| 26783 |
|
| 26784 |
event.target.value = storageDate;
|
| 26785 |
this.props.onChange(event);
|
| 26786 |
},
|
| 26787 |
componentDidMount: function componentDidMount() {
|
| 26788 |
+
var $element = jQuery(this.refs.dateInput);
|
| 26789 |
+
var that = this;
|
| 26790 |
if ($element.datepicker) {
|
| 26791 |
// Override jQuery UI datepicker Date parsing and formatting
|
| 26792 |
jQuery.datepicker.parseDate = function (format, value) {
|
| 26955 |
});
|
| 26956 |
},
|
| 26957 |
handleValueChange: function handleValueChange(event) {
|
| 26958 |
+
var oldValue = this._getCurrentValue();
|
| 26959 |
+
var newValue = {};
|
| 26960 |
newValue[event.target.name] = event.target.value;
|
| 26961 |
|
| 26962 |
return this.props.onValueChange({
|
| 26981 |
};
|
| 26982 |
},
|
| 26983 |
render: function render() {
|
| 26984 |
+
var schedulingOptions = undefined;
|
| 26985 |
|
| 26986 |
if (this.isScheduled()) {
|
| 26987 |
schedulingOptions = React.createElement(
|
assets/js/{admin_vendor.927b0f96.js → admin_vendor.e019c409.js}
RENAMED
|
@@ -31207,7 +31207,7 @@ webpackJsonp([1],[
|
|
| 31207 |
|
| 31208 |
var classes = classNames('tablenav-pages', { 'one-page': this.props.count <= this.props.limit });
|
| 31209 |
|
| 31210 |
-
var numberOfItemsLabel;
|
| 31211 |
if (this.props.count == 1) {
|
| 31212 |
numberOfItemsLabel = MailPoet.I18n.t('numberOfItemsSingular');
|
| 31213 |
} else {
|
| 31207 |
|
| 31208 |
var classes = classNames('tablenav-pages', { 'one-page': this.props.count <= this.props.limit });
|
| 31209 |
|
| 31210 |
+
var numberOfItemsLabel = undefined;
|
| 31211 |
if (this.props.count == 1) {
|
| 31212 |
numberOfItemsLabel = MailPoet.I18n.t('numberOfItemsSingular');
|
| 31213 |
} else {
|
assets/js/manifest.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
{
|
| 2 |
"mp2migrator.js": "mp2migrator.f7fa3be5.js",
|
| 3 |
"public.js": "public.0e89cdab.js",
|
| 4 |
-
"admin.js": "admin.
|
| 5 |
-
"admin_vendor.js": "admin_vendor.
|
| 6 |
"form_editor.js": "form_editor.e0b22679.js",
|
| 7 |
"mailpoet.js": "mailpoet.0ebf4b66.js",
|
| 8 |
-
"newsletter_editor.js": "newsletter_editor.
|
| 9 |
-
"vendor.js": "vendor.
|
| 10 |
}
|
| 1 |
{
|
| 2 |
"mp2migrator.js": "mp2migrator.f7fa3be5.js",
|
| 3 |
"public.js": "public.0e89cdab.js",
|
| 4 |
+
"admin.js": "admin.f15adcea.js",
|
| 5 |
+
"admin_vendor.js": "admin_vendor.e019c409.js",
|
| 6 |
"form_editor.js": "form_editor.e0b22679.js",
|
| 7 |
"mailpoet.js": "mailpoet.0ebf4b66.js",
|
| 8 |
+
"newsletter_editor.js": "newsletter_editor.cec09cf2.js",
|
| 9 |
+
"vendor.js": "vendor.6d57818a.js"
|
| 10 |
}
|
assets/js/{newsletter_editor.7d386d8d.js → newsletter_editor.cec09cf2.js}
RENAMED
|
@@ -34229,6 +34229,7 @@ webpackJsonp([4],{
|
|
| 34229 |
modelEvents: {
|
| 34230 |
'change': 'render',
|
| 34231 |
'delete': 'deleteBlock',
|
|
|
|
| 34232 |
},
|
| 34233 |
events: {
|
| 34234 |
"mouseenter": "showTools",
|
|
@@ -34319,6 +34320,9 @@ webpackJsonp([4],{
|
|
| 34319 |
this.model.destroy();
|
| 34320 |
}.bind(this));
|
| 34321 |
},
|
|
|
|
|
|
|
|
|
|
| 34322 |
transitionIn: function() {
|
| 34323 |
return this._transition('slideDown', 'fadeIn', 'easeOut');
|
| 34324 |
},
|
|
@@ -34357,11 +34361,13 @@ webpackJsonp([4],{
|
|
| 34357 |
"click .mailpoet_delete_block_activate": "showDeletionConfirmation",
|
| 34358 |
"click .mailpoet_delete_block_cancel": "hideDeletionConfirmation",
|
| 34359 |
"click .mailpoet_delete_block_confirm": "deleteBlock",
|
|
|
|
| 34360 |
},
|
| 34361 |
// Markers of whether these particular tools will be used for this instance
|
| 34362 |
tools: {
|
| 34363 |
settings: true,
|
| 34364 |
delete: true,
|
|
|
|
| 34365 |
move: true,
|
| 34366 |
},
|
| 34367 |
getSettingsView: function() { return Module.BlockSettingsView; },
|
|
@@ -34398,6 +34404,11 @@ webpackJsonp([4],{
|
|
| 34398 |
this.model.trigger('delete');
|
| 34399 |
return false;
|
| 34400 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34401 |
});
|
| 34402 |
|
| 34403 |
Module.BlockSettingsView = Marionette.View.extend({
|
|
@@ -34642,6 +34653,7 @@ webpackJsonp([4],{
|
|
| 34642 |
tools: {
|
| 34643 |
settings: this.renderOptions.depth === 1,
|
| 34644 |
delete: this.renderOptions.depth === 1,
|
|
|
|
| 34645 |
move: this.renderOptions.depth === 1,
|
| 34646 |
layerSelector: false,
|
| 34647 |
},
|
| 34229 |
modelEvents: {
|
| 34230 |
'change': 'render',
|
| 34231 |
'delete': 'deleteBlock',
|
| 34232 |
+
'duplicate': 'duplicateBlock',
|
| 34233 |
},
|
| 34234 |
events: {
|
| 34235 |
"mouseenter": "showTools",
|
| 34320 |
this.model.destroy();
|
| 34321 |
}.bind(this));
|
| 34322 |
},
|
| 34323 |
+
duplicateBlock: function() {
|
| 34324 |
+
this.model.collection.add(this.model.toJSON(), {at: this.model.collection.findIndex(this.model)});
|
| 34325 |
+
},
|
| 34326 |
transitionIn: function() {
|
| 34327 |
return this._transition('slideDown', 'fadeIn', 'easeOut');
|
| 34328 |
},
|
| 34361 |
"click .mailpoet_delete_block_activate": "showDeletionConfirmation",
|
| 34362 |
"click .mailpoet_delete_block_cancel": "hideDeletionConfirmation",
|
| 34363 |
"click .mailpoet_delete_block_confirm": "deleteBlock",
|
| 34364 |
+
"click .mailpoet_duplicate_block": "duplicateBlock",
|
| 34365 |
},
|
| 34366 |
// Markers of whether these particular tools will be used for this instance
|
| 34367 |
tools: {
|
| 34368 |
settings: true,
|
| 34369 |
delete: true,
|
| 34370 |
+
duplicate: true,
|
| 34371 |
move: true,
|
| 34372 |
},
|
| 34373 |
getSettingsView: function() { return Module.BlockSettingsView; },
|
| 34404 |
this.model.trigger('delete');
|
| 34405 |
return false;
|
| 34406 |
},
|
| 34407 |
+
duplicateBlock: function(event) {
|
| 34408 |
+
event.preventDefault();
|
| 34409 |
+
this.model.trigger('duplicate');
|
| 34410 |
+
return false;
|
| 34411 |
+
},
|
| 34412 |
});
|
| 34413 |
|
| 34414 |
Module.BlockSettingsView = Marionette.View.extend({
|
| 34653 |
tools: {
|
| 34654 |
settings: this.renderOptions.depth === 1,
|
| 34655 |
delete: this.renderOptions.depth === 1,
|
| 34656 |
+
duplicate: true,
|
| 34657 |
move: this.renderOptions.depth === 1,
|
| 34658 |
layerSelector: false,
|
| 34659 |
},
|
assets/js/{vendor.c136ccd7.js → vendor.6d57818a.js}
RENAMED
|
@@ -76,7 +76,7 @@
|
|
| 76 |
/******/ script.charset = 'utf-8';
|
| 77 |
/******/ script.async = true;
|
| 78 |
|
| 79 |
-
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"
|
| 80 |
/******/ head.appendChild(script);
|
| 81 |
/******/ }
|
| 82 |
/******/ };
|
| 76 |
/******/ script.charset = 'utf-8';
|
| 77 |
/******/ script.async = true;
|
| 78 |
|
| 79 |
+
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"f15adcea","1":"e019c409","2":"e0b22679","3":"0ebf4b66","4":"cec09cf2"}[chunkId] + ".chunk.js";
|
| 80 |
/******/ head.appendChild(script);
|
| 81 |
/******/ }
|
| 82 |
/******/ };
|
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-07-
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
|
@@ -365,8 +365,8 @@ msgstr ""
|
|
| 365 |
msgid "Export"
|
| 366 |
msgstr ""
|
| 367 |
|
| 368 |
-
#: lib/Config/Menu.php:222 lib/Config/Menu.php:223 views/update.html:
|
| 369 |
-
#: views/welcome.html:
|
| 370 |
msgid "Welcome"
|
| 371 |
msgstr ""
|
| 372 |
|
|
@@ -1023,6 +1023,12 @@ msgstr ""
|
|
| 1023 |
msgid "Daemon does not exist."
|
| 1024 |
msgstr ""
|
| 1025 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1026 |
#: lib/Form/Block/Base.php:10
|
| 1027 |
msgid "Please specify a valid email address."
|
| 1028 |
msgstr ""
|
|
@@ -1201,12 +1207,12 @@ msgid "Unsupported Amazon SES region"
|
|
| 1201 |
msgstr ""
|
| 1202 |
|
| 1203 |
#: lib/Mailer/Methods/AmazonSES.php:64 lib/Mailer/Methods/PHPMail.php:36
|
| 1204 |
-
#: lib/Mailer/Methods/SMTP.php:
|
| 1205 |
msgid "%s has returned an unknown error."
|
| 1206 |
msgstr ""
|
| 1207 |
|
| 1208 |
#: lib/Mailer/Methods/AmazonSES.php:66 lib/Mailer/Methods/PHPMail.php:38
|
| 1209 |
-
#: lib/Mailer/Methods/SMTP.php:
|
| 1210 |
msgid "Unprocessed subscriber"
|
| 1211 |
msgstr ""
|
| 1212 |
|
|
@@ -1227,12 +1233,12 @@ msgstr ""
|
|
| 1227 |
msgid "Please specify a type."
|
| 1228 |
msgstr ""
|
| 1229 |
|
| 1230 |
-
#: lib/Models/Form.php:93 lib/Models/Newsletter.php:
|
| 1231 |
#: lib/Models/Segment.php:133 lib/Models/Subscriber.php:342
|
| 1232 |
msgid "All"
|
| 1233 |
msgstr ""
|
| 1234 |
|
| 1235 |
-
#: lib/Models/Form.php:98 lib/Models/Newsletter.php:
|
| 1236 |
#: lib/Models/Segment.php:138 lib/Models/Subscriber.php:367 views/forms.html:66
|
| 1237 |
#: views/newsletters.html:77 views/segments.html:50
|
| 1238 |
#: views/subscribers/subscribers.html:37
|
|
@@ -1243,38 +1249,38 @@ msgstr ""
|
|
| 1243 |
msgid "Another record already exists. Please specify a different \"%1$s\"."
|
| 1244 |
msgstr ""
|
| 1245 |
|
| 1246 |
-
#: lib/Models/Newsletter.php:
|
| 1247 |
msgid "Deleted list"
|
| 1248 |
msgstr ""
|
| 1249 |
|
| 1250 |
-
#: lib/Models/Newsletter.php:
|
| 1251 |
#: lib/Subscribers/ImportExport/Export/Export.php:170
|
| 1252 |
msgid "All Lists"
|
| 1253 |
msgstr ""
|
| 1254 |
|
| 1255 |
-
#: lib/Models/Newsletter.php:
|
| 1256 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
|
| 1257 |
msgid "Draft"
|
| 1258 |
msgstr ""
|
| 1259 |
|
| 1260 |
-
#: lib/Models/Newsletter.php:
|
| 1261 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
|
| 1262 |
msgid "Scheduled"
|
| 1263 |
msgstr ""
|
| 1264 |
|
| 1265 |
-
#: lib/Models/Newsletter.php:
|
| 1266 |
msgid "Sending"
|
| 1267 |
msgstr ""
|
| 1268 |
|
| 1269 |
-
#: lib/Models/Newsletter.php:
|
| 1270 |
msgid "Sent"
|
| 1271 |
msgstr ""
|
| 1272 |
|
| 1273 |
-
#: lib/Models/Newsletter.php:
|
| 1274 |
msgid "Active"
|
| 1275 |
msgstr ""
|
| 1276 |
|
| 1277 |
-
#: lib/Models/Newsletter.php:
|
| 1278 |
msgid "Not active"
|
| 1279 |
msgstr ""
|
| 1280 |
|
|
@@ -1631,19 +1637,19 @@ msgstr ""
|
|
| 1631 |
msgid "Accidentally unsubscribed?"
|
| 1632 |
msgstr ""
|
| 1633 |
|
| 1634 |
-
#: lib/Twig/Functions.php:88 views/settings/mta.html:
|
| 1635 |
msgid "every minute"
|
| 1636 |
msgstr ""
|
| 1637 |
|
| 1638 |
-
#: lib/Twig/Functions.php:89 views/settings/mta.html:
|
| 1639 |
msgid "every %1$d minutes"
|
| 1640 |
msgstr ""
|
| 1641 |
|
| 1642 |
-
#: lib/Twig/Functions.php:90 views/settings/mta.html:
|
| 1643 |
msgid "every hour"
|
| 1644 |
msgstr ""
|
| 1645 |
|
| 1646 |
-
#: lib/Twig/Functions.php:91 views/settings/mta.html:
|
| 1647 |
msgid "every %1$d hours"
|
| 1648 |
msgstr ""
|
| 1649 |
|
|
@@ -1837,7 +1843,7 @@ msgstr ""
|
|
| 1837 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
|
| 1838 |
#: views/premium.html:54 views/settings/advanced.html:90
|
| 1839 |
#: views/settings/advanced.html:130 views/settings/bounce.html:190
|
| 1840 |
-
#: views/settings/mta.html:
|
| 1841 |
#: views/subscribers/importExport/export.html:33
|
| 1842 |
#: views/subscribers/importExport/import/step2.html:63
|
| 1843 |
msgid "Yes"
|
|
@@ -1856,8 +1862,8 @@ msgstr ""
|
|
| 1856 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
|
| 1857 |
#: views/premium.html:60 views/premium.html:61 views/settings/advanced.html:101
|
| 1858 |
#: views/settings/advanced.html:141 views/settings/bounce.html:148
|
| 1859 |
-
#: views/settings/bounce.html:179 views/settings/mta.html:
|
| 1860 |
-
#: views/settings/mta.html:
|
| 1861 |
#: views/subscribers/importExport/export.html:38
|
| 1862 |
#: views/subscribers/importExport/import/step2.html:67
|
| 1863 |
msgid "No"
|
|
@@ -2158,7 +2164,9 @@ msgstr ""
|
|
| 2158 |
msgid "Edit"
|
| 2159 |
msgstr ""
|
| 2160 |
|
| 2161 |
-
#: views/forms.html:64
|
|
|
|
|
|
|
| 2162 |
msgid "Duplicate"
|
| 2163 |
msgstr ""
|
| 2164 |
|
|
@@ -2756,7 +2764,7 @@ msgstr ""
|
|
| 2756 |
msgid "Cancel deletion"
|
| 2757 |
msgstr ""
|
| 2758 |
|
| 2759 |
-
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:
|
| 2760 |
msgid "Drag to move"
|
| 2761 |
msgstr ""
|
| 2762 |
|
|
@@ -3286,8 +3294,8 @@ msgid ""
|
|
| 3286 |
"number."
|
| 3287 |
msgstr ""
|
| 3288 |
|
| 3289 |
-
#: views/newsletters.html:131 views/settings/mta.html:
|
| 3290 |
-
#: views/settings/mta.html:
|
| 3291 |
msgid "Activate"
|
| 3292 |
msgstr ""
|
| 3293 |
|
|
@@ -4129,11 +4137,11 @@ msgstr ""
|
|
| 4129 |
msgid "Hostname"
|
| 4130 |
msgstr ""
|
| 4131 |
|
| 4132 |
-
#: views/settings/bounce.html:50 views/settings/mta.html:
|
| 4133 |
msgid "Login"
|
| 4134 |
msgstr ""
|
| 4135 |
|
| 4136 |
-
#: views/settings/bounce.html:67 views/settings/mta.html:
|
| 4137 |
msgid "Password"
|
| 4138 |
msgstr ""
|
| 4139 |
|
|
@@ -4185,205 +4193,235 @@ msgstr ""
|
|
| 4185 |
msgid "Is it working? Try to connect"
|
| 4186 |
msgstr ""
|
| 4187 |
|
| 4188 |
-
#: views/settings/mta.html:
|
| 4189 |
msgid "You're now sending with MailPoet!"
|
| 4190 |
msgstr ""
|
| 4191 |
|
| 4192 |
-
#: views/settings/mta.html:
|
| 4193 |
msgid "Great, you're all set up. Your emails will now be sent quickly and reliably!"
|
| 4194 |
msgstr ""
|
| 4195 |
|
| 4196 |
-
#: views/settings/mta.html:
|
| 4197 |
msgid "Solve all of your sending problems!"
|
| 4198 |
msgstr ""
|
| 4199 |
|
| 4200 |
-
#: views/settings/mta.html:
|
| 4201 |
msgid ""
|
| 4202 |
"Let MailPoet send your emails and get the Premium features for as little as "
|
| 4203 |
"10 dollars or euros per month."
|
| 4204 |
msgstr ""
|
| 4205 |
|
| 4206 |
-
#: views/settings/mta.html:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4207 |
msgid "Find out more"
|
| 4208 |
msgstr ""
|
| 4209 |
|
| 4210 |
-
#: views/settings/mta.html:
|
| 4211 |
msgid "Activated"
|
| 4212 |
msgstr ""
|
| 4213 |
|
| 4214 |
-
#: views/settings/mta.html:
|
| 4215 |
msgid "Other"
|
| 4216 |
msgstr ""
|
| 4217 |
|
| 4218 |
-
#: views/settings/mta.html:
|
| 4219 |
msgid "Send with your website or third party"
|
| 4220 |
msgstr ""
|
| 4221 |
|
| 4222 |
-
#: views/settings/mta.html:
|
| 4223 |
msgid ""
|
| 4224 |
"Choose to send emails through your website (not recommended) or a third "
|
| 4225 |
"party sender."
|
| 4226 |
msgstr ""
|
| 4227 |
|
| 4228 |
#: views/settings/mta.html:125
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4229 |
msgid "Configure"
|
| 4230 |
msgstr ""
|
| 4231 |
|
| 4232 |
-
#: views/settings/mta.html:
|
| 4233 |
msgid ""
|
| 4234 |
"Need help to pick? [link]Check out the comparison table of sending "
|
| 4235 |
"methods[/link]."
|
| 4236 |
msgstr ""
|
| 4237 |
|
| 4238 |
-
#: views/settings/mta.html:
|
| 4239 |
msgid "Method"
|
| 4240 |
msgstr ""
|
| 4241 |
|
| 4242 |
-
#: views/settings/mta.html:
|
| 4243 |
msgid "Your web host / web server"
|
| 4244 |
msgstr ""
|
| 4245 |
|
| 4246 |
-
#: views/settings/mta.html:
|
| 4247 |
msgid "SMTP"
|
| 4248 |
msgstr ""
|
| 4249 |
|
| 4250 |
-
#: views/settings/mta.html:
|
| 4251 |
msgid "Select your provider"
|
| 4252 |
msgstr ""
|
| 4253 |
|
| 4254 |
-
#: views/settings/mta.html:
|
| 4255 |
msgid "Your web host"
|
| 4256 |
msgstr ""
|
| 4257 |
|
| 4258 |
-
#: views/settings/mta.html:
|
| 4259 |
msgid "Select your web host"
|
| 4260 |
msgstr ""
|
| 4261 |
|
| 4262 |
-
#: views/settings/mta.html:
|
| 4263 |
msgid "Sending frequency"
|
| 4264 |
msgstr ""
|
| 4265 |
|
| 4266 |
-
#: views/settings/mta.html:
|
| 4267 |
msgid "Recommended"
|
| 4268 |
msgstr ""
|
| 4269 |
|
| 4270 |
-
#: views/settings/mta.html:
|
| 4271 |
msgid "I'll set my own frequency"
|
| 4272 |
msgstr ""
|
| 4273 |
|
| 4274 |
-
#: views/settings/mta.html:
|
| 4275 |
msgid "emails"
|
| 4276 |
msgstr ""
|
| 4277 |
|
| 4278 |
-
#: views/settings/mta.html:
|
| 4279 |
msgid "recommended"
|
| 4280 |
msgstr ""
|
| 4281 |
|
| 4282 |
-
#: views/settings/mta.html:
|
| 4283 |
msgid ""
|
| 4284 |
"<strong>Warning!</strong> Sending more than the recommended amount of "
|
| 4285 |
"emails? You may break the terms of your web host or provider!"
|
| 4286 |
msgstr ""
|
| 4287 |
|
| 4288 |
-
#: views/settings/mta.html:
|
| 4289 |
msgid ""
|
| 4290 |
"Please ask your host for the maximum number of emails you are allowed to "
|
| 4291 |
"send per day."
|
| 4292 |
msgstr ""
|
| 4293 |
|
| 4294 |
-
#: views/settings/mta.html:
|
| 4295 |
msgid "SMTP Hostname"
|
| 4296 |
msgstr ""
|
| 4297 |
|
| 4298 |
-
#: views/settings/mta.html:
|
| 4299 |
msgid "e.g.: smtp.mydomain.com"
|
| 4300 |
msgstr ""
|
| 4301 |
|
| 4302 |
-
#: views/settings/mta.html:
|
| 4303 |
msgid "SMTP Port"
|
| 4304 |
msgstr ""
|
| 4305 |
|
| 4306 |
-
#: views/settings/mta.html:
|
| 4307 |
msgid "Region"
|
| 4308 |
msgstr ""
|
| 4309 |
|
| 4310 |
-
#: views/settings/mta.html:
|
| 4311 |
msgid "Access Key"
|
| 4312 |
msgstr ""
|
| 4313 |
|
| 4314 |
-
#: views/settings/mta.html:
|
| 4315 |
msgid "Secret Key"
|
| 4316 |
msgstr ""
|
| 4317 |
|
| 4318 |
-
#: views/settings/mta.html:
|
| 4319 |
-
msgid "Domain"
|
| 4320 |
-
msgstr ""
|
| 4321 |
-
|
| 4322 |
-
#: views/settings/mta.html:484
|
| 4323 |
msgid "API Key"
|
| 4324 |
msgstr ""
|
| 4325 |
|
| 4326 |
-
#: views/settings/mta.html:
|
| 4327 |
msgid "Secure Connection"
|
| 4328 |
msgstr ""
|
| 4329 |
|
| 4330 |
-
#: views/settings/mta.html:
|
| 4331 |
msgid "Authentication"
|
| 4332 |
msgstr ""
|
| 4333 |
|
| 4334 |
-
#: views/settings/mta.html:
|
| 4335 |
msgid ""
|
| 4336 |
"Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
|
| 4337 |
"Authentication to be turned off."
|
| 4338 |
msgstr ""
|
| 4339 |
|
| 4340 |
-
#: views/settings/mta.html:
|
| 4341 |
msgid "SPF Signature (Highly recommended!)"
|
| 4342 |
msgstr ""
|
| 4343 |
|
| 4344 |
-
#: views/settings/mta.html:
|
| 4345 |
msgid ""
|
| 4346 |
"This improves your delivery rate by verifying that you're allowed to send "
|
| 4347 |
"emails from your domain."
|
| 4348 |
msgstr ""
|
| 4349 |
|
| 4350 |
-
#: views/settings/mta.html:
|
| 4351 |
msgid ""
|
| 4352 |
"SPF is set up in your DNS. Read your host's support documentation for more "
|
| 4353 |
"information."
|
| 4354 |
msgstr ""
|
| 4355 |
|
| 4356 |
-
#: views/settings/mta.html:
|
| 4357 |
msgid "Test the sending method"
|
| 4358 |
msgstr ""
|
| 4359 |
|
| 4360 |
-
#: views/settings/mta.html:
|
| 4361 |
msgid "Send a test email"
|
| 4362 |
msgstr ""
|
| 4363 |
|
| 4364 |
-
#: views/settings/mta.html:
|
| 4365 |
msgid "or Cancel"
|
| 4366 |
msgstr ""
|
| 4367 |
|
| 4368 |
-
#: views/settings/mta.html:
|
| 4369 |
msgid ""
|
| 4370 |
"The email could not be sent. Make sure the option \"Email notifications\" "
|
| 4371 |
"has a FROM email address in the Basics tab."
|
| 4372 |
msgstr ""
|
| 4373 |
|
| 4374 |
-
#: views/settings/mta.html:
|
| 4375 |
msgid "This is a Sending Method Test"
|
| 4376 |
msgstr ""
|
| 4377 |
|
| 4378 |
-
#: views/settings/mta.html:
|
| 4379 |
msgid "Yup, it works! You can start blasting away emails to the moon."
|
| 4380 |
msgstr ""
|
| 4381 |
|
| 4382 |
-
#: views/settings/mta.html:
|
| 4383 |
msgid "The email has been sent! Check your inbox."
|
| 4384 |
msgstr ""
|
| 4385 |
|
| 4386 |
-
#: views/settings/mta.html:
|
| 4387 |
msgid "You have selected an invalid sending method."
|
| 4388 |
msgstr ""
|
| 4389 |
|
|
@@ -4926,100 +4964,127 @@ msgid ""
|
|
| 4926 |
msgstr ""
|
| 4927 |
|
| 4928 |
#: views/update.html:13 views/welcome.html:22
|
| 4929 |
-
msgid "
|
| 4930 |
msgstr ""
|
| 4931 |
|
| 4932 |
#: views/update.html:15 views/welcome.html:24
|
| 4933 |
msgid ""
|
| 4934 |
-
"
|
| 4935 |
-
"
|
| 4936 |
-
"help!"
|
| 4937 |
msgstr ""
|
| 4938 |
|
| 4939 |
-
#: views/update.html:
|
| 4940 |
msgid "What's New"
|
| 4941 |
msgstr ""
|
| 4942 |
|
| 4943 |
-
#: views/update.html:
|
| 4944 |
msgid "List of Changes"
|
| 4945 |
msgstr ""
|
| 4946 |
|
| 4947 |
-
#: views/update.html:
|
| 4948 |
msgid "See readme.txt for a changelog."
|
| 4949 |
msgstr ""
|
| 4950 |
|
| 4951 |
-
#: views/update.html:
|
| 4952 |
-
msgid "
|
| 4953 |
msgstr ""
|
| 4954 |
|
| 4955 |
-
#: views/update.html:
|
| 4956 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4957 |
msgstr ""
|
| 4958 |
|
| 4959 |
-
#: views/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4960 |
msgid "MailPoet Logo"
|
| 4961 |
msgstr ""
|
| 4962 |
|
| 4963 |
-
#: views/welcome.html:
|
| 4964 |
msgid "What's new"
|
| 4965 |
msgstr ""
|
| 4966 |
|
| 4967 |
-
#: views/welcome.html:
|
| 4968 |
msgid "Want to Make MailPoet Even Better?"
|
| 4969 |
msgstr ""
|
| 4970 |
|
| 4971 |
-
#: views/welcome.html:
|
| 4972 |
msgid "We Need Your Feedback!"
|
| 4973 |
msgstr ""
|
| 4974 |
|
| 4975 |
-
#: views/welcome.html:
|
| 4976 |
msgid ""
|
| 4977 |
"As a beta tester, you have a very important job: to tell us what you think "
|
| 4978 |
"about this new version. If you love it, tell us! If you hate it, let us "
|
| 4979 |
"know! Any and all feedback is useful."
|
| 4980 |
msgstr ""
|
| 4981 |
|
| 4982 |
-
#: views/welcome.html:
|
| 4983 |
msgid ""
|
| 4984 |
"To get in touch with us, simply click on the blue circle in the bottom "
|
| 4985 |
"right corner of your screen. This button is visible on all MailPoet pages "
|
| 4986 |
"on your WordPress dashboard."
|
| 4987 |
msgstr ""
|
| 4988 |
|
| 4989 |
-
#: views/welcome.html:
|
| 4990 |
msgid "Sharing is Caring"
|
| 4991 |
msgstr ""
|
| 4992 |
|
| 4993 |
-
#: views/welcome.html:
|
| 4994 |
msgid ""
|
| 4995 |
"By sharing your data <i>anonymously</i> with us, you can help us understand "
|
| 4996 |
"<i>how people use MailPoet</i> and <i>what sort of features they like and "
|
| 4997 |
"don't like</i>."
|
| 4998 |
msgstr ""
|
| 4999 |
|
| 5000 |
-
#: views/welcome.html:
|
| 5001 |
msgid "Yes, I want to help!"
|
| 5002 |
msgstr ""
|
| 5003 |
|
| 5004 |
-
#: views/welcome.html:
|
| 5005 |
msgid "Subscribe To Our Newsletter"
|
| 5006 |
msgstr ""
|
| 5007 |
|
| 5008 |
-
#: views/welcome.html:
|
| 5009 |
msgid "About once a month, we send out a pretty cool newsletter ourselves."
|
| 5010 |
msgstr ""
|
| 5011 |
|
| 5012 |
-
#: views/welcome.html:
|
| 5013 |
msgid ""
|
| 5014 |
"Sign up to get a curated selection of awesome links, tips and tricks for "
|
| 5015 |
"using MailPoet, special offers, and important plugin updates!"
|
| 5016 |
msgstr ""
|
| 5017 |
|
| 5018 |
-
#: views/welcome.html:
|
| 5019 |
msgid "Learn the Ropes"
|
| 5020 |
msgstr ""
|
| 5021 |
|
| 5022 |
-
#: views/welcome.html:
|
| 5023 |
msgid ""
|
| 5024 |
"New to MailPoet? Check out our brand new email course. Over the span of 3 "
|
| 5025 |
"weeks, we'll teach you how to create and send your first MailPoet email "
|
| 4 |
msgstr ""
|
| 5 |
"Project-Id-Version: \n"
|
| 6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
| 7 |
+
"POT-Creation-Date: 2017-07-18 10:51:01+00:00\n"
|
| 8 |
"MIME-Version: 1.0\n"
|
| 9 |
"Content-Type: text/plain; charset=utf-8\n"
|
| 10 |
"Content-Transfer-Encoding: 8bit\n"
|
| 365 |
msgid "Export"
|
| 366 |
msgstr ""
|
| 367 |
|
| 368 |
+
#: lib/Config/Menu.php:222 lib/Config/Menu.php:223 views/update.html:23
|
| 369 |
+
#: views/welcome.html:32
|
| 370 |
msgid "Welcome"
|
| 371 |
msgstr ""
|
| 372 |
|
| 1023 |
msgid "Daemon does not exist."
|
| 1024 |
msgstr ""
|
| 1025 |
|
| 1026 |
+
#: lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php:95
|
| 1027 |
+
msgid ""
|
| 1028 |
+
"There was an error processing your newsletter during sending. If possible, "
|
| 1029 |
+
"please contact us and report this issue."
|
| 1030 |
+
msgstr ""
|
| 1031 |
+
|
| 1032 |
#: lib/Form/Block/Base.php:10
|
| 1033 |
msgid "Please specify a valid email address."
|
| 1034 |
msgstr ""
|
| 1207 |
msgstr ""
|
| 1208 |
|
| 1209 |
#: lib/Mailer/Methods/AmazonSES.php:64 lib/Mailer/Methods/PHPMail.php:36
|
| 1210 |
+
#: lib/Mailer/Methods/SMTP.php:120 lib/Mailer/Methods/SendGrid.php:32
|
| 1211 |
msgid "%s has returned an unknown error."
|
| 1212 |
msgstr ""
|
| 1213 |
|
| 1214 |
#: lib/Mailer/Methods/AmazonSES.php:66 lib/Mailer/Methods/PHPMail.php:38
|
| 1215 |
+
#: lib/Mailer/Methods/SMTP.php:123 lib/Mailer/Methods/SendGrid.php:34
|
| 1216 |
msgid "Unprocessed subscriber"
|
| 1217 |
msgstr ""
|
| 1218 |
|
| 1233 |
msgid "Please specify a type."
|
| 1234 |
msgstr ""
|
| 1235 |
|
| 1236 |
+
#: lib/Models/Form.php:93 lib/Models/Newsletter.php:649
|
| 1237 |
#: lib/Models/Segment.php:133 lib/Models/Subscriber.php:342
|
| 1238 |
msgid "All"
|
| 1239 |
msgstr ""
|
| 1240 |
|
| 1241 |
+
#: lib/Models/Form.php:98 lib/Models/Newsletter.php:719
|
| 1242 |
#: lib/Models/Segment.php:138 lib/Models/Subscriber.php:367 views/forms.html:66
|
| 1243 |
#: views/newsletters.html:77 views/segments.html:50
|
| 1244 |
#: views/subscribers/subscribers.html:37
|
| 1249 |
msgid "Another record already exists. Please specify a different \"%1$s\"."
|
| 1250 |
msgstr ""
|
| 1251 |
|
| 1252 |
+
#: lib/Models/Newsletter.php:391
|
| 1253 |
msgid "Deleted list"
|
| 1254 |
msgstr ""
|
| 1255 |
|
| 1256 |
+
#: lib/Models/Newsletter.php:550 lib/Models/Subscriber.php:278
|
| 1257 |
#: lib/Subscribers/ImportExport/Export/Export.php:170
|
| 1258 |
msgid "All Lists"
|
| 1259 |
msgstr ""
|
| 1260 |
|
| 1261 |
+
#: lib/Models/Newsletter.php:661
|
| 1262 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
|
| 1263 |
msgid "Draft"
|
| 1264 |
msgstr ""
|
| 1265 |
|
| 1266 |
+
#: lib/Models/Newsletter.php:669
|
| 1267 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
|
| 1268 |
msgid "Scheduled"
|
| 1269 |
msgstr ""
|
| 1270 |
|
| 1271 |
+
#: lib/Models/Newsletter.php:677
|
| 1272 |
msgid "Sending"
|
| 1273 |
msgstr ""
|
| 1274 |
|
| 1275 |
+
#: lib/Models/Newsletter.php:685
|
| 1276 |
msgid "Sent"
|
| 1277 |
msgstr ""
|
| 1278 |
|
| 1279 |
+
#: lib/Models/Newsletter.php:699 views/newsletters.html:85
|
| 1280 |
msgid "Active"
|
| 1281 |
msgstr ""
|
| 1282 |
|
| 1283 |
+
#: lib/Models/Newsletter.php:707
|
| 1284 |
msgid "Not active"
|
| 1285 |
msgstr ""
|
| 1286 |
|
| 1637 |
msgid "Accidentally unsubscribed?"
|
| 1638 |
msgstr ""
|
| 1639 |
|
| 1640 |
+
#: lib/Twig/Functions.php:88 views/settings/mta.html:1055
|
| 1641 |
msgid "every minute"
|
| 1642 |
msgstr ""
|
| 1643 |
|
| 1644 |
+
#: lib/Twig/Functions.php:89 views/settings/mta.html:1056
|
| 1645 |
msgid "every %1$d minutes"
|
| 1646 |
msgstr ""
|
| 1647 |
|
| 1648 |
+
#: lib/Twig/Functions.php:90 views/settings/mta.html:1057
|
| 1649 |
msgid "every hour"
|
| 1650 |
msgstr ""
|
| 1651 |
|
| 1652 |
+
#: lib/Twig/Functions.php:91 views/settings/mta.html:1058
|
| 1653 |
msgid "every %1$d hours"
|
| 1654 |
msgstr ""
|
| 1655 |
|
| 1843 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
|
| 1844 |
#: views/premium.html:54 views/settings/advanced.html:90
|
| 1845 |
#: views/settings/advanced.html:130 views/settings/bounce.html:190
|
| 1846 |
+
#: views/settings/mta.html:589 views/settings/signup.html:34
|
| 1847 |
#: views/subscribers/importExport/export.html:33
|
| 1848 |
#: views/subscribers/importExport/import/step2.html:63
|
| 1849 |
msgid "Yes"
|
| 1862 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
|
| 1863 |
#: views/premium.html:60 views/premium.html:61 views/settings/advanced.html:101
|
| 1864 |
#: views/settings/advanced.html:141 views/settings/bounce.html:148
|
| 1865 |
+
#: views/settings/bounce.html:179 views/settings/mta.html:546
|
| 1866 |
+
#: views/settings/mta.html:600 views/settings/signup.html:46
|
| 1867 |
#: views/subscribers/importExport/export.html:38
|
| 1868 |
#: views/subscribers/importExport/import/step2.html:67
|
| 1869 |
msgid "No"
|
| 2164 |
msgid "Edit"
|
| 2165 |
msgstr ""
|
| 2166 |
|
| 2167 |
+
#: views/forms.html:64
|
| 2168 |
+
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
| 2169 |
+
#: views/newsletters.html:80 views/segments.html:41
|
| 2170 |
msgid "Duplicate"
|
| 2171 |
msgstr ""
|
| 2172 |
|
| 2764 |
msgid "Cancel deletion"
|
| 2765 |
msgstr ""
|
| 2766 |
|
| 2767 |
+
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:7
|
| 2768 |
msgid "Drag to move"
|
| 2769 |
msgstr ""
|
| 2770 |
|
| 3294 |
"number."
|
| 3295 |
msgstr ""
|
| 3296 |
|
| 3297 |
+
#: views/newsletters.html:131 views/settings/mta.html:109
|
| 3298 |
+
#: views/settings/mta.html:655
|
| 3299 |
msgid "Activate"
|
| 3300 |
msgstr ""
|
| 3301 |
|
| 4137 |
msgid "Hostname"
|
| 4138 |
msgstr ""
|
| 4139 |
|
| 4140 |
+
#: views/settings/bounce.html:50 views/settings/mta.html:495
|
| 4141 |
msgid "Login"
|
| 4142 |
msgstr ""
|
| 4143 |
|
| 4144 |
+
#: views/settings/bounce.html:67 views/settings/mta.html:518
|
| 4145 |
msgid "Password"
|
| 4146 |
msgstr ""
|
| 4147 |
|
| 4193 |
msgid "Is it working? Try to connect"
|
| 4194 |
msgstr ""
|
| 4195 |
|
| 4196 |
+
#: views/settings/mta.html:76
|
| 4197 |
msgid "You're now sending with MailPoet!"
|
| 4198 |
msgstr ""
|
| 4199 |
|
| 4200 |
+
#: views/settings/mta.html:78
|
| 4201 |
msgid "Great, you're all set up. Your emails will now be sent quickly and reliably!"
|
| 4202 |
msgstr ""
|
| 4203 |
|
| 4204 |
+
#: views/settings/mta.html:85
|
| 4205 |
msgid "Solve all of your sending problems!"
|
| 4206 |
msgstr ""
|
| 4207 |
|
| 4208 |
+
#: views/settings/mta.html:87
|
| 4209 |
msgid ""
|
| 4210 |
"Let MailPoet send your emails and get the Premium features for as little as "
|
| 4211 |
"10 dollars or euros per month."
|
| 4212 |
msgstr ""
|
| 4213 |
|
| 4214 |
+
#: views/settings/mta.html:89
|
| 4215 |
+
msgid "Reach the inbox, not the spam box."
|
| 4216 |
+
msgstr ""
|
| 4217 |
+
|
| 4218 |
+
#: views/settings/mta.html:90
|
| 4219 |
+
msgid "Send emails up to 20 times faster than other sending methods."
|
| 4220 |
+
msgstr ""
|
| 4221 |
+
|
| 4222 |
+
#: views/settings/mta.html:91
|
| 4223 |
+
msgid "SPF & DKIM signatures are already set up! No configuration required."
|
| 4224 |
+
msgstr ""
|
| 4225 |
+
|
| 4226 |
+
#: views/settings/mta.html:92
|
| 4227 |
+
msgid ""
|
| 4228 |
+
"Automatically remove invalid and bounced addresses (bounce handling) to "
|
| 4229 |
+
"keep your lists clean."
|
| 4230 |
+
msgstr ""
|
| 4231 |
+
|
| 4232 |
+
#: views/settings/mta.html:98 views/welcome.html:53
|
| 4233 |
msgid "Find out more"
|
| 4234 |
msgstr ""
|
| 4235 |
|
| 4236 |
+
#: views/settings/mta.html:102 views/settings/mta.html:133
|
| 4237 |
msgid "Activated"
|
| 4238 |
msgstr ""
|
| 4239 |
|
| 4240 |
+
#: views/settings/mta.html:119
|
| 4241 |
msgid "Other"
|
| 4242 |
msgstr ""
|
| 4243 |
|
| 4244 |
+
#: views/settings/mta.html:121
|
| 4245 |
msgid "Send with your website or third party"
|
| 4246 |
msgstr ""
|
| 4247 |
|
| 4248 |
+
#: views/settings/mta.html:123
|
| 4249 |
msgid ""
|
| 4250 |
"Choose to send emails through your website (not recommended) or a third "
|
| 4251 |
"party sender."
|
| 4252 |
msgstr ""
|
| 4253 |
|
| 4254 |
#: views/settings/mta.html:125
|
| 4255 |
+
msgid "You\\'ll probably end up in spam."
|
| 4256 |
+
msgstr ""
|
| 4257 |
+
|
| 4258 |
+
#: views/settings/mta.html:126
|
| 4259 |
+
msgid "Sending speed is limited by your web host."
|
| 4260 |
+
msgstr ""
|
| 4261 |
+
|
| 4262 |
+
#: views/settings/mta.html:127
|
| 4263 |
+
msgid "Manual configuration of SPF and DKIM required."
|
| 4264 |
+
msgstr ""
|
| 4265 |
+
|
| 4266 |
+
#: views/settings/mta.html:128
|
| 4267 |
+
msgid "Bounce handling is available, but only with an extra add-on."
|
| 4268 |
+
msgstr ""
|
| 4269 |
+
|
| 4270 |
+
#: views/settings/mta.html:137
|
| 4271 |
msgid "Configure"
|
| 4272 |
msgstr ""
|
| 4273 |
|
| 4274 |
+
#: views/settings/mta.html:144
|
| 4275 |
msgid ""
|
| 4276 |
"Need help to pick? [link]Check out the comparison table of sending "
|
| 4277 |
"methods[/link]."
|
| 4278 |
msgstr ""
|
| 4279 |
|
| 4280 |
+
#: views/settings/mta.html:158
|
| 4281 |
msgid "Method"
|
| 4282 |
msgstr ""
|
| 4283 |
|
| 4284 |
+
#: views/settings/mta.html:168
|
| 4285 |
msgid "Your web host / web server"
|
| 4286 |
msgstr ""
|
| 4287 |
|
| 4288 |
+
#: views/settings/mta.html:177
|
| 4289 |
msgid "SMTP"
|
| 4290 |
msgstr ""
|
| 4291 |
|
| 4292 |
+
#: views/settings/mta.html:180
|
| 4293 |
msgid "Select your provider"
|
| 4294 |
msgstr ""
|
| 4295 |
|
| 4296 |
+
#: views/settings/mta.html:205
|
| 4297 |
msgid "Your web host"
|
| 4298 |
msgstr ""
|
| 4299 |
|
| 4300 |
+
#: views/settings/mta.html:221
|
| 4301 |
msgid "Select your web host"
|
| 4302 |
msgstr ""
|
| 4303 |
|
| 4304 |
+
#: views/settings/mta.html:244
|
| 4305 |
msgid "Sending frequency"
|
| 4306 |
msgstr ""
|
| 4307 |
|
| 4308 |
+
#: views/settings/mta.html:255
|
| 4309 |
msgid "Recommended"
|
| 4310 |
msgstr ""
|
| 4311 |
|
| 4312 |
+
#: views/settings/mta.html:264
|
| 4313 |
msgid "I'll set my own frequency"
|
| 4314 |
msgstr ""
|
| 4315 |
|
| 4316 |
+
#: views/settings/mta.html:288
|
| 4317 |
msgid "emails"
|
| 4318 |
msgstr ""
|
| 4319 |
|
| 4320 |
+
#: views/settings/mta.html:305
|
| 4321 |
msgid "recommended"
|
| 4322 |
msgstr ""
|
| 4323 |
|
| 4324 |
+
#: views/settings/mta.html:314
|
| 4325 |
msgid ""
|
| 4326 |
"<strong>Warning!</strong> Sending more than the recommended amount of "
|
| 4327 |
"emails? You may break the terms of your web host or provider!"
|
| 4328 |
msgstr ""
|
| 4329 |
|
| 4330 |
+
#: views/settings/mta.html:316
|
| 4331 |
msgid ""
|
| 4332 |
"Please ask your host for the maximum number of emails you are allowed to "
|
| 4333 |
"send per day."
|
| 4334 |
msgstr ""
|
| 4335 |
|
| 4336 |
+
#: views/settings/mta.html:330
|
| 4337 |
msgid "SMTP Hostname"
|
| 4338 |
msgstr ""
|
| 4339 |
|
| 4340 |
+
#: views/settings/mta.html:333
|
| 4341 |
msgid "e.g.: smtp.mydomain.com"
|
| 4342 |
msgstr ""
|
| 4343 |
|
| 4344 |
+
#: views/settings/mta.html:355
|
| 4345 |
msgid "SMTP Port"
|
| 4346 |
msgstr ""
|
| 4347 |
|
| 4348 |
+
#: views/settings/mta.html:382
|
| 4349 |
msgid "Region"
|
| 4350 |
msgstr ""
|
| 4351 |
|
| 4352 |
+
#: views/settings/mta.html:417
|
| 4353 |
msgid "Access Key"
|
| 4354 |
msgstr ""
|
| 4355 |
|
| 4356 |
+
#: views/settings/mta.html:444
|
| 4357 |
msgid "Secret Key"
|
| 4358 |
msgstr ""
|
| 4359 |
|
| 4360 |
+
#: views/settings/mta.html:471
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4361 |
msgid "API Key"
|
| 4362 |
msgstr ""
|
| 4363 |
|
| 4364 |
+
#: views/settings/mta.html:541
|
| 4365 |
msgid "Secure Connection"
|
| 4366 |
msgstr ""
|
| 4367 |
|
| 4368 |
+
#: views/settings/mta.html:572
|
| 4369 |
msgid "Authentication"
|
| 4370 |
msgstr ""
|
| 4371 |
|
| 4372 |
+
#: views/settings/mta.html:575
|
| 4373 |
msgid ""
|
| 4374 |
"Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
|
| 4375 |
"Authentication to be turned off."
|
| 4376 |
msgstr ""
|
| 4377 |
|
| 4378 |
+
#: views/settings/mta.html:614
|
| 4379 |
msgid "SPF Signature (Highly recommended!)"
|
| 4380 |
msgstr ""
|
| 4381 |
|
| 4382 |
+
#: views/settings/mta.html:617
|
| 4383 |
msgid ""
|
| 4384 |
"This improves your delivery rate by verifying that you're allowed to send "
|
| 4385 |
"emails from your domain."
|
| 4386 |
msgstr ""
|
| 4387 |
|
| 4388 |
+
#: views/settings/mta.html:622
|
| 4389 |
msgid ""
|
| 4390 |
"SPF is set up in your DNS. Read your host's support documentation for more "
|
| 4391 |
"information."
|
| 4392 |
msgstr ""
|
| 4393 |
|
| 4394 |
+
#: views/settings/mta.html:630
|
| 4395 |
msgid "Test the sending method"
|
| 4396 |
msgstr ""
|
| 4397 |
|
| 4398 |
+
#: views/settings/mta.html:644
|
| 4399 |
msgid "Send a test email"
|
| 4400 |
msgstr ""
|
| 4401 |
|
| 4402 |
+
#: views/settings/mta.html:660
|
| 4403 |
msgid "or Cancel"
|
| 4404 |
msgstr ""
|
| 4405 |
|
| 4406 |
+
#: views/settings/mta.html:699
|
| 4407 |
msgid ""
|
| 4408 |
"The email could not be sent. Make sure the option \"Email notifications\" "
|
| 4409 |
"has a FROM email address in the Basics tab."
|
| 4410 |
msgstr ""
|
| 4411 |
|
| 4412 |
+
#: views/settings/mta.html:712
|
| 4413 |
msgid "This is a Sending Method Test"
|
| 4414 |
msgstr ""
|
| 4415 |
|
| 4416 |
+
#: views/settings/mta.html:714 views/settings/mta.html:715
|
| 4417 |
msgid "Yup, it works! You can start blasting away emails to the moon."
|
| 4418 |
msgstr ""
|
| 4419 |
|
| 4420 |
+
#: views/settings/mta.html:724
|
| 4421 |
msgid "The email has been sent! Check your inbox."
|
| 4422 |
msgstr ""
|
| 4423 |
|
| 4424 |
+
#: views/settings/mta.html:768
|
| 4425 |
msgid "You have selected an invalid sending method."
|
| 4426 |
msgstr ""
|
| 4427 |
|
| 4964 |
msgstr ""
|
| 4965 |
|
| 4966 |
#: views/update.html:13 views/welcome.html:22
|
| 4967 |
+
msgid "Greetings, humans."
|
| 4968 |
msgstr ""
|
| 4969 |
|
| 4970 |
#: views/update.html:15 views/welcome.html:24
|
| 4971 |
msgid ""
|
| 4972 |
+
"Thanks for using MailPoet! We really appreciate all of your love, "
|
| 4973 |
+
"affection, [link]and (good) plugin reviews.[/link]"
|
|
|
|
| 4974 |
msgstr ""
|
| 4975 |
|
| 4976 |
+
#: views/update.html:24
|
| 4977 |
msgid "What's New"
|
| 4978 |
msgstr ""
|
| 4979 |
|
| 4980 |
+
#: views/update.html:28
|
| 4981 |
msgid "List of Changes"
|
| 4982 |
msgstr ""
|
| 4983 |
|
| 4984 |
+
#: views/update.html:39
|
| 4985 |
msgid "See readme.txt for a changelog."
|
| 4986 |
msgstr ""
|
| 4987 |
|
| 4988 |
+
#: views/update.html:41
|
| 4989 |
+
msgid "View all changes"
|
| 4990 |
msgstr ""
|
| 4991 |
|
| 4992 |
+
#: views/update.html:48
|
| 4993 |
+
msgid "Do Your Part to Make MailPoet Better"
|
| 4994 |
+
msgstr ""
|
| 4995 |
+
|
| 4996 |
+
#: views/update.html:53
|
| 4997 |
+
msgid "Yes, share my data anonymously."
|
| 4998 |
+
msgstr ""
|
| 4999 |
+
|
| 5000 |
+
#: views/update.html:56
|
| 5001 |
+
msgid ""
|
| 5002 |
+
"By sharing your data with us, you can help us understand what our users "
|
| 5003 |
+
"like (and don't like)."
|
| 5004 |
+
msgstr ""
|
| 5005 |
+
|
| 5006 |
+
#: views/update.html:57
|
| 5007 |
+
msgid "We use it to prioritize and develop new plugin features."
|
| 5008 |
msgstr ""
|
| 5009 |
|
| 5010 |
+
#: views/update.html:58
|
| 5011 |
+
msgid ""
|
| 5012 |
+
"Share your data to help shape the future of MailPoet! [link]Read "
|
| 5013 |
+
"more.[/link]"
|
| 5014 |
+
msgstr ""
|
| 5015 |
+
|
| 5016 |
+
#: views/update.html:68
|
| 5017 |
+
msgid "Care to Give Your Opinion?"
|
| 5018 |
+
msgstr ""
|
| 5019 |
+
|
| 5020 |
+
#: views/update.html:77 views/welcome.html:88
|
| 5021 |
+
msgid "Awesome! Now, take me to MailPoet"
|
| 5022 |
+
msgstr ""
|
| 5023 |
+
|
| 5024 |
+
#: views/welcome.html:29
|
| 5025 |
msgid "MailPoet Logo"
|
| 5026 |
msgstr ""
|
| 5027 |
|
| 5028 |
+
#: views/welcome.html:33
|
| 5029 |
msgid "What's new"
|
| 5030 |
msgstr ""
|
| 5031 |
|
| 5032 |
+
#: views/welcome.html:45
|
| 5033 |
msgid "Want to Make MailPoet Even Better?"
|
| 5034 |
msgstr ""
|
| 5035 |
|
| 5036 |
+
#: views/welcome.html:47
|
| 5037 |
msgid "We Need Your Feedback!"
|
| 5038 |
msgstr ""
|
| 5039 |
|
| 5040 |
+
#: views/welcome.html:48
|
| 5041 |
msgid ""
|
| 5042 |
"As a beta tester, you have a very important job: to tell us what you think "
|
| 5043 |
"about this new version. If you love it, tell us! If you hate it, let us "
|
| 5044 |
"know! Any and all feedback is useful."
|
| 5045 |
msgstr ""
|
| 5046 |
|
| 5047 |
+
#: views/welcome.html:49
|
| 5048 |
msgid ""
|
| 5049 |
"To get in touch with us, simply click on the blue circle in the bottom "
|
| 5050 |
"right corner of your screen. This button is visible on all MailPoet pages "
|
| 5051 |
"on your WordPress dashboard."
|
| 5052 |
msgstr ""
|
| 5053 |
|
| 5054 |
+
#: views/welcome.html:52
|
| 5055 |
msgid "Sharing is Caring"
|
| 5056 |
msgstr ""
|
| 5057 |
|
| 5058 |
+
#: views/welcome.html:53
|
| 5059 |
msgid ""
|
| 5060 |
"By sharing your data <i>anonymously</i> with us, you can help us understand "
|
| 5061 |
"<i>how people use MailPoet</i> and <i>what sort of features they like and "
|
| 5062 |
"don't like</i>."
|
| 5063 |
msgstr ""
|
| 5064 |
|
| 5065 |
+
#: views/welcome.html:58
|
| 5066 |
msgid "Yes, I want to help!"
|
| 5067 |
msgstr ""
|
| 5068 |
|
| 5069 |
+
#: views/welcome.html:68 views/welcome.html:72
|
| 5070 |
msgid "Subscribe To Our Newsletter"
|
| 5071 |
msgstr ""
|
| 5072 |
|
| 5073 |
+
#: views/welcome.html:69
|
| 5074 |
msgid "About once a month, we send out a pretty cool newsletter ourselves."
|
| 5075 |
msgstr ""
|
| 5076 |
|
| 5077 |
+
#: views/welcome.html:70
|
| 5078 |
msgid ""
|
| 5079 |
"Sign up to get a curated selection of awesome links, tips and tricks for "
|
| 5080 |
"using MailPoet, special offers, and important plugin updates!"
|
| 5081 |
msgstr ""
|
| 5082 |
|
| 5083 |
+
#: views/welcome.html:76
|
| 5084 |
msgid "Learn the Ropes"
|
| 5085 |
msgstr ""
|
| 5086 |
|
| 5087 |
+
#: views/welcome.html:77
|
| 5088 |
msgid ""
|
| 5089 |
"New to MailPoet? Check out our brand new email course. Over the span of 3 "
|
| 5090 |
"weeks, we'll teach you how to create and send your first MailPoet email "
|
lib/Config/Menu.php
CHANGED
|
@@ -340,7 +340,7 @@ class Menu {
|
|
| 340 |
|
| 341 |
$readme_file = Env::$path . '/readme.txt';
|
| 342 |
if(is_readable($readme_file)) {
|
| 343 |
-
$changelog = Readme::parseChangelog(file_get_contents($readme_file),
|
| 344 |
if($changelog) {
|
| 345 |
$data['changelog'] = $changelog;
|
| 346 |
}
|
| 340 |
|
| 341 |
$readme_file = Env::$path . '/readme.txt';
|
| 342 |
if(is_readable($readme_file)) {
|
| 343 |
+
$changelog = Readme::parseChangelog(file_get_contents($readme_file), 1);
|
| 344 |
if($changelog) {
|
| 345 |
$data['changelog'] = $changelog;
|
| 346 |
}
|
lib/Config/Populator.php
CHANGED
|
@@ -340,7 +340,7 @@ class Populator {
|
|
| 340 |
if(!version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.32', '<=')) {
|
| 341 |
// Data conversion should only be performed only once, when migrating from
|
| 342 |
// older version
|
| 343 |
-
return;
|
| 344 |
}
|
| 345 |
|
| 346 |
$source_charset = $wpdb->get_var('SELECT @@GLOBAL.character_set_connection');
|
|
@@ -389,6 +389,8 @@ class Populator {
|
|
| 389 |
implode(' AND ', $where_query)
|
| 390 |
));
|
| 391 |
}
|
|
|
|
|
|
|
| 392 |
}
|
| 393 |
|
| 394 |
/*
|
|
@@ -401,7 +403,7 @@ class Populator {
|
|
| 401 |
|
| 402 |
// perform once for versions below 3.0.0-beta.36.2.1
|
| 403 |
if(version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.36.2.1', '>=')) {
|
| 404 |
-
return;
|
| 405 |
}
|
| 406 |
|
| 407 |
$column_list = array(
|
|
@@ -439,6 +441,8 @@ class Populator {
|
|
| 439 |
MP_SENDING_QUEUES_TABLE,
|
| 440 |
'`type` IN("' . join('" , "', $task_types) . '")'
|
| 441 |
));
|
|
|
|
|
|
|
| 442 |
}
|
| 443 |
|
| 444 |
/*
|
|
@@ -452,7 +456,7 @@ class Populator {
|
|
| 452 |
|
| 453 |
// perform once for versions below 3.0.0-beta.36.2.1
|
| 454 |
if(version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.36.2.1', '>=')) {
|
| 455 |
-
return;
|
| 456 |
}
|
| 457 |
|
| 458 |
$query = "UPDATE `%s` newsletters JOIN `%s` queues ON newsletters.id = queues.newsletter_id SET newsletters.sent_at = queues.processed_at";
|
|
@@ -461,5 +465,7 @@ class Populator {
|
|
| 461 |
Newsletter::$_table,
|
| 462 |
SendingQueue::$_table
|
| 463 |
));
|
|
|
|
|
|
|
| 464 |
}
|
| 465 |
}
|
| 340 |
if(!version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.32', '<=')) {
|
| 341 |
// Data conversion should only be performed only once, when migrating from
|
| 342 |
// older version
|
| 343 |
+
return false;
|
| 344 |
}
|
| 345 |
|
| 346 |
$source_charset = $wpdb->get_var('SELECT @@GLOBAL.character_set_connection');
|
| 389 |
implode(' AND ', $where_query)
|
| 390 |
));
|
| 391 |
}
|
| 392 |
+
|
| 393 |
+
return true;
|
| 394 |
}
|
| 395 |
|
| 396 |
/*
|
| 403 |
|
| 404 |
// perform once for versions below 3.0.0-beta.36.2.1
|
| 405 |
if(version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.36.2.1', '>=')) {
|
| 406 |
+
return false;
|
| 407 |
}
|
| 408 |
|
| 409 |
$column_list = array(
|
| 441 |
MP_SENDING_QUEUES_TABLE,
|
| 442 |
'`type` IN("' . join('" , "', $task_types) . '")'
|
| 443 |
));
|
| 444 |
+
|
| 445 |
+
return true;
|
| 446 |
}
|
| 447 |
|
| 448 |
/*
|
| 456 |
|
| 457 |
// perform once for versions below 3.0.0-beta.36.2.1
|
| 458 |
if(version_compare(get_option('mailpoet_db_version'), '3.0.0-beta.36.2.1', '>=')) {
|
| 459 |
+
return false;
|
| 460 |
}
|
| 461 |
|
| 462 |
$query = "UPDATE `%s` newsletters JOIN `%s` queues ON newsletters.id = queues.newsletter_id SET newsletters.sent_at = queues.processed_at";
|
| 465 |
Newsletter::$_table,
|
| 466 |
SendingQueue::$_table
|
| 467 |
));
|
| 468 |
+
|
| 469 |
+
return true;
|
| 470 |
}
|
| 471 |
}
|
lib/Cron/Workers/SendingQueue/SendingQueue.php
CHANGED
|
@@ -157,7 +157,7 @@ class SendingQueue {
|
|
| 157 |
);
|
| 158 |
// log error message and schedule retry/pause sending
|
| 159 |
if($send_result['response'] === false) {
|
| 160 |
-
MailerLog::
|
| 161 |
$send_result['operation'],
|
| 162 |
$send_result['error_message']
|
| 163 |
);
|
| 157 |
);
|
| 158 |
// log error message and schedule retry/pause sending
|
| 159 |
if($send_result['response'] === false) {
|
| 160 |
+
MailerLog::processError(
|
| 161 |
$send_result['operation'],
|
| 162 |
$send_result['error_message']
|
| 163 |
);
|
lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php
CHANGED
|
@@ -4,6 +4,7 @@ namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
|
| 4 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as LinksTask;
|
| 5 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
| 6 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask;
|
|
|
|
| 7 |
use MailPoet\Models\Newsletter as NewsletterModel;
|
| 8 |
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
| 9 |
use MailPoet\Models\Setting;
|
|
@@ -88,6 +89,12 @@ class Newsletter {
|
|
| 88 |
$queue->newsletter_rendered_subject = Shortcodes::process($newsletter->subject, $newsletter, null, $queue);
|
| 89 |
$queue->newsletter_rendered_body = $rendered_newsletter;
|
| 90 |
$queue->save();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
return $newsletter;
|
| 92 |
}
|
| 93 |
|
| 4 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as LinksTask;
|
| 5 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
| 6 |
use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask;
|
| 7 |
+
use MailPoet\Mailer\MailerLog;
|
| 8 |
use MailPoet\Models\Newsletter as NewsletterModel;
|
| 9 |
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
| 10 |
use MailPoet\Models\Setting;
|
| 89 |
$queue->newsletter_rendered_subject = Shortcodes::process($newsletter->subject, $newsletter, null, $queue);
|
| 90 |
$queue->newsletter_rendered_body = $rendered_newsletter;
|
| 91 |
$queue->save();
|
| 92 |
+
if($queue->getErrors()) {
|
| 93 |
+
return MailerLog::processError(
|
| 94 |
+
'queue_save',
|
| 95 |
+
__('There was an error processing your newsletter during sending. If possible, please contact us and report this issue.')
|
| 96 |
+
);
|
| 97 |
+
}
|
| 98 |
return $newsletter;
|
| 99 |
}
|
| 100 |
|
lib/Mailer/MailerLog.php
CHANGED
|
@@ -75,7 +75,7 @@ class MailerLog {
|
|
| 75 |
return self::resetMailerLog();
|
| 76 |
}
|
| 77 |
|
| 78 |
-
static function
|
| 79 |
$mailer_log = self::getMailerLog();
|
| 80 |
(int)$mailer_log['retry_attempt']++;
|
| 81 |
$mailer_log['retry_at'] = time() + self::RETRY_INTERVAL;
|
| 75 |
return self::resetMailerLog();
|
| 76 |
}
|
| 77 |
|
| 78 |
+
static function processError($operation, $error_message) {
|
| 79 |
$mailer_log = self::getMailerLog();
|
| 80 |
(int)$mailer_log['retry_attempt']++;
|
| 81 |
$mailer_log['retry_at'] = time() + self::RETRY_INTERVAL;
|
lib/Mailer/Methods/SMTP.php
CHANGED
|
@@ -17,7 +17,7 @@ class SMTP {
|
|
| 17 |
public $reply_to;
|
| 18 |
public $return_path;
|
| 19 |
public $mailer;
|
| 20 |
-
const SMTP_CONNECTION_TIMEOUT =
|
| 21 |
|
| 22 |
function __construct(
|
| 23 |
$host, $port, $authentication, $login = null, $password = null, $encryption,
|
|
@@ -55,7 +55,8 @@ class SMTP {
|
|
| 55 |
function buildMailer() {
|
| 56 |
$transport = \Swift_SmtpTransport::newInstance(
|
| 57 |
$this->host, $this->port, $this->encryption);
|
| 58 |
-
$
|
|
|
|
| 59 |
if($this->authentication) {
|
| 60 |
$transport
|
| 61 |
->setUsername($this->login)
|
|
@@ -129,4 +130,4 @@ class SMTP {
|
|
| 129 |
$message = explode(PHP_EOL, $message);
|
| 130 |
return $message[0];
|
| 131 |
}
|
| 132 |
-
}
|
| 17 |
public $reply_to;
|
| 18 |
public $return_path;
|
| 19 |
public $mailer;
|
| 20 |
+
const SMTP_CONNECTION_TIMEOUT = 15; // seconds
|
| 21 |
|
| 22 |
function __construct(
|
| 23 |
$host, $port, $authentication, $login = null, $password = null, $encryption,
|
| 55 |
function buildMailer() {
|
| 56 |
$transport = \Swift_SmtpTransport::newInstance(
|
| 57 |
$this->host, $this->port, $this->encryption);
|
| 58 |
+
$connection_timeout = Hooks::applyFilters('mailpoet_mailer_smtp_connection_timeout', self::SMTP_CONNECTION_TIMEOUT);
|
| 59 |
+
$transport->setTimeout($connection_timeout);
|
| 60 |
if($this->authentication) {
|
| 61 |
$transport
|
| 62 |
->setUsername($this->login)
|
| 130 |
$message = explode(PHP_EOL, $message);
|
| 131 |
return $message[0];
|
| 132 |
}
|
| 133 |
+
}
|
lib/Models/Model.php
CHANGED
|
@@ -170,6 +170,15 @@ class Model extends \Sudzy\ValidModel {
|
|
| 170 |
return static::whereNotNull('deleted_at');
|
| 171 |
}
|
| 172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
/**
|
| 174 |
* Rethrow PDOExceptions to prevent exposing sensitive data in stack traces
|
| 175 |
*/
|
|
@@ -180,4 +189,4 @@ class Model extends \Sudzy\ValidModel {
|
|
| 180 |
throw new \Exception($e->getMessage());
|
| 181 |
}
|
| 182 |
}
|
| 183 |
-
}
|
| 170 |
return static::whereNotNull('deleted_at');
|
| 171 |
}
|
| 172 |
|
| 173 |
+
/**
|
| 174 |
+
* PHP 5.3 fix for incorrectly returned model results when using asArray() function.
|
| 175 |
+
* Jira reference: https://goo.gl/UZaMj5
|
| 176 |
+
* TODO: remove after phasing out PHP 5.3 support
|
| 177 |
+
*/
|
| 178 |
+
function asArray() {
|
| 179 |
+
return call_user_func_array('parent::as_array', func_get_args());
|
| 180 |
+
}
|
| 181 |
+
|
| 182 |
/**
|
| 183 |
* Rethrow PDOExceptions to prevent exposing sensitive data in stack traces
|
| 184 |
*/
|
| 189 |
throw new \Exception($e->getMessage());
|
| 190 |
}
|
| 191 |
}
|
| 192 |
+
}
|
lib/Models/Newsletter.php
CHANGED
|
@@ -280,6 +280,9 @@ class Newsletter extends Model {
|
|
| 280 |
// reset hash
|
| 281 |
$duplicate->set('hash', null);
|
| 282 |
|
|
|
|
|
|
|
|
|
|
| 283 |
$duplicate->save();
|
| 284 |
|
| 285 |
if($duplicate->getErrors() === false) {
|
| 280 |
// reset hash
|
| 281 |
$duplicate->set('hash', null);
|
| 282 |
|
| 283 |
+
// reset sent at date
|
| 284 |
+
$duplicate->set('sent_at', null);
|
| 285 |
+
|
| 286 |
$duplicate->save();
|
| 287 |
|
| 288 |
if($duplicate->getErrors() === false) {
|
lib/Newsletter/Links/Links.php
CHANGED
|
@@ -1,69 +1,52 @@
|
|
| 1 |
<?php
|
| 2 |
namespace MailPoet\Newsletter\Links;
|
| 3 |
|
| 4 |
-
use MailPoet\Models\Subscriber;
|
| 5 |
-
use MailPoet\Router\Router;
|
| 6 |
-
use MailPoet\Router\Endpoints\Track as TrackEndpoint;
|
| 7 |
use MailPoet\Models\NewsletterLink;
|
|
|
|
|
|
|
| 8 |
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
|
|
|
|
|
|
| 9 |
use MailPoet\Util\Helpers;
|
|
|
|
| 10 |
use MailPoet\Util\Security;
|
| 11 |
|
| 12 |
class Links {
|
| 13 |
const DATA_TAG_CLICK = '[mailpoet_click_data]';
|
| 14 |
const DATA_TAG_OPEN = '[mailpoet_open_data]';
|
| 15 |
-
|
| 16 |
const LINK_TYPE_SHORTCODE = 'shortcode';
|
| 17 |
-
const
|
| 18 |
|
| 19 |
static function process($content) {
|
| 20 |
$extracted_links = self::extract($content);
|
| 21 |
$processed_links = self::hash($extracted_links);
|
| 22 |
-
return self::replace($content, $
|
| 23 |
}
|
| 24 |
|
| 25 |
static function extract($content) {
|
| 26 |
$extracted_links = array();
|
| 27 |
-
//
|
| 28 |
-
# match href=' or href="
|
| 29 |
-
$regex = '#(?:href.*?=.*?)(["\']?)('
|
| 30 |
-
# match http://
|
| 31 |
-
. '(?:([\w-]+:)?//?)'
|
| 32 |
-
# match everything except for special characters # until .
|
| 33 |
-
. '[^\s()<>]+'
|
| 34 |
-
. '[.]'
|
| 35 |
-
# conditionally match everything except for special characters after .
|
| 36 |
-
. '(?:'
|
| 37 |
-
. '\([\w\d]+\)|'
|
| 38 |
-
. '(?:'
|
| 39 |
-
. '[^`!()\[\]{}:;\'".,<>«»“”‘’\s]|'
|
| 40 |
-
. '(?:[:]\d+)?/?'
|
| 41 |
-
. ')+'
|
| 42 |
-
. ')'
|
| 43 |
-
. ')\\1#';
|
| 44 |
-
// extract shortcodes with [link:*] format
|
| 45 |
$shortcodes = new Shortcodes();
|
| 46 |
-
$shortcodes = $shortcodes->extract(
|
|
|
|
|
|
|
|
|
|
| 47 |
if($shortcodes) {
|
| 48 |
$extracted_links = array_map(function($shortcode) {
|
| 49 |
return array(
|
| 50 |
'type' => Links::LINK_TYPE_SHORTCODE,
|
| 51 |
-
'html' => $shortcode,
|
| 52 |
'link' => $shortcode
|
| 53 |
);
|
| 54 |
}, $shortcodes);
|
| 55 |
}
|
| 56 |
-
// extract
|
| 57 |
-
|
| 58 |
-
$
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
'link' => $matched_urls[2][$index]
|
| 65 |
-
);
|
| 66 |
-
}
|
| 67 |
}
|
| 68 |
return array_unique($extracted_links, SORT_REGULAR);
|
| 69 |
}
|
|
@@ -74,10 +57,11 @@ class Links {
|
|
| 74 |
$hash = Security::generateHash();
|
| 75 |
// Use URL as a key to map between extracted and processed links
|
| 76 |
// regardless of their sequential position (useful for link skips etc.)
|
| 77 |
-
$
|
| 78 |
-
$processed_links[$
|
|
|
|
| 79 |
'hash' => $hash,
|
| 80 |
-
'
|
| 81 |
// replace link with a temporary data tag + hash
|
| 82 |
// it will be further replaced with the proper track API URL during sending
|
| 83 |
'processed_link' => self::DATA_TAG_CLICK . '-' . $hash
|
|
@@ -86,33 +70,30 @@ class Links {
|
|
| 86 |
return $processed_links;
|
| 87 |
}
|
| 88 |
|
| 89 |
-
static function replace($content, $
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
}
|
| 95 |
-
$processed_link = $processed_links[$key]['processed_link'];
|
| 96 |
-
// first, replace URL in the extracted HTML source with encoded link
|
| 97 |
-
$processed_link_html_source = str_replace(
|
| 98 |
-
$extracted_link['link'], $processed_link,
|
| 99 |
-
$extracted_link['html']
|
| 100 |
-
);
|
| 101 |
-
// second, replace original extracted HTML source with processed URL source
|
| 102 |
-
$content = str_replace(
|
| 103 |
-
$extracted_link['html'], $processed_link_html_source, $content
|
| 104 |
-
);
|
| 105 |
-
// third, replace text version URL with processed link: [description](url)
|
| 106 |
-
// regex is used to avoid replacing description URLs that are wrapped in round brackets
|
| 107 |
-
// i.e., <a href="http://google.com">(http://google.com)</a> => [(http://google.com)](http://processed_link)
|
| 108 |
-
$regex_escaped_extracted_link = preg_quote($extracted_link['link'], '/');
|
| 109 |
$content = preg_replace(
|
| 110 |
-
'/\[(.*?)\](\(' . $
|
| 111 |
-
'[$1](' . $
|
| 112 |
$content
|
| 113 |
);
|
| 114 |
-
// Clean up data used to generate a new link
|
| 115 |
-
unset($processed_links[$key]['processed_link']);
|
| 116 |
}
|
| 117 |
return array(
|
| 118 |
$content,
|
|
@@ -156,12 +137,12 @@ class Links {
|
|
| 156 |
|
| 157 |
static function save(array $links, $newsletter_id, $queue_id) {
|
| 158 |
foreach($links as $link) {
|
| 159 |
-
if(empty($link['hash']) || empty($link['
|
| 160 |
$newsletter_link = NewsletterLink::create();
|
| 161 |
$newsletter_link->newsletter_id = $newsletter_id;
|
| 162 |
$newsletter_link->queue_id = $queue_id;
|
| 163 |
$newsletter_link->hash = $link['hash'];
|
| 164 |
-
$newsletter_link->url = $link['
|
| 165 |
$newsletter_link->save();
|
| 166 |
}
|
| 167 |
}
|
|
@@ -178,7 +159,7 @@ class Links {
|
|
| 178 |
// convert either only link shortcodes or all hashes links if "convert all"
|
| 179 |
// option is specified
|
| 180 |
if($newsletter_link &&
|
| 181 |
-
|
| 182 |
) {
|
| 183 |
$content = str_replace($link, $newsletter_link->url, $content);
|
| 184 |
}
|
| 1 |
<?php
|
| 2 |
namespace MailPoet\Newsletter\Links;
|
| 3 |
|
|
|
|
|
|
|
|
|
|
| 4 |
use MailPoet\Models\NewsletterLink;
|
| 5 |
+
use MailPoet\Models\Subscriber;
|
| 6 |
+
use MailPoet\Newsletter\Shortcodes\Categories\Link;
|
| 7 |
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
| 8 |
+
use MailPoet\Router\Endpoints\Track as TrackEndpoint;
|
| 9 |
+
use MailPoet\Router\Router;
|
| 10 |
use MailPoet\Util\Helpers;
|
| 11 |
+
use MailPoet\Util\pQuery\pQuery as DomParser;
|
| 12 |
use MailPoet\Util\Security;
|
| 13 |
|
| 14 |
class Links {
|
| 15 |
const DATA_TAG_CLICK = '[mailpoet_click_data]';
|
| 16 |
const DATA_TAG_OPEN = '[mailpoet_open_data]';
|
|
|
|
| 17 |
const LINK_TYPE_SHORTCODE = 'shortcode';
|
| 18 |
+
const LINK_TYPE_URL = 'link';
|
| 19 |
|
| 20 |
static function process($content) {
|
| 21 |
$extracted_links = self::extract($content);
|
| 22 |
$processed_links = self::hash($extracted_links);
|
| 23 |
+
return self::replace($content, $processed_links);
|
| 24 |
}
|
| 25 |
|
| 26 |
static function extract($content) {
|
| 27 |
$extracted_links = array();
|
| 28 |
+
// extract link shortcodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
$shortcodes = new Shortcodes();
|
| 30 |
+
$shortcodes = $shortcodes->extract(
|
| 31 |
+
$content,
|
| 32 |
+
$categories = array(Link::CATEGORY_NAME)
|
| 33 |
+
);
|
| 34 |
if($shortcodes) {
|
| 35 |
$extracted_links = array_map(function($shortcode) {
|
| 36 |
return array(
|
| 37 |
'type' => Links::LINK_TYPE_SHORTCODE,
|
|
|
|
| 38 |
'link' => $shortcode
|
| 39 |
);
|
| 40 |
}, $shortcodes);
|
| 41 |
}
|
| 42 |
+
// extract HTML anchor tags
|
| 43 |
+
$DOM = DomParser::parseStr($content);
|
| 44 |
+
foreach($DOM->query('a') as $link) {
|
| 45 |
+
if(!$link->href) continue;
|
| 46 |
+
$extracted_links[] = array(
|
| 47 |
+
'type' => self::LINK_TYPE_URL,
|
| 48 |
+
'link' => $link->href
|
| 49 |
+
);
|
|
|
|
|
|
|
|
|
|
| 50 |
}
|
| 51 |
return array_unique($extracted_links, SORT_REGULAR);
|
| 52 |
}
|
| 57 |
$hash = Security::generateHash();
|
| 58 |
// Use URL as a key to map between extracted and processed links
|
| 59 |
// regardless of their sequential position (useful for link skips etc.)
|
| 60 |
+
$link = $extracted_link['link'];
|
| 61 |
+
$processed_links[$link] = array(
|
| 62 |
+
'type' => $extracted_link['type'],
|
| 63 |
'hash' => $hash,
|
| 64 |
+
'link' => $link,
|
| 65 |
// replace link with a temporary data tag + hash
|
| 66 |
// it will be further replaced with the proper track API URL during sending
|
| 67 |
'processed_link' => self::DATA_TAG_CLICK . '-' . $hash
|
| 70 |
return $processed_links;
|
| 71 |
}
|
| 72 |
|
| 73 |
+
static function replace($content, $processed_links) {
|
| 74 |
+
// replace HTML anchor tags
|
| 75 |
+
$DOM = DomParser::parseStr($content);
|
| 76 |
+
foreach($DOM->query('a') as $link) {
|
| 77 |
+
$link_to_replace = $link->href;
|
| 78 |
+
$replacement_link = (!empty($processed_links[$link_to_replace]['processed_link'])) ?
|
| 79 |
+
$processed_links[$link_to_replace]['processed_link'] :
|
| 80 |
+
null;
|
| 81 |
+
if(!$replacement_link) continue;
|
| 82 |
+
$link->setAttribute('href', $replacement_link);
|
| 83 |
+
}
|
| 84 |
+
$content = $DOM->__toString();
|
| 85 |
+
// replace link shortcodes and markdown links
|
| 86 |
+
foreach($processed_links as $processed_link) {
|
| 87 |
+
$link_to_replace = $processed_link['link'];
|
| 88 |
+
$replacement_link = $processed_link['processed_link'];
|
| 89 |
+
if($processed_link['type'] == self::LINK_TYPE_SHORTCODE) {
|
| 90 |
+
$content = str_replace($link_to_replace, $replacement_link, $content);
|
| 91 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
$content = preg_replace(
|
| 93 |
+
'/\[(.*?)\](\(' . preg_quote($link_to_replace, '/') . '\))/',
|
| 94 |
+
'[$1](' . $replacement_link . ')',
|
| 95 |
$content
|
| 96 |
);
|
|
|
|
|
|
|
| 97 |
}
|
| 98 |
return array(
|
| 99 |
$content,
|
| 137 |
|
| 138 |
static function save(array $links, $newsletter_id, $queue_id) {
|
| 139 |
foreach($links as $link) {
|
| 140 |
+
if(empty($link['hash']) || empty($link['link'])) continue;
|
| 141 |
$newsletter_link = NewsletterLink::create();
|
| 142 |
$newsletter_link->newsletter_id = $newsletter_id;
|
| 143 |
$newsletter_link->queue_id = $queue_id;
|
| 144 |
$newsletter_link->hash = $link['hash'];
|
| 145 |
+
$newsletter_link->url = $link['link'];
|
| 146 |
$newsletter_link->save();
|
| 147 |
}
|
| 148 |
}
|
| 159 |
// convert either only link shortcodes or all hashes links if "convert all"
|
| 160 |
// option is specified
|
| 161 |
if($newsletter_link &&
|
| 162 |
+
(preg_match('/\[link:/', $newsletter_link->url) || $convert_all)
|
| 163 |
) {
|
| 164 |
$content = str_replace($link, $newsletter_link->url, $content);
|
| 165 |
}
|
lib/Newsletter/Renderer/Renderer.php
CHANGED
|
@@ -124,7 +124,7 @@ class Renderer {
|
|
| 124 |
}
|
| 125 |
|
| 126 |
function renderTextVersion($template) {
|
| 127 |
-
$template = utf8_encode($template);
|
| 128 |
return @\Html2Text\Html2Text::convert($template);
|
| 129 |
}
|
| 130 |
|
| 124 |
}
|
| 125 |
|
| 126 |
function renderTextVersion($template) {
|
| 127 |
+
$template = (mb_detect_encoding($template, 'UTF-8', true)) ? $template : utf8_encode($template);
|
| 128 |
return @\Html2Text\Html2Text::convert($template);
|
| 129 |
}
|
| 130 |
|
lib/Newsletter/Shortcodes/Categories/Link.php
CHANGED
|
@@ -7,6 +7,8 @@ use MailPoet\Statistics\Track\Unsubscribes;
|
|
| 7 |
use MailPoet\Subscription\Url as SubscriptionUrl;
|
| 8 |
|
| 9 |
class Link {
|
|
|
|
|
|
|
| 10 |
static function process(
|
| 11 |
$action,
|
| 12 |
$action_argument,
|
| 7 |
use MailPoet\Subscription\Url as SubscriptionUrl;
|
| 8 |
|
| 9 |
class Link {
|
| 10 |
+
const CATEGORY_NAME = 'link';
|
| 11 |
+
|
| 12 |
static function process(
|
| 13 |
$action,
|
| 14 |
$action_argument,
|
lib/Util/ConflictResolver.php
CHANGED
|
@@ -53,6 +53,7 @@ class ConflictResolver {
|
|
| 53 |
|
| 54 |
function resolveStylesConflict() {
|
| 55 |
$_this = $this;
|
|
|
|
| 56 |
// unload all styles except from the list of allowed
|
| 57 |
$dequeue_styles = function() use($_this) {
|
| 58 |
global $wp_styles;
|
|
@@ -73,6 +74,7 @@ class ConflictResolver {
|
|
| 73 |
|
| 74 |
function resolveScriptsConflict() {
|
| 75 |
$_this = $this;
|
|
|
|
| 76 |
// unload all scripts except from the list of allowed
|
| 77 |
$dequeue_scripts = function() use($_this) {
|
| 78 |
global $wp_scripts;
|
| 53 |
|
| 54 |
function resolveStylesConflict() {
|
| 55 |
$_this = $this;
|
| 56 |
+
$_this->permitted_assets_locations['styles'] = apply_filters('mailpoet_conflict_resolver_whitelist_style', $_this->permitted_assets_locations['styles']);
|
| 57 |
// unload all styles except from the list of allowed
|
| 58 |
$dequeue_styles = function() use($_this) {
|
| 59 |
global $wp_styles;
|
| 74 |
|
| 75 |
function resolveScriptsConflict() {
|
| 76 |
$_this = $this;
|
| 77 |
+
$_this->permitted_assets_locations['scripts'] = apply_filters('mailpoet_conflict_resolver_whitelist_script', $_this->permitted_assets_locations['scripts']);
|
| 78 |
// unload all scripts except from the list of allowed
|
| 79 |
$dequeue_scripts = function() use($_this) {
|
| 80 |
global $wp_scripts;
|
mailpoet.php
CHANGED
|
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
|
|
| 4 |
|
| 5 |
/*
|
| 6 |
* Plugin Name: MailPoet
|
| 7 |
-
* Version: 3.0.0-beta.36.3.
|
| 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.36.3.
|
| 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.36.3.1
|
| 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.36.3.1',
|
| 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, subscription, SMTP
|
| 4 |
Requires at least: 4.6
|
| 5 |
Tested up to: 4.8
|
| 6 |
-
Stable tag: 3.0.0-beta.36.3.
|
| 7 |
Create and send beautiful emails and newsletters from WordPress.
|
| 8 |
|
| 9 |
== Description ==
|
|
@@ -35,7 +35,7 @@ We consider this version to be a release candidate. In other words, it's pretty
|
|
| 35 |
|
| 36 |
= Premium version available =
|
| 37 |
|
| 38 |
-
[Get in touch](www.mailpoet.com/support/sales-pre-sales-questions/) if you are an existing customer and you want to switch.
|
| 39 |
|
| 40 |
= Translations =
|
| 41 |
|
|
@@ -93,6 +93,15 @@ Our [support site](https://beta.docs.mailpoet.com) has plenty of articles. You c
|
|
| 93 |
|
| 94 |
== Changelog ==
|
| 95 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
= 3.0.0-beta.36.3.0 - 2017-07-11 =
|
| 97 |
* Added: migration script for MailPoet 2 users now imports settings;
|
| 98 |
* Fixed: emails are sorted by date sent instead of modified date; thanks Scott
|
| 3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, subscription, SMTP
|
| 4 |
Requires at least: 4.6
|
| 5 |
Tested up to: 4.8
|
| 6 |
+
Stable tag: 3.0.0-beta.36.3.1
|
| 7 |
Create and send beautiful emails and newsletters from WordPress.
|
| 8 |
|
| 9 |
== Description ==
|
| 35 |
|
| 36 |
= Premium version available =
|
| 37 |
|
| 38 |
+
[Get in touch](https://www.mailpoet.com/support/sales-pre-sales-questions/) if you are an existing customer and you want to switch.
|
| 39 |
|
| 40 |
= Translations =
|
| 41 |
|
| 93 |
|
| 94 |
== Changelog ==
|
| 95 |
|
| 96 |
+
= 3.0.0-beta.36.3.1 - 2017-07-18 =
|
| 97 |
+
* Added: you can now duplicate any item in the email designer;
|
| 98 |
+
* Improved: added filter to specify custom SMTP connection timeout value. Thanks, Rik;
|
| 99 |
+
* Improved: added a custom filter to whitelist JS/CSS styles that are loaded by other plugins on MailPoet's pages;
|
| 100 |
+
* Fixed: sending is not interrupted if a newsletter contains URLs with unicode characters. Thanks Sam!
|
| 101 |
+
* Fixed: sent date is reset when newsletter is duplicated;
|
| 102 |
+
* Fixed: SMTP sending frequency is properly updated when changed;
|
| 103 |
+
* Fixed: newsletter/form/subscriber listings no longer throw an error on some PHP 5.3 hosts. Thanks, Jérôme!
|
| 104 |
+
|
| 105 |
= 3.0.0-beta.36.3.0 - 2017-07-11 =
|
| 106 |
* Added: migration script for MailPoet 2 users now imports settings;
|
| 107 |
* Fixed: emails are sorted by date sent instead of modified date; thanks Scott
|
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 ComposerAutoloaderInit0cb1ee30fabb15d2899414384ee4767a::getLoader();
|
vendor/composer/ClassLoader.php
CHANGED
|
@@ -374,13 +374,9 @@ class ClassLoader
|
|
| 374 |
|
| 375 |
$first = $class[0];
|
| 376 |
if (isset($this->prefixLengthsPsr4[$first])) {
|
| 377 |
-
$
|
| 378 |
-
|
| 379 |
-
|
| 380 |
-
$search = $subPath.'\\';
|
| 381 |
-
if (isset($this->prefixDirsPsr4[$search])) {
|
| 382 |
-
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
| 383 |
-
$length = $this->prefixLengthsPsr4[$first][$search];
|
| 384 |
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
| 385 |
return $file;
|
| 386 |
}
|
| 374 |
|
| 375 |
$first = $class[0];
|
| 376 |
if (isset($this->prefixLengthsPsr4[$first])) {
|
| 377 |
+
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
| 378 |
+
if (0 === strpos($class, $prefix)) {
|
| 379 |
+
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 380 |
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
| 381 |
return $file;
|
| 382 |
}
|
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 ComposerAutoloaderInitb11a845052e8e6ed50a7c81deac5e0dc
|
|
| 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 ComposerAutoloaderInitb11a845052e8e6ed50a7c81deac5e0dc
|
|
| 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 ComposerAutoloaderInit0cb1ee30fabb15d2899414384ee4767a
|
| 6 |
{
|
| 7 |
private static $loader;
|
| 8 |
|
| 19 |
return self::$loader;
|
| 20 |
}
|
| 21 |
|
| 22 |
+
spl_autoload_register(array('ComposerAutoloaderInit0cb1ee30fabb15d2899414384ee4767a', 'loadClassLoader'), true, true);
|
| 23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit0cb1ee30fabb15d2899414384ee4767a', '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\ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::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\ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::$files;
|
| 52 |
} else {
|
| 53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 54 |
}
|
| 55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 56 |
+
composerRequire0cb1ee30fabb15d2899414384ee4767a($fileIdentifier, $file);
|
| 57 |
}
|
| 58 |
|
| 59 |
return $loader;
|
| 60 |
}
|
| 61 |
}
|
| 62 |
|
| 63 |
+
function composerRequire0cb1ee30fabb15d2899414384ee4767a($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',
|
|
@@ -649,10 +649,10 @@ class ComposerStaticInitb11a845052e8e6ed50a7c81deac5e0dc
|
|
| 649 |
public static function getInitializer(ClassLoader $loader)
|
| 650 |
{
|
| 651 |
return \Closure::bind(function () use ($loader) {
|
| 652 |
-
$loader->prefixLengthsPsr4 =
|
| 653 |
-
$loader->prefixDirsPsr4 =
|
| 654 |
-
$loader->prefixesPsr0 =
|
| 655 |
-
$loader->classMap =
|
| 656 |
|
| 657 |
}, null, ClassLoader::class);
|
| 658 |
}
|
| 4 |
|
| 5 |
namespace Composer\Autoload;
|
| 6 |
|
| 7 |
+
class ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a
|
| 8 |
{
|
| 9 |
public static $files = array (
|
| 10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
| 649 |
public static function getInitializer(ClassLoader $loader)
|
| 650 |
{
|
| 651 |
return \Closure::bind(function () use ($loader) {
|
| 652 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::$prefixLengthsPsr4;
|
| 653 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::$prefixDirsPsr4;
|
| 654 |
+
$loader->prefixesPsr0 = ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::$prefixesPsr0;
|
| 655 |
+
$loader->classMap = ComposerStaticInit0cb1ee30fabb15d2899414384ee4767a::$classMap;
|
| 656 |
|
| 657 |
}, null, ClassLoader::class);
|
| 658 |
}
|
views/newsletter/templates/blocks/base/toolsGeneric.hbs
CHANGED
|
@@ -3,7 +3,8 @@
|
|
| 3 |
<%= source('newsletter/templates/svg/block-tools/settings-column.svg') %>
|
| 4 |
</a>{{/if}}{{#if tools.settings}}<a href="javascript:;" class="mailpoet_tool mailpoet_edit_block mailpoet_ignore_drag" title="<%= __('Edit settings') %>">
|
| 5 |
<%= source('newsletter/templates/svg/block-tools/settings.svg') %>
|
| 6 |
-
</a>{{/if}}{{#if tools.delete}}<div class="mailpoet_delete_block mailpoet_ignore_drag"><a href="javascript:;" class="mailpoet_tool mailpoet_delete_block_activate" title="<%= __('Delete') %>"><%= source('newsletter/templates/svg/block-tools/trash.svg') %></a><a href="javascript:;" class="mailpoet_delete_block_confirm" title="<%= __('Confirm deletion') %>"><%= __('Delete') %></a><a href="javascript:;" class="mailpoet_delete_block_cancel" title="<%= __('Cancel deletion') %>"><%= __('Cancel') %></a></div>{{/if}}{{#if tools.
|
| 7 |
-
<%= source('newsletter/templates/svg/block-tools/
|
|
|
|
| 8 |
</a>{{/if}}
|
| 9 |
</div>
|
| 3 |
<%= source('newsletter/templates/svg/block-tools/settings-column.svg') %>
|
| 4 |
</a>{{/if}}{{#if tools.settings}}<a href="javascript:;" class="mailpoet_tool mailpoet_edit_block mailpoet_ignore_drag" title="<%= __('Edit settings') %>">
|
| 5 |
<%= source('newsletter/templates/svg/block-tools/settings.svg') %>
|
| 6 |
+
</a>{{/if}}{{#if tools.delete}}<div class="mailpoet_delete_block mailpoet_ignore_drag"><a href="javascript:;" class="mailpoet_tool mailpoet_delete_block_activate" title="<%= __('Delete') %>"><%= source('newsletter/templates/svg/block-tools/trash.svg') %></a><a href="javascript:;" class="mailpoet_delete_block_confirm" title="<%= __('Confirm deletion') %>"><%= __('Delete') %></a><a href="javascript:;" class="mailpoet_delete_block_cancel" title="<%= __('Cancel deletion') %>"><%= __('Cancel') %></a></div>{{/if}}{{#if tools.duplicate}}<a href="javascript:;" class="mailpoet_tool mailpoet_duplicate_block" title="<%= __('Duplicate') %>">
|
| 7 |
+
<%= source('newsletter/templates/svg/block-tools/duplicate.svg') %></a>{{/if}}{{#if tools.move}}<a href="javascript:;" class="mailpoet_tool mailpoet_move_block" title="<%= __('Drag to move') %>">
|
| 8 |
+
<%= source('newsletter/templates/svg/block-tools/move.svg') %>
|
| 9 |
</a>{{/if}}
|
| 10 |
</div>
|
views/newsletter/templates/svg/block-tools/duplicate.svg
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
| 2 |
+
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
| 3 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
| 4 |
+
<svg class="mailpoet_tool_icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="612px"
|
| 5 |
+
height="611.632px" viewBox="0 93.684 612 611.632" enable-background="new 0 93.684 612 611.632" xml:space="preserve">
|
| 6 |
+
<g id="Layer_1">
|
| 7 |
+
<g id="Layer_1_copy">
|
| 8 |
+
<circle fill="#FFFFFF" cx="306" cy="403.5" r="269.5"/>
|
| 9 |
+
<polygon id="_x3C_Slice_x3E__1_" fill="none" points="0,69.6 612,69.6 614,724.4 2,724.4 "/>
|
| 10 |
+
<g id="Layer_3">
|
| 11 |
+
</g>
|
| 12 |
+
</g>
|
| 13 |
+
<g id="Layer_2">
|
| 14 |
+
<path d="M171.5,536.834"/>
|
| 15 |
+
</g>
|
| 16 |
+
</g>
|
| 17 |
+
<g id="Layer_3_1_">
|
| 18 |
+
<g>
|
| 19 |
+
<path d="M360.207,425.951V303.128c0-3.426-2.789-6.212-6.215-6.212H156.618c-3.426,0-6.212,2.786-6.212,6.212v122.823
|
| 20 |
+
c0,3.425,2.787,6.212,6.212,6.212h197.374C357.418,432.163,360.207,429.376,360.207,425.951z"/>
|
| 21 |
+
<path d="M305.816,93.684C136.918,93.684,0,230.602,0,399.5c0,168.896,136.918,305.816,305.816,305.816
|
| 22 |
+
c168.896,0,305.815-136.919,305.815-305.816C611.633,230.602,474.714,93.684,305.816,93.684z M104.845,425.951V303.128
|
| 23 |
+
c0-28.547,23.226-51.772,51.773-51.772h197.374c28.548,0,51.772,23.225,51.772,51.772v122.823
|
| 24 |
+
c0,28.548-23.225,51.772-51.772,51.772H156.618C128.071,477.724,104.845,454.499,104.845,425.951z M499.041,514.872
|
| 25 |
+
c0,28.548-23.225,51.772-51.772,51.772H231.894c-28.547,0-51.772-23.225-51.772-51.772h45.56c0,3.428,2.787,6.213,6.212,6.213
|
| 26 |
+
h215.375c3.426,0,6.212-2.785,6.212-6.213v-140.82c0-3.427-2.786-6.212-6.212-6.212v-45.562c28.548,0,51.772,23.226,51.772,51.773
|
| 27 |
+
V514.872z"/>
|
| 28 |
+
</g>
|
| 29 |
+
</g>
|
| 30 |
+
</svg>
|
views/settings/mta.html
CHANGED
|
@@ -54,76 +54,89 @@
|
|
| 54 |
/>
|
| 55 |
|
| 56 |
<!-- smtp: available sending methods -->
|
| 57 |
-
<ul class="mailpoet_sending_methods
|
| 58 |
<li
|
| 59 |
data-group="mailpoet"
|
| 60 |
<% if(settings.mta_group == 'mailpoet') %>class="mailpoet_active"<% endif %>
|
| 61 |
>
|
| 62 |
-
<
|
| 63 |
-
<
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
<div class="mailpoet_status">
|
| 96 |
<span><%= __('Activated') %></span>
|
| 97 |
-
</div>
|
| 98 |
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
<% if(settings.mta_group == 'mailpoet' or not(mss_key_valid)) %> disabled="disabled"<% endif %>
|
| 104 |
-
|
|
|
|
| 105 |
</div>
|
|
|
|
| 106 |
</li>
|
| 107 |
<li
|
| 108 |
data-group="other"
|
| 109 |
<% if(settings.mta_group == 'smtp' or settings.mta_group == 'website') %>class="mailpoet_active"<% endif %>
|
| 110 |
>
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
</li>
|
| 128 |
</ul>
|
| 129 |
|
|
@@ -266,10 +279,10 @@
|
|
| 266 |
type="number"
|
| 267 |
min="1"
|
| 268 |
max="1000"
|
| 269 |
-
<% if(settings.
|
| 270 |
-
|
| 271 |
<% else %>
|
| 272 |
-
|
| 273 |
<% endif %>
|
| 274 |
/>
|
| 275 |
<%= __('emails') %>
|
|
@@ -445,32 +458,6 @@
|
|
| 445 |
</td>
|
| 446 |
</tr>
|
| 447 |
|
| 448 |
-
<!-- smtp: domain -->
|
| 449 |
-
<tr class="mailpoet_smtp_field" data-field="domain"
|
| 450 |
-
<%
|
| 451 |
-
if settings.mta_group != "smtp" or settings.smtp_provider != "manual"
|
| 452 |
-
%>
|
| 453 |
-
style="display:none;"
|
| 454 |
-
<% endif %>
|
| 455 |
-
>
|
| 456 |
-
<th scope="row">
|
| 457 |
-
<label for="settings[mta_domain]">
|
| 458 |
-
<%= __('Domain') %>
|
| 459 |
-
</label>
|
| 460 |
-
<p class="description">
|
| 461 |
-
<%= __('e.g.: smtp.mydomain.com') %>
|
| 462 |
-
</p>
|
| 463 |
-
</th>
|
| 464 |
-
<td>
|
| 465 |
-
<input
|
| 466 |
-
type="text"
|
| 467 |
-
class="regular-text"
|
| 468 |
-
id="settings[mta_domain]"
|
| 469 |
-
name="mta[domain]"
|
| 470 |
-
value="<%= settings.mta.domain %>" />
|
| 471 |
-
</td>
|
| 472 |
-
</tr>
|
| 473 |
-
|
| 474 |
<!-- smtp: api key -->
|
| 475 |
<tr class="mailpoet_sendgrid_field" data-field="api_key"
|
| 476 |
<%
|
| 54 |
/>
|
| 55 |
|
| 56 |
<!-- smtp: available sending methods -->
|
| 57 |
+
<ul class="mailpoet_sending_methods">
|
| 58 |
<li
|
| 59 |
data-group="mailpoet"
|
| 60 |
<% if(settings.mta_group == 'mailpoet') %>class="mailpoet_active"<% endif %>
|
| 61 |
>
|
| 62 |
+
<div class="mailpoet_sending_method_description">
|
| 63 |
+
<h3>
|
| 64 |
+
<img
|
| 65 |
+
src="<%= assets_url %>/img/mailpoet_logo.png"
|
| 66 |
+
alt="MailPoet"
|
| 67 |
+
width="137"
|
| 68 |
+
height="54"
|
| 69 |
+
/>
|
| 70 |
+
</h3>
|
| 71 |
+
|
| 72 |
+
<p
|
| 73 |
+
class="mailpoet_description<% if(settings.mta_group != 'mailpoet') %> mailpoet_hidden<% endif %>"
|
| 74 |
+
id="mailpoet_sending_method_active_text"
|
| 75 |
+
>
|
| 76 |
+
<strong><%= __("You're now sending with MailPoet!") %></strong>
|
| 77 |
+
<br />
|
| 78 |
+
<%= __("Great, you're all set up. Your emails will now be sent quickly and reliably!") %>
|
| 79 |
+
</p>
|
| 80 |
+
|
| 81 |
+
<div
|
| 82 |
+
class="mailpoet_description<% if(settings.mta_group == 'mailpoet') %> mailpoet_hidden<% endif %>"
|
| 83 |
+
id="mailpoet_sending_method_inactive_text"
|
| 84 |
+
>
|
| 85 |
+
<strong><%= __("Solve all of your sending problems!") %></strong>
|
| 86 |
+
<br />
|
| 87 |
+
<%= __("Let MailPoet send your emails and get the Premium features for as little as 10 dollars or euros per month.") %>
|
| 88 |
+
<ul class="sending-method-benefits mailpoet_success">
|
| 89 |
+
<li class="mailpoet_success_item"><%= __('Reach the inbox, not the spam box.') %>
|
| 90 |
+
<li class="mailpoet_success_item"><%= __('Send emails up to 20 times faster than other sending methods.') %>
|
| 91 |
+
<li class="mailpoet_success_item"><%= __('SPF & DKIM signatures are already set up! No configuration required.') %>
|
| 92 |
+
<li class="mailpoet_success_item"><%= __('Automatically remove invalid and bounced addresses (bounce handling) to keep your lists clean.') %>
|
| 93 |
+
</ul>
|
| 94 |
+
<a
|
| 95 |
+
href="<%= admin_url('admin.php?page=mailpoet-premium') %>"
|
| 96 |
+
class="button button-primary"
|
| 97 |
+
target="_blank"
|
| 98 |
+
><%= __('Find out more') %></a>
|
| 99 |
+
</div>
|
| 100 |
+
</div>
|
| 101 |
<div class="mailpoet_status">
|
| 102 |
<span><%= __('Activated') %></span>
|
|
|
|
| 103 |
|
| 104 |
+
<div class="mailpoet_actions">
|
| 105 |
+
<button
|
| 106 |
+
type="button"
|
| 107 |
+
class="mailpoet_sending_service_activate button-secondary"
|
| 108 |
<% if(settings.mta_group == 'mailpoet' or not(mss_key_valid)) %> disabled="disabled"<% endif %>
|
| 109 |
+
><%= __('Activate') %></button>
|
| 110 |
+
</div>
|
| 111 |
</div>
|
| 112 |
+
|
| 113 |
</li>
|
| 114 |
<li
|
| 115 |
data-group="other"
|
| 116 |
<% if(settings.mta_group == 'smtp' or settings.mta_group == 'website') %>class="mailpoet_active"<% endif %>
|
| 117 |
>
|
| 118 |
+
<div class="mailpoet_sending_method_description">
|
| 119 |
+
<h3><%= __('Other') %></h3>
|
| 120 |
+
<div class="mailpoet_description">
|
| 121 |
+
<strong><%= __('Send with your website or third party') %></strong>
|
| 122 |
+
<br />
|
| 123 |
+
<%= __('Choose to send emails through your website (not recommended) or a third party sender.') %>
|
| 124 |
+
<ul class="sending-method-benefits mailpoet_error">
|
| 125 |
+
<li class="mailpoet_error_item"><%= __('You\'ll probably end up in spam.') %>
|
| 126 |
+
<li class="mailpoet_error_item"><%= __('Sending speed is limited by your web host.') %>
|
| 127 |
+
<li class="mailpoet_error_item"><%= __('Manual configuration of SPF and DKIM required.') %>
|
| 128 |
+
<li class="mailpoet_error_item"><%= __('Bounce handling is available, but only with an extra add-on.') %>
|
| 129 |
+
</ul>
|
| 130 |
+
</div>
|
| 131 |
+
</div>
|
| 132 |
+
<div class="mailpoet_status">
|
| 133 |
+
<span><%= __('Activated') %></span>
|
| 134 |
+
<div class="mailpoet_actions">
|
| 135 |
+
<a
|
| 136 |
+
class="button-secondary"
|
| 137 |
+
href="#mta/other"><%= __('Configure') %></a>
|
| 138 |
+
</div>
|
| 139 |
+
</div>
|
| 140 |
</li>
|
| 141 |
</ul>
|
| 142 |
|
| 279 |
type="number"
|
| 280 |
min="1"
|
| 281 |
max="1000"
|
| 282 |
+
<% if(settings.mta.frequency.emails) %>
|
| 283 |
+
value="<%= settings.mta.frequency.emails %>"
|
| 284 |
<% else %>
|
| 285 |
+
value="<%= default_frequency.website.emails %>"
|
| 286 |
<% endif %>
|
| 287 |
/>
|
| 288 |
<%= __('emails') %>
|
| 458 |
</td>
|
| 459 |
</tr>
|
| 460 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 461 |
<!-- smtp: api key -->
|
| 462 |
<tr class="mailpoet_sendgrid_field" data-field="api_key"
|
| 463 |
<%
|
views/settings/premium.html
CHANGED
|
@@ -25,22 +25,22 @@
|
|
| 25 |
><%= __('Verify') %></a>
|
| 26 |
</div>
|
| 27 |
<div
|
| 28 |
-
class="mailpoet_premium_key_valid
|
| 29 |
>
|
| 30 |
<%= __('Your Premium key has been successfully validated.') %>
|
| 31 |
</div>
|
| 32 |
<div
|
| 33 |
-
class="mailpoet_premium_key_invalid
|
| 34 |
>
|
| 35 |
<%= __('Your Premium key is invalid.') %>
|
| 36 |
</div>
|
| 37 |
<div
|
| 38 |
-
class="mailpoet_mss_key_valid
|
| 39 |
>
|
| 40 |
<%= __('Your MailPoet Sending Service key has been successfully validated.') %>
|
| 41 |
</div>
|
| 42 |
<div
|
| 43 |
-
class="mailpoet_mss_key_invalid
|
| 44 |
>
|
| 45 |
<%= __('Your MailPoet Sending Service key is invalid.') %>
|
| 46 |
</div>
|
| 25 |
><%= __('Verify') %></a>
|
| 26 |
</div>
|
| 27 |
<div
|
| 28 |
+
class="mailpoet_premium_key_valid mailpoet_success_item mailpoet_success<% if not(settings.premium.premium_key) or not(premium_key_valid) %> mailpoet_hidden<% endif %>"
|
| 29 |
>
|
| 30 |
<%= __('Your Premium key has been successfully validated.') %>
|
| 31 |
</div>
|
| 32 |
<div
|
| 33 |
+
class="mailpoet_premium_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.premium.premium_key) or premium_key_valid %> mailpoet_hidden<% endif %>"
|
| 34 |
>
|
| 35 |
<%= __('Your Premium key is invalid.') %>
|
| 36 |
</div>
|
| 37 |
<div
|
| 38 |
+
class="mailpoet_mss_key_valid mailpoet_success_item mailpoet_success<% if not(settings.mta.mailpoet_api_key) or not(mss_key_valid) %> mailpoet_hidden<% endif %>"
|
| 39 |
>
|
| 40 |
<%= __('Your MailPoet Sending Service key has been successfully validated.') %>
|
| 41 |
</div>
|
| 42 |
<div
|
| 43 |
+
class="mailpoet_mss_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.mta.mailpoet_api_key) or mss_key_valid %> mailpoet_hidden<% endif %>"
|
| 44 |
>
|
| 45 |
<%= __('Your MailPoet Sending Service key is invalid.') %>
|
| 46 |
</div>
|
views/update.html
CHANGED
|
@@ -10,9 +10,12 @@
|
|
| 10 |
</style>
|
| 11 |
|
| 12 |
<div class="wrap mailpoet-about-wrap">
|
| 13 |
-
<h1><%= __('
|
| 14 |
|
| 15 |
-
<p class="about-text"><%= __(
|
|
|
|
|
|
|
|
|
|
| 16 |
</p>
|
| 17 |
<div class="mailpoet-logo"><img src="<%= image_url('welcome_template/mailpoet-logo.png') %>" alt="MailPoet Logo" /></div>
|
| 18 |
|
|
@@ -21,8 +24,8 @@
|
|
| 21 |
<a href="admin.php?page=mailpoet-update" class="nav-tab nav-tab-active"><%= __("What's New") %></a>
|
| 22 |
</h2>
|
| 23 |
|
| 24 |
-
<div id="mailpoet-changelog"
|
| 25 |
-
<h2><%= __(
|
| 26 |
<% if changelog %>
|
| 27 |
<% for item in changelog %>
|
| 28 |
<h3><%= item.version %></h3>
|
|
@@ -31,22 +34,50 @@
|
|
| 31 |
<li><%= change %></li>
|
| 32 |
<% endfor %>
|
| 33 |
</ul>
|
| 34 |
-
<br>
|
| 35 |
<% endfor %>
|
| 36 |
<% else %>
|
| 37 |
-
<p style="text-align: center"><%= __(
|
| 38 |
<% endif %>
|
|
|
|
| 39 |
</div>
|
| 40 |
|
| 41 |
<hr>
|
| 42 |
|
| 43 |
-
|
| 44 |
-
<
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
</div>
|
| 47 |
|
| 48 |
-
|
| 49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
<script type="text/javascript">
|
| 52 |
jQuery(function($) {
|
|
@@ -56,7 +87,25 @@
|
|
| 56 |
{'MailPoet Free version': window.mailpoet_version}
|
| 57 |
);
|
| 58 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
});
|
|
|
|
| 60 |
</script>
|
| 61 |
<% endblock %>
|
| 62 |
-
|
| 10 |
</style>
|
| 11 |
|
| 12 |
<div class="wrap mailpoet-about-wrap">
|
| 13 |
+
<h1><%= __('Greetings, humans.') %></h1>
|
| 14 |
|
| 15 |
+
<p class="about-text"><%= __('Thanks for using MailPoet! We really appreciate all of your love, affection, [link]and (good) plugin reviews.[/link]')
|
| 16 |
+
|replaceLinkTags('https://wordpress.org/support/plugin/wysija-newsletters/reviews/', {'target' : '_blank'})
|
| 17 |
+
|raw
|
| 18 |
+
%>
|
| 19 |
</p>
|
| 20 |
<div class="mailpoet-logo"><img src="<%= image_url('welcome_template/mailpoet-logo.png') %>" alt="MailPoet Logo" /></div>
|
| 21 |
|
| 24 |
<a href="admin.php?page=mailpoet-update" class="nav-tab nav-tab-active"><%= __("What's New") %></a>
|
| 25 |
</h2>
|
| 26 |
|
| 27 |
+
<div id="mailpoet-changelog" class="feature-section one-col-left">
|
| 28 |
+
<h2 class="mailpoet-feature-top"><%= __('List of Changes') %></h2>
|
| 29 |
<% if changelog %>
|
| 30 |
<% for item in changelog %>
|
| 31 |
<h3><%= item.version %></h3>
|
| 34 |
<li><%= change %></li>
|
| 35 |
<% endfor %>
|
| 36 |
</ul>
|
|
|
|
| 37 |
<% endfor %>
|
| 38 |
<% else %>
|
| 39 |
+
<p style="text-align: center"><%= __('See readme.txt for a changelog.') %></p>
|
| 40 |
<% endif %>
|
| 41 |
+
<a class="button button-secondary" href="https://wordpress.org/plugins/mailpoet/#developers" target="_blank"><%= __('View all changes') %> →</a>
|
| 42 |
</div>
|
| 43 |
|
| 44 |
<hr>
|
| 45 |
|
| 46 |
+
<% if(not settings.analytics.enabled) %>
|
| 47 |
+
<div class="feature-section one-col">
|
| 48 |
+
<h2><%= __('Do Your Part to Make MailPoet Better') %></h2>
|
| 49 |
+
<div class="lead-description">
|
| 50 |
+
|
| 51 |
+
<label>
|
| 52 |
+
<input type="checkbox" id="mailpoet_analytics_enabled" value="1">
|
| 53 |
+
<%= __('Yes, share my data anonymously.') %>
|
| 54 |
+
</label>
|
| 55 |
+
</div>
|
| 56 |
+
<p><%= __("By sharing your data with us, you can help us understand what our users like (and don't like).") %>
|
| 57 |
+
<%= __('We use it to prioritize and develop new plugin features.') %><br>
|
| 58 |
+
<%= __('Share your data to help shape the future of MailPoet! [link]Read more.[/link]')
|
| 59 |
+
|replaceLinkTags('http://docs.mailpoet.com/article/36-share-your-data', {'target' : '_blank'})
|
| 60 |
+
|raw
|
| 61 |
+
%>
|
| 62 |
+
</div>
|
| 63 |
+
|
| 64 |
+
<hr>
|
| 65 |
+
<% endif %>
|
| 66 |
+
|
| 67 |
+
<div class="feature-section one-col">
|
| 68 |
+
<h2><%= __('Care to Give Your Opinion?') %></h2>
|
| 69 |
+
|
| 70 |
+
<script type="text/javascript" charset="utf-8" src="http://static.polldaddy.com/p/9780744.js"></script>
|
| 71 |
+
<noscript><a href="http://polldaddy.com/poll/9780744/">How likely is it that you would MailPoet to a friend or colleague?</a></noscript>
|
| 72 |
</div>
|
| 73 |
|
| 74 |
+
<hr>
|
| 75 |
|
| 76 |
+
<div class="feature-section one-col">
|
| 77 |
+
<a class="button button-primary" href="admin.php?page=mailpoet-newsletters"><%= __('Awesome! Now, take me to MailPoet') %> →</a>
|
| 78 |
+
</div>
|
| 79 |
+
|
| 80 |
+
</div>
|
| 81 |
|
| 82 |
<script type="text/javascript">
|
| 83 |
jQuery(function($) {
|
| 87 |
{'MailPoet Free version': window.mailpoet_version}
|
| 88 |
);
|
| 89 |
});
|
| 90 |
+
$('#mailpoet_analytics_enabled').on('click', function() {
|
| 91 |
+
var is_enabled = $(this).is(':checked') ? true : '';
|
| 92 |
+
MailPoet.Ajax.post({
|
| 93 |
+
api_version: window.mailpoet_api_version,
|
| 94 |
+
endpoint: 'settings',
|
| 95 |
+
action: 'set',
|
| 96 |
+
data: {
|
| 97 |
+
analytics: { enabled: (is_enabled)}
|
| 98 |
+
}
|
| 99 |
+
}).fail((response) => {
|
| 100 |
+
if (response.errors.length > 0) {
|
| 101 |
+
MailPoet.Notice.error(
|
| 102 |
+
response.errors.map((error) => { return error.message; }),
|
| 103 |
+
{ scroll: true }
|
| 104 |
+
);
|
| 105 |
+
}
|
| 106 |
+
});
|
| 107 |
+
})
|
| 108 |
});
|
| 109 |
+
|
| 110 |
</script>
|
| 111 |
<% endblock %>
|
|
|
views/welcome.html
CHANGED
|
@@ -19,9 +19,12 @@
|
|
| 19 |
</style>
|
| 20 |
|
| 21 |
<div class="wrap mailpoet-about-wrap">
|
| 22 |
-
<h1><%= __('
|
| 23 |
|
| 24 |
-
<p class="about-text"><%= __(
|
|
|
|
|
|
|
|
|
|
| 25 |
</p>
|
| 26 |
<div class="mailpoet-logo"><img src="<%= image_url('welcome_template/mailpoet-logo.png') %>" alt="<%= __('MailPoet Logo') %>" /></div>
|
| 27 |
|
| 19 |
</style>
|
| 20 |
|
| 21 |
<div class="wrap mailpoet-about-wrap">
|
| 22 |
+
<h1><%= __('Greetings, humans.') %></h1>
|
| 23 |
|
| 24 |
+
<p class="about-text"><%= __('Thanks for using MailPoet! We really appreciate all of your love, affection, [link]and (good) plugin reviews.[/link]')
|
| 25 |
+
|replaceLinkTags('https://wordpress.org/support/plugin/wysija-newsletters/reviews/', {'target' : '_blank'})
|
| 26 |
+
|raw
|
| 27 |
+
%>
|
| 28 |
</p>
|
| 29 |
<div class="mailpoet-logo"><img src="<%= image_url('welcome_template/mailpoet-logo.png') %>" alt="<%= __('MailPoet Logo') %>" /></div>
|
| 30 |
|
