MailPoet Newsletters (New) - Version 3.0.0-beta.34.0.0

Version Description

  • 2017-06-07 =
  • Added: Premium features are officially available. Free users can visit the Premium page in the menu for more info. Premium users: get your key on account.mailpoet.com to continue using Premium;
  • Improved: email addresses are now validated using WordPress is_email() function. Kudos Oskar L. and cnesbit!;
  • Fixed: scheduled sending queue jobs are paused when post notifications are made inactive. Thanks Oskar!;
  • Fixed: post notification history no longer displays a blank subject for notifications waiting in queue. Thanks Lyon!;
  • Fixed: unsubscribe page works again. Thx Oskar one more time!
Download this release

Release Info

Developer wysija
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.0.0-beta.34.0.0
Comparing to
See all releases

Code changes from version 3.0.0-beta.33.1 to 3.0.0-beta.34.0.0

Files changed (57) hide show
  1. assets/css/admin.css +6 -2
  2. assets/img/mailpoet_logo_newsletter.png +0 -0
  3. assets/js/admin.js +198 -763
  4. assets/js/admin_vendor.js +531 -42
  5. assets/js/form_editor.js +11 -11
  6. assets/js/mailpoet.js +11 -10
  7. assets/js/newsletter_editor.js +155 -155
  8. assets/js/vendor.js +5 -5
  9. lang/index.php +3 -0
  10. lang/mailpoet-de_DE.mo +0 -0
  11. lang/mailpoet-en_GB.mo +0 -0
  12. lang/mailpoet-es_ES.mo +0 -0
  13. lang/mailpoet-fa_IR.mo +0 -0
  14. lang/mailpoet-fr_FR.mo +0 -0
  15. lang/mailpoet-it_IT.mo +0 -0
  16. lang/mailpoet-ja.mo +0 -0
  17. lang/mailpoet-nl_NL.mo +0 -0
  18. lang/mailpoet-pl_PL.mo +0 -0
  19. lang/mailpoet-pt_BR.mo +0 -0
  20. lang/mailpoet-pt_PT.mo +0 -0
  21. lang/mailpoet-ru_RU.mo +0 -0
  22. lang/mailpoet.pot +538 -370
  23. lib/API/JSON/v1/Services.php +12 -12
  24. lib/Config/Initializer.php +8 -0
  25. lib/Config/Installer.php +116 -0
  26. lib/Config/Menu.php +34 -1
  27. lib/Config/ServicesChecker.php +11 -8
  28. lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php +1 -1
  29. lib/Cron/Workers/Scheduler.php +2 -0
  30. lib/Cron/Workers/SendingQueue/SendingQueue.php +10 -5
  31. lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php +25 -5
  32. lib/Helpscout/Beacon.php +2 -1
  33. lib/Models/Model.php +2 -1
  34. lib/Models/ModelValidator.php +30 -0
  35. lib/Models/Newsletter.php +109 -38
  36. lib/Models/Subscriber.php +1 -1
  37. lib/Newsletter/Renderer/Renderer.php +50 -0
  38. lib/Services/Bridge.php +26 -2
  39. lib/Services/Release/API.php +52 -0
  40. lib/Services/Release/index.php +0 -0
  41. lib/Subscribers/ImportExport/Import/Import.php +22 -6
  42. lib/Subscription/Pages.php +1 -2
  43. mailpoet.php +2 -2
  44. readme.txt +8 -1
  45. vendor/autoload.php +1 -1
  46. vendor/composer/ClassLoader.php +5 -31
  47. vendor/composer/autoload_classmap.php +3 -0
  48. vendor/composer/autoload_real.php +8 -8
  49. vendor/composer/autoload_static.php +8 -5
  50. vendor/composer/installed.json +12 -12
  51. views/limit.html +9 -4
  52. views/newsletters.html +3 -2
  53. views/premium.html +148 -0
  54. views/settings.html +16 -13
  55. views/settings/mta.html +49 -100
  56. views/settings/premium.html +91 -26
  57. views/subscribers/subscribers.html +3 -0
assets/css/admin.css CHANGED
@@ -2562,6 +2562,7 @@ rgba(0,0,0,0.3)
2562
  font-weight: 500;
2563
  border-radius: 3px;
2564
  letter-spacing: 1px;
 
2565
  }
2566
  .mailpoet_badge_excellent {
2567
  background: #2993ab;
@@ -2810,6 +2811,9 @@ textarea.parsley-error {
2810
  visibility: hidden;
2811
  font-weight: bold;
2812
  }
 
 
 
2813
  #mailpoet_settings .mailpoet_sending_methods .mailpoet_active .mailpoet_status span {
2814
  visibility: visible;
2815
  }
@@ -2826,10 +2830,10 @@ textarea.parsley-error {
2826
  #mailpoet_settings .mailpoet_sending_methods .mailpoet_actions .button-secondary {
2827
  margin: 0 -6px -4px 0;
2828
  }
2829
- #mailpoet_settings .mailpoet_premium_key_valid::before {
2830
  content: '✔ ';
2831
  }
2832
- #mailpoet_settings .mailpoet_premium_key_invalid::before {
2833
  content: '✗ ';
2834
  }
2835
  @media screen and (max-width: 782px) {
2562
  font-weight: 500;
2563
  border-radius: 3px;
2564
  letter-spacing: 1px;
2565
+ vertical-align: middle;
2566
  }
2567
  .mailpoet_badge_excellent {
2568
  background: #2993ab;
2811
  visibility: hidden;
2812
  font-weight: bold;
2813
  }
2814
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_active .mailpoet_status {
2815
+ background-color: #088b00;
2816
+ }
2817
  #mailpoet_settings .mailpoet_sending_methods .mailpoet_active .mailpoet_status span {
2818
  visibility: visible;
2819
  }
2830
  #mailpoet_settings .mailpoet_sending_methods .mailpoet_actions .button-secondary {
2831
  margin: 0 -6px -4px 0;
2832
  }
2833
+ #mailpoet_settings .mailpoet_key_valid::before {
2834
  content: '✔ ';
2835
  }
2836
+ #mailpoet_settings .mailpoet_key_invalid::before {
2837
  content: '✗ ';
2838
  }
2839
  @media screen and (max-width: 782px) {
assets/img/mailpoet_logo_newsletter.png ADDED
Binary file
assets/js/admin.js CHANGED
@@ -4,12 +4,12 @@ webpackJsonp([0],[
4
 
5
  __webpack_require__(1);
6
  __webpack_require__(424);
7
- __webpack_require__(462);
8
- __webpack_require__(465);
9
- __webpack_require__(467);
10
- __webpack_require__(470);
11
- __webpack_require__(474);
12
- module.exports = __webpack_require__(475);
13
 
14
 
15
  /***/ },
@@ -2901,6 +2901,30 @@ webpackJsonp([0],[
2901
  message = _mailpoet2['default'].I18n.t('multipleSubscribersRestored').replace('%$1d', count.toLocaleString());
2902
  }
2903
  _mailpoet2['default'].Notice.success(message);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2904
  }
2905
  };
2906
 
@@ -9678,45 +9702,7 @@ webpackJsonp([0],[
9678
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9679
 
9680
  /***/ },
9681
- /* 294 */
9682
- /***/ function(module, exports, __webpack_require__) {
9683
-
9684
- 'use strict';
9685
-
9686
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9687
-
9688
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9689
-
9690
- var _react = __webpack_require__(2);
9691
-
9692
- var _react2 = _interopRequireDefault(_react);
9693
-
9694
- var FormFieldText = _react2['default'].createClass({
9695
- displayName: 'FormFieldText',
9696
-
9697
- render: function render() {
9698
- var value = this.props.item[this.props.field.name];
9699
- if (value === undefined) {
9700
- value = this.props.field.defaultValue || '';
9701
- }
9702
-
9703
- return _react2['default'].createElement('input', _extends({
9704
- type: 'text',
9705
- disabled: this.props.field['disabled'] !== undefined ? this.props.field.disabled(this.props.item) : false,
9706
- className: this.props.field.size ? '' : 'regular-text',
9707
- size: this.props.field.size !== 'auto' && this.props.field.size > 0 ? this.props.field.size : false,
9708
- name: this.props.field.name,
9709
- id: 'field_' + this.props.field.name,
9710
- value: value,
9711
- placeholder: this.props.field.placeholder,
9712
- onChange: this.props.onValueChange
9713
- }, this.props.field.validation));
9714
- }
9715
- });
9716
-
9717
- module.exports = FormFieldText;
9718
-
9719
- /***/ },
9720
  /* 295 */
9721
  /***/ function(module, exports, __webpack_require__) {
9722
 
@@ -9746,98 +9732,7 @@ webpackJsonp([0],[
9746
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9747
 
9748
  /***/ },
9749
- /* 296 */
9750
- /***/ function(module, exports, __webpack_require__) {
9751
-
9752
- 'use strict';
9753
-
9754
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9755
-
9756
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9757
-
9758
- var _react = __webpack_require__(2);
9759
-
9760
- var _react2 = _interopRequireDefault(_react);
9761
-
9762
- var _underscore = __webpack_require__(281);
9763
-
9764
- var _underscore2 = _interopRequireDefault(_underscore);
9765
-
9766
- var FormFieldSelect = _react2['default'].createClass({
9767
- displayName: 'FormFieldSelect',
9768
-
9769
- render: function render() {
9770
- var _this = this;
9771
-
9772
- if (this.props.field.values === undefined) {
9773
- return false;
9774
- }
9775
-
9776
- var filter = false;
9777
- var placeholder = false;
9778
- var sortBy = false;
9779
-
9780
- if (this.props.field.placeholder !== undefined) {
9781
- placeholder = _react2['default'].createElement(
9782
- 'option',
9783
- { value: '' },
9784
- this.props.field.placeholder
9785
- );
9786
- }
9787
-
9788
- if (this.props.field['filter'] !== undefined) {
9789
- filter = this.props.field.filter;
9790
- }
9791
-
9792
- if (_underscore2['default'].isFunction(this.props.field.sortBy)) {
9793
- sortBy = this.props.field.sortBy;
9794
- }
9795
-
9796
- var keys = undefined;
9797
- if (sortBy) {
9798
- // Extract keys from sorted [key, value] select value pairs, sorted by
9799
- // provided sorting order.
9800
- keys = _underscore2['default'].map(_underscore2['default'].sortBy(_underscore2['default'].pairs(this.props.field.values), function (item) {
9801
- return sortBy(item[0], item[1]);
9802
- }), function (item) {
9803
- return item[0];
9804
- });
9805
- } else {
9806
- keys = Object.keys(this.props.field.values);
9807
- }
9808
-
9809
- var options = keys.map(function (value, index) {
9810
-
9811
- if (filter !== false && filter(_this.props.item, value) === false) {
9812
- return;
9813
- }
9814
-
9815
- return _react2['default'].createElement(
9816
- 'option',
9817
- {
9818
- key: 'option-' + index,
9819
- value: value },
9820
- _this.props.field.values[value]
9821
- );
9822
- });
9823
-
9824
- return _react2['default'].createElement(
9825
- 'select',
9826
- _extends({
9827
- name: this.props.field.name,
9828
- id: 'field_' + this.props.field.name,
9829
- value: this.props.item[this.props.field.name],
9830
- onChange: this.props.onValueChange
9831
- }, this.props.field.validation),
9832
- placeholder,
9833
- options
9834
- );
9835
- }
9836
- });
9837
-
9838
- module.exports = FormFieldSelect;
9839
-
9840
- /***/ },
9841
  /* 297 */
9842
  /***/ function(module, exports, __webpack_require__) {
9843
 
@@ -26106,39 +26001,35 @@ webpackJsonp([0],[
26106
 
26107
  var _newslettersTypesJsx2 = _interopRequireDefault(_newslettersTypesJsx);
26108
 
26109
- var _newslettersTemplatesJsx = __webpack_require__(429);
26110
 
26111
  var _newslettersTemplatesJsx2 = _interopRequireDefault(_newslettersTemplatesJsx);
26112
 
26113
- var _newslettersSendJsx = __webpack_require__(430);
26114
 
26115
  var _newslettersSendJsx2 = _interopRequireDefault(_newslettersSendJsx);
26116
 
26117
- var _newslettersTypesStandardJsx = __webpack_require__(437);
26118
 
26119
  var _newslettersTypesStandardJsx2 = _interopRequireDefault(_newslettersTypesStandardJsx);
26120
 
26121
- var _newslettersTypesWelcomeWelcomeJsx = __webpack_require__(438);
26122
-
26123
- var _newslettersTypesWelcomeWelcomeJsx2 = _interopRequireDefault(_newslettersTypesWelcomeWelcomeJsx);
26124
-
26125
- var _newslettersTypesNotificationNotificationJsx = __webpack_require__(439);
26126
 
26127
  var _newslettersTypesNotificationNotificationJsx2 = _interopRequireDefault(_newslettersTypesNotificationNotificationJsx);
26128
 
26129
- var _newslettersListingsStandardJsx = __webpack_require__(440);
26130
 
26131
  var _newslettersListingsStandardJsx2 = _interopRequireDefault(_newslettersListingsStandardJsx);
26132
 
26133
- var _newslettersListingsWelcomeJsx = __webpack_require__(459);
26134
 
26135
  var _newslettersListingsWelcomeJsx2 = _interopRequireDefault(_newslettersListingsWelcomeJsx);
26136
 
26137
- var _newslettersListingsNotificationJsx = __webpack_require__(460);
26138
 
26139
  var _newslettersListingsNotificationJsx2 = _interopRequireDefault(_newslettersListingsNotificationJsx);
26140
 
26141
- var _newslettersListingsNotification_historyJsx = __webpack_require__(461);
26142
 
26143
  var _newslettersListingsNotification_historyJsx2 = _interopRequireDefault(_newslettersListingsNotification_historyJsx);
26144
 
@@ -26171,7 +26062,6 @@ webpackJsonp([0],[
26171
  _react2['default'].createElement(_reactRouter.Route, { path: 'notification(/)**', component: _newslettersListingsNotificationJsx2['default'] }),
26172
  _react2['default'].createElement(_reactRouter.Route, { path: 'new', component: _newslettersTypesJsx2['default'] }),
26173
  _react2['default'].createElement(_reactRouter.Route, { path: 'new/standard', component: _newslettersTypesStandardJsx2['default'] }),
26174
- _react2['default'].createElement(_reactRouter.Route, { path: 'new/welcome', component: _newslettersTypesWelcomeWelcomeJsx2['default'] }),
26175
  _react2['default'].createElement(_reactRouter.Route, { path: 'new/notification', component: _newslettersTypesNotificationNotificationJsx2['default'] }),
26176
  _react2['default'].createElement(_reactRouter.Route, { name: 'template', path: 'template/:id', component: _newslettersTemplatesJsx2['default'] }),
26177
  _react2['default'].createElement(_reactRouter.Route, { path: 'send/:id', component: _newslettersSendJsx2['default'] }),
@@ -26193,7 +26083,7 @@ webpackJsonp([0],[
26193
 
26194
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26195
 
26196
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(277), __webpack_require__(181), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, Router, Breadcrumb) {
26197
  var NewsletterTypes = React.createClass({
26198
  displayName: 'NewsletterTypes',
26199
 
@@ -26227,6 +26117,47 @@ webpackJsonp([0],[
26227
  });
26228
  },
26229
  render: function render() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26230
  return React.createElement(
26231
  'div',
26232
  null,
@@ -26239,99 +26170,36 @@ webpackJsonp([0],[
26239
  React.createElement(
26240
  'ul',
26241
  { className: 'mailpoet_boxes clearfix' },
26242
- React.createElement(
26243
- 'li',
26244
- { 'data-type': 'standard' },
26245
- React.createElement('div', { className: 'mailpoet_thumbnail' }),
26246
- React.createElement(
26247
- 'div',
26248
- { className: 'mailpoet_description' },
26249
  React.createElement(
26250
- 'h3',
26251
  null,
26252
- MailPoet.I18n.t('regularNewsletterTypeTitle')
26253
- ),
26254
- React.createElement(
26255
- 'p',
26256
- null,
26257
- MailPoet.I18n.t('regularNewsletterTypeDescription')
26258
- )
26259
- ),
26260
- React.createElement(
26261
- 'div',
26262
- { className: 'mailpoet_actions' },
26263
- React.createElement(
26264
- 'a',
26265
- {
26266
- className: 'button button-primary',
26267
- onClick: this.createNewsletter.bind(null, 'standard')
26268
- },
26269
- MailPoet.I18n.t('create')
 
 
26270
  )
26271
- )
26272
- ),
26273
- React.createElement(
26274
- 'li',
26275
- { 'data-type': 'welcome' },
26276
- React.createElement('div', { className: 'mailpoet_thumbnail' }),
26277
- React.createElement(
26278
- 'div',
26279
- { className: 'mailpoet_description' },
26280
- React.createElement(
26281
- 'h3',
26282
- null,
26283
- MailPoet.I18n.t('welcomeNewsletterTypeTitle')
26284
- ),
26285
- React.createElement(
26286
- 'p',
26287
- null,
26288
- MailPoet.I18n.t('welcomeNewsletterTypeDescription')
26289
- )
26290
- ),
26291
- React.createElement(
26292
- 'div',
26293
- { className: 'mailpoet_actions' },
26294
- React.createElement(
26295
- 'a',
26296
- {
26297
- className: 'button button-primary',
26298
- onClick: this.setupNewsletter.bind(null, 'welcome')
26299
- },
26300
- MailPoet.I18n.t('setUp')
26301
- )
26302
- )
26303
- ),
26304
- React.createElement(
26305
- 'li',
26306
- { 'data-type': 'notification' },
26307
- React.createElement('div', { className: 'mailpoet_thumbnail' }),
26308
- React.createElement(
26309
- 'div',
26310
- { className: 'mailpoet_description' },
26311
- React.createElement(
26312
- 'h3',
26313
- null,
26314
- MailPoet.I18n.t('postNotificationNewsletterTypeTitle')
26315
- ),
26316
- React.createElement(
26317
- 'p',
26318
- null,
26319
- MailPoet.I18n.t('postNotificationsNewsletterTypeDescription')
26320
- )
26321
- ),
26322
- React.createElement(
26323
- 'div',
26324
- { className: 'mailpoet_actions' },
26325
- React.createElement(
26326
- 'a',
26327
- {
26328
- className: 'button button-primary',
26329
- onClick: this.setupNewsletter.bind(null, 'notification')
26330
- },
26331
- MailPoet.I18n.t('setUp')
26332
- )
26333
- )
26334
- )
26335
  )
26336
  );
26337
  }
@@ -26341,75 +26209,9 @@ webpackJsonp([0],[
26341
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26342
 
26343
  /***/ },
26344
- /* 428 */
26345
- /***/ function(module, exports, __webpack_require__) {
26346
-
26347
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26348
-
26349
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(181), __webpack_require__(278), __webpack_require__(277)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, classNames, MailPoet) {
26350
- var Link = Router.Link;
26351
-
26352
- var Breadcrumb = React.createClass({
26353
- displayName: 'Breadcrumb',
26354
-
26355
- getInitialState: function getInitialState() {
26356
- return {
26357
- step: null,
26358
- steps: [{
26359
- name: 'type',
26360
- label: MailPoet.I18n.t('selectType'),
26361
- link: '/new'
26362
- }, {
26363
- name: 'template',
26364
- label: MailPoet.I18n.t('template')
26365
- }, {
26366
- name: 'editor',
26367
- label: MailPoet.I18n.t('designer')
26368
- }, {
26369
- name: 'send',
26370
- label: MailPoet.I18n.t('send')
26371
- }]
26372
- };
26373
- },
26374
- render: function render() {
26375
- var steps = this.state.steps.map((function (step, index) {
26376
- var stepClasses = classNames({ 'mailpoet_current': this.props.step === step.name });
26377
-
26378
- var label = step.label;
26379
-
26380
- if (step['link'] !== undefined && this.props.step !== step.name) {
26381
- label = React.createElement(
26382
- Link,
26383
- { to: step.link },
26384
- step.label
26385
- );
26386
- }
26387
-
26388
- return React.createElement(
26389
- 'span',
26390
- { key: 'step-' + index },
26391
- React.createElement(
26392
- 'span',
26393
- { className: stepClasses },
26394
- label
26395
- ),
26396
- index < this.state.steps.length - 1 ? ' > ' : ''
26397
- );
26398
- }).bind(this));
26399
-
26400
- return React.createElement(
26401
- 'p',
26402
- { className: 'mailpoet_breadcrumb' },
26403
- steps
26404
- );
26405
- }
26406
- });
26407
-
26408
- return Breadcrumb;
26409
- }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26410
-
26411
- /***/ },
26412
- /* 429 */
26413
  /***/ function(module, exports, __webpack_require__) {
26414
 
26415
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -26685,14 +26487,14 @@ webpackJsonp([0],[
26685
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26686
 
26687
  /***/ },
26688
- /* 430 */
26689
  /***/ function(module, exports, __webpack_require__) {
26690
 
26691
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26692
 
26693
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26694
 
26695
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(181), __webpack_require__(281), __webpack_require__(277), __webpack_require__(292), __webpack_require__(431), __webpack_require__(432), __webpack_require__(435), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, _, MailPoet, Form, StandardNewsletterFields, NotificationNewsletterFields, WelcomeNewsletterFields, Breadcrumb) {
26696
 
26697
  var NewsletterSend = React.createClass({
26698
  displayName: 'NewsletterSend',
@@ -26935,7 +26737,7 @@ webpackJsonp([0],[
26935
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26936
 
26937
  /***/ },
26938
- /* 431 */
26939
  /***/ function(module, exports, __webpack_require__) {
26940
 
26941
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -27314,12 +27116,12 @@ webpackJsonp([0],[
27314
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27315
 
27316
  /***/ },
27317
- /* 432 */
27318
  /***/ function(module, exports, __webpack_require__) {
27319
 
27320
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27321
 
27322
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(425), __webpack_require__(433), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Hooks, Scheduling, _) {
27323
 
27324
  var settings = window.mailpoet_settings || {};
27325
 
@@ -27416,7 +27218,7 @@ webpackJsonp([0],[
27416
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27417
 
27418
  /***/ },
27419
- /* 433 */
27420
  /***/ function(module, exports, __webpack_require__) {
27421
 
27422
  'use strict';
@@ -27435,7 +27237,7 @@ webpackJsonp([0],[
27435
 
27436
  var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
27437
 
27438
- var _newslettersSchedulingCommonJsx = __webpack_require__(434);
27439
 
27440
  var intervalField = {
27441
  name: 'intervalType',
@@ -27549,106 +27351,13 @@ webpackJsonp([0],[
27549
  module.exports = NotificationScheduling;
27550
 
27551
  /***/ },
27552
- /* 434 */
27553
- /***/ function(module, exports, __webpack_require__) {
27554
-
27555
- 'use strict';
27556
-
27557
- Object.defineProperty(exports, '__esModule', {
27558
- value: true
27559
- });
27560
-
27561
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27562
-
27563
- var _underscore = __webpack_require__(281);
27564
-
27565
- var _underscore2 = _interopRequireDefault(_underscore);
27566
-
27567
- var _mailpoet = __webpack_require__(277);
27568
-
27569
- var _mailpoet2 = _interopRequireDefault(_mailpoet);
27570
-
27571
- var timeFormat = window.mailpoet_time_format || 'H:i';
27572
-
27573
- // welcome emails
27574
- var _timeDelayValues = {
27575
- 'immediate': _mailpoet2['default'].I18n.t('delayImmediately'),
27576
- 'hours': _mailpoet2['default'].I18n.t('delayHoursAfter'),
27577
- 'days': _mailpoet2['default'].I18n.t('delayDaysAfter'),
27578
- 'weeks': _mailpoet2['default'].I18n.t('delayWeeksAfter')
27579
- };
27580
-
27581
- var _intervalValues = {
27582
- 'daily': _mailpoet2['default'].I18n.t('daily'),
27583
- 'weekly': _mailpoet2['default'].I18n.t('weekly'),
27584
- 'monthly': _mailpoet2['default'].I18n.t('monthly'),
27585
- 'nthWeekDay': _mailpoet2['default'].I18n.t('monthlyEvery'),
27586
- 'immediately': _mailpoet2['default'].I18n.t('immediately')
27587
- };
27588
-
27589
- // notification emails
27590
- var SECONDS_IN_DAY = 86400;
27591
- var TIME_STEP_SECONDS = 3600;
27592
- var numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
27593
-
27594
- var _timeOfDayValues = _underscore2['default'].object(_underscore2['default'].map(_underscore2['default'].times(numberOfTimeSteps, function (step) {
27595
- return step * TIME_STEP_SECONDS;
27596
- }), function (seconds) {
27597
- var date = new Date(null);
27598
- date.setSeconds(seconds);
27599
- var timeLabel = _mailpoet2['default'].Date.format(date, { format: timeFormat, offset: 0 });
27600
- return [seconds, timeLabel];
27601
- }));
27602
-
27603
- var _weekDayValues = {
27604
- 0: _mailpoet2['default'].I18n.t('sunday'),
27605
- 1: _mailpoet2['default'].I18n.t('monday'),
27606
- 2: _mailpoet2['default'].I18n.t('tuesday'),
27607
- 3: _mailpoet2['default'].I18n.t('wednesday'),
27608
- 4: _mailpoet2['default'].I18n.t('thursday'),
27609
- 5: _mailpoet2['default'].I18n.t('friday'),
27610
- 6: _mailpoet2['default'].I18n.t('saturday')
27611
- };
27612
-
27613
- var NUMBER_OF_DAYS_IN_MONTH = 28;
27614
- var _monthDayValues = _underscore2['default'].object(_underscore2['default'].map(_underscore2['default'].times(NUMBER_OF_DAYS_IN_MONTH, function (day) {
27615
- return day;
27616
- }), function (day) {
27617
- var labels = {
27618
- 0: _mailpoet2['default'].I18n.t('first'),
27619
- 1: _mailpoet2['default'].I18n.t('second'),
27620
- 2: _mailpoet2['default'].I18n.t('third')
27621
- };
27622
- var label = undefined;
27623
- if (labels[day] !== undefined) {
27624
- label = labels[day];
27625
- } else {
27626
- label = _mailpoet2['default'].I18n.t('nth').replace("%$1d", day + 1);
27627
- }
27628
- return [day + 1, label];
27629
- }));
27630
-
27631
- var _nthWeekDayValues = {
27632
- '1': _mailpoet2['default'].I18n.t('first'),
27633
- '2': _mailpoet2['default'].I18n.t('second'),
27634
- '3': _mailpoet2['default'].I18n.t('third'),
27635
- 'L': _mailpoet2['default'].I18n.t('last')
27636
- };
27637
-
27638
- exports.timeDelayValues = _timeDelayValues;
27639
- exports.intervalValues = _intervalValues;
27640
- exports.timeOfDayValues = _timeOfDayValues;
27641
- exports.weekDayValues = _weekDayValues;
27642
- exports.monthDayValues = _monthDayValues;
27643
- exports.nthWeekDayValues = _nthWeekDayValues;
27644
-
27645
- /***/ },
27646
- /* 435 */
27647
  /***/ function(module, exports, __webpack_require__) {
27648
 
27649
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27650
 
27651
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(425), __webpack_require__(436)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Hooks, Scheduling) {
27652
 
27653
  var settings = window.mailpoet_settings || {};
27654
 
@@ -27717,180 +27426,9 @@ webpackJsonp([0],[
27717
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27718
 
27719
  /***/ },
27720
- /* 436 */
27721
- /***/ function(module, exports, __webpack_require__) {
27722
-
27723
- 'use strict';
27724
-
27725
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27726
-
27727
- var _underscore = __webpack_require__(281);
27728
-
27729
- var _underscore2 = _interopRequireDefault(_underscore);
27730
-
27731
- var _react = __webpack_require__(2);
27732
-
27733
- var _react2 = _interopRequireDefault(_react);
27734
-
27735
- var _mailpoet = __webpack_require__(277);
27736
-
27737
- var _mailpoet2 = _interopRequireDefault(_mailpoet);
27738
-
27739
- var _formFieldsSelectJsx = __webpack_require__(296);
27740
-
27741
- var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
27742
-
27743
- var _formFieldsTextJsx = __webpack_require__(294);
27744
-
27745
- var _formFieldsTextJsx2 = _interopRequireDefault(_formFieldsTextJsx);
27746
-
27747
- var _newslettersSchedulingCommonJsx = __webpack_require__(434);
27748
-
27749
- var availableRoles = window.mailpoet_roles || {};
27750
- var availableSegments = _underscore2['default'].filter(window.mailpoet_segments || [], function (segment) {
27751
- return segment.type === 'default';
27752
- });
27753
-
27754
- var events = {
27755
- name: 'event',
27756
- values: {
27757
- 'segment': _mailpoet2['default'].I18n.t('onSubscriptionToList'),
27758
- 'user': _mailpoet2['default'].I18n.t('onWPUserRegistration')
27759
- }
27760
- };
27761
-
27762
- var availableSegmentValues = _underscore2['default'].object(_underscore2['default'].map(availableSegments, function (segment) {
27763
- var name = segment.name + ' (' + parseInt(segment.subscribers).toLocaleString() + ')';
27764
- return [segment.id, name];
27765
- }));
27766
- var segmentField = {
27767
- name: 'segment',
27768
- values: availableSegmentValues,
27769
- sortBy: function sortBy(key, value) {
27770
- return value.toLowerCase();
27771
- }
27772
- };
27773
-
27774
- var roleField = {
27775
- name: 'role',
27776
- values: availableRoles
27777
- };
27778
-
27779
- var afterTimeNumberField = {
27780
- name: 'afterTimeNumber',
27781
- size: 3
27782
- };
27783
-
27784
- var afterTimeTypeField = {
27785
- name: 'afterTimeType',
27786
- values: _newslettersSchedulingCommonJsx.timeDelayValues
27787
- };
27788
-
27789
- var WelcomeScheduling = _react2['default'].createClass({
27790
- displayName: 'WelcomeScheduling',
27791
-
27792
- contextTypes: {
27793
- router: _react2['default'].PropTypes.object.isRequired
27794
- },
27795
- _getCurrentValue: function _getCurrentValue() {
27796
- return this.props.item[this.props.field.name] || {};
27797
- },
27798
- handleValueChange: function handleValueChange(name, value) {
27799
- var oldValue = this._getCurrentValue();
27800
- var newValue = {};
27801
-
27802
- newValue[name] = value;
27803
-
27804
- return this.props.onValueChange({
27805
- target: {
27806
- name: this.props.field.name,
27807
- value: _underscore2['default'].extend({}, oldValue, newValue)
27808
- }
27809
- });
27810
- },
27811
- handleEventChange: function handleEventChange(event) {
27812
- return this.handleValueChange('event', event.target.value);
27813
- },
27814
- handleSegmentChange: function handleSegmentChange(event) {
27815
- return this.handleValueChange('segment', event.target.value);
27816
- },
27817
- handleRoleChange: function handleRoleChange(event) {
27818
- return this.handleValueChange('role', event.target.value);
27819
- },
27820
- handleAfterTimeNumberChange: function handleAfterTimeNumberChange(event) {
27821
- return this.handleValueChange('afterTimeNumber', event.target.value);
27822
- },
27823
- handleAfterTimeTypeChange: function handleAfterTimeTypeChange(event) {
27824
- return this.handleValueChange('afterTimeType', event.target.value);
27825
- },
27826
- handleNext: function handleNext() {
27827
- var _this = this;
27828
-
27829
- _mailpoet2['default'].Ajax.post({
27830
- api_version: window.mailpoet_api_version,
27831
- endpoint: 'newsletters',
27832
- action: 'create',
27833
- data: {
27834
- type: 'welcome',
27835
- options: this.state
27836
- }
27837
- }).done(function (response) {
27838
- _this.showTemplateSelection(response.data.id);
27839
- }).fail(function (response) {
27840
- if (response.errors.length > 0) {
27841
- _mailpoet2['default'].Notice.error(response.errors.map(function (error) {
27842
- return error.message;
27843
- }), { scroll: true });
27844
- }
27845
- });
27846
- },
27847
- showTemplateSelection: function showTemplateSelection(newsletterId) {
27848
- this.context.router.push('/template/' + newsletterId);
27849
- },
27850
- render: function render() {
27851
- var value = this._getCurrentValue();
27852
- var roleSegmentSelection = undefined;
27853
- var timeNumber = undefined;
27854
-
27855
- if (value.event === 'user') {
27856
- roleSegmentSelection = _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
27857
- field: roleField,
27858
- item: this._getCurrentValue(),
27859
- onValueChange: this.handleRoleChange });
27860
- } else {
27861
- roleSegmentSelection = _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
27862
- field: segmentField,
27863
- item: this._getCurrentValue(),
27864
- onValueChange: this.handleSegmentChange });
27865
- }
27866
- if (value.afterTimeType !== 'immediate') {
27867
- timeNumber = _react2['default'].createElement(_formFieldsTextJsx2['default'], {
27868
- field: afterTimeNumberField,
27869
- item: this._getCurrentValue(),
27870
- onValueChange: this.handleAfterTimeNumberChange });
27871
- }
27872
-
27873
- return _react2['default'].createElement(
27874
- 'div',
27875
- null,
27876
- _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
27877
- field: events,
27878
- item: this._getCurrentValue(),
27879
- onValueChange: this.handleEventChange }),
27880
- roleSegmentSelection,
27881
- timeNumber,
27882
- _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
27883
- field: afterTimeTypeField,
27884
- item: this._getCurrentValue(),
27885
- onValueChange: this.handleAfterTimeTypeChange })
27886
- );
27887
- }
27888
- });
27889
-
27890
- module.exports = WelcomeScheduling;
27891
-
27892
- /***/ },
27893
- /* 437 */
27894
  /***/ function(module, exports, __webpack_require__) {
27895
 
27896
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -27945,115 +27483,12 @@ webpackJsonp([0],[
27945
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27946
 
27947
  /***/ },
27948
- /* 438 */
27949
- /***/ function(module, exports, __webpack_require__) {
27950
-
27951
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27952
-
27953
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(281), __webpack_require__(2), __webpack_require__(181), __webpack_require__(277), __webpack_require__(436), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
27954
-
27955
- var field = {
27956
- name: 'options',
27957
- label: 'Event',
27958
- type: 'reactComponent',
27959
- component: Scheduling
27960
- };
27961
-
27962
- var availableSegments = window.mailpoet_segments || {},
27963
- defaultSegment = 1;
27964
-
27965
- if (_.size(availableSegments) > 0) {
27966
- defaultSegment = _.first(availableSegments).id;
27967
- }
27968
-
27969
- var NewsletterWelcome = React.createClass({
27970
- displayName: 'NewsletterWelcome',
27971
-
27972
- contextTypes: {
27973
- router: React.PropTypes.object.isRequired
27974
- },
27975
- getInitialState: function getInitialState() {
27976
- return {
27977
- options: {
27978
- event: 'segment',
27979
- segment: defaultSegment,
27980
- role: 'subscriber',
27981
- afterTimeNumber: 1,
27982
- afterTimeType: 'immediate'
27983
- }
27984
- };
27985
- },
27986
- handleValueChange: function handleValueChange(event) {
27987
- var state = this.state;
27988
- state[event.target.name] = event.target.value;
27989
- this.setState(state);
27990
- },
27991
- handleNext: function handleNext() {
27992
- var _this = this;
27993
-
27994
- MailPoet.Ajax.post({
27995
- api_version: window.mailpoet_api_version,
27996
- endpoint: 'newsletters',
27997
- action: 'create',
27998
- data: _.extend({}, this.state, {
27999
- type: 'welcome',
28000
- subject: MailPoet.I18n.t('draftNewsletterTitle')
28001
- })
28002
- }).done(function (response) {
28003
- _this.showTemplateSelection(response.data.id);
28004
- }).fail(function (response) {
28005
- if (response.errors.length > 0) {
28006
- MailPoet.Notice.error(response.errors.map(function (error) {
28007
- return error.message;
28008
- }), { scroll: true });
28009
- }
28010
- });
28011
- },
28012
- showTemplateSelection: function showTemplateSelection(newsletterId) {
28013
- this.context.router.push('/template/' + newsletterId);
28014
- },
28015
- render: function render() {
28016
- return React.createElement(
28017
- 'div',
28018
- null,
28019
- React.createElement(
28020
- 'h1',
28021
- null,
28022
- MailPoet.I18n.t('welcomeNewsletterTypeTitle')
28023
- ),
28024
- React.createElement(Breadcrumb, { step: 'type' }),
28025
- React.createElement(
28026
- 'h3',
28027
- null,
28028
- MailPoet.I18n.t('selectEventToSendWelcomeEmail')
28029
- ),
28030
- React.createElement(Scheduling, {
28031
- item: this.state,
28032
- field: field,
28033
- onValueChange: this.handleValueChange }),
28034
- React.createElement(
28035
- 'p',
28036
- { className: 'submit' },
28037
- React.createElement('input', {
28038
- className: 'button button-primary',
28039
- type: 'button',
28040
- onClick: this.handleNext,
28041
- value: MailPoet.I18n.t('next') })
28042
- )
28043
- );
28044
- }
28045
- });
28046
-
28047
- return NewsletterWelcome;
28048
- }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
28049
-
28050
- /***/ },
28051
- /* 439 */
28052
  /***/ function(module, exports, __webpack_require__) {
28053
 
28054
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
28055
 
28056
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(281), __webpack_require__(2), __webpack_require__(181), __webpack_require__(277), __webpack_require__(433), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
28057
 
28058
  var field = {
28059
  name: 'options',
@@ -28143,7 +27578,7 @@ webpackJsonp([0],[
28143
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
28144
 
28145
  /***/ },
28146
- /* 440 */
28147
  /***/ function(module, exports, __webpack_require__) {
28148
 
28149
  'use strict';
@@ -28168,15 +27603,19 @@ webpackJsonp([0],[
28168
 
28169
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
28170
 
 
 
 
 
28171
  var _listingListingJsx = __webpack_require__(279);
28172
 
28173
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
28174
 
28175
- var _newslettersListingsTabsJsx = __webpack_require__(441);
28176
 
28177
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
28178
 
28179
- var _newslettersListingsMixinsJsx = __webpack_require__(442);
28180
 
28181
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
28182
  var mailpoet_settings = window.mailpoet_settings || {};
@@ -28287,6 +27726,8 @@ webpackJsonp([0],[
28287
  name: 'trash'
28288
  }];
28289
 
 
 
28290
  var NewsletterListStandard = _react2['default'].createClass({
28291
  displayName: 'NewsletterListStandard',
28292
 
@@ -28384,7 +27825,7 @@ webpackJsonp([0],[
28384
  module.exports = NewsletterListStandard;
28385
 
28386
  /***/ },
28387
- /* 441 */
28388
  /***/ function(module, exports, __webpack_require__) {
28389
 
28390
  'use strict';
@@ -28454,7 +27895,7 @@ webpackJsonp([0],[
28454
  module.exports = ListingTabs;
28455
 
28456
  /***/ },
28457
- /* 442 */
28458
  /***/ function(module, exports, __webpack_require__) {
28459
 
28460
  'use strict';
@@ -28499,7 +27940,7 @@ webpackJsonp([0],[
28499
 
28500
  var _wpJsHooks2 = _interopRequireDefault(_wpJsHooks);
28501
 
28502
- var _newslettersBadgesStatsJsx = __webpack_require__(443);
28503
 
28504
  var _newslettersBadgesStatsJsx2 = _interopRequireDefault(_newslettersBadgesStatsJsx);
28505
 
@@ -28805,7 +28246,7 @@ webpackJsonp([0],[
28805
  );
28806
  }
28807
 
28808
- if (total_sent > 0 && !too_early_for_stats && params.link) {
28809
  // wrap content in a link
28810
  return _react2['default'].createElement(
28811
  'div',
@@ -28906,7 +28347,6 @@ webpackJsonp([0],[
28906
  exports.MailerMixin = _MailerMixin;
28907
 
28908
  /***/ },
28909
- /* 443 */,
28910
  /* 444 */,
28911
  /* 445 */,
28912
  /* 446 */,
@@ -28922,7 +28362,8 @@ webpackJsonp([0],[
28922
  /* 456 */,
28923
  /* 457 */,
28924
  /* 458 */,
28925
- /* 459 */
 
28926
  /***/ function(module, exports, __webpack_require__) {
28927
 
28928
  'use strict';
@@ -28941,11 +28382,11 @@ webpackJsonp([0],[
28941
 
28942
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
28943
 
28944
- var _newslettersListingsTabsJsx = __webpack_require__(441);
28945
 
28946
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
28947
 
28948
- var _newslettersListingsMixinsJsx = __webpack_require__(442);
28949
 
28950
  var _classnames = __webpack_require__(278);
28951
 
@@ -29053,32 +28494,12 @@ webpackJsonp([0],[
29053
  _mailpoet2['default'].I18n.t('edit')
29054
  );
29055
  }
29056
- }, {
29057
- name: 'duplicate',
29058
- label: _mailpoet2['default'].I18n.t('duplicate'),
29059
- onClick: function onClick(newsletter, refresh) {
29060
- return _mailpoet2['default'].Ajax.post({
29061
- api_version: window.mailpoet_api_version,
29062
- endpoint: 'newsletters',
29063
- action: 'duplicate',
29064
- data: {
29065
- id: newsletter.id
29066
- }
29067
- }).done(function (response) {
29068
- _mailpoet2['default'].Notice.success(_mailpoet2['default'].I18n.t('newsletterDuplicated').replace('%$1s', response.data.subject));
29069
- refresh();
29070
- }).fail(function (response) {
29071
- if (response.errors.length > 0) {
29072
- _mailpoet2['default'].Notice.error(response.errors.map(function (error) {
29073
- return error.message;
29074
- }), { scroll: true });
29075
- }
29076
- });
29077
- }
29078
  }, {
29079
  name: 'trash'
29080
  }];
29081
 
 
 
29082
  var NewsletterListWelcome = _react2['default'].createClass({
29083
  displayName: 'NewsletterListWelcome',
29084
 
@@ -29297,7 +28718,7 @@ webpackJsonp([0],[
29297
  module.exports = NewsletterListWelcome;
29298
 
29299
  /***/ },
29300
- /* 460 */
29301
  /***/ function(module, exports, __webpack_require__) {
29302
 
29303
  'use strict';
@@ -29316,11 +28737,11 @@ webpackJsonp([0],[
29316
 
29317
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
29318
 
29319
- var _newslettersListingsTabsJsx = __webpack_require__(441);
29320
 
29321
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
29322
 
29323
- var _newslettersListingsMixinsJsx = __webpack_require__(442);
29324
 
29325
  var _classnames = __webpack_require__(278);
29326
 
@@ -29334,7 +28755,7 @@ webpackJsonp([0],[
29334
 
29335
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
29336
 
29337
- var _newslettersSchedulingCommonJsx = __webpack_require__(434);
29338
 
29339
  var mailpoet_settings = window.mailpoet_settings || {};
29340
 
@@ -29651,7 +29072,7 @@ webpackJsonp([0],[
29651
  module.exports = NewsletterListNotification;
29652
 
29653
  /***/ },
29654
- /* 461 */
29655
  /***/ function(module, exports, __webpack_require__) {
29656
 
29657
  'use strict';
@@ -29676,15 +29097,19 @@ webpackJsonp([0],[
29676
 
29677
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
29678
 
 
 
 
 
29679
  var _listingListingJsx = __webpack_require__(279);
29680
 
29681
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
29682
 
29683
- var _newslettersListingsTabsJsx = __webpack_require__(441);
29684
 
29685
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
29686
 
29687
- var _newslettersListingsMixinsJsx = __webpack_require__(442);
29688
 
29689
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
29690
  var mailpoet_settings = window.mailpoet_settings || {};
@@ -29718,10 +29143,19 @@ webpackJsonp([0],[
29718
  }
29719
  }];
29720
 
 
 
29721
  var NewsletterListNotificationHistory = _react2['default'].createClass({
29722
  displayName: 'NewsletterListNotificationHistory',
29723
 
29724
  mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin, _newslettersListingsMixinsJsx.MailerMixin],
 
 
 
 
 
 
 
29725
  renderItem: function renderItem(newsletter, actions, meta) {
29726
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
29727
 
@@ -29746,7 +29180,7 @@ webpackJsonp([0],[
29746
  href: newsletter.preview_url,
29747
  target: '_blank'
29748
  },
29749
- newsletter.queue.newsletter_rendered_subject
29750
  )
29751
  ),
29752
  actions
@@ -29769,11 +29203,7 @@ webpackJsonp([0],[
29769
  _react2['default'].createElement(
29770
  'td',
29771
  { className: 'column-date', 'data-colname': _mailpoet2['default'].I18n.t('lastModifiedOn') },
29772
- _react2['default'].createElement(
29773
- 'abbr',
29774
- null,
29775
- _mailpoet2['default'].Date.format(newsletter.updated_at)
29776
- )
29777
  )
29778
  );
29779
  },
@@ -29823,7 +29253,7 @@ webpackJsonp([0],[
29823
  module.exports = NewsletterListNotificationHistory;
29824
 
29825
  /***/ },
29826
- /* 462 */
29827
  /***/ function(module, exports, __webpack_require__) {
29828
 
29829
  'use strict';
@@ -29842,11 +29272,11 @@ webpackJsonp([0],[
29842
 
29843
  var _history = __webpack_require__(246);
29844
 
29845
- var _segmentsListJsx = __webpack_require__(463);
29846
 
29847
  var _segmentsListJsx2 = _interopRequireDefault(_segmentsListJsx);
29848
 
29849
- var _segmentsFormJsx = __webpack_require__(464);
29850
 
29851
  var _segmentsFormJsx2 = _interopRequireDefault(_segmentsFormJsx);
29852
 
@@ -29878,7 +29308,7 @@ webpackJsonp([0],[
29878
  }
29879
 
29880
  /***/ },
29881
- /* 463 */
29882
  /***/ function(module, exports, __webpack_require__) {
29883
 
29884
  'use strict';
@@ -30196,7 +29626,7 @@ webpackJsonp([0],[
30196
  module.exports = SegmentList;
30197
 
30198
  /***/ },
30199
- /* 464 */
30200
  /***/ function(module, exports, __webpack_require__) {
30201
 
30202
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -30256,7 +29686,7 @@ webpackJsonp([0],[
30256
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
30257
 
30258
  /***/ },
30259
- /* 465 */
30260
  /***/ function(module, exports, __webpack_require__) {
30261
 
30262
  'use strict';
@@ -30275,7 +29705,7 @@ webpackJsonp([0],[
30275
 
30276
  var _history = __webpack_require__(246);
30277
 
30278
- var _formsListJsx = __webpack_require__(466);
30279
 
30280
  var _formsListJsx2 = _interopRequireDefault(_formsListJsx);
30281
 
@@ -30305,7 +29735,7 @@ webpackJsonp([0],[
30305
  }
30306
 
30307
  /***/ },
30308
- /* 466 */
30309
  /***/ function(module, exports, __webpack_require__) {
30310
 
30311
  'use strict';
@@ -30538,11 +29968,11 @@ webpackJsonp([0],[
30538
  module.exports = FormList;
30539
 
30540
  /***/ },
30541
- /* 467 */
30542
  /***/ function(module, exports, __webpack_require__) {
30543
 
30544
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
30545
- __webpack_require__(468),
30546
  __webpack_require__(276),
30547
  __webpack_require__(277)
30548
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
@@ -30556,6 +29986,7 @@ webpackJsonp([0],[
30556
 
30557
  MailPoet.Router = new (Backbone.Router.extend({
30558
  routes: {
 
30559
  'mta(/:group)': 'sendingMethodGroup',
30560
  '(:tab)': 'tabs',
30561
  },
@@ -30573,7 +30004,7 @@ webpackJsonp([0],[
30573
 
30574
  if(group === null) {
30575
  // show sending methods
30576
- jQuery('.mailpoet_sending_methods').fadeIn();
30577
  } else {
30578
  // toggle SPF (hidden if the sending method is MailPoet)
30579
  jQuery('#mailpoet_mta_spf')[
@@ -30583,7 +30014,7 @@ webpackJsonp([0],[
30583
  ]();
30584
 
30585
  // hide sending methods
30586
- jQuery('.mailpoet_sending_methods').hide();
30587
 
30588
  // display selected sending method's settings
30589
  jQuery('.mailpoet_sending_method[data-group="'+ group +'"]').show();
@@ -30592,7 +30023,7 @@ webpackJsonp([0],[
30592
  },
30593
  tabs: function(tab, section) {
30594
  // set default tab
30595
- tab = tab || 'basics';
30596
 
30597
  // reset all active tabs
30598
  jQuery('.nav-tab-wrapper a').removeClass('nav-tab-active');
@@ -30619,14 +30050,14 @@ webpackJsonp([0],[
30619
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
30620
 
30621
  /***/ },
30622
- /* 468 */
30623
  /***/ function(module, exports, __webpack_require__) {
30624
 
30625
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(469);
30626
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
30627
 
30628
  /***/ },
30629
- /* 469 */
30630
  /***/ function(module, exports, __webpack_require__) {
30631
 
30632
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
@@ -32553,17 +31984,17 @@ webpackJsonp([0],[
32553
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
32554
 
32555
  /***/ },
32556
- /* 470 */
32557
  /***/ function(module, exports, __webpack_require__) {
32558
 
32559
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
32560
- __webpack_require__(468),
32561
  __webpack_require__(281),
32562
  __webpack_require__(276),
32563
  __webpack_require__(277),
32564
- __webpack_require__(471),
32565
  __webpack_require__(472),
32566
  __webpack_require__(473),
 
32567
  __webpack_require__(300),
32568
  __webpack_require__(290)
32569
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
@@ -32879,6 +32310,10 @@ webpackJsonp([0],[
32879
  // is the email in 'mailto:email' format?
32880
  email = test[1].trim();
32881
  }
 
 
 
 
32882
  return email;
32883
  };
32884
 
@@ -33667,8 +33102,8 @@ webpackJsonp([0],[
33667
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
33668
 
33669
  /***/ },
33670
- /* 471 */,
33671
- /* 472 */
33672
  /***/ function(module, exports) {
33673
 
33674
  /*!
@@ -33679,7 +33114,7 @@ webpackJsonp([0],[
33679
  !function(e){"use strict";function t(t,r){if(r=r||{},r.worker&&w.WORKERS_SUPPORTED){var n=h();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==w.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(f=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=f)}for(var o=0;o<t.length;o++){for(var h=n?e.length:t[o].length,d=0;h>d;d++){d>0&&(r+=u);var c=n&&i?e[d]:d;r+=s(t[o][c],d)}o<t.length-1&&(r+=f)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,w.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",f="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){var r=this._partialLine+t;this._partialLine="";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var i=n.meta.cursor;this._finished||(this._partialLine=r.substring(i-this._baseIndex),this._baseIndex=i),n&&n.data&&(this._rowCount+=n.data.length);var s=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(k)e.postMessage({results:n,workerId:w.WORKER_ID,finished:s});else if(m(this._config.chunk)){if(this._config.chunk(n,this._handle),this._paused)return;n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),!s||!m(this._config.complete)||n&&n.meta.aborted||this._config.complete(this._completeResults),s||n&&n.meta.paused||this._nextChunk(),n}},this._sendError=function(t){m(this._config.error)?this._config.error(t):k&&this._config.error&&e.postMessage({workerId:w.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=w.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=w.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&c&&(f("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+w.DefaultDelimiter+"'"),c=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i?!0:"false"==i||"FALSE"==i?!1:o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?f("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&f("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[","," ","|",";",w.RECORD_SEP,w.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],f=0,h=0;i=void 0;for(var d=new u({delimiter:o,preview:10}).parse(t),c=0;c<d.data.length;c++){var l=d.data[c].length;h+=l,"undefined"!=typeof i?l>1&&(f+=Math.abs(l-i),i=l):i=l}h/=d.data.length,("undefined"==typeof n||n>f)&&h>1.99&&(n=f,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function f(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var h,d,c,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?d.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),c=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(c=!0,e.delimiter=w.DefaultDelimiter),b.meta.delimiter=e.delimiter}var f=_(e);return e.preview&&e.header&&f.preview++,h=r,d=new u(f),b=d.parse(h,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,d.abort(),h=h.substr(d.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(h)},this.aborted=function(){return k},this.abort=function(){k=!0,d.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),h=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||w.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||w.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,f,h){function d(e){b.push(e),S=o}function c(t){return h?p():(t||(t=e.substr(o)),w.push(t),o=g,d(w),y&&_(),p())}function l(t){o=t,d(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(f||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var E=e.split(r),C=0;C<E.length;C++){var w=E[C];if(o+=w.length,C!==E.length-1)o+=r.length;else if(h)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],d(w.split(t)),_(),u)return p()}else d(w.split(t));if(s&&C>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return h||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),c();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return c(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return c()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function f(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function h(){if(!w.WORKERS_SUPPORTED)return!1;if(!y&&null===w.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=new e.Worker(w.SCRIPT_PATH||v);return t.onmessage=d,t.id=R++,b[t.id]=t,t}function d(e){var t=e.data,r=b[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,c(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&c(t.workerId,t.results)}function c(e,t){var r=b[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete b[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof w.WORKER_ID&&r&&(w.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:w.WORKER_ID,results:w.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=w.parse(r.input,r.config);n&&e.postMessage({workerId:w.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=!1,b={},R=0,w={};if(w.parse=t,w.unparse=r,w.RECORD_SEP=String.fromCharCode(30),w.UNIT_SEP=String.fromCharCode(31),w.BYTE_ORDER_MARK="",w.BAD_DELIMITERS=["\r","\n",'"',w.BYTE_ORDER_MARK],w.WORKERS_SUPPORTED=!!e.Worker,w.SCRIPT_PATH=null,w.LocalChunkSize=10485760,w.RemoteChunkSize=5242880,w.DefaultDelimiter=",",w.Parser=u,w.ParserHandle=o,w.NetworkStreamer=i,w.FileStreamer=s,w.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=w:m(e.define)&&e.define.amd?e.define(function(){return w}):e.Papa=w,e.jQuery){var S=e.jQuery;S.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=S.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},w.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==S(this).prop("tagName").toUpperCase()&&"file"==S(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:S.extend({},s)})}),r(),this}}k?e.onmessage=p:w.WORKERS_SUPPORTED&&(v=f(),document.body?document.addEventListener("DOMContentLoaded",function(){y=!0},!0):y=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);
33680
 
33681
  /***/ },
33682
- /* 473 */
33683
  /***/ function(module, exports) {
33684
 
33685
  /*
@@ -33764,14 +33199,14 @@ webpackJsonp([0],[
33764
 
33765
 
33766
  /***/ },
33767
- /* 474 */
33768
  /***/ function(module, exports, __webpack_require__) {
33769
 
33770
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33771
  __webpack_require__(281),
33772
  __webpack_require__(276),
33773
  __webpack_require__(277),
33774
- __webpack_require__(471),
33775
  __webpack_require__(290)
33776
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
33777
  _,
@@ -33938,7 +33373,7 @@ webpackJsonp([0],[
33938
 
33939
 
33940
  /***/ },
33941
- /* 475 */
33942
  /***/ function(module, exports, __webpack_require__) {
33943
 
33944
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
4
 
5
  __webpack_require__(1);
6
  __webpack_require__(424);
7
+ __webpack_require__(463);
8
+ __webpack_require__(466);
9
+ __webpack_require__(468);
10
+ __webpack_require__(471);
11
+ __webpack_require__(475);
12
+ module.exports = __webpack_require__(476);
13
 
14
 
15
  /***/ },
2901
  message = _mailpoet2['default'].I18n.t('multipleSubscribersRestored').replace('%$1d', count.toLocaleString());
2902
  }
2903
  _mailpoet2['default'].Notice.success(message);
2904
+ },
2905
+ onNoItemsFound: function onNoItemsFound(group) {
2906
+ if (group === 'bounced' && !mailpoet_premium_active) {
2907
+ return _react2['default'].createElement(
2908
+ 'div',
2909
+ null,
2910
+ _react2['default'].createElement(
2911
+ 'p',
2912
+ null,
2913
+ _mailpoet2['default'].I18n.t('bouncedSubscribersHelp')
2914
+ ),
2915
+ _react2['default'].createElement(
2916
+ 'p',
2917
+ null,
2918
+ _react2['default'].createElement(
2919
+ 'a',
2920
+ { href: 'admin.php?page=mailpoet-premium', className: 'button-primary' },
2921
+ _mailpoet2['default'].I18n.t('bouncedSubscribersPremiumButtonText')
2922
+ )
2923
+ )
2924
+ );
2925
+ }
2926
+ // use default message
2927
+ return false;
2928
  }
2929
  };
2930
 
9702
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9703
 
9704
  /***/ },
9705
+ /* 294 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9706
  /* 295 */
9707
  /***/ function(module, exports, __webpack_require__) {
9708
 
9732
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
9733
 
9734
  /***/ },
9735
+ /* 296 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9736
  /* 297 */
9737
  /***/ function(module, exports, __webpack_require__) {
9738
 
26001
 
26002
  var _newslettersTypesJsx2 = _interopRequireDefault(_newslettersTypesJsx);
26003
 
26004
+ var _newslettersTemplatesJsx = __webpack_require__(430);
26005
 
26006
  var _newslettersTemplatesJsx2 = _interopRequireDefault(_newslettersTemplatesJsx);
26007
 
26008
+ var _newslettersSendJsx = __webpack_require__(431);
26009
 
26010
  var _newslettersSendJsx2 = _interopRequireDefault(_newslettersSendJsx);
26011
 
26012
+ var _newslettersTypesStandardJsx = __webpack_require__(439);
26013
 
26014
  var _newslettersTypesStandardJsx2 = _interopRequireDefault(_newslettersTypesStandardJsx);
26015
 
26016
+ var _newslettersTypesNotificationNotificationJsx = __webpack_require__(440);
 
 
 
 
26017
 
26018
  var _newslettersTypesNotificationNotificationJsx2 = _interopRequireDefault(_newslettersTypesNotificationNotificationJsx);
26019
 
26020
+ var _newslettersListingsStandardJsx = __webpack_require__(441);
26021
 
26022
  var _newslettersListingsStandardJsx2 = _interopRequireDefault(_newslettersListingsStandardJsx);
26023
 
26024
+ var _newslettersListingsWelcomeJsx = __webpack_require__(460);
26025
 
26026
  var _newslettersListingsWelcomeJsx2 = _interopRequireDefault(_newslettersListingsWelcomeJsx);
26027
 
26028
+ var _newslettersListingsNotificationJsx = __webpack_require__(461);
26029
 
26030
  var _newslettersListingsNotificationJsx2 = _interopRequireDefault(_newslettersListingsNotificationJsx);
26031
 
26032
+ var _newslettersListingsNotification_historyJsx = __webpack_require__(462);
26033
 
26034
  var _newslettersListingsNotification_historyJsx2 = _interopRequireDefault(_newslettersListingsNotification_historyJsx);
26035
 
26062
  _react2['default'].createElement(_reactRouter.Route, { path: 'notification(/)**', component: _newslettersListingsNotificationJsx2['default'] }),
26063
  _react2['default'].createElement(_reactRouter.Route, { path: 'new', component: _newslettersTypesJsx2['default'] }),
26064
  _react2['default'].createElement(_reactRouter.Route, { path: 'new/standard', component: _newslettersTypesStandardJsx2['default'] }),
 
26065
  _react2['default'].createElement(_reactRouter.Route, { path: 'new/notification', component: _newslettersTypesNotificationNotificationJsx2['default'] }),
26066
  _react2['default'].createElement(_reactRouter.Route, { name: 'template', path: 'template/:id', component: _newslettersTemplatesJsx2['default'] }),
26067
  _react2['default'].createElement(_reactRouter.Route, { path: 'send/:id', component: _newslettersSendJsx2['default'] }),
26083
 
26084
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26085
 
26086
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(277), __webpack_require__(425), __webpack_require__(181), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, Hooks, Router, Breadcrumb) {
26087
  var NewsletterTypes = React.createClass({
26088
  displayName: 'NewsletterTypes',
26089
 
26117
  });
26118
  },
26119
  render: function render() {
26120
+ var types = [{
26121
+ 'id': 'standard',
26122
+ 'title': MailPoet.I18n.t('regularNewsletterTypeTitle'),
26123
+ 'description': MailPoet.I18n.t('regularNewsletterTypeDescription'),
26124
+ 'action': (function () {
26125
+ return React.createElement(
26126
+ 'a',
26127
+ { className: 'button button-primary', onClick: this.createNewsletter.bind(null, 'standard') },
26128
+ MailPoet.I18n.t('create')
26129
+ );
26130
+ }).bind(this)()
26131
+ }, {
26132
+ 'id': 'welcome',
26133
+ 'title': MailPoet.I18n.t('welcomeNewsletterTypeTitle'),
26134
+ 'description': MailPoet.I18n.t('welcomeNewsletterTypeDescription'),
26135
+ 'action': (function () {
26136
+ return React.createElement(
26137
+ 'div',
26138
+ null,
26139
+ React.createElement(
26140
+ 'a',
26141
+ { href: '?page=mailpoet-premium', target: '_blank' },
26142
+ MailPoet.I18n.t('getPremiumVersion')
26143
+ )
26144
+ );
26145
+ })()
26146
+ }, {
26147
+ 'id': 'notification',
26148
+ 'title': MailPoet.I18n.t('postNotificationNewsletterTypeTitle'),
26149
+ 'description': MailPoet.I18n.t('postNotificationNewsletterTypeDescription'),
26150
+ 'action': (function () {
26151
+ return React.createElement(
26152
+ 'a',
26153
+ { className: 'button button-primary', onClick: this.setupNewsletter.bind(null, 'notification') },
26154
+ MailPoet.I18n.t('setUp')
26155
+ );
26156
+ }).bind(this)()
26157
+ }];
26158
+
26159
+ types = Hooks.applyFilters('mailpoet_newsletters_types', types, this);
26160
+
26161
  return React.createElement(
26162
  'div',
26163
  null,
26170
  React.createElement(
26171
  'ul',
26172
  { className: 'mailpoet_boxes clearfix' },
26173
+ types.map(function (type, index) {
26174
+ return React.createElement(
26175
+ 'li',
26176
+ { key: index, 'data-type': type.id },
 
 
 
26177
  React.createElement(
26178
+ 'div',
26179
  null,
26180
+ React.createElement('div', { className: 'mailpoet_thumbnail' }),
26181
+ React.createElement(
26182
+ 'div',
26183
+ { className: 'mailpoet_description' },
26184
+ React.createElement(
26185
+ 'h3',
26186
+ null,
26187
+ type.title
26188
+ ),
26189
+ React.createElement(
26190
+ 'p',
26191
+ null,
26192
+ type.description
26193
+ )
26194
+ ),
26195
+ React.createElement(
26196
+ 'div',
26197
+ { className: 'mailpoet_actions' },
26198
+ type.action
26199
+ )
26200
  )
26201
+ );
26202
+ }, this)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26203
  )
26204
  );
26205
  }
26209
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26210
 
26211
  /***/ },
26212
+ /* 428 */,
26213
+ /* 429 */,
26214
+ /* 430 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26215
  /***/ function(module, exports, __webpack_require__) {
26216
 
26217
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26487
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26488
 
26489
  /***/ },
26490
+ /* 431 */
26491
  /***/ function(module, exports, __webpack_require__) {
26492
 
26493
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
26494
 
26495
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26496
 
26497
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(181), __webpack_require__(281), __webpack_require__(277), __webpack_require__(292), __webpack_require__(432), __webpack_require__(433), __webpack_require__(436), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, _, MailPoet, Form, StandardNewsletterFields, NotificationNewsletterFields, WelcomeNewsletterFields, Breadcrumb) {
26498
 
26499
  var NewsletterSend = React.createClass({
26500
  displayName: 'NewsletterSend',
26737
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
26738
 
26739
  /***/ },
26740
+ /* 432 */
26741
  /***/ function(module, exports, __webpack_require__) {
26742
 
26743
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27116
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27117
 
27118
  /***/ },
27119
+ /* 433 */
27120
  /***/ function(module, exports, __webpack_require__) {
27121
 
27122
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27123
 
27124
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(425), __webpack_require__(434), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Hooks, Scheduling, _) {
27125
 
27126
  var settings = window.mailpoet_settings || {};
27127
 
27218
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27219
 
27220
  /***/ },
27221
+ /* 434 */
27222
  /***/ function(module, exports, __webpack_require__) {
27223
 
27224
  'use strict';
27237
 
27238
  var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
27239
 
27240
+ var _newslettersSchedulingCommonJsx = __webpack_require__(435);
27241
 
27242
  var intervalField = {
27243
  name: 'intervalType',
27351
  module.exports = NotificationScheduling;
27352
 
27353
  /***/ },
27354
+ /* 435 */,
27355
+ /* 436 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27356
  /***/ function(module, exports, __webpack_require__) {
27357
 
27358
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27359
 
27360
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(425), __webpack_require__(437)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Hooks, Scheduling) {
27361
 
27362
  var settings = window.mailpoet_settings || {};
27363
 
27426
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27427
 
27428
  /***/ },
27429
+ /* 437 */,
27430
+ /* 438 */,
27431
+ /* 439 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27432
  /***/ function(module, exports, __webpack_require__) {
27433
 
27434
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27483
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27484
 
27485
  /***/ },
27486
+ /* 440 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27487
  /***/ function(module, exports, __webpack_require__) {
27488
 
27489
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
27490
 
27491
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(281), __webpack_require__(2), __webpack_require__(181), __webpack_require__(277), __webpack_require__(434), __webpack_require__(428)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
27492
 
27493
  var field = {
27494
  name: 'options',
27578
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27579
 
27580
  /***/ },
27581
+ /* 441 */
27582
  /***/ function(module, exports, __webpack_require__) {
27583
 
27584
  'use strict';
27603
 
27604
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
27605
 
27606
+ var _wpJsHooks = __webpack_require__(425);
27607
+
27608
+ var _wpJsHooks2 = _interopRequireDefault(_wpJsHooks);
27609
+
27610
  var _listingListingJsx = __webpack_require__(279);
27611
 
27612
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
27613
 
27614
+ var _newslettersListingsTabsJsx = __webpack_require__(442);
27615
 
27616
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
27617
 
27618
+ var _newslettersListingsMixinsJsx = __webpack_require__(443);
27619
 
27620
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
27621
  var mailpoet_settings = window.mailpoet_settings || {};
27726
  name: 'trash'
27727
  }];
27728
 
27729
+ newsletter_actions = _wpJsHooks2['default'].applyFilters('mailpoet_newsletters_listings_standard_actions', newsletter_actions);
27730
+
27731
  var NewsletterListStandard = _react2['default'].createClass({
27732
  displayName: 'NewsletterListStandard',
27733
 
27825
  module.exports = NewsletterListStandard;
27826
 
27827
  /***/ },
27828
+ /* 442 */
27829
  /***/ function(module, exports, __webpack_require__) {
27830
 
27831
  'use strict';
27895
  module.exports = ListingTabs;
27896
 
27897
  /***/ },
27898
+ /* 443 */
27899
  /***/ function(module, exports, __webpack_require__) {
27900
 
27901
  'use strict';
27940
 
27941
  var _wpJsHooks2 = _interopRequireDefault(_wpJsHooks);
27942
 
27943
+ var _newslettersBadgesStatsJsx = __webpack_require__(444);
27944
 
27945
  var _newslettersBadgesStatsJsx2 = _interopRequireDefault(_newslettersBadgesStatsJsx);
27946
 
28246
  );
28247
  }
28248
 
28249
+ if (total_sent > 0 && params.link) {
28250
  // wrap content in a link
28251
  return _react2['default'].createElement(
28252
  'div',
28347
  exports.MailerMixin = _MailerMixin;
28348
 
28349
  /***/ },
 
28350
  /* 444 */,
28351
  /* 445 */,
28352
  /* 446 */,
28362
  /* 456 */,
28363
  /* 457 */,
28364
  /* 458 */,
28365
+ /* 459 */,
28366
+ /* 460 */
28367
  /***/ function(module, exports, __webpack_require__) {
28368
 
28369
  'use strict';
28382
 
28383
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
28384
 
28385
+ var _newslettersListingsTabsJsx = __webpack_require__(442);
28386
 
28387
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
28388
 
28389
+ var _newslettersListingsMixinsJsx = __webpack_require__(443);
28390
 
28391
  var _classnames = __webpack_require__(278);
28392
 
28494
  _mailpoet2['default'].I18n.t('edit')
28495
  );
28496
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28497
  }, {
28498
  name: 'trash'
28499
  }];
28500
 
28501
+ newsletter_actions = _wpJsHooks2['default'].applyFilters('mailpoet_newsletters_listings_welcome_notification_actions', newsletter_actions);
28502
+
28503
  var NewsletterListWelcome = _react2['default'].createClass({
28504
  displayName: 'NewsletterListWelcome',
28505
 
28718
  module.exports = NewsletterListWelcome;
28719
 
28720
  /***/ },
28721
+ /* 461 */
28722
  /***/ function(module, exports, __webpack_require__) {
28723
 
28724
  'use strict';
28737
 
28738
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
28739
 
28740
+ var _newslettersListingsTabsJsx = __webpack_require__(442);
28741
 
28742
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
28743
 
28744
+ var _newslettersListingsMixinsJsx = __webpack_require__(443);
28745
 
28746
  var _classnames = __webpack_require__(278);
28747
 
28755
 
28756
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
28757
 
28758
+ var _newslettersSchedulingCommonJsx = __webpack_require__(435);
28759
 
28760
  var mailpoet_settings = window.mailpoet_settings || {};
28761
 
29072
  module.exports = NewsletterListNotification;
29073
 
29074
  /***/ },
29075
+ /* 462 */
29076
  /***/ function(module, exports, __webpack_require__) {
29077
 
29078
  'use strict';
29097
 
29098
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
29099
 
29100
+ var _wpJsHooks = __webpack_require__(425);
29101
+
29102
+ var _wpJsHooks2 = _interopRequireDefault(_wpJsHooks);
29103
+
29104
  var _listingListingJsx = __webpack_require__(279);
29105
 
29106
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
29107
 
29108
+ var _newslettersListingsTabsJsx = __webpack_require__(442);
29109
 
29110
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
29111
 
29112
+ var _newslettersListingsMixinsJsx = __webpack_require__(443);
29113
 
29114
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
29115
  var mailpoet_settings = window.mailpoet_settings || {};
29143
  }
29144
  }];
29145
 
29146
+ newsletter_actions = _wpJsHooks2['default'].applyFilters('mailpoet_newsletters_listings_notification_history_actions', newsletter_actions);
29147
+
29148
  var NewsletterListNotificationHistory = _react2['default'].createClass({
29149
  displayName: 'NewsletterListNotificationHistory',
29150
 
29151
  mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin, _newslettersListingsMixinsJsx.MailerMixin],
29152
+ renderSentDate: function renderSentDate(newsletter) {
29153
+ return newsletter.queue.status === 'completed' ? _react2['default'].createElement(
29154
+ 'abbr',
29155
+ null,
29156
+ _mailpoet2['default'].Date.format(newsletter.updated_at)
29157
+ ) : _mailpoet2['default'].I18n.t('notSentYet');
29158
+ },
29159
  renderItem: function renderItem(newsletter, actions, meta) {
29160
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
29161
 
29180
  href: newsletter.preview_url,
29181
  target: '_blank'
29182
  },
29183
+ newsletter.queue.newsletter_rendered_subject || newsletter.subject
29184
  )
29185
  ),
29186
  actions
29203
  _react2['default'].createElement(
29204
  'td',
29205
  { className: 'column-date', 'data-colname': _mailpoet2['default'].I18n.t('lastModifiedOn') },
29206
+ this.renderSentDate(newsletter)
 
 
 
 
29207
  )
29208
  );
29209
  },
29253
  module.exports = NewsletterListNotificationHistory;
29254
 
29255
  /***/ },
29256
+ /* 463 */
29257
  /***/ function(module, exports, __webpack_require__) {
29258
 
29259
  'use strict';
29272
 
29273
  var _history = __webpack_require__(246);
29274
 
29275
+ var _segmentsListJsx = __webpack_require__(464);
29276
 
29277
  var _segmentsListJsx2 = _interopRequireDefault(_segmentsListJsx);
29278
 
29279
+ var _segmentsFormJsx = __webpack_require__(465);
29280
 
29281
  var _segmentsFormJsx2 = _interopRequireDefault(_segmentsFormJsx);
29282
 
29308
  }
29309
 
29310
  /***/ },
29311
+ /* 464 */
29312
  /***/ function(module, exports, __webpack_require__) {
29313
 
29314
  'use strict';
29626
  module.exports = SegmentList;
29627
 
29628
  /***/ },
29629
+ /* 465 */
29630
  /***/ function(module, exports, __webpack_require__) {
29631
 
29632
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
29686
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
29687
 
29688
  /***/ },
29689
+ /* 466 */
29690
  /***/ function(module, exports, __webpack_require__) {
29691
 
29692
  'use strict';
29705
 
29706
  var _history = __webpack_require__(246);
29707
 
29708
+ var _formsListJsx = __webpack_require__(467);
29709
 
29710
  var _formsListJsx2 = _interopRequireDefault(_formsListJsx);
29711
 
29735
  }
29736
 
29737
  /***/ },
29738
+ /* 467 */
29739
  /***/ function(module, exports, __webpack_require__) {
29740
 
29741
  'use strict';
29968
  module.exports = FormList;
29969
 
29970
  /***/ },
29971
+ /* 468 */
29972
  /***/ function(module, exports, __webpack_require__) {
29973
 
29974
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
29975
+ __webpack_require__(469),
29976
  __webpack_require__(276),
29977
  __webpack_require__(277)
29978
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
29986
 
29987
  MailPoet.Router = new (Backbone.Router.extend({
29988
  routes: {
29989
+ '': 'sendingMethodGroup', // the default tab is currently mta, needs its own method
29990
  'mta(/:group)': 'sendingMethodGroup',
29991
  '(:tab)': 'tabs',
29992
  },
30004
 
30005
  if(group === null) {
30006
  // show sending methods
30007
+ jQuery('.mailpoet_sending_methods, .mailpoet_sending_methods_help').fadeIn();
30008
  } else {
30009
  // toggle SPF (hidden if the sending method is MailPoet)
30010
  jQuery('#mailpoet_mta_spf')[
30014
  ]();
30015
 
30016
  // hide sending methods
30017
+ jQuery('.mailpoet_sending_methods, .mailpoet_sending_methods_help').hide();
30018
 
30019
  // display selected sending method's settings
30020
  jQuery('.mailpoet_sending_method[data-group="'+ group +'"]').show();
30023
  },
30024
  tabs: function(tab, section) {
30025
  // set default tab
30026
+ tab = tab || 'mta';
30027
 
30028
  // reset all active tabs
30029
  jQuery('.nav-tab-wrapper a').removeClass('nav-tab-active');
30050
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
30051
 
30052
  /***/ },
30053
+ /* 469 */
30054
  /***/ function(module, exports, __webpack_require__) {
30055
 
30056
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(470);
30057
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
30058
 
30059
  /***/ },
30060
+ /* 470 */
30061
  /***/ function(module, exports, __webpack_require__) {
30062
 
30063
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
31984
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
31985
 
31986
  /***/ },
31987
+ /* 471 */
31988
  /***/ function(module, exports, __webpack_require__) {
31989
 
31990
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
31991
+ __webpack_require__(469),
31992
  __webpack_require__(281),
31993
  __webpack_require__(276),
31994
  __webpack_require__(277),
 
31995
  __webpack_require__(472),
31996
  __webpack_require__(473),
31997
+ __webpack_require__(474),
31998
  __webpack_require__(300),
31999
  __webpack_require__(290)
32000
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
32310
  // is the email in 'mailto:email' format?
32311
  email = test[1].trim();
32312
  }
32313
+ // test for valid characters using WP's rule (https://core.trac.wordpress.org/browser/tags/4.7.3/src/wp-includes/formatting.php#L2902)
32314
+ if (!/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-@]+$/.test(email) ) {
32315
+ return false;
32316
+ }
32317
  return email;
32318
  };
32319
 
33102
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
33103
 
33104
  /***/ },
33105
+ /* 472 */,
33106
+ /* 473 */
33107
  /***/ function(module, exports) {
33108
 
33109
  /*!
33114
  !function(e){"use strict";function t(t,r){if(r=r||{},r.worker&&w.WORKERS_SUPPORTED){var n=h();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==w.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(f=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=f)}for(var o=0;o<t.length;o++){for(var h=n?e.length:t[o].length,d=0;h>d;d++){d>0&&(r+=u);var c=n&&i?e[d]:d;r+=s(t[o][c],d)}o<t.length-1&&(r+=f)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,w.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",f="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){var r=this._partialLine+t;this._partialLine="";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var i=n.meta.cursor;this._finished||(this._partialLine=r.substring(i-this._baseIndex),this._baseIndex=i),n&&n.data&&(this._rowCount+=n.data.length);var s=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(k)e.postMessage({results:n,workerId:w.WORKER_ID,finished:s});else if(m(this._config.chunk)){if(this._config.chunk(n,this._handle),this._paused)return;n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),!s||!m(this._config.complete)||n&&n.meta.aborted||this._config.complete(this._completeResults),s||n&&n.meta.paused||this._nextChunk(),n}},this._sendError=function(t){m(this._config.error)?this._config.error(t):k&&this._config.error&&e.postMessage({workerId:w.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=w.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=w.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&c&&(f("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+w.DefaultDelimiter+"'"),c=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i?!0:"false"==i||"FALSE"==i?!1:o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?f("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&f("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[","," ","|",";",w.RECORD_SEP,w.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],f=0,h=0;i=void 0;for(var d=new u({delimiter:o,preview:10}).parse(t),c=0;c<d.data.length;c++){var l=d.data[c].length;h+=l,"undefined"!=typeof i?l>1&&(f+=Math.abs(l-i),i=l):i=l}h/=d.data.length,("undefined"==typeof n||n>f)&&h>1.99&&(n=f,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function f(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var h,d,c,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?d.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),c=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(c=!0,e.delimiter=w.DefaultDelimiter),b.meta.delimiter=e.delimiter}var f=_(e);return e.preview&&e.header&&f.preview++,h=r,d=new u(f),b=d.parse(h,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,d.abort(),h=h.substr(d.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(h)},this.aborted=function(){return k},this.abort=function(){k=!0,d.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),h=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||w.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||w.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,f,h){function d(e){b.push(e),S=o}function c(t){return h?p():(t||(t=e.substr(o)),w.push(t),o=g,d(w),y&&_(),p())}function l(t){o=t,d(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(f||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var E=e.split(r),C=0;C<E.length;C++){var w=E[C];if(o+=w.length,C!==E.length-1)o+=r.length;else if(h)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],d(w.split(t)),_(),u)return p()}else d(w.split(t));if(s&&C>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return h||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),c();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return c(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return c()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function f(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function h(){if(!w.WORKERS_SUPPORTED)return!1;if(!y&&null===w.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=new e.Worker(w.SCRIPT_PATH||v);return t.onmessage=d,t.id=R++,b[t.id]=t,t}function d(e){var t=e.data,r=b[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,c(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&c(t.workerId,t.results)}function c(e,t){var r=b[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete b[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof w.WORKER_ID&&r&&(w.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:w.WORKER_ID,results:w.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=w.parse(r.input,r.config);n&&e.postMessage({workerId:w.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=!1,b={},R=0,w={};if(w.parse=t,w.unparse=r,w.RECORD_SEP=String.fromCharCode(30),w.UNIT_SEP=String.fromCharCode(31),w.BYTE_ORDER_MARK="",w.BAD_DELIMITERS=["\r","\n",'"',w.BYTE_ORDER_MARK],w.WORKERS_SUPPORTED=!!e.Worker,w.SCRIPT_PATH=null,w.LocalChunkSize=10485760,w.RemoteChunkSize=5242880,w.DefaultDelimiter=",",w.Parser=u,w.ParserHandle=o,w.NetworkStreamer=i,w.FileStreamer=s,w.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=w:m(e.define)&&e.define.amd?e.define(function(){return w}):e.Papa=w,e.jQuery){var S=e.jQuery;S.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=S.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},w.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==S(this).prop("tagName").toUpperCase()&&"file"==S(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:S.extend({},s)})}),r(),this}}k?e.onmessage=p:w.WORKERS_SUPPORTED&&(v=f(),document.body?document.addEventListener("DOMContentLoaded",function(){y=!0},!0):y=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);
33115
 
33116
  /***/ },
33117
+ /* 474 */
33118
  /***/ function(module, exports) {
33119
 
33120
  /*
33199
 
33200
 
33201
  /***/ },
33202
+ /* 475 */
33203
  /***/ function(module, exports, __webpack_require__) {
33204
 
33205
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33206
  __webpack_require__(281),
33207
  __webpack_require__(276),
33208
  __webpack_require__(277),
33209
+ __webpack_require__(472),
33210
  __webpack_require__(290)
33211
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
33212
  _,
33373
 
33374
 
33375
  /***/ },
33376
+ /* 476 */
33377
  /***/ function(module, exports, __webpack_require__) {
33378
 
33379
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
assets/js/admin_vendor.js CHANGED
@@ -7,7 +7,9 @@ webpackJsonp([1],[
7
  __webpack_require__(181);
8
  __webpack_require__(418);
9
  __webpack_require__(279);
10
- module.exports = __webpack_require__(443);
 
 
11
 
12
 
13
  /***/ },
@@ -28635,6 +28637,13 @@ webpackJsonp([1],[
28635
 
28636
  render: function render() {
28637
  if (this.props.items.length === 0) {
 
 
 
 
 
 
 
28638
  return _react2['default'].createElement(
28639
  'tbody',
28640
  null,
@@ -28646,7 +28655,7 @@ webpackJsonp([1],[
28646
  {
28647
  colSpan: this.props.columns.length + (this.props.is_selectable ? 1 : 0),
28648
  className: 'colspanchange' },
28649
- this.props.loading === true ? this.props.messages.onLoadingItems || _mailpoet2['default'].I18n.t('loadingItems') : this.props.messages.onNoItemsFound || _mailpoet2['default'].I18n.t('noItemsFound')
28650
  )
28651
  )
28652
  );
@@ -31535,9 +31544,138 @@ webpackJsonp([1],[
31535
  /* 291 */,
31536
  /* 292 */,
31537
  /* 293 */,
31538
- /* 294 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31539
  /* 295 */,
31540
- /* 296 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31541
  /* 297 */,
31542
  /* 298 */,
31543
  /* 299 */,
@@ -32509,32 +32647,383 @@ webpackJsonp([1],[
32509
  /* 425 */,
32510
  /* 426 */,
32511
  /* 427 */,
32512
- /* 428 */,
32513
- /* 429 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32514
  /* 430 */,
32515
  /* 431 */,
32516
  /* 432 */,
32517
  /* 433 */,
32518
  /* 434 */,
32519
- /* 435 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32520
  /* 436 */,
32521
- /* 437 */,
32522
- /* 438 */,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32523
  /* 439 */,
32524
  /* 440 */,
32525
  /* 441 */,
32526
  /* 442 */,
32527
- /* 443 */
 
32528
  /***/ function(module, exports, __webpack_require__) {
32529
 
32530
  /* WEBPACK VAR INJECTION */(function(global) {"use strict";
32531
 
32532
  if (!global["MailPoetLib"]) global["MailPoetLib"] = {};
32533
- module.exports = global["MailPoetLib"]["StatsBadge"] = __webpack_require__(444);
32534
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
32535
 
32536
  /***/ },
32537
- /* 444 */
32538
  /***/ function(module, exports, __webpack_require__) {
32539
 
32540
  'use strict';
@@ -32561,7 +33050,7 @@ webpackJsonp([1],[
32561
 
32562
  var _react2 = _interopRequireDefault(_react);
32563
 
32564
- var _badgeJsx = __webpack_require__(445);
32565
 
32566
  var _badgeJsx2 = _interopRequireDefault(_badgeJsx);
32567
 
@@ -32582,7 +33071,7 @@ webpackJsonp([1],[
32582
 
32583
  var stats = {
32584
  opened: {
32585
- badgeRanges: [30, 15, 0],
32586
  badgeTypes: ['excellent', 'good', 'bad'],
32587
  tooltipText: _mailpoet2['default'].I18n.t('openedStatTooltip')
32588
  },
@@ -32673,7 +33162,7 @@ webpackJsonp([1],[
32673
  module.exports = exports['default'];
32674
 
32675
  /***/ },
32676
- /* 445 */
32677
  /***/ function(module, exports, __webpack_require__) {
32678
 
32679
  'use strict';
@@ -32700,7 +33189,7 @@ webpackJsonp([1],[
32700
 
32701
  var _classnames2 = _interopRequireDefault(_classnames);
32702
 
32703
- var _reactTooltip = __webpack_require__(446);
32704
 
32705
  var _reactTooltip2 = _interopRequireDefault(_reactTooltip);
32706
 
@@ -32750,7 +33239,7 @@ webpackJsonp([1],[
32750
  module.exports = exports['default'];
32751
 
32752
  /***/ },
32753
- /* 446 */
32754
  /***/ function(module, exports, __webpack_require__) {
32755
 
32756
  'use strict';
@@ -32786,45 +33275,45 @@ webpackJsonp([1],[
32786
 
32787
  var _classnames2 = _interopRequireDefault(_classnames);
32788
 
32789
- var _staticMethods = __webpack_require__(447);
32790
 
32791
  var _staticMethods2 = _interopRequireDefault(_staticMethods);
32792
 
32793
- var _windowListener = __webpack_require__(449);
32794
 
32795
  var _windowListener2 = _interopRequireDefault(_windowListener);
32796
 
32797
- var _customEvent = __webpack_require__(450);
32798
 
32799
  var _customEvent2 = _interopRequireDefault(_customEvent);
32800
 
32801
- var _isCapture = __webpack_require__(451);
32802
 
32803
  var _isCapture2 = _interopRequireDefault(_isCapture);
32804
 
32805
- var _getEffect = __webpack_require__(452);
32806
 
32807
  var _getEffect2 = _interopRequireDefault(_getEffect);
32808
 
32809
- var _trackRemoval = __webpack_require__(453);
32810
 
32811
  var _trackRemoval2 = _interopRequireDefault(_trackRemoval);
32812
 
32813
- var _getPosition = __webpack_require__(454);
32814
 
32815
  var _getPosition2 = _interopRequireDefault(_getPosition);
32816
 
32817
- var _getTipContent = __webpack_require__(455);
32818
 
32819
  var _getTipContent2 = _interopRequireDefault(_getTipContent);
32820
 
32821
- var _aria = __webpack_require__(456);
32822
 
32823
- var _nodeListToArray = __webpack_require__(457);
32824
 
32825
  var _nodeListToArray2 = _interopRequireDefault(_nodeListToArray);
32826
 
32827
- var _style = __webpack_require__(458);
32828
 
32829
  var _style2 = _interopRequireDefault(_style);
32830
 
@@ -33351,7 +33840,7 @@ webpackJsonp([1],[
33351
  module.exports = ReactTooltip;
33352
 
33353
  /***/ },
33354
- /* 447 */
33355
  /***/ function(module, exports, __webpack_require__) {
33356
 
33357
  'use strict';
@@ -33409,7 +33898,7 @@ webpackJsonp([1],[
33409
  };
33410
  };
33411
 
33412
- var _constant = __webpack_require__(448);
33413
 
33414
  var _constant2 = _interopRequireDefault(_constant);
33415
 
@@ -33434,7 +33923,7 @@ webpackJsonp([1],[
33434
  */
33435
 
33436
  /***/ },
33437
- /* 448 */
33438
  /***/ function(module, exports) {
33439
 
33440
  'use strict';
@@ -33452,7 +33941,7 @@ webpackJsonp([1],[
33452
  };
33453
 
33454
  /***/ },
33455
- /* 449 */
33456
  /***/ function(module, exports, __webpack_require__) {
33457
 
33458
  'use strict';
@@ -33498,14 +33987,14 @@ webpackJsonp([1],[
33498
  };
33499
  };
33500
 
33501
- var _constant = __webpack_require__(448);
33502
 
33503
  var _constant2 = _interopRequireDefault(_constant);
33504
 
33505
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33506
 
33507
  /***/ },
33508
- /* 450 */
33509
  /***/ function(module, exports) {
33510
 
33511
  'use strict';
@@ -33598,7 +34087,7 @@ webpackJsonp([1],[
33598
  var customListener = void 0;
33599
 
33600
  /***/ },
33601
- /* 451 */
33602
  /***/ function(module, exports) {
33603
 
33604
  'use strict';
@@ -33615,7 +34104,7 @@ webpackJsonp([1],[
33615
  };
33616
 
33617
  /***/ },
33618
- /* 452 */
33619
  /***/ function(module, exports) {
33620
 
33621
  'use strict';
@@ -33632,7 +34121,7 @@ webpackJsonp([1],[
33632
  };
33633
 
33634
  /***/ },
33635
- /* 453 */
33636
  /***/ function(module, exports) {
33637
 
33638
  "use strict";
@@ -33728,7 +34217,7 @@ webpackJsonp([1],[
33728
  };
33729
 
33730
  /***/ },
33731
- /* 454 */
33732
  /***/ function(module, exports) {
33733
 
33734
  'use strict';
@@ -34040,7 +34529,7 @@ webpackJsonp([1],[
34040
  };
34041
 
34042
  /***/ },
34043
- /* 455 */
34044
  /***/ function(module, exports, __webpack_require__) {
34045
 
34046
  'use strict';
@@ -34077,7 +34566,7 @@ webpackJsonp([1],[
34077
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34078
 
34079
  /***/ },
34080
- /* 456 */
34081
  /***/ function(module, exports) {
34082
 
34083
  "use strict";
@@ -34106,7 +34595,7 @@ webpackJsonp([1],[
34106
  }
34107
 
34108
  /***/ },
34109
- /* 457 */
34110
  /***/ function(module, exports) {
34111
 
34112
  "use strict";
@@ -34126,7 +34615,7 @@ webpackJsonp([1],[
34126
  };
34127
 
34128
  /***/ },
34129
- /* 458 */
34130
  /***/ function(module, exports) {
34131
 
34132
  'use strict';
7
  __webpack_require__(181);
8
  __webpack_require__(418);
9
  __webpack_require__(279);
10
+ __webpack_require__(444);
11
+ __webpack_require__(428);
12
+ module.exports = __webpack_require__(437);
13
 
14
 
15
  /***/ },
28637
 
28638
  render: function render() {
28639
  if (this.props.items.length === 0) {
28640
+ var message = undefined;
28641
+ if (this.props.loading === true) {
28642
+ message = this.props.messages.onLoadingItems && this.props.messages.onLoadingItems(this.props.group) || _mailpoet2['default'].I18n.t('loadingItems');
28643
+ } else {
28644
+ message = this.props.messages.onNoItemsFound && this.props.messages.onNoItemsFound(this.props.group) || _mailpoet2['default'].I18n.t('noItemsFound');
28645
+ }
28646
+
28647
  return _react2['default'].createElement(
28648
  'tbody',
28649
  null,
28655
  {
28656
  colSpan: this.props.columns.length + (this.props.is_selectable ? 1 : 0),
28657
  className: 'colspanchange' },
28658
+ message
28659
  )
28660
  )
28661
  );
31544
  /* 291 */,
31545
  /* 292 */,
31546
  /* 293 */,
31547
+ /* 294 */
31548
+ /***/ function(module, exports, __webpack_require__) {
31549
+
31550
+ 'use strict';
31551
+
31552
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
31553
+
31554
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
31555
+
31556
+ var _react = __webpack_require__(2);
31557
+
31558
+ var _react2 = _interopRequireDefault(_react);
31559
+
31560
+ var FormFieldText = _react2['default'].createClass({
31561
+ displayName: 'FormFieldText',
31562
+
31563
+ render: function render() {
31564
+ var value = this.props.item[this.props.field.name];
31565
+ if (value === undefined) {
31566
+ value = this.props.field.defaultValue || '';
31567
+ }
31568
+
31569
+ return _react2['default'].createElement('input', _extends({
31570
+ type: 'text',
31571
+ disabled: this.props.field['disabled'] !== undefined ? this.props.field.disabled(this.props.item) : false,
31572
+ className: this.props.field.size ? '' : 'regular-text',
31573
+ size: this.props.field.size !== 'auto' && this.props.field.size > 0 ? this.props.field.size : false,
31574
+ name: this.props.field.name,
31575
+ id: 'field_' + this.props.field.name,
31576
+ value: value,
31577
+ placeholder: this.props.field.placeholder,
31578
+ onChange: this.props.onValueChange
31579
+ }, this.props.field.validation));
31580
+ }
31581
+ });
31582
+
31583
+ module.exports = FormFieldText;
31584
+
31585
+ /***/ },
31586
  /* 295 */,
31587
+ /* 296 */
31588
+ /***/ function(module, exports, __webpack_require__) {
31589
+
31590
+ 'use strict';
31591
+
31592
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
31593
+
31594
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
31595
+
31596
+ var _react = __webpack_require__(2);
31597
+
31598
+ var _react2 = _interopRequireDefault(_react);
31599
+
31600
+ var _underscore = __webpack_require__(281);
31601
+
31602
+ var _underscore2 = _interopRequireDefault(_underscore);
31603
+
31604
+ var FormFieldSelect = _react2['default'].createClass({
31605
+ displayName: 'FormFieldSelect',
31606
+
31607
+ render: function render() {
31608
+ var _this = this;
31609
+
31610
+ if (this.props.field.values === undefined) {
31611
+ return false;
31612
+ }
31613
+
31614
+ var filter = false;
31615
+ var placeholder = false;
31616
+ var sortBy = false;
31617
+
31618
+ if (this.props.field.placeholder !== undefined) {
31619
+ placeholder = _react2['default'].createElement(
31620
+ 'option',
31621
+ { value: '' },
31622
+ this.props.field.placeholder
31623
+ );
31624
+ }
31625
+
31626
+ if (this.props.field['filter'] !== undefined) {
31627
+ filter = this.props.field.filter;
31628
+ }
31629
+
31630
+ if (_underscore2['default'].isFunction(this.props.field.sortBy)) {
31631
+ sortBy = this.props.field.sortBy;
31632
+ }
31633
+
31634
+ var keys = undefined;
31635
+ if (sortBy) {
31636
+ // Extract keys from sorted [key, value] select value pairs, sorted by
31637
+ // provided sorting order.
31638
+ keys = _underscore2['default'].map(_underscore2['default'].sortBy(_underscore2['default'].pairs(this.props.field.values), function (item) {
31639
+ return sortBy(item[0], item[1]);
31640
+ }), function (item) {
31641
+ return item[0];
31642
+ });
31643
+ } else {
31644
+ keys = Object.keys(this.props.field.values);
31645
+ }
31646
+
31647
+ var options = keys.map(function (value, index) {
31648
+
31649
+ if (filter !== false && filter(_this.props.item, value) === false) {
31650
+ return;
31651
+ }
31652
+
31653
+ return _react2['default'].createElement(
31654
+ 'option',
31655
+ {
31656
+ key: 'option-' + index,
31657
+ value: value },
31658
+ _this.props.field.values[value]
31659
+ );
31660
+ });
31661
+
31662
+ return _react2['default'].createElement(
31663
+ 'select',
31664
+ _extends({
31665
+ name: this.props.field.name,
31666
+ id: 'field_' + this.props.field.name,
31667
+ value: this.props.item[this.props.field.name],
31668
+ onChange: this.props.onValueChange
31669
+ }, this.props.field.validation),
31670
+ placeholder,
31671
+ options
31672
+ );
31673
+ }
31674
+ });
31675
+
31676
+ module.exports = FormFieldSelect;
31677
+
31678
+ /***/ },
31679
  /* 297 */,
31680
  /* 298 */,
31681
  /* 299 */,
32647
  /* 425 */,
32648
  /* 426 */,
32649
  /* 427 */,
32650
+ /* 428 */
32651
+ /***/ function(module, exports, __webpack_require__) {
32652
+
32653
+ /* WEBPACK VAR INJECTION */(function(global) {"use strict";
32654
+
32655
+ if (!global["MailPoetLib"]) global["MailPoetLib"] = {};
32656
+ module.exports = global["MailPoetLib"]["NewsletterCreationBreadcrumb"] = __webpack_require__(429);
32657
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
32658
+
32659
+ /***/ },
32660
+ /* 429 */
32661
+ /***/ function(module, exports, __webpack_require__) {
32662
+
32663
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32664
+
32665
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(181), __webpack_require__(278), __webpack_require__(277)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, classNames, MailPoet) {
32666
+ var Link = Router.Link;
32667
+
32668
+ var Breadcrumb = React.createClass({
32669
+ displayName: 'Breadcrumb',
32670
+
32671
+ getInitialState: function getInitialState() {
32672
+ return {
32673
+ step: null,
32674
+ steps: [{
32675
+ name: 'type',
32676
+ label: MailPoet.I18n.t('selectType'),
32677
+ link: '/new'
32678
+ }, {
32679
+ name: 'template',
32680
+ label: MailPoet.I18n.t('template')
32681
+ }, {
32682
+ name: 'editor',
32683
+ label: MailPoet.I18n.t('designer')
32684
+ }, {
32685
+ name: 'send',
32686
+ label: MailPoet.I18n.t('send')
32687
+ }]
32688
+ };
32689
+ },
32690
+ render: function render() {
32691
+ var steps = this.state.steps.map((function (step, index) {
32692
+ var stepClasses = classNames({ 'mailpoet_current': this.props.step === step.name });
32693
+
32694
+ var label = step.label;
32695
+
32696
+ if (step['link'] !== undefined && this.props.step !== step.name) {
32697
+ label = React.createElement(
32698
+ Link,
32699
+ { to: step.link },
32700
+ step.label
32701
+ );
32702
+ }
32703
+
32704
+ return React.createElement(
32705
+ 'span',
32706
+ { key: 'step-' + index },
32707
+ React.createElement(
32708
+ 'span',
32709
+ { className: stepClasses },
32710
+ label
32711
+ ),
32712
+ index < this.state.steps.length - 1 ? ' > ' : ''
32713
+ );
32714
+ }).bind(this));
32715
+
32716
+ return React.createElement(
32717
+ 'p',
32718
+ { className: 'mailpoet_breadcrumb' },
32719
+ steps
32720
+ );
32721
+ }
32722
+ });
32723
+
32724
+ return Breadcrumb;
32725
+ }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32726
+
32727
+ /***/ },
32728
  /* 430 */,
32729
  /* 431 */,
32730
  /* 432 */,
32731
  /* 433 */,
32732
  /* 434 */,
32733
+ /* 435 */
32734
+ /***/ function(module, exports, __webpack_require__) {
32735
+
32736
+ 'use strict';
32737
+
32738
+ Object.defineProperty(exports, '__esModule', {
32739
+ value: true
32740
+ });
32741
+
32742
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
32743
+
32744
+ var _underscore = __webpack_require__(281);
32745
+
32746
+ var _underscore2 = _interopRequireDefault(_underscore);
32747
+
32748
+ var _mailpoet = __webpack_require__(277);
32749
+
32750
+ var _mailpoet2 = _interopRequireDefault(_mailpoet);
32751
+
32752
+ var timeFormat = window.mailpoet_time_format || 'H:i';
32753
+
32754
+ // welcome emails
32755
+ var _timeDelayValues = {
32756
+ 'immediate': _mailpoet2['default'].I18n.t('delayImmediately'),
32757
+ 'hours': _mailpoet2['default'].I18n.t('delayHoursAfter'),
32758
+ 'days': _mailpoet2['default'].I18n.t('delayDaysAfter'),
32759
+ 'weeks': _mailpoet2['default'].I18n.t('delayWeeksAfter')
32760
+ };
32761
+
32762
+ var _intervalValues = {
32763
+ 'daily': _mailpoet2['default'].I18n.t('daily'),
32764
+ 'weekly': _mailpoet2['default'].I18n.t('weekly'),
32765
+ 'monthly': _mailpoet2['default'].I18n.t('monthly'),
32766
+ 'nthWeekDay': _mailpoet2['default'].I18n.t('monthlyEvery'),
32767
+ 'immediately': _mailpoet2['default'].I18n.t('immediately')
32768
+ };
32769
+
32770
+ // notification emails
32771
+ var SECONDS_IN_DAY = 86400;
32772
+ var TIME_STEP_SECONDS = 3600;
32773
+ var numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
32774
+
32775
+ var _timeOfDayValues = _underscore2['default'].object(_underscore2['default'].map(_underscore2['default'].times(numberOfTimeSteps, function (step) {
32776
+ return step * TIME_STEP_SECONDS;
32777
+ }), function (seconds) {
32778
+ var date = new Date(null);
32779
+ date.setSeconds(seconds);
32780
+ var timeLabel = _mailpoet2['default'].Date.format(date, { format: timeFormat, offset: 0 });
32781
+ return [seconds, timeLabel];
32782
+ }));
32783
+
32784
+ var _weekDayValues = {
32785
+ 0: _mailpoet2['default'].I18n.t('sunday'),
32786
+ 1: _mailpoet2['default'].I18n.t('monday'),
32787
+ 2: _mailpoet2['default'].I18n.t('tuesday'),
32788
+ 3: _mailpoet2['default'].I18n.t('wednesday'),
32789
+ 4: _mailpoet2['default'].I18n.t('thursday'),
32790
+ 5: _mailpoet2['default'].I18n.t('friday'),
32791
+ 6: _mailpoet2['default'].I18n.t('saturday')
32792
+ };
32793
+
32794
+ var NUMBER_OF_DAYS_IN_MONTH = 28;
32795
+ var _monthDayValues = _underscore2['default'].object(_underscore2['default'].map(_underscore2['default'].times(NUMBER_OF_DAYS_IN_MONTH, function (day) {
32796
+ return day;
32797
+ }), function (day) {
32798
+ var labels = {
32799
+ 0: _mailpoet2['default'].I18n.t('first'),
32800
+ 1: _mailpoet2['default'].I18n.t('second'),
32801
+ 2: _mailpoet2['default'].I18n.t('third')
32802
+ };
32803
+ var label = undefined;
32804
+ if (labels[day] !== undefined) {
32805
+ label = labels[day];
32806
+ } else {
32807
+ label = _mailpoet2['default'].I18n.t('nth').replace("%$1d", day + 1);
32808
+ }
32809
+ return [day + 1, label];
32810
+ }));
32811
+
32812
+ var _nthWeekDayValues = {
32813
+ '1': _mailpoet2['default'].I18n.t('first'),
32814
+ '2': _mailpoet2['default'].I18n.t('second'),
32815
+ '3': _mailpoet2['default'].I18n.t('third'),
32816
+ 'L': _mailpoet2['default'].I18n.t('last')
32817
+ };
32818
+
32819
+ exports.timeDelayValues = _timeDelayValues;
32820
+ exports.intervalValues = _intervalValues;
32821
+ exports.timeOfDayValues = _timeOfDayValues;
32822
+ exports.weekDayValues = _weekDayValues;
32823
+ exports.monthDayValues = _monthDayValues;
32824
+ exports.nthWeekDayValues = _nthWeekDayValues;
32825
+
32826
+ /***/ },
32827
  /* 436 */,
32828
+ /* 437 */
32829
+ /***/ function(module, exports, __webpack_require__) {
32830
+
32831
+ /* WEBPACK VAR INJECTION */(function(global) {"use strict";
32832
+
32833
+ if (!global["MailPoetLib"]) global["MailPoetLib"] = {};
32834
+ module.exports = global["MailPoetLib"]["NewsletterWelcomeNotificationScheduling"] = __webpack_require__(438);
32835
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
32836
+
32837
+ /***/ },
32838
+ /* 438 */
32839
+ /***/ function(module, exports, __webpack_require__) {
32840
+
32841
+ 'use strict';
32842
+
32843
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
32844
+
32845
+ var _underscore = __webpack_require__(281);
32846
+
32847
+ var _underscore2 = _interopRequireDefault(_underscore);
32848
+
32849
+ var _react = __webpack_require__(2);
32850
+
32851
+ var _react2 = _interopRequireDefault(_react);
32852
+
32853
+ var _mailpoet = __webpack_require__(277);
32854
+
32855
+ var _mailpoet2 = _interopRequireDefault(_mailpoet);
32856
+
32857
+ var _formFieldsSelectJsx = __webpack_require__(296);
32858
+
32859
+ var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
32860
+
32861
+ var _formFieldsTextJsx = __webpack_require__(294);
32862
+
32863
+ var _formFieldsTextJsx2 = _interopRequireDefault(_formFieldsTextJsx);
32864
+
32865
+ var _newslettersSchedulingCommonJsx = __webpack_require__(435);
32866
+
32867
+ var availableRoles = window.mailpoet_roles || {};
32868
+ var availableSegments = _underscore2['default'].filter(window.mailpoet_segments || [], function (segment) {
32869
+ return segment.type === 'default';
32870
+ });
32871
+
32872
+ var events = {
32873
+ name: 'event',
32874
+ values: {
32875
+ 'segment': _mailpoet2['default'].I18n.t('onSubscriptionToList'),
32876
+ 'user': _mailpoet2['default'].I18n.t('onWPUserRegistration')
32877
+ }
32878
+ };
32879
+
32880
+ var availableSegmentValues = _underscore2['default'].object(_underscore2['default'].map(availableSegments, function (segment) {
32881
+ var name = segment.name + ' (' + parseInt(segment.subscribers).toLocaleString() + ')';
32882
+ return [segment.id, name];
32883
+ }));
32884
+ var segmentField = {
32885
+ name: 'segment',
32886
+ values: availableSegmentValues,
32887
+ sortBy: function sortBy(key, value) {
32888
+ return value.toLowerCase();
32889
+ }
32890
+ };
32891
+
32892
+ var roleField = {
32893
+ name: 'role',
32894
+ values: availableRoles
32895
+ };
32896
+
32897
+ var afterTimeNumberField = {
32898
+ name: 'afterTimeNumber',
32899
+ size: 3
32900
+ };
32901
+
32902
+ var afterTimeTypeField = {
32903
+ name: 'afterTimeType',
32904
+ values: _newslettersSchedulingCommonJsx.timeDelayValues
32905
+ };
32906
+
32907
+ var WelcomeScheduling = _react2['default'].createClass({
32908
+ displayName: 'WelcomeScheduling',
32909
+
32910
+ contextTypes: {
32911
+ router: _react2['default'].PropTypes.object.isRequired
32912
+ },
32913
+ _getCurrentValue: function _getCurrentValue() {
32914
+ return this.props.item[this.props.field.name] || {};
32915
+ },
32916
+ handleValueChange: function handleValueChange(name, value) {
32917
+ var oldValue = this._getCurrentValue();
32918
+ var newValue = {};
32919
+
32920
+ newValue[name] = value;
32921
+
32922
+ return this.props.onValueChange({
32923
+ target: {
32924
+ name: this.props.field.name,
32925
+ value: _underscore2['default'].extend({}, oldValue, newValue)
32926
+ }
32927
+ });
32928
+ },
32929
+ handleEventChange: function handleEventChange(event) {
32930
+ return this.handleValueChange('event', event.target.value);
32931
+ },
32932
+ handleSegmentChange: function handleSegmentChange(event) {
32933
+ return this.handleValueChange('segment', event.target.value);
32934
+ },
32935
+ handleRoleChange: function handleRoleChange(event) {
32936
+ return this.handleValueChange('role', event.target.value);
32937
+ },
32938
+ handleAfterTimeNumberChange: function handleAfterTimeNumberChange(event) {
32939
+ return this.handleValueChange('afterTimeNumber', event.target.value);
32940
+ },
32941
+ handleAfterTimeTypeChange: function handleAfterTimeTypeChange(event) {
32942
+ return this.handleValueChange('afterTimeType', event.target.value);
32943
+ },
32944
+ handleNext: function handleNext() {
32945
+ var _this = this;
32946
+
32947
+ _mailpoet2['default'].Ajax.post({
32948
+ api_version: window.mailpoet_api_version,
32949
+ endpoint: 'newsletters',
32950
+ action: 'create',
32951
+ data: {
32952
+ type: 'welcome',
32953
+ options: this.state
32954
+ }
32955
+ }).done(function (response) {
32956
+ _this.showTemplateSelection(response.data.id);
32957
+ }).fail(function (response) {
32958
+ if (response.errors.length > 0) {
32959
+ _mailpoet2['default'].Notice.error(response.errors.map(function (error) {
32960
+ return error.message;
32961
+ }), { scroll: true });
32962
+ }
32963
+ });
32964
+ },
32965
+ showTemplateSelection: function showTemplateSelection(newsletterId) {
32966
+ this.context.router.push('/template/' + newsletterId);
32967
+ },
32968
+ render: function render() {
32969
+ var value = this._getCurrentValue();
32970
+ var roleSegmentSelection = undefined;
32971
+ var timeNumber = undefined;
32972
+
32973
+ if (value.event === 'user') {
32974
+ roleSegmentSelection = _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
32975
+ field: roleField,
32976
+ item: this._getCurrentValue(),
32977
+ onValueChange: this.handleRoleChange });
32978
+ } else {
32979
+ roleSegmentSelection = _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
32980
+ field: segmentField,
32981
+ item: this._getCurrentValue(),
32982
+ onValueChange: this.handleSegmentChange });
32983
+ }
32984
+ if (value.afterTimeType !== 'immediate') {
32985
+ timeNumber = _react2['default'].createElement(_formFieldsTextJsx2['default'], {
32986
+ field: afterTimeNumberField,
32987
+ item: this._getCurrentValue(),
32988
+ onValueChange: this.handleAfterTimeNumberChange });
32989
+ }
32990
+
32991
+ return _react2['default'].createElement(
32992
+ 'div',
32993
+ null,
32994
+ _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
32995
+ field: events,
32996
+ item: this._getCurrentValue(),
32997
+ onValueChange: this.handleEventChange }),
32998
+ roleSegmentSelection,
32999
+ timeNumber,
33000
+ _react2['default'].createElement(_formFieldsSelectJsx2['default'], {
33001
+ field: afterTimeTypeField,
33002
+ item: this._getCurrentValue(),
33003
+ onValueChange: this.handleAfterTimeTypeChange })
33004
+ );
33005
+ }
33006
+ });
33007
+
33008
+ module.exports = WelcomeScheduling;
33009
+
33010
+ /***/ },
33011
  /* 439 */,
33012
  /* 440 */,
33013
  /* 441 */,
33014
  /* 442 */,
33015
+ /* 443 */,
33016
+ /* 444 */
33017
  /***/ function(module, exports, __webpack_require__) {
33018
 
33019
  /* WEBPACK VAR INJECTION */(function(global) {"use strict";
33020
 
33021
  if (!global["MailPoetLib"]) global["MailPoetLib"] = {};
33022
+ module.exports = global["MailPoetLib"]["StatsBadge"] = __webpack_require__(445);
33023
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
33024
 
33025
  /***/ },
33026
+ /* 445 */
33027
  /***/ function(module, exports, __webpack_require__) {
33028
 
33029
  'use strict';
33050
 
33051
  var _react2 = _interopRequireDefault(_react);
33052
 
33053
+ var _badgeJsx = __webpack_require__(446);
33054
 
33055
  var _badgeJsx2 = _interopRequireDefault(_badgeJsx);
33056
 
33071
 
33072
  var stats = {
33073
  opened: {
33074
+ badgeRanges: [30, 10, 0],
33075
  badgeTypes: ['excellent', 'good', 'bad'],
33076
  tooltipText: _mailpoet2['default'].I18n.t('openedStatTooltip')
33077
  },
33162
  module.exports = exports['default'];
33163
 
33164
  /***/ },
33165
+ /* 446 */
33166
  /***/ function(module, exports, __webpack_require__) {
33167
 
33168
  'use strict';
33189
 
33190
  var _classnames2 = _interopRequireDefault(_classnames);
33191
 
33192
+ var _reactTooltip = __webpack_require__(447);
33193
 
33194
  var _reactTooltip2 = _interopRequireDefault(_reactTooltip);
33195
 
33239
  module.exports = exports['default'];
33240
 
33241
  /***/ },
33242
+ /* 447 */
33243
  /***/ function(module, exports, __webpack_require__) {
33244
 
33245
  'use strict';
33275
 
33276
  var _classnames2 = _interopRequireDefault(_classnames);
33277
 
33278
+ var _staticMethods = __webpack_require__(448);
33279
 
33280
  var _staticMethods2 = _interopRequireDefault(_staticMethods);
33281
 
33282
+ var _windowListener = __webpack_require__(450);
33283
 
33284
  var _windowListener2 = _interopRequireDefault(_windowListener);
33285
 
33286
+ var _customEvent = __webpack_require__(451);
33287
 
33288
  var _customEvent2 = _interopRequireDefault(_customEvent);
33289
 
33290
+ var _isCapture = __webpack_require__(452);
33291
 
33292
  var _isCapture2 = _interopRequireDefault(_isCapture);
33293
 
33294
+ var _getEffect = __webpack_require__(453);
33295
 
33296
  var _getEffect2 = _interopRequireDefault(_getEffect);
33297
 
33298
+ var _trackRemoval = __webpack_require__(454);
33299
 
33300
  var _trackRemoval2 = _interopRequireDefault(_trackRemoval);
33301
 
33302
+ var _getPosition = __webpack_require__(455);
33303
 
33304
  var _getPosition2 = _interopRequireDefault(_getPosition);
33305
 
33306
+ var _getTipContent = __webpack_require__(456);
33307
 
33308
  var _getTipContent2 = _interopRequireDefault(_getTipContent);
33309
 
33310
+ var _aria = __webpack_require__(457);
33311
 
33312
+ var _nodeListToArray = __webpack_require__(458);
33313
 
33314
  var _nodeListToArray2 = _interopRequireDefault(_nodeListToArray);
33315
 
33316
+ var _style = __webpack_require__(459);
33317
 
33318
  var _style2 = _interopRequireDefault(_style);
33319
 
33840
  module.exports = ReactTooltip;
33841
 
33842
  /***/ },
33843
+ /* 448 */
33844
  /***/ function(module, exports, __webpack_require__) {
33845
 
33846
  'use strict';
33898
  };
33899
  };
33900
 
33901
+ var _constant = __webpack_require__(449);
33902
 
33903
  var _constant2 = _interopRequireDefault(_constant);
33904
 
33923
  */
33924
 
33925
  /***/ },
33926
+ /* 449 */
33927
  /***/ function(module, exports) {
33928
 
33929
  'use strict';
33941
  };
33942
 
33943
  /***/ },
33944
+ /* 450 */
33945
  /***/ function(module, exports, __webpack_require__) {
33946
 
33947
  'use strict';
33987
  };
33988
  };
33989
 
33990
+ var _constant = __webpack_require__(449);
33991
 
33992
  var _constant2 = _interopRequireDefault(_constant);
33993
 
33994
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33995
 
33996
  /***/ },
33997
+ /* 451 */
33998
  /***/ function(module, exports) {
33999
 
34000
  'use strict';
34087
  var customListener = void 0;
34088
 
34089
  /***/ },
34090
+ /* 452 */
34091
  /***/ function(module, exports) {
34092
 
34093
  'use strict';
34104
  };
34105
 
34106
  /***/ },
34107
+ /* 453 */
34108
  /***/ function(module, exports) {
34109
 
34110
  'use strict';
34121
  };
34122
 
34123
  /***/ },
34124
+ /* 454 */
34125
  /***/ function(module, exports) {
34126
 
34127
  "use strict";
34217
  };
34218
 
34219
  /***/ },
34220
+ /* 455 */
34221
  /***/ function(module, exports) {
34222
 
34223
  'use strict';
34529
  };
34530
 
34531
  /***/ },
34532
+ /* 456 */
34533
  /***/ function(module, exports, __webpack_require__) {
34534
 
34535
  'use strict';
34566
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34567
 
34568
  /***/ },
34569
+ /* 457 */
34570
  /***/ function(module, exports) {
34571
 
34572
  "use strict";
34595
  }
34596
 
34597
  /***/ },
34598
+ /* 458 */
34599
  /***/ function(module, exports) {
34600
 
34601
  "use strict";
34615
  };
34616
 
34617
  /***/ },
34618
+ /* 459 */
34619
  /***/ function(module, exports) {
34620
 
34621
  'use strict';
assets/js/form_editor.js CHANGED
@@ -3,22 +3,22 @@ webpackJsonp([2],{
3
  /***/ 0:
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
- __webpack_require__(476);
7
- __webpack_require__(478);
8
- module.exports = __webpack_require__(480);
9
 
10
 
11
  /***/ },
12
 
13
- /***/ 476:
14
  /***/ function(module, exports, __webpack_require__) {
15
 
16
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["WysijaForm"] = __webpack_require__(477);
17
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
18
 
19
  /***/ },
20
 
21
- /***/ 477:
22
  /***/ function(module, exports) {
23
 
24
  /*
@@ -1089,15 +1089,15 @@ webpackJsonp([2],{
1089
 
1090
  /***/ },
1091
 
1092
- /***/ 478:
1093
  /***/ function(module, exports, __webpack_require__) {
1094
 
1095
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["CodeMirror"] = __webpack_require__(479);
1096
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1097
 
1098
  /***/ },
1099
 
1100
- /***/ 479:
1101
  /***/ function(module, exports, __webpack_require__) {
1102
 
1103
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
@@ -10467,7 +10467,7 @@ webpackJsonp([2],{
10467
 
10468
  /***/ },
10469
 
10470
- /***/ 480:
10471
  /***/ function(module, exports, __webpack_require__) {
10472
 
10473
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
@@ -10475,7 +10475,7 @@ webpackJsonp([2],{
10475
 
10476
  (function(mod) {
10477
  if (true) // CommonJS
10478
- mod(__webpack_require__(478));
10479
  else if (typeof define == "function" && define.amd) // AMD
10480
  define(["../../lib/codemirror"], mod);
10481
  else // Plain browser env
3
  /***/ 0:
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
+ __webpack_require__(477);
7
+ __webpack_require__(479);
8
+ module.exports = __webpack_require__(481);
9
 
10
 
11
  /***/ },
12
 
13
+ /***/ 477:
14
  /***/ function(module, exports, __webpack_require__) {
15
 
16
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["WysijaForm"] = __webpack_require__(478);
17
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
18
 
19
  /***/ },
20
 
21
+ /***/ 478:
22
  /***/ function(module, exports) {
23
 
24
  /*
1089
 
1090
  /***/ },
1091
 
1092
+ /***/ 479:
1093
  /***/ function(module, exports, __webpack_require__) {
1094
 
1095
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["CodeMirror"] = __webpack_require__(480);
1096
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1097
 
1098
  /***/ },
1099
 
1100
+ /***/ 480:
1101
  /***/ function(module, exports, __webpack_require__) {
1102
 
1103
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
10467
 
10468
  /***/ },
10469
 
10470
+ /***/ 481:
10471
  /***/ function(module, exports, __webpack_require__) {
10472
 
10473
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
10475
 
10476
  (function(mod) {
10477
  if (true) // CommonJS
10478
+ mod(__webpack_require__(479));
10479
  else if (typeof define == "function" && define.amd) // AMD
10480
  define(["../../lib/codemirror"], mod);
10481
  else // Plain browser env
assets/js/mailpoet.js CHANGED
@@ -3,14 +3,14 @@ webpackJsonp([3],[
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(277);
6
- __webpack_require__(481);
7
  __webpack_require__(482);
8
  __webpack_require__(483);
9
  __webpack_require__(484);
10
  __webpack_require__(485);
11
  __webpack_require__(486);
12
  __webpack_require__(487);
13
- module.exports = __webpack_require__(488);
 
14
 
15
 
16
  /***/ },
@@ -17770,7 +17770,8 @@ webpackJsonp([3],[
17770
  /* 478 */,
17771
  /* 479 */,
17772
  /* 480 */,
17773
- /* 481 */
 
17774
  /***/ function(module, exports, __webpack_require__) {
17775
 
17776
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
@@ -17850,7 +17851,7 @@ webpackJsonp([3],[
17850
 
17851
 
17852
  /***/ },
17853
- /* 482 */
17854
  /***/ function(module, exports, __webpack_require__) {
17855
 
17856
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -18021,7 +18022,7 @@ webpackJsonp([3],[
18021
 
18022
 
18023
  /***/ },
18024
- /* 483 */
18025
  /***/ function(module, exports, __webpack_require__) {
18026
 
18027
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -18049,7 +18050,7 @@ webpackJsonp([3],[
18049
 
18050
 
18051
  /***/ },
18052
- /* 484 */
18053
  /***/ function(module, exports, __webpack_require__) {
18054
 
18055
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -18696,7 +18697,7 @@ webpackJsonp([3],[
18696
 
18697
 
18698
  /***/ },
18699
- /* 485 */
18700
  /***/ function(module, exports, __webpack_require__) {
18701
 
18702
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -18917,7 +18918,7 @@ webpackJsonp([3],[
18917
 
18918
 
18919
  /***/ },
18920
- /* 486 */
18921
  /***/ function(module, exports, __webpack_require__) {
18922
 
18923
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -18943,7 +18944,7 @@ webpackJsonp([3],[
18943
 
18944
 
18945
  /***/ },
18946
- /* 487 */
18947
  /***/ function(module, exports, __webpack_require__) {
18948
 
18949
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -19052,7 +19053,7 @@ webpackJsonp([3],[
19052
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
19053
 
19054
  /***/ },
19055
- /* 488 */
19056
  /***/ function(module, exports, __webpack_require__) {
19057
 
19058
  /* WEBPACK VAR INJECTION */(function(global) {/*!
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(277);
 
6
  __webpack_require__(482);
7
  __webpack_require__(483);
8
  __webpack_require__(484);
9
  __webpack_require__(485);
10
  __webpack_require__(486);
11
  __webpack_require__(487);
12
+ __webpack_require__(488);
13
+ module.exports = __webpack_require__(489);
14
 
15
 
16
  /***/ },
17770
  /* 478 */,
17771
  /* 479 */,
17772
  /* 480 */,
17773
+ /* 481 */,
17774
+ /* 482 */
17775
  /***/ function(module, exports, __webpack_require__) {
17776
 
17777
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
17851
 
17852
 
17853
  /***/ },
17854
+ /* 483 */
17855
  /***/ function(module, exports, __webpack_require__) {
17856
 
17857
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
18022
 
18023
 
18024
  /***/ },
18025
+ /* 484 */
18026
  /***/ function(module, exports, __webpack_require__) {
18027
 
18028
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
18050
 
18051
 
18052
  /***/ },
18053
+ /* 485 */
18054
  /***/ function(module, exports, __webpack_require__) {
18055
 
18056
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
18697
 
18698
 
18699
  /***/ },
18700
+ /* 486 */
18701
  /***/ function(module, exports, __webpack_require__) {
18702
 
18703
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
18918
 
18919
 
18920
  /***/ },
18921
+ /* 487 */
18922
  /***/ function(module, exports, __webpack_require__) {
18923
 
18924
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
18944
 
18945
 
18946
  /***/ },
18947
+ /* 488 */
18948
  /***/ function(module, exports, __webpack_require__) {
18949
 
18950
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
19053
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
19054
 
19055
  /***/ },
19056
+ /* 489 */
19057
  /***/ function(module, exports, __webpack_require__) {
19058
 
19059
  /* WEBPACK VAR INJECTION */(function(global) {/*!
assets/js/newsletter_editor.js CHANGED
@@ -4,27 +4,26 @@ webpackJsonp([4],{
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
  __webpack_require__(281);
7
- __webpack_require__(468);
8
- __webpack_require__(489);
9
- __webpack_require__(491);
10
- __webpack_require__(492);
11
  __webpack_require__(490);
12
- __webpack_require__(290);
13
  __webpack_require__(493);
 
 
14
  __webpack_require__(494);
15
  __webpack_require__(495);
16
  __webpack_require__(496);
17
- __webpack_require__(499);
18
  __webpack_require__(500);
19
  __webpack_require__(501);
20
- __webpack_require__(503);
21
  __webpack_require__(504);
22
  __webpack_require__(505);
23
- __webpack_require__(507);
24
  __webpack_require__(508);
25
  __webpack_require__(509);
26
- __webpack_require__(506);
27
- __webpack_require__(512);
28
  __webpack_require__(513);
29
  __webpack_require__(514);
30
  __webpack_require__(515);
@@ -44,7 +43,8 @@ webpackJsonp([4],{
44
  __webpack_require__(529);
45
  __webpack_require__(530);
46
  __webpack_require__(531);
47
- module.exports = __webpack_require__(532);
 
48
 
49
 
50
  /***/ },
@@ -7367,15 +7367,15 @@ webpackJsonp([4],{
7367
 
7368
  /***/ },
7369
 
7370
- /***/ 468:
7371
  /***/ function(module, exports, __webpack_require__) {
7372
 
7373
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(469);
7374
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
7375
 
7376
  /***/ },
7377
 
7378
- /***/ 469:
7379
  /***/ function(module, exports, __webpack_require__) {
7380
 
7381
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
@@ -9303,7 +9303,7 @@ webpackJsonp([4],{
9303
 
9304
  /***/ },
9305
 
9306
- /***/ 481:
9307
  /***/ function(module, exports, __webpack_require__) {
9308
 
9309
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
@@ -9384,7 +9384,7 @@ webpackJsonp([4],{
9384
 
9385
  /***/ },
9386
 
9387
- /***/ 484:
9388
  /***/ function(module, exports, __webpack_require__) {
9389
 
9390
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -10032,7 +10032,7 @@ webpackJsonp([4],{
10032
 
10033
  /***/ },
10034
 
10035
- /***/ 485:
10036
  /***/ function(module, exports, __webpack_require__) {
10037
 
10038
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -10254,7 +10254,7 @@ webpackJsonp([4],{
10254
 
10255
  /***/ },
10256
 
10257
- /***/ 489:
10258
  /***/ function(module, exports, __webpack_require__) {
10259
 
10260
  // MarionetteJS (Backbone.Marionette)
@@ -10268,7 +10268,7 @@ webpackJsonp([4],{
10268
 
10269
 
10270
  (function (global, factory) {
10271
- true ? module.exports = factory(__webpack_require__(468), __webpack_require__(281), __webpack_require__(490)) :
10272
  typeof define === 'function' && define.amd ? define(['backbone', 'underscore', 'backbone.radio'], factory) :
10273
  (global.Marionette = global['Mn'] = factory(global.Backbone,global._,global.Backbone.Radio));
10274
  }(this, (function (Backbone,_,Radio) { 'use strict';
@@ -13749,13 +13749,13 @@ webpackJsonp([4],{
13749
 
13750
  /***/ },
13751
 
13752
- /***/ 490:
13753
  /***/ function(module, exports, __webpack_require__) {
13754
 
13755
  // Backbone.Radio v2.0.0
13756
 
13757
  (function (global, factory) {
13758
- true ? module.exports = factory(__webpack_require__(281), __webpack_require__(468)) :
13759
  typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :
13760
  (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));
13761
  }(this, function (_,Backbone) { 'use strict';
@@ -14105,7 +14105,7 @@ webpackJsonp([4],{
14105
 
14106
  /***/ },
14107
 
14108
- /***/ 491:
14109
  /***/ function(module, exports) {
14110
 
14111
  Backbone.SuperModel = (function(_, Backbone){
@@ -14528,7 +14528,7 @@ webpackJsonp([4],{
14528
 
14529
  /***/ },
14530
 
14531
- /***/ 492:
14532
  /***/ function(module, exports, __webpack_require__) {
14533
 
14534
  /**
@@ -20512,7 +20512,7 @@ webpackJsonp([4],{
20512
 
20513
  /***/ },
20514
 
20515
- /***/ 493:
20516
  /***/ function(module, exports, __webpack_require__) {
20517
 
20518
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Spectrum Colorpicker v1.8.0
@@ -22842,7 +22842,7 @@ webpackJsonp([4],{
22842
 
22843
  /***/ },
22844
 
22845
- /***/ 494:
22846
  /***/ function(module, exports) {
22847
 
22848
  // Generated by CoffeeScript 1.9.2
@@ -23113,7 +23113,7 @@ webpackJsonp([4],{
23113
 
23114
  /***/ },
23115
 
23116
- /***/ 495:
23117
  /***/ function(module, exports) {
23118
 
23119
  /* Blob.js
@@ -23334,7 +23334,7 @@ webpackJsonp([4],{
23334
 
23335
  /***/ },
23336
 
23337
- /***/ 496:
23338
  /***/ function(module, exports, __webpack_require__) {
23339
 
23340
  var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
@@ -23520,7 +23520,7 @@ webpackJsonp([4],{
23520
 
23521
  if (typeof module !== "undefined" && module.exports) {
23522
  module.exports.saveAs = saveAs;
23523
- } else if (("function" !== "undefined" && __webpack_require__(497) !== null) && (__webpack_require__(498) !== null)) {
23524
  !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
23525
  return saveAs;
23526
  }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -23529,7 +23529,7 @@ webpackJsonp([4],{
23529
 
23530
  /***/ },
23531
 
23532
- /***/ 497:
23533
  /***/ function(module, exports) {
23534
 
23535
  module.exports = function() { throw new Error("define cannot be used indirect"); };
@@ -23537,7 +23537,7 @@ webpackJsonp([4],{
23537
 
23538
  /***/ },
23539
 
23540
- /***/ 498:
23541
  /***/ function(module, exports) {
23542
 
23543
  /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;
@@ -23546,7 +23546,7 @@ webpackJsonp([4],{
23546
 
23547
  /***/ },
23548
 
23549
- /***/ 499:
23550
  /***/ function(module, exports, __webpack_require__) {
23551
 
23552
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*** IMPORTS FROM imports-loader ***/
@@ -27442,7 +27442,7 @@ webpackJsonp([4],{
27442
 
27443
  /***/ },
27444
 
27445
- /***/ 500:
27446
  /***/ function(module, exports, __webpack_require__) {
27447
 
27448
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -27455,7 +27455,7 @@ webpackJsonp([4],{
27455
 
27456
  (function(root, factory) {
27457
  if (true) {
27458
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(489), __webpack_require__(490), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, Radio, _) {
27459
  return factory(Marionette, Radio, _);
27460
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27461
  }
@@ -27480,17 +27480,17 @@ webpackJsonp([4],{
27480
 
27481
  /***/ },
27482
 
27483
- /***/ 501:
27484
  /***/ function(module, exports, __webpack_require__) {
27485
 
27486
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27487
- __webpack_require__(468),
27488
- __webpack_require__(489),
27489
  __webpack_require__(490),
 
27490
  __webpack_require__(276),
27491
  __webpack_require__(281),
27492
- __webpack_require__(471),
27493
- __webpack_require__(502)
27494
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, Radio, jQuery, _, Handlebars) {
27495
 
27496
  var AppView = Marionette.View.extend({
@@ -27528,12 +27528,12 @@ webpackJsonp([4],{
27528
 
27529
  /***/ },
27530
 
27531
- /***/ 503:
27532
  /***/ function(module, exports, __webpack_require__) {
27533
 
27534
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27535
- __webpack_require__(501),
27536
- __webpack_require__(491)
27537
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel) {
27538
 
27539
  var Module = {};
@@ -27571,13 +27571,13 @@ webpackJsonp([4],{
27571
 
27572
  /***/ },
27573
 
27574
- /***/ 504:
27575
  /***/ function(module, exports, __webpack_require__) {
27576
 
27577
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27578
- __webpack_require__(501),
27579
- __webpack_require__(489),
27580
- __webpack_require__(491)
27581
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel) {
27582
 
27583
  "use strict";
@@ -27666,19 +27666,19 @@ webpackJsonp([4],{
27666
 
27667
  /***/ },
27668
 
27669
- /***/ 505:
27670
  /***/ function(module, exports, __webpack_require__) {
27671
 
27672
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27673
- __webpack_require__(501),
27674
- __webpack_require__(506),
27675
  __webpack_require__(277),
27676
- __webpack_require__(468),
27677
- __webpack_require__(489),
27678
- __webpack_require__(491),
27679
  __webpack_require__(281),
27680
  __webpack_require__(276),
27681
- __webpack_require__(494)
27682
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
27683
  App,
27684
  CommunicationComponent,
@@ -28043,14 +28043,14 @@ webpackJsonp([4],{
28043
 
28044
  /***/ },
28045
 
28046
- /***/ 506:
28047
  /***/ function(module, exports, __webpack_require__) {
28048
 
28049
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28050
- __webpack_require__(501),
28051
  __webpack_require__(281),
28052
  __webpack_require__(277),
28053
- __webpack_require__(481)
28054
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, _, MailPoet) {
28055
 
28056
  var Module = {};
@@ -28157,12 +28157,12 @@ webpackJsonp([4],{
28157
 
28158
  /***/ },
28159
 
28160
- /***/ 507:
28161
  /***/ function(module, exports, __webpack_require__) {
28162
 
28163
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28164
- __webpack_require__(501),
28165
- __webpack_require__(491),
28166
  __webpack_require__(281),
28167
  __webpack_require__(277)
28168
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel, _, MailPoet) {
@@ -28269,13 +28269,13 @@ webpackJsonp([4],{
28269
 
28270
  /***/ },
28271
 
28272
- /***/ 508:
28273
  /***/ function(module, exports, __webpack_require__) {
28274
 
28275
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28276
- __webpack_require__(501),
28277
- __webpack_require__(468),
28278
- __webpack_require__(489),
28279
  __webpack_require__(281),
28280
  __webpack_require__(276)
28281
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Backbone, Marionette, _, jQuery) {
@@ -28312,20 +28312,20 @@ webpackJsonp([4],{
28312
 
28313
  /***/ },
28314
 
28315
- /***/ 509:
28316
  /***/ function(module, exports, __webpack_require__) {
28317
 
28318
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28319
- __webpack_require__(501),
28320
- __webpack_require__(506),
28321
  __webpack_require__(277),
28322
- __webpack_require__(485),
28323
- __webpack_require__(468),
28324
- __webpack_require__(489),
28325
  __webpack_require__(276),
28326
- __webpack_require__(495),
28327
  __webpack_require__(496),
28328
- __webpack_require__(510)
 
28329
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28330
  App,
28331
  CommunicationComponent,
@@ -28678,15 +28678,15 @@ webpackJsonp([4],{
28678
 
28679
  /***/ },
28680
 
28681
- /***/ 510:
28682
  /***/ function(module, exports, __webpack_require__) {
28683
 
28684
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["html2canvas"] = __webpack_require__(511);
28685
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
28686
 
28687
  /***/ },
28688
 
28689
- /***/ 511:
28690
  /***/ function(module, exports, __webpack_require__) {
28691
 
28692
  var require;var require;/* WEBPACK VAR INJECTION */(function(global) {/*
@@ -33227,7 +33227,7 @@ webpackJsonp([4],{
33227
 
33228
  /***/ },
33229
 
33230
- /***/ 512:
33231
  /***/ function(module, exports, __webpack_require__) {
33232
 
33233
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33237,7 +33237,7 @@ webpackJsonp([4],{
33237
  * For more check: http://marionettejs.com/docs/marionette.behaviors.html#behaviorslookup
33238
  */
33239
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33240
- __webpack_require__(489)
33241
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette) {
33242
 
33243
  var BehaviorsLookup = {};
@@ -33253,7 +33253,7 @@ webpackJsonp([4],{
33253
 
33254
  /***/ },
33255
 
33256
- /***/ 513:
33257
  /***/ function(module, exports, __webpack_require__) {
33258
 
33259
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33262,10 +33262,10 @@ webpackJsonp([4],{
33262
  * Adds a color picker integration with the view
33263
  */
33264
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33265
- __webpack_require__(489),
33266
- __webpack_require__(512),
33267
  __webpack_require__(277),
33268
- __webpack_require__(493)
33269
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, MailPoet, Spectrum) {
33270
 
33271
  BehaviorsLookup.ColorPickerBehavior = Marionette.Behavior.extend({
@@ -33286,7 +33286,7 @@ webpackJsonp([4],{
33286
 
33287
  /***/ },
33288
 
33289
- /***/ 514:
33290
  /***/ function(module, exports, __webpack_require__) {
33291
 
33292
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33297,11 +33297,11 @@ webpackJsonp([4],{
33297
  * accept droppables
33298
  */
33299
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33300
- __webpack_require__(489),
33301
  __webpack_require__(281),
33302
  __webpack_require__(276),
33303
- __webpack_require__(512),
33304
- __webpack_require__(492)
33305
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33306
 
33307
  BehaviorsLookup.ContainerDropZoneBehavior = Marionette.Behavior.extend({
@@ -33732,7 +33732,7 @@ webpackJsonp([4],{
33732
 
33733
  /***/ },
33734
 
33735
- /***/ 515:
33736
  /***/ function(module, exports, __webpack_require__) {
33737
 
33738
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33742,11 +33742,11 @@ webpackJsonp([4],{
33742
  * Part of the drag&drop behavior.
33743
  */
33744
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33745
- __webpack_require__(489),
33746
  __webpack_require__(281),
33747
  __webpack_require__(276),
33748
- __webpack_require__(512),
33749
- __webpack_require__(492)
33750
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33751
 
33752
  BehaviorsLookup.DraggableBehavior = Marionette.Behavior.extend({
@@ -33880,7 +33880,7 @@ webpackJsonp([4],{
33880
 
33881
  /***/ },
33882
 
33883
- /***/ 516:
33884
  /***/ function(module, exports, __webpack_require__) {
33885
 
33886
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33889,8 +33889,8 @@ webpackJsonp([4],{
33889
  * Highlights a block that is being edited
33890
  */
33891
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33892
- __webpack_require__(489),
33893
- __webpack_require__(512),
33894
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup) {
33895
 
33896
  BehaviorsLookup.HighlightEditingBehavior = Marionette.Behavior.extend({
@@ -33910,7 +33910,7 @@ webpackJsonp([4],{
33910
 
33911
  /***/ },
33912
 
33913
- /***/ 517:
33914
  /***/ function(module, exports, __webpack_require__) {
33915
 
33916
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33919,9 +33919,9 @@ webpackJsonp([4],{
33919
  * Allows resizing elements within a block
33920
  */
33921
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33922
- __webpack_require__(489),
33923
- __webpack_require__(512),
33924
- __webpack_require__(492)
33925
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, interact) {
33926
 
33927
  BehaviorsLookup.ResizableBehavior = Marionette.Behavior.extend({
@@ -33985,7 +33985,7 @@ webpackJsonp([4],{
33985
 
33986
  /***/ },
33987
 
33988
- /***/ 518:
33989
  /***/ function(module, exports, __webpack_require__) {
33990
 
33991
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33994,9 +33994,9 @@ webpackJsonp([4],{
33994
  * Allows sorting elements within a collection
33995
  */
33996
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33997
- __webpack_require__(489),
33998
  __webpack_require__(281),
33999
- __webpack_require__(512)
34000
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34001
 
34002
  BehaviorsLookup.SortableBehavior = Marionette.Behavior.extend({
@@ -34032,7 +34032,7 @@ webpackJsonp([4],{
34032
 
34033
  /***/ },
34034
 
34035
- /***/ 519:
34036
  /***/ function(module, exports, __webpack_require__) {
34037
 
34038
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34041,9 +34041,9 @@ webpackJsonp([4],{
34041
  * Opens up settings of a BlockView if contents are clicked upon
34042
  */
34043
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34044
- __webpack_require__(489),
34045
  __webpack_require__(276),
34046
- __webpack_require__(512),
34047
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, jQuery, BehaviorsLookup) {
34048
 
34049
  BehaviorsLookup.ShowSettingsBehavior = Marionette.Behavior.extend({
@@ -34070,7 +34070,7 @@ webpackJsonp([4],{
34070
 
34071
  /***/ },
34072
 
34073
- /***/ 520:
34074
  /***/ function(module, exports, __webpack_require__) {
34075
 
34076
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34079,9 +34079,9 @@ webpackJsonp([4],{
34079
  * Adds TinyMCE text editing capabilities to a view
34080
  */
34081
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34082
- __webpack_require__(489),
34083
  __webpack_require__(281),
34084
- __webpack_require__(512)
34085
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34086
 
34087
  BehaviorsLookup.TextEditorBehavior = Marionette.Behavior.extend({
@@ -34160,7 +34160,7 @@ webpackJsonp([4],{
34160
 
34161
  /***/ },
34162
 
34163
- /***/ 521:
34164
  /***/ function(module, exports, __webpack_require__) {
34165
 
34166
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34170,13 +34170,13 @@ webpackJsonp([4],{
34170
  * BlockToolsView, BlockSettingsView and BlockWidgetView are optional.
34171
  */
34172
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34173
- __webpack_require__(501),
34174
- __webpack_require__(489),
34175
- __webpack_require__(491),
34176
  __webpack_require__(281),
34177
  __webpack_require__(276),
34178
  __webpack_require__(277),
34179
- __webpack_require__(484)
34180
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel, _, jQuery, MailPoet, Modal) {
34181
 
34182
  "use strict";
@@ -34464,7 +34464,7 @@ webpackJsonp([4],{
34464
 
34465
  /***/ },
34466
 
34467
- /***/ 522:
34468
  /***/ function(module, exports, __webpack_require__) {
34469
 
34470
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34473,12 +34473,12 @@ webpackJsonp([4],{
34473
  * as other containers.
34474
  */
34475
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34476
- __webpack_require__(468),
34477
- __webpack_require__(489),
34478
  __webpack_require__(281),
34479
  __webpack_require__(276),
34480
- __webpack_require__(501),
34481
- __webpack_require__(521)
34482
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, _, jQuery, App, BaseBlock) {
34483
 
34484
  "use strict";
@@ -34834,15 +34834,15 @@ webpackJsonp([4],{
34834
 
34835
  /***/ },
34836
 
34837
- /***/ 523:
34838
  /***/ function(module, exports, __webpack_require__) {
34839
 
34840
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34841
  * Button content block
34842
  */
34843
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34844
- __webpack_require__(501),
34845
- __webpack_require__(521),
34846
  __webpack_require__(277),
34847
  __webpack_require__(281),
34848
  __webpack_require__(276)
@@ -34990,15 +34990,15 @@ webpackJsonp([4],{
34990
 
34991
  /***/ },
34992
 
34993
- /***/ 524:
34994
  /***/ function(module, exports, __webpack_require__) {
34995
 
34996
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34997
  * Image content block
34998
  */
34999
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35000
- __webpack_require__(501),
35001
- __webpack_require__(521),
35002
  __webpack_require__(281)
35003
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35004
 
@@ -35379,15 +35379,15 @@ webpackJsonp([4],{
35379
 
35380
  /***/ },
35381
 
35382
- /***/ 525:
35383
  /***/ function(module, exports, __webpack_require__) {
35384
 
35385
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35386
  * Divider content block
35387
  */
35388
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35389
- __webpack_require__(501),
35390
- __webpack_require__(521),
35391
  __webpack_require__(281),
35392
  __webpack_require__(276),
35393
  __webpack_require__(277)
@@ -35542,15 +35542,15 @@ webpackJsonp([4],{
35542
 
35543
  /***/ },
35544
 
35545
- /***/ 526:
35546
  /***/ function(module, exports, __webpack_require__) {
35547
 
35548
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35549
  * Text content block
35550
  */
35551
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35552
- __webpack_require__(501),
35553
- __webpack_require__(521),
35554
  __webpack_require__(281)
35555
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35556
 
@@ -35660,15 +35660,15 @@ webpackJsonp([4],{
35660
 
35661
  /***/ },
35662
 
35663
- /***/ 527:
35664
  /***/ function(module, exports, __webpack_require__) {
35665
 
35666
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35667
  * Spacer content block
35668
  */
35669
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35670
- __webpack_require__(501),
35671
- __webpack_require__(521),
35672
  __webpack_require__(281)
35673
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35674
 
@@ -35771,15 +35771,15 @@ webpackJsonp([4],{
35771
 
35772
  /***/ },
35773
 
35774
- /***/ 528:
35775
  /***/ function(module, exports, __webpack_require__) {
35776
 
35777
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35778
  * Footer content block
35779
  */
35780
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35781
- __webpack_require__(501),
35782
- __webpack_require__(521),
35783
  __webpack_require__(281)
35784
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35785
 
@@ -35904,15 +35904,15 @@ webpackJsonp([4],{
35904
 
35905
  /***/ },
35906
 
35907
- /***/ 529:
35908
  /***/ function(module, exports, __webpack_require__) {
35909
 
35910
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35911
  * Header content block
35912
  */
35913
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35914
- __webpack_require__(501),
35915
- __webpack_require__(521),
35916
  __webpack_require__(281)
35917
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35918
 
@@ -36037,7 +36037,7 @@ webpackJsonp([4],{
36037
 
36038
  /***/ },
36039
 
36040
- /***/ 530:
36041
  /***/ function(module, exports, __webpack_require__) {
36042
 
36043
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -36049,13 +36049,13 @@ webpackJsonp([4],{
36049
  * block settings view.
36050
  */
36051
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36052
- __webpack_require__(501),
36053
- __webpack_require__(521),
36054
- __webpack_require__(523),
36055
- __webpack_require__(525),
36056
- __webpack_require__(506),
36057
  __webpack_require__(277),
36058
- __webpack_require__(491),
36059
  __webpack_require__(281),
36060
  __webpack_require__(276)
36061
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
@@ -36438,7 +36438,7 @@ webpackJsonp([4],{
36438
 
36439
  /***/ },
36440
 
36441
- /***/ 531:
36442
  /***/ function(module, exports, __webpack_require__) {
36443
 
36444
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -36454,17 +36454,17 @@ webpackJsonp([4],{
36454
  * block settings view.
36455
  */
36456
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36457
- __webpack_require__(468),
36458
- __webpack_require__(489),
36459
  __webpack_require__(490),
 
36460
  __webpack_require__(281),
36461
  __webpack_require__(276),
36462
  __webpack_require__(277),
36463
- __webpack_require__(501),
36464
- __webpack_require__(506),
36465
- __webpack_require__(521),
36466
- __webpack_require__(523),
36467
- __webpack_require__(525),
36468
  __webpack_require__(290)
36469
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36470
  Backbone,
@@ -36988,18 +36988,18 @@ webpackJsonp([4],{
36988
 
36989
  /***/ },
36990
 
36991
- /***/ 532:
36992
  /***/ function(module, exports, __webpack_require__) {
36993
 
36994
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36995
  * Social icons content block
36996
  */
36997
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36998
- __webpack_require__(501),
36999
- __webpack_require__(521),
37000
- __webpack_require__(468),
37001
- __webpack_require__(489),
37002
- __webpack_require__(491),
37003
  __webpack_require__(281),
37004
  __webpack_require__(276)
37005
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, Backbone, Marionette, SuperModel, _, jQuery) {
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
  __webpack_require__(281);
7
+ __webpack_require__(469);
 
 
 
8
  __webpack_require__(490);
9
+ __webpack_require__(492);
10
  __webpack_require__(493);
11
+ __webpack_require__(491);
12
+ __webpack_require__(290);
13
  __webpack_require__(494);
14
  __webpack_require__(495);
15
  __webpack_require__(496);
16
+ __webpack_require__(497);
17
  __webpack_require__(500);
18
  __webpack_require__(501);
19
+ __webpack_require__(502);
20
  __webpack_require__(504);
21
  __webpack_require__(505);
22
+ __webpack_require__(506);
23
  __webpack_require__(508);
24
  __webpack_require__(509);
25
+ __webpack_require__(510);
26
+ __webpack_require__(507);
27
  __webpack_require__(513);
28
  __webpack_require__(514);
29
  __webpack_require__(515);
43
  __webpack_require__(529);
44
  __webpack_require__(530);
45
  __webpack_require__(531);
46
+ __webpack_require__(532);
47
+ module.exports = __webpack_require__(533);
48
 
49
 
50
  /***/ },
7367
 
7368
  /***/ },
7369
 
7370
+ /***/ 469:
7371
  /***/ function(module, exports, __webpack_require__) {
7372
 
7373
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(470);
7374
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
7375
 
7376
  /***/ },
7377
 
7378
+ /***/ 470:
7379
  /***/ function(module, exports, __webpack_require__) {
7380
 
7381
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
9303
 
9304
  /***/ },
9305
 
9306
+ /***/ 482:
9307
  /***/ function(module, exports, __webpack_require__) {
9308
 
9309
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
9384
 
9385
  /***/ },
9386
 
9387
+ /***/ 485:
9388
  /***/ function(module, exports, __webpack_require__) {
9389
 
9390
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
10032
 
10033
  /***/ },
10034
 
10035
+ /***/ 486:
10036
  /***/ function(module, exports, __webpack_require__) {
10037
 
10038
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(276)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
10254
 
10255
  /***/ },
10256
 
10257
+ /***/ 490:
10258
  /***/ function(module, exports, __webpack_require__) {
10259
 
10260
  // MarionetteJS (Backbone.Marionette)
10268
 
10269
 
10270
  (function (global, factory) {
10271
+ true ? module.exports = factory(__webpack_require__(469), __webpack_require__(281), __webpack_require__(491)) :
10272
  typeof define === 'function' && define.amd ? define(['backbone', 'underscore', 'backbone.radio'], factory) :
10273
  (global.Marionette = global['Mn'] = factory(global.Backbone,global._,global.Backbone.Radio));
10274
  }(this, (function (Backbone,_,Radio) { 'use strict';
13749
 
13750
  /***/ },
13751
 
13752
+ /***/ 491:
13753
  /***/ function(module, exports, __webpack_require__) {
13754
 
13755
  // Backbone.Radio v2.0.0
13756
 
13757
  (function (global, factory) {
13758
+ true ? module.exports = factory(__webpack_require__(281), __webpack_require__(469)) :
13759
  typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :
13760
  (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));
13761
  }(this, function (_,Backbone) { 'use strict';
14105
 
14106
  /***/ },
14107
 
14108
+ /***/ 492:
14109
  /***/ function(module, exports) {
14110
 
14111
  Backbone.SuperModel = (function(_, Backbone){
14528
 
14529
  /***/ },
14530
 
14531
+ /***/ 493:
14532
  /***/ function(module, exports, __webpack_require__) {
14533
 
14534
  /**
20512
 
20513
  /***/ },
20514
 
20515
+ /***/ 494:
20516
  /***/ function(module, exports, __webpack_require__) {
20517
 
20518
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Spectrum Colorpicker v1.8.0
22842
 
22843
  /***/ },
22844
 
22845
+ /***/ 495:
22846
  /***/ function(module, exports) {
22847
 
22848
  // Generated by CoffeeScript 1.9.2
23113
 
23114
  /***/ },
23115
 
23116
+ /***/ 496:
23117
  /***/ function(module, exports) {
23118
 
23119
  /* Blob.js
23334
 
23335
  /***/ },
23336
 
23337
+ /***/ 497:
23338
  /***/ function(module, exports, __webpack_require__) {
23339
 
23340
  var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
23520
 
23521
  if (typeof module !== "undefined" && module.exports) {
23522
  module.exports.saveAs = saveAs;
23523
+ } else if (("function" !== "undefined" && __webpack_require__(498) !== null) && (__webpack_require__(499) !== null)) {
23524
  !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
23525
  return saveAs;
23526
  }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
23529
 
23530
  /***/ },
23531
 
23532
+ /***/ 498:
23533
  /***/ function(module, exports) {
23534
 
23535
  module.exports = function() { throw new Error("define cannot be used indirect"); };
23537
 
23538
  /***/ },
23539
 
23540
+ /***/ 499:
23541
  /***/ function(module, exports) {
23542
 
23543
  /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;
23546
 
23547
  /***/ },
23548
 
23549
+ /***/ 500:
23550
  /***/ function(module, exports, __webpack_require__) {
23551
 
23552
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*** IMPORTS FROM imports-loader ***/
27442
 
27443
  /***/ },
27444
 
27445
+ /***/ 501:
27446
  /***/ function(module, exports, __webpack_require__) {
27447
 
27448
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
27455
 
27456
  (function(root, factory) {
27457
  if (true) {
27458
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(490), __webpack_require__(491), __webpack_require__(281)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, Radio, _) {
27459
  return factory(Marionette, Radio, _);
27460
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27461
  }
27480
 
27481
  /***/ },
27482
 
27483
+ /***/ 502:
27484
  /***/ function(module, exports, __webpack_require__) {
27485
 
27486
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27487
+ __webpack_require__(469),
 
27488
  __webpack_require__(490),
27489
+ __webpack_require__(491),
27490
  __webpack_require__(276),
27491
  __webpack_require__(281),
27492
+ __webpack_require__(472),
27493
+ __webpack_require__(503)
27494
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, Radio, jQuery, _, Handlebars) {
27495
 
27496
  var AppView = Marionette.View.extend({
27528
 
27529
  /***/ },
27530
 
27531
+ /***/ 504:
27532
  /***/ function(module, exports, __webpack_require__) {
27533
 
27534
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27535
+ __webpack_require__(502),
27536
+ __webpack_require__(492)
27537
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel) {
27538
 
27539
  var Module = {};
27571
 
27572
  /***/ },
27573
 
27574
+ /***/ 505:
27575
  /***/ function(module, exports, __webpack_require__) {
27576
 
27577
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27578
+ __webpack_require__(502),
27579
+ __webpack_require__(490),
27580
+ __webpack_require__(492)
27581
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel) {
27582
 
27583
  "use strict";
27666
 
27667
  /***/ },
27668
 
27669
+ /***/ 506:
27670
  /***/ function(module, exports, __webpack_require__) {
27671
 
27672
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27673
+ __webpack_require__(502),
27674
+ __webpack_require__(507),
27675
  __webpack_require__(277),
27676
+ __webpack_require__(469),
27677
+ __webpack_require__(490),
27678
+ __webpack_require__(492),
27679
  __webpack_require__(281),
27680
  __webpack_require__(276),
27681
+ __webpack_require__(495)
27682
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
27683
  App,
27684
  CommunicationComponent,
28043
 
28044
  /***/ },
28045
 
28046
+ /***/ 507:
28047
  /***/ function(module, exports, __webpack_require__) {
28048
 
28049
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28050
+ __webpack_require__(502),
28051
  __webpack_require__(281),
28052
  __webpack_require__(277),
28053
+ __webpack_require__(482)
28054
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, _, MailPoet) {
28055
 
28056
  var Module = {};
28157
 
28158
  /***/ },
28159
 
28160
+ /***/ 508:
28161
  /***/ function(module, exports, __webpack_require__) {
28162
 
28163
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28164
+ __webpack_require__(502),
28165
+ __webpack_require__(492),
28166
  __webpack_require__(281),
28167
  __webpack_require__(277)
28168
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel, _, MailPoet) {
28269
 
28270
  /***/ },
28271
 
28272
+ /***/ 509:
28273
  /***/ function(module, exports, __webpack_require__) {
28274
 
28275
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28276
+ __webpack_require__(502),
28277
+ __webpack_require__(469),
28278
+ __webpack_require__(490),
28279
  __webpack_require__(281),
28280
  __webpack_require__(276)
28281
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Backbone, Marionette, _, jQuery) {
28312
 
28313
  /***/ },
28314
 
28315
+ /***/ 510:
28316
  /***/ function(module, exports, __webpack_require__) {
28317
 
28318
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28319
+ __webpack_require__(502),
28320
+ __webpack_require__(507),
28321
  __webpack_require__(277),
28322
+ __webpack_require__(486),
28323
+ __webpack_require__(469),
28324
+ __webpack_require__(490),
28325
  __webpack_require__(276),
 
28326
  __webpack_require__(496),
28327
+ __webpack_require__(497),
28328
+ __webpack_require__(511)
28329
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28330
  App,
28331
  CommunicationComponent,
28678
 
28679
  /***/ },
28680
 
28681
+ /***/ 511:
28682
  /***/ function(module, exports, __webpack_require__) {
28683
 
28684
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["html2canvas"] = __webpack_require__(512);
28685
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
28686
 
28687
  /***/ },
28688
 
28689
+ /***/ 512:
28690
  /***/ function(module, exports, __webpack_require__) {
28691
 
28692
  var require;var require;/* WEBPACK VAR INJECTION */(function(global) {/*
33227
 
33228
  /***/ },
33229
 
33230
+ /***/ 513:
33231
  /***/ function(module, exports, __webpack_require__) {
33232
 
33233
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33237
  * For more check: http://marionettejs.com/docs/marionette.behaviors.html#behaviorslookup
33238
  */
33239
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33240
+ __webpack_require__(490)
33241
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette) {
33242
 
33243
  var BehaviorsLookup = {};
33253
 
33254
  /***/ },
33255
 
33256
+ /***/ 514:
33257
  /***/ function(module, exports, __webpack_require__) {
33258
 
33259
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33262
  * Adds a color picker integration with the view
33263
  */
33264
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33265
+ __webpack_require__(490),
33266
+ __webpack_require__(513),
33267
  __webpack_require__(277),
33268
+ __webpack_require__(494)
33269
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, MailPoet, Spectrum) {
33270
 
33271
  BehaviorsLookup.ColorPickerBehavior = Marionette.Behavior.extend({
33286
 
33287
  /***/ },
33288
 
33289
+ /***/ 515:
33290
  /***/ function(module, exports, __webpack_require__) {
33291
 
33292
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33297
  * accept droppables
33298
  */
33299
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33300
+ __webpack_require__(490),
33301
  __webpack_require__(281),
33302
  __webpack_require__(276),
33303
+ __webpack_require__(513),
33304
+ __webpack_require__(493)
33305
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33306
 
33307
  BehaviorsLookup.ContainerDropZoneBehavior = Marionette.Behavior.extend({
33732
 
33733
  /***/ },
33734
 
33735
+ /***/ 516:
33736
  /***/ function(module, exports, __webpack_require__) {
33737
 
33738
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33742
  * Part of the drag&drop behavior.
33743
  */
33744
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33745
+ __webpack_require__(490),
33746
  __webpack_require__(281),
33747
  __webpack_require__(276),
33748
+ __webpack_require__(513),
33749
+ __webpack_require__(493)
33750
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33751
 
33752
  BehaviorsLookup.DraggableBehavior = Marionette.Behavior.extend({
33880
 
33881
  /***/ },
33882
 
33883
+ /***/ 517:
33884
  /***/ function(module, exports, __webpack_require__) {
33885
 
33886
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33889
  * Highlights a block that is being edited
33890
  */
33891
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33892
+ __webpack_require__(490),
33893
+ __webpack_require__(513),
33894
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup) {
33895
 
33896
  BehaviorsLookup.HighlightEditingBehavior = Marionette.Behavior.extend({
33910
 
33911
  /***/ },
33912
 
33913
+ /***/ 518:
33914
  /***/ function(module, exports, __webpack_require__) {
33915
 
33916
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33919
  * Allows resizing elements within a block
33920
  */
33921
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33922
+ __webpack_require__(490),
33923
+ __webpack_require__(513),
33924
+ __webpack_require__(493)
33925
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, interact) {
33926
 
33927
  BehaviorsLookup.ResizableBehavior = Marionette.Behavior.extend({
33985
 
33986
  /***/ },
33987
 
33988
+ /***/ 519:
33989
  /***/ function(module, exports, __webpack_require__) {
33990
 
33991
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33994
  * Allows sorting elements within a collection
33995
  */
33996
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33997
+ __webpack_require__(490),
33998
  __webpack_require__(281),
33999
+ __webpack_require__(513)
34000
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34001
 
34002
  BehaviorsLookup.SortableBehavior = Marionette.Behavior.extend({
34032
 
34033
  /***/ },
34034
 
34035
+ /***/ 520:
34036
  /***/ function(module, exports, __webpack_require__) {
34037
 
34038
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34041
  * Opens up settings of a BlockView if contents are clicked upon
34042
  */
34043
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34044
+ __webpack_require__(490),
34045
  __webpack_require__(276),
34046
+ __webpack_require__(513),
34047
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, jQuery, BehaviorsLookup) {
34048
 
34049
  BehaviorsLookup.ShowSettingsBehavior = Marionette.Behavior.extend({
34070
 
34071
  /***/ },
34072
 
34073
+ /***/ 521:
34074
  /***/ function(module, exports, __webpack_require__) {
34075
 
34076
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34079
  * Adds TinyMCE text editing capabilities to a view
34080
  */
34081
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34082
+ __webpack_require__(490),
34083
  __webpack_require__(281),
34084
+ __webpack_require__(513)
34085
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34086
 
34087
  BehaviorsLookup.TextEditorBehavior = Marionette.Behavior.extend({
34160
 
34161
  /***/ },
34162
 
34163
+ /***/ 522:
34164
  /***/ function(module, exports, __webpack_require__) {
34165
 
34166
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34170
  * BlockToolsView, BlockSettingsView and BlockWidgetView are optional.
34171
  */
34172
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34173
+ __webpack_require__(502),
34174
+ __webpack_require__(490),
34175
+ __webpack_require__(492),
34176
  __webpack_require__(281),
34177
  __webpack_require__(276),
34178
  __webpack_require__(277),
34179
+ __webpack_require__(485)
34180
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel, _, jQuery, MailPoet, Modal) {
34181
 
34182
  "use strict";
34464
 
34465
  /***/ },
34466
 
34467
+ /***/ 523:
34468
  /***/ function(module, exports, __webpack_require__) {
34469
 
34470
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34473
  * as other containers.
34474
  */
34475
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34476
+ __webpack_require__(469),
34477
+ __webpack_require__(490),
34478
  __webpack_require__(281),
34479
  __webpack_require__(276),
34480
+ __webpack_require__(502),
34481
+ __webpack_require__(522)
34482
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, _, jQuery, App, BaseBlock) {
34483
 
34484
  "use strict";
34834
 
34835
  /***/ },
34836
 
34837
+ /***/ 524:
34838
  /***/ function(module, exports, __webpack_require__) {
34839
 
34840
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34841
  * Button content block
34842
  */
34843
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34844
+ __webpack_require__(502),
34845
+ __webpack_require__(522),
34846
  __webpack_require__(277),
34847
  __webpack_require__(281),
34848
  __webpack_require__(276)
34990
 
34991
  /***/ },
34992
 
34993
+ /***/ 525:
34994
  /***/ function(module, exports, __webpack_require__) {
34995
 
34996
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34997
  * Image content block
34998
  */
34999
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35000
+ __webpack_require__(502),
35001
+ __webpack_require__(522),
35002
  __webpack_require__(281)
35003
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35004
 
35379
 
35380
  /***/ },
35381
 
35382
+ /***/ 526:
35383
  /***/ function(module, exports, __webpack_require__) {
35384
 
35385
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35386
  * Divider content block
35387
  */
35388
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35389
+ __webpack_require__(502),
35390
+ __webpack_require__(522),
35391
  __webpack_require__(281),
35392
  __webpack_require__(276),
35393
  __webpack_require__(277)
35542
 
35543
  /***/ },
35544
 
35545
+ /***/ 527:
35546
  /***/ function(module, exports, __webpack_require__) {
35547
 
35548
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35549
  * Text content block
35550
  */
35551
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35552
+ __webpack_require__(502),
35553
+ __webpack_require__(522),
35554
  __webpack_require__(281)
35555
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35556
 
35660
 
35661
  /***/ },
35662
 
35663
+ /***/ 528:
35664
  /***/ function(module, exports, __webpack_require__) {
35665
 
35666
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35667
  * Spacer content block
35668
  */
35669
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35670
+ __webpack_require__(502),
35671
+ __webpack_require__(522),
35672
  __webpack_require__(281)
35673
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35674
 
35771
 
35772
  /***/ },
35773
 
35774
+ /***/ 529:
35775
  /***/ function(module, exports, __webpack_require__) {
35776
 
35777
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35778
  * Footer content block
35779
  */
35780
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35781
+ __webpack_require__(502),
35782
+ __webpack_require__(522),
35783
  __webpack_require__(281)
35784
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35785
 
35904
 
35905
  /***/ },
35906
 
35907
+ /***/ 530:
35908
  /***/ function(module, exports, __webpack_require__) {
35909
 
35910
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35911
  * Header content block
35912
  */
35913
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35914
+ __webpack_require__(502),
35915
+ __webpack_require__(522),
35916
  __webpack_require__(281)
35917
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35918
 
36037
 
36038
  /***/ },
36039
 
36040
+ /***/ 531:
36041
  /***/ function(module, exports, __webpack_require__) {
36042
 
36043
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36049
  * block settings view.
36050
  */
36051
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36052
+ __webpack_require__(502),
36053
+ __webpack_require__(522),
36054
+ __webpack_require__(524),
36055
+ __webpack_require__(526),
36056
+ __webpack_require__(507),
36057
  __webpack_require__(277),
36058
+ __webpack_require__(492),
36059
  __webpack_require__(281),
36060
  __webpack_require__(276)
36061
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36438
 
36439
  /***/ },
36440
 
36441
+ /***/ 532:
36442
  /***/ function(module, exports, __webpack_require__) {
36443
 
36444
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36454
  * block settings view.
36455
  */
36456
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36457
+ __webpack_require__(469),
 
36458
  __webpack_require__(490),
36459
+ __webpack_require__(491),
36460
  __webpack_require__(281),
36461
  __webpack_require__(276),
36462
  __webpack_require__(277),
36463
+ __webpack_require__(502),
36464
+ __webpack_require__(507),
36465
+ __webpack_require__(522),
36466
+ __webpack_require__(524),
36467
+ __webpack_require__(526),
36468
  __webpack_require__(290)
36469
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36470
  Backbone,
36988
 
36989
  /***/ },
36990
 
36991
+ /***/ 533:
36992
  /***/ function(module, exports, __webpack_require__) {
36993
 
36994
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36995
  * Social icons content block
36996
  */
36997
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36998
+ __webpack_require__(502),
36999
+ __webpack_require__(522),
37000
+ __webpack_require__(469),
37001
+ __webpack_require__(490),
37002
+ __webpack_require__(492),
37003
  __webpack_require__(281),
37004
  __webpack_require__(276)
37005
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, Backbone, Marionette, SuperModel, _, jQuery) {
assets/js/vendor.js CHANGED
@@ -99,8 +99,8 @@
99
  /***/ 0:
100
  /***/ function(module, exports, __webpack_require__) {
101
 
102
- __webpack_require__(471);
103
- __webpack_require__(502);
104
  module.exports = __webpack_require__(425);
105
 
106
 
@@ -373,7 +373,7 @@
373
 
374
  /***/ },
375
 
376
- /***/ 471:
377
  /***/ function(module, exports, __webpack_require__) {
378
 
379
  /*!
@@ -4477,10 +4477,10 @@
4477
 
4478
  /***/ },
4479
 
4480
- /***/ 502:
4481
  /***/ function(module, exports, __webpack_require__) {
4482
 
4483
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(471)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Handlebars) {
4484
  // Handlebars helpers
4485
  Handlebars.registerHelper('concat', function() {
4486
  var size = (arguments.length - 1),
99
  /***/ 0:
100
  /***/ function(module, exports, __webpack_require__) {
101
 
102
+ __webpack_require__(472);
103
+ __webpack_require__(503);
104
  module.exports = __webpack_require__(425);
105
 
106
 
373
 
374
  /***/ },
375
 
376
+ /***/ 472:
377
  /***/ function(module, exports, __webpack_require__) {
378
 
379
  /*!
4477
 
4478
  /***/ },
4479
 
4480
+ /***/ 503:
4481
  /***/ function(module, exports, __webpack_require__) {
4482
 
4483
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(472)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Handlebars) {
4484
  // Handlebars helpers
4485
  Handlebars.registerHelper('concat', function() {
4486
  var size = (arguments.length - 1),
lang/index.php CHANGED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Silence is golden
lang/mailpoet-de_DE.mo CHANGED
Binary file
lang/mailpoet-en_GB.mo CHANGED
Binary file
lang/mailpoet-es_ES.mo CHANGED
Binary file
lang/mailpoet-fa_IR.mo CHANGED
Binary file
lang/mailpoet-fr_FR.mo CHANGED
Binary file
lang/mailpoet-it_IT.mo CHANGED
Binary file
lang/mailpoet-ja.mo ADDED
Binary file
lang/mailpoet-nl_NL.mo CHANGED
Binary file
lang/mailpoet-pl_PL.mo CHANGED
Binary file
lang/mailpoet-pt_BR.mo CHANGED
Binary file
lang/mailpoet-pt_PT.mo CHANGED
Binary file
lang/mailpoet-ru_RU.mo CHANGED
Binary file
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-05-30 18:38:18+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -136,44 +136,46 @@ msgstr ""
136
  msgid "This newsletter has not been sent yet."
137
  msgstr ""
138
 
139
- #: lib/API/JSON/v1/Services.php:26 lib/API/JSON/v1/Services.php:75
140
  msgid "Please specify a key."
141
  msgstr ""
142
 
143
- #: lib/API/JSON/v1/Services.php:42
144
- msgid "Your MailPoet API key is valid!"
145
  msgstr ""
146
 
147
- #: lib/API/JSON/v1/Services.php:45
148
- msgid "Your MailPoet key expires on %s!"
149
  msgstr ""
150
 
151
- #: lib/API/JSON/v1/Services.php:56
152
- msgid "Your MailPoet key is invalid!"
153
  msgstr ""
154
 
155
- #: lib/API/JSON/v1/Services.php:61
156
- msgid "Error validating API key, please try again later (code: %s)"
 
 
157
  msgstr ""
158
 
159
- #: lib/API/JSON/v1/Services.php:91 views/settings/premium.html:33
160
- msgid "Your license key has been successfully validated."
161
  msgstr ""
162
 
163
- #: lib/API/JSON/v1/Services.php:94
164
- msgid "Your license key expires on %s."
165
  msgstr ""
166
 
167
- #: lib/API/JSON/v1/Services.php:109 views/settings/premium.html:41
168
- msgid "Your license key is invalid."
169
  msgstr ""
170
 
171
  #: lib/API/JSON/v1/Services.php:112
172
- msgid "Your license key is already used on another site."
173
  msgstr ""
174
 
175
  #: lib/API/JSON/v1/Services.php:117
176
- msgid "Error validating license key, please try again later (code: %s)"
177
  msgstr ""
178
 
179
  #: lib/API/JSON/v1/Settings.php:20
@@ -196,15 +198,15 @@ msgstr ""
196
 
197
  #: lib/API/MP/v1/API.php:21
198
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:33
199
- #: lib/Subscription/Pages.php:279 views/form/editor.html:225
200
- #: views/form/editor.html:228 views/subscribers/subscribers.html:49
201
  msgid "First name"
202
  msgstr ""
203
 
204
  #: lib/API/MP/v1/API.php:25
205
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:34
206
- #: lib/Subscription/Pages.php:288 views/form/editor.html:234
207
- #: views/form/editor.html:237 views/subscribers/subscribers.html:50
208
  msgid "Last name"
209
  msgstr ""
210
 
@@ -233,13 +235,13 @@ msgid "Forms"
233
  msgstr ""
234
 
235
  #: lib/Config/Menu.php:112 lib/Config/Menu.php:113
236
- #: views/subscribers/subscribers.html:17
237
  msgid "Subscribers"
238
  msgstr ""
239
 
240
  #: lib/Config/Menu.php:135 lib/Config/Menu.php:136 views/forms.html:44
241
- #: views/newsletters.html:64 views/newsletters.html:163 views/segments.html:13
242
- #: views/subscribers/subscribers.html:63
243
  msgid "Lists"
244
  msgstr ""
245
 
@@ -248,47 +250,51 @@ msgstr ""
248
  msgid "Settings"
249
  msgstr ""
250
 
251
- #: lib/Config/Menu.php:170 lib/Config/Menu.php:171
 
 
 
 
252
  #: views/subscribers/importExport/import.html:7
253
- #: views/subscribers/subscribers.html:91
254
  msgid "Import"
255
  msgstr ""
256
 
257
- #: lib/Config/Menu.php:182 lib/Config/Menu.php:183
258
  #: views/subscribers/importExport/export.html:6
259
  #: views/subscribers/importExport/export.html:96
260
- #: views/subscribers/subscribers.html:92
261
  msgid "Export"
262
  msgstr ""
263
 
264
- #: lib/Config/Menu.php:194 lib/Config/Menu.php:195 views/update.html:20
265
  #: views/welcome.html:29
266
  msgid "Welcome"
267
  msgstr ""
268
 
269
- #: lib/Config/Menu.php:206 lib/Config/Menu.php:207 views/segments.html:43
270
  msgid "Update"
271
  msgstr ""
272
 
273
- #: lib/Config/Menu.php:218 lib/Config/Menu.php:219
274
  msgid "Form Editor"
275
  msgstr ""
276
 
277
- #: lib/Config/Menu.php:230 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
278
  #: views/newsletter/templates/components/sidebar/styles.hbs:74
279
  #: views/newsletters.html:119
280
  msgid "Newsletter"
281
  msgstr ""
282
 
283
- #: lib/Config/Menu.php:231 views/newsletter/editor.html:228
284
  msgid "Newsletter Editor"
285
  msgstr ""
286
 
287
- #: lib/Config/Menu.php:412
288
  msgid "In any WordPress role"
289
  msgstr ""
290
 
291
- #: lib/Config/Menu.php:488
292
  msgid "MailPoet"
293
  msgstr ""
294
 
@@ -1043,25 +1049,25 @@ msgid ""
1043
  "fix this issue."
1044
  msgstr ""
1045
 
1046
- #: lib/Config/ServicesChecker.php:28
1047
  msgid ""
1048
  "All sending is currently paused! Your key to send with MailPoet is invalid. "
1049
  "[link]Visit MailPoet.com to purchase a key[/link]"
1050
  msgstr ""
1051
 
1052
- #: lib/Config/ServicesChecker.php:41
1053
  msgid ""
1054
  "Your newsletters are awesome! Don't forget to [link]upgrade your MailPoet "
1055
  "email plan[/link] by %s to keep sending them to your subscribers."
1056
  msgstr ""
1057
 
1058
- #: lib/Config/ServicesChecker.php:69
1059
  msgid ""
1060
  "Warning! Your License Key is either invalid or expired. [link]Renew your "
1061
  "License now[/link] to enjoy automatic updates and Premium support."
1062
  msgstr ""
1063
 
1064
- #: lib/Config/ServicesChecker.php:82
1065
  msgid ""
1066
  "Your License Key is expiring! Don't forget to [link]renew your "
1067
  "license[/link] by %s to keep enjoying automatic updates and Premium support."
@@ -1096,7 +1102,7 @@ msgid "Please specify a valid email address."
1096
  msgstr ""
1097
 
1098
  #: lib/Form/Block/Base.php:18 views/form/editor.html:55
1099
- #: views/newsletters.html:166
1100
  msgid "Please select a list"
1101
  msgstr ""
1102
 
@@ -1114,7 +1120,7 @@ msgstr ""
1114
 
1115
  #: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
1116
  #: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
1117
- #: views/subscribers/subscribers.html:89
1118
  msgid "Day"
1119
  msgstr ""
1120
 
@@ -1124,7 +1130,7 @@ msgstr ""
1124
 
1125
  #: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
1126
  #: views/form/templates/blocks/date_months.hbs:3
1127
- #: views/subscribers/subscribers.html:88
1128
  msgid "Month"
1129
  msgstr ""
1130
 
@@ -1136,7 +1142,7 @@ msgstr ""
1136
  #: lib/Form/Block/Date.php:173
1137
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:74
1138
  #: views/form/templates/blocks/date_years.hbs:5
1139
- #: views/subscribers/subscribers.html:87
1140
  msgid "Year"
1141
  msgstr ""
1142
 
@@ -1152,62 +1158,62 @@ msgstr ""
1152
  msgid "Month (January, February,...)"
1153
  msgstr ""
1154
 
1155
- #: lib/Form/Block/Date.php:124 views/newsletters.html:188
1156
  #: views/subscribers/importExport/import.html:56
1157
  msgid "January"
1158
  msgstr ""
1159
 
1160
- #: lib/Form/Block/Date.php:124 views/newsletters.html:189
1161
  #: views/subscribers/importExport/import.html:57
1162
  msgid "February"
1163
  msgstr ""
1164
 
1165
- #: lib/Form/Block/Date.php:124 views/newsletters.html:190
1166
  #: views/subscribers/importExport/import.html:58
1167
  msgid "March"
1168
  msgstr ""
1169
 
1170
- #: lib/Form/Block/Date.php:124 views/newsletters.html:191
1171
  #: views/subscribers/importExport/import.html:59
1172
  msgid "April"
1173
  msgstr ""
1174
 
1175
- #: lib/Form/Block/Date.php:125 views/newsletters.html:192
1176
- #: views/newsletters.html:204 views/subscribers/importExport/import.html:60
1177
  msgid "May"
1178
  msgstr ""
1179
 
1180
- #: lib/Form/Block/Date.php:125 views/newsletters.html:193
1181
  #: views/subscribers/importExport/import.html:61
1182
  msgid "June"
1183
  msgstr ""
1184
 
1185
- #: lib/Form/Block/Date.php:125 views/newsletters.html:194
1186
  #: views/subscribers/importExport/import.html:62
1187
  msgid "July"
1188
  msgstr ""
1189
 
1190
- #: lib/Form/Block/Date.php:125 views/newsletters.html:195
1191
  #: views/subscribers/importExport/import.html:63
1192
  msgid "August"
1193
  msgstr ""
1194
 
1195
- #: lib/Form/Block/Date.php:125 views/newsletters.html:196
1196
  #: views/subscribers/importExport/import.html:64
1197
  msgid "September"
1198
  msgstr ""
1199
 
1200
- #: lib/Form/Block/Date.php:126 views/newsletters.html:197
1201
  #: views/subscribers/importExport/import.html:65
1202
  msgid "October"
1203
  msgstr ""
1204
 
1205
- #: lib/Form/Block/Date.php:126 views/newsletters.html:198
1206
  #: views/subscribers/importExport/import.html:66
1207
  msgid "November"
1208
  msgstr ""
1209
 
1210
- #: lib/Form/Block/Date.php:126 views/newsletters.html:199
1211
  #: views/subscribers/importExport/import.html:67
1212
  msgid "December"
1213
  msgstr ""
@@ -1295,54 +1301,54 @@ msgstr ""
1295
  msgid "Please specify a type."
1296
  msgstr ""
1297
 
1298
- #: lib/Models/Form.php:93 lib/Models/Newsletter.php:543
1299
  #: lib/Models/Segment.php:133 lib/Models/Subscriber.php:347
1300
  msgid "All"
1301
  msgstr ""
1302
 
1303
- #: lib/Models/Form.php:98 lib/Models/Newsletter.php:613
1304
  #: lib/Models/Segment.php:138 lib/Models/Subscriber.php:372 views/forms.html:57
1305
  #: views/newsletters.html:76 views/segments.html:50
1306
- #: views/subscribers/subscribers.html:34
1307
  msgid "Trash"
1308
  msgstr ""
1309
 
1310
- #: lib/Models/Model.php:53 views/subscribers/importExport/import/step2.html:140
1311
  msgid "Another record already exists. Please specify a different \"%1$s\"."
1312
  msgstr ""
1313
 
1314
- #: lib/Models/Newsletter.php:316
1315
  msgid "Deleted list"
1316
  msgstr ""
1317
 
1318
- #: lib/Models/Newsletter.php:444 lib/Models/Subscriber.php:283
1319
  #: lib/Subscribers/ImportExport/Export/Export.php:170
1320
  msgid "All Lists"
1321
  msgstr ""
1322
 
1323
- #: lib/Models/Newsletter.php:555
1324
  #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
1325
  msgid "Draft"
1326
  msgstr ""
1327
 
1328
- #: lib/Models/Newsletter.php:563
1329
  #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
1330
  msgid "Scheduled"
1331
  msgstr ""
1332
 
1333
- #: lib/Models/Newsletter.php:571
1334
  msgid "Sending"
1335
  msgstr ""
1336
 
1337
- #: lib/Models/Newsletter.php:579
1338
  msgid "Sent"
1339
  msgstr ""
1340
 
1341
- #: lib/Models/Newsletter.php:593 views/newsletters.html:84
1342
  msgid "Active"
1343
  msgstr ""
1344
 
1345
- #: lib/Models/Newsletter.php:601
1346
  msgid "Not active"
1347
  msgstr ""
1348
 
@@ -1354,7 +1360,7 @@ msgstr ""
1354
  msgid "The template body cannot be empty."
1355
  msgstr ""
1356
 
1357
- #: lib/Models/Segment.php:114 views/subscribers/subscribers.html:83
1358
  msgid "WordPress Users"
1359
  msgstr ""
1360
 
@@ -1402,23 +1408,23 @@ msgstr ""
1402
  msgid "Subscribers without a list (%s)"
1403
  msgstr ""
1404
 
1405
- #: lib/Models/Subscriber.php:352 lib/Subscription/Pages.php:302
1406
- #: views/segments.html:30 views/subscribers/subscribers.html:53
1407
  msgid "Subscribed"
1408
  msgstr ""
1409
 
1410
  #: lib/Models/Subscriber.php:357 views/segments.html:31
1411
- #: views/subscribers/subscribers.html:52
1412
  msgid "Unconfirmed"
1413
  msgstr ""
1414
 
1415
- #: lib/Models/Subscriber.php:362 lib/Subscription/Pages.php:310
1416
- #: views/segments.html:32 views/subscribers/subscribers.html:54
1417
  msgid "Unsubscribed"
1418
  msgstr ""
1419
 
1420
- #: lib/Models/Subscriber.php:367 lib/Subscription/Pages.php:318
1421
- #: views/segments.html:33 views/subscribers/subscribers.html:55
1422
  msgid "Bounced"
1423
  msgstr ""
1424
 
@@ -1429,7 +1435,7 @@ msgstr ""
1429
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:10
1430
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:107
1431
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:108
1432
- #: views/subscribers/subscribers.html:61
1433
  msgid "Subscriber"
1434
  msgstr ""
1435
 
@@ -1540,7 +1546,7 @@ msgid "Invalid router endpoint action"
1540
  msgstr ""
1541
 
1542
  #: lib/Settings/Pages.php:12 lib/Settings/Pages.php:13
1543
- #: lib/Settings/Pages.php:37 lib/Subscription/Pages.php:107
1544
  msgid "MailPoet Page"
1545
  msgstr ""
1546
 
@@ -1560,11 +1566,15 @@ msgstr ""
1560
  msgid "Not In Segment"
1561
  msgstr ""
1562
 
1563
- #: lib/Subscribers/ImportExport/Import/Import.php:66
1564
  msgid "Missing or invalid import data."
1565
  msgstr ""
1566
 
1567
- #: lib/Subscribers/ImportExport/Import/Import.php:128
 
 
 
 
1568
  msgid "Unable to save imported subscribers."
1569
  msgstr ""
1570
 
@@ -1599,8 +1609,8 @@ msgid "Not In List"
1599
  msgstr ""
1600
 
1601
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:35
1602
- #: lib/Subscription/Pages.php:298 views/newsletters.html:62
1603
- #: views/subscribers/subscribers.html:51 views/subscribers/subscribers.html:62
1604
  msgid "Status"
1605
  msgstr ""
1606
 
@@ -1637,77 +1647,77 @@ msgstr ""
1637
  msgid "Yes, please add me to your mailing list."
1638
  msgstr ""
1639
 
1640
- #: lib/Subscription/Pages.php:103
1641
  msgid "Hmmm... we don't have a record of you."
1642
  msgstr ""
1643
 
1644
- #: lib/Subscription/Pages.php:133
1645
  msgid ""
1646
  "Your email address doesn't appear in our lists anymore. Sign up again or "
1647
  "contact us if this appears to be a mistake."
1648
  msgstr ""
1649
 
1650
- #: lib/Subscription/Pages.php:177 lib/Subscription/Pages.php:189
1651
  msgid "You have subscribed to: %s"
1652
  msgstr ""
1653
 
1654
- #: lib/Subscription/Pages.php:186
1655
  msgid "You are now subscribed!"
1656
  msgstr ""
1657
 
1658
- #: lib/Subscription/Pages.php:199 lib/Subscription/Pages.php:417
1659
  msgid "Manage your subscription"
1660
  msgstr ""
1661
 
1662
- #: lib/Subscription/Pages.php:205
1663
  msgid "You are now unsubscribed."
1664
  msgstr ""
1665
 
1666
- #: lib/Subscription/Pages.php:212
1667
  msgid "Yup, we've added you to our email list. You'll hear from us shortly."
1668
  msgstr ""
1669
 
1670
- #: lib/Subscription/Pages.php:341
1671
  msgid "Your lists"
1672
  msgstr ""
1673
 
1674
- #: lib/Subscription/Pages.php:349 views/form/editor.html:29
1675
  #: views/form/editor.html:382 views/newsletter/templates/components/save.hbs:3
1676
- #: views/segments.html:56 views/subscribers/subscribers.html:93
1677
  msgid "Save"
1678
  msgstr ""
1679
 
1680
- #: lib/Subscription/Pages.php:381
1681
  msgid "[link]Edit your profile[/link] to update your email."
1682
  msgstr ""
1683
 
1684
- #: lib/Subscription/Pages.php:387
1685
  msgid "[link]Log in to your account[/link] to update your email."
1686
  msgstr ""
1687
 
1688
- #: lib/Subscription/Pages.php:391
1689
  msgid ""
1690
  "Need to change your email address? Unsubscribe here, then simply sign up "
1691
  "again."
1692
  msgstr ""
1693
 
1694
- #: lib/Subscription/Pages.php:405
1695
  msgid "Accidentally unsubscribed?"
1696
  msgstr ""
1697
 
1698
- #: lib/Twig/Functions.php:83 views/settings/mta.html:1047
1699
  msgid "every minute"
1700
  msgstr ""
1701
 
1702
- #: lib/Twig/Functions.php:84 views/settings/mta.html:1048
1703
  msgid "every %1$d minutes"
1704
  msgstr ""
1705
 
1706
- #: lib/Twig/Functions.php:85 views/settings/mta.html:1049
1707
  msgid "every hour"
1708
  msgstr ""
1709
 
1710
- #: lib/Twig/Functions.php:86 views/settings/mta.html:1050
1711
  msgid "every %1$d hours"
1712
  msgstr ""
1713
 
@@ -1732,7 +1742,7 @@ msgid "Form"
1732
  msgstr ""
1733
 
1734
  #: views/form/editor.html:6 views/segments.html:68
1735
- #: views/subscribers/subscribers.html:94
1736
  msgid "Back"
1737
  msgstr ""
1738
 
@@ -1892,9 +1902,10 @@ msgstr ""
1892
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
1893
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
1894
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
1895
- #: views/settings/advanced.html:93 views/settings/advanced.html:133
1896
- #: views/settings/bounce.html:190 views/settings/mta.html:587
1897
- #: views/settings/signup.html:34 views/subscribers/importExport/export.html:33
 
1898
  #: views/subscribers/importExport/import/step2.html:66
1899
  msgid "Yes"
1900
  msgstr ""
@@ -1910,10 +1921,11 @@ msgstr ""
1910
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
1911
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
1912
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
1913
- #: views/settings/advanced.html:104 views/settings/advanced.html:144
1914
- #: views/settings/bounce.html:148 views/settings/bounce.html:179
1915
- #: views/settings/mta.html:550 views/settings/mta.html:598
1916
- #: views/settings/signup.html:46 views/subscribers/importExport/export.html:38
 
1917
  #: views/subscribers/importExport/import/step2.html:70
1918
  msgid "No"
1919
  msgstr ""
@@ -2049,7 +2061,7 @@ msgid "An error occurred, make sure you have filled all the required fields."
2049
  msgstr ""
2050
 
2051
  #: views/forms.html:17 views/newsletters.html:29 views/segments.html:14
2052
- #: views/subscribers/subscribers.html:18
2053
  msgid "Search"
2054
  msgstr ""
2055
 
@@ -2074,7 +2086,7 @@ msgid "Select all forms on all pages"
2074
  msgstr ""
2075
 
2076
  #: views/forms.html:23 views/newsletters.html:35 views/segments.html:20
2077
- #: views/subscribers/subscribers.html:24
2078
  msgid "Clear selection"
2079
  msgstr ""
2080
 
@@ -2083,81 +2095,81 @@ msgid "%d forms permanently deleted."
2083
  msgstr ""
2084
 
2085
  #: views/forms.html:25 views/newsletters.html:37 views/segments.html:22
2086
- #: views/subscribers/subscribers.html:26
2087
  msgid "Select bulk action"
2088
  msgstr ""
2089
 
2090
  #: views/forms.html:26 views/newsletters.html:38 views/segments.html:23
2091
- #: views/subscribers/subscribers.html:27
2092
  msgid "Bulk Actions"
2093
  msgstr ""
2094
 
2095
  #: views/forms.html:27 views/newsletters.html:39 views/segments.html:24
2096
- #: views/subscribers/subscribers.html:28
2097
  msgid "Apply"
2098
  msgstr ""
2099
 
2100
  #: views/forms.html:28 views/newsletters.html:40
2101
- #: views/subscribers/subscribers.html:29
2102
  msgid "Filter"
2103
  msgstr ""
2104
 
2105
  #: views/forms.html:29 views/newsletters.html:41 views/segments.html:52
2106
- #: views/subscribers/subscribers.html:30
2107
  msgid "Empty Trash"
2108
  msgstr ""
2109
 
2110
  #: views/forms.html:30 views/newsletters.html:42 views/segments.html:53
2111
- #: views/subscribers/subscribers.html:31
2112
  msgid "Select All"
2113
  msgstr ""
2114
 
2115
  #: views/forms.html:31 views/newsletters.html:43 views/segments.html:54
2116
- #: views/subscribers/subscribers.html:33
2117
  msgid "Restore"
2118
  msgstr ""
2119
 
2120
  #: views/forms.html:32 views/newsletters.html:44
2121
- #: views/subscribers/subscribers.html:36
2122
  msgid "Delete Permanently"
2123
  msgstr ""
2124
 
2125
  #: views/forms.html:34 views/newsletters.html:47 views/segments.html:58
2126
- #: views/subscribers/subscribers.html:39
2127
  msgid "Previous page"
2128
  msgstr ""
2129
 
2130
  #: views/forms.html:35 views/newsletters.html:48 views/segments.html:59
2131
- #: views/subscribers/subscribers.html:40
2132
  msgid "First page"
2133
  msgstr ""
2134
 
2135
  #: views/forms.html:36 views/newsletters.html:49 views/segments.html:60
2136
- #: views/subscribers/subscribers.html:41
2137
  msgid "Next page"
2138
  msgstr ""
2139
 
2140
  #: views/forms.html:37 views/newsletters.html:50 views/segments.html:61
2141
- #: views/subscribers/subscribers.html:42
2142
  msgid "Last page"
2143
  msgstr ""
2144
 
2145
- #: views/forms.html:38 views/subscribers/subscribers.html:43
2146
  msgid "Current Page"
2147
  msgstr ""
2148
 
2149
  #: views/forms.html:39 views/newsletters.html:52 views/segments.html:63
2150
- #: views/subscribers/subscribers.html:44
2151
  msgid "of"
2152
  msgstr ""
2153
 
2154
  #: views/forms.html:40 views/newsletters.html:53 views/segments.html:64
2155
- #: views/subscribers/subscribers.html:45
2156
  msgid "1 item"
2157
  msgstr ""
2158
 
2159
  #: views/forms.html:41 views/newsletters.html:54 views/segments.html:65
2160
- #: views/subscribers/subscribers.html:46
2161
  msgid "%$1d items"
2162
  msgstr ""
2163
 
@@ -2203,7 +2215,7 @@ msgid "%$1d forms have been restored from the trash."
2203
  msgstr ""
2204
 
2205
  #: views/forms.html:54 views/newsletters.html:78 views/segments.html:49
2206
- #: views/subscribers/subscribers.html:32
2207
  msgid "Edit"
2208
  msgstr ""
2209
 
@@ -2216,12 +2228,12 @@ msgid "Form \"%$1s\" has been duplicated."
2216
  msgstr ""
2217
 
2218
  #: views/forms.html:58 views/newsletters.html:77 views/segments.html:51
2219
- #: views/subscribers/subscribers.html:35
2220
  msgid "Move to trash"
2221
  msgstr ""
2222
 
2223
  #: views/forms.html:59 views/newsletters.html:91 views/segments.html:48
2224
- #: views/subscribers/subscribers.html:90
2225
  msgid "Add New"
2226
  msgstr ""
2227
 
@@ -2252,7 +2264,7 @@ msgid "You've reached the %d subscribers limit!"
2252
  msgstr ""
2253
 
2254
  #: views/limit.html:9
2255
- msgid "MailPoet 3 is currently limited to %d subscribers."
2256
  msgstr ""
2257
 
2258
  #: views/limit.html:19
@@ -2263,12 +2275,12 @@ msgstr ""
2263
  msgid "Delete unconfirmed subscribers to have less than %d subscribers."
2264
  msgstr ""
2265
 
2266
- #: views/limit.html:23
2267
- msgid "Contact us"
2268
  msgstr ""
2269
 
2270
- #: views/limit.html:24
2271
- msgid "to become a Premium beta tester."
2272
  msgstr ""
2273
 
2274
  #: views/newsletter/editor.html:233 views/newsletters.html:56
@@ -2598,6 +2610,7 @@ msgstr ""
2598
 
2599
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
2600
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:111
 
2601
  msgid "None"
2602
  msgstr ""
2603
 
@@ -2902,7 +2915,7 @@ msgstr ""
2902
  msgid "Preview text (usually displayed underneath the subject line in the inbox)"
2903
  msgstr ""
2904
 
2905
- #: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:226
2906
  msgid "Next"
2907
  msgstr ""
2908
 
@@ -2997,7 +3010,7 @@ msgstr ""
2997
 
2998
  #: views/newsletters.html:45 views/subscribers/importExport/import/step2.html:8
2999
  #: views/subscribers/importExport/import.html:47
3000
- #: views/subscribers/subscribers.html:37
3001
  msgid "Show more details"
3002
  msgstr ""
3003
 
@@ -3025,7 +3038,7 @@ msgstr ""
3025
  msgid "Created on"
3026
  msgstr ""
3027
 
3028
- #: views/newsletters.html:69 views/subscribers/subscribers.html:65
3029
  msgid "Last modified on"
3030
  msgstr ""
3031
 
@@ -3120,8 +3133,8 @@ msgstr ""
3120
  #: views/newsletters.html:99
3121
  msgid ""
3122
  "Above 30% is excellent.\\\\n"
3123
- "Between 15 and 30% is good.\\\\n"
3124
- "Under 15% is bad."
3125
  msgstr ""
3126
 
3127
  #: views/newsletters.html:100
@@ -3202,420 +3215,577 @@ msgid ""
3202
  "WordPress users. Send a day, a week, or a month after they sign up."
3203
  msgstr ""
3204
 
3205
- #: views/newsletters.html:124
3206
- msgid "Set up"
3207
  msgstr ""
3208
 
3209
  #: views/newsletters.html:125
3210
- msgid "Latest Post Notifications"
3211
  msgstr ""
3212
 
3213
  #: views/newsletters.html:126
 
 
 
 
3214
  msgid ""
3215
  "Let MailPoet email your subscribers with your latest content. You can send "
3216
  "daily, weekly, monthly, or even immediately after publication."
3217
  msgstr ""
3218
 
3219
- #: views/newsletters.html:127
3220
  msgid "Select a frequency"
3221
  msgstr ""
3222
 
3223
- #: views/newsletters.html:128
3224
  msgid ""
3225
  "Insert [newsletter:total] to show number of posts, [newsletter:post_title] "
3226
  "to show the latest post's title & [newsletter:number] to display the issue "
3227
  "number."
3228
  msgstr ""
3229
 
3230
- #: views/newsletters.html:129 views/settings/mta.html:653
 
3231
  msgid "Activate"
3232
  msgstr ""
3233
 
3234
- #: views/newsletters.html:130
3235
  msgid "Send this Welcome Email when..."
3236
  msgstr ""
3237
 
3238
- #: views/newsletters.html:132
3239
  msgid "Once a day at..."
3240
  msgstr ""
3241
 
3242
- #: views/newsletters.html:133
3243
  msgid "Weekly on..."
3244
  msgstr ""
3245
 
3246
- #: views/newsletters.html:134
3247
  msgid "Monthly on the..."
3248
  msgstr ""
3249
 
3250
- #: views/newsletters.html:135
3251
  msgid "Monthly every..."
3252
  msgstr ""
3253
 
3254
- #: views/newsletters.html:136
3255
  msgid "Immediately"
3256
  msgstr ""
3257
 
3258
- #: views/newsletters.html:137
3259
  msgid "Sunday"
3260
  msgstr ""
3261
 
3262
- #: views/newsletters.html:138
3263
  msgid "Monday"
3264
  msgstr ""
3265
 
3266
- #: views/newsletters.html:139
3267
  msgid "Tuesday"
3268
  msgstr ""
3269
 
3270
- #: views/newsletters.html:140
3271
  msgid "Wednesday"
3272
  msgstr ""
3273
 
3274
- #: views/newsletters.html:141
3275
  msgid "Thursday"
3276
  msgstr ""
3277
 
3278
- #: views/newsletters.html:142
3279
  msgid "Friday"
3280
  msgstr ""
3281
 
3282
- #: views/newsletters.html:143
3283
  msgid "Saturday"
3284
  msgstr ""
3285
 
3286
- #: views/newsletters.html:144
3287
  msgid "1st"
3288
  msgstr ""
3289
 
3290
- #: views/newsletters.html:145
3291
  msgid "2nd"
3292
  msgstr ""
3293
 
3294
- #: views/newsletters.html:146
3295
  msgid "3rd"
3296
  msgstr ""
3297
 
3298
- #: views/newsletters.html:147
3299
  msgid "%$1dth"
3300
  msgstr ""
3301
 
3302
- #: views/newsletters.html:151
3303
  msgid "When is this Welcome Email sent?"
3304
  msgstr ""
3305
 
3306
- #: views/newsletters.html:153
3307
  msgid "When someone subscribes to the list..."
3308
  msgstr ""
3309
 
3310
- #: views/newsletters.html:154
3311
  msgid "When a new WordPress user is added to your site..."
3312
  msgstr ""
3313
 
3314
- #: views/newsletters.html:155
3315
  msgid "immediately"
3316
  msgstr ""
3317
 
3318
- #: views/newsletters.html:156
3319
  msgid "hour(s) later"
3320
  msgstr ""
3321
 
3322
- #: views/newsletters.html:157
3323
  msgid "day(s) later"
3324
  msgstr ""
3325
 
3326
- #: views/newsletters.html:158
3327
  msgid "week(s) later"
3328
  msgstr ""
3329
 
3330
- #: views/newsletters.html:160
3331
  msgid "Subject line"
3332
  msgstr ""
3333
 
3334
- #: views/newsletters.html:161
3335
  msgid ""
3336
  "Be creative! It's the first thing that your subscribers see. Tempt them to "
3337
  "open your email."
3338
  msgstr ""
3339
 
3340
- #: views/newsletters.html:162
3341
  msgid "Please specify a subject"
3342
  msgstr ""
3343
 
3344
- #: views/newsletters.html:164
3345
  msgid "This subscriber segment will be used for this email."
3346
  msgstr ""
3347
 
3348
- #: views/newsletters.html:165 views/subscribers/subscribers.html:56
3349
  msgid "Select a list"
3350
  msgstr ""
3351
 
3352
- #: views/newsletters.html:167
3353
  msgid "Sender"
3354
  msgstr ""
3355
 
3356
- #: views/newsletters.html:168
3357
  msgid "Your name and email"
3358
  msgstr ""
3359
 
3360
- #: views/newsletters.html:169 views/newsletters.html:173
3361
  msgid "John Doe"
3362
  msgstr ""
3363
 
3364
- #: views/newsletters.html:170 views/newsletters.html:174
3365
  msgid "john.doe@email.com"
3366
  msgstr ""
3367
 
3368
- #: views/newsletters.html:171 views/settings/basics.html:29
3369
  #: views/settings/signup.html:85
3370
  msgid "Reply-to"
3371
  msgstr ""
3372
 
3373
- #: views/newsletters.html:172
3374
  msgid ""
3375
  "When your subscribers reply to your emails, their emails will go to this "
3376
  "address."
3377
  msgstr ""
3378
 
3379
- #: views/newsletters.html:175
3380
  msgid "Email was updated successfully!"
3381
  msgstr ""
3382
 
3383
- #: views/newsletters.html:176
3384
  msgid "Email was added successfully!"
3385
  msgstr ""
3386
 
3387
- #: views/newsletters.html:177
3388
  msgid ""
3389
  "An error occurred while trying to send. <a href=\"%$1s\">Please check your "
3390
  "settings</a>."
3391
  msgstr ""
3392
 
3393
- #: views/newsletters.html:178
3394
  msgid "Final Step: Last Details"
3395
  msgstr ""
3396
 
3397
- #: views/newsletters.html:179
3398
  msgid "Save as draft and close"
3399
  msgstr ""
3400
 
3401
- #: views/newsletters.html:180
3402
  msgid "or simply"
3403
  msgstr ""
3404
 
3405
- #: views/newsletters.html:181
3406
  msgid "go back to the Design page"
3407
  msgstr ""
3408
 
3409
- #: views/newsletters.html:182
3410
  msgid "Your website’s time is"
3411
  msgstr ""
3412
 
3413
- #: views/newsletters.html:183
3414
  msgid "Please enter the scheduled date."
3415
  msgstr ""
3416
 
3417
- #: views/newsletters.html:184
3418
  msgid "Schedule"
3419
  msgstr ""
3420
 
3421
- #: views/newsletters.html:186
3422
  msgid "Close"
3423
  msgstr ""
3424
 
3425
- #: views/newsletters.html:187
3426
  msgid "Today"
3427
  msgstr ""
3428
 
3429
- #: views/newsletters.html:200
3430
  msgid "Jan"
3431
  msgstr ""
3432
 
3433
- #: views/newsletters.html:201
3434
  msgid "Feb"
3435
  msgstr ""
3436
 
3437
- #: views/newsletters.html:202
3438
  msgid "Mar"
3439
  msgstr ""
3440
 
3441
- #: views/newsletters.html:203
3442
  msgid "Apr"
3443
  msgstr ""
3444
 
3445
- #: views/newsletters.html:205
3446
  msgid "Jun"
3447
  msgstr ""
3448
 
3449
- #: views/newsletters.html:206
3450
  msgid "Jul"
3451
  msgstr ""
3452
 
3453
- #: views/newsletters.html:207
3454
  msgid "Aug"
3455
  msgstr ""
3456
 
3457
- #: views/newsletters.html:208
3458
  msgid "Sep"
3459
  msgstr ""
3460
 
3461
- #: views/newsletters.html:209
3462
  msgid "Oct"
3463
  msgstr ""
3464
 
3465
- #: views/newsletters.html:210
3466
  msgid "Nov"
3467
  msgstr ""
3468
 
3469
- #: views/newsletters.html:211
3470
  msgid "Dec"
3471
  msgstr ""
3472
 
3473
- #: views/newsletters.html:212
3474
  msgid "Sun"
3475
  msgstr ""
3476
 
3477
- #: views/newsletters.html:213
3478
  msgid "Mon"
3479
  msgstr ""
3480
 
3481
- #: views/newsletters.html:214
3482
  msgid "Tue"
3483
  msgstr ""
3484
 
3485
- #: views/newsletters.html:215
3486
  msgid "Wed"
3487
  msgstr ""
3488
 
3489
- #: views/newsletters.html:216
3490
  msgid "Thu"
3491
  msgstr ""
3492
 
3493
- #: views/newsletters.html:217
3494
  msgid "Fri"
3495
  msgstr ""
3496
 
3497
- #: views/newsletters.html:218
3498
  msgid "Sat"
3499
  msgstr ""
3500
 
3501
- #: views/newsletters.html:227
3502
  msgid "Previous"
3503
  msgstr ""
3504
 
3505
- #: views/newsletters.html:228
3506
  msgid "The newsletter is being sent..."
3507
  msgstr ""
3508
 
3509
- #: views/newsletters.html:229
3510
  msgid "The newsletter has been scheduled."
3511
  msgstr ""
3512
 
3513
- #: views/newsletters.html:230
3514
  msgid "Your Welcome Email is now activated!"
3515
  msgstr ""
3516
 
3517
- #: views/newsletters.html:231
3518
  msgid "Your Welcome Email could not be activated, please check the settings."
3519
  msgstr ""
3520
 
3521
- #: views/newsletters.html:232
3522
  msgid "Your post notification is now active!"
3523
  msgstr ""
3524
 
3525
- #: views/newsletters.html:233
3526
  msgid "Your Post Notification could not be activated, check the settings."
3527
  msgstr ""
3528
 
3529
- #: views/newsletters.html:234
3530
  msgid "This newsletter is sent when someone subscribes to the list: \"%$1s\""
3531
  msgstr ""
3532
 
3533
- #: views/newsletters.html:235
3534
  msgid "This newsletter is sent when a new WordPress user is added to your site"
3535
  msgstr ""
3536
 
3537
- #: views/newsletters.html:236
3538
  msgid ""
3539
  "This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
3540
  "added to your site"
3541
  msgstr ""
3542
 
3543
- #: views/newsletters.html:237
3544
  msgid "%$1d hour(s) later"
3545
  msgstr ""
3546
 
3547
- #: views/newsletters.html:238
3548
  msgid "%$1d day(s) later"
3549
  msgstr ""
3550
 
3551
- #: views/newsletters.html:239
3552
  msgid "%$1d week(s) later"
3553
  msgstr ""
3554
 
3555
- #: views/newsletters.html:240
3556
  msgid "Send daily at %$1s"
3557
  msgstr ""
3558
 
3559
- #: views/newsletters.html:241
3560
  msgid "Send weekly on %$1s at %$2s"
3561
  msgstr ""
3562
 
3563
- #: views/newsletters.html:242
3564
  msgid "Send monthly on the %$1s at %$2s"
3565
  msgstr ""
3566
 
3567
- #: views/newsletters.html:243
3568
  msgid "Send every %$1s %$2s of the month at %$3s"
3569
  msgstr ""
3570
 
3571
- #: views/newsletters.html:244
3572
  msgid "Send immediately"
3573
  msgstr ""
3574
 
3575
- #: views/newsletters.html:245
3576
  msgid "if there's new content to %$1s."
3577
  msgstr ""
3578
 
3579
- #: views/newsletters.html:246
3580
  msgid "You need to select a list to send to."
3581
  msgstr ""
3582
 
3583
- #: views/newsletters.html:248
3584
  msgid "Back to Post notifications"
3585
  msgstr ""
3586
 
3587
- #: views/newsletters.html:249
3588
  msgid "Sent on"
3589
  msgstr ""
3590
 
3591
- #: views/newsletters.html:250
3592
  msgid "No subscribers!"
3593
  msgstr ""
3594
 
3595
- #: views/newsletters.html:252
3596
  msgid ""
3597
  "Sending is paused because %$1s prevents MailPoet from delivering emails "
3598
  "with the following error: %$2s"
3599
  msgstr ""
3600
 
3601
- #: views/newsletters.html:253
3602
  msgid ""
3603
  "Sending is paused because the following connection issue prevents MailPoet "
3604
  "from delivering emails: %$1s"
3605
  msgstr ""
3606
 
3607
- #: views/newsletters.html:254
3608
  msgid "Check your [link]sending method settings[/link]."
3609
  msgstr ""
3610
 
3611
- #: views/newsletters.html:255
3612
  msgid "Resume sending"
3613
  msgstr ""
3614
 
3615
- #: views/newsletters.html:256
3616
  msgid "Sending has been resumed."
3617
  msgstr ""
3618
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3619
  #: views/segments.html:15
3620
  msgid "Loading lists..."
3621
  msgstr ""
@@ -3923,11 +4093,11 @@ msgstr ""
3923
  msgid "Hostname"
3924
  msgstr ""
3925
 
3926
- #: views/settings/bounce.html:50 views/settings/mta.html:511
3927
  msgid "Login"
3928
  msgstr ""
3929
 
3930
- #: views/settings/bounce.html:67 views/settings/mta.html:528
3931
  msgid "Password"
3932
  msgstr ""
3933
 
@@ -3979,229 +4149,213 @@ msgstr ""
3979
  msgid "Is it working? Try to connect"
3980
  msgstr ""
3981
 
3982
- #: views/settings/mta.html:61
3983
  msgid "You're now sending with MailPoet!"
3984
  msgstr ""
3985
 
3986
- #: views/settings/mta.html:63
3987
  msgid "Great, you're all set up. Your emails will now be sent quickly and reliably!"
3988
  msgstr ""
3989
 
3990
- #: views/settings/mta.html:70
3991
  msgid "Solve all of your sending problems!"
3992
  msgstr ""
3993
 
3994
- #: views/settings/mta.html:72
3995
  msgid ""
3996
- "We offer affordable email packages with speeds up to 50 times faster than "
3997
- "the competition."
3998
  msgstr ""
3999
 
4000
- #: views/settings/mta.html:79
4001
- msgid "View Email Plans"
4002
  msgstr ""
4003
 
4004
- #: views/settings/mta.html:83 views/settings/mta.html:105
4005
- #: views/settings/mta.html:127
4006
  msgid "Activated"
4007
  msgstr ""
4008
 
4009
- #: views/settings/mta.html:89 views/settings/mta.html:111
4010
- #: views/settings/mta.html:133
4011
- msgid "Configure"
4012
- msgstr ""
4013
-
4014
- #: views/settings/mta.html:96
4015
  msgid "Your web host / web server"
4016
  msgstr ""
4017
 
4018
- #: views/settings/mta.html:99
4019
  msgid "Free, but not recommended"
4020
  msgstr ""
4021
 
4022
- #: views/settings/mta.html:101
4023
  msgid ""
4024
  "Web hosts generally have a bad reputation as a sender. Your newsletter will "
4025
  "probably be considered spam."
4026
  msgstr ""
4027
 
4028
- #: views/settings/mta.html:118
 
 
 
 
4029
  msgid "Third-party"
4030
  msgstr ""
4031
 
4032
- #: views/settings/mta.html:121
4033
  msgid "For SMTP, SendGrid or Amazon SES"
4034
  msgstr ""
4035
 
4036
- #: views/settings/mta.html:123
4037
  msgid "We only recommend using a third-party service if you are a technical user."
4038
  msgstr ""
4039
 
4040
- #: views/settings/mta.html:145
4041
- msgid "Already have a key?"
4042
- msgstr ""
4043
-
4044
- #: views/settings/mta.html:151
4045
- msgid "Your key"
4046
- msgstr ""
4047
-
4048
- #: views/settings/mta.html:165 views/settings/premium.html:25
4049
- #: views/subscribers/importExport/import/step1.html:84
4050
- msgid "Verify"
4051
  msgstr ""
4052
 
4053
- #: views/settings/mta.html:182 views/settings/mta.html:315
4054
  msgid "Sending frequency"
4055
  msgstr ""
4056
 
4057
- #: views/settings/mta.html:193
4058
  msgid "Safe default values"
4059
  msgstr ""
4060
 
4061
- #: views/settings/mta.html:201
4062
  msgid "I'll set my own frequency"
4063
  msgstr ""
4064
 
4065
- #: views/settings/mta.html:206
4066
  msgid "Input your host's recommended sending frequency"
4067
  msgstr ""
4068
 
4069
- #: views/settings/mta.html:239 views/settings/mta.html:332
4070
  msgid "emails"
4071
  msgstr ""
4072
 
4073
- #: views/settings/mta.html:256 views/settings/mta.html:349
4074
  msgid "recommended"
4075
  msgstr ""
4076
 
4077
- #: views/settings/mta.html:265
4078
  msgid ""
4079
  "<strong>Warning!</strong> Sending more than the recommended amount of "
4080
  "emails? You may break the terms of your web host or provider!"
4081
  msgstr ""
4082
 
4083
- #: views/settings/mta.html:267
4084
  msgid ""
4085
  "Please ask your host for the maximum number of emails you are allowed to "
4086
  "send per day."
4087
  msgstr ""
4088
 
4089
- #: views/settings/mta.html:283
4090
  msgid "Provider"
4091
  msgstr ""
4092
 
4093
- #: views/settings/mta.html:293
4094
  msgid "Custom SMTP"
4095
  msgstr ""
4096
 
4097
- #: views/settings/mta.html:296
4098
  msgid "Select your provider"
4099
  msgstr ""
4100
 
4101
- #: views/settings/mta.html:362
4102
  msgid "SMTP Hostname"
4103
  msgstr ""
4104
 
4105
- #: views/settings/mta.html:365 views/settings/mta.html:476
4106
  msgid "e.g.: smtp.mydomain.com"
4107
  msgstr ""
4108
 
4109
- #: views/settings/mta.html:381
4110
  msgid "SMTP Port"
4111
  msgstr ""
4112
 
4113
- #: views/settings/mta.html:402
4114
  msgid "Region"
4115
  msgstr ""
4116
 
4117
- #: views/settings/mta.html:431
4118
  msgid "Access Key"
4119
  msgstr ""
4120
 
4121
- #: views/settings/mta.html:452
4122
  msgid "Secret Key"
4123
  msgstr ""
4124
 
4125
- #: views/settings/mta.html:473
4126
  msgid "Domain"
4127
  msgstr ""
4128
 
4129
- #: views/settings/mta.html:493
4130
  msgid "API Key"
4131
  msgstr ""
4132
 
4133
- #: views/settings/mta.html:545
4134
  msgid "Secure Connection"
4135
  msgstr ""
4136
 
4137
- #: views/settings/mta.html:570
4138
  msgid "Authentication"
4139
  msgstr ""
4140
 
4141
- #: views/settings/mta.html:573
4142
  msgid ""
4143
  "Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
4144
  "Authentication to be turned off."
4145
  msgstr ""
4146
 
4147
- #: views/settings/mta.html:612
4148
  msgid "SPF Signature (Highly recommended!)"
4149
  msgstr ""
4150
 
4151
- #: views/settings/mta.html:615
4152
  msgid ""
4153
  "This improves your delivery rate by verifying that you're allowed to send "
4154
  "emails from your domain."
4155
  msgstr ""
4156
 
4157
- #: views/settings/mta.html:620
4158
  msgid ""
4159
  "SPF is set up in your DNS. Read your host's support documentation for more "
4160
  "information."
4161
  msgstr ""
4162
 
4163
- #: views/settings/mta.html:628
4164
  msgid "Test the sending method"
4165
  msgstr ""
4166
 
4167
- #: views/settings/mta.html:642
4168
  msgid "Send a test email"
4169
  msgstr ""
4170
 
4171
- #: views/settings/mta.html:658
4172
  msgid "or Cancel"
4173
  msgstr ""
4174
 
4175
- #: views/settings/mta.html:703
4176
  msgid ""
4177
  "The email could not be sent. Make sure the option \"Email notifications\" "
4178
  "has a FROM email address in the Basics tab."
4179
  msgstr ""
4180
 
4181
- #: views/settings/mta.html:716
4182
  msgid "This is a Sending Method Test"
4183
  msgstr ""
4184
 
4185
- #: views/settings/mta.html:718
4186
  msgid "Yup, it works! You can start blasting away emails to the moon."
4187
  msgstr ""
4188
 
4189
- #: views/settings/mta.html:727
4190
  msgid "The email has been sent! Check your inbox."
4191
  msgstr ""
4192
 
4193
- #: views/settings/mta.html:748
4194
- msgid "Please specify an API key before validating it."
4195
- msgstr ""
4196
-
4197
- #: views/settings/mta.html:809
4198
  msgid "You have selected an invalid sending method."
4199
  msgstr ""
4200
 
4201
- #: views/settings/mta.html:817
4202
- msgid "You need to specify a MailPoet account key."
4203
- msgstr ""
4204
-
4205
  #: views/settings/premium.html:7
4206
  msgid "Premium License Key"
4207
  msgstr ""
@@ -4212,15 +4366,28 @@ msgid ""
4212
  "to support."
4213
  msgstr ""
4214
 
4215
- #: views/settings/premium.html:50
4216
- msgid "Download Premium now."
 
 
 
 
 
4217
  msgstr ""
4218
 
4219
- #: views/settings/premium.html:52
4220
  msgid "[link]Read guide[/link] on how to install Premium."
4221
  msgstr ""
4222
 
4223
- #: views/settings/premium.html:77
 
 
 
 
 
 
 
 
4224
  msgid "Please specify a license key before validating it."
4225
  msgstr ""
4226
 
@@ -4298,30 +4465,26 @@ msgid ""
4298
  msgstr ""
4299
 
4300
  #: views/settings.html:18
4301
- msgid "Basics"
4302
  msgstr ""
4303
 
4304
  #: views/settings.html:19
4305
- msgid "Sign-up Confirmation"
4306
  msgstr ""
4307
 
4308
  #: views/settings.html:20
4309
- msgid "Send With..."
4310
  msgstr ""
4311
 
4312
  #: views/settings.html:21
4313
  msgid "Advanced"
4314
  msgstr ""
4315
 
4316
- #: views/settings.html:22
4317
- msgid "Premium"
4318
- msgstr ""
4319
-
4320
  #: views/settings.html:55
4321
  msgid "Save settings"
4322
  msgstr ""
4323
 
4324
- #: views/settings.html:94
4325
  msgid "Settings saved"
4326
  msgstr ""
4327
 
@@ -4582,129 +4745,138 @@ msgstr ""
4582
  msgid "%1$s existing subscribers were updated and added to %2$s."
4583
  msgstr ""
4584
 
4585
- #: views/subscribers/subscribers.html:19
4586
  msgid "Loading subscribers..."
4587
  msgstr ""
4588
 
4589
- #: views/subscribers/subscribers.html:20
4590
  msgid "No subscribers were found."
4591
  msgstr ""
4592
 
4593
- #: views/subscribers/subscribers.html:21
 
 
 
 
 
 
 
 
 
4594
  msgid "All subscribers on this page are selected."
4595
  msgstr ""
4596
 
4597
- #: views/subscribers/subscribers.html:22
4598
  msgid "All %d subscribers are selected."
4599
  msgstr ""
4600
 
4601
- #: views/subscribers/subscribers.html:23
4602
  msgid "Select all subscribers on all pages."
4603
  msgstr ""
4604
 
4605
- #: views/subscribers/subscribers.html:25
4606
  msgid "%d subscribers were permanently deleted."
4607
  msgstr ""
4608
 
4609
- #: views/subscribers/subscribers.html:48
4610
  msgid "E-mail"
4611
  msgstr ""
4612
 
4613
- #: views/subscribers/subscribers.html:57
4614
  msgid "Unsubscribed on %$1s"
4615
  msgstr ""
4616
 
4617
- #: views/subscribers/subscribers.html:58
4618
  msgid "Subscriber was updated successfully!"
4619
  msgstr ""
4620
 
4621
- #: views/subscribers/subscribers.html:59
4622
  msgid "Subscriber was added successfully!"
4623
  msgstr ""
4624
 
4625
- #: views/subscribers/subscribers.html:64
4626
  msgid "Subscribed on"
4627
  msgstr ""
4628
 
4629
- #: views/subscribers/subscribers.html:66
4630
  msgid "1 subscriber was moved to the trash."
4631
  msgstr ""
4632
 
4633
- #: views/subscribers/subscribers.html:67
4634
  msgid "%$1d subscribers were moved to the trash."
4635
  msgstr ""
4636
 
4637
- #: views/subscribers/subscribers.html:68
4638
  msgid "1 subscriber was permanently deleted."
4639
  msgstr ""
4640
 
4641
- #: views/subscribers/subscribers.html:69
4642
  msgid "%$1d subscribers were permanently deleted."
4643
  msgstr ""
4644
 
4645
- #: views/subscribers/subscribers.html:70
4646
  msgid "1 subscriber has been restored from the trash."
4647
  msgstr ""
4648
 
4649
- #: views/subscribers/subscribers.html:71
4650
  msgid "%$1d subscribers have been restored from the trash."
4651
  msgstr ""
4652
 
4653
- #: views/subscribers/subscribers.html:72
4654
  msgid "Move to list..."
4655
  msgstr ""
4656
 
4657
- #: views/subscribers/subscribers.html:73
4658
  msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
4659
  msgstr ""
4660
 
4661
- #: views/subscribers/subscribers.html:74
4662
  msgid "Add to list..."
4663
  msgstr ""
4664
 
4665
- #: views/subscribers/subscribers.html:75
4666
  msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
4667
  msgstr ""
4668
 
4669
- #: views/subscribers/subscribers.html:76
4670
  msgid "Remove from list..."
4671
  msgstr ""
4672
 
4673
- #: views/subscribers/subscribers.html:77
4674
  msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
4675
  msgstr ""
4676
 
4677
- #: views/subscribers/subscribers.html:78
4678
  msgid "Remove from all lists"
4679
  msgstr ""
4680
 
4681
- #: views/subscribers/subscribers.html:79
4682
  msgid "%$1d subscribers were removed from all lists."
4683
  msgstr ""
4684
 
4685
- #: views/subscribers/subscribers.html:80
4686
  msgid "Resend confirmation email"
4687
  msgstr ""
4688
 
4689
- #: views/subscribers/subscribers.html:81
4690
  msgid "%$1d confirmation emails have been sent."
4691
  msgstr ""
4692
 
4693
- #: views/subscribers/subscribers.html:82
4694
  msgid "Lists to which the subscriber was subscribed."
4695
  msgstr ""
4696
 
4697
- #: views/subscribers/subscribers.html:84
4698
  msgid ""
4699
  "This subscriber is a registered WordPress user. [link]Edit his/her "
4700
  "profile[/link] to change his/her email."
4701
  msgstr ""
4702
 
4703
- #: views/subscribers/subscribers.html:85
4704
  msgid "Tip:"
4705
  msgstr ""
4706
 
4707
- #: views/subscribers/subscribers.html:86
4708
  msgid ""
4709
  "Need to add new fields, like a telephone number or street address? You can "
4710
  "add custom fields by editing the subscription form on the Forms page."
@@ -4782,10 +4954,6 @@ msgid ""
4782
  "don't like</i>."
4783
  msgstr ""
4784
 
4785
- #: views/welcome.html:50
4786
- msgid "Find out more"
4787
- msgstr ""
4788
-
4789
  #: views/welcome.html:55
4790
  msgid "Yes, I want to help!"
4791
  msgstr ""
@@ -4858,47 +5026,47 @@ msgctxt "Verb"
4858
  msgid "Select"
4859
  msgstr ""
4860
 
4861
- #: views/newsletters.html:148
4862
  msgctxt "e.g. monthly every last Monday"
4863
  msgid "last"
4864
  msgstr ""
4865
 
4866
- #: views/newsletters.html:149
4867
  msgctxt "Button label: Next step"
4868
  msgid "Next"
4869
  msgstr ""
4870
 
4871
- #: views/newsletters.html:219
4872
  msgctxt "Sunday - one letter abbreviation"
4873
  msgid "S"
4874
  msgstr ""
4875
 
4876
- #: views/newsletters.html:220
4877
  msgctxt "Monday - one letter abbreviation"
4878
  msgid "M"
4879
  msgstr ""
4880
 
4881
- #: views/newsletters.html:221
4882
  msgctxt "Tuesday - one letter abbreviation"
4883
  msgid "T"
4884
  msgstr ""
4885
 
4886
- #: views/newsletters.html:222
4887
  msgctxt "Wednesday - one letter abbreviation"
4888
  msgid "W"
4889
  msgstr ""
4890
 
4891
- #: views/newsletters.html:223
4892
  msgctxt "Thursday - one letter abbreviation"
4893
  msgid "T"
4894
  msgstr ""
4895
 
4896
- #: views/newsletters.html:224
4897
  msgctxt "Friday - one letter abbreviation"
4898
  msgid "F"
4899
  msgstr ""
4900
 
4901
- #: views/newsletters.html:225
4902
  msgctxt "Saturday - one letter abbreviation"
4903
  msgid "S"
4904
  msgstr ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
+ "POT-Creation-Date: 2017-06-07 13:06:23+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
136
  msgid "This newsletter has not been sent yet."
137
  msgstr ""
138
 
139
+ #: lib/API/JSON/v1/Services.php:27 lib/API/JSON/v1/Services.php:76
140
  msgid "Please specify a key."
141
  msgstr ""
142
 
143
+ #: lib/API/JSON/v1/Services.php:43 views/settings/premium.html:40
144
+ msgid "Your MailPoet Sending Service key has been successfully validated."
145
  msgstr ""
146
 
147
+ #: lib/API/JSON/v1/Services.php:46
148
+ msgid "Your MailPoet Sending Service key expires on %s!"
149
  msgstr ""
150
 
151
+ #: lib/API/JSON/v1/Services.php:57 views/settings/premium.html:45
152
+ msgid "Your MailPoet Sending Service key is invalid."
153
  msgstr ""
154
 
155
+ #: lib/API/JSON/v1/Services.php:62
156
+ msgid ""
157
+ "Error validating MailPoet Sending Service key, please try again later "
158
+ "(code: %s)"
159
  msgstr ""
160
 
161
+ #: lib/API/JSON/v1/Services.php:92 views/settings/premium.html:30
162
+ msgid "Your Premium key has been successfully validated."
163
  msgstr ""
164
 
165
+ #: lib/API/JSON/v1/Services.php:95
166
+ msgid "Your Premium key expires on %s."
167
  msgstr ""
168
 
169
+ #: lib/API/JSON/v1/Services.php:109 views/settings/premium.html:35
170
+ msgid "Your Premium key is invalid."
171
  msgstr ""
172
 
173
  #: lib/API/JSON/v1/Services.php:112
174
+ msgid "Your Premium key is already used on another site."
175
  msgstr ""
176
 
177
  #: lib/API/JSON/v1/Services.php:117
178
+ msgid "Error validating Premium key, please try again later (code: %s)"
179
  msgstr ""
180
 
181
  #: lib/API/JSON/v1/Settings.php:20
198
 
199
  #: lib/API/MP/v1/API.php:21
200
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:33
201
+ #: lib/Subscription/Pages.php:278 views/form/editor.html:225
202
+ #: views/form/editor.html:228 views/subscribers/subscribers.html:52
203
  msgid "First name"
204
  msgstr ""
205
 
206
  #: lib/API/MP/v1/API.php:25
207
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:34
208
+ #: lib/Subscription/Pages.php:287 views/form/editor.html:234
209
+ #: views/form/editor.html:237 views/subscribers/subscribers.html:53
210
  msgid "Last name"
211
  msgstr ""
212
 
235
  msgstr ""
236
 
237
  #: lib/Config/Menu.php:112 lib/Config/Menu.php:113
238
+ #: views/subscribers/subscribers.html:18
239
  msgid "Subscribers"
240
  msgstr ""
241
 
242
  #: lib/Config/Menu.php:135 lib/Config/Menu.php:136 views/forms.html:44
243
+ #: views/newsletters.html:64 views/newsletters.html:164 views/segments.html:13
244
+ #: views/subscribers/subscribers.html:66
245
  msgid "Lists"
246
  msgstr ""
247
 
250
  msgid "Settings"
251
  msgstr ""
252
 
253
+ #: lib/Config/Menu.php:172 lib/Config/Menu.php:173 views/settings.html:22
254
+ msgid "Premium"
255
+ msgstr ""
256
+
257
+ #: lib/Config/Menu.php:184 lib/Config/Menu.php:185
258
  #: views/subscribers/importExport/import.html:7
259
+ #: views/subscribers/subscribers.html:94
260
  msgid "Import"
261
  msgstr ""
262
 
263
+ #: lib/Config/Menu.php:196 lib/Config/Menu.php:197
264
  #: views/subscribers/importExport/export.html:6
265
  #: views/subscribers/importExport/export.html:96
266
+ #: views/subscribers/subscribers.html:95
267
  msgid "Export"
268
  msgstr ""
269
 
270
+ #: lib/Config/Menu.php:208 lib/Config/Menu.php:209 views/update.html:20
271
  #: views/welcome.html:29
272
  msgid "Welcome"
273
  msgstr ""
274
 
275
+ #: lib/Config/Menu.php:220 lib/Config/Menu.php:221 views/segments.html:43
276
  msgid "Update"
277
  msgstr ""
278
 
279
+ #: lib/Config/Menu.php:232 lib/Config/Menu.php:233
280
  msgid "Form Editor"
281
  msgstr ""
282
 
283
+ #: lib/Config/Menu.php:244 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
284
  #: views/newsletter/templates/components/sidebar/styles.hbs:74
285
  #: views/newsletters.html:119
286
  msgid "Newsletter"
287
  msgstr ""
288
 
289
+ #: lib/Config/Menu.php:245 views/newsletter/editor.html:228
290
  msgid "Newsletter Editor"
291
  msgstr ""
292
 
293
+ #: lib/Config/Menu.php:445
294
  msgid "In any WordPress role"
295
  msgstr ""
296
 
297
+ #: lib/Config/Menu.php:521 views/premium.html:37
298
  msgid "MailPoet"
299
  msgstr ""
300
 
1049
  "fix this issue."
1050
  msgstr ""
1051
 
1052
+ #: lib/Config/ServicesChecker.php:29
1053
  msgid ""
1054
  "All sending is currently paused! Your key to send with MailPoet is invalid. "
1055
  "[link]Visit MailPoet.com to purchase a key[/link]"
1056
  msgstr ""
1057
 
1058
+ #: lib/Config/ServicesChecker.php:42
1059
  msgid ""
1060
  "Your newsletters are awesome! Don't forget to [link]upgrade your MailPoet "
1061
  "email plan[/link] by %s to keep sending them to your subscribers."
1062
  msgstr ""
1063
 
1064
+ #: lib/Config/ServicesChecker.php:72
1065
  msgid ""
1066
  "Warning! Your License Key is either invalid or expired. [link]Renew your "
1067
  "License now[/link] to enjoy automatic updates and Premium support."
1068
  msgstr ""
1069
 
1070
+ #: lib/Config/ServicesChecker.php:85
1071
  msgid ""
1072
  "Your License Key is expiring! Don't forget to [link]renew your "
1073
  "license[/link] by %s to keep enjoying automatic updates and Premium support."
1102
  msgstr ""
1103
 
1104
  #: lib/Form/Block/Base.php:18 views/form/editor.html:55
1105
+ #: views/newsletters.html:167
1106
  msgid "Please select a list"
1107
  msgstr ""
1108
 
1120
 
1121
  #: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
1122
  #: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
1123
+ #: views/subscribers/subscribers.html:92
1124
  msgid "Day"
1125
  msgstr ""
1126
 
1130
 
1131
  #: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
1132
  #: views/form/templates/blocks/date_months.hbs:3
1133
+ #: views/subscribers/subscribers.html:91
1134
  msgid "Month"
1135
  msgstr ""
1136
 
1142
  #: lib/Form/Block/Date.php:173
1143
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:74
1144
  #: views/form/templates/blocks/date_years.hbs:5
1145
+ #: views/subscribers/subscribers.html:90
1146
  msgid "Year"
1147
  msgstr ""
1148
 
1158
  msgid "Month (January, February,...)"
1159
  msgstr ""
1160
 
1161
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:189
1162
  #: views/subscribers/importExport/import.html:56
1163
  msgid "January"
1164
  msgstr ""
1165
 
1166
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:190
1167
  #: views/subscribers/importExport/import.html:57
1168
  msgid "February"
1169
  msgstr ""
1170
 
1171
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:191
1172
  #: views/subscribers/importExport/import.html:58
1173
  msgid "March"
1174
  msgstr ""
1175
 
1176
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:192
1177
  #: views/subscribers/importExport/import.html:59
1178
  msgid "April"
1179
  msgstr ""
1180
 
1181
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:193
1182
+ #: views/newsletters.html:205 views/subscribers/importExport/import.html:60
1183
  msgid "May"
1184
  msgstr ""
1185
 
1186
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:194
1187
  #: views/subscribers/importExport/import.html:61
1188
  msgid "June"
1189
  msgstr ""
1190
 
1191
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:195
1192
  #: views/subscribers/importExport/import.html:62
1193
  msgid "July"
1194
  msgstr ""
1195
 
1196
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:196
1197
  #: views/subscribers/importExport/import.html:63
1198
  msgid "August"
1199
  msgstr ""
1200
 
1201
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:197
1202
  #: views/subscribers/importExport/import.html:64
1203
  msgid "September"
1204
  msgstr ""
1205
 
1206
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:198
1207
  #: views/subscribers/importExport/import.html:65
1208
  msgid "October"
1209
  msgstr ""
1210
 
1211
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:199
1212
  #: views/subscribers/importExport/import.html:66
1213
  msgid "November"
1214
  msgstr ""
1215
 
1216
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:200
1217
  #: views/subscribers/importExport/import.html:67
1218
  msgid "December"
1219
  msgstr ""
1301
  msgid "Please specify a type."
1302
  msgstr ""
1303
 
1304
+ #: lib/Models/Form.php:93 lib/Models/Newsletter.php:614
1305
  #: lib/Models/Segment.php:133 lib/Models/Subscriber.php:347
1306
  msgid "All"
1307
  msgstr ""
1308
 
1309
+ #: lib/Models/Form.php:98 lib/Models/Newsletter.php:684
1310
  #: lib/Models/Segment.php:138 lib/Models/Subscriber.php:372 views/forms.html:57
1311
  #: views/newsletters.html:76 views/segments.html:50
1312
+ #: views/subscribers/subscribers.html:37
1313
  msgid "Trash"
1314
  msgstr ""
1315
 
1316
+ #: lib/Models/Model.php:54 views/subscribers/importExport/import/step2.html:140
1317
  msgid "Another record already exists. Please specify a different \"%1$s\"."
1318
  msgstr ""
1319
 
1320
+ #: lib/Models/Newsletter.php:387
1321
  msgid "Deleted list"
1322
  msgstr ""
1323
 
1324
+ #: lib/Models/Newsletter.php:515 lib/Models/Subscriber.php:283
1325
  #: lib/Subscribers/ImportExport/Export/Export.php:170
1326
  msgid "All Lists"
1327
  msgstr ""
1328
 
1329
+ #: lib/Models/Newsletter.php:626
1330
  #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
1331
  msgid "Draft"
1332
  msgstr ""
1333
 
1334
+ #: lib/Models/Newsletter.php:634
1335
  #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
1336
  msgid "Scheduled"
1337
  msgstr ""
1338
 
1339
+ #: lib/Models/Newsletter.php:642
1340
  msgid "Sending"
1341
  msgstr ""
1342
 
1343
+ #: lib/Models/Newsletter.php:650
1344
  msgid "Sent"
1345
  msgstr ""
1346
 
1347
+ #: lib/Models/Newsletter.php:664 views/newsletters.html:84
1348
  msgid "Active"
1349
  msgstr ""
1350
 
1351
+ #: lib/Models/Newsletter.php:672
1352
  msgid "Not active"
1353
  msgstr ""
1354
 
1360
  msgid "The template body cannot be empty."
1361
  msgstr ""
1362
 
1363
+ #: lib/Models/Segment.php:114 views/subscribers/subscribers.html:86
1364
  msgid "WordPress Users"
1365
  msgstr ""
1366
 
1408
  msgid "Subscribers without a list (%s)"
1409
  msgstr ""
1410
 
1411
+ #: lib/Models/Subscriber.php:352 lib/Subscription/Pages.php:301
1412
+ #: views/segments.html:30 views/subscribers/subscribers.html:56
1413
  msgid "Subscribed"
1414
  msgstr ""
1415
 
1416
  #: lib/Models/Subscriber.php:357 views/segments.html:31
1417
+ #: views/subscribers/subscribers.html:55
1418
  msgid "Unconfirmed"
1419
  msgstr ""
1420
 
1421
+ #: lib/Models/Subscriber.php:362 lib/Subscription/Pages.php:309
1422
+ #: views/segments.html:32 views/subscribers/subscribers.html:57
1423
  msgid "Unsubscribed"
1424
  msgstr ""
1425
 
1426
+ #: lib/Models/Subscriber.php:367 lib/Subscription/Pages.php:317
1427
+ #: views/segments.html:33 views/subscribers/subscribers.html:58
1428
  msgid "Bounced"
1429
  msgstr ""
1430
 
1435
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:10
1436
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:107
1437
  #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:108
1438
+ #: views/subscribers/subscribers.html:64
1439
  msgid "Subscriber"
1440
  msgstr ""
1441
 
1546
  msgstr ""
1547
 
1548
  #: lib/Settings/Pages.php:12 lib/Settings/Pages.php:13
1549
+ #: lib/Settings/Pages.php:37 lib/Subscription/Pages.php:106
1550
  msgid "MailPoet Page"
1551
  msgstr ""
1552
 
1566
  msgid "Not In Segment"
1567
  msgstr ""
1568
 
1569
+ #: lib/Subscribers/ImportExport/Import/Import.php:68
1570
  msgid "Missing or invalid import data."
1571
  msgstr ""
1572
 
1573
+ #: lib/Subscribers/ImportExport/Import/Import.php:89
1574
+ msgid "No valid subscribers were found."
1575
+ msgstr ""
1576
+
1577
+ #: lib/Subscribers/ImportExport/Import/Import.php:132
1578
  msgid "Unable to save imported subscribers."
1579
  msgstr ""
1580
 
1609
  msgstr ""
1610
 
1611
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:35
1612
+ #: lib/Subscription/Pages.php:297 views/newsletters.html:62
1613
+ #: views/subscribers/subscribers.html:54 views/subscribers/subscribers.html:65
1614
  msgid "Status"
1615
  msgstr ""
1616
 
1647
  msgid "Yes, please add me to your mailing list."
1648
  msgstr ""
1649
 
1650
+ #: lib/Subscription/Pages.php:102
1651
  msgid "Hmmm... we don't have a record of you."
1652
  msgstr ""
1653
 
1654
+ #: lib/Subscription/Pages.php:132
1655
  msgid ""
1656
  "Your email address doesn't appear in our lists anymore. Sign up again or "
1657
  "contact us if this appears to be a mistake."
1658
  msgstr ""
1659
 
1660
+ #: lib/Subscription/Pages.php:176 lib/Subscription/Pages.php:188
1661
  msgid "You have subscribed to: %s"
1662
  msgstr ""
1663
 
1664
+ #: lib/Subscription/Pages.php:185
1665
  msgid "You are now subscribed!"
1666
  msgstr ""
1667
 
1668
+ #: lib/Subscription/Pages.php:198 lib/Subscription/Pages.php:416
1669
  msgid "Manage your subscription"
1670
  msgstr ""
1671
 
1672
+ #: lib/Subscription/Pages.php:204
1673
  msgid "You are now unsubscribed."
1674
  msgstr ""
1675
 
1676
+ #: lib/Subscription/Pages.php:211
1677
  msgid "Yup, we've added you to our email list. You'll hear from us shortly."
1678
  msgstr ""
1679
 
1680
+ #: lib/Subscription/Pages.php:340
1681
  msgid "Your lists"
1682
  msgstr ""
1683
 
1684
+ #: lib/Subscription/Pages.php:348 views/form/editor.html:29
1685
  #: views/form/editor.html:382 views/newsletter/templates/components/save.hbs:3
1686
+ #: views/segments.html:56 views/subscribers/subscribers.html:96
1687
  msgid "Save"
1688
  msgstr ""
1689
 
1690
+ #: lib/Subscription/Pages.php:380
1691
  msgid "[link]Edit your profile[/link] to update your email."
1692
  msgstr ""
1693
 
1694
+ #: lib/Subscription/Pages.php:386
1695
  msgid "[link]Log in to your account[/link] to update your email."
1696
  msgstr ""
1697
 
1698
+ #: lib/Subscription/Pages.php:390
1699
  msgid ""
1700
  "Need to change your email address? Unsubscribe here, then simply sign up "
1701
  "again."
1702
  msgstr ""
1703
 
1704
+ #: lib/Subscription/Pages.php:404
1705
  msgid "Accidentally unsubscribed?"
1706
  msgstr ""
1707
 
1708
+ #: lib/Twig/Functions.php:83 views/settings/mta.html:987
1709
  msgid "every minute"
1710
  msgstr ""
1711
 
1712
+ #: lib/Twig/Functions.php:84 views/settings/mta.html:988
1713
  msgid "every %1$d minutes"
1714
  msgstr ""
1715
 
1716
+ #: lib/Twig/Functions.php:85 views/settings/mta.html:989
1717
  msgid "every hour"
1718
  msgstr ""
1719
 
1720
+ #: lib/Twig/Functions.php:86 views/settings/mta.html:990
1721
  msgid "every %1$d hours"
1722
  msgstr ""
1723
 
1742
  msgstr ""
1743
 
1744
  #: views/form/editor.html:6 views/segments.html:68
1745
+ #: views/subscribers/subscribers.html:97
1746
  msgid "Back"
1747
  msgstr ""
1748
 
1902
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
1903
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
1904
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
1905
+ #: views/premium.html:52 views/settings/advanced.html:93
1906
+ #: views/settings/advanced.html:133 views/settings/bounce.html:190
1907
+ #: views/settings/mta.html:572 views/settings/signup.html:34
1908
+ #: views/subscribers/importExport/export.html:33
1909
  #: views/subscribers/importExport/import/step2.html:66
1910
  msgid "Yes"
1911
  msgstr ""
1921
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
1922
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
1923
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
1924
+ #: views/premium.html:58 views/premium.html:59 views/settings/advanced.html:104
1925
+ #: views/settings/advanced.html:144 views/settings/bounce.html:148
1926
+ #: views/settings/bounce.html:179 views/settings/mta.html:535
1927
+ #: views/settings/mta.html:583 views/settings/signup.html:46
1928
+ #: views/subscribers/importExport/export.html:38
1929
  #: views/subscribers/importExport/import/step2.html:70
1930
  msgid "No"
1931
  msgstr ""
2061
  msgstr ""
2062
 
2063
  #: views/forms.html:17 views/newsletters.html:29 views/segments.html:14
2064
+ #: views/subscribers/subscribers.html:19
2065
  msgid "Search"
2066
  msgstr ""
2067
 
2086
  msgstr ""
2087
 
2088
  #: views/forms.html:23 views/newsletters.html:35 views/segments.html:20
2089
+ #: views/subscribers/subscribers.html:27
2090
  msgid "Clear selection"
2091
  msgstr ""
2092
 
2095
  msgstr ""
2096
 
2097
  #: views/forms.html:25 views/newsletters.html:37 views/segments.html:22
2098
+ #: views/subscribers/subscribers.html:29
2099
  msgid "Select bulk action"
2100
  msgstr ""
2101
 
2102
  #: views/forms.html:26 views/newsletters.html:38 views/segments.html:23
2103
+ #: views/subscribers/subscribers.html:30
2104
  msgid "Bulk Actions"
2105
  msgstr ""
2106
 
2107
  #: views/forms.html:27 views/newsletters.html:39 views/segments.html:24
2108
+ #: views/subscribers/subscribers.html:31
2109
  msgid "Apply"
2110
  msgstr ""
2111
 
2112
  #: views/forms.html:28 views/newsletters.html:40
2113
+ #: views/subscribers/subscribers.html:32
2114
  msgid "Filter"
2115
  msgstr ""
2116
 
2117
  #: views/forms.html:29 views/newsletters.html:41 views/segments.html:52
2118
+ #: views/subscribers/subscribers.html:33
2119
  msgid "Empty Trash"
2120
  msgstr ""
2121
 
2122
  #: views/forms.html:30 views/newsletters.html:42 views/segments.html:53
2123
+ #: views/subscribers/subscribers.html:34
2124
  msgid "Select All"
2125
  msgstr ""
2126
 
2127
  #: views/forms.html:31 views/newsletters.html:43 views/segments.html:54
2128
+ #: views/subscribers/subscribers.html:36
2129
  msgid "Restore"
2130
  msgstr ""
2131
 
2132
  #: views/forms.html:32 views/newsletters.html:44
2133
+ #: views/subscribers/subscribers.html:39
2134
  msgid "Delete Permanently"
2135
  msgstr ""
2136
 
2137
  #: views/forms.html:34 views/newsletters.html:47 views/segments.html:58
2138
+ #: views/subscribers/subscribers.html:42
2139
  msgid "Previous page"
2140
  msgstr ""
2141
 
2142
  #: views/forms.html:35 views/newsletters.html:48 views/segments.html:59
2143
+ #: views/subscribers/subscribers.html:43
2144
  msgid "First page"
2145
  msgstr ""
2146
 
2147
  #: views/forms.html:36 views/newsletters.html:49 views/segments.html:60
2148
+ #: views/subscribers/subscribers.html:44
2149
  msgid "Next page"
2150
  msgstr ""
2151
 
2152
  #: views/forms.html:37 views/newsletters.html:50 views/segments.html:61
2153
+ #: views/subscribers/subscribers.html:45
2154
  msgid "Last page"
2155
  msgstr ""
2156
 
2157
+ #: views/forms.html:38 views/subscribers/subscribers.html:46
2158
  msgid "Current Page"
2159
  msgstr ""
2160
 
2161
  #: views/forms.html:39 views/newsletters.html:52 views/segments.html:63
2162
+ #: views/subscribers/subscribers.html:47
2163
  msgid "of"
2164
  msgstr ""
2165
 
2166
  #: views/forms.html:40 views/newsletters.html:53 views/segments.html:64
2167
+ #: views/subscribers/subscribers.html:48
2168
  msgid "1 item"
2169
  msgstr ""
2170
 
2171
  #: views/forms.html:41 views/newsletters.html:54 views/segments.html:65
2172
+ #: views/subscribers/subscribers.html:49
2173
  msgid "%$1d items"
2174
  msgstr ""
2175
 
2215
  msgstr ""
2216
 
2217
  #: views/forms.html:54 views/newsletters.html:78 views/segments.html:49
2218
+ #: views/subscribers/subscribers.html:35
2219
  msgid "Edit"
2220
  msgstr ""
2221
 
2228
  msgstr ""
2229
 
2230
  #: views/forms.html:58 views/newsletters.html:77 views/segments.html:51
2231
+ #: views/subscribers/subscribers.html:38
2232
  msgid "Move to trash"
2233
  msgstr ""
2234
 
2235
  #: views/forms.html:59 views/newsletters.html:91 views/segments.html:48
2236
+ #: views/subscribers/subscribers.html:93
2237
  msgid "Add New"
2238
  msgstr ""
2239
 
2264
  msgstr ""
2265
 
2266
  #: views/limit.html:9
2267
+ msgid "Our free version is limited to 2000 subscribers."
2268
  msgstr ""
2269
 
2270
  #: views/limit.html:19
2275
  msgid "Delete unconfirmed subscribers to have less than %d subscribers."
2276
  msgstr ""
2277
 
2278
+ #: views/limit.html:22
2279
+ msgid "Install the Premium plugin if you have purchased it."
2280
  msgstr ""
2281
 
2282
+ #: views/limit.html:28
2283
+ msgid "Check out the Premium"
2284
  msgstr ""
2285
 
2286
  #: views/newsletter/editor.html:233 views/newsletters.html:56
2610
 
2611
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
2612
  #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:111
2613
+ #: views/premium.html:51
2614
  msgid "None"
2615
  msgstr ""
2616
 
2915
  msgid "Preview text (usually displayed underneath the subject line in the inbox)"
2916
  msgstr ""
2917
 
2918
+ #: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:227
2919
  msgid "Next"
2920
  msgstr ""
2921
 
3010
 
3011
  #: views/newsletters.html:45 views/subscribers/importExport/import/step2.html:8
3012
  #: views/subscribers/importExport/import.html:47
3013
+ #: views/subscribers/subscribers.html:40
3014
  msgid "Show more details"
3015
  msgstr ""
3016
 
3038
  msgid "Created on"
3039
  msgstr ""
3040
 
3041
+ #: views/newsletters.html:69 views/subscribers/subscribers.html:68
3042
  msgid "Last modified on"
3043
  msgstr ""
3044
 
3133
  #: views/newsletters.html:99
3134
  msgid ""
3135
  "Above 30% is excellent.\\\\n"
3136
+ "Between 10 and 30% is good.\\\\n"
3137
+ "Under 10% is bad."
3138
  msgstr ""
3139
 
3140
  #: views/newsletters.html:100
3215
  "WordPress users. Send a day, a week, or a month after they sign up."
3216
  msgstr ""
3217
 
3218
+ #: views/newsletters.html:124 views/subscribers/subscribers.html:23
3219
+ msgid "Get premium version!"
3220
  msgstr ""
3221
 
3222
  #: views/newsletters.html:125
3223
+ msgid "Set up"
3224
  msgstr ""
3225
 
3226
  #: views/newsletters.html:126
3227
+ msgid "Latest Post Notifications"
3228
+ msgstr ""
3229
+
3230
+ #: views/newsletters.html:127
3231
  msgid ""
3232
  "Let MailPoet email your subscribers with your latest content. You can send "
3233
  "daily, weekly, monthly, or even immediately after publication."
3234
  msgstr ""
3235
 
3236
+ #: views/newsletters.html:128
3237
  msgid "Select a frequency"
3238
  msgstr ""
3239
 
3240
+ #: views/newsletters.html:129
3241
  msgid ""
3242
  "Insert [newsletter:total] to show number of posts, [newsletter:post_title] "
3243
  "to show the latest post's title & [newsletter:number] to display the issue "
3244
  "number."
3245
  msgstr ""
3246
 
3247
+ #: views/newsletters.html:130 views/settings/mta.html:97
3248
+ #: views/settings/mta.html:638
3249
  msgid "Activate"
3250
  msgstr ""
3251
 
3252
+ #: views/newsletters.html:131
3253
  msgid "Send this Welcome Email when..."
3254
  msgstr ""
3255
 
3256
+ #: views/newsletters.html:133
3257
  msgid "Once a day at..."
3258
  msgstr ""
3259
 
3260
+ #: views/newsletters.html:134
3261
  msgid "Weekly on..."
3262
  msgstr ""
3263
 
3264
+ #: views/newsletters.html:135
3265
  msgid "Monthly on the..."
3266
  msgstr ""
3267
 
3268
+ #: views/newsletters.html:136
3269
  msgid "Monthly every..."
3270
  msgstr ""
3271
 
3272
+ #: views/newsletters.html:137
3273
  msgid "Immediately"
3274
  msgstr ""
3275
 
3276
+ #: views/newsletters.html:138
3277
  msgid "Sunday"
3278
  msgstr ""
3279
 
3280
+ #: views/newsletters.html:139
3281
  msgid "Monday"
3282
  msgstr ""
3283
 
3284
+ #: views/newsletters.html:140
3285
  msgid "Tuesday"
3286
  msgstr ""
3287
 
3288
+ #: views/newsletters.html:141
3289
  msgid "Wednesday"
3290
  msgstr ""
3291
 
3292
+ #: views/newsletters.html:142
3293
  msgid "Thursday"
3294
  msgstr ""
3295
 
3296
+ #: views/newsletters.html:143
3297
  msgid "Friday"
3298
  msgstr ""
3299
 
3300
+ #: views/newsletters.html:144
3301
  msgid "Saturday"
3302
  msgstr ""
3303
 
3304
+ #: views/newsletters.html:145
3305
  msgid "1st"
3306
  msgstr ""
3307
 
3308
+ #: views/newsletters.html:146
3309
  msgid "2nd"
3310
  msgstr ""
3311
 
3312
+ #: views/newsletters.html:147
3313
  msgid "3rd"
3314
  msgstr ""
3315
 
3316
+ #: views/newsletters.html:148
3317
  msgid "%$1dth"
3318
  msgstr ""
3319
 
3320
+ #: views/newsletters.html:152
3321
  msgid "When is this Welcome Email sent?"
3322
  msgstr ""
3323
 
3324
+ #: views/newsletters.html:154
3325
  msgid "When someone subscribes to the list..."
3326
  msgstr ""
3327
 
3328
+ #: views/newsletters.html:155
3329
  msgid "When a new WordPress user is added to your site..."
3330
  msgstr ""
3331
 
3332
+ #: views/newsletters.html:156
3333
  msgid "immediately"
3334
  msgstr ""
3335
 
3336
+ #: views/newsletters.html:157
3337
  msgid "hour(s) later"
3338
  msgstr ""
3339
 
3340
+ #: views/newsletters.html:158
3341
  msgid "day(s) later"
3342
  msgstr ""
3343
 
3344
+ #: views/newsletters.html:159
3345
  msgid "week(s) later"
3346
  msgstr ""
3347
 
3348
+ #: views/newsletters.html:161
3349
  msgid "Subject line"
3350
  msgstr ""
3351
 
3352
+ #: views/newsletters.html:162
3353
  msgid ""
3354
  "Be creative! It's the first thing that your subscribers see. Tempt them to "
3355
  "open your email."
3356
  msgstr ""
3357
 
3358
+ #: views/newsletters.html:163
3359
  msgid "Please specify a subject"
3360
  msgstr ""
3361
 
3362
+ #: views/newsletters.html:165
3363
  msgid "This subscriber segment will be used for this email."
3364
  msgstr ""
3365
 
3366
+ #: views/newsletters.html:166 views/subscribers/subscribers.html:59
3367
  msgid "Select a list"
3368
  msgstr ""
3369
 
3370
+ #: views/newsletters.html:168
3371
  msgid "Sender"
3372
  msgstr ""
3373
 
3374
+ #: views/newsletters.html:169
3375
  msgid "Your name and email"
3376
  msgstr ""
3377
 
3378
+ #: views/newsletters.html:170 views/newsletters.html:174
3379
  msgid "John Doe"
3380
  msgstr ""
3381
 
3382
+ #: views/newsletters.html:171 views/newsletters.html:175
3383
  msgid "john.doe@email.com"
3384
  msgstr ""
3385
 
3386
+ #: views/newsletters.html:172 views/settings/basics.html:29
3387
  #: views/settings/signup.html:85
3388
  msgid "Reply-to"
3389
  msgstr ""
3390
 
3391
+ #: views/newsletters.html:173
3392
  msgid ""
3393
  "When your subscribers reply to your emails, their emails will go to this "
3394
  "address."
3395
  msgstr ""
3396
 
3397
+ #: views/newsletters.html:176
3398
  msgid "Email was updated successfully!"
3399
  msgstr ""
3400
 
3401
+ #: views/newsletters.html:177
3402
  msgid "Email was added successfully!"
3403
  msgstr ""
3404
 
3405
+ #: views/newsletters.html:178
3406
  msgid ""
3407
  "An error occurred while trying to send. <a href=\"%$1s\">Please check your "
3408
  "settings</a>."
3409
  msgstr ""
3410
 
3411
+ #: views/newsletters.html:179
3412
  msgid "Final Step: Last Details"
3413
  msgstr ""
3414
 
3415
+ #: views/newsletters.html:180
3416
  msgid "Save as draft and close"
3417
  msgstr ""
3418
 
3419
+ #: views/newsletters.html:181
3420
  msgid "or simply"
3421
  msgstr ""
3422
 
3423
+ #: views/newsletters.html:182
3424
  msgid "go back to the Design page"
3425
  msgstr ""
3426
 
3427
+ #: views/newsletters.html:183
3428
  msgid "Your website’s time is"
3429
  msgstr ""
3430
 
3431
+ #: views/newsletters.html:184
3432
  msgid "Please enter the scheduled date."
3433
  msgstr ""
3434
 
3435
+ #: views/newsletters.html:185
3436
  msgid "Schedule"
3437
  msgstr ""
3438
 
3439
+ #: views/newsletters.html:187
3440
  msgid "Close"
3441
  msgstr ""
3442
 
3443
+ #: views/newsletters.html:188
3444
  msgid "Today"
3445
  msgstr ""
3446
 
3447
+ #: views/newsletters.html:201
3448
  msgid "Jan"
3449
  msgstr ""
3450
 
3451
+ #: views/newsletters.html:202
3452
  msgid "Feb"
3453
  msgstr ""
3454
 
3455
+ #: views/newsletters.html:203
3456
  msgid "Mar"
3457
  msgstr ""
3458
 
3459
+ #: views/newsletters.html:204
3460
  msgid "Apr"
3461
  msgstr ""
3462
 
3463
+ #: views/newsletters.html:206
3464
  msgid "Jun"
3465
  msgstr ""
3466
 
3467
+ #: views/newsletters.html:207
3468
  msgid "Jul"
3469
  msgstr ""
3470
 
3471
+ #: views/newsletters.html:208
3472
  msgid "Aug"
3473
  msgstr ""
3474
 
3475
+ #: views/newsletters.html:209
3476
  msgid "Sep"
3477
  msgstr ""
3478
 
3479
+ #: views/newsletters.html:210
3480
  msgid "Oct"
3481
  msgstr ""
3482
 
3483
+ #: views/newsletters.html:211
3484
  msgid "Nov"
3485
  msgstr ""
3486
 
3487
+ #: views/newsletters.html:212
3488
  msgid "Dec"
3489
  msgstr ""
3490
 
3491
+ #: views/newsletters.html:213
3492
  msgid "Sun"
3493
  msgstr ""
3494
 
3495
+ #: views/newsletters.html:214
3496
  msgid "Mon"
3497
  msgstr ""
3498
 
3499
+ #: views/newsletters.html:215
3500
  msgid "Tue"
3501
  msgstr ""
3502
 
3503
+ #: views/newsletters.html:216
3504
  msgid "Wed"
3505
  msgstr ""
3506
 
3507
+ #: views/newsletters.html:217
3508
  msgid "Thu"
3509
  msgstr ""
3510
 
3511
+ #: views/newsletters.html:218
3512
  msgid "Fri"
3513
  msgstr ""
3514
 
3515
+ #: views/newsletters.html:219
3516
  msgid "Sat"
3517
  msgstr ""
3518
 
3519
+ #: views/newsletters.html:228
3520
  msgid "Previous"
3521
  msgstr ""
3522
 
3523
+ #: views/newsletters.html:229
3524
  msgid "The newsletter is being sent..."
3525
  msgstr ""
3526
 
3527
+ #: views/newsletters.html:230
3528
  msgid "The newsletter has been scheduled."
3529
  msgstr ""
3530
 
3531
+ #: views/newsletters.html:231
3532
  msgid "Your Welcome Email is now activated!"
3533
  msgstr ""
3534
 
3535
+ #: views/newsletters.html:232
3536
  msgid "Your Welcome Email could not be activated, please check the settings."
3537
  msgstr ""
3538
 
3539
+ #: views/newsletters.html:233
3540
  msgid "Your post notification is now active!"
3541
  msgstr ""
3542
 
3543
+ #: views/newsletters.html:234
3544
  msgid "Your Post Notification could not be activated, check the settings."
3545
  msgstr ""
3546
 
3547
+ #: views/newsletters.html:235
3548
  msgid "This newsletter is sent when someone subscribes to the list: \"%$1s\""
3549
  msgstr ""
3550
 
3551
+ #: views/newsletters.html:236
3552
  msgid "This newsletter is sent when a new WordPress user is added to your site"
3553
  msgstr ""
3554
 
3555
+ #: views/newsletters.html:237
3556
  msgid ""
3557
  "This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
3558
  "added to your site"
3559
  msgstr ""
3560
 
3561
+ #: views/newsletters.html:238
3562
  msgid "%$1d hour(s) later"
3563
  msgstr ""
3564
 
3565
+ #: views/newsletters.html:239
3566
  msgid "%$1d day(s) later"
3567
  msgstr ""
3568
 
3569
+ #: views/newsletters.html:240
3570
  msgid "%$1d week(s) later"
3571
  msgstr ""
3572
 
3573
+ #: views/newsletters.html:241
3574
  msgid "Send daily at %$1s"
3575
  msgstr ""
3576
 
3577
+ #: views/newsletters.html:242
3578
  msgid "Send weekly on %$1s at %$2s"
3579
  msgstr ""
3580
 
3581
+ #: views/newsletters.html:243
3582
  msgid "Send monthly on the %$1s at %$2s"
3583
  msgstr ""
3584
 
3585
+ #: views/newsletters.html:244
3586
  msgid "Send every %$1s %$2s of the month at %$3s"
3587
  msgstr ""
3588
 
3589
+ #: views/newsletters.html:245
3590
  msgid "Send immediately"
3591
  msgstr ""
3592
 
3593
+ #: views/newsletters.html:246
3594
  msgid "if there's new content to %$1s."
3595
  msgstr ""
3596
 
3597
+ #: views/newsletters.html:247
3598
  msgid "You need to select a list to send to."
3599
  msgstr ""
3600
 
3601
+ #: views/newsletters.html:249
3602
  msgid "Back to Post notifications"
3603
  msgstr ""
3604
 
3605
+ #: views/newsletters.html:250
3606
  msgid "Sent on"
3607
  msgstr ""
3608
 
3609
+ #: views/newsletters.html:251
3610
  msgid "No subscribers!"
3611
  msgstr ""
3612
 
3613
+ #: views/newsletters.html:253
3614
  msgid ""
3615
  "Sending is paused because %$1s prevents MailPoet from delivering emails "
3616
  "with the following error: %$2s"
3617
  msgstr ""
3618
 
3619
+ #: views/newsletters.html:254
3620
  msgid ""
3621
  "Sending is paused because the following connection issue prevents MailPoet "
3622
  "from delivering emails: %$1s"
3623
  msgstr ""
3624
 
3625
+ #: views/newsletters.html:255
3626
  msgid "Check your [link]sending method settings[/link]."
3627
  msgstr ""
3628
 
3629
+ #: views/newsletters.html:256
3630
  msgid "Resume sending"
3631
  msgstr ""
3632
 
3633
+ #: views/newsletters.html:257
3634
  msgid "Sending has been resumed."
3635
  msgstr ""
3636
 
3637
+ #: views/premium.html:12
3638
+ msgid "What is MailPoet Premium?"
3639
+ msgstr ""
3640
+
3641
+ #: views/premium.html:14
3642
+ msgid ""
3643
+ "Detailed statistics, actionable insights, awesome deliverability, plus "
3644
+ "great support!"
3645
+ msgstr ""
3646
+
3647
+ #: views/premium.html:19
3648
+ msgid "Insightful Statistics"
3649
+ msgstr ""
3650
+
3651
+ #: views/premium.html:20
3652
+ msgid ""
3653
+ "Which links get the most clicks? Which subscribers opened your emails? With "
3654
+ "MailPoet's stats program, it's easy to find out. Need even more details? "
3655
+ "Integrating with Google Analytics is as easy as 1-2-3."
3656
+ msgstr ""
3657
+
3658
+ #: views/premium.html:31
3659
+ msgid "Hello Inbox, Goodbye Spambox!"
3660
+ msgstr ""
3661
+
3662
+ #: views/premium.html:32
3663
+ msgid ""
3664
+ "The MailPoet Sending Service's delivery rate is over 98%: one of the best "
3665
+ "in the industry! Our in-house sending service is constantly monitored, "
3666
+ "tweaked, and improved to make sure that your emails arrive successfully."
3667
+ msgstr ""
3668
+
3669
+ #: views/premium.html:38
3670
+ msgid "Web host"
3671
+ msgstr ""
3672
+
3673
+ #: views/premium.html:39
3674
+ msgid "Third party"
3675
+ msgstr ""
3676
+
3677
+ #: views/premium.html:44
3678
+ msgid "Speed"
3679
+ msgstr ""
3680
+
3681
+ #: views/premium.html:45
3682
+ msgid "50,000 / hour"
3683
+ msgstr ""
3684
+
3685
+ #: views/premium.html:46
3686
+ msgid "300 / hour"
3687
+ msgstr ""
3688
+
3689
+ #: views/premium.html:47
3690
+ msgid "2,000 / hour"
3691
+ msgstr ""
3692
+
3693
+ #: views/premium.html:50
3694
+ msgid "Daily email limits"
3695
+ msgstr ""
3696
+
3697
+ #: views/premium.html:53 views/premium.html:65 views/premium.html:71
3698
+ msgid "Depends"
3699
+ msgstr ""
3700
+
3701
+ #: views/premium.html:56
3702
+ msgid "Personal deliverability support"
3703
+ msgstr ""
3704
+
3705
+ #: views/premium.html:57
3706
+ msgid "Yes!"
3707
+ msgstr ""
3708
+
3709
+ #: views/premium.html:62
3710
+ msgid "SPF and DKIM Signatures"
3711
+ msgstr ""
3712
+
3713
+ #: views/premium.html:63
3714
+ msgid "No need!"
3715
+ msgstr ""
3716
+
3717
+ #: views/premium.html:64
3718
+ msgid "Update your DNS"
3719
+ msgstr ""
3720
+
3721
+ #: views/premium.html:68
3722
+ msgid "Double opt-in"
3723
+ msgstr ""
3724
+
3725
+ #: views/premium.html:69
3726
+ msgid "Enforced"
3727
+ msgstr ""
3728
+
3729
+ #: views/premium.html:70
3730
+ msgid "Not enforced"
3731
+ msgstr ""
3732
+
3733
+ #: views/premium.html:79
3734
+ msgid "View full comparison table"
3735
+ msgstr ""
3736
+
3737
+ #: views/premium.html:88
3738
+ msgid ""
3739
+ "Spammers are ineligible to use the MailPoet Sending Service. We reserve the "
3740
+ "right to cancel any sending plan if we detect more than 5% hard bounces. "
3741
+ "[link]Customers are required to clean their lists before joining "
3742
+ "MailPoet[/link]."
3743
+ msgstr ""
3744
+
3745
+ #: views/premium.html:101
3746
+ msgid "Welcome to My Newsletter!"
3747
+ msgstr ""
3748
+
3749
+ #: views/premium.html:107
3750
+ msgid ""
3751
+ "Want to send autoresponders and welcome emails to your subscribers? In "
3752
+ "MailPoet, it’s easy as 1-2-3. Create welcome emails, educational courses, "
3753
+ "and other automatic email newsletters."
3754
+ msgstr ""
3755
+
3756
+ #: views/premium.html:110
3757
+ msgid "We’re Here to Help!"
3758
+ msgstr ""
3759
+
3760
+ #: views/premium.html:116
3761
+ msgid ""
3762
+ "We pride ourselves on giving nearly round-the-clock support. Our remote "
3763
+ "team spans several continents, hemispheres, and time-zones! If you’ve got a "
3764
+ "problem, we will help you fix it!"
3765
+ msgstr ""
3766
+
3767
+ #: views/premium.html:123
3768
+ msgid "Get Started for Just $10"
3769
+ msgstr ""
3770
+
3771
+ #: views/premium.html:124
3772
+ msgid ""
3773
+ "Our plans start at just $10 per month. Each plan offers unlimited emails. "
3774
+ "Pricing scales up with the size of your list."
3775
+ msgstr ""
3776
+
3777
+ #: views/premium.html:132
3778
+ msgid "Purchase Now"
3779
+ msgstr ""
3780
+
3781
+ #: views/premium.html:136
3782
+ msgid ""
3783
+ "Don't need to use our sending service? Not a problem; we understand. You "
3784
+ "can also [link]buy the Premium[/link] features separately. Prices start at "
3785
+ "$100 per year for 1 website, $249 for 4 sites and $499 for an unlimited "
3786
+ "number of sites."
3787
+ msgstr ""
3788
+
3789
  #: views/segments.html:15
3790
  msgid "Loading lists..."
3791
  msgstr ""
4093
  msgid "Hostname"
4094
  msgstr ""
4095
 
4096
+ #: views/settings/bounce.html:50 views/settings/mta.html:496
4097
  msgid "Login"
4098
  msgstr ""
4099
 
4100
+ #: views/settings/bounce.html:67 views/settings/mta.html:513
4101
  msgid "Password"
4102
  msgstr ""
4103
 
4149
  msgid "Is it working? Try to connect"
4150
  msgstr ""
4151
 
4152
+ #: views/settings/mta.html:69
4153
  msgid "You're now sending with MailPoet!"
4154
  msgstr ""
4155
 
4156
+ #: views/settings/mta.html:71
4157
  msgid "Great, you're all set up. Your emails will now be sent quickly and reliably!"
4158
  msgstr ""
4159
 
4160
+ #: views/settings/mta.html:78
4161
  msgid "Solve all of your sending problems!"
4162
  msgstr ""
4163
 
4164
+ #: views/settings/mta.html:80
4165
  msgid ""
4166
+ "Let MailPoet send your emails and get the Premium features for as little as "
4167
+ "10 dollars or euros per month."
4168
  msgstr ""
4169
 
4170
+ #: views/settings/mta.html:86 views/welcome.html:50
4171
+ msgid "Find out more"
4172
  msgstr ""
4173
 
4174
+ #: views/settings/mta.html:90 views/settings/mta.html:113
4175
+ #: views/settings/mta.html:135
4176
  msgid "Activated"
4177
  msgstr ""
4178
 
4179
+ #: views/settings/mta.html:104
 
 
 
 
 
4180
  msgid "Your web host / web server"
4181
  msgstr ""
4182
 
4183
+ #: views/settings/mta.html:107
4184
  msgid "Free, but not recommended"
4185
  msgstr ""
4186
 
4187
+ #: views/settings/mta.html:109
4188
  msgid ""
4189
  "Web hosts generally have a bad reputation as a sender. Your newsletter will "
4190
  "probably be considered spam."
4191
  msgstr ""
4192
 
4193
+ #: views/settings/mta.html:119 views/settings/mta.html:141
4194
+ msgid "Configure"
4195
+ msgstr ""
4196
+
4197
+ #: views/settings/mta.html:126
4198
  msgid "Third-party"
4199
  msgstr ""
4200
 
4201
+ #: views/settings/mta.html:129
4202
  msgid "For SMTP, SendGrid or Amazon SES"
4203
  msgstr ""
4204
 
4205
+ #: views/settings/mta.html:131
4206
  msgid "We only recommend using a third-party service if you are a technical user."
4207
  msgstr ""
4208
 
4209
+ #: views/settings/mta.html:147
4210
+ msgid ""
4211
+ "Need help to pick? [link]Check out the comparison table of sending "
4212
+ "methods[/link]."
 
 
 
 
 
 
 
4213
  msgstr ""
4214
 
4215
+ #: views/settings/mta.html:167 views/settings/mta.html:300
4216
  msgid "Sending frequency"
4217
  msgstr ""
4218
 
4219
+ #: views/settings/mta.html:178
4220
  msgid "Safe default values"
4221
  msgstr ""
4222
 
4223
+ #: views/settings/mta.html:186
4224
  msgid "I'll set my own frequency"
4225
  msgstr ""
4226
 
4227
+ #: views/settings/mta.html:191
4228
  msgid "Input your host's recommended sending frequency"
4229
  msgstr ""
4230
 
4231
+ #: views/settings/mta.html:224 views/settings/mta.html:317
4232
  msgid "emails"
4233
  msgstr ""
4234
 
4235
+ #: views/settings/mta.html:241 views/settings/mta.html:334
4236
  msgid "recommended"
4237
  msgstr ""
4238
 
4239
+ #: views/settings/mta.html:250
4240
  msgid ""
4241
  "<strong>Warning!</strong> Sending more than the recommended amount of "
4242
  "emails? You may break the terms of your web host or provider!"
4243
  msgstr ""
4244
 
4245
+ #: views/settings/mta.html:252
4246
  msgid ""
4247
  "Please ask your host for the maximum number of emails you are allowed to "
4248
  "send per day."
4249
  msgstr ""
4250
 
4251
+ #: views/settings/mta.html:268
4252
  msgid "Provider"
4253
  msgstr ""
4254
 
4255
+ #: views/settings/mta.html:278
4256
  msgid "Custom SMTP"
4257
  msgstr ""
4258
 
4259
+ #: views/settings/mta.html:281
4260
  msgid "Select your provider"
4261
  msgstr ""
4262
 
4263
+ #: views/settings/mta.html:347
4264
  msgid "SMTP Hostname"
4265
  msgstr ""
4266
 
4267
+ #: views/settings/mta.html:350 views/settings/mta.html:461
4268
  msgid "e.g.: smtp.mydomain.com"
4269
  msgstr ""
4270
 
4271
+ #: views/settings/mta.html:366
4272
  msgid "SMTP Port"
4273
  msgstr ""
4274
 
4275
+ #: views/settings/mta.html:387
4276
  msgid "Region"
4277
  msgstr ""
4278
 
4279
+ #: views/settings/mta.html:416
4280
  msgid "Access Key"
4281
  msgstr ""
4282
 
4283
+ #: views/settings/mta.html:437
4284
  msgid "Secret Key"
4285
  msgstr ""
4286
 
4287
+ #: views/settings/mta.html:458
4288
  msgid "Domain"
4289
  msgstr ""
4290
 
4291
+ #: views/settings/mta.html:478
4292
  msgid "API Key"
4293
  msgstr ""
4294
 
4295
+ #: views/settings/mta.html:530
4296
  msgid "Secure Connection"
4297
  msgstr ""
4298
 
4299
+ #: views/settings/mta.html:555
4300
  msgid "Authentication"
4301
  msgstr ""
4302
 
4303
+ #: views/settings/mta.html:558
4304
  msgid ""
4305
  "Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
4306
  "Authentication to be turned off."
4307
  msgstr ""
4308
 
4309
+ #: views/settings/mta.html:597
4310
  msgid "SPF Signature (Highly recommended!)"
4311
  msgstr ""
4312
 
4313
+ #: views/settings/mta.html:600
4314
  msgid ""
4315
  "This improves your delivery rate by verifying that you're allowed to send "
4316
  "emails from your domain."
4317
  msgstr ""
4318
 
4319
+ #: views/settings/mta.html:605
4320
  msgid ""
4321
  "SPF is set up in your DNS. Read your host's support documentation for more "
4322
  "information."
4323
  msgstr ""
4324
 
4325
+ #: views/settings/mta.html:613
4326
  msgid "Test the sending method"
4327
  msgstr ""
4328
 
4329
+ #: views/settings/mta.html:627
4330
  msgid "Send a test email"
4331
  msgstr ""
4332
 
4333
+ #: views/settings/mta.html:643
4334
  msgid "or Cancel"
4335
  msgstr ""
4336
 
4337
+ #: views/settings/mta.html:688
4338
  msgid ""
4339
  "The email could not be sent. Make sure the option \"Email notifications\" "
4340
  "has a FROM email address in the Basics tab."
4341
  msgstr ""
4342
 
4343
+ #: views/settings/mta.html:701
4344
  msgid "This is a Sending Method Test"
4345
  msgstr ""
4346
 
4347
+ #: views/settings/mta.html:703
4348
  msgid "Yup, it works! You can start blasting away emails to the moon."
4349
  msgstr ""
4350
 
4351
+ #: views/settings/mta.html:712
4352
  msgid "The email has been sent! Check your inbox."
4353
  msgstr ""
4354
 
4355
+ #: views/settings/mta.html:762
 
 
 
 
4356
  msgid "You have selected an invalid sending method."
4357
  msgstr ""
4358
 
 
 
 
 
4359
  #: views/settings/premium.html:7
4360
  msgid "Premium License Key"
4361
  msgstr ""
4366
  "to support."
4367
  msgstr ""
4368
 
4369
+ #: views/settings/premium.html:25
4370
+ #: views/subscribers/importExport/import/step1.html:84
4371
+ msgid "Verify"
4372
+ msgstr ""
4373
+
4374
+ #: views/settings/premium.html:57
4375
+ msgid "Install Premium now."
4376
  msgstr ""
4377
 
4378
+ #: views/settings/premium.html:60
4379
  msgid "[link]Read guide[/link] on how to install Premium."
4380
  msgstr ""
4381
 
4382
+ #: views/settings/premium.html:75
4383
+ msgid "You need to activate the MailPoet Premium plugin."
4384
+ msgstr ""
4385
+
4386
+ #: views/settings/premium.html:79
4387
+ msgid "Activate Premium."
4388
+ msgstr ""
4389
+
4390
+ #: views/settings/premium.html:97
4391
  msgid "Please specify a license key before validating it."
4392
  msgstr ""
4393
 
4465
  msgstr ""
4466
 
4467
  #: views/settings.html:18
4468
+ msgid "Send With..."
4469
  msgstr ""
4470
 
4471
  #: views/settings.html:19
4472
+ msgid "Basics"
4473
  msgstr ""
4474
 
4475
  #: views/settings.html:20
4476
+ msgid "Sign-up Confirmation"
4477
  msgstr ""
4478
 
4479
  #: views/settings.html:21
4480
  msgid "Advanced"
4481
  msgstr ""
4482
 
 
 
 
 
4483
  #: views/settings.html:55
4484
  msgid "Save settings"
4485
  msgstr ""
4486
 
4487
+ #: views/settings.html:97
4488
  msgid "Settings saved"
4489
  msgstr ""
4490
 
4745
  msgid "%1$s existing subscribers were updated and added to %2$s."
4746
  msgstr ""
4747
 
4748
+ #: views/subscribers/subscribers.html:20
4749
  msgid "Loading subscribers..."
4750
  msgstr ""
4751
 
4752
+ #: views/subscribers/subscribers.html:21
4753
  msgid "No subscribers were found."
4754
  msgstr ""
4755
 
4756
+ #: views/subscribers/subscribers.html:22
4757
+ msgid ""
4758
+ "Emails that are invalid or don't exist anymore are called \\\"bounced "
4759
+ "addresses\\\". It's a good practice not to send emails to bounced addresses "
4760
+ "to keep a good reputation with spam filters. Send your emails with MailPoet "
4761
+ "and we'll automatically ensure to keep a list of bounced addresses without "
4762
+ "any setup."
4763
+ msgstr ""
4764
+
4765
+ #: views/subscribers/subscribers.html:24
4766
  msgid "All subscribers on this page are selected."
4767
  msgstr ""
4768
 
4769
+ #: views/subscribers/subscribers.html:25
4770
  msgid "All %d subscribers are selected."
4771
  msgstr ""
4772
 
4773
+ #: views/subscribers/subscribers.html:26
4774
  msgid "Select all subscribers on all pages."
4775
  msgstr ""
4776
 
4777
+ #: views/subscribers/subscribers.html:28
4778
  msgid "%d subscribers were permanently deleted."
4779
  msgstr ""
4780
 
4781
+ #: views/subscribers/subscribers.html:51
4782
  msgid "E-mail"
4783
  msgstr ""
4784
 
4785
+ #: views/subscribers/subscribers.html:60
4786
  msgid "Unsubscribed on %$1s"
4787
  msgstr ""
4788
 
4789
+ #: views/subscribers/subscribers.html:61
4790
  msgid "Subscriber was updated successfully!"
4791
  msgstr ""
4792
 
4793
+ #: views/subscribers/subscribers.html:62
4794
  msgid "Subscriber was added successfully!"
4795
  msgstr ""
4796
 
4797
+ #: views/subscribers/subscribers.html:67
4798
  msgid "Subscribed on"
4799
  msgstr ""
4800
 
4801
+ #: views/subscribers/subscribers.html:69
4802
  msgid "1 subscriber was moved to the trash."
4803
  msgstr ""
4804
 
4805
+ #: views/subscribers/subscribers.html:70
4806
  msgid "%$1d subscribers were moved to the trash."
4807
  msgstr ""
4808
 
4809
+ #: views/subscribers/subscribers.html:71
4810
  msgid "1 subscriber was permanently deleted."
4811
  msgstr ""
4812
 
4813
+ #: views/subscribers/subscribers.html:72
4814
  msgid "%$1d subscribers were permanently deleted."
4815
  msgstr ""
4816
 
4817
+ #: views/subscribers/subscribers.html:73
4818
  msgid "1 subscriber has been restored from the trash."
4819
  msgstr ""
4820
 
4821
+ #: views/subscribers/subscribers.html:74
4822
  msgid "%$1d subscribers have been restored from the trash."
4823
  msgstr ""
4824
 
4825
+ #: views/subscribers/subscribers.html:75
4826
  msgid "Move to list..."
4827
  msgstr ""
4828
 
4829
+ #: views/subscribers/subscribers.html:76
4830
  msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
4831
  msgstr ""
4832
 
4833
+ #: views/subscribers/subscribers.html:77
4834
  msgid "Add to list..."
4835
  msgstr ""
4836
 
4837
+ #: views/subscribers/subscribers.html:78
4838
  msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
4839
  msgstr ""
4840
 
4841
+ #: views/subscribers/subscribers.html:79
4842
  msgid "Remove from list..."
4843
  msgstr ""
4844
 
4845
+ #: views/subscribers/subscribers.html:80
4846
  msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
4847
  msgstr ""
4848
 
4849
+ #: views/subscribers/subscribers.html:81
4850
  msgid "Remove from all lists"
4851
  msgstr ""
4852
 
4853
+ #: views/subscribers/subscribers.html:82
4854
  msgid "%$1d subscribers were removed from all lists."
4855
  msgstr ""
4856
 
4857
+ #: views/subscribers/subscribers.html:83
4858
  msgid "Resend confirmation email"
4859
  msgstr ""
4860
 
4861
+ #: views/subscribers/subscribers.html:84
4862
  msgid "%$1d confirmation emails have been sent."
4863
  msgstr ""
4864
 
4865
+ #: views/subscribers/subscribers.html:85
4866
  msgid "Lists to which the subscriber was subscribed."
4867
  msgstr ""
4868
 
4869
+ #: views/subscribers/subscribers.html:87
4870
  msgid ""
4871
  "This subscriber is a registered WordPress user. [link]Edit his/her "
4872
  "profile[/link] to change his/her email."
4873
  msgstr ""
4874
 
4875
+ #: views/subscribers/subscribers.html:88
4876
  msgid "Tip:"
4877
  msgstr ""
4878
 
4879
+ #: views/subscribers/subscribers.html:89
4880
  msgid ""
4881
  "Need to add new fields, like a telephone number or street address? You can "
4882
  "add custom fields by editing the subscription form on the Forms page."
4954
  "don't like</i>."
4955
  msgstr ""
4956
 
 
 
 
 
4957
  #: views/welcome.html:55
4958
  msgid "Yes, I want to help!"
4959
  msgstr ""
5026
  msgid "Select"
5027
  msgstr ""
5028
 
5029
+ #: views/newsletters.html:149
5030
  msgctxt "e.g. monthly every last Monday"
5031
  msgid "last"
5032
  msgstr ""
5033
 
5034
+ #: views/newsletters.html:150
5035
  msgctxt "Button label: Next step"
5036
  msgid "Next"
5037
  msgstr ""
5038
 
5039
+ #: views/newsletters.html:220
5040
  msgctxt "Sunday - one letter abbreviation"
5041
  msgid "S"
5042
  msgstr ""
5043
 
5044
+ #: views/newsletters.html:221
5045
  msgctxt "Monday - one letter abbreviation"
5046
  msgid "M"
5047
  msgstr ""
5048
 
5049
+ #: views/newsletters.html:222
5050
  msgctxt "Tuesday - one letter abbreviation"
5051
  msgid "T"
5052
  msgstr ""
5053
 
5054
+ #: views/newsletters.html:223
5055
  msgctxt "Wednesday - one letter abbreviation"
5056
  msgid "W"
5057
  msgstr ""
5058
 
5059
+ #: views/newsletters.html:224
5060
  msgctxt "Thursday - one letter abbreviation"
5061
  msgid "T"
5062
  msgstr ""
5063
 
5064
+ #: views/newsletters.html:225
5065
  msgctxt "Friday - one letter abbreviation"
5066
  msgid "F"
5067
  msgstr ""
5068
 
5069
+ #: views/newsletters.html:226
5070
  msgctxt "Saturday - one letter abbreviation"
5071
  msgid "S"
5072
  msgstr ""
lib/API/JSON/v1/Services.php CHANGED
@@ -3,6 +3,7 @@ namespace MailPoet\API\JSON\v1;
3
 
4
  use MailPoet\API\JSON\Endpoint as APIEndpoint;
5
  use MailPoet\API\JSON\Error as APIError;
 
6
  use MailPoet\Services\Bridge;
7
  use MailPoet\Util\License\License;
8
  use MailPoet\WP\DateTime;
@@ -39,10 +40,10 @@ class Services extends APIEndpoint {
39
 
40
  $success_message = null;
41
  if($state == Bridge::MAILPOET_KEY_VALID) {
42
- $success_message = __('Your MailPoet API key is valid!', 'mailpoet');
43
  } elseif($state == Bridge::MAILPOET_KEY_EXPIRING) {
44
  $success_message = sprintf(
45
- __('Your MailPoet key expires on %s!', 'mailpoet'),
46
  $this->date_time->formatDate(strtotime($result['data']['expire_at']))
47
  );
48
  }
@@ -53,12 +54,12 @@ class Services extends APIEndpoint {
53
 
54
  switch($state) {
55
  case Bridge::MAILPOET_KEY_INVALID:
56
- $error = __('Your MailPoet key is invalid!', 'mailpoet');
57
  break;
58
  default:
59
  $code = !empty($result['code']) ? $result['code'] : Bridge::CHECK_ERROR_UNKNOWN;
60
  $error = sprintf(
61
- __('Error validating API key, please try again later (code: %s)', 'mailpoet'),
62
  $code
63
  );
64
  break;
@@ -88,33 +89,32 @@ class Services extends APIEndpoint {
88
 
89
  $success_message = null;
90
  if($state == Bridge::PREMIUM_KEY_VALID) {
91
- $success_message = __('Your license key has been successfully validated.', 'mailpoet');
92
  } elseif($state == Bridge::PREMIUM_KEY_EXPIRING) {
93
  $success_message = sprintf(
94
- __('Your license key expires on %s.', 'mailpoet'),
95
  $this->date_time->formatDate(strtotime($result['data']['expire_at']))
96
  );
97
  }
98
 
99
  if($success_message) {
100
- $premium_plugin_active = License::getLicense();
101
  return $this->successResponse(
102
  array('message' => $success_message),
103
- array('premium_plugin_active' => $premium_plugin_active)
104
  );
105
  }
106
 
107
  switch($state) {
108
  case Bridge::PREMIUM_KEY_INVALID:
109
- $error = __('Your license key is invalid.', 'mailpoet');
110
  break;
111
  case Bridge::PREMIUM_KEY_ALREADY_USED:
112
- $error = __('Your license key is already used on another site.', 'mailpoet');
113
  break;
114
  default:
115
  $code = !empty($result['code']) ? $result['code'] : Bridge::CHECK_ERROR_UNKNOWN;
116
  $error = sprintf(
117
- __('Error validating license key, please try again later (code: %s)', 'mailpoet'),
118
  $code
119
  );
120
  break;
@@ -122,4 +122,4 @@ class Services extends APIEndpoint {
122
 
123
  return $this->errorResponse(array(APIError::BAD_REQUEST => $error));
124
  }
125
- }
3
 
4
  use MailPoet\API\JSON\Endpoint as APIEndpoint;
5
  use MailPoet\API\JSON\Error as APIError;
6
+ use MailPoet\Config\Installer;
7
  use MailPoet\Services\Bridge;
8
  use MailPoet\Util\License\License;
9
  use MailPoet\WP\DateTime;
40
 
41
  $success_message = null;
42
  if($state == Bridge::MAILPOET_KEY_VALID) {
43
+ $success_message = __('Your MailPoet Sending Service key has been successfully validated.', 'mailpoet');
44
  } elseif($state == Bridge::MAILPOET_KEY_EXPIRING) {
45
  $success_message = sprintf(
46
+ __('Your MailPoet Sending Service key expires on %s!', 'mailpoet'),
47
  $this->date_time->formatDate(strtotime($result['data']['expire_at']))
48
  );
49
  }
54
 
55
  switch($state) {
56
  case Bridge::MAILPOET_KEY_INVALID:
57
+ $error = __('Your MailPoet Sending Service key is invalid.', 'mailpoet');
58
  break;
59
  default:
60
  $code = !empty($result['code']) ? $result['code'] : Bridge::CHECK_ERROR_UNKNOWN;
61
  $error = sprintf(
62
+ __('Error validating MailPoet Sending Service key, please try again later (code: %s)', 'mailpoet'),
63
  $code
64
  );
65
  break;
89
 
90
  $success_message = null;
91
  if($state == Bridge::PREMIUM_KEY_VALID) {
92
+ $success_message = __('Your Premium key has been successfully validated.', 'mailpoet');
93
  } elseif($state == Bridge::PREMIUM_KEY_EXPIRING) {
94
  $success_message = sprintf(
95
+ __('Your Premium key expires on %s.', 'mailpoet'),
96
  $this->date_time->formatDate(strtotime($result['data']['expire_at']))
97
  );
98
  }
99
 
100
  if($success_message) {
 
101
  return $this->successResponse(
102
  array('message' => $success_message),
103
+ Installer::getPremiumStatus()
104
  );
105
  }
106
 
107
  switch($state) {
108
  case Bridge::PREMIUM_KEY_INVALID:
109
+ $error = __('Your Premium key is invalid.', 'mailpoet');
110
  break;
111
  case Bridge::PREMIUM_KEY_ALREADY_USED:
112
+ $error = __('Your Premium key is already used on another site.', 'mailpoet');
113
  break;
114
  default:
115
  $code = !empty($result['code']) ? $result['code'] : Bridge::CHECK_ERROR_UNKNOWN;
116
  $error = sprintf(
117
+ __('Error validating Premium key, please try again later (code: %s)', 'mailpoet'),
118
  $code
119
  );
120
  break;
122
 
123
  return $this->errorResponse(array(APIError::BAD_REQUEST => $error));
124
  }
125
+ }
lib/Config/Initializer.php CHANGED
@@ -75,6 +75,7 @@ class Initializer {
75
  try {
76
  $this->maybeDbUpdate();
77
  $this->setupRenderer();
 
78
  $this->setupLocalizer();
79
  $this->setupMenu();
80
  $this->setupAnalytics();
@@ -136,6 +137,13 @@ class Initializer {
136
  $this->renderer = new Renderer($caching, $debugging);
137
  }
138
 
 
 
 
 
 
 
 
139
  function setupLocalizer() {
140
  $localizer = new Localizer($this->renderer);
141
  $localizer->init();
75
  try {
76
  $this->maybeDbUpdate();
77
  $this->setupRenderer();
78
+ $this->setupInstaller();
79
  $this->setupLocalizer();
80
  $this->setupMenu();
81
  $this->setupAnalytics();
137
  $this->renderer = new Renderer($caching, $debugging);
138
  }
139
 
140
+ function setupInstaller() {
141
+ $installer = new Installer(
142
+ Installer::PREMIUM_PLUGIN_SLUG
143
+ );
144
+ $installer->init();
145
+ }
146
+
147
  function setupLocalizer() {
148
  $localizer = new Localizer($this->renderer);
149
  $localizer->init();
lib/Config/Installer.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace MailPoet\Config;
3
+
4
+ use MailPoet\Models\Setting;
5
+ use MailPoet\Services\Bridge;
6
+ use MailPoet\Services\Release\API;
7
+ use MailPoet\Util\License\License;
8
+
9
+ if(!defined('ABSPATH')) exit;
10
+
11
+ class Installer {
12
+ const PREMIUM_PLUGIN_SLUG = 'mailpoet-premium';
13
+
14
+ private $slug;
15
+
16
+ function __construct($slug) {
17
+ $this->slug = $slug;
18
+ }
19
+
20
+ function init() {
21
+ add_filter('plugins_api', array($this, 'getPluginInformation'), 10, 3);
22
+ }
23
+
24
+ function getPluginInformation($data, $action = '', $args = null) {
25
+ if($action === 'plugin_information'
26
+ && isset($args->slug)
27
+ && $args->slug === $this->slug
28
+ ) {
29
+ $data = $this->retrievePluginInformation();
30
+ }
31
+
32
+ return $data;
33
+ }
34
+
35
+ static function getPremiumStatus() {
36
+ $slug = self::PREMIUM_PLUGIN_SLUG;
37
+
38
+ $premium_plugin_active = License::getLicense();
39
+ $premium_plugin_installed = $premium_plugin_active || self::isPluginInstalled($slug);
40
+ $premium_install_url = $premium_plugin_installed ? '' : self::getPluginInstallationUrl($slug);
41
+ $premium_activate_url = $premium_plugin_active ? '' : self::getPluginActivationUrl($slug);
42
+
43
+ return compact(
44
+ 'premium_plugin_active',
45
+ 'premium_plugin_installed',
46
+ 'premium_install_url',
47
+ 'premium_activate_url'
48
+ );
49
+ }
50
+
51
+ static function isPluginInstalled($slug) {
52
+ $installed_plugin = self::getInstalledPlugin($slug);
53
+ return !empty($installed_plugin);
54
+ }
55
+
56
+ static function getPluginInstallationUrl($slug) {
57
+ $install_url = add_query_arg(
58
+ array(
59
+ 'action' => 'install-plugin',
60
+ 'plugin' => $slug,
61
+ '_wpnonce' => wp_create_nonce('install-plugin_' . $slug),
62
+ ),
63
+ self_admin_url('update.php')
64
+ );
65
+ return $install_url;
66
+ }
67
+
68
+ static function getPluginActivationUrl($slug) {
69
+ $plugin_file = self::getPluginFile($slug);
70
+ if(empty($plugin_file)) {
71
+ return false;
72
+ }
73
+ $activate_url = add_query_arg(
74
+ array(
75
+ 'action' => 'activate',
76
+ 'plugin' => $plugin_file,
77
+ '_wpnonce' => wp_create_nonce('activate-plugin_' . $plugin_file),
78
+ ),
79
+ self_admin_url('plugins.php')
80
+ );
81
+ return $activate_url;
82
+ }
83
+
84
+ private static function getInstalledPlugin($slug) {
85
+ $installed_plugin = array();
86
+ if(is_dir(WP_PLUGIN_DIR . '/' . $slug)) {
87
+ $installed_plugin = get_plugins('/' . $slug);
88
+ }
89
+ return $installed_plugin;
90
+ }
91
+
92
+ private static function getPluginFile($slug) {
93
+ $plugin_file = false;
94
+ $installed_plugin = self::getInstalledPlugin($slug);
95
+ if(!empty($installed_plugin)) {
96
+ $plugin_file = $slug . '/' . key($installed_plugin);
97
+ }
98
+ return $plugin_file;
99
+ }
100
+
101
+ function retrievePluginInformation() {
102
+ $key = Setting::getValue(Bridge::PREMIUM_KEY_SETTING_NAME);
103
+ $api = new API($key);
104
+ $info = $api->getPluginInformation($this->slug);
105
+ $info = $this->formatInformation($info);
106
+ return $info;
107
+ }
108
+
109
+ private function formatInformation($info) {
110
+ // cast sections object to array for WP to understand
111
+ if(isset($info->sections)) {
112
+ $info->sections = (array)$info->sections;
113
+ }
114
+ return $info;
115
+ }
116
+ }
lib/Config/Menu.php CHANGED
@@ -165,6 +165,20 @@ class Menu {
165
  'settings'
166
  )
167
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  add_submenu_page(
169
  'admin.php?page=mailpoet-subscribers',
170
  $this->setPageTitle(__('Import', 'mailpoet')),
@@ -299,19 +313,34 @@ class Menu {
299
  $this->displayPage('update.html', $data);
300
  }
301
 
 
 
 
 
 
 
 
 
 
 
302
  function settings() {
303
  if($this->subscribers_over_limit) return $this->displaySubscriberLimitExceededTemplate();
304
 
305
  $settings = Setting::getAll();
306
  $flags = $this->_getFlags();
307
 
 
 
 
 
308
  $data = array(
309
  'settings' => $settings,
310
  'segments' => Segment::getSegmentsWithSubscriberCount(),
311
  'cron_trigger' => CronTrigger::getAvailableMethods(),
312
  'total_subscribers' => Subscriber::getTotalSubscribers(),
313
  'premium_plugin_active' => License::getLicense(),
314
- 'premium_key_valid' => isset($this->premium_key_valid) ? $this->premium_key_valid : null,
 
315
  'pages' => Pages::getAll(),
316
  'flags' => $flags,
317
  'current_user' => wp_get_current_user(),
@@ -321,6 +350,8 @@ class Menu {
321
  )
322
  );
323
 
 
 
324
  $this->displayPage('settings.html', $data);
325
  }
326
 
@@ -373,6 +404,8 @@ class Menu {
373
  $data['date_formats'] = Block\Date::getDateFormats();
374
  $data['month_names'] = Block\Date::getMonthNames();
375
 
 
 
376
  $this->displayPage('subscribers/subscribers.html', $data);
377
  }
378
 
165
  'settings'
166
  )
167
  );
168
+
169
+ // Only show this page in menu if the Premium plugin is not activated
170
+ add_submenu_page(
171
+ License::getLicense() ? true : $main_page_slug,
172
+ $this->setPageTitle(__('Premium', 'mailpoet')),
173
+ __('Premium', 'mailpoet'),
174
+ Env::$required_permission,
175
+ 'mailpoet-premium',
176
+ array(
177
+ $this,
178
+ 'premium'
179
+ )
180
+ );
181
+
182
  add_submenu_page(
183
  'admin.php?page=mailpoet-subscribers',
184
  $this->setPageTitle(__('Import', 'mailpoet')),
313
  $this->displayPage('update.html', $data);
314
  }
315
 
316
+ function premium() {
317
+ $data = array(
318
+ 'subscriber_count' => Subscriber::getTotalSubscribers(),
319
+ 'sub_menu' => 'mailpoet-newsletters'
320
+ );
321
+
322
+ $this->displayPage('premium.html', $data);
323
+ }
324
+
325
+
326
  function settings() {
327
  if($this->subscribers_over_limit) return $this->displaySubscriberLimitExceededTemplate();
328
 
329
  $settings = Setting::getAll();
330
  $flags = $this->_getFlags();
331
 
332
+ // force MSS key check even if the method isn't active
333
+ $checker = new ServicesChecker();
334
+ $mp_api_key_valid = $checker->isMailPoetAPIKeyValid(false, true);
335
+
336
  $data = array(
337
  'settings' => $settings,
338
  'segments' => Segment::getSegmentsWithSubscriberCount(),
339
  'cron_trigger' => CronTrigger::getAvailableMethods(),
340
  'total_subscribers' => Subscriber::getTotalSubscribers(),
341
  'premium_plugin_active' => License::getLicense(),
342
+ 'premium_key_valid' => !empty($this->premium_key_valid),
343
+ 'mss_key_valid' => !empty($mp_api_key_valid),
344
  'pages' => Pages::getAll(),
345
  'flags' => $flags,
346
  'current_user' => wp_get_current_user(),
350
  )
351
  );
352
 
353
+ $data = array_merge($data, Installer::getPremiumStatus());
354
+
355
  $this->displayPage('settings.html', $data);
356
  }
357
 
404
  $data['date_formats'] = Block\Date::getDateFormats();
405
  $data['month_names'] = Block\Date::getMonthNames();
406
 
407
+ $data['premium_plugin_active'] = License::getLicense();
408
+
409
  $this->displayPage('subscribers/subscribers.html', $data);
410
  }
411
 
lib/Config/ServicesChecker.php CHANGED
@@ -12,17 +12,18 @@ use MailPoet\WP\Notice as WPNotice;
12
  if(!defined('ABSPATH')) exit;
13
 
14
  class ServicesChecker {
15
- function isMailPoetAPIKeyValid($display_error_notice = true) {
16
- if(!Bridge::isMPSendingServiceEnabled()) {
17
  return null;
18
  }
19
 
 
20
  $mss_key = Setting::getValue(Bridge::API_KEY_STATE_SETTING_NAME);
21
- if(empty($mss_key['state']) || $mss_key['state'] == Bridge::MAILPOET_KEY_VALID) {
22
- return true;
23
- }
24
 
25
- if($mss_key['state'] == Bridge::MAILPOET_KEY_INVALID) {
 
 
 
26
  if($display_error_notice) {
27
  $error = Helpers::replaceLinkTags(
28
  __('All sending is currently paused! Your key to send with MailPoet is invalid. [link]Visit MailPoet.com to purchase a key[/link]', 'mailpoet'),
@@ -45,9 +46,11 @@ class ServicesChecker {
45
  WPNotice::displayWarning($error);
46
  }
47
  return true;
 
 
48
  }
49
 
50
- return true;
51
  }
52
 
53
  function isPremiumKeyValid($display_error_notice = true) {
@@ -55,7 +58,7 @@ class ServicesChecker {
55
  $premium_plugin_active = License::getLicense();
56
  $premium_key = Setting::getValue(Bridge::PREMIUM_KEY_STATE_SETTING_NAME);
57
 
58
- if(!$premium_plugin_active || !$premium_key_specified) {
59
  $display_error_notice = false;
60
  }
61
 
12
  if(!defined('ABSPATH')) exit;
13
 
14
  class ServicesChecker {
15
+ function isMailPoetAPIKeyValid($display_error_notice = true, $force_check = false) {
16
+ if(!$force_check && !Bridge::isMPSendingServiceEnabled()) {
17
  return null;
18
  }
19
 
20
+ $mss_key_specified = Bridge::isMSSKeySpecified();
21
  $mss_key = Setting::getValue(Bridge::API_KEY_STATE_SETTING_NAME);
 
 
 
22
 
23
+ if(!$mss_key_specified
24
+ || empty($mss_key['state'])
25
+ || $mss_key['state'] == Bridge::MAILPOET_KEY_INVALID
26
+ ) {
27
  if($display_error_notice) {
28
  $error = Helpers::replaceLinkTags(
29
  __('All sending is currently paused! Your key to send with MailPoet is invalid. [link]Visit MailPoet.com to purchase a key[/link]', 'mailpoet'),
46
  WPNotice::displayWarning($error);
47
  }
48
  return true;
49
+ } elseif($mss_key['state'] == Bridge::MAILPOET_KEY_VALID) {
50
+ return true;
51
  }
52
 
53
+ return false;
54
  }
55
 
56
  function isPremiumKeyValid($display_error_notice = true) {
58
  $premium_plugin_active = License::getLicense();
59
  $premium_key = Setting::getValue(Bridge::PREMIUM_KEY_STATE_SETTING_NAME);
60
 
61
+ if(!$premium_plugin_active) {
62
  $display_error_notice = false;
63
  }
64
 
lib/Cron/Workers/KeyCheck/PremiumKeyCheck.php CHANGED
@@ -14,7 +14,7 @@ class PremiumKeyCheck extends KeyCheckWorker {
14
  }
15
 
16
  function checkKey() {
17
- $premium_key = Setting::getValue(Bridge::PREMIUM_KEY_STATE_SETTING_NAME);
18
  $result = $this->bridge->checkPremiumKey($premium_key);
19
  return $result;
20
  }
14
  }
15
 
16
  function checkKey() {
17
+ $premium_key = Setting::getValue(Bridge::PREMIUM_KEY_SETTING_NAME);
18
  $result = $this->bridge->checkPremiumKey($premium_key);
19
  return $result;
20
  }
lib/Cron/Workers/Scheduler.php CHANGED
@@ -31,6 +31,8 @@ class Scheduler {
31
  ->findOne($queue->newsletter_id);
32
  if(!$newsletter || $newsletter->deleted_at !== null) {
33
  $queue->delete();
 
 
34
  } elseif($newsletter->type === 'welcome') {
35
  $this->processWelcomeNewsletter($newsletter, $queue);
36
  } elseif($newsletter->type === 'notification') {
31
  ->findOne($queue->newsletter_id);
32
  if(!$newsletter || $newsletter->deleted_at !== null) {
33
  $queue->delete();
34
+ } elseif($newsletter->status !== 'active') {
35
+ continue;
36
  } elseif($newsletter->type === 'welcome') {
37
  $this->processWelcomeNewsletter($newsletter, $queue);
38
  } elseif($newsletter->type === 'notification') {
lib/Cron/Workers/SendingQueue/SendingQueue.php CHANGED
@@ -6,10 +6,10 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Links;
6
  use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
7
  use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
8
  use MailPoet\Mailer\MailerLog;
 
9
  use MailPoet\Models\SendingQueue as SendingQueueModel;
10
  use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
11
  use MailPoet\Models\Subscriber as SubscriberModel;
12
- use MailPoet\Router\Endpoints\Track;
13
 
14
  if(!defined('ABSPATH')) exit;
15
 
@@ -28,8 +28,12 @@ class SendingQueue {
28
  function process() {
29
  $this->enforceSendingAndExecutionLimits();
30
  foreach(self::getRunningQueues() as $queue) {
31
- // get and pre-process newsletter (render, replace shortcodes/links, etc.)
32
- $newsletter = $this->newsletter_task->getAndPreProcess($queue);
 
 
 
 
33
  if(!$newsletter) {
34
  $queue->delete();
35
  continue;
@@ -37,7 +41,7 @@ class SendingQueue {
37
  // configure mailer
38
  $this->mailer_task->configureMailer($newsletter);
39
  // get newsletter segments
40
- $newsletter_segments_ids = $this->newsletter_task->getSegments($newsletter);
41
  // get subscribers
42
  $queue->subscribers = $queue->getSubscribers();
43
  $subscriber_batches = array_chunk(
@@ -178,9 +182,10 @@ class SendingQueue {
178
 
179
  static function getRunningQueues() {
180
  return SendingQueueModel::orderByAsc('priority')
 
181
  ->whereNull('deleted_at')
182
  ->whereNull('status')
183
  ->whereNull('type')
184
  ->findMany();
185
  }
186
- }
6
  use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
7
  use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
8
  use MailPoet\Mailer\MailerLog;
9
+ use MailPoet\Models\Newsletter as NewsletterModel;
10
  use MailPoet\Models\SendingQueue as SendingQueueModel;
11
  use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
12
  use MailPoet\Models\Subscriber as SubscriberModel;
 
13
 
14
  if(!defined('ABSPATH')) exit;
15
 
28
  function process() {
29
  $this->enforceSendingAndExecutionLimits();
30
  foreach(self::getRunningQueues() as $queue) {
31
+ $newsletter = $this->newsletter_task->getNewsletterFromQueue($queue);
32
+ if(!$newsletter) {
33
+ continue;
34
+ }
35
+ // pre-process newsletter (render, replace shortcodes/links, etc.)
36
+ $newsletter = $this->newsletter_task->preProcessNewsletter($newsletter, $queue);
37
  if(!$newsletter) {
38
  $queue->delete();
39
  continue;
41
  // configure mailer
42
  $this->mailer_task->configureMailer($newsletter);
43
  // get newsletter segments
44
+ $newsletter_segments_ids = $this->newsletter_task->getNewsletterSegments($newsletter);
45
  // get subscribers
46
  $queue->subscribers = $queue->getSubscribers();
47
  $subscriber_batches = array_chunk(
182
 
183
  static function getRunningQueues() {
184
  return SendingQueueModel::orderByAsc('priority')
185
+ ->orderByAsc('created_at')
186
  ->whereNull('deleted_at')
187
  ->whereNull('status')
188
  ->whereNull('type')
189
  ->findMany();
190
  }
191
+ }
lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php CHANGED
@@ -22,11 +22,31 @@ class Newsletter {
22
  $this->tracking_enabled = (boolean)Setting::getValue('tracking.enabled');
23
  }
24
 
25
- function getAndPreProcess($queue) {
26
- $newsletter = $queue->newsletter()->whereNull('deleted_at')->findOne();
27
- if(!$newsletter) {
28
- return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  }
 
 
 
 
30
  // return the newsletter if it was previously rendered
31
  if(!is_null($queue->getNewsletterRenderedBody())) {
32
  return $newsletter;
@@ -113,7 +133,7 @@ class Newsletter {
113
  }
114
  }
115
 
116
- function getSegments($newsletter) {
117
  $segments = NewsletterSegmentModel::where('newsletter_id', $newsletter->id)
118
  ->select('segment_id')
119
  ->findArray();
22
  $this->tracking_enabled = (boolean)Setting::getValue('tracking.enabled');
23
  }
24
 
25
+ function getNewsletterFromQueue($queue) {
26
+ // get existing active or sending newsletter
27
+ $newsletter = $queue->newsletter()
28
+ ->whereNull('deleted_at')
29
+ ->whereAnyIs(array(
30
+ array('status' => NewsletterModel::STATUS_ACTIVE),
31
+ array('status' => NewsletterModel::STATUS_SENDING)
32
+ ))
33
+ ->findOne();
34
+ if(!$newsletter) return false;
35
+ // if this is a notification history, get existing active or sending parent newsletter
36
+ if($newsletter->type == NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
37
+ $parent_newsletter = $newsletter->parent()
38
+ ->whereNull('deleted_at')
39
+ ->whereAnyIs(array(
40
+ array('status' => NewsletterModel::STATUS_ACTIVE),
41
+ array('status' => NewsletterModel::STATUS_SENDING)
42
+ ))
43
+ ->findOne();
44
+ if(!$parent_newsletter) return false;
45
  }
46
+ return $newsletter;
47
+ }
48
+
49
+ function preProcessNewsletter($newsletter, $queue) {
50
  // return the newsletter if it was previously rendered
51
  if(!is_null($queue->getNewsletterRenderedBody())) {
52
  return $newsletter;
133
  }
134
  }
135
 
136
+ function getNewsletterSegments($newsletter) {
137
  $segments = NewsletterSegmentModel::where('newsletter_id', $newsletter->id)
138
  ->select('segment_id')
139
  ->findArray();
lib/Helpscout/Beacon.php CHANGED
@@ -25,7 +25,8 @@ class Beacon {
25
  'name' => $current_user->display_name,
26
  'email' => $current_user->user_email,
27
  'PHP version' => PHP_VERSION,
28
- 'MailPoet version' => MAILPOET_VERSION,
 
29
  'WordPress version' => get_bloginfo('version'),
30
  'Database version' => $db_version,
31
  'Web server' => (!empty($_SERVER["SERVER_SOFTWARE"])) ? $_SERVER["SERVER_SOFTWARE"] : 'N/A',
25
  'name' => $current_user->display_name,
26
  'email' => $current_user->user_email,
27
  'PHP version' => PHP_VERSION,
28
+ 'MailPoet Free version' => MAILPOET_VERSION,
29
+ 'MailPoet Premium version' => (defined('MAILPOET_PREMIUM_VERSION')) ? MAILPOET_PREMIUM_VERSION : 'N/A',
30
  'WordPress version' => get_bloginfo('version'),
31
  'Database version' => $db_version,
32
  'Web server' => (!empty($_SERVER["SERVER_SOFTWARE"])) ? $_SERVER["SERVER_SOFTWARE"] : 'N/A',
lib/Models/Model.php CHANGED
@@ -9,7 +9,8 @@ class Model extends \Sudzy\ValidModel {
9
 
10
  function __construct() {
11
  $this->_errors = array();
12
- parent::__construct();
 
13
  }
14
 
15
  static function create() {
9
 
10
  function __construct() {
11
  $this->_errors = array();
12
+ $validator = new ModelValidator();
13
+ parent::__construct($validator);
14
  }
15
 
16
  static function create() {
lib/Models/ModelValidator.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace MailPoet\Models;
4
+
5
+ if(!defined('ABSPATH')) exit;
6
+
7
+ class ModelValidator extends \Sudzy\Engine {
8
+ public $validators;
9
+
10
+ function __construct() {
11
+ parent::__construct();
12
+ $this->validators = array(
13
+ 'validEmail' => 'validateEmail'
14
+ );
15
+ $this->setupValidators();
16
+ }
17
+
18
+ private function setupValidators() {
19
+ $_this = $this;
20
+ foreach($this->validators as $validator => $action) {
21
+ $this->addValidator($validator, function($params) use ($action, $_this) {
22
+ return call_user_func(array($this, $action), $params);
23
+ });
24
+ }
25
+ }
26
+
27
+ function validateEmail($email) {
28
+ return is_email($email) !== false;
29
+ }
30
+ }
lib/Models/Newsletter.php CHANGED
@@ -39,6 +39,14 @@ class Newsletter extends Model {
39
  );
40
  }
41
 
 
 
 
 
 
 
 
 
42
  function segments() {
43
  return $this->hasManyThrough(
44
  __NAMESPACE__.'\Segment',
@@ -86,62 +94,111 @@ class Newsletter extends Model {
86
 
87
  function trash() {
88
  // trash queue associations
89
- SendingQueue::rawExecute(
90
- 'UPDATE `' . SendingQueue::$_table . '` ' .
91
- 'SET `deleted_at` = NOW() ' .
92
- 'WHERE `newsletter_id` = ' . $this->id
93
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
 
95
  return parent::trash();
96
  }
97
 
98
  static function bulkTrash($orm) {
99
- // bulk trash queue associations
100
  parent::bulkAction($orm, function($ids) {
101
- SendingQueue::rawExecute(join(' ', array(
102
- 'UPDATE `' . SendingQueue::$_table . '`',
103
- 'SET `deleted_at` = NOW()',
104
- 'WHERE `newsletter_id` IN (' . rtrim(str_repeat('?,', count($ids)), ',') . ')'
105
- )),
106
- $ids
107
- );
 
 
 
 
 
 
 
 
 
 
 
 
108
  });
109
 
110
  return parent::bulkTrash($orm);
111
  }
112
 
113
  function delete() {
114
- // delete segment associations
115
- $this->segmentRelations()->deleteMany();
116
- // delete queue associations
117
- $this->queue()->deleteMany();
 
 
 
 
 
 
 
118
 
119
  return parent::delete();
120
  }
121
 
122
  static function bulkDelete($orm) {
123
- // bulk delete segment associations
124
- parent::bulkAction($orm, function($ids) {
125
- NewsletterSegment::whereIn('newsletter_id', $ids)
126
- ->deleteMany();
127
- });
128
-
129
- // bulk delete queue associations
130
  parent::bulkAction($orm, function($ids) {
131
- SendingQueue::whereIn('newsletter_id', $ids)
132
- ->deleteMany();
 
 
 
 
 
 
 
 
133
  });
134
 
135
  return parent::bulkDelete($orm);
136
  }
137
 
138
  function restore() {
139
- // restore trashed queue associations
140
- SendingQueue::rawExecute(
141
- 'UPDATE `' . SendingQueue::$_table . '` ' .
142
- 'SET `deleted_at` = null ' .
143
- 'WHERE `newsletter_id` = ' . $this->id
144
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
 
146
  if($this->status == self::STATUS_SENDING) {
147
  $this->set('status', self::STATUS_DRAFT);
@@ -151,13 +208,27 @@ class Newsletter extends Model {
151
  }
152
 
153
  static function bulkRestore($orm) {
154
- // bulk restore trashed queue associations
155
  parent::bulkAction($orm, function($ids) {
156
- SendingQueue::whereIn('newsletter_id', $ids)
157
- ->whereNotNull('deleted_at')
158
- ->findResultSet()
159
- ->set('deleted_at', null)
160
- ->save();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  });
162
 
163
  parent::bulkAction($orm, function($ids) {
39
  );
40
  }
41
 
42
+ function parent() {
43
+ return $this->hasOne(
44
+ __NAMESPACE__.'\Newsletter',
45
+ 'id',
46
+ 'parent_id'
47
+ );
48
+ }
49
+
50
  function segments() {
51
  return $this->hasManyThrough(
52
  __NAMESPACE__.'\Segment',
94
 
95
  function trash() {
96
  // trash queue associations
97
+ $children = $this->children()->select('id')->findArray();
98
+ if($children) {
99
+ $this->children()->rawExecute(
100
+ 'UPDATE `' . self::$_table . '` ' .
101
+ 'SET `deleted_at` = NOW() ' .
102
+ 'WHERE `parent_id` = ' . $this->id
103
+ );
104
+ SendingQueue::rawExecute(
105
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
106
+ 'SET `deleted_at` = NOW() ' .
107
+ 'WHERE `newsletter_id` IN (' . join(',', array_merge(Helpers::flattenArray($children), array($this->id))) . ')'
108
+ );
109
+ } else {
110
+ SendingQueue::rawExecute(
111
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
112
+ 'SET `deleted_at` = NOW() ' .
113
+ 'WHERE `newsletter_id` = ' . $this->id
114
+ );
115
+ }
116
 
117
  return parent::trash();
118
  }
119
 
120
  static function bulkTrash($orm) {
121
+ // bulk trash queue and notification history associations
122
  parent::bulkAction($orm, function($ids) {
123
+ $children = Newsletter::whereIn('parent_id', $ids)->select('id')->findArray();
124
+ if($children) {
125
+ Newsletter::rawExecute(
126
+ 'UPDATE `' . Newsletter::$_table . '` ' .
127
+ 'SET `deleted_at` = NOW() ' .
128
+ 'WHERE `parent_id` IN (' . join(',', Helpers::flattenArray($ids)) . ')'
129
+ );
130
+ SendingQueue::rawExecute(
131
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
132
+ 'SET `deleted_at` = NOW() ' .
133
+ 'WHERE `newsletter_id` IN (' . join(',', array_merge(Helpers::flattenArray($children), $ids)) . ')'
134
+ );
135
+ } else {
136
+ SendingQueue::rawExecute(
137
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
138
+ 'SET `deleted_at` = NOW() ' .
139
+ 'WHERE `newsletter_id` IN (' . join(',', Helpers::flattenArray($ids)) . ')'
140
+ );
141
+ }
142
  });
143
 
144
  return parent::bulkTrash($orm);
145
  }
146
 
147
  function delete() {
148
+ // delete queue, notification history and segment associations
149
+ $children = $this->children()->select('id')->findArray();
150
+ if($children) {
151
+ $children = Helpers::flattenArray($children);
152
+ $this->children()->deleteMany();
153
+ SendingQueue::whereIn('newsletter_id', array_merge($children, array($this->id)))->deleteMany();
154
+ NewsletterSegment::whereIn('newsletter_id', array_merge($children, array($this->id)))->deleteMany();
155
+ } else {
156
+ $this->queue()->deleteMany();
157
+ $this->segmentRelations()->deleteMany();
158
+ }
159
 
160
  return parent::delete();
161
  }
162
 
163
  static function bulkDelete($orm) {
164
+ // bulk delete queue, notification history and segment associations
 
 
 
 
 
 
165
  parent::bulkAction($orm, function($ids) {
166
+ $children = Newsletter::whereIn('parent_id', $ids)->select('id')->findArray();
167
+ if($children) {
168
+ $children = Helpers::flattenArray($children);
169
+ Newsletter::whereIn('parent_id', $ids)->deleteMany();
170
+ SendingQueue::whereIn('newsletter_id', array_merge($children, $ids))->deleteMany();
171
+ NewsletterSegment::whereIn('newsletter_id', array_merge($children, $ids))->deleteMany();
172
+ } else {
173
+ SendingQueue::whereIn('newsletter_id', $ids)->deleteMany();
174
+ NewsletterSegment::whereIn('newsletter_id', $ids)->deleteMany();
175
+ }
176
  });
177
 
178
  return parent::bulkDelete($orm);
179
  }
180
 
181
  function restore() {
182
+ // restore trashed queue and notification history associations
183
+ $children = $this->children()->select('id')->findArray();
184
+ if($children) {
185
+ $this->children()->rawExecute(
186
+ 'UPDATE `' . self::$_table . '` ' .
187
+ 'SET `deleted_at` = null ' .
188
+ 'WHERE `parent_id` = ' . $this->id
189
+ );
190
+ SendingQueue::rawExecute(
191
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
192
+ 'SET `deleted_at` = null ' .
193
+ 'WHERE `newsletter_id` IN (' . join(',', array_merge(Helpers::flattenArray($children), array($this->id))) . ')'
194
+ );
195
+ } else {
196
+ SendingQueue::rawExecute(
197
+ 'UPDATE `' . SendingQueue::$_table . '` ' .
198
+ 'SET `deleted_at` = null ' .
199
+ 'WHERE `newsletter_id` = ' . $this->id
200
+ );
201
+ }
202
 
203
  if($this->status == self::STATUS_SENDING) {
204
  $this->set('status', self::STATUS_DRAFT);
208
  }
209
 
210
  static function bulkRestore($orm) {
211
+ // bulk restore trashed queue and notification history associations
212
  parent::bulkAction($orm, function($ids) {
213
+ $children = Newsletter::whereIn('parent_id', $ids)->select('id')->findArray();
214
+ if($children) {
215
+ Newsletter::whereIn('parent_id', $ids)
216
+ ->whereNotNull('deleted_at')
217
+ ->findResultSet()
218
+ ->set('deleted_at', null)
219
+ ->save();
220
+ SendingQueue::whereIn('newsletter_id', Helpers::flattenArray($children))
221
+ ->whereNotNull('deleted_at')
222
+ ->findResultSet()
223
+ ->set('deleted_at', null)
224
+ ->save();
225
+ } else {
226
+ SendingQueue::whereIn('newsletter_id', $ids)
227
+ ->whereNotNull('deleted_at')
228
+ ->findResultSet()
229
+ ->set('deleted_at', null)
230
+ ->save();
231
+ }
232
  });
233
 
234
  parent::bulkAction($orm, function($ids) {
lib/Models/Subscriber.php CHANGED
@@ -22,7 +22,7 @@ class Subscriber extends Model {
22
 
23
  $this->addValidations('email', array(
24
  'required' => __('Please enter your email address', 'mailpoet'),
25
- 'isEmail' => __('Your email address is invalid!', 'mailpoet')
26
  ));
27
  }
28
 
22
 
23
  $this->addValidations('email', array(
24
  'required' => __('Please enter your email address', 'mailpoet'),
25
+ 'validEmail' => __('Your email address is invalid!', 'mailpoet')
26
  ));
27
  }
28
 
lib/Newsletter/Renderer/Renderer.php CHANGED
@@ -1,6 +1,9 @@
1
  <?php
2
  namespace MailPoet\Newsletter\Renderer;
3
 
 
 
 
4
  use MailPoet\Util\pQuery\pQuery;
5
 
6
  if(!defined('ABSPATH')) exit;
@@ -24,6 +27,9 @@ class Renderer {
24
  $this->DOM_parser = new pQuery();
25
  $this->CSS_inliner = new \MailPoet\Util\CSS();
26
  $this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
 
 
 
27
  }
28
 
29
  function render($type = false) {
@@ -38,6 +44,10 @@ class Renderer {
38
  ? $body['globalStyles']
39
  : array();
40
 
 
 
 
 
41
  $rendered_body = $this->renderBody($content);
42
  $rendered_styles = $this->renderStyles($styles);
43
 
@@ -135,4 +145,44 @@ class Renderer {
135
  );
136
  return $template;
137
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  }
1
  <?php
2
  namespace MailPoet\Newsletter\Renderer;
3
 
4
+ use MailPoet\Config\Env;
5
+ use MailPoet\Services\Bridge;
6
+ use MailPoet\Util\License\License;
7
  use MailPoet\Util\pQuery\pQuery;
8
 
9
  if(!defined('ABSPATH')) exit;
27
  $this->DOM_parser = new pQuery();
28
  $this->CSS_inliner = new \MailPoet\Util\CSS();
29
  $this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
30
+ $this->premium_activated = License::getLicense();
31
+ $bridge = new Bridge();
32
+ $this->mss_activated = $bridge->isMPSendingServiceEnabled();
33
  }
34
 
35
  function render($type = false) {
44
  ? $body['globalStyles']
45
  : array();
46
 
47
+ if(!$this->premium_activated && !$this->mss_activated && !$this->preview) {
48
+ $content = $this->addMailpoetLogoContentBlock($content, $styles);
49
+ }
50
+
51
  $rendered_body = $this->renderBody($content);
52
  $rendered_styles = $this->renderStyles($styles);
53
 
145
  );
146
  return $template;
147
  }
148
+
149
+ function addMailpoetLogoContentBlock($content, $styles) {
150
+ if(empty($content['blocks'])) return $content;
151
+ $content['blocks'][] = array(
152
+ 'type' => 'container',
153
+ 'orientation' => 'horizontal',
154
+ 'styles' => array(
155
+ 'block' => array(
156
+ 'backgroundColor' => (!empty($styles['body']['backgroundColor'])) ?
157
+ $styles['body']['backgroundColor'] :
158
+ 'transparent'
159
+ )
160
+ ),
161
+ 'blocks' => array(
162
+ array(
163
+ 'type' => 'container',
164
+ 'orientation' => 'vertical',
165
+ 'styles' => array(
166
+ ),
167
+ 'blocks' => array(
168
+ array(
169
+ 'type' => 'image',
170
+ 'link' => 'http://www.mailpoet.com',
171
+ 'src' => Env::$assets_url . '/img/mailpoet_logo_newsletter.png',
172
+ 'fullWidth' => false,
173
+ 'alt' => 'MailPoet',
174
+ 'width' => '108px',
175
+ 'height' => '65px',
176
+ 'styles' => array(
177
+ 'block' => array(
178
+ 'textAlign' => 'center'
179
+ )
180
+ )
181
+ )
182
+ )
183
+ )
184
+ )
185
+ );
186
+ return $content;
187
+ }
188
  }
lib/Services/Bridge.php CHANGED
@@ -8,6 +8,7 @@ use MailPoet\Models\Subscriber;
8
  if(!defined('ABSPATH')) exit;
9
 
10
  class Bridge {
 
11
  const API_KEY_STATE_SETTING_NAME = 'mta.mailpoet_api_key_state';
12
 
13
  const PREMIUM_KEY_SETTING_NAME = 'premium.premium_key';
@@ -41,6 +42,11 @@ class Bridge {
41
  }
42
  }
43
 
 
 
 
 
 
44
  static function isPremiumKeySpecified() {
45
  $key = Setting::getValue(self::PREMIUM_KEY_SETTING_NAME);
46
  return !empty($key);
@@ -76,6 +82,14 @@ class Bridge {
76
  $key_state = self::MAILPOET_KEY_CHECK_ERROR;
77
  }
78
 
 
 
 
 
 
 
 
 
79
  return $this->buildKeyState(
80
  $key_state,
81
  $result,
@@ -112,6 +126,14 @@ class Bridge {
112
  $key_state = self::PREMIUM_KEY_CHECK_ERROR;
113
  }
114
 
 
 
 
 
 
 
 
 
115
  return $this->buildKeyState(
116
  $key_state,
117
  $result,
@@ -157,9 +179,11 @@ class Bridge {
157
  function onSettingsSave($settings) {
158
  $api_key_set = !empty($settings[Mailer::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key']);
159
  $premium_key_set = !empty($settings['premium']['premium_key']);
160
- if($api_key_set && self::isMPSendingServiceEnabled()) {
161
  $result = $this->checkMSSKey($settings[Mailer::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key']);
162
- $this->updateSubscriberCount($result);
 
 
163
  }
164
  if($premium_key_set) {
165
  $this->checkPremiumKey($settings['premium']['premium_key']);
8
  if(!defined('ABSPATH')) exit;
9
 
10
  class Bridge {
11
+ const API_KEY_SETTING_NAME = 'mta.mailpoet_api_key';
12
  const API_KEY_STATE_SETTING_NAME = 'mta.mailpoet_api_key_state';
13
 
14
  const PREMIUM_KEY_SETTING_NAME = 'premium.premium_key';
42
  }
43
  }
44
 
45
+ static function isMSSKeySpecified() {
46
+ $key = Setting::getValue(self::API_KEY_SETTING_NAME);
47
+ return !empty($key);
48
+ }
49
+
50
  static function isPremiumKeySpecified() {
51
  $key = Setting::getValue(self::PREMIUM_KEY_SETTING_NAME);
52
  return !empty($key);
82
  $key_state = self::MAILPOET_KEY_CHECK_ERROR;
83
  }
84
 
85
+ // store the key itself
86
+ if($update_settings) {
87
+ Setting::setValue(
88
+ self::API_KEY_SETTING_NAME,
89
+ $this->api->getKey()
90
+ );
91
+ }
92
+
93
  return $this->buildKeyState(
94
  $key_state,
95
  $result,
126
  $key_state = self::PREMIUM_KEY_CHECK_ERROR;
127
  }
128
 
129
+ // store the key itself
130
+ if($update_settings) {
131
+ Setting::setValue(
132
+ self::PREMIUM_KEY_SETTING_NAME,
133
+ $this->api->getKey()
134
+ );
135
+ }
136
+
137
  return $this->buildKeyState(
138
  $key_state,
139
  $result,
179
  function onSettingsSave($settings) {
180
  $api_key_set = !empty($settings[Mailer::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key']);
181
  $premium_key_set = !empty($settings['premium']['premium_key']);
182
+ if($api_key_set) {
183
  $result = $this->checkMSSKey($settings[Mailer::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key']);
184
+ if(self::isMPSendingServiceEnabled()) {
185
+ $this->updateSubscriberCount($result);
186
+ }
187
  }
188
  if($premium_key_set) {
189
  $this->checkPremiumKey($settings['premium']['premium_key']);
lib/Services/Release/API.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace MailPoet\Services\Release;
3
+
4
+ if(!defined('ABSPATH')) exit;
5
+
6
+ class API {
7
+ private $api_key;
8
+
9
+ public $url_products = 'https://release.mailpoet.com/products/';
10
+
11
+ function __construct($api_key) {
12
+ $this->setKey($api_key);
13
+ }
14
+
15
+ function getPluginInformation($plugin_name) {
16
+ $result = $this->request(
17
+ $this->url_products . $plugin_name
18
+ );
19
+
20
+ $code = wp_remote_retrieve_response_code($result);
21
+ switch($code) {
22
+ case 200:
23
+ if($body = wp_remote_retrieve_body($result)) {
24
+ $body = json_decode($body);
25
+ }
26
+ break;
27
+ default:
28
+ $body = null;
29
+ break;
30
+ }
31
+
32
+ return $body;
33
+ }
34
+
35
+ function setKey($api_key) {
36
+ $this->api_key = $api_key;
37
+ }
38
+
39
+ function getKey() {
40
+ return $this->api_key;
41
+ }
42
+
43
+ private function request($url, $params = array()) {
44
+ $params['license'] = $this->api_key;
45
+ $url = add_query_arg($params, $url);
46
+ $args = array(
47
+ 'timeout' => 10,
48
+ 'httpversion' => '1.0'
49
+ );
50
+ return wp_remote_get($url, $args);
51
+ }
52
+ }
lib/Services/Release/index.php ADDED
File without changes
lib/Subscribers/ImportExport/Import/Import.php CHANGED
@@ -16,10 +16,14 @@ class Import {
16
  public $update_subscribers;
17
  public $subscribers_fields;
18
  public $subscribers_custom_fields;
 
19
  public $subscribers_count;
20
  public $created_at;
21
  public $updated_at;
22
  public $required_subscribers_fields;
 
 
 
23
  const DB_QUERY_CHUNK_SIZE = 100;
24
 
25
  public function __construct($data) {
@@ -36,9 +40,7 @@ class Import {
36
  $this->subscribers_custom_fields = $this->getCustomSubscribersFields(
37
  array_keys($data['columns'])
38
  );
39
- $this->subscribers_fields_validation_rules = $this->getSubscriberDataValidationRules(
40
- $data['columns']
41
- );
42
  $this->subscribers_count = count(reset($this->subscribers_data));
43
  $this->created_at = date('Y-m-d H:i:s', (int)$data['timestamp']);
44
  $this->updated_at = date('Y-m-d H:i:s', (int)$data['timestamp'] + 1);
@@ -74,7 +76,7 @@ class Import {
74
  $field['validation_rule'] :
75
  false;
76
  }
77
- return $validation_rules;
78
  }
79
 
80
  function process() {
@@ -83,7 +85,9 @@ class Import {
83
  $this->subscribers_data,
84
  $this->subscribers_fields_validation_rules
85
  );
86
-
 
 
87
  // permanently trash deleted subscribers
88
  $this->deleteExistingTrashedSubscribers($subscribers_data);
89
 
@@ -149,6 +153,16 @@ class Import {
149
  $invalid_records = array();
150
  foreach($subscribers_data as $column => &$data) {
151
  $validation_rule = $validation_rules[$column];
 
 
 
 
 
 
 
 
 
 
152
  // if this is a custom column
153
  if(in_array($column, $this->subscribers_custom_fields)) {
154
  $custom_field = CustomField::findOne($column);
@@ -162,7 +176,8 @@ class Import {
162
  $invalid_records[] = $index;
163
  }
164
  return $date;
165
- }, array_keys($data), $data);
 
166
  }
167
  }
168
  }
@@ -172,6 +187,7 @@ class Import {
172
  $data = array_values($data);
173
  }
174
  }
 
175
  return $subscribers_data;
176
  }
177
 
16
  public $update_subscribers;
17
  public $subscribers_fields;
18
  public $subscribers_custom_fields;
19
+ public $subscribers_fields_validation_rules;
20
  public $subscribers_count;
21
  public $created_at;
22
  public $updated_at;
23
  public $required_subscribers_fields;
24
+ private $default_subscribers_data_validation_rules = array(
25
+ 'email' => 'email'
26
+ );
27
  const DB_QUERY_CHUNK_SIZE = 100;
28
 
29
  public function __construct($data) {
40
  $this->subscribers_custom_fields = $this->getCustomSubscribersFields(
41
  array_keys($data['columns'])
42
  );
43
+ $this->subscribers_fields_validation_rules = $this->getSubscriberDataValidationRules($data['columns']);
 
 
44
  $this->subscribers_count = count(reset($this->subscribers_data));
45
  $this->created_at = date('Y-m-d H:i:s', (int)$data['timestamp']);
46
  $this->updated_at = date('Y-m-d H:i:s', (int)$data['timestamp'] + 1);
76
  $field['validation_rule'] :
77
  false;
78
  }
79
+ return array_replace($validation_rules, $this->default_subscribers_data_validation_rules);
80
  }
81
 
82
  function process() {
85
  $this->subscribers_data,
86
  $this->subscribers_fields_validation_rules
87
  );
88
+ if(!$subscribers_data) {
89
+ throw new \Exception(__('No valid subscribers were found.', 'mailpoet'));
90
+ }
91
  // permanently trash deleted subscribers
92
  $this->deleteExistingTrashedSubscribers($subscribers_data);
93
 
153
  $invalid_records = array();
154
  foreach($subscribers_data as $column => &$data) {
155
  $validation_rule = $validation_rules[$column];
156
+ if($validation_rule === 'email') {
157
+ $data = array_map(
158
+ function($index, $email) use(&$invalid_records) {
159
+ if(!is_email($email)) {
160
+ $invalid_records[] = $index;
161
+ }
162
+ return $email;
163
+ }, array_keys($data), $data
164
+ );
165
+ }
166
  // if this is a custom column
167
  if(in_array($column, $this->subscribers_custom_fields)) {
168
  $custom_field = CustomField::findOne($column);
176
  $invalid_records[] = $index;
177
  }
178
  return $date;
179
+ }, array_keys($data), $data
180
+ );
181
  }
182
  }
183
  }
187
  $data = array_values($data);
188
  }
189
  }
190
+ if(empty($subscribers_data['email'])) return false;
191
  return $subscribers_data;
192
  }
193
 
lib/Subscription/Pages.php CHANGED
@@ -9,7 +9,6 @@ use MailPoet\Models\Segment;
9
  use MailPoet\Newsletter\Scheduler\Scheduler;
10
  use MailPoet\Util\Helpers;
11
  use MailPoet\Util\Url as UrlHelper;
12
- use MailPoet\Subscription;
13
  use MailPoet\Form\Renderer as FormRenderer;
14
  use MailPoet\Form\Block\Date as FormBlockDate;
15
 
@@ -417,7 +416,7 @@ class Pages {
417
  : __('Manage your subscription', 'mailpoet')
418
  );
419
 
420
- return '<a href="'.Subscription\UrlHelper::getManageUrl(
421
  $this->subscriber
422
  ).'">'.$text.'</a>';
423
  }
9
  use MailPoet\Newsletter\Scheduler\Scheduler;
10
  use MailPoet\Util\Helpers;
11
  use MailPoet\Util\Url as UrlHelper;
 
12
  use MailPoet\Form\Renderer as FormRenderer;
13
  use MailPoet\Form\Block\Date as FormBlockDate;
14
 
416
  : __('Manage your subscription', 'mailpoet')
417
  );
418
 
419
+ return '<a href="'.Url::getManageUrl(
420
  $this->subscriber
421
  ).'">'.$text.'</a>';
422
  }
mailpoet.php CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
4
 
5
  /*
6
  * Plugin Name: MailPoet
7
- * Version: 3.0.0-beta.33.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,7 +21,7 @@ if(!defined('ABSPATH')) exit;
21
  */
22
 
23
  $mailpoet_plugin = array(
24
- 'version' => '3.0.0-beta.33.1',
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.34.0.0
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.34.0.0',
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.7.5
6
- Stable tag: 3.0.0-beta.33.1
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
@@ -91,6 +91,13 @@ Our [support site](https://beta.docs.mailpoet.com) has plenty of articles. You c
91
 
92
  == Changelog ==
93
 
 
 
 
 
 
 
 
94
  = 3.0.0-beta.33.1 - 2017-05-30 =
95
  * Updated: minimum required PHP version was increased from 5.3 to 5.3.3. Don't be stuck in the last decade. Ask your host to upgrade you to PHP 7;
96
  * Improved: we now bundle multilingual translations that are 75% or more complete (a decrease from the previous 100% threshold);
3
  Tags: newsletter, email, welcome email, post notification, autoresponder, signup, subscription, SMTP
4
  Requires at least: 4.6
5
  Tested up to: 4.7.5
6
+ Stable tag: 3.0.0-beta.34.0.0
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
91
 
92
  == Changelog ==
93
 
94
+ = 3.0.0-beta.34.0.0 - 2017-06-07 =
95
+ * Added: Premium features are officially available. Free users can visit the Premium page in the menu for more info. Premium users: get your key on account.mailpoet.com to continue using Premium;
96
+ * Improved: email addresses are now validated using WordPress is_email() function. Kudos Oskar L. and cnesbit!;
97
+ * Fixed: scheduled sending queue jobs are paused when post notifications are made inactive. Thanks Oskar!;
98
+ * Fixed: post notification history no longer displays a blank subject for notifications waiting in queue. Thanks Lyon!;
99
+ * Fixed: unsubscribe page works again. Thx Oskar one more time!
100
+
101
  = 3.0.0-beta.33.1 - 2017-05-30 =
102
  * Updated: minimum required PHP version was increased from 5.3 to 5.3.3. Don't be stuck in the last decade. Ask your host to upgrade you to PHP 7;
103
  * Improved: we now bundle multilingual translations that are 75% or more complete (a decrease from the previous 100% threshold);
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitc42323ac1998fab3f9a5f985788e986a::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -55,7 +55,6 @@ class ClassLoader
55
  private $classMap = array();
56
  private $classMapAuthoritative = false;
57
  private $missingClasses = array();
58
- private $apcuPrefix;
59
 
60
  public function getPrefixes()
61
  {
@@ -272,26 +271,6 @@ class ClassLoader
272
  return $this->classMapAuthoritative;
273
  }
274
 
275
- /**
276
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
- *
278
- * @param string|null $apcuPrefix
279
- */
280
- public function setApcuPrefix($apcuPrefix)
281
- {
282
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
- }
284
-
285
- /**
286
- * The APCu prefix in use, or null if APCu caching is not enabled.
287
- *
288
- * @return string|null
289
- */
290
- public function getApcuPrefix()
291
- {
292
- return $this->apcuPrefix;
293
- }
294
-
295
  /**
296
  * Registers this instance as an autoloader.
297
  *
@@ -334,6 +313,11 @@ class ClassLoader
334
  */
335
  public function findFile($class)
336
  {
 
 
 
 
 
337
  // class map lookup
338
  if (isset($this->classMap[$class])) {
339
  return $this->classMap[$class];
@@ -341,12 +325,6 @@ class ClassLoader
341
  if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
342
  return false;
343
  }
344
- if (null !== $this->apcuPrefix) {
345
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
346
- if ($hit) {
347
- return $file;
348
- }
349
- }
350
 
351
  $file = $this->findFileWithExtension($class, '.php');
352
 
@@ -355,10 +333,6 @@ class ClassLoader
355
  $file = $this->findFileWithExtension($class, '.hh');
356
  }
357
 
358
- if (null !== $this->apcuPrefix) {
359
- apcu_add($this->apcuPrefix.$class, $file);
360
- }
361
-
362
  if (false === $file) {
363
  // Remember that this class does not exist.
364
  $this->missingClasses[$class] = true;
55
  private $classMap = array();
56
  private $classMapAuthoritative = false;
57
  private $missingClasses = array();
 
58
 
59
  public function getPrefixes()
60
  {
271
  return $this->classMapAuthoritative;
272
  }
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  /**
275
  * Registers this instance as an autoloader.
276
  *
313
  */
314
  public function findFile($class)
315
  {
316
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
317
+ if ('\\' == $class[0]) {
318
+ $class = substr($class, 1);
319
+ }
320
+
321
  // class map lookup
322
  if (isset($this->classMap[$class])) {
323
  return $this->classMap[$class];
325
  if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
326
  return false;
327
  }
 
 
 
 
 
 
328
 
329
  $file = $this->findFileWithExtension($class, '.php');
330
 
333
  $file = $this->findFileWithExtension($class, '.hh');
334
  }
335
 
 
 
 
 
336
  if (false === $file) {
337
  // Remember that this class does not exist.
338
  $this->missingClasses[$class] = true;
vendor/composer/autoload_classmap.php CHANGED
@@ -55,6 +55,7 @@ return array(
55
  'MailPoet\\Config\\Env' => $baseDir . '/lib/Config/Env.php',
56
  'MailPoet\\Config\\Hooks' => $baseDir . '/lib/Config/Hooks.php',
57
  'MailPoet\\Config\\Initializer' => $baseDir . '/lib/Config/Initializer.php',
 
58
  'MailPoet\\Config\\Localizer' => $baseDir . '/lib/Config/Localizer.php',
59
  'MailPoet\\Config\\Menu' => $baseDir . '/lib/Config/Menu.php',
60
  'MailPoet\\Config\\Migrator' => $baseDir . '/lib/Config/Migrator.php',
@@ -122,6 +123,7 @@ return array(
122
  'MailPoet\\Models\\CustomField' => $baseDir . '/lib/Models/CustomField.php',
123
  'MailPoet\\Models\\Form' => $baseDir . '/lib/Models/Form.php',
124
  'MailPoet\\Models\\Model' => $baseDir . '/lib/Models/Model.php',
 
125
  'MailPoet\\Models\\Newsletter' => $baseDir . '/lib/Models/Newsletter.php',
126
  'MailPoet\\Models\\NewsletterLink' => $baseDir . '/lib/Models/NewsletterLink.php',
127
  'MailPoet\\Models\\NewsletterOption' => $baseDir . '/lib/Models/NewsletterOption.php',
@@ -180,6 +182,7 @@ return array(
180
  'MailPoet\\Segments\\WP' => $baseDir . '/lib/Segments/WP.php',
181
  'MailPoet\\Services\\Bridge' => $baseDir . '/lib/Services/Bridge.php',
182
  'MailPoet\\Services\\Bridge\\API' => $baseDir . '/lib/Services/Bridge/API.php',
 
183
  'MailPoet\\Settings\\Charsets' => $baseDir . '/lib/Settings/Charsets.php',
184
  'MailPoet\\Settings\\Hosts' => $baseDir . '/lib/Settings/Hosts.php',
185
  'MailPoet\\Settings\\Pages' => $baseDir . '/lib/Settings/Pages.php',
55
  'MailPoet\\Config\\Env' => $baseDir . '/lib/Config/Env.php',
56
  'MailPoet\\Config\\Hooks' => $baseDir . '/lib/Config/Hooks.php',
57
  'MailPoet\\Config\\Initializer' => $baseDir . '/lib/Config/Initializer.php',
58
+ 'MailPoet\\Config\\Installer' => $baseDir . '/lib/Config/Installer.php',
59
  'MailPoet\\Config\\Localizer' => $baseDir . '/lib/Config/Localizer.php',
60
  'MailPoet\\Config\\Menu' => $baseDir . '/lib/Config/Menu.php',
61
  'MailPoet\\Config\\Migrator' => $baseDir . '/lib/Config/Migrator.php',
123
  'MailPoet\\Models\\CustomField' => $baseDir . '/lib/Models/CustomField.php',
124
  'MailPoet\\Models\\Form' => $baseDir . '/lib/Models/Form.php',
125
  'MailPoet\\Models\\Model' => $baseDir . '/lib/Models/Model.php',
126
+ 'MailPoet\\Models\\ModelValidator' => $baseDir . '/lib/Models/ModelValidator.php',
127
  'MailPoet\\Models\\Newsletter' => $baseDir . '/lib/Models/Newsletter.php',
128
  'MailPoet\\Models\\NewsletterLink' => $baseDir . '/lib/Models/NewsletterLink.php',
129
  'MailPoet\\Models\\NewsletterOption' => $baseDir . '/lib/Models/NewsletterOption.php',
182
  'MailPoet\\Segments\\WP' => $baseDir . '/lib/Segments/WP.php',
183
  'MailPoet\\Services\\Bridge' => $baseDir . '/lib/Services/Bridge.php',
184
  'MailPoet\\Services\\Bridge\\API' => $baseDir . '/lib/Services/Bridge/API.php',
185
+ 'MailPoet\\Services\\Release\\API' => $baseDir . '/lib/Services/Release/API.php',
186
  'MailPoet\\Settings\\Charsets' => $baseDir . '/lib/Settings/Charsets.php',
187
  'MailPoet\\Settings\\Hosts' => $baseDir . '/lib/Settings/Hosts.php',
188
  'MailPoet\\Settings\\Pages' => $baseDir . '/lib/Settings/Pages.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc', '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\ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInitcd4b58ded996167f3058bbf486d6cefc
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequirecd4b58ded996167f3058bbf486d6cefc($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequirecd4b58ded996167f3058bbf486d6cefc($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitc42323ac1998fab3f9a5f985788e986a
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitc42323ac1998fab3f9a5f985788e986a', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitc42323ac1998fab3f9a5f985788e986a', 'loadClassLoader'));
25
 
26
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::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\ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequirec42323ac1998fab3f9a5f985788e986a($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequirec42323ac1998fab3f9a5f985788e986a($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 ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@@ -131,6 +131,7 @@ class ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc
131
  'MailPoet\\Config\\Env' => __DIR__ . '/../..' . '/lib/Config/Env.php',
132
  'MailPoet\\Config\\Hooks' => __DIR__ . '/../..' . '/lib/Config/Hooks.php',
133
  'MailPoet\\Config\\Initializer' => __DIR__ . '/../..' . '/lib/Config/Initializer.php',
 
134
  'MailPoet\\Config\\Localizer' => __DIR__ . '/../..' . '/lib/Config/Localizer.php',
135
  'MailPoet\\Config\\Menu' => __DIR__ . '/../..' . '/lib/Config/Menu.php',
136
  'MailPoet\\Config\\Migrator' => __DIR__ . '/../..' . '/lib/Config/Migrator.php',
@@ -198,6 +199,7 @@ class ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc
198
  'MailPoet\\Models\\CustomField' => __DIR__ . '/../..' . '/lib/Models/CustomField.php',
199
  'MailPoet\\Models\\Form' => __DIR__ . '/../..' . '/lib/Models/Form.php',
200
  'MailPoet\\Models\\Model' => __DIR__ . '/../..' . '/lib/Models/Model.php',
 
201
  'MailPoet\\Models\\Newsletter' => __DIR__ . '/../..' . '/lib/Models/Newsletter.php',
202
  'MailPoet\\Models\\NewsletterLink' => __DIR__ . '/../..' . '/lib/Models/NewsletterLink.php',
203
  'MailPoet\\Models\\NewsletterOption' => __DIR__ . '/../..' . '/lib/Models/NewsletterOption.php',
@@ -256,6 +258,7 @@ class ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc
256
  'MailPoet\\Segments\\WP' => __DIR__ . '/../..' . '/lib/Segments/WP.php',
257
  'MailPoet\\Services\\Bridge' => __DIR__ . '/../..' . '/lib/Services/Bridge.php',
258
  'MailPoet\\Services\\Bridge\\API' => __DIR__ . '/../..' . '/lib/Services/Bridge/API.php',
 
259
  'MailPoet\\Settings\\Charsets' => __DIR__ . '/../..' . '/lib/Settings/Charsets.php',
260
  'MailPoet\\Settings\\Hosts' => __DIR__ . '/../..' . '/lib/Settings/Hosts.php',
261
  'MailPoet\\Settings\\Pages' => __DIR__ . '/../..' . '/lib/Settings/Pages.php',
@@ -617,10 +620,10 @@ class ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc
617
  public static function getInitializer(ClassLoader $loader)
618
  {
619
  return \Closure::bind(function () use ($loader) {
620
- $loader->prefixLengthsPsr4 = ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::$prefixLengthsPsr4;
621
- $loader->prefixDirsPsr4 = ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::$prefixDirsPsr4;
622
- $loader->prefixesPsr0 = ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::$prefixesPsr0;
623
- $loader->classMap = ComposerStaticInitcd4b58ded996167f3058bbf486d6cefc::$classMap;
624
 
625
  }, null, ClassLoader::class);
626
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitc42323ac1998fab3f9a5f985788e986a
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
131
  'MailPoet\\Config\\Env' => __DIR__ . '/../..' . '/lib/Config/Env.php',
132
  'MailPoet\\Config\\Hooks' => __DIR__ . '/../..' . '/lib/Config/Hooks.php',
133
  'MailPoet\\Config\\Initializer' => __DIR__ . '/../..' . '/lib/Config/Initializer.php',
134
+ 'MailPoet\\Config\\Installer' => __DIR__ . '/../..' . '/lib/Config/Installer.php',
135
  'MailPoet\\Config\\Localizer' => __DIR__ . '/../..' . '/lib/Config/Localizer.php',
136
  'MailPoet\\Config\\Menu' => __DIR__ . '/../..' . '/lib/Config/Menu.php',
137
  'MailPoet\\Config\\Migrator' => __DIR__ . '/../..' . '/lib/Config/Migrator.php',
199
  'MailPoet\\Models\\CustomField' => __DIR__ . '/../..' . '/lib/Models/CustomField.php',
200
  'MailPoet\\Models\\Form' => __DIR__ . '/../..' . '/lib/Models/Form.php',
201
  'MailPoet\\Models\\Model' => __DIR__ . '/../..' . '/lib/Models/Model.php',
202
+ 'MailPoet\\Models\\ModelValidator' => __DIR__ . '/../..' . '/lib/Models/ModelValidator.php',
203
  'MailPoet\\Models\\Newsletter' => __DIR__ . '/../..' . '/lib/Models/Newsletter.php',
204
  'MailPoet\\Models\\NewsletterLink' => __DIR__ . '/../..' . '/lib/Models/NewsletterLink.php',
205
  'MailPoet\\Models\\NewsletterOption' => __DIR__ . '/../..' . '/lib/Models/NewsletterOption.php',
258
  'MailPoet\\Segments\\WP' => __DIR__ . '/../..' . '/lib/Segments/WP.php',
259
  'MailPoet\\Services\\Bridge' => __DIR__ . '/../..' . '/lib/Services/Bridge.php',
260
  'MailPoet\\Services\\Bridge\\API' => __DIR__ . '/../..' . '/lib/Services/Bridge/API.php',
261
+ 'MailPoet\\Services\\Release\\API' => __DIR__ . '/../..' . '/lib/Services/Release/API.php',
262
  'MailPoet\\Settings\\Charsets' => __DIR__ . '/../..' . '/lib/Settings/Charsets.php',
263
  'MailPoet\\Settings\\Hosts' => __DIR__ . '/../..' . '/lib/Settings/Hosts.php',
264
  'MailPoet\\Settings\\Pages' => __DIR__ . '/../..' . '/lib/Settings/Pages.php',
620
  public static function getInitializer(ClassLoader $loader)
621
  {
622
  return \Closure::bind(function () use ($loader) {
623
+ $loader->prefixLengthsPsr4 = ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::$prefixLengthsPsr4;
624
+ $loader->prefixDirsPsr4 = ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::$prefixDirsPsr4;
625
+ $loader->prefixesPsr0 = ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::$prefixesPsr0;
626
+ $loader->classMap = ComposerStaticInitc42323ac1998fab3f9a5f985788e986a::$classMap;
627
 
628
  }, null, ClassLoader::class);
629
  }
vendor/composer/installed.json CHANGED
@@ -14,7 +14,7 @@
14
  "reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
15
  "shasum": ""
16
  },
17
- "time": "2015-11-28T21:47:43+00:00",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
@@ -55,7 +55,7 @@
55
  "require-dev": {
56
  "phpunit/phpunit": "^5.6"
57
  },
58
- "time": "2016-12-14T06:28:26+00:00",
59
  "type": "library",
60
  "installation-source": "dist",
61
  "autoload": {
@@ -116,7 +116,7 @@
116
  "j4mie/idiorm": "1.5.*",
117
  "php": ">=5.2.0"
118
  },
119
- "time": "2014-09-23T10:49:36+00:00",
120
  "type": "library",
121
  "installation-source": "dist",
122
  "autoload": {
@@ -180,7 +180,7 @@
180
  "require-dev": {
181
  "phpunit/phpunit": "~4.0|~5.0"
182
  },
183
- "time": "2017-01-23T04:29:33+00:00",
184
  "type": "library",
185
  "installation-source": "dist",
186
  "autoload": {
@@ -226,7 +226,7 @@
226
  "suggest": {
227
  "ext-mbstring": "For best performance"
228
  },
229
- "time": "2016-11-14T01:06:16+00:00",
230
  "type": "library",
231
  "extra": {
232
  "branch-alias": {
@@ -299,7 +299,7 @@
299
  "symfony/config": "",
300
  "symfony/yaml": ""
301
  },
302
- "time": "2017-03-04T12:20:59+00:00",
303
  "type": "library",
304
  "extra": {
305
  "branch-alias": {
@@ -355,7 +355,7 @@
355
  "friendsofphp/php-cs-fixer": "~2",
356
  "phpunit/phpunit": "~4.0 || ~5.0"
357
  },
358
- "time": "2017-01-16T07:55:07+00:00",
359
  "type": "library",
360
  "extra": {
361
  "branch-alias": {
@@ -408,7 +408,7 @@
408
  "require-dev": {
409
  "phpunit/phpunit": "*"
410
  },
411
- "time": "2016-07-19T19:14:21+00:00",
412
  "type": "library",
413
  "installation-source": "dist",
414
  "autoload": {
@@ -457,7 +457,7 @@
457
  "phpunit/phpunit": ">=4.0",
458
  "soundasleep/component-tests": "dev-master"
459
  },
460
- "time": "2016-06-09T04:56:16+00:00",
461
  "type": "library",
462
  "installation-source": "dist",
463
  "autoload": {
@@ -509,7 +509,7 @@
509
  "mockery/mockery": "~0.9.1",
510
  "symfony/phpunit-bridge": "~3.2"
511
  },
512
- "time": "2017-02-13T07:52:53+00:00",
513
  "type": "library",
514
  "extra": {
515
  "branch-alias": {
@@ -564,7 +564,7 @@
564
  "require-dev": {
565
  "htmlawed/htmlawed": "dev-master"
566
  },
567
- "time": "2016-01-14T20:55:00+00:00",
568
  "type": "library",
569
  "installation-source": "dist",
570
  "autoload": {
@@ -620,7 +620,7 @@
620
  "symfony/debug": "~2.7",
621
  "symfony/phpunit-bridge": "~3.2"
622
  },
623
- "time": "2017-02-27T00:07:03+00:00",
624
  "type": "library",
625
  "extra": {
626
  "branch-alias": {
14
  "reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
15
  "shasum": ""
16
  },
17
+ "time": "2015-11-28 21:47:43",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
55
  "require-dev": {
56
  "phpunit/phpunit": "^5.6"
57
  },
58
+ "time": "2016-12-14 06:28:26",
59
  "type": "library",
60
  "installation-source": "dist",
61
  "autoload": {
116
  "j4mie/idiorm": "1.5.*",
117
  "php": ">=5.2.0"
118
  },
119
+ "time": "2014-09-23 10:49:36",
120
  "type": "library",
121
  "installation-source": "dist",
122
  "autoload": {
180
  "require-dev": {
181
  "phpunit/phpunit": "~4.0|~5.0"
182
  },
183
+ "time": "2017-01-23 04:29:33",
184
  "type": "library",
185
  "installation-source": "dist",
186
  "autoload": {
226
  "suggest": {
227
  "ext-mbstring": "For best performance"
228
  },
229
+ "time": "2016-11-14 01:06:16",
230
  "type": "library",
231
  "extra": {
232
  "branch-alias": {
299
  "symfony/config": "",
300
  "symfony/yaml": ""
301
  },
302
+ "time": "2017-03-04 12:20:59",
303
  "type": "library",
304
  "extra": {
305
  "branch-alias": {
355
  "friendsofphp/php-cs-fixer": "~2",
356
  "phpunit/phpunit": "~4.0 || ~5.0"
357
  },
358
+ "time": "2017-01-16 07:55:07",
359
  "type": "library",
360
  "extra": {
361
  "branch-alias": {
408
  "require-dev": {
409
  "phpunit/phpunit": "*"
410
  },
411
+ "time": "2016-07-19 19:14:21",
412
  "type": "library",
413
  "installation-source": "dist",
414
  "autoload": {
457
  "phpunit/phpunit": ">=4.0",
458
  "soundasleep/component-tests": "dev-master"
459
  },
460
+ "time": "2016-06-09 04:56:16",
461
  "type": "library",
462
  "installation-source": "dist",
463
  "autoload": {
509
  "mockery/mockery": "~0.9.1",
510
  "symfony/phpunit-bridge": "~3.2"
511
  },
512
+ "time": "2017-02-13 07:52:53",
513
  "type": "library",
514
  "extra": {
515
  "branch-alias": {
564
  "require-dev": {
565
  "htmlawed/htmlawed": "dev-master"
566
  },
567
+ "time": "2016-01-14 20:55:00",
568
  "type": "library",
569
  "installation-source": "dist",
570
  "autoload": {
620
  "symfony/debug": "~2.7",
621
  "symfony/phpunit-bridge": "~3.2"
622
  },
623
+ "time": "2017-02-27 00:07:03",
624
  "type": "library",
625
  "extra": {
626
  "branch-alias": {
views/limit.html CHANGED
@@ -6,7 +6,7 @@
6
  <h1><%= __("You've reached the %d subscribers limit!") | format(limit) %></h1>
7
 
8
  <p class="about-text">
9
- <%= __("MailPoet 3 is currently limited to %d subscribers.") | format(limit) %>
10
  </p>
11
 
12
  <img
@@ -17,11 +17,16 @@
17
  />
18
 
19
  <h3><%= __('Immediately, you can:') %></h3>
20
- <ul>
21
  <li><%= __('Delete unconfirmed subscribers to have less than %d subscribers.') | format(limit) %></li>
 
22
  <li>
23
- <a href="http://www.mailpoet.com/support/"><%= __('Contact us')%></a>
24
- <%= __('to become a Premium beta tester.')%>
 
 
 
 
25
  </li>
26
  </ul>
27
  </div>
6
  <h1><%= __("You've reached the %d subscribers limit!") | format(limit) %></h1>
7
 
8
  <p class="about-text">
9
+ <%= __("Our free version is limited to 2000 subscribers.") | format(limit) %>
10
  </p>
11
 
12
  <img
17
  />
18
 
19
  <h3><%= __('Immediately, you can:') %></h3>
20
+ <ul class="ul-disc">
21
  <li><%= __('Delete unconfirmed subscribers to have less than %d subscribers.') | format(limit) %></li>
22
+ <li><%= __('Install the Premium plugin if you have purchased it.') %></li>
23
  <li>
24
+ <a
25
+ href="<%= admin_url('admin.php?page=mailpoet-premium') %>"
26
+ class="button-primary"
27
+ >
28
+ <%= __('Check out the Premium')%>
29
+ </a>
30
  </li>
31
  </ul>
32
  </div>
views/newsletters.html CHANGED
@@ -96,7 +96,7 @@
96
  'goodBadgeTooltip': __('Good stuff.'),
97
  'badBadgeName': __('Bad'),
98
  'badBadgeTooltip': __('Something to improve.'),
99
- 'openedStatTooltip': __('Above 30% is excellent.\\nBetween 15 and 30% is good.\\nUnder 15% is bad.'),
100
  'clickedStatTooltip': __('Above 3% is excellent.\\nBetween 1 and 3% is good.\\nUnder 1% is bad.'),
101
  'unsubscribedStatTooltip': __('Under 1% is excellent.\\nBetween 1 and 3% is good.\\nOver 3% is bad.'),
102
  'checkBackInHours': __('Nice job! Check back in %$1d hour(s) for more stats.'),
@@ -121,9 +121,10 @@
121
  'create': __('Create'),
122
  'welcomeNewsletterTypeTitle': __('Welcome Email'),
123
  'welcomeNewsletterTypeDescription': __('Automatically send an email (or series of emails) to new subscribers or WordPress users. Send a day, a week, or a month after they sign up.'),
 
124
  'setUp': __('Set up'),
125
  'postNotificationNewsletterTypeTitle': __('Latest Post Notifications'),
126
- 'postNotificationsNewsletterTypeDescription': __('Let MailPoet email your subscribers with your latest content. You can send daily, weekly, monthly, or even immediately after publication.'),
127
  'selectFrequency': __('Select a frequency'),
128
  'postNotificationSubjectLineTip': __("Insert [newsletter:total] to show number of posts, [newsletter:post_title] to show the latest post's title & [newsletter:number] to display the issue number."),
129
  'activate': __('Activate'),
96
  'goodBadgeTooltip': __('Good stuff.'),
97
  'badBadgeName': __('Bad'),
98
  'badBadgeTooltip': __('Something to improve.'),
99
+ 'openedStatTooltip': __('Above 30% is excellent.\\nBetween 10 and 30% is good.\\nUnder 10% is bad.'),
100
  'clickedStatTooltip': __('Above 3% is excellent.\\nBetween 1 and 3% is good.\\nUnder 1% is bad.'),
101
  'unsubscribedStatTooltip': __('Under 1% is excellent.\\nBetween 1 and 3% is good.\\nOver 3% is bad.'),
102
  'checkBackInHours': __('Nice job! Check back in %$1d hour(s) for more stats.'),
121
  'create': __('Create'),
122
  'welcomeNewsletterTypeTitle': __('Welcome Email'),
123
  'welcomeNewsletterTypeDescription': __('Automatically send an email (or series of emails) to new subscribers or WordPress users. Send a day, a week, or a month after they sign up.'),
124
+ 'getPremiumVersion': __('Get premium version!'),
125
  'setUp': __('Set up'),
126
  'postNotificationNewsletterTypeTitle': __('Latest Post Notifications'),
127
+ 'postNotificationNewsletterTypeDescription': __('Let MailPoet email your subscribers with your latest content. You can send daily, weekly, monthly, or even immediately after publication.'),
128
  'selectFrequency': __('Select a frequency'),
129
  'postNotificationSubjectLineTip': __("Insert [newsletter:total] to show number of posts, [newsletter:post_title] to show the latest post's title & [newsletter:number] to display the issue number."),
130
  'activate': __('Activate'),
views/premium.html ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <% extends 'layout.html' %>
2
+
3
+ <% block content %>
4
+
5
+ <style type="text/css">
6
+ .mailpoet_video {
7
+ border: 1px solid rgba(0, 0, 0, 0.1);
8
+ }
9
+ </style>
10
+
11
+ <div class="wrap about-wrap">
12
+ <h1 style="text-align: center; margin-right: 0;"><%= __('What is MailPoet Premium?') %></h1>
13
+
14
+ <p class="about-text" style="text-align: center; margin-right: 0;"><%= __("Detailed statistics, actionable insights, awesome deliverability, plus great support!") %></p>
15
+
16
+ <hr>
17
+
18
+ <div class="feature-section one-col">
19
+ <h2><%= __("Insightful Statistics") %></h2>
20
+ <p class="lead-description"><%= __("Which links get the most clicks? Which subscribers opened your emails? With MailPoet's stats program, it's easy to find out. Need even more details? Integrating with Google Analytics is as easy as 1-2-3.") %></p>
21
+ <% set video_url = '//ps.w.org/mailpoet/assets/premium/premium-page-animated-stats.mp4' %>
22
+ <video autoplay loop width="100%" class="mailpoet_video">
23
+ <source type="video/mp4" src="<%= video_url %>" />
24
+ <a href="<%= video_url %>"><%= video_url %></a>
25
+ </video>
26
+ </div>
27
+
28
+ <hr>
29
+
30
+ <div class="feature-section one-col">
31
+ <h2><%= __("Hello Inbox, Goodbye Spambox!") %></h2>
32
+ <p class="lead-description"><%= __("The MailPoet Sending Service's delivery rate is over 98%: one of the best in the industry! Our in-house sending service is constantly monitored, tweaked, and improved to make sure that your emails arrive successfully.") %></p>
33
+ <table class="widefat">
34
+ <thead>
35
+ <tr>
36
+ <td></td>
37
+ <td><strong><%= __("MailPoet") %></strong></td>
38
+ <td><strong><%= __("Web host") %></strong></td>
39
+ <td><strong><%= __("Third party") %></strong></td>
40
+ </tr>
41
+ </thead>
42
+ <tbody>
43
+ <tr class="alternate">
44
+ <td><strong><%= __("Speed") %></strong></td>
45
+ <td><%= __("50,000 / hour") %></td>
46
+ <td><%= __("300 / hour") %></td>
47
+ <td><%= __("2,000 / hour") %></td>
48
+ </tr>
49
+ <tr>
50
+ <td><strong><%= __("Daily email limits") %></strong></td>
51
+ <td><%= __("None") %></td>
52
+ <td><%= __("Yes") %></td>
53
+ <td><%= __("Depends") %></td>
54
+ </tr>
55
+ <tr class="alternate">
56
+ <td><strong><%= __("Personal deliverability support") %></strong></td>
57
+ <td><%= __("Yes!") %></td>
58
+ <td><%= __("No") %></td>
59
+ <td><%= __("No") %></td>
60
+ </tr>
61
+ <tr>
62
+ <td><strong><%= __("SPF and DKIM Signatures") %></strong></td>
63
+ <td><%= __("No need!") %></td>
64
+ <td><%= __("Update your DNS") %></td>
65
+ <td><%= __("Depends") %></td>
66
+ </tr>
67
+ <tr class="alternate">
68
+ <td><strong><%= __("Double opt-in") %></strong></td>
69
+ <td><%= __("Enforced") %></td>
70
+ <td><%= __("Not enforced") %></td>
71
+ <td><%= __("Depends") %></td>
72
+ </tr>
73
+ <tr>
74
+ <td>
75
+ <a
76
+ href="http://beta.docs.mailpoet.com/article/181-comparison-table-of-sending-methods?utm_source=plugin&utm_medium=premium&utm_campaign=compare"
77
+ target="_blank"
78
+ >
79
+ <%= __("View full comparison table") %>
80
+ </a>
81
+ </td>
82
+ <td></td>
83
+ <td></td>
84
+ <td></td>
85
+ </tr>
86
+ </tbody>
87
+ </table>
88
+ <p><%= __("Spammers are ineligible to use the MailPoet Sending Service. We reserve the right to cancel any sending plan if we detect more than 5% hard bounces. [link]Customers are required to clean their lists before joining MailPoet[/link].")
89
+ |replace({
90
+ '[link]': '<a target="_blank" href="http://beta.docs.mailpoet.com/article/127-checklist-before-importing-subscribers?utm_source=plugin&utm_medium=premium&utm_campaign=clean-lists">',
91
+ '[/link]': '</a>'
92
+ })
93
+ |raw
94
+ %></p>
95
+ </div>
96
+
97
+ <hr>
98
+
99
+ <div class="feature-section two-col">
100
+ <div class="col">
101
+ <h3><%= __("Welcome to My Newsletter!") %></h3>
102
+ <% set video_url = '//ps.w.org/mailpoet/assets/premium/premium-page-animated-welcome-emails.mp4' %>
103
+ <video autoplay loop width="100%" class="mailpoet_video">
104
+ <source type="video/mp4" src="<%= video_url %>" />
105
+ <a href="<%= video_url %>"><%= video_url %></a>
106
+ </video>
107
+ <p><%= __("Want to send autoresponders and welcome emails to your subscribers? In MailPoet, it’s easy as 1-2-3. Create welcome emails, educational courses, and other automatic email newsletters.") %></p>
108
+ </div>
109
+ <div class="col">
110
+ <h3><%= __("We’re Here to Help!") %></h3>
111
+ <% set video_url = '//ps.w.org/mailpoet/assets/premium/premium-page-animated-support.mp4' %>
112
+ <video autoplay loop width="100%" class="mailpoet_video">
113
+ <source type="video/mp4" src="<%= video_url %>" />
114
+ <a href="<%= video_url %>"><%= video_url %></a>
115
+ </video>
116
+ <p><%= __("We pride ourselves on giving nearly round-the-clock support. Our remote team spans several continents, hemispheres, and time-zones! If you’ve got a problem, we will help you fix it!") %></p>
117
+ </div>
118
+ </div>
119
+
120
+ <hr>
121
+
122
+ <div clas="feature-section one-col">
123
+ <h2><%= __("Get Started for Just $10") %></h2>
124
+ <p class="lead-description"><%= __("Our plans start at just $10 per month. Each plan offers unlimited emails. Pricing scales up with the size of your list.") %></p>
125
+ <br>
126
+ <p style="text-align: center">
127
+ <a
128
+ target="_blank"
129
+ href="https://account.mailpoet.com?s=<%= subscriber_count %>&utm_source=plugin&utm_medium=premium&utm_campaign=purchase"
130
+ class="button button-primary"
131
+ style="font-size: 1.5em; padding: 10px 18px; height: 46px;"
132
+ ><%= __("Purchase Now") %></a>
133
+ </p>
134
+ <br>
135
+ <div style="width: 65%; margin: 0 auto;">
136
+ <p style="text-align: center"><%= __("Don't need to use our sending service? Not a problem; we understand. You can also [link]buy the Premium[/link] features separately. Prices start at $100 per year for 1 website, $249 for 4 sites and $499 for an unlimited number of sites.")
137
+ |replace({
138
+ '[link]': '<a target="_blank" href="https://account.mailpoet.com/premium?utm_source=plugin&utm_medium=premium&utm_campaign=buy-premium">',
139
+ '[/link]': '</a>'
140
+ })
141
+ |raw
142
+ %></p>
143
+ </div>
144
+ </div>
145
+
146
+ </div>
147
+
148
+ <% endblock %>
views/settings.html CHANGED
@@ -15,14 +15,19 @@
15
  >
16
  <!-- tabs -->
17
  <h2 class="nav-tab-wrapper" id="mailpoet_settings_tabs">
 
18
  <a class="nav-tab" href="#basics"><%= __('Basics') %></a>
19
  <a class="nav-tab" href="#signup"><%= __('Sign-up Confirmation') %></a>
20
- <a class="nav-tab" href="#mta"><%= __('Send With...') %></a>
21
  <a class="nav-tab" href="#advanced"><%= __('Advanced') %></a>
22
- <# <a class="nav-tab" href="#premium"><%= __('Premium') %></a> #>
23
  </h2>
24
 
25
- <!-- basics -->
 
 
 
 
 
26
  <div data-tab="basics" class="mailpoet_panel">
27
  <% include 'settings/basics.html' %>
28
  </div>
@@ -32,20 +37,15 @@
32
  <% include 'settings/signup.html' %>
33
  </div>
34
 
35
- <!-- sending method -->
36
- <div data-tab="mta" class="mailpoet_panel">
37
- <% include 'settings/mta.html' %>
38
- </div>
39
-
40
- <!-- advanced -->
41
  <div data-tab="advanced" class="mailpoet_panel">
42
  <% include 'settings/advanced.html' %>
43
  </div>
44
 
45
- <# <!-- premium -->
46
  <div data-tab="premium" class="mailpoet_panel">
47
  <% include 'settings/premium.html' %>
48
- </div> #>
49
 
50
  <p class="submit mailpoet_settings_submit" style="display:none;">
51
  <input
@@ -68,9 +68,12 @@
68
  if ($('.mailpoet_mta_setup_save').is(':visible')) {
69
  $('.mailpoet_mta_setup_save').trigger('click');
70
  }
71
- <# if ($('#mailpoet_premium_key').val().length > 0) {
 
 
 
72
  $('#mailpoet_premium_key_verify').trigger('click');
73
- } #>
74
  saveSettings();
75
  return false;
76
  });
15
  >
16
  <!-- tabs -->
17
  <h2 class="nav-tab-wrapper" id="mailpoet_settings_tabs">
18
+ <a class="nav-tab" href="#mta"><%= __('Send With...') %></a>
19
  <a class="nav-tab" href="#basics"><%= __('Basics') %></a>
20
  <a class="nav-tab" href="#signup"><%= __('Sign-up Confirmation') %></a>
 
21
  <a class="nav-tab" href="#advanced"><%= __('Advanced') %></a>
22
+ <a class="nav-tab" href="#premium"><%= __('Premium') %></a>
23
  </h2>
24
 
25
+ <!-- sending method -->
26
+ <div data-tab="mta" class="mailpoet_panel">
27
+ <% include 'settings/mta.html' %>
28
+ </div>
29
+
30
+ <!-- basics -->
31
  <div data-tab="basics" class="mailpoet_panel">
32
  <% include 'settings/basics.html' %>
33
  </div>
37
  <% include 'settings/signup.html' %>
38
  </div>
39
 
40
+ <!-- advanced -->
 
 
 
 
 
41
  <div data-tab="advanced" class="mailpoet_panel">
42
  <% include 'settings/advanced.html' %>
43
  </div>
44
 
45
+ <!-- premium -->
46
  <div data-tab="premium" class="mailpoet_panel">
47
  <% include 'settings/premium.html' %>
48
+ </div>
49
 
50
  <p class="submit mailpoet_settings_submit" style="display:none;">
51
  <input
68
  if ($('.mailpoet_mta_setup_save').is(':visible')) {
69
  $('.mailpoet_mta_setup_save').trigger('click');
70
  }
71
+ var mailpoet_premium_key = $('#mailpoet_premium_key').val();
72
+ // sync mss key with premium key
73
+ $('#mailpoet_api_key').val(mailpoet_premium_key);
74
+ if (mailpoet_premium_key.length > 0) {
75
  $('#mailpoet_premium_key_verify').trigger('click');
76
+ }
77
  saveSettings();
78
  return false;
79
  });
views/settings/mta.html CHANGED
@@ -39,6 +39,14 @@
39
  value="<%= settings.mta.frequency.interval %>"
40
  />
41
 
 
 
 
 
 
 
 
 
42
  <!-- smtp: available sending methods -->
43
  <ul class="mailpoet_sending_methods clearfix">
44
  <li
@@ -69,14 +77,13 @@
69
  >
70
  <strong><%= __("Solve all of your sending problems!") %></strong>
71
  <br />
72
- <%= __("We offer affordable email packages with speeds up to 50 times faster than the competition.") %>
73
  <br/>
74
  <br/>
75
  <a
76
- href="https://account.mailpoet.com?s=<%= total_subscribers %>&utm_source=plugin&utm_campaign=purchase&utm_medium=settings"
77
  class="button button-primary"
78
- target="_blank"
79
- ><%= __('View Email Plans') %></a>
80
  </p>
81
 
82
  <div class="mailpoet_status">
@@ -84,9 +91,10 @@
84
  </div>
85
 
86
  <div class="mailpoet_actions">
87
- <a
88
- class="button-secondary"
89
- href="#mta/mailpoet"><%= __('Configure') %></a>
 
90
  </div>
91
  </li>
92
  <li
@@ -135,40 +143,17 @@
135
  </li>
136
  </ul>
137
 
138
- <div id="mailpoet_sending_method_setup">
139
- <!-- Sending Method: MailPoet -->
140
- <div
141
- class="mailpoet_sending_method"
142
- data-group="mailpoet"
143
- style="display:none;"
144
- >
145
- <h3><%= __('Already have a key?') %></h3>
146
- <table class="form-table">
147
- <tbody>
148
- <tr>
149
- <th scope="row">
150
- <label for="mailpoet_api_key">
151
- <%= __('Your key') %>
152
- </label>
153
- </th>
154
- <td>
155
- <input
156
- type="text"
157
- class="regular-text"
158
- id="mailpoet_api_key"
159
- name="mta[mailpoet_api_key]"
160
- value="<%=- settings.mta.mailpoet_api_key -%>"
161
- />
162
- <a
163
- id="mailpoet_api_key_verify"
164
- class="button-secondary"
165
- ><%= __('Verify') %></a>
166
- </td>
167
- </tr>
168
- </tbody>
169
- </table>
170
- </div>
171
 
 
172
  <!-- Sending Method: Website -->
173
  <div
174
  class="mailpoet_sending_method"
@@ -737,46 +722,6 @@
737
  });
738
  });
739
 
740
- // verifying api key
741
- $('#mailpoet_api_key_verify').on('click', function() {
742
- // get api key
743
- var key = $('#mailpoet_api_key').val();
744
-
745
- if(key.length === 0) {
746
- // validation
747
- return MailPoet.Notice.error(
748
- '<%= __('Please specify an API key before validating it.') | escape('js') %>',
749
- { scroll: true, static: true }
750
- );
751
- }
752
-
753
- MailPoet.Modal.loading(true);
754
- MailPoet.Ajax.post({
755
- api_version: window.mailpoet_api_version,
756
- endpoint: 'services',
757
- action: 'checkMSSKey',
758
- data: {
759
- key: key
760
- }
761
- }).always(function() {
762
- MailPoet.Modal.loading(false);
763
- }).done(function(response) {
764
- // Hide server error notices
765
- $('.mailpoet_notice_server').hide();
766
- MailPoet.Notice.success(
767
- response.data.message,
768
- { scroll: true }
769
- );
770
- }).fail(function(response) {
771
- if (response.errors.length > 0) {
772
- MailPoet.Notice.error(
773
- response.errors.map(function(error) { return error.message; }),
774
- { scroll: true }
775
- );
776
- }
777
- });
778
- });
779
-
780
  // sending frequency update based on selected provider
781
  $('#mailpoet_smtp_provider').on('change keyup', setProviderForm);
782
  $('#mailpoet_web_host').on('change keyup', renderHostSendingFrequency);
@@ -797,10 +742,18 @@
797
  });
798
 
799
  // save configuration of a sending method
 
 
 
 
800
  $('.mailpoet_mta_setup_save').on('click', function() {
801
  // get selected method
802
- var group = $('.mailpoet_sending_method:visible').data('group'),
803
- emails = $('#'+group+'_frequency_emails').val(),
 
 
 
 
804
  interval = $('#'+group+'_frequency_interval').val();
805
 
806
  // set sending method
@@ -809,16 +762,6 @@
809
  "<%= __('You have selected an invalid sending method.') | escape('js') %>"
810
  );
811
  } else {
812
- if(
813
- group === 'mailpoet'
814
- && $('#mailpoet_api_key').val().trim().length === 0
815
- ) {
816
- MailPoet.Notice.error(
817
- "<%= __('You need to specify a MailPoet account key.') | escape('js') %>"
818
- );
819
- return false;
820
- }
821
-
822
  // set new sending method active
823
  setSendingMethodGroup(group);
824
 
@@ -835,7 +778,7 @@
835
  // save settings
836
  $('.mailpoet_settings_submit > input').trigger('click');
837
  }
838
- });
839
 
840
  function setSignupConfirmation(group) {
841
  if (group === 'mailpoet') {
@@ -882,13 +825,10 @@
882
  $('#mailpoet_sending_method_inactive_text')
883
  .toggleClass('mailpoet_hidden', group === 'mailpoet');
884
 
885
- if(group === 'mailpoet') {
886
- // Verify key on saving
887
- $('#mailpoet_api_key_verify').trigger('click');
888
- } else {
889
- // Hide server error notices
890
- $('.mailpoet_notice_server').hide();
891
- }
892
  }
893
 
894
  function getMethodFromGroup(group) {
@@ -1078,6 +1018,15 @@
1078
  }
1079
  });
1080
  });
 
 
 
 
 
 
 
 
 
1081
  </script>
1082
 
1083
  <%= partial(
39
  value="<%= settings.mta.frequency.interval %>"
40
  />
41
 
42
+ <!-- mta: mailpoet sending service key -->
43
+ <input
44
+ type="hidden"
45
+ id="mailpoet_api_key"
46
+ name="mta[mailpoet_api_key]"
47
+ value="<%=- settings.mta.mailpoet_api_key -%>"
48
+ />
49
+
50
  <!-- smtp: available sending methods -->
51
  <ul class="mailpoet_sending_methods clearfix">
52
  <li
77
  >
78
  <strong><%= __("Solve all of your sending problems!") %></strong>
79
  <br />
80
+ <%= __("Let MailPoet send your emails and get the Premium features for as little as 10 dollars or euros per month.") %>
81
  <br/>
82
  <br/>
83
  <a
84
+ href="<%= admin_url('admin.php?page=mailpoet-premium') %>"
85
  class="button button-primary"
86
+ ><%= __('Find out more') %></a>
 
87
  </p>
88
 
89
  <div class="mailpoet_status">
91
  </div>
92
 
93
  <div class="mailpoet_actions">
94
+ <button
95
+ class="mailpoet_sending_service_activate button-secondary"
96
+ <% if(settings.mta_group == 'mailpoet' or not(mss_key_valid)) %> disabled="disabled"<% endif %>
97
+ ><%= __('Activate') %></button>
98
  </div>
99
  </li>
100
  <li
143
  </li>
144
  </ul>
145
 
146
+ <p class="mailpoet_sending_methods_help">
147
+ <%= __("Need help to pick? [link]Check out the comparison table of sending methods[/link].")
148
+ |replace({
149
+ '[link]': '<a target="_blank" href="http://beta.docs.mailpoet.com/article/181-comparison-table-of-sending-methods">',
150
+ '[/link]': '</a>'
151
+ })
152
+ |raw
153
+ %>
154
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
 
156
+ <div id="mailpoet_sending_method_setup">
157
  <!-- Sending Method: Website -->
158
  <div
159
  class="mailpoet_sending_method"
722
  });
723
  });
724
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725
  // sending frequency update based on selected provider
726
  $('#mailpoet_smtp_provider').on('change keyup', setProviderForm);
727
  $('#mailpoet_web_host').on('change keyup', renderHostSendingFrequency);
742
  });
743
 
744
  // save configuration of a sending method
745
+ $('.mailpoet_sending_service_activate').on('click', function(e) {
746
+ e.preventDefault();
747
+ saveSendingMethodConfiguration('mailpoet');
748
+ });
749
  $('.mailpoet_mta_setup_save').on('click', function() {
750
  // get selected method
751
+ var group = $('.mailpoet_sending_method:visible').data('group');
752
+ saveSendingMethodConfiguration(group);
753
+ });
754
+
755
+ function saveSendingMethodConfiguration(group) {
756
+ var emails = $('#'+group+'_frequency_emails').val(),
757
  interval = $('#'+group+'_frequency_interval').val();
758
 
759
  // set sending method
762
  "<%= __('You have selected an invalid sending method.') | escape('js') %>"
763
  );
764
  } else {
 
 
 
 
 
 
 
 
 
 
765
  // set new sending method active
766
  setSendingMethodGroup(group);
767
 
778
  // save settings
779
  $('.mailpoet_settings_submit > input').trigger('click');
780
  }
781
+ }
782
 
783
  function setSignupConfirmation(group) {
784
  if (group === 'mailpoet') {
825
  $('#mailpoet_sending_method_inactive_text')
826
  .toggleClass('mailpoet_hidden', group === 'mailpoet');
827
 
828
+ // Hide server error notices
829
+ $('.mailpoet_notice_server').hide();
830
+
831
+ updateMailPoetMethodButton();
 
 
 
832
  }
833
 
834
  function getMethodFromGroup(group) {
1018
  }
1019
  });
1020
  });
1021
+
1022
+ // enable/disable MSS method activate button
1023
+ function updateMailPoetMethodButton() {
1024
+ var $ = jQuery;
1025
+ var group = $('.mailpoet_sending_methods .mailpoet_active').data('group');
1026
+ var key_invalid = $('.mailpoet_mss_key_valid').hasClass('mailpoet_hidden');
1027
+ $('.mailpoet_sending_service_activate').prop('disabled', group === 'mailpoet' || key_invalid);
1028
+ }
1029
+
1030
  </script>
1031
 
1032
  <%= partial(
views/settings/premium.html CHANGED
@@ -17,7 +17,7 @@
17
  class="regular-text"
18
  id="mailpoet_premium_key"
19
  name="premium[premium_key]"
20
- value="<%=- settings.premium.premium_key -%>"
21
  />
22
  <a
23
  id="mailpoet_premium_key_verify"
@@ -25,29 +25,37 @@
25
  ><%= __('Verify') %></a>
26
  </div>
27
  <div
28
- class="mailpoet_premium_key_valid mailpoet_success"
29
- <% if not(settings.premium.premium_key) or not(premium_key_valid) %>
30
- style="display: none;"
31
- <% endif %>
32
  >
33
- <%= __('Your license key has been successfully validated.') %>
34
  </div>
35
  <div
36
- class="mailpoet_premium_key_invalid mailpoet_error"
37
- <% if not(settings.premium.premium_key) or premium_key_valid %>
38
- style="display: none;"
39
- <% endif %>
40
  >
41
- <%= __('Your license key is invalid.') %>
 
 
 
 
 
 
 
 
 
 
42
  </div>
43
  <br/>
44
  <div
45
  class="mailpoet_premium_download"
46
- <% if premium_plugin_active or not(premium_key_valid) %>
47
  style="display: none;"
48
  <% endif %>
49
  >
50
- <a class="button-primary" href="#"><%= __('Download Premium now.') %></a>
 
 
 
 
51
  <span>
52
  <%= __("[link]Read guide[/link] on how to install Premium.")
53
  |replace({
@@ -58,6 +66,18 @@
58
  %>
59
  </span>
60
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
61
  </td>
62
  </tr>
63
  </tbody>
@@ -66,9 +86,9 @@
66
  <script type="text/javascript">
67
  jQuery(function($) {
68
  $(function() {
69
- // verifying premium key
70
- $('#mailpoet_premium_key_verify').on('click', function() {
71
- // get premium key
72
  var key = $('#mailpoet_premium_key').val();
73
 
74
  if(key.length === 0) {
@@ -79,36 +99,81 @@
79
  );
80
  }
81
 
82
- $('.mailpoet_premium_key_valid, .mailpoet_premium_key_invalid').hide();
83
- $('.mailpoet_premium_download').hide();
84
-
85
  MailPoet.Modal.loading(true);
86
- MailPoet.Ajax.post({
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  api_version: window.mailpoet_api_version,
88
  endpoint: 'services',
89
  action: 'checkPremiumKey',
90
  data: {
91
  key: key
92
  }
93
- }).always(function() {
94
- MailPoet.Modal.loading(false);
95
  }).done(function(response) {
96
  // Hide server error notices
97
  $('.mailpoet_notice_server').hide();
98
  $('.mailpoet_premium_key_valid').text(response.data.message);
99
- $('.mailpoet_premium_key_valid').show();
100
- if (!response.meta.premium_plugin_active) {
 
 
101
  $('.mailpoet_premium_download').show();
 
 
 
 
102
  }
103
  }).fail(function(response) {
104
  if (response.errors.length > 0) {
105
  $('.mailpoet_premium_key_invalid').text(
106
  response.errors.map(function(error) { return error.message; }).join(' ')
107
  );
108
- $('.mailpoet_premium_key_invalid').show();
109
  }
110
  });
111
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  });
113
  });
114
  </script>
17
  class="regular-text"
18
  id="mailpoet_premium_key"
19
  name="premium[premium_key]"
20
+ value="<%=- settings.premium.premium_key | default(settings.mta.mailpoet_api_key) -%>"
21
  />
22
  <a
23
  id="mailpoet_premium_key_verify"
25
  ><%= __('Verify') %></a>
26
  </div>
27
  <div
28
+ class="mailpoet_premium_key_valid mailpoet_key_valid 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_key_invalid 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_key_valid 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_key_invalid 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>
47
  <br/>
48
  <div
49
  class="mailpoet_premium_download"
50
+ <% if premium_plugin_installed or not(premium_key_valid) %>
51
  style="display: none;"
52
  <% endif %>
53
  >
54
+ <a
55
+ class="mailpoet_premium_install_link button-primary"
56
+ href="<%= premium_install_url | default('#') %>"
57
+ ><%= __('Install Premium now.') %>
58
+ </a>
59
  <span>
60
  <%= __("[link]Read guide[/link] on how to install Premium.")
61
  |replace({
66
  %>
67
  </span>
68
  </div>
69
+ <div
70
+ class="mailpoet_premium_activate"
71
+ <% if not(premium_plugin_installed) or premium_plugin_active or not(premium_key_valid) %>
72
+ style="display: none;"
73
+ <% endif %>
74
+ >
75
+ <span><%= __('You need to activate the MailPoet Premium plugin.') %></span>
76
+ <a
77
+ class="mailpoet_premium_activate_link button-primary"
78
+ href="<%= premium_activate_url | default('#') %>"
79
+ ><%= __('Activate Premium.') %></a>
80
+ </div>
81
  </td>
82
  </tr>
83
  </tbody>
86
  <script type="text/javascript">
87
  jQuery(function($) {
88
  $(function() {
89
+ // verifying license key
90
+ $('#mailpoet_premium_key_verify').on('click', function () {
91
+ // get license key
92
  var key = $('#mailpoet_premium_key').val();
93
 
94
  if(key.length === 0) {
99
  );
100
  }
101
 
 
 
 
102
  MailPoet.Modal.loading(true);
103
+
104
+ var promise1 = verifyMailPoetPremiumKey(key);
105
+ var promise2 = verifyMailPoetSendingServiceKey(key);
106
+
107
+ // wait until both requests are completed before hiding the loading modal
108
+ promise1.always(function() {
109
+ promise2.always(function() {
110
+ MailPoet.Modal.loading(false);
111
+ });
112
+ });
113
+ });
114
+
115
+ function verifyMailPoetPremiumKey(key) {
116
+ $('.mailpoet_premium_key_valid, .mailpoet_premium_key_invalid').addClass('mailpoet_hidden');
117
+ $('.mailpoet_premium_download, .mailpoet_premium_activate').hide();
118
+
119
+ return MailPoet.Ajax.post({
120
  api_version: window.mailpoet_api_version,
121
  endpoint: 'services',
122
  action: 'checkPremiumKey',
123
  data: {
124
  key: key
125
  }
 
 
126
  }).done(function(response) {
127
  // Hide server error notices
128
  $('.mailpoet_notice_server').hide();
129
  $('.mailpoet_premium_key_valid').text(response.data.message);
130
+ $('.mailpoet_premium_key_valid').removeClass('mailpoet_hidden');
131
+ if (!response.meta.premium_plugin_installed) {
132
+ $('.mailpoet_premium_install_link')
133
+ .attr('href', response.meta.premium_install_url || '#');
134
  $('.mailpoet_premium_download').show();
135
+ } else if (!response.meta.premium_plugin_active) {
136
+ $('.mailpoet_premium_activate_link')
137
+ .attr('href', response.meta.premium_activate_url || '#');
138
+ $('.mailpoet_premium_activate').show();
139
  }
140
  }).fail(function(response) {
141
  if (response.errors.length > 0) {
142
  $('.mailpoet_premium_key_invalid').text(
143
  response.errors.map(function(error) { return error.message; }).join(' ')
144
  );
145
+ $('.mailpoet_premium_key_invalid').removeClass('mailpoet_hidden');
146
  }
147
  });
148
+ }
149
+
150
+ function verifyMailPoetSendingServiceKey(key) {
151
+ $('.mailpoet_mss_key_valid, .mailpoet_mss_key_invalid').addClass('mailpoet_hidden');
152
+
153
+ return MailPoet.Ajax.post({
154
+ api_version: window.mailpoet_api_version,
155
+ endpoint: 'services',
156
+ action: 'checkMSSKey',
157
+ data: {
158
+ key: key
159
+ }
160
+ }).done(function(response) {
161
+ // Hide server error notices
162
+ $('.mailpoet_notice_server').hide();
163
+ $('.mailpoet_mss_key_valid').text(response.data.message);
164
+ $('.mailpoet_mss_key_valid').removeClass('mailpoet_hidden');
165
+ updateMailPoetMethodButton();
166
+ }).fail(function(response) {
167
+ if (response.errors.length > 0) {
168
+ $('.mailpoet_mss_key_invalid').text(
169
+ response.errors.map(function(error) { return error.message; }).join(' ')
170
+ );
171
+ $('.mailpoet_mss_key_invalid').removeClass('mailpoet_hidden');
172
+ updateMailPoetMethodButton();
173
+ }
174
+ });
175
+ }
176
+
177
  });
178
  });
179
  </script>
views/subscribers/subscribers.html CHANGED
@@ -9,6 +9,7 @@
9
  var mailpoet_custom_fields = <%= json_encode(custom_fields) %>;
10
  var mailpoet_month_names = <%= json_encode(month_names) %>;
11
  var mailpoet_date_formats = <%= json_encode(date_formats) %>;
 
12
  </script>
13
  <% endblock %>
14
 
@@ -18,6 +19,8 @@
18
  'searchLabel': __('Search'),
19
  'loadingItems': __('Loading subscribers...'),
20
  'noItemsFound': __('No subscribers were found.'),
 
 
21
  'selectAllLabel': __('All subscribers on this page are selected.'),
22
  'selectedAllLabel': __('All %d subscribers are selected.'),
23
  'selectAllLink': __('Select all subscribers on all pages.'),
9
  var mailpoet_custom_fields = <%= json_encode(custom_fields) %>;
10
  var mailpoet_month_names = <%= json_encode(month_names) %>;
11
  var mailpoet_date_formats = <%= json_encode(date_formats) %>;
12
+ var mailpoet_premium_active = <%= json_encode(premium_plugin_active) %>;
13
  </script>
14
  <% endblock %>
15
 
19
  'searchLabel': __('Search'),
20
  'loadingItems': __('Loading subscribers...'),
21
  'noItemsFound': __('No subscribers were found.'),
22
+ 'bouncedSubscribersHelp': __("Emails that are invalid or don't exist anymore are called \"bounced addresses\". It's a good practice not to send emails to bounced addresses to keep a good reputation with spam filters. Send your emails with MailPoet and we'll automatically ensure to keep a list of bounced addresses without any setup."),
23
+ 'bouncedSubscribersPremiumButtonText': __('Get premium version!'),
24
  'selectAllLabel': __('All subscribers on this page are selected.'),
25
  'selectedAllLabel': __('All %d subscribers are selected.'),
26
  'selectAllLink': __('Select all subscribers on all pages.'),