Version Description
- 2018-06-05 =
- Added: align images left or right of posts excerpts;
- Fixed: post content block image alignment issues.
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (New) |
Version | 3.7.5 |
Comparing to | |
See all releases |
Code changes from version 3.7.4 to 3.7.5
- assets/css/manifest.json +1 -1
- assets/css/{newsletter_editor.9cb620b4.css → newsletter_editor.f491d3e7.css} +14 -3
- assets/js/{admin.b1f6f0a0.js → admin.a58c3783.js} +68 -125
- assets/js/{admin_vendor.b19a9487.js → admin_vendor.016e33b8.js} +15 -69
- assets/js/{form_editor.f475a2b0.js → form_editor.b2d3a84e.js} +19 -39
- assets/js/lib/mailpoet_shortcodes/plugin.js +20 -21
- assets/js/{mailpoet.7070ca4a.js → mailpoet.f26c86e7.js} +70 -127
- assets/js/manifest.json +6 -6
- assets/js/{newsletter_editor.69062a08.js → newsletter_editor.1d7b4686.js} +861 -455
- assets/js/{vendor.0b1694bf.js → vendor.98a3aa8c.js} +3 -3
- lang/mailpoet-ca.mo +0 -0
- lang/mailpoet-da_DK.mo +0 -0
- lang/mailpoet-de_DE.mo +0 -0
- lang/mailpoet-en_GB.mo +0 -0
- lang/mailpoet-es_ES.mo +0 -0
- lang/mailpoet-fa_IR.mo +0 -0
- lang/mailpoet-fr_CA.mo +0 -0
- lang/mailpoet-fr_FR.mo +0 -0
- lang/mailpoet-it_IT.mo +0 -0
- lang/mailpoet-ja.mo +0 -0
- lang/mailpoet-nl_NL.mo +0 -0
- lang/mailpoet-pl_PL.mo +0 -0
- lang/mailpoet-pt_BR.mo +0 -0
- lang/mailpoet-pt_PT.mo +0 -0
- lang/mailpoet-ru_RU.mo +0 -0
- lang/mailpoet-sq.mo +0 -0
- lang/mailpoet-sv_SE.mo +0 -0
- lang/mailpoet-tr_TR.mo +0 -0
- lang/mailpoet.pot +164 -100
- lib/Config/Env.php +2 -0
- lib/Config/Initializer.php +2 -2
- lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php +66 -87
- lib/Newsletter/Editor/LayoutHelper.php +30 -0
- lib/Newsletter/Editor/PostContentManager.php +8 -4
- lib/Newsletter/Editor/PostListTransformer.php +1 -1
- lib/Newsletter/Editor/PostTransformer.php +156 -107
- lib/Newsletter/Renderer/Blocks/Renderer.php +7 -3
- lib/Newsletter/Renderer/Renderer.php +21 -0
- lib/Settings/Pages.php +0 -1
- lib/WP/Functions.php +22 -1
- mailpoet.php +2 -2
- readme.txt +13 -311
- vendor/autoload.php +1 -1
- vendor/composer/autoload_classmap.php +1 -0
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +6 -5
- views/newsletter/editor.html +80 -1
- views/newsletter/templates/blocks/automatedLatestContentLayout/block.hbs +6 -0
- views/newsletter/templates/blocks/automatedLatestContentLayout/index.php +0 -0
- views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs +313 -0
- views/newsletter/templates/blocks/automatedLatestContentLayout/widget.hbs +4 -0
- views/newsletter/templates/blocks/posts/block.hbs +1 -3
- views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs +16 -4
assets/css/manifest.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
"admin-global.css": "admin-global.673373a1.css",
|
3 |
"admin.css": "admin.6bec32c2.css",
|
4 |
"importExport.css": "importExport.b3745466.css",
|
5 |
-
"newsletter_editor.css": "newsletter_editor.
|
6 |
"public.css": "public.cae357df.css",
|
7 |
"rtl.css": "rtl.d41d8cd9.css"
|
8 |
}
|
2 |
"admin-global.css": "admin-global.673373a1.css",
|
3 |
"admin.css": "admin.6bec32c2.css",
|
4 |
"importExport.css": "importExport.b3745466.css",
|
5 |
+
"newsletter_editor.css": "newsletter_editor.f491d3e7.css",
|
6 |
"public.css": "public.cae357df.css",
|
7 |
"rtl.css": "rtl.d41d8cd9.css"
|
8 |
}
|
assets/css/{newsletter_editor.9cb620b4.css → newsletter_editor.f491d3e7.css}
RENAMED
@@ -2087,11 +2087,19 @@ input.mailpoet_option_offset_left_small {
|
|
2087 |
width: 660px;
|
2088 |
}
|
2089 |
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2),
|
2090 |
-
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2)
|
|
|
|
|
|
|
|
|
2091 |
width: 330px;
|
2092 |
}
|
2093 |
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3),
|
2094 |
-
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3)
|
|
|
|
|
|
|
|
|
2095 |
width: 220px;
|
2096 |
}
|
2097 |
.mailpoet_container_empty {
|
@@ -2124,7 +2132,7 @@ input.mailpoet_option_offset_left_small {
|
|
2124 |
cursor: pointer;
|
2125 |
}
|
2126 |
.mailpoet_automated_latest_content_block_posts {
|
2127 |
-
overflow:
|
2128 |
pointer-events: none;
|
2129 |
}
|
2130 |
.mailpoet_automated_latest_content_block_posts > .mailpoet_block {
|
@@ -2213,6 +2221,9 @@ input.mailpoet_option_offset_left_small {
|
|
2213 |
.mailpoet_post_selection_loading {
|
2214 |
color: #999;
|
2215 |
}
|
|
|
|
|
|
|
2216 |
.mailpoet_button_block {
|
2217 |
overflow: hidden;
|
2218 |
}
|
2087 |
width: 660px;
|
2088 |
}
|
2089 |
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2),
|
2090 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_posts_block > .mailpoet_posts_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2),
|
2091 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_posts .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2),
|
2092 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2) ~ .mailpoet_block,
|
2093 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_posts_block > .mailpoet_posts_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2) ~ .mailpoet_block,
|
2094 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_posts .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2) ~ .mailpoet_block {
|
2095 |
width: 330px;
|
2096 |
}
|
2097 |
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3),
|
2098 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_posts_block > .mailpoet_posts_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3),
|
2099 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_posts .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3),
|
2100 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3) ~ .mailpoet_block,
|
2101 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_posts_block > .mailpoet_posts_container > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3) ~ .mailpoet_block,
|
2102 |
+
#mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container .mailpoet_automated_latest_content_block_posts .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3) ~ .mailpoet_block {
|
2103 |
width: 220px;
|
2104 |
}
|
2105 |
.mailpoet_container_empty {
|
2132 |
cursor: pointer;
|
2133 |
}
|
2134 |
.mailpoet_automated_latest_content_block_posts {
|
2135 |
+
overflow: hidden;
|
2136 |
pointer-events: none;
|
2137 |
}
|
2138 |
.mailpoet_automated_latest_content_block_posts > .mailpoet_block {
|
2221 |
.mailpoet_post_selection_loading {
|
2222 |
color: #999;
|
2223 |
}
|
2224 |
+
.mailpoet_posts_container > .mailpoet_droppable_block {
|
2225 |
+
width: 100%;
|
2226 |
+
}
|
2227 |
.mailpoet_button_block {
|
2228 |
overflow: hidden;
|
2229 |
}
|
assets/js/{admin.b1f6f0a0.js → admin.a58c3783.js}
RENAMED
@@ -4072,7 +4072,7 @@ webpackJsonp([0],{
|
|
4072 |
|
4073 |
var elem = this._tagStack.pop();
|
4074 |
|
4075 |
-
if(this._options.withEndIndices
|
4076 |
elem.endIndex = this._parser.endIndex;
|
4077 |
}
|
4078 |
|
@@ -7442,102 +7442,68 @@ webpackJsonp([0],{
|
|
7442 |
revLookup[code.charCodeAt(i)] = i
|
7443 |
}
|
7444 |
|
7445 |
-
// Support decoding URL-safe base64 strings, as Node.js does.
|
7446 |
-
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
7447 |
revLookup['-'.charCodeAt(0)] = 62
|
7448 |
revLookup['_'.charCodeAt(0)] = 63
|
7449 |
|
7450 |
-
function
|
7451 |
var len = b64.length
|
7452 |
-
|
7453 |
if (len % 4 > 0) {
|
7454 |
throw new Error('Invalid string. Length must be a multiple of 4')
|
7455 |
}
|
7456 |
|
7457 |
-
//
|
7458 |
-
//
|
7459 |
-
|
7460 |
-
if
|
7461 |
-
|
7462 |
-
|
7463 |
-
? 0
|
7464 |
-
: 4 - (validLen % 4)
|
7465 |
-
|
7466 |
-
return [validLen, placeHoldersLen]
|
7467 |
}
|
7468 |
|
7469 |
-
// base64 is 4/3 + up to two characters of the original data
|
7470 |
function byteLength (b64) {
|
7471 |
-
|
7472 |
-
|
7473 |
-
var placeHoldersLen = lens[1]
|
7474 |
-
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
7475 |
-
}
|
7476 |
-
|
7477 |
-
function _byteLength (b64, validLen, placeHoldersLen) {
|
7478 |
-
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
7479 |
}
|
7480 |
|
7481 |
function toByteArray (b64) {
|
7482 |
-
var tmp
|
7483 |
-
var
|
7484 |
-
|
7485 |
-
var placeHoldersLen = lens[1]
|
7486 |
-
|
7487 |
-
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
|
7488 |
|
7489 |
-
|
7490 |
|
7491 |
// if there are placeholders, only get up to the last complete 4 chars
|
7492 |
-
|
7493 |
-
? validLen - 4
|
7494 |
-
: validLen
|
7495 |
|
7496 |
-
|
7497 |
-
tmp =
|
7498 |
-
(revLookup[b64.charCodeAt(i)] << 18) |
|
7499 |
-
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
7500 |
-
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
7501 |
-
revLookup[b64.charCodeAt(i + 3)]
|
7502 |
-
arr[curByte++] = (tmp >> 16) & 0xFF
|
7503 |
-
arr[curByte++] = (tmp >> 8) & 0xFF
|
7504 |
-
arr[curByte++] = tmp & 0xFF
|
7505 |
-
}
|
7506 |
|
7507 |
-
|
7508 |
-
tmp =
|
7509 |
-
|
7510 |
-
|
7511 |
-
arr[
|
7512 |
}
|
7513 |
|
7514 |
-
if (
|
7515 |
-
tmp =
|
7516 |
-
|
7517 |
-
|
7518 |
-
|
7519 |
-
arr[
|
7520 |
-
arr[
|
7521 |
}
|
7522 |
|
7523 |
return arr
|
7524 |
}
|
7525 |
|
7526 |
function tripletToBase64 (num) {
|
7527 |
-
return lookup[num >> 18 & 0x3F] +
|
7528 |
-
lookup[num >> 12 & 0x3F] +
|
7529 |
-
lookup[num >> 6 & 0x3F] +
|
7530 |
-
lookup[num & 0x3F]
|
7531 |
}
|
7532 |
|
7533 |
function encodeChunk (uint8, start, end) {
|
7534 |
var tmp
|
7535 |
var output = []
|
7536 |
for (var i = start; i < end; i += 3) {
|
7537 |
-
tmp =
|
7538 |
-
((uint8[i] << 16) & 0xFF0000) +
|
7539 |
-
((uint8[i + 1] << 8) & 0xFF00) +
|
7540 |
-
(uint8[i + 2] & 0xFF)
|
7541 |
output.push(tripletToBase64(tmp))
|
7542 |
}
|
7543 |
return output.join('')
|
@@ -7547,34 +7513,31 @@ webpackJsonp([0],{
|
|
7547 |
var tmp
|
7548 |
var len = uint8.length
|
7549 |
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
|
|
7550 |
var parts = []
|
7551 |
var maxChunkLength = 16383 // must be multiple of 3
|
7552 |
|
7553 |
// go through the array every three bytes, we'll deal with trailing stuff later
|
7554 |
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
7555 |
-
parts.push(encodeChunk(
|
7556 |
-
uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
|
7557 |
-
))
|
7558 |
}
|
7559 |
|
7560 |
// pad the end with zeros, but make sure to not forget the extra bytes
|
7561 |
if (extraBytes === 1) {
|
7562 |
tmp = uint8[len - 1]
|
7563 |
-
|
7564 |
-
|
7565 |
-
|
7566 |
-
'=='
|
7567 |
-
)
|
7568 |
} else if (extraBytes === 2) {
|
7569 |
-
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
|
7570 |
-
|
7571 |
-
|
7572 |
-
|
7573 |
-
|
7574 |
-
'='
|
7575 |
-
)
|
7576 |
}
|
7577 |
|
|
|
|
|
7578 |
return parts.join('')
|
7579 |
}
|
7580 |
|
@@ -7586,7 +7549,7 @@ webpackJsonp([0],{
|
|
7586 |
|
7587 |
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
|
7588 |
var e, m
|
7589 |
-
var eLen =
|
7590 |
var eMax = (1 << eLen) - 1
|
7591 |
var eBias = eMax >> 1
|
7592 |
var nBits = -7
|
@@ -7599,12 +7562,12 @@ webpackJsonp([0],{
|
|
7599 |
e = s & ((1 << (-nBits)) - 1)
|
7600 |
s >>= (-nBits)
|
7601 |
nBits += eLen
|
7602 |
-
for (; nBits > 0; e =
|
7603 |
|
7604 |
m = e & ((1 << (-nBits)) - 1)
|
7605 |
e >>= (-nBits)
|
7606 |
nBits += mLen
|
7607 |
-
for (; nBits > 0; m =
|
7608 |
|
7609 |
if (e === 0) {
|
7610 |
e = 1 - eBias
|
@@ -7619,7 +7582,7 @@ webpackJsonp([0],{
|
|
7619 |
|
7620 |
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
7621 |
var e, m, c
|
7622 |
-
var eLen =
|
7623 |
var eMax = (1 << eLen) - 1
|
7624 |
var eBias = eMax >> 1
|
7625 |
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
|
@@ -7652,7 +7615,7 @@ webpackJsonp([0],{
|
|
7652 |
m = 0
|
7653 |
e = eMax
|
7654 |
} else if (e + eBias >= 1) {
|
7655 |
-
m = (
|
7656 |
e = e + eBias
|
7657 |
} else {
|
7658 |
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
|
@@ -8927,33 +8890,9 @@ webpackJsonp([0],{
|
|
8927 |
/***/ 502:
|
8928 |
/***/ function(module, exports, __webpack_require__) {
|
8929 |
|
8930 |
-
// Copyright Joyent, Inc. and other Node contributors.
|
8931 |
-
//
|
8932 |
-
// Permission is hereby granted, free of charge, to any person obtaining a
|
8933 |
-
// copy of this software and associated documentation files (the
|
8934 |
-
// "Software"), to deal in the Software without restriction, including
|
8935 |
-
// without limitation the rights to use, copy, modify, merge, publish,
|
8936 |
-
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
8937 |
-
// persons to whom the Software is furnished to do so, subject to the
|
8938 |
-
// following conditions:
|
8939 |
-
//
|
8940 |
-
// The above copyright notice and this permission notice shall be included
|
8941 |
-
// in all copies or substantial portions of the Software.
|
8942 |
-
//
|
8943 |
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
8944 |
-
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
8945 |
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
8946 |
-
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
8947 |
-
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
8948 |
-
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
8949 |
-
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
8950 |
-
|
8951 |
'use strict';
|
8952 |
|
8953 |
-
/*<replacement>*/
|
8954 |
-
|
8955 |
var Buffer = __webpack_require__(503).Buffer;
|
8956 |
-
/*</replacement>*/
|
8957 |
|
8958 |
var isEncoding = Buffer.isEncoding || function (encoding) {
|
8959 |
encoding = '' + encoding;
|
@@ -9065,10 +9004,10 @@ webpackJsonp([0],{
|
|
9065 |
};
|
9066 |
|
9067 |
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
|
9068 |
-
// continuation byte.
|
9069 |
function utf8CheckByte(byte) {
|
9070 |
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
|
9071 |
-
return
|
9072 |
}
|
9073 |
|
9074 |
// Checks at most 3 bytes at the end of a Buffer in order to detect an
|
@@ -9082,13 +9021,13 @@ webpackJsonp([0],{
|
|
9082 |
if (nb > 0) self.lastNeed = nb - 1;
|
9083 |
return nb;
|
9084 |
}
|
9085 |
-
if (--j < i
|
9086 |
nb = utf8CheckByte(buf[j]);
|
9087 |
if (nb >= 0) {
|
9088 |
if (nb > 0) self.lastNeed = nb - 2;
|
9089 |
return nb;
|
9090 |
}
|
9091 |
-
if (--j < i
|
9092 |
nb = utf8CheckByte(buf[j]);
|
9093 |
if (nb >= 0) {
|
9094 |
if (nb > 0) {
|
@@ -9102,7 +9041,7 @@ webpackJsonp([0],{
|
|
9102 |
// Validates as many continuation bytes for a multi-byte UTF-8 character as
|
9103 |
// needed or are available. If we see a non-continuation byte where we expect
|
9104 |
// one, we "replace" the validated continuation bytes we've seen so far with
|
9105 |
-
//
|
9106 |
// behavior. The continuation byte check is included three times in the case
|
9107 |
// where all of the continuation bytes for a character exist in the same buffer.
|
9108 |
// It is also done this way as a slight performance increase instead of using a
|
@@ -9110,17 +9049,17 @@ webpackJsonp([0],{
|
|
9110 |
function utf8CheckExtraBytes(self, buf, p) {
|
9111 |
if ((buf[0] & 0xC0) !== 0x80) {
|
9112 |
self.lastNeed = 0;
|
9113 |
-
return '\ufffd';
|
9114 |
}
|
9115 |
if (self.lastNeed > 1 && buf.length > 1) {
|
9116 |
if ((buf[1] & 0xC0) !== 0x80) {
|
9117 |
self.lastNeed = 1;
|
9118 |
-
return '\ufffd';
|
9119 |
}
|
9120 |
if (self.lastNeed > 2 && buf.length > 2) {
|
9121 |
if ((buf[2] & 0xC0) !== 0x80) {
|
9122 |
self.lastNeed = 2;
|
9123 |
-
return '\ufffd';
|
9124 |
}
|
9125 |
}
|
9126 |
}
|
@@ -9151,11 +9090,11 @@ webpackJsonp([0],{
|
|
9151 |
return buf.toString('utf8', i, end);
|
9152 |
}
|
9153 |
|
9154 |
-
// For UTF-8, a replacement character
|
9155 |
-
// character.
|
9156 |
function utf8End(buf) {
|
9157 |
var r = buf && buf.length ? this.write(buf) : '';
|
9158 |
-
if (this.lastNeed) return r + '\ufffd';
|
9159 |
return r;
|
9160 |
}
|
9161 |
|
@@ -10010,14 +9949,18 @@ webpackJsonp([0],{
|
|
10010 |
|
10011 |
function findAll(test, rootElems){
|
10012 |
var result = [];
|
10013 |
-
var stack = rootElems
|
10014 |
while(stack.length){
|
10015 |
-
var
|
10016 |
-
|
10017 |
-
|
10018 |
-
|
|
|
|
|
|
|
|
|
|
|
10019 |
}
|
10020 |
-
if(test(elem)) result.push(elem);
|
10021 |
}
|
10022 |
return result;
|
10023 |
}
|
4072 |
|
4073 |
var elem = this._tagStack.pop();
|
4074 |
|
4075 |
+
if(this._options.withEndIndices){
|
4076 |
elem.endIndex = this._parser.endIndex;
|
4077 |
}
|
4078 |
|
7442 |
revLookup[code.charCodeAt(i)] = i
|
7443 |
}
|
7444 |
|
|
|
|
|
7445 |
revLookup['-'.charCodeAt(0)] = 62
|
7446 |
revLookup['_'.charCodeAt(0)] = 63
|
7447 |
|
7448 |
+
function placeHoldersCount (b64) {
|
7449 |
var len = b64.length
|
|
|
7450 |
if (len % 4 > 0) {
|
7451 |
throw new Error('Invalid string. Length must be a multiple of 4')
|
7452 |
}
|
7453 |
|
7454 |
+
// the number of equal signs (place holders)
|
7455 |
+
// if there are two placeholders, than the two characters before it
|
7456 |
+
// represent one byte
|
7457 |
+
// if there is only one, then the three characters before it represent 2 bytes
|
7458 |
+
// this is just a cheap hack to not do indexOf twice
|
7459 |
+
return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
|
|
|
|
|
|
|
|
|
7460 |
}
|
7461 |
|
|
|
7462 |
function byteLength (b64) {
|
7463 |
+
// base64 is 4/3 + up to two characters of the original data
|
7464 |
+
return (b64.length * 3 / 4) - placeHoldersCount(b64)
|
|
|
|
|
|
|
|
|
|
|
|
|
7465 |
}
|
7466 |
|
7467 |
function toByteArray (b64) {
|
7468 |
+
var i, l, tmp, placeHolders, arr
|
7469 |
+
var len = b64.length
|
7470 |
+
placeHolders = placeHoldersCount(b64)
|
|
|
|
|
|
|
7471 |
|
7472 |
+
arr = new Arr((len * 3 / 4) - placeHolders)
|
7473 |
|
7474 |
// if there are placeholders, only get up to the last complete 4 chars
|
7475 |
+
l = placeHolders > 0 ? len - 4 : len
|
|
|
|
|
7476 |
|
7477 |
+
var L = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7478 |
|
7479 |
+
for (i = 0; i < l; i += 4) {
|
7480 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
|
7481 |
+
arr[L++] = (tmp >> 16) & 0xFF
|
7482 |
+
arr[L++] = (tmp >> 8) & 0xFF
|
7483 |
+
arr[L++] = tmp & 0xFF
|
7484 |
}
|
7485 |
|
7486 |
+
if (placeHolders === 2) {
|
7487 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
|
7488 |
+
arr[L++] = tmp & 0xFF
|
7489 |
+
} else if (placeHolders === 1) {
|
7490 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
|
7491 |
+
arr[L++] = (tmp >> 8) & 0xFF
|
7492 |
+
arr[L++] = tmp & 0xFF
|
7493 |
}
|
7494 |
|
7495 |
return arr
|
7496 |
}
|
7497 |
|
7498 |
function tripletToBase64 (num) {
|
7499 |
+
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
|
|
|
|
|
|
|
7500 |
}
|
7501 |
|
7502 |
function encodeChunk (uint8, start, end) {
|
7503 |
var tmp
|
7504 |
var output = []
|
7505 |
for (var i = start; i < end; i += 3) {
|
7506 |
+
tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
|
|
|
|
|
|
|
7507 |
output.push(tripletToBase64(tmp))
|
7508 |
}
|
7509 |
return output.join('')
|
7513 |
var tmp
|
7514 |
var len = uint8.length
|
7515 |
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
7516 |
+
var output = ''
|
7517 |
var parts = []
|
7518 |
var maxChunkLength = 16383 // must be multiple of 3
|
7519 |
|
7520 |
// go through the array every three bytes, we'll deal with trailing stuff later
|
7521 |
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
7522 |
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
|
|
|
|
|
7523 |
}
|
7524 |
|
7525 |
// pad the end with zeros, but make sure to not forget the extra bytes
|
7526 |
if (extraBytes === 1) {
|
7527 |
tmp = uint8[len - 1]
|
7528 |
+
output += lookup[tmp >> 2]
|
7529 |
+
output += lookup[(tmp << 4) & 0x3F]
|
7530 |
+
output += '=='
|
|
|
|
|
7531 |
} else if (extraBytes === 2) {
|
7532 |
+
tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
|
7533 |
+
output += lookup[tmp >> 10]
|
7534 |
+
output += lookup[(tmp >> 4) & 0x3F]
|
7535 |
+
output += lookup[(tmp << 2) & 0x3F]
|
7536 |
+
output += '='
|
|
|
|
|
7537 |
}
|
7538 |
|
7539 |
+
parts.push(output)
|
7540 |
+
|
7541 |
return parts.join('')
|
7542 |
}
|
7543 |
|
7549 |
|
7550 |
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
|
7551 |
var e, m
|
7552 |
+
var eLen = nBytes * 8 - mLen - 1
|
7553 |
var eMax = (1 << eLen) - 1
|
7554 |
var eBias = eMax >> 1
|
7555 |
var nBits = -7
|
7562 |
e = s & ((1 << (-nBits)) - 1)
|
7563 |
s >>= (-nBits)
|
7564 |
nBits += eLen
|
7565 |
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
7566 |
|
7567 |
m = e & ((1 << (-nBits)) - 1)
|
7568 |
e >>= (-nBits)
|
7569 |
nBits += mLen
|
7570 |
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
7571 |
|
7572 |
if (e === 0) {
|
7573 |
e = 1 - eBias
|
7582 |
|
7583 |
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
7584 |
var e, m, c
|
7585 |
+
var eLen = nBytes * 8 - mLen - 1
|
7586 |
var eMax = (1 << eLen) - 1
|
7587 |
var eBias = eMax >> 1
|
7588 |
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
|
7615 |
m = 0
|
7616 |
e = eMax
|
7617 |
} else if (e + eBias >= 1) {
|
7618 |
+
m = (value * c - 1) * Math.pow(2, mLen)
|
7619 |
e = e + eBias
|
7620 |
} else {
|
7621 |
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
|
8890 |
/***/ 502:
|
8891 |
/***/ function(module, exports, __webpack_require__) {
|
8892 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8893 |
'use strict';
|
8894 |
|
|
|
|
|
8895 |
var Buffer = __webpack_require__(503).Buffer;
|
|
|
8896 |
|
8897 |
var isEncoding = Buffer.isEncoding || function (encoding) {
|
8898 |
encoding = '' + encoding;
|
9004 |
};
|
9005 |
|
9006 |
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
|
9007 |
+
// continuation byte.
|
9008 |
function utf8CheckByte(byte) {
|
9009 |
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
|
9010 |
+
return -1;
|
9011 |
}
|
9012 |
|
9013 |
// Checks at most 3 bytes at the end of a Buffer in order to detect an
|
9021 |
if (nb > 0) self.lastNeed = nb - 1;
|
9022 |
return nb;
|
9023 |
}
|
9024 |
+
if (--j < i) return 0;
|
9025 |
nb = utf8CheckByte(buf[j]);
|
9026 |
if (nb >= 0) {
|
9027 |
if (nb > 0) self.lastNeed = nb - 2;
|
9028 |
return nb;
|
9029 |
}
|
9030 |
+
if (--j < i) return 0;
|
9031 |
nb = utf8CheckByte(buf[j]);
|
9032 |
if (nb >= 0) {
|
9033 |
if (nb > 0) {
|
9041 |
// Validates as many continuation bytes for a multi-byte UTF-8 character as
|
9042 |
// needed or are available. If we see a non-continuation byte where we expect
|
9043 |
// one, we "replace" the validated continuation bytes we've seen so far with
|
9044 |
+
// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
|
9045 |
// behavior. The continuation byte check is included three times in the case
|
9046 |
// where all of the continuation bytes for a character exist in the same buffer.
|
9047 |
// It is also done this way as a slight performance increase instead of using a
|
9049 |
function utf8CheckExtraBytes(self, buf, p) {
|
9050 |
if ((buf[0] & 0xC0) !== 0x80) {
|
9051 |
self.lastNeed = 0;
|
9052 |
+
return '\ufffd'.repeat(p);
|
9053 |
}
|
9054 |
if (self.lastNeed > 1 && buf.length > 1) {
|
9055 |
if ((buf[1] & 0xC0) !== 0x80) {
|
9056 |
self.lastNeed = 1;
|
9057 |
+
return '\ufffd'.repeat(p + 1);
|
9058 |
}
|
9059 |
if (self.lastNeed > 2 && buf.length > 2) {
|
9060 |
if ((buf[2] & 0xC0) !== 0x80) {
|
9061 |
self.lastNeed = 2;
|
9062 |
+
return '\ufffd'.repeat(p + 2);
|
9063 |
}
|
9064 |
}
|
9065 |
}
|
9090 |
return buf.toString('utf8', i, end);
|
9091 |
}
|
9092 |
|
9093 |
+
// For UTF-8, a replacement character for each buffered byte of a (partial)
|
9094 |
+
// character needs to be added to the output.
|
9095 |
function utf8End(buf) {
|
9096 |
var r = buf && buf.length ? this.write(buf) : '';
|
9097 |
+
if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
|
9098 |
return r;
|
9099 |
}
|
9100 |
|
9949 |
|
9950 |
function findAll(test, rootElems){
|
9951 |
var result = [];
|
9952 |
+
var stack = [rootElems];
|
9953 |
while(stack.length){
|
9954 |
+
var elems = stack.pop();
|
9955 |
+
for(var i = 0, j = elems.length; i < j; i++){
|
9956 |
+
if(!isTag(elems[i])) continue;
|
9957 |
+
if(test(elems[i])) result.push(elems[i]);
|
9958 |
+
}
|
9959 |
+
while(j-- > 0){
|
9960 |
+
if(elems[j].children && elems[j].children.length > 0){
|
9961 |
+
stack.push(elems[j].children);
|
9962 |
+
}
|
9963 |
}
|
|
|
9964 |
}
|
9965 |
return result;
|
9966 |
}
|
assets/js/{admin_vendor.b19a9487.js → admin_vendor.016e33b8.js}
RENAMED
@@ -22678,10 +22678,12 @@ webpackJsonp([1],[
|
|
22678 |
/***/ function(module, exports, __webpack_require__) {
|
22679 |
|
22680 |
/* WEBPACK VAR INJECTION */(function(process) {/**
|
22681 |
-
* Copyright
|
|
|
22682 |
*
|
22683 |
-
* This source code is licensed under the
|
22684 |
-
* LICENSE file in the root directory of this source tree.
|
|
|
22685 |
*/
|
22686 |
|
22687 |
'use strict';
|
@@ -23222,27 +23224,6 @@ webpackJsonp([1],[
|
|
23222 |
*/
|
23223 |
componentWillUnmount: 'DEFINE_MANY',
|
23224 |
|
23225 |
-
/**
|
23226 |
-
* Replacement for (deprecated) `componentWillMount`.
|
23227 |
-
*
|
23228 |
-
* @optional
|
23229 |
-
*/
|
23230 |
-
UNSAFE_componentWillMount: 'DEFINE_MANY',
|
23231 |
-
|
23232 |
-
/**
|
23233 |
-
* Replacement for (deprecated) `componentWillReceiveProps`.
|
23234 |
-
*
|
23235 |
-
* @optional
|
23236 |
-
*/
|
23237 |
-
UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',
|
23238 |
-
|
23239 |
-
/**
|
23240 |
-
* Replacement for (deprecated) `componentWillUpdate`.
|
23241 |
-
*
|
23242 |
-
* @optional
|
23243 |
-
*/
|
23244 |
-
UNSAFE_componentWillUpdate: 'DEFINE_MANY',
|
23245 |
-
|
23246 |
// ==== Advanced methods ====
|
23247 |
|
23248 |
/**
|
@@ -23258,23 +23239,6 @@ webpackJsonp([1],[
|
|
23258 |
updateComponent: 'OVERRIDE_BASE'
|
23259 |
};
|
23260 |
|
23261 |
-
/**
|
23262 |
-
* Similar to ReactClassInterface but for static methods.
|
23263 |
-
*/
|
23264 |
-
var ReactClassStaticInterface = {
|
23265 |
-
/**
|
23266 |
-
* This method is invoked after a component is instantiated and when it
|
23267 |
-
* receives new props. Return an object to update state in response to
|
23268 |
-
* prop changes. Return null to indicate no change to state.
|
23269 |
-
*
|
23270 |
-
* If an object is returned, its keys will be merged into the existing state.
|
23271 |
-
*
|
23272 |
-
* @return {object || null}
|
23273 |
-
* @optional
|
23274 |
-
*/
|
23275 |
-
getDerivedStateFromProps: 'DEFINE_MANY_MERGED'
|
23276 |
-
};
|
23277 |
-
|
23278 |
/**
|
23279 |
* Mapping from class specification keys to special processing functions.
|
23280 |
*
|
@@ -23509,7 +23473,6 @@ webpackJsonp([1],[
|
|
23509 |
if (!statics) {
|
23510 |
return;
|
23511 |
}
|
23512 |
-
|
23513 |
for (var name in statics) {
|
23514 |
var property = statics[name];
|
23515 |
if (!statics.hasOwnProperty(name)) {
|
@@ -23526,25 +23489,14 @@ webpackJsonp([1],[
|
|
23526 |
name
|
23527 |
);
|
23528 |
|
23529 |
-
var
|
23530 |
-
|
23531 |
-
|
23532 |
-
|
23533 |
-
|
23534 |
-
|
23535 |
-
|
23536 |
-
|
23537 |
-
'ReactClass: You are attempting to define ' +
|
23538 |
-
'`%s` on your component more than once. This conflict may be ' +
|
23539 |
-
'due to a mixin.',
|
23540 |
-
name
|
23541 |
-
);
|
23542 |
-
|
23543 |
-
Constructor[name] = createMergedResultFunction(Constructor[name], property);
|
23544 |
-
|
23545 |
-
return;
|
23546 |
-
}
|
23547 |
-
|
23548 |
Constructor[name] = property;
|
23549 |
}
|
23550 |
}
|
@@ -23854,12 +23806,6 @@ webpackJsonp([1],[
|
|
23854 |
'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',
|
23855 |
spec.displayName || 'A component'
|
23856 |
);
|
23857 |
-
warning(
|
23858 |
-
!Constructor.prototype.UNSAFE_componentWillRecieveProps,
|
23859 |
-
'%s has a method called UNSAFE_componentWillRecieveProps(). ' +
|
23860 |
-
'Did you mean UNSAFE_componentWillReceiveProps()?',
|
23861 |
-
spec.displayName || 'A component'
|
23862 |
-
);
|
23863 |
}
|
23864 |
|
23865 |
// Reduce time spent doing lookups by setting these on the prototype.
|
@@ -59326,9 +59272,9 @@ webpackJsonp([1],[
|
|
59326 |
var content = void 0;
|
59327 |
if (getContent) {
|
59328 |
if (Array.isArray(getContent)) {
|
59329 |
-
content = getContent[0] && getContent[0](
|
59330 |
} else {
|
59331 |
-
content = getContent(
|
59332 |
}
|
59333 |
}
|
59334 |
|
22678 |
/***/ function(module, exports, __webpack_require__) {
|
22679 |
|
22680 |
/* WEBPACK VAR INJECTION */(function(process) {/**
|
22681 |
+
* Copyright 2013-2015, Facebook, Inc.
|
22682 |
+
* All rights reserved.
|
22683 |
*
|
22684 |
+
* This source code is licensed under the BSD-style license found in the
|
22685 |
+
* LICENSE file in the root directory of this source tree. An additional grant
|
22686 |
+
* of patent rights can be found in the PATENTS file in the same directory.
|
22687 |
*/
|
22688 |
|
22689 |
'use strict';
|
23224 |
*/
|
23225 |
componentWillUnmount: 'DEFINE_MANY',
|
23226 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23227 |
// ==== Advanced methods ====
|
23228 |
|
23229 |
/**
|
23239 |
updateComponent: 'OVERRIDE_BASE'
|
23240 |
};
|
23241 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23242 |
/**
|
23243 |
* Mapping from class specification keys to special processing functions.
|
23244 |
*
|
23473 |
if (!statics) {
|
23474 |
return;
|
23475 |
}
|
|
|
23476 |
for (var name in statics) {
|
23477 |
var property = statics[name];
|
23478 |
if (!statics.hasOwnProperty(name)) {
|
23489 |
name
|
23490 |
);
|
23491 |
|
23492 |
+
var isInherited = name in Constructor;
|
23493 |
+
_invariant(
|
23494 |
+
!isInherited,
|
23495 |
+
'ReactClass: You are attempting to define ' +
|
23496 |
+
'`%s` on your component more than once. This conflict may be ' +
|
23497 |
+
'due to a mixin.',
|
23498 |
+
name
|
23499 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23500 |
Constructor[name] = property;
|
23501 |
}
|
23502 |
}
|
23806 |
'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',
|
23807 |
spec.displayName || 'A component'
|
23808 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
23809 |
}
|
23810 |
|
23811 |
// Reduce time spent doing lookups by setting these on the prototype.
|
59272 |
var content = void 0;
|
59273 |
if (getContent) {
|
59274 |
if (Array.isArray(getContent)) {
|
59275 |
+
content = getContent[0] && getContent[0]();
|
59276 |
} else {
|
59277 |
+
content = getContent();
|
59278 |
}
|
59279 |
}
|
59280 |
|
assets/js/{form_editor.f475a2b0.js → form_editor.b2d3a84e.js}
RENAMED
@@ -1938,16 +1938,6 @@ webpackJsonp([2],{
|
|
1938 |
function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }
|
1939 |
function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }
|
1940 |
|
1941 |
-
function collapsedSpanAround(line, ch) {
|
1942 |
-
var sps = sawCollapsedSpans && line.markedSpans, found;
|
1943 |
-
if (sps) { for (var i = 0; i < sps.length; ++i) {
|
1944 |
-
var sp = sps[i];
|
1945 |
-
if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&
|
1946 |
-
(!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }
|
1947 |
-
} }
|
1948 |
-
return found
|
1949 |
-
}
|
1950 |
-
|
1951 |
// Test whether there exists a collapsed span that partially
|
1952 |
// overlaps (covers the start or end, but not both) of a new span.
|
1953 |
// Such overlap is not allowed.
|
@@ -3982,11 +3972,12 @@ webpackJsonp([2],{
|
|
3982 |
var lineObj = getLine(doc, lineN);
|
3983 |
for (;;) {
|
3984 |
var found = coordsCharInner(cm, lineObj, lineN, x, y);
|
3985 |
-
var
|
3986 |
-
|
3987 |
-
|
3988 |
-
|
3989 |
-
|
|
|
3990 |
}
|
3991 |
}
|
3992 |
|
@@ -4746,7 +4737,6 @@ webpackJsonp([2],{
|
|
4746 |
this.cm = cm;
|
4747 |
var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar");
|
4748 |
var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
|
4749 |
-
vert.tabIndex = horiz.tabIndex = -1;
|
4750 |
place(vert); place(horiz);
|
4751 |
|
4752 |
on(vert, "scroll", function () {
|
@@ -8690,7 +8680,7 @@ webpackJsonp([2],{
|
|
8690 |
}
|
8691 |
|
8692 |
var move = operation(cm, function (e) {
|
8693 |
-
if (
|
8694 |
else { extend(e); }
|
8695 |
});
|
8696 |
var up = operation(cm, done);
|
@@ -9969,12 +9959,8 @@ webpackJsonp([2],{
|
|
9969 |
this.showMultipleSelections(info);
|
9970 |
};
|
9971 |
|
9972 |
-
ContentEditableInput.prototype.getSelection = function () {
|
9973 |
-
return this.cm.display.wrapper.ownerDocument.getSelection()
|
9974 |
-
};
|
9975 |
-
|
9976 |
ContentEditableInput.prototype.showPrimarySelection = function () {
|
9977 |
-
var sel =
|
9978 |
var from = prim.from(), to = prim.to();
|
9979 |
|
9980 |
if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {
|
@@ -10041,13 +10027,13 @@ webpackJsonp([2],{
|
|
10041 |
};
|
10042 |
|
10043 |
ContentEditableInput.prototype.rememberSelection = function () {
|
10044 |
-
var sel =
|
10045 |
this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;
|
10046 |
this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;
|
10047 |
};
|
10048 |
|
10049 |
ContentEditableInput.prototype.selectionInEditor = function () {
|
10050 |
-
var sel =
|
10051 |
if (!sel.rangeCount) { return false }
|
10052 |
var node = sel.getRangeAt(0).commonAncestorContainer;
|
10053 |
return contains(this.div, node)
|
@@ -10082,14 +10068,14 @@ webpackJsonp([2],{
|
|
10082 |
};
|
10083 |
|
10084 |
ContentEditableInput.prototype.selectionChanged = function () {
|
10085 |
-
var sel =
|
10086 |
return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||
|
10087 |
sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset
|
10088 |
};
|
10089 |
|
10090 |
ContentEditableInput.prototype.pollSelection = function () {
|
10091 |
if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }
|
10092 |
-
var sel =
|
10093 |
// On Android Chrome (version 56, at least), backspacing into an
|
10094 |
// uneditable block element will put the cursor in that element,
|
10095 |
// and then, because it's not editable, hide the virtual keyboard.
|
@@ -10263,13 +10249,12 @@ webpackJsonp([2],{
|
|
10263 |
function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }
|
10264 |
|
10265 |
function domTextBetween(cm, from, to, fromLine, toLine) {
|
10266 |
-
var text = "", closing = false, lineSep = cm.doc.lineSeparator()
|
10267 |
function recognizeMarker(id) { return function (marker) { return marker.id == id; } }
|
10268 |
function close() {
|
10269 |
if (closing) {
|
10270 |
text += lineSep;
|
10271 |
-
|
10272 |
-
closing = extraLinebreak = false;
|
10273 |
}
|
10274 |
}
|
10275 |
function addText(str) {
|
@@ -10281,8 +10266,8 @@ webpackJsonp([2],{
|
|
10281 |
function walk(node) {
|
10282 |
if (node.nodeType == 1) {
|
10283 |
var cmText = node.getAttribute("cm-text");
|
10284 |
-
if (cmText) {
|
10285 |
-
addText(cmText);
|
10286 |
return
|
10287 |
}
|
10288 |
var markerID = node.getAttribute("cm-marker"), range$$1;
|
@@ -10293,24 +10278,19 @@ webpackJsonp([2],{
|
|
10293 |
return
|
10294 |
}
|
10295 |
if (node.getAttribute("contenteditable") == "false") { return }
|
10296 |
-
var isBlock = /^(pre|div|p
|
10297 |
-
if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }
|
10298 |
-
|
10299 |
if (isBlock) { close(); }
|
10300 |
for (var i = 0; i < node.childNodes.length; i++)
|
10301 |
{ walk(node.childNodes[i]); }
|
10302 |
-
|
10303 |
-
if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }
|
10304 |
if (isBlock) { closing = true; }
|
10305 |
} else if (node.nodeType == 3) {
|
10306 |
-
addText(node.nodeValue
|
10307 |
}
|
10308 |
}
|
10309 |
for (;;) {
|
10310 |
walk(from);
|
10311 |
if (from == to) { break }
|
10312 |
from = from.nextSibling;
|
10313 |
-
extraLinebreak = false;
|
10314 |
}
|
10315 |
return text
|
10316 |
}
|
@@ -10882,7 +10862,7 @@ webpackJsonp([2],{
|
|
10882 |
|
10883 |
addLegacyProps(CodeMirror$1);
|
10884 |
|
10885 |
-
CodeMirror$1.version = "5.
|
10886 |
|
10887 |
return CodeMirror$1;
|
10888 |
|
1938 |
function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }
|
1939 |
function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }
|
1940 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1941 |
// Test whether there exists a collapsed span that partially
|
1942 |
// overlaps (covers the start or end, but not both) of a new span.
|
1943 |
// Such overlap is not allowed.
|
3972 |
var lineObj = getLine(doc, lineN);
|
3973 |
for (;;) {
|
3974 |
var found = coordsCharInner(cm, lineObj, lineN, x, y);
|
3975 |
+
var merged = collapsedSpanAtEnd(lineObj);
|
3976 |
+
var mergedPos = merged && merged.find(0, true);
|
3977 |
+
if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0))
|
3978 |
+
{ lineN = lineNo(lineObj = mergedPos.to.line); }
|
3979 |
+
else
|
3980 |
+
{ return found }
|
3981 |
}
|
3982 |
}
|
3983 |
|
4737 |
this.cm = cm;
|
4738 |
var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar");
|
4739 |
var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar");
|
|
|
4740 |
place(vert); place(horiz);
|
4741 |
|
4742 |
on(vert, "scroll", function () {
|
8680 |
}
|
8681 |
|
8682 |
var move = operation(cm, function (e) {
|
8683 |
+
if (!e_button(e)) { done(e); }
|
8684 |
else { extend(e); }
|
8685 |
});
|
8686 |
var up = operation(cm, done);
|
9959 |
this.showMultipleSelections(info);
|
9960 |
};
|
9961 |
|
|
|
|
|
|
|
|
|
9962 |
ContentEditableInput.prototype.showPrimarySelection = function () {
|
9963 |
+
var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();
|
9964 |
var from = prim.from(), to = prim.to();
|
9965 |
|
9966 |
if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {
|
10027 |
};
|
10028 |
|
10029 |
ContentEditableInput.prototype.rememberSelection = function () {
|
10030 |
+
var sel = window.getSelection();
|
10031 |
this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;
|
10032 |
this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;
|
10033 |
};
|
10034 |
|
10035 |
ContentEditableInput.prototype.selectionInEditor = function () {
|
10036 |
+
var sel = window.getSelection();
|
10037 |
if (!sel.rangeCount) { return false }
|
10038 |
var node = sel.getRangeAt(0).commonAncestorContainer;
|
10039 |
return contains(this.div, node)
|
10068 |
};
|
10069 |
|
10070 |
ContentEditableInput.prototype.selectionChanged = function () {
|
10071 |
+
var sel = window.getSelection();
|
10072 |
return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||
|
10073 |
sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset
|
10074 |
};
|
10075 |
|
10076 |
ContentEditableInput.prototype.pollSelection = function () {
|
10077 |
if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }
|
10078 |
+
var sel = window.getSelection(), cm = this.cm;
|
10079 |
// On Android Chrome (version 56, at least), backspacing into an
|
10080 |
// uneditable block element will put the cursor in that element,
|
10081 |
// and then, because it's not editable, hide the virtual keyboard.
|
10249 |
function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }
|
10250 |
|
10251 |
function domTextBetween(cm, from, to, fromLine, toLine) {
|
10252 |
+
var text = "", closing = false, lineSep = cm.doc.lineSeparator();
|
10253 |
function recognizeMarker(id) { return function (marker) { return marker.id == id; } }
|
10254 |
function close() {
|
10255 |
if (closing) {
|
10256 |
text += lineSep;
|
10257 |
+
closing = false;
|
|
|
10258 |
}
|
10259 |
}
|
10260 |
function addText(str) {
|
10266 |
function walk(node) {
|
10267 |
if (node.nodeType == 1) {
|
10268 |
var cmText = node.getAttribute("cm-text");
|
10269 |
+
if (cmText != null) {
|
10270 |
+
addText(cmText || node.textContent.replace(/\u200b/g, ""));
|
10271 |
return
|
10272 |
}
|
10273 |
var markerID = node.getAttribute("cm-marker"), range$$1;
|
10278 |
return
|
10279 |
}
|
10280 |
if (node.getAttribute("contenteditable") == "false") { return }
|
10281 |
+
var isBlock = /^(pre|div|p)$/i.test(node.nodeName);
|
|
|
|
|
10282 |
if (isBlock) { close(); }
|
10283 |
for (var i = 0; i < node.childNodes.length; i++)
|
10284 |
{ walk(node.childNodes[i]); }
|
|
|
|
|
10285 |
if (isBlock) { closing = true; }
|
10286 |
} else if (node.nodeType == 3) {
|
10287 |
+
addText(node.nodeValue);
|
10288 |
}
|
10289 |
}
|
10290 |
for (;;) {
|
10291 |
walk(from);
|
10292 |
if (from == to) { break }
|
10293 |
from = from.nextSibling;
|
|
|
10294 |
}
|
10295 |
return text
|
10296 |
}
|
10862 |
|
10863 |
addLegacyProps(CodeMirror$1);
|
10864 |
|
10865 |
+
CodeMirror$1.version = "5.37.0";
|
10866 |
|
10867 |
return CodeMirror$1;
|
10868 |
|
assets/js/lib/mailpoet_shortcodes/plugin.js
CHANGED
@@ -8,34 +8,33 @@
|
|
8 |
* its placeholder into editor text.
|
9 |
*/
|
10 |
|
11 |
-
/*
|
12 |
-
/*
|
13 |
-
tinymce.PluginManager.add('mailpoet_shortcodes', function
|
14 |
-
var appendLabelAndClose = function
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
21 |
};
|
22 |
-
};
|
23 |
|
24 |
editor.addButton('mailpoet_shortcodes', {
|
25 |
icon: 'mailpoet_shortcodes',
|
26 |
-
onclick: function
|
27 |
-
var shortcodes = []
|
28 |
-
|
29 |
-
var i;
|
30 |
|
31 |
-
|
32 |
-
if (
|
33 |
shortcodes.push({
|
34 |
type: 'label',
|
35 |
text: segment
|
36 |
});
|
37 |
|
38 |
-
for (i = 0; i < configShortcodes[segment].length; i += 1) {
|
39 |
shortcodes.push({
|
40 |
type: 'button',
|
41 |
text: configShortcodes[segment][i].text,
|
@@ -43,12 +42,12 @@ tinymce.PluginManager.add('mailpoet_shortcodes', function tinyMceAdd(editor) {
|
|
43 |
});
|
44 |
}
|
45 |
}
|
46 |
-
}
|
47 |
|
48 |
// Open window
|
49 |
editor.windowManager.open({
|
50 |
-
height: parseInt(editor.getParam('plugin_mailpoet_shortcodes_height', 400)
|
51 |
-
width: parseInt(editor.getParam('plugin_mailpoet_shortcodes_width', 450)
|
52 |
autoScroll: true,
|
53 |
title: editor.settings.mailpoet_shortcodes_window_title,
|
54 |
body: shortcodes,
|
8 |
* its placeholder into editor text.
|
9 |
*/
|
10 |
|
11 |
+
/*jshint unused:false */
|
12 |
+
/*global tinymce:true */
|
13 |
+
tinymce.PluginManager.add('mailpoet_shortcodes', function(editor, url) {
|
14 |
+
var appendLabelAndClose = function(shortcode) {
|
15 |
+
editor.insertContent(shortcode);
|
16 |
+
editor.windowManager.close();
|
17 |
+
},
|
18 |
+
generateOnClickFunc = function(shortcode) {
|
19 |
+
return function() {
|
20 |
+
appendLabelAndClose(shortcode);
|
21 |
+
};
|
22 |
};
|
|
|
23 |
|
24 |
editor.addButton('mailpoet_shortcodes', {
|
25 |
icon: 'mailpoet_shortcodes',
|
26 |
+
onclick: function() {
|
27 |
+
var shortcodes = [],
|
28 |
+
configShortcodes = editor.settings.mailpoet_shortcodes;
|
|
|
29 |
|
30 |
+
for (var segment in configShortcodes) {
|
31 |
+
if (configShortcodes.hasOwnProperty(segment)) {
|
32 |
shortcodes.push({
|
33 |
type: 'label',
|
34 |
text: segment
|
35 |
});
|
36 |
|
37 |
+
for (var i = 0; i < configShortcodes[segment].length; i += 1) {
|
38 |
shortcodes.push({
|
39 |
type: 'button',
|
40 |
text: configShortcodes[segment][i].text,
|
42 |
});
|
43 |
}
|
44 |
}
|
45 |
+
}
|
46 |
|
47 |
// Open window
|
48 |
editor.windowManager.open({
|
49 |
+
height: parseInt(editor.getParam('plugin_mailpoet_shortcodes_height', 400)),
|
50 |
+
width: parseInt(editor.getParam('plugin_mailpoet_shortcodes_width', 450)),
|
51 |
autoScroll: true,
|
52 |
title: editor.settings.mailpoet_shortcodes_window_title,
|
53 |
body: shortcodes,
|
assets/js/{mailpoet.7070ca4a.js → mailpoet.f26c86e7.js}
RENAMED
@@ -40946,9 +40946,9 @@ webpackJsonp([3],[
|
|
40946 |
var content = void 0;
|
40947 |
if (getContent) {
|
40948 |
if (Array.isArray(getContent)) {
|
40949 |
-
content = getContent[0] && getContent[0](
|
40950 |
} else {
|
40951 |
-
content = getContent(
|
40952 |
}
|
40953 |
}
|
40954 |
|
@@ -43916,7 +43916,7 @@ webpackJsonp([3],[
|
|
43916 |
|
43917 |
var elem = this._tagStack.pop();
|
43918 |
|
43919 |
-
if(this._options.withEndIndices
|
43920 |
elem.endIndex = this._parser.endIndex;
|
43921 |
}
|
43922 |
|
@@ -47274,102 +47274,68 @@ webpackJsonp([3],[
|
|
47274 |
revLookup[code.charCodeAt(i)] = i
|
47275 |
}
|
47276 |
|
47277 |
-
// Support decoding URL-safe base64 strings, as Node.js does.
|
47278 |
-
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
47279 |
revLookup['-'.charCodeAt(0)] = 62
|
47280 |
revLookup['_'.charCodeAt(0)] = 63
|
47281 |
|
47282 |
-
function
|
47283 |
var len = b64.length
|
47284 |
-
|
47285 |
if (len % 4 > 0) {
|
47286 |
throw new Error('Invalid string. Length must be a multiple of 4')
|
47287 |
}
|
47288 |
|
47289 |
-
//
|
47290 |
-
//
|
47291 |
-
|
47292 |
-
if
|
47293 |
-
|
47294 |
-
|
47295 |
-
? 0
|
47296 |
-
: 4 - (validLen % 4)
|
47297 |
-
|
47298 |
-
return [validLen, placeHoldersLen]
|
47299 |
}
|
47300 |
|
47301 |
-
// base64 is 4/3 + up to two characters of the original data
|
47302 |
function byteLength (b64) {
|
47303 |
-
|
47304 |
-
|
47305 |
-
var placeHoldersLen = lens[1]
|
47306 |
-
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
47307 |
-
}
|
47308 |
-
|
47309 |
-
function _byteLength (b64, validLen, placeHoldersLen) {
|
47310 |
-
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
47311 |
}
|
47312 |
|
47313 |
function toByteArray (b64) {
|
47314 |
-
var tmp
|
47315 |
-
var
|
47316 |
-
|
47317 |
-
var placeHoldersLen = lens[1]
|
47318 |
-
|
47319 |
-
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
|
47320 |
|
47321 |
-
|
47322 |
|
47323 |
// if there are placeholders, only get up to the last complete 4 chars
|
47324 |
-
|
47325 |
-
? validLen - 4
|
47326 |
-
: validLen
|
47327 |
|
47328 |
-
|
47329 |
-
tmp =
|
47330 |
-
(revLookup[b64.charCodeAt(i)] << 18) |
|
47331 |
-
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
47332 |
-
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
47333 |
-
revLookup[b64.charCodeAt(i + 3)]
|
47334 |
-
arr[curByte++] = (tmp >> 16) & 0xFF
|
47335 |
-
arr[curByte++] = (tmp >> 8) & 0xFF
|
47336 |
-
arr[curByte++] = tmp & 0xFF
|
47337 |
-
}
|
47338 |
|
47339 |
-
|
47340 |
-
tmp =
|
47341 |
-
|
47342 |
-
|
47343 |
-
arr[
|
47344 |
}
|
47345 |
|
47346 |
-
if (
|
47347 |
-
tmp =
|
47348 |
-
|
47349 |
-
|
47350 |
-
|
47351 |
-
arr[
|
47352 |
-
arr[
|
47353 |
}
|
47354 |
|
47355 |
return arr
|
47356 |
}
|
47357 |
|
47358 |
function tripletToBase64 (num) {
|
47359 |
-
return lookup[num >> 18 & 0x3F] +
|
47360 |
-
lookup[num >> 12 & 0x3F] +
|
47361 |
-
lookup[num >> 6 & 0x3F] +
|
47362 |
-
lookup[num & 0x3F]
|
47363 |
}
|
47364 |
|
47365 |
function encodeChunk (uint8, start, end) {
|
47366 |
var tmp
|
47367 |
var output = []
|
47368 |
for (var i = start; i < end; i += 3) {
|
47369 |
-
tmp =
|
47370 |
-
((uint8[i] << 16) & 0xFF0000) +
|
47371 |
-
((uint8[i + 1] << 8) & 0xFF00) +
|
47372 |
-
(uint8[i + 2] & 0xFF)
|
47373 |
output.push(tripletToBase64(tmp))
|
47374 |
}
|
47375 |
return output.join('')
|
@@ -47379,34 +47345,31 @@ webpackJsonp([3],[
|
|
47379 |
var tmp
|
47380 |
var len = uint8.length
|
47381 |
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
|
|
47382 |
var parts = []
|
47383 |
var maxChunkLength = 16383 // must be multiple of 3
|
47384 |
|
47385 |
// go through the array every three bytes, we'll deal with trailing stuff later
|
47386 |
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
47387 |
-
parts.push(encodeChunk(
|
47388 |
-
uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
|
47389 |
-
))
|
47390 |
}
|
47391 |
|
47392 |
// pad the end with zeros, but make sure to not forget the extra bytes
|
47393 |
if (extraBytes === 1) {
|
47394 |
tmp = uint8[len - 1]
|
47395 |
-
|
47396 |
-
|
47397 |
-
|
47398 |
-
'=='
|
47399 |
-
)
|
47400 |
} else if (extraBytes === 2) {
|
47401 |
-
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
|
47402 |
-
|
47403 |
-
|
47404 |
-
|
47405 |
-
|
47406 |
-
'='
|
47407 |
-
)
|
47408 |
}
|
47409 |
|
|
|
|
|
47410 |
return parts.join('')
|
47411 |
}
|
47412 |
|
@@ -47417,7 +47380,7 @@ webpackJsonp([3],[
|
|
47417 |
|
47418 |
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
|
47419 |
var e, m
|
47420 |
-
var eLen =
|
47421 |
var eMax = (1 << eLen) - 1
|
47422 |
var eBias = eMax >> 1
|
47423 |
var nBits = -7
|
@@ -47430,12 +47393,12 @@ webpackJsonp([3],[
|
|
47430 |
e = s & ((1 << (-nBits)) - 1)
|
47431 |
s >>= (-nBits)
|
47432 |
nBits += eLen
|
47433 |
-
for (; nBits > 0; e =
|
47434 |
|
47435 |
m = e & ((1 << (-nBits)) - 1)
|
47436 |
e >>= (-nBits)
|
47437 |
nBits += mLen
|
47438 |
-
for (; nBits > 0; m =
|
47439 |
|
47440 |
if (e === 0) {
|
47441 |
e = 1 - eBias
|
@@ -47450,7 +47413,7 @@ webpackJsonp([3],[
|
|
47450 |
|
47451 |
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
47452 |
var e, m, c
|
47453 |
-
var eLen =
|
47454 |
var eMax = (1 << eLen) - 1
|
47455 |
var eBias = eMax >> 1
|
47456 |
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
|
@@ -47483,7 +47446,7 @@ webpackJsonp([3],[
|
|
47483 |
m = 0
|
47484 |
e = eMax
|
47485 |
} else if (e + eBias >= 1) {
|
47486 |
-
m = (
|
47487 |
e = e + eBias
|
47488 |
} else {
|
47489 |
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
|
@@ -48744,33 +48707,9 @@ webpackJsonp([3],[
|
|
48744 |
/* 502 */
|
48745 |
/***/ function(module, exports, __webpack_require__) {
|
48746 |
|
48747 |
-
// Copyright Joyent, Inc. and other Node contributors.
|
48748 |
-
//
|
48749 |
-
// Permission is hereby granted, free of charge, to any person obtaining a
|
48750 |
-
// copy of this software and associated documentation files (the
|
48751 |
-
// "Software"), to deal in the Software without restriction, including
|
48752 |
-
// without limitation the rights to use, copy, modify, merge, publish,
|
48753 |
-
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
48754 |
-
// persons to whom the Software is furnished to do so, subject to the
|
48755 |
-
// following conditions:
|
48756 |
-
//
|
48757 |
-
// The above copyright notice and this permission notice shall be included
|
48758 |
-
// in all copies or substantial portions of the Software.
|
48759 |
-
//
|
48760 |
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
48761 |
-
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
48762 |
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
48763 |
-
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
48764 |
-
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
48765 |
-
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
48766 |
-
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
48767 |
-
|
48768 |
'use strict';
|
48769 |
|
48770 |
-
/*<replacement>*/
|
48771 |
-
|
48772 |
var Buffer = __webpack_require__(503).Buffer;
|
48773 |
-
/*</replacement>*/
|
48774 |
|
48775 |
var isEncoding = Buffer.isEncoding || function (encoding) {
|
48776 |
encoding = '' + encoding;
|
@@ -48882,10 +48821,10 @@ webpackJsonp([3],[
|
|
48882 |
};
|
48883 |
|
48884 |
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
|
48885 |
-
// continuation byte.
|
48886 |
function utf8CheckByte(byte) {
|
48887 |
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
|
48888 |
-
return
|
48889 |
}
|
48890 |
|
48891 |
// Checks at most 3 bytes at the end of a Buffer in order to detect an
|
@@ -48899,13 +48838,13 @@ webpackJsonp([3],[
|
|
48899 |
if (nb > 0) self.lastNeed = nb - 1;
|
48900 |
return nb;
|
48901 |
}
|
48902 |
-
if (--j < i
|
48903 |
nb = utf8CheckByte(buf[j]);
|
48904 |
if (nb >= 0) {
|
48905 |
if (nb > 0) self.lastNeed = nb - 2;
|
48906 |
return nb;
|
48907 |
}
|
48908 |
-
if (--j < i
|
48909 |
nb = utf8CheckByte(buf[j]);
|
48910 |
if (nb >= 0) {
|
48911 |
if (nb > 0) {
|
@@ -48919,7 +48858,7 @@ webpackJsonp([3],[
|
|
48919 |
// Validates as many continuation bytes for a multi-byte UTF-8 character as
|
48920 |
// needed or are available. If we see a non-continuation byte where we expect
|
48921 |
// one, we "replace" the validated continuation bytes we've seen so far with
|
48922 |
-
//
|
48923 |
// behavior. The continuation byte check is included three times in the case
|
48924 |
// where all of the continuation bytes for a character exist in the same buffer.
|
48925 |
// It is also done this way as a slight performance increase instead of using a
|
@@ -48927,17 +48866,17 @@ webpackJsonp([3],[
|
|
48927 |
function utf8CheckExtraBytes(self, buf, p) {
|
48928 |
if ((buf[0] & 0xC0) !== 0x80) {
|
48929 |
self.lastNeed = 0;
|
48930 |
-
return '\ufffd';
|
48931 |
}
|
48932 |
if (self.lastNeed > 1 && buf.length > 1) {
|
48933 |
if ((buf[1] & 0xC0) !== 0x80) {
|
48934 |
self.lastNeed = 1;
|
48935 |
-
return '\ufffd';
|
48936 |
}
|
48937 |
if (self.lastNeed > 2 && buf.length > 2) {
|
48938 |
if ((buf[2] & 0xC0) !== 0x80) {
|
48939 |
self.lastNeed = 2;
|
48940 |
-
return '\ufffd';
|
48941 |
}
|
48942 |
}
|
48943 |
}
|
@@ -48968,11 +48907,11 @@ webpackJsonp([3],[
|
|
48968 |
return buf.toString('utf8', i, end);
|
48969 |
}
|
48970 |
|
48971 |
-
// For UTF-8, a replacement character
|
48972 |
-
// character.
|
48973 |
function utf8End(buf) {
|
48974 |
var r = buf && buf.length ? this.write(buf) : '';
|
48975 |
-
if (this.lastNeed) return r + '\ufffd';
|
48976 |
return r;
|
48977 |
}
|
48978 |
|
@@ -49789,14 +49728,18 @@ webpackJsonp([3],[
|
|
49789 |
|
49790 |
function findAll(test, rootElems){
|
49791 |
var result = [];
|
49792 |
-
var stack = rootElems
|
49793 |
while(stack.length){
|
49794 |
-
var
|
49795 |
-
|
49796 |
-
|
49797 |
-
|
|
|
|
|
|
|
|
|
|
|
49798 |
}
|
49799 |
-
if(test(elem)) result.push(elem);
|
49800 |
}
|
49801 |
return result;
|
49802 |
}
|
40946 |
var content = void 0;
|
40947 |
if (getContent) {
|
40948 |
if (Array.isArray(getContent)) {
|
40949 |
+
content = getContent[0] && getContent[0]();
|
40950 |
} else {
|
40951 |
+
content = getContent();
|
40952 |
}
|
40953 |
}
|
40954 |
|
43916 |
|
43917 |
var elem = this._tagStack.pop();
|
43918 |
|
43919 |
+
if(this._options.withEndIndices){
|
43920 |
elem.endIndex = this._parser.endIndex;
|
43921 |
}
|
43922 |
|
47274 |
revLookup[code.charCodeAt(i)] = i
|
47275 |
}
|
47276 |
|
|
|
|
|
47277 |
revLookup['-'.charCodeAt(0)] = 62
|
47278 |
revLookup['_'.charCodeAt(0)] = 63
|
47279 |
|
47280 |
+
function placeHoldersCount (b64) {
|
47281 |
var len = b64.length
|
|
|
47282 |
if (len % 4 > 0) {
|
47283 |
throw new Error('Invalid string. Length must be a multiple of 4')
|
47284 |
}
|
47285 |
|
47286 |
+
// the number of equal signs (place holders)
|
47287 |
+
// if there are two placeholders, than the two characters before it
|
47288 |
+
// represent one byte
|
47289 |
+
// if there is only one, then the three characters before it represent 2 bytes
|
47290 |
+
// this is just a cheap hack to not do indexOf twice
|
47291 |
+
return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
|
|
|
|
|
|
|
|
|
47292 |
}
|
47293 |
|
|
|
47294 |
function byteLength (b64) {
|
47295 |
+
// base64 is 4/3 + up to two characters of the original data
|
47296 |
+
return (b64.length * 3 / 4) - placeHoldersCount(b64)
|
|
|
|
|
|
|
|
|
|
|
|
|
47297 |
}
|
47298 |
|
47299 |
function toByteArray (b64) {
|
47300 |
+
var i, l, tmp, placeHolders, arr
|
47301 |
+
var len = b64.length
|
47302 |
+
placeHolders = placeHoldersCount(b64)
|
|
|
|
|
|
|
47303 |
|
47304 |
+
arr = new Arr((len * 3 / 4) - placeHolders)
|
47305 |
|
47306 |
// if there are placeholders, only get up to the last complete 4 chars
|
47307 |
+
l = placeHolders > 0 ? len - 4 : len
|
|
|
|
|
47308 |
|
47309 |
+
var L = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47310 |
|
47311 |
+
for (i = 0; i < l; i += 4) {
|
47312 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
|
47313 |
+
arr[L++] = (tmp >> 16) & 0xFF
|
47314 |
+
arr[L++] = (tmp >> 8) & 0xFF
|
47315 |
+
arr[L++] = tmp & 0xFF
|
47316 |
}
|
47317 |
|
47318 |
+
if (placeHolders === 2) {
|
47319 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
|
47320 |
+
arr[L++] = tmp & 0xFF
|
47321 |
+
} else if (placeHolders === 1) {
|
47322 |
+
tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
|
47323 |
+
arr[L++] = (tmp >> 8) & 0xFF
|
47324 |
+
arr[L++] = tmp & 0xFF
|
47325 |
}
|
47326 |
|
47327 |
return arr
|
47328 |
}
|
47329 |
|
47330 |
function tripletToBase64 (num) {
|
47331 |
+
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
|
|
|
|
|
|
|
47332 |
}
|
47333 |
|
47334 |
function encodeChunk (uint8, start, end) {
|
47335 |
var tmp
|
47336 |
var output = []
|
47337 |
for (var i = start; i < end; i += 3) {
|
47338 |
+
tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
|
|
|
|
|
|
|
47339 |
output.push(tripletToBase64(tmp))
|
47340 |
}
|
47341 |
return output.join('')
|
47345 |
var tmp
|
47346 |
var len = uint8.length
|
47347 |
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
47348 |
+
var output = ''
|
47349 |
var parts = []
|
47350 |
var maxChunkLength = 16383 // must be multiple of 3
|
47351 |
|
47352 |
// go through the array every three bytes, we'll deal with trailing stuff later
|
47353 |
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
47354 |
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
|
|
|
|
|
47355 |
}
|
47356 |
|
47357 |
// pad the end with zeros, but make sure to not forget the extra bytes
|
47358 |
if (extraBytes === 1) {
|
47359 |
tmp = uint8[len - 1]
|
47360 |
+
output += lookup[tmp >> 2]
|
47361 |
+
output += lookup[(tmp << 4) & 0x3F]
|
47362 |
+
output += '=='
|
|
|
|
|
47363 |
} else if (extraBytes === 2) {
|
47364 |
+
tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
|
47365 |
+
output += lookup[tmp >> 10]
|
47366 |
+
output += lookup[(tmp >> 4) & 0x3F]
|
47367 |
+
output += lookup[(tmp << 2) & 0x3F]
|
47368 |
+
output += '='
|
|
|
|
|
47369 |
}
|
47370 |
|
47371 |
+
parts.push(output)
|
47372 |
+
|
47373 |
return parts.join('')
|
47374 |
}
|
47375 |
|
47380 |
|
47381 |
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
|
47382 |
var e, m
|
47383 |
+
var eLen = nBytes * 8 - mLen - 1
|
47384 |
var eMax = (1 << eLen) - 1
|
47385 |
var eBias = eMax >> 1
|
47386 |
var nBits = -7
|
47393 |
e = s & ((1 << (-nBits)) - 1)
|
47394 |
s >>= (-nBits)
|
47395 |
nBits += eLen
|
47396 |
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
47397 |
|
47398 |
m = e & ((1 << (-nBits)) - 1)
|
47399 |
e >>= (-nBits)
|
47400 |
nBits += mLen
|
47401 |
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
47402 |
|
47403 |
if (e === 0) {
|
47404 |
e = 1 - eBias
|
47413 |
|
47414 |
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
|
47415 |
var e, m, c
|
47416 |
+
var eLen = nBytes * 8 - mLen - 1
|
47417 |
var eMax = (1 << eLen) - 1
|
47418 |
var eBias = eMax >> 1
|
47419 |
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
|
47446 |
m = 0
|
47447 |
e = eMax
|
47448 |
} else if (e + eBias >= 1) {
|
47449 |
+
m = (value * c - 1) * Math.pow(2, mLen)
|
47450 |
e = e + eBias
|
47451 |
} else {
|
47452 |
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
|
48707 |
/* 502 */
|
48708 |
/***/ function(module, exports, __webpack_require__) {
|
48709 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48710 |
'use strict';
|
48711 |
|
|
|
|
|
48712 |
var Buffer = __webpack_require__(503).Buffer;
|
|
|
48713 |
|
48714 |
var isEncoding = Buffer.isEncoding || function (encoding) {
|
48715 |
encoding = '' + encoding;
|
48821 |
};
|
48822 |
|
48823 |
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
|
48824 |
+
// continuation byte.
|
48825 |
function utf8CheckByte(byte) {
|
48826 |
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
|
48827 |
+
return -1;
|
48828 |
}
|
48829 |
|
48830 |
// Checks at most 3 bytes at the end of a Buffer in order to detect an
|
48838 |
if (nb > 0) self.lastNeed = nb - 1;
|
48839 |
return nb;
|
48840 |
}
|
48841 |
+
if (--j < i) return 0;
|
48842 |
nb = utf8CheckByte(buf[j]);
|
48843 |
if (nb >= 0) {
|
48844 |
if (nb > 0) self.lastNeed = nb - 2;
|
48845 |
return nb;
|
48846 |
}
|
48847 |
+
if (--j < i) return 0;
|
48848 |
nb = utf8CheckByte(buf[j]);
|
48849 |
if (nb >= 0) {
|
48850 |
if (nb > 0) {
|
48858 |
// Validates as many continuation bytes for a multi-byte UTF-8 character as
|
48859 |
// needed or are available. If we see a non-continuation byte where we expect
|
48860 |
// one, we "replace" the validated continuation bytes we've seen so far with
|
48861 |
+
// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
|
48862 |
// behavior. The continuation byte check is included three times in the case
|
48863 |
// where all of the continuation bytes for a character exist in the same buffer.
|
48864 |
// It is also done this way as a slight performance increase instead of using a
|
48866 |
function utf8CheckExtraBytes(self, buf, p) {
|
48867 |
if ((buf[0] & 0xC0) !== 0x80) {
|
48868 |
self.lastNeed = 0;
|
48869 |
+
return '\ufffd'.repeat(p);
|
48870 |
}
|
48871 |
if (self.lastNeed > 1 && buf.length > 1) {
|
48872 |
if ((buf[1] & 0xC0) !== 0x80) {
|
48873 |
self.lastNeed = 1;
|
48874 |
+
return '\ufffd'.repeat(p + 1);
|
48875 |
}
|
48876 |
if (self.lastNeed > 2 && buf.length > 2) {
|
48877 |
if ((buf[2] & 0xC0) !== 0x80) {
|
48878 |
self.lastNeed = 2;
|
48879 |
+
return '\ufffd'.repeat(p + 2);
|
48880 |
}
|
48881 |
}
|
48882 |
}
|
48907 |
return buf.toString('utf8', i, end);
|
48908 |
}
|
48909 |
|
48910 |
+
// For UTF-8, a replacement character for each buffered byte of a (partial)
|
48911 |
+
// character needs to be added to the output.
|
48912 |
function utf8End(buf) {
|
48913 |
var r = buf && buf.length ? this.write(buf) : '';
|
48914 |
+
if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
|
48915 |
return r;
|
48916 |
}
|
48917 |
|
49728 |
|
49729 |
function findAll(test, rootElems){
|
49730 |
var result = [];
|
49731 |
+
var stack = [rootElems];
|
49732 |
while(stack.length){
|
49733 |
+
var elems = stack.pop();
|
49734 |
+
for(var i = 0, j = elems.length; i < j; i++){
|
49735 |
+
if(!isTag(elems[i])) continue;
|
49736 |
+
if(test(elems[i])) result.push(elems[i]);
|
49737 |
+
}
|
49738 |
+
while(j-- > 0){
|
49739 |
+
if(elems[j].children && elems[j].children.length > 0){
|
49740 |
+
stack.push(elems[j].children);
|
49741 |
+
}
|
49742 |
}
|
|
|
49743 |
}
|
49744 |
return result;
|
49745 |
}
|
assets/js/manifest.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.b51cde67.js",
|
3 |
"public.js": "public.5a989b2c.js",
|
4 |
-
"admin.js": "admin.
|
5 |
-
"admin_vendor.js": "admin_vendor.
|
6 |
-
"form_editor.js": "form_editor.
|
7 |
-
"mailpoet.js": "mailpoet.
|
8 |
-
"newsletter_editor.js": "newsletter_editor.
|
9 |
-
"vendor.js": "vendor.
|
10 |
}
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.b51cde67.js",
|
3 |
"public.js": "public.5a989b2c.js",
|
4 |
+
"admin.js": "admin.a58c3783.js",
|
5 |
+
"admin_vendor.js": "admin_vendor.016e33b8.js",
|
6 |
+
"form_editor.js": "form_editor.b2d3a84e.js",
|
7 |
+
"mailpoet.js": "mailpoet.f26c86e7.js",
|
8 |
+
"newsletter_editor.js": "newsletter_editor.1d7b4686.js",
|
9 |
+
"vendor.js": "vendor.98a3aa8c.js"
|
10 |
}
|
assets/js/{newsletter_editor.69062a08.js → newsletter_editor.1d7b4686.js}
RENAMED
@@ -1,96 +1,393 @@
|
|
1 |
webpackJsonp([4],{
|
2 |
|
3 |
-
/***/
|
4 |
/***/ function(module, exports, __webpack_require__) {
|
5 |
|
6 |
-
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__
|
7 |
-
'use strict';
|
8 |
-
|
9 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
|
10 |
__webpack_require__(609),
|
|
|
|
|
|
|
11 |
__webpack_require__(598),
|
12 |
__webpack_require__(600),
|
13 |
-
__webpack_require__(281)
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
var Module = {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
h1: {
|
25 |
-
fontColor: '#111111',
|
26 |
-
fontFamily: 'Arial',
|
27 |
-
fontSize: '40px'
|
28 |
-
},
|
29 |
-
h2: {
|
30 |
-
fontColor: '#222222',
|
31 |
-
fontFamily: 'Tahoma',
|
32 |
-
fontSize: '32px'
|
33 |
-
},
|
34 |
-
h3: {
|
35 |
-
fontColor: '#333333',
|
36 |
-
fontFamily: 'Verdana',
|
37 |
-
fontSize: '24px'
|
38 |
-
},
|
39 |
-
link: {
|
40 |
-
fontColor: '#21759B',
|
41 |
-
textDecoration: 'underline'
|
42 |
-
},
|
43 |
-
wrapper: {
|
44 |
-
backgroundColor: '#ffffff'
|
45 |
-
},
|
46 |
-
body: {
|
47 |
-
backgroundColor: '#cccccc'
|
48 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
},
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
});
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
},
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
});
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
return Module._globalStyles;
|
72 |
-
};
|
73 |
-
Module.getAvailableStyles = function () { // eslint-disable-line func-names
|
74 |
-
return App.getConfig().get('availableStyles');
|
75 |
-
};
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
});
|
90 |
|
91 |
-
|
92 |
-
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
});
|
95 |
|
96 |
return Module;
|
@@ -143,7 +440,8 @@ webpackJsonp([4],{
|
|
143 |
__webpack_require__(635);
|
144 |
__webpack_require__(636);
|
145 |
__webpack_require__(637);
|
146 |
-
|
|
|
147 |
|
148 |
|
149 |
/***/ },
|
@@ -35060,406 +35358,109 @@ webpackJsonp([4],{
|
|
35060 |
|
35061 |
/***/ },
|
35062 |
|
35063 |
-
/***/
|
35064 |
-
/***/ function(module, exports) {
|
35065 |
-
|
35066 |
-
module.exports = jQuery;
|
35067 |
-
|
35068 |
-
/***/ },
|
35069 |
-
|
35070 |
-
/***/ 612:
|
35071 |
/***/ function(module, exports, __webpack_require__) {
|
35072 |
|
35073 |
-
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__
|
|
|
|
|
35074 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
|
35075 |
__webpack_require__(609),
|
35076 |
-
__webpack_require__(613),
|
35077 |
-
__webpack_require__(276),
|
35078 |
-
__webpack_require__(568),
|
35079 |
__webpack_require__(598),
|
35080 |
__webpack_require__(600),
|
35081 |
-
__webpack_require__(281)
|
35082 |
-
|
35083 |
-
], __WEBPACK_AMD_DEFINE_RESULT__ = function (
|
35084 |
-
App,
|
35085 |
-
CommunicationComponent,
|
35086 |
-
MailPoet,
|
35087 |
-
Backbone,
|
35088 |
-
Marionette,
|
35089 |
-
SuperModel,
|
35090 |
-
_,
|
35091 |
-
jQuery
|
35092 |
-
) {
|
35093 |
-
'use strict';
|
35094 |
-
|
35095 |
var Module = {};
|
35096 |
-
var SidebarView;
|
35097 |
-
// Widget handlers for use to create new content blocks via drag&drop
|
35098 |
-
Module._contentWidgets = new (Backbone.Collection.extend({
|
35099 |
-
model: SuperModel.extend({
|
35100 |
-
defaults: {
|
35101 |
-
name: '',
|
35102 |
-
priority: 100,
|
35103 |
-
widgetView: undefined
|
35104 |
-
}
|
35105 |
-
}),
|
35106 |
-
comparator: 'priority'
|
35107 |
-
}))();
|
35108 |
-
Module.registerWidget = function (widget) { return Module._contentWidgets.add(widget); };
|
35109 |
-
Module.getWidgets = function () { return Module._contentWidgets; };
|
35110 |
|
35111 |
-
|
35112 |
-
|
35113 |
-
|
35114 |
-
|
35115 |
-
|
35116 |
-
|
35117 |
-
|
35118 |
-
|
35119 |
-
|
35120 |
-
|
35121 |
-
|
35122 |
-
|
35123 |
-
|
35124 |
-
|
35125 |
-
|
35126 |
-
|
35127 |
-
|
35128 |
-
|
35129 |
-
|
35130 |
-
|
35131 |
-
|
35132 |
-
|
35133 |
-
|
35134 |
-
|
35135 |
-
|
35136 |
-
|
35137 |
-
|
35138 |
-
|
35139 |
-
|
35140 |
-
|
35141 |
-
|
35142 |
-
easing: 'easeOut',
|
35143 |
-
complete: function () {
|
35144 |
-
$openRegion.addClass('closed');
|
35145 |
-
}
|
35146 |
-
}
|
35147 |
-
);
|
35148 |
-
|
35149 |
-
if ($openRegion.get(0) !== $targetRegion.get(0)) {
|
35150 |
-
$targetRegion.find('.mailpoet_region_content').velocity(
|
35151 |
-
'slideDown',
|
35152 |
-
{
|
35153 |
-
duration: 250,
|
35154 |
-
easing: 'easeIn',
|
35155 |
-
complete: function () {
|
35156 |
-
$targetRegion.removeClass('closed');
|
35157 |
-
}
|
35158 |
-
}
|
35159 |
-
);
|
35160 |
-
}
|
35161 |
}
|
35162 |
},
|
35163 |
-
initialize: function () {
|
35164 |
-
|
35165 |
-
.on('resize', this.updateHorizontalScroll.bind(this))
|
35166 |
-
.on('scroll', this.updateHorizontalScroll.bind(this));
|
35167 |
-
},
|
35168 |
-
onRender: function () {
|
35169 |
-
this.showChildView('contentRegion', new Module.SidebarWidgetsView(
|
35170 |
-
App.getWidgets()
|
35171 |
-
));
|
35172 |
-
this.showChildView('layoutRegion', new Module.SidebarLayoutWidgetsView(
|
35173 |
-
App.getLayoutWidgets()
|
35174 |
-
));
|
35175 |
-
this.showChildView('stylesRegion', new Module.SidebarStylesView({
|
35176 |
-
model: App.getGlobalStyles(),
|
35177 |
-
availableStyles: App.getAvailableStyles()
|
35178 |
-
}));
|
35179 |
-
this.showChildView('previewRegion', new Module.SidebarPreviewView());
|
35180 |
-
},
|
35181 |
-
updateHorizontalScroll: function () {
|
35182 |
-
// Fixes the sidebar so that on narrower screens the horizontal
|
35183 |
-
// position of the sidebar would be scrollable and not fixed
|
35184 |
-
// partially out of visible screen
|
35185 |
-
this.$el.parent().each(function () {
|
35186 |
-
var calculatedLeft;
|
35187 |
-
var self = jQuery(this);
|
35188 |
-
|
35189 |
-
if (self.css('position') === 'fixed') {
|
35190 |
-
calculatedLeft = self.parent().offset().left - jQuery(window).scrollLeft();
|
35191 |
-
self.css('left', calculatedLeft + 'px');
|
35192 |
-
} else {
|
35193 |
-
self.css('left', '');
|
35194 |
-
}
|
35195 |
-
});
|
35196 |
-
},
|
35197 |
-
onDomRefresh: function () {
|
35198 |
-
this.$el.parent().stick_in_parent({
|
35199 |
-
offset_top: 32
|
35200 |
-
});
|
35201 |
-
this.$el.parent().on('sticky_kit:stick', this.updateHorizontalScroll.bind(this));
|
35202 |
-
this.$el.parent().on('sticky_kit:unstick', this.updateHorizontalScroll.bind(this));
|
35203 |
-
this.$el.parent().on('sticky_kit:bottom', this.updateHorizontalScroll.bind(this));
|
35204 |
-
this.$el.parent().on('sticky_kit:unbottom', this.updateHorizontalScroll.bind(this));
|
35205 |
-
}
|
35206 |
-
});
|
35207 |
-
|
35208 |
-
/**
|
35209 |
-
* Draggable widget collection view
|
35210 |
-
*/
|
35211 |
-
Module.SidebarWidgetsCollectionView = Marionette.CollectionView.extend({
|
35212 |
-
childView: function (item) { return item.get('widgetView'); }
|
35213 |
-
});
|
35214 |
-
|
35215 |
-
/**
|
35216 |
-
* Responsible for rendering draggable content widgets
|
35217 |
-
*/
|
35218 |
-
Module.SidebarWidgetsView = Marionette.View.extend({
|
35219 |
-
getTemplate: function () { return window.templates.sidebarContent; },
|
35220 |
-
regions: {
|
35221 |
-
widgets: '.mailpoet_region_content'
|
35222 |
-
},
|
35223 |
-
|
35224 |
-
initialize: function (widgets) {
|
35225 |
-
this.widgets = widgets;
|
35226 |
-
},
|
35227 |
-
|
35228 |
-
onRender: function () {
|
35229 |
-
this.showChildView('widgets', new Module.SidebarWidgetsCollectionView({
|
35230 |
-
collection: this.widgets
|
35231 |
-
}));
|
35232 |
}
|
35233 |
});
|
35234 |
|
35235 |
-
|
35236 |
-
|
35237 |
-
|
35238 |
-
|
35239 |
-
getTemplate: function () { return window.templates.sidebarLayout; }
|
35240 |
-
});
|
35241 |
-
|
35242 |
-
/**
|
35243 |
-
* Responsible for managing global styles
|
35244 |
-
*/
|
35245 |
-
Module.SidebarStylesView = Marionette.View.extend({
|
35246 |
-
getTemplate: function () { return window.templates.sidebarStyles; },
|
35247 |
-
behaviors: {
|
35248 |
-
ColorPickerBehavior: {}
|
35249 |
-
},
|
35250 |
-
events: function () {
|
35251 |
-
return {
|
35252 |
-
'change #mailpoet_text_font_color': _.partial(this.changeColorField, 'text.fontColor'),
|
35253 |
-
'change #mailpoet_text_font_family': function (event) {
|
35254 |
-
this.model.set('text.fontFamily', event.target.value);
|
35255 |
-
},
|
35256 |
-
'change #mailpoet_text_font_size': function (event) {
|
35257 |
-
this.model.set('text.fontSize', event.target.value);
|
35258 |
-
},
|
35259 |
-
'change #mailpoet_h1_font_color': _.partial(this.changeColorField, 'h1.fontColor'),
|
35260 |
-
'change #mailpoet_h1_font_family': function (event) {
|
35261 |
-
this.model.set('h1.fontFamily', event.target.value);
|
35262 |
-
},
|
35263 |
-
'change #mailpoet_h1_font_size': function (event) {
|
35264 |
-
this.model.set('h1.fontSize', event.target.value);
|
35265 |
-
},
|
35266 |
-
'change #mailpoet_h2_font_color': _.partial(this.changeColorField, 'h2.fontColor'),
|
35267 |
-
'change #mailpoet_h2_font_family': function (event) {
|
35268 |
-
this.model.set('h2.fontFamily', event.target.value);
|
35269 |
-
},
|
35270 |
-
'change #mailpoet_h2_font_size': function (event) {
|
35271 |
-
this.model.set('h2.fontSize', event.target.value);
|
35272 |
-
},
|
35273 |
-
'change #mailpoet_h3_font_color': _.partial(this.changeColorField, 'h3.fontColor'),
|
35274 |
-
'change #mailpoet_h3_font_family': function (event) {
|
35275 |
-
this.model.set('h3.fontFamily', event.target.value);
|
35276 |
-
},
|
35277 |
-
'change #mailpoet_h3_font_size': function (event) {
|
35278 |
-
this.model.set('h3.fontSize', event.target.value);
|
35279 |
-
},
|
35280 |
-
'change #mailpoet_a_font_color': _.partial(this.changeColorField, 'link.fontColor'),
|
35281 |
-
'change #mailpoet_a_font_underline': function (event) {
|
35282 |
-
this.model.set('link.textDecoration', (event.target.checked) ? event.target.value : 'none');
|
35283 |
-
},
|
35284 |
-
'change #mailpoet_newsletter_background_color': _.partial(this.changeColorField, 'wrapper.backgroundColor'),
|
35285 |
-
'change #mailpoet_background_color': _.partial(this.changeColorField, 'body.backgroundColor')
|
35286 |
-
};
|
35287 |
-
},
|
35288 |
-
templateContext: function () {
|
35289 |
-
return {
|
35290 |
-
model: this.model.toJSON(),
|
35291 |
-
availableStyles: this.availableStyles.toJSON()
|
35292 |
-
};
|
35293 |
-
},
|
35294 |
-
initialize: function (options) {
|
35295 |
-
this.availableStyles = options.availableStyles;
|
35296 |
-
},
|
35297 |
-
changeField: function (field, event) {
|
35298 |
-
this.model.set(field, jQuery(event.target).val());
|
35299 |
},
|
35300 |
-
|
35301 |
-
|
35302 |
-
if (value === '') {
|
35303 |
-
value = 'transparent';
|
35304 |
-
}
|
35305 |
-
this.model.set(field, value);
|
35306 |
}
|
35307 |
});
|
35308 |
|
35309 |
-
Module.
|
35310 |
-
|
35311 |
-
|
35312 |
-
|
35313 |
-
|
35314 |
-
|
35315 |
-
|
35316 |
-
|
35317 |
-
|
35318 |
-
|
35319 |
-
|
35320 |
-
},
|
35321 |
-
showPreview: function () {
|
35322 |
-
var json = App.toJSON();
|
35323 |
-
|
35324 |
-
// Stringify to enable transmission of primitive non-string value types
|
35325 |
-
if (!_.isUndefined(json.body)) {
|
35326 |
-
json.body = JSON.stringify(json.body);
|
35327 |
-
}
|
35328 |
-
|
35329 |
-
MailPoet.Modal.loading(true);
|
35330 |
-
|
35331 |
-
MailPoet.Ajax.post({
|
35332 |
-
api_version: window.mailpoet_api_version,
|
35333 |
-
endpoint: 'newsletters',
|
35334 |
-
action: 'showPreview',
|
35335 |
-
data: json
|
35336 |
-
}).always(function () {
|
35337 |
-
MailPoet.Modal.loading(false);
|
35338 |
-
}).done(function (response) {
|
35339 |
-
this.previewView = new Module.NewsletterPreviewView({
|
35340 |
-
previewUrl: response.meta.preview_url
|
35341 |
-
});
|
35342 |
-
|
35343 |
-
this.previewView.render();
|
35344 |
-
this.previewView.$el.css('height', '100%');
|
35345 |
-
|
35346 |
-
MailPoet.Modal.popup({
|
35347 |
-
template: '',
|
35348 |
-
element: this.previewView.$el,
|
35349 |
-
width: '95%',
|
35350 |
-
height: '94%',
|
35351 |
-
title: MailPoet.I18n.t('newsletterPreview'),
|
35352 |
-
onCancel: function () {
|
35353 |
-
this.previewView.destroy();
|
35354 |
-
this.previewView = null;
|
35355 |
-
}.bind(this)
|
35356 |
-
});
|
35357 |
-
|
35358 |
-
MailPoet.trackEvent('Editor > Browser Preview', {
|
35359 |
-
'MailPoet Free version': window.mailpoet_version
|
35360 |
-
});
|
35361 |
-
}.bind(this)).fail(function (response) {
|
35362 |
-
if (response.errors.length > 0) {
|
35363 |
-
MailPoet.Notice.error(
|
35364 |
-
response.errors.map(function (error) { return error.message; }),
|
35365 |
-
{ scroll: true }
|
35366 |
-
);
|
35367 |
-
}
|
35368 |
-
});
|
35369 |
-
},
|
35370 |
-
sendPreview: function () {
|
35371 |
-
// get form data
|
35372 |
-
var $emailField = this.$('#mailpoet_preview_to_email');
|
35373 |
-
var data = {
|
35374 |
-
subscriber: $emailField.val(),
|
35375 |
-
id: App.getNewsletter().get('id')
|
35376 |
-
};
|
35377 |
-
|
35378 |
-
if (data.subscriber.length <= 0) {
|
35379 |
-
MailPoet.Notice.error(
|
35380 |
-
MailPoet.I18n.t('newsletterPreviewEmailMissing'),
|
35381 |
-
{
|
35382 |
-
positionAfter: $emailField,
|
35383 |
-
scroll: true
|
35384 |
-
}
|
35385 |
-
);
|
35386 |
-
return false;
|
35387 |
-
}
|
35388 |
-
|
35389 |
-
// send test email
|
35390 |
-
MailPoet.Modal.loading(true);
|
35391 |
|
35392 |
-
|
35393 |
-
|
35394 |
-
|
35395 |
-
|
35396 |
-
|
35397 |
-
|
35398 |
-
|
35399 |
-
|
35400 |
-
);
|
35401 |
-
MailPoet.trackEvent('Editor > Preview sent', {
|
35402 |
-
'MailPoet Free version': window.mailpoet_version,
|
35403 |
-
'Domain name': data.subscriber.substring(data.subscriber.indexOf('@') + 1)
|
35404 |
-
});
|
35405 |
-
}).fail(function (response) {
|
35406 |
-
if (response.errors.length > 0) {
|
35407 |
-
MailPoet.Notice.error(
|
35408 |
-
response.errors.map(function (error) { return error.message; }),
|
35409 |
-
{ scroll: true, static: true }
|
35410 |
-
);
|
35411 |
-
}
|
35412 |
-
});
|
35413 |
-
});
|
35414 |
-
return undefined;
|
35415 |
-
}
|
35416 |
-
});
|
35417 |
|
35418 |
-
|
35419 |
-
|
35420 |
-
|
35421 |
-
this.previewUrl = options.previewUrl;
|
35422 |
-
this.width = '100%';
|
35423 |
-
this.height = '100%';
|
35424 |
-
// this.width = App.getConfig().get('newsletterPreview.width');
|
35425 |
-
// this.height = App.getConfig().get('newsletterPreview.height')
|
35426 |
-
},
|
35427 |
-
templateContext: function () {
|
35428 |
-
return {
|
35429 |
-
previewUrl: this.previewUrl,
|
35430 |
-
width: this.width,
|
35431 |
-
height: this.height
|
35432 |
-
};
|
35433 |
-
}
|
35434 |
});
|
35435 |
|
35436 |
-
App.on('
|
35437 |
-
var
|
35438 |
-
|
35439 |
-
Application.getWidgets = Module.getWidgets;
|
35440 |
-
Application.registerLayoutWidget = Module.registerLayoutWidget;
|
35441 |
-
Application.getLayoutWidgets = Module.getLayoutWidgets;
|
35442 |
});
|
35443 |
|
35444 |
-
|
35445 |
-
|
35446 |
-
|
35447 |
-
StartApp._appView.showChildView('sidebarRegion', sidebarView);
|
35448 |
|
35449 |
-
MailPoet.helpTooltip.show(document.getElementById('tooltip-send-preview'), {
|
35450 |
-
tooltipId: 'tooltip-editor-send-preview',
|
35451 |
-
tooltip: MailPoet.I18n.t('helpTooltipSendPreview')
|
35452 |
-
});
|
35453 |
|
35454 |
-
|
35455 |
-
tooltipId: 'tooltip-editor-designer-styles',
|
35456 |
-
tooltip: MailPoet.I18n.t('helpTooltipDesignerStyles')
|
35457 |
-
});
|
35458 |
-
});
|
35459 |
|
35460 |
-
|
35461 |
-
|
35462 |
|
|
|
35463 |
|
35464 |
/***/ },
|
35465 |
|
@@ -36002,7 +36003,8 @@ webpackJsonp([4],{
|
|
36002 |
}
|
36003 |
|
36004 |
if ((App.getNewsletter().get('type') === 'notification') &&
|
36005 |
-
contents.indexOf('"type":"automatedLatestContent"') < 0
|
|
|
36006 |
) {
|
36007 |
this.showValidationError(MailPoet.I18n.t('automatedLatestContentMissing'));
|
36008 |
return;
|
@@ -37548,7 +37550,7 @@ webpackJsonp([4],{
|
|
37548 |
},
|
37549 |
parse: function (response) {
|
37550 |
// If container has any blocks - add them to a collection
|
37551 |
-
if (response.type === 'container' && _.has(response, 'blocks')) {
|
37552 |
response.blocks = new BlockCollection(response.blocks, {
|
37553 |
parse: true
|
37554 |
});
|
@@ -39200,6 +39202,7 @@ webpackJsonp([4],{
|
|
39200 |
defaults: function () {
|
39201 |
return this._getDefaults({
|
39202 |
type: 'automatedLatestContent',
|
|
|
39203 |
amount: '5',
|
39204 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
39205 |
terms: [], // List of category and tag objects
|
@@ -39511,18 +39514,419 @@ webpackJsonp([4],{
|
|
39511 |
blockModel: Module.AutomatedLatestContentBlockModel,
|
39512 |
blockView: Module.AutomatedLatestContentBlockView
|
39513 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39514 |
|
39515 |
BeforeStartApp.registerWidget({
|
39516 |
-
name: '
|
39517 |
-
widgetView: Module.
|
39518 |
priority: 97
|
39519 |
});
|
39520 |
});
|
39521 |
|
39522 |
App.on('start', function (StartApp) {
|
39523 |
var Application = StartApp;
|
39524 |
-
Application.
|
39525 |
-
Application.
|
39526 |
});
|
39527 |
|
39528 |
return Module;
|
@@ -39531,7 +39935,7 @@ webpackJsonp([4],{
|
|
39531 |
|
39532 |
/***/ },
|
39533 |
|
39534 |
-
/***/
|
39535 |
/***/ function(module, exports, __webpack_require__) {
|
39536 |
|
39537 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
@@ -39588,6 +39992,7 @@ webpackJsonp([4],{
|
|
39588 |
defaults: function () {
|
39589 |
return this._getDefaults({
|
39590 |
type: 'posts',
|
|
|
39591 |
amount: '10',
|
39592 |
offset: 0,
|
39593 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
@@ -39600,7 +40005,7 @@ webpackJsonp([4],{
|
|
39600 |
titleAlignment: 'left', // 'left'|'center'|'right'
|
39601 |
titleIsLink: false, // false|true
|
39602 |
imageFullWidth: false, // true|false
|
39603 |
-
featuredImagePosition: '
|
39604 |
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
39605 |
authorPrecededBy: 'Author:',
|
39606 |
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
@@ -39714,7 +40119,7 @@ webpackJsonp([4],{
|
|
39714 |
if (data.posts.length === 0) return;
|
39715 |
|
39716 |
CommunicationComponent.getTransformedPosts(data).done(function (posts) {
|
39717 |
-
collection.add(posts, { at: index });
|
39718 |
}).fail(function () {
|
39719 |
MailPoet.Notice.error(MailPoet.I18n.t('failedToFetchRenderedPosts'));
|
39720 |
});
|
@@ -39726,7 +40131,7 @@ webpackJsonp([4],{
|
|
39726 |
getTemplate: function () { return window.templates.postsBlock; },
|
39727 |
modelEvents: {}, // Forcefully disable all events
|
39728 |
regions: _.extend({
|
39729 |
-
postsRegion: '.
|
39730 |
}, base.BlockView.prototype.regions),
|
39731 |
onDragSubstituteBy: function () { return Module.PostsWidgetView; },
|
39732 |
initialize: function () {
|
@@ -40119,6 +40524,7 @@ webpackJsonp([4],{
|
|
40119 |
});
|
40120 |
|
40121 |
Module.PostsWidgetView = base.WidgetView.extend({
|
|
|
40122 |
getTemplate: function () { return window.templates.postsInsertion; },
|
40123 |
behaviors: {
|
40124 |
DraggableBehavior: {
|
@@ -40149,7 +40555,7 @@ webpackJsonp([4],{
|
|
40149 |
|
40150 |
/***/ },
|
40151 |
|
40152 |
-
/***/
|
40153 |
/***/ function(module, exports, __webpack_require__) {
|
40154 |
|
40155 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
1 |
webpackJsonp([4],{
|
2 |
|
3 |
+
/***/ 612:
|
4 |
/***/ function(module, exports, __webpack_require__) {
|
5 |
|
6 |
+
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
|
|
|
|
7 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
|
8 |
__webpack_require__(609),
|
9 |
+
__webpack_require__(613),
|
10 |
+
__webpack_require__(276),
|
11 |
+
__webpack_require__(568),
|
12 |
__webpack_require__(598),
|
13 |
__webpack_require__(600),
|
14 |
+
__webpack_require__(281),
|
15 |
+
__webpack_require__(275)
|
16 |
+
], __WEBPACK_AMD_DEFINE_RESULT__ = function (
|
17 |
+
App,
|
18 |
+
CommunicationComponent,
|
19 |
+
MailPoet,
|
20 |
+
Backbone,
|
21 |
+
Marionette,
|
22 |
+
SuperModel,
|
23 |
+
_,
|
24 |
+
jQuery
|
25 |
+
) {
|
26 |
+
'use strict';
|
27 |
+
|
28 |
var Module = {};
|
29 |
+
var SidebarView;
|
30 |
+
// Widget handlers for use to create new content blocks via drag&drop
|
31 |
+
Module._contentWidgets = new (Backbone.Collection.extend({
|
32 |
+
model: SuperModel.extend({
|
33 |
+
defaults: {
|
34 |
+
name: '',
|
35 |
+
priority: 100,
|
36 |
+
widgetView: undefined
|
37 |
+
}
|
38 |
+
}),
|
39 |
+
comparator: 'priority'
|
40 |
+
}))();
|
41 |
+
Module.registerWidget = function (widget) { return Module._contentWidgets.add(widget); };
|
42 |
+
Module.getWidgets = function () { return Module._contentWidgets; };
|
43 |
|
44 |
+
// Layout widget handlers for use to create new layout blocks via drag&drop
|
45 |
+
Module._layoutWidgets = new (Backbone.Collection.extend({
|
46 |
+
model: SuperModel.extend({
|
47 |
+
defaults: {
|
48 |
+
name: '',
|
49 |
+
priority: 100,
|
50 |
+
widgetView: undefined
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
52 |
+
}),
|
53 |
+
comparator: 'priority'
|
54 |
+
}))();
|
55 |
+
Module.registerLayoutWidget = function (widget) { return Module._layoutWidgets.add(widget); };
|
56 |
+
Module.getLayoutWidgets = function () { return Module._layoutWidgets; };
|
57 |
+
|
58 |
+
SidebarView = Marionette.View.extend({
|
59 |
+
getTemplate: function () { return window.templates.sidebar; },
|
60 |
+
regions: {
|
61 |
+
contentRegion: '.mailpoet_content_region',
|
62 |
+
layoutRegion: '.mailpoet_layout_region',
|
63 |
+
stylesRegion: '.mailpoet_styles_region',
|
64 |
+
previewRegion: '.mailpoet_preview_region'
|
65 |
},
|
66 |
+
events: {
|
67 |
+
'click .mailpoet_sidebar_region h3, .mailpoet_sidebar_region .handlediv': function (event) {
|
68 |
+
var $openRegion = this.$el.find('.mailpoet_sidebar_region:not(.closed)');
|
69 |
+
var $targetRegion = this.$el.find(event.target).closest('.mailpoet_sidebar_region');
|
70 |
+
|
71 |
+
$openRegion.find('.mailpoet_region_content').velocity(
|
72 |
+
'slideUp',
|
73 |
+
{
|
74 |
+
duration: 250,
|
75 |
+
easing: 'easeOut',
|
76 |
+
complete: function () {
|
77 |
+
$openRegion.addClass('closed');
|
78 |
+
}
|
79 |
+
}
|
80 |
+
);
|
81 |
+
|
82 |
+
if ($openRegion.get(0) !== $targetRegion.get(0)) {
|
83 |
+
$targetRegion.find('.mailpoet_region_content').velocity(
|
84 |
+
'slideDown',
|
85 |
+
{
|
86 |
+
duration: 250,
|
87 |
+
easing: 'easeIn',
|
88 |
+
complete: function () {
|
89 |
+
$targetRegion.removeClass('closed');
|
90 |
+
}
|
91 |
+
}
|
92 |
+
);
|
93 |
+
}
|
94 |
+
}
|
95 |
+
},
|
96 |
+
initialize: function () {
|
97 |
+
jQuery(window)
|
98 |
+
.on('resize', this.updateHorizontalScroll.bind(this))
|
99 |
+
.on('scroll', this.updateHorizontalScroll.bind(this));
|
100 |
+
},
|
101 |
+
onRender: function () {
|
102 |
+
this.showChildView('contentRegion', new Module.SidebarWidgetsView(
|
103 |
+
App.getWidgets()
|
104 |
+
));
|
105 |
+
this.showChildView('layoutRegion', new Module.SidebarLayoutWidgetsView(
|
106 |
+
App.getLayoutWidgets()
|
107 |
+
));
|
108 |
+
this.showChildView('stylesRegion', new Module.SidebarStylesView({
|
109 |
+
model: App.getGlobalStyles(),
|
110 |
+
availableStyles: App.getAvailableStyles()
|
111 |
+
}));
|
112 |
+
this.showChildView('previewRegion', new Module.SidebarPreviewView());
|
113 |
+
},
|
114 |
+
updateHorizontalScroll: function () {
|
115 |
+
// Fixes the sidebar so that on narrower screens the horizontal
|
116 |
+
// position of the sidebar would be scrollable and not fixed
|
117 |
+
// partially out of visible screen
|
118 |
+
this.$el.parent().each(function () {
|
119 |
+
var calculatedLeft;
|
120 |
+
var self = jQuery(this);
|
121 |
+
|
122 |
+
if (self.css('position') === 'fixed') {
|
123 |
+
calculatedLeft = self.parent().offset().left - jQuery(window).scrollLeft();
|
124 |
+
self.css('left', calculatedLeft + 'px');
|
125 |
+
} else {
|
126 |
+
self.css('left', '');
|
127 |
+
}
|
128 |
+
});
|
129 |
+
},
|
130 |
+
onDomRefresh: function () {
|
131 |
+
this.$el.parent().stick_in_parent({
|
132 |
+
offset_top: 32
|
133 |
+
});
|
134 |
+
this.$el.parent().on('sticky_kit:stick', this.updateHorizontalScroll.bind(this));
|
135 |
+
this.$el.parent().on('sticky_kit:unstick', this.updateHorizontalScroll.bind(this));
|
136 |
+
this.$el.parent().on('sticky_kit:bottom', this.updateHorizontalScroll.bind(this));
|
137 |
+
this.$el.parent().on('sticky_kit:unbottom', this.updateHorizontalScroll.bind(this));
|
138 |
}
|
139 |
});
|
140 |
|
141 |
+
/**
|
142 |
+
* Draggable widget collection view
|
143 |
+
*/
|
144 |
+
Module.SidebarWidgetsCollectionView = Marionette.CollectionView.extend({
|
145 |
+
childView: function (item) { return item.get('widgetView'); }
|
146 |
+
});
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Responsible for rendering draggable content widgets
|
150 |
+
*/
|
151 |
+
Module.SidebarWidgetsView = Marionette.View.extend({
|
152 |
+
getTemplate: function () { return window.templates.sidebarContent; },
|
153 |
+
regions: {
|
154 |
+
widgets: '.mailpoet_region_content'
|
155 |
},
|
156 |
+
|
157 |
+
initialize: function (widgets) {
|
158 |
+
this.widgets = widgets;
|
159 |
+
},
|
160 |
+
|
161 |
+
onRender: function () {
|
162 |
+
this.showChildView('widgets', new Module.SidebarWidgetsCollectionView({
|
163 |
+
collection: this.widgets
|
164 |
+
}));
|
165 |
}
|
166 |
});
|
167 |
|
168 |
+
/**
|
169 |
+
* Responsible for rendering draggable layout widgets
|
170 |
+
*/
|
171 |
+
Module.SidebarLayoutWidgetsView = Module.SidebarWidgetsView.extend({
|
172 |
+
getTemplate: function () { return window.templates.sidebarLayout; }
|
173 |
+
});
|
|
|
|
|
|
|
|
|
|
|
174 |
|
175 |
+
/**
|
176 |
+
* Responsible for managing global styles
|
177 |
+
*/
|
178 |
+
Module.SidebarStylesView = Marionette.View.extend({
|
179 |
+
getTemplate: function () { return window.templates.sidebarStyles; },
|
180 |
+
behaviors: {
|
181 |
+
ColorPickerBehavior: {}
|
182 |
+
},
|
183 |
+
events: function () {
|
184 |
+
return {
|
185 |
+
'change #mailpoet_text_font_color': _.partial(this.changeColorField, 'text.fontColor'),
|
186 |
+
'change #mailpoet_text_font_family': function (event) {
|
187 |
+
this.model.set('text.fontFamily', event.target.value);
|
188 |
+
},
|
189 |
+
'change #mailpoet_text_font_size': function (event) {
|
190 |
+
this.model.set('text.fontSize', event.target.value);
|
191 |
+
},
|
192 |
+
'change #mailpoet_h1_font_color': _.partial(this.changeColorField, 'h1.fontColor'),
|
193 |
+
'change #mailpoet_h1_font_family': function (event) {
|
194 |
+
this.model.set('h1.fontFamily', event.target.value);
|
195 |
+
},
|
196 |
+
'change #mailpoet_h1_font_size': function (event) {
|
197 |
+
this.model.set('h1.fontSize', event.target.value);
|
198 |
+
},
|
199 |
+
'change #mailpoet_h2_font_color': _.partial(this.changeColorField, 'h2.fontColor'),
|
200 |
+
'change #mailpoet_h2_font_family': function (event) {
|
201 |
+
this.model.set('h2.fontFamily', event.target.value);
|
202 |
+
},
|
203 |
+
'change #mailpoet_h2_font_size': function (event) {
|
204 |
+
this.model.set('h2.fontSize', event.target.value);
|
205 |
+
},
|
206 |
+
'change #mailpoet_h3_font_color': _.partial(this.changeColorField, 'h3.fontColor'),
|
207 |
+
'change #mailpoet_h3_font_family': function (event) {
|
208 |
+
this.model.set('h3.fontFamily', event.target.value);
|
209 |
+
},
|
210 |
+
'change #mailpoet_h3_font_size': function (event) {
|
211 |
+
this.model.set('h3.fontSize', event.target.value);
|
212 |
+
},
|
213 |
+
'change #mailpoet_a_font_color': _.partial(this.changeColorField, 'link.fontColor'),
|
214 |
+
'change #mailpoet_a_font_underline': function (event) {
|
215 |
+
this.model.set('link.textDecoration', (event.target.checked) ? event.target.value : 'none');
|
216 |
+
},
|
217 |
+
'change #mailpoet_newsletter_background_color': _.partial(this.changeColorField, 'wrapper.backgroundColor'),
|
218 |
+
'change #mailpoet_background_color': _.partial(this.changeColorField, 'body.backgroundColor')
|
219 |
+
};
|
220 |
+
},
|
221 |
+
templateContext: function () {
|
222 |
+
return {
|
223 |
+
model: this.model.toJSON(),
|
224 |
+
availableStyles: this.availableStyles.toJSON()
|
225 |
+
};
|
226 |
+
},
|
227 |
+
initialize: function (options) {
|
228 |
+
this.availableStyles = options.availableStyles;
|
229 |
+
},
|
230 |
+
changeField: function (field, event) {
|
231 |
+
this.model.set(field, jQuery(event.target).val());
|
232 |
+
},
|
233 |
+
changeColorField: function (field, event) {
|
234 |
+
var value = jQuery(event.target).val();
|
235 |
+
if (value === '') {
|
236 |
+
value = 'transparent';
|
237 |
+
}
|
238 |
+
this.model.set(field, value);
|
239 |
+
}
|
240 |
+
});
|
241 |
|
242 |
+
Module.SidebarPreviewView = Marionette.View.extend({
|
243 |
+
getTemplate: function () { return window.templates.sidebarPreview; },
|
244 |
+
events: {
|
245 |
+
'click .mailpoet_show_preview': 'showPreview',
|
246 |
+
'click #mailpoet_send_preview': 'sendPreview'
|
247 |
+
},
|
248 |
+
onBeforeDestroy: function () {
|
249 |
+
if (this.previewView) {
|
250 |
+
this.previewView.destroy();
|
251 |
+
this.previewView = null;
|
252 |
+
}
|
253 |
+
},
|
254 |
+
showPreview: function () {
|
255 |
+
var json = App.toJSON();
|
256 |
+
|
257 |
+
// Stringify to enable transmission of primitive non-string value types
|
258 |
+
if (!_.isUndefined(json.body)) {
|
259 |
+
json.body = JSON.stringify(json.body);
|
260 |
+
}
|
261 |
+
|
262 |
+
MailPoet.Modal.loading(true);
|
263 |
+
|
264 |
+
MailPoet.Ajax.post({
|
265 |
+
api_version: window.mailpoet_api_version,
|
266 |
+
endpoint: 'newsletters',
|
267 |
+
action: 'showPreview',
|
268 |
+
data: json
|
269 |
+
}).always(function () {
|
270 |
+
MailPoet.Modal.loading(false);
|
271 |
+
}).done(function (response) {
|
272 |
+
this.previewView = new Module.NewsletterPreviewView({
|
273 |
+
previewUrl: response.meta.preview_url
|
274 |
+
});
|
275 |
+
|
276 |
+
this.previewView.render();
|
277 |
+
this.previewView.$el.css('height', '100%');
|
278 |
+
|
279 |
+
MailPoet.Modal.popup({
|
280 |
+
template: '',
|
281 |
+
element: this.previewView.$el,
|
282 |
+
width: '95%',
|
283 |
+
height: '94%',
|
284 |
+
title: MailPoet.I18n.t('newsletterPreview'),
|
285 |
+
onCancel: function () {
|
286 |
+
this.previewView.destroy();
|
287 |
+
this.previewView = null;
|
288 |
+
}.bind(this)
|
289 |
+
});
|
290 |
+
|
291 |
+
MailPoet.trackEvent('Editor > Browser Preview', {
|
292 |
+
'MailPoet Free version': window.mailpoet_version
|
293 |
+
});
|
294 |
+
}.bind(this)).fail(function (response) {
|
295 |
+
if (response.errors.length > 0) {
|
296 |
+
MailPoet.Notice.error(
|
297 |
+
response.errors.map(function (error) { return error.message; }),
|
298 |
+
{ scroll: true }
|
299 |
+
);
|
300 |
+
}
|
301 |
+
});
|
302 |
+
},
|
303 |
+
sendPreview: function () {
|
304 |
+
// get form data
|
305 |
+
var $emailField = this.$('#mailpoet_preview_to_email');
|
306 |
+
var data = {
|
307 |
+
subscriber: $emailField.val(),
|
308 |
+
id: App.getNewsletter().get('id')
|
309 |
+
};
|
310 |
+
|
311 |
+
if (data.subscriber.length <= 0) {
|
312 |
+
MailPoet.Notice.error(
|
313 |
+
MailPoet.I18n.t('newsletterPreviewEmailMissing'),
|
314 |
+
{
|
315 |
+
positionAfter: $emailField,
|
316 |
+
scroll: true
|
317 |
+
}
|
318 |
+
);
|
319 |
+
return false;
|
320 |
+
}
|
321 |
+
|
322 |
+
// send test email
|
323 |
+
MailPoet.Modal.loading(true);
|
324 |
+
|
325 |
+
// save before sending
|
326 |
+
App.getChannel().request('save').always(function () {
|
327 |
+
CommunicationComponent.previewNewsletter(data).always(function () {
|
328 |
+
MailPoet.Modal.loading(false);
|
329 |
+
}).done(function () {
|
330 |
+
MailPoet.Notice.success(
|
331 |
+
MailPoet.I18n.t('newsletterPreviewSent'),
|
332 |
+
{ scroll: true }
|
333 |
+
);
|
334 |
+
MailPoet.trackEvent('Editor > Preview sent', {
|
335 |
+
'MailPoet Free version': window.mailpoet_version,
|
336 |
+
'Domain name': data.subscriber.substring(data.subscriber.indexOf('@') + 1)
|
337 |
+
});
|
338 |
+
}).fail(function (response) {
|
339 |
+
if (response.errors.length > 0) {
|
340 |
+
MailPoet.Notice.error(
|
341 |
+
response.errors.map(function (error) { return error.message; }),
|
342 |
+
{ scroll: true, static: true }
|
343 |
+
);
|
344 |
+
}
|
345 |
+
});
|
346 |
+
});
|
347 |
+
return undefined;
|
348 |
+
}
|
349 |
});
|
350 |
|
351 |
+
Module.NewsletterPreviewView = Marionette.View.extend({
|
352 |
+
getTemplate: function () { return window.templates.newsletterPreview; },
|
353 |
+
initialize: function (options) {
|
354 |
+
this.previewUrl = options.previewUrl;
|
355 |
+
this.width = '100%';
|
356 |
+
this.height = '100%';
|
357 |
+
// this.width = App.getConfig().get('newsletterPreview.width');
|
358 |
+
// this.height = App.getConfig().get('newsletterPreview.height')
|
359 |
+
},
|
360 |
+
templateContext: function () {
|
361 |
+
return {
|
362 |
+
previewUrl: this.previewUrl,
|
363 |
+
width: this.width,
|
364 |
+
height: this.height
|
365 |
+
};
|
366 |
+
}
|
367 |
+
});
|
368 |
+
|
369 |
+
App.on('before:start', function (BeforeStartApp) {
|
370 |
+
var Application = BeforeStartApp;
|
371 |
+
Application.registerWidget = Module.registerWidget;
|
372 |
+
Application.getWidgets = Module.getWidgets;
|
373 |
+
Application.registerLayoutWidget = Module.registerLayoutWidget;
|
374 |
+
Application.getLayoutWidgets = Module.getLayoutWidgets;
|
375 |
+
});
|
376 |
+
|
377 |
+
App.on('start', function (StartApp) {
|
378 |
+
var sidebarView = new SidebarView();
|
379 |
+
|
380 |
+
StartApp._appView.showChildView('sidebarRegion', sidebarView);
|
381 |
+
|
382 |
+
MailPoet.helpTooltip.show(document.getElementById('tooltip-send-preview'), {
|
383 |
+
tooltipId: 'tooltip-editor-send-preview',
|
384 |
+
tooltip: MailPoet.I18n.t('helpTooltipSendPreview')
|
385 |
+
});
|
386 |
+
|
387 |
+
MailPoet.helpTooltip.show(document.getElementById('tooltip-designer-styles'), {
|
388 |
+
tooltipId: 'tooltip-editor-designer-styles',
|
389 |
+
tooltip: MailPoet.I18n.t('helpTooltipDesignerStyles')
|
390 |
+
});
|
391 |
});
|
392 |
|
393 |
return Module;
|
440 |
__webpack_require__(635);
|
441 |
__webpack_require__(636);
|
442 |
__webpack_require__(637);
|
443 |
+
__webpack_require__(638);
|
444 |
+
module.exports = __webpack_require__(639);
|
445 |
|
446 |
|
447 |
/***/ },
|
35358 |
|
35359 |
/***/ },
|
35360 |
|
35361 |
+
/***/ 611:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35362 |
/***/ function(module, exports, __webpack_require__) {
|
35363 |
|
35364 |
+
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
|
35365 |
+
'use strict';
|
35366 |
+
|
35367 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
|
35368 |
__webpack_require__(609),
|
|
|
|
|
|
|
35369 |
__webpack_require__(598),
|
35370 |
__webpack_require__(600),
|
35371 |
+
__webpack_require__(281)
|
35372 |
+
], __WEBPACK_AMD_DEFINE_RESULT__ = function (App, Marionette, SuperModel, _) { // eslint-disable-line func-names
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35373 |
var Module = {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35374 |
|
35375 |
+
Module.StylesModel = SuperModel.extend({
|
35376 |
+
defaults: {
|
35377 |
+
text: {
|
35378 |
+
fontColor: '#000000',
|
35379 |
+
fontFamily: 'Arial',
|
35380 |
+
fontSize: '16px'
|
35381 |
+
},
|
35382 |
+
h1: {
|
35383 |
+
fontColor: '#111111',
|
35384 |
+
fontFamily: 'Arial',
|
35385 |
+
fontSize: '40px'
|
35386 |
+
},
|
35387 |
+
h2: {
|
35388 |
+
fontColor: '#222222',
|
35389 |
+
fontFamily: 'Tahoma',
|
35390 |
+
fontSize: '32px'
|
35391 |
+
},
|
35392 |
+
h3: {
|
35393 |
+
fontColor: '#333333',
|
35394 |
+
fontFamily: 'Verdana',
|
35395 |
+
fontSize: '24px'
|
35396 |
+
},
|
35397 |
+
link: {
|
35398 |
+
fontColor: '#21759B',
|
35399 |
+
textDecoration: 'underline'
|
35400 |
+
},
|
35401 |
+
wrapper: {
|
35402 |
+
backgroundColor: '#ffffff'
|
35403 |
+
},
|
35404 |
+
body: {
|
35405 |
+
backgroundColor: '#cccccc'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35406 |
}
|
35407 |
},
|
35408 |
+
initialize: function () { // eslint-disable-line func-names
|
35409 |
+
this.on('change', function () { App.getChannel().trigger('autoSave'); }); // eslint-disable-line func-names
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35410 |
}
|
35411 |
});
|
35412 |
|
35413 |
+
Module.StylesView = Marionette.View.extend({
|
35414 |
+
getTemplate: function () { return window.templates.styles; }, // eslint-disable-line func-names
|
35415 |
+
modelEvents: {
|
35416 |
+
change: 'render'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35417 |
},
|
35418 |
+
serializeData: function () { // eslint-disable-line func-names
|
35419 |
+
return this.model.toJSON();
|
|
|
|
|
|
|
|
|
35420 |
}
|
35421 |
});
|
35422 |
|
35423 |
+
Module._globalStyles = new SuperModel();
|
35424 |
+
Module.getGlobalStyles = function () { // eslint-disable-line func-names
|
35425 |
+
return Module._globalStyles;
|
35426 |
+
};
|
35427 |
+
Module.setGlobalStyles = function (options) { // eslint-disable-line func-names
|
35428 |
+
Module._globalStyles = new Module.StylesModel(options);
|
35429 |
+
return Module._globalStyles;
|
35430 |
+
};
|
35431 |
+
Module.getAvailableStyles = function () { // eslint-disable-line func-names
|
35432 |
+
return App.getConfig().get('availableStyles');
|
35433 |
+
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35434 |
|
35435 |
+
App.on('before:start', function (BeforeStartApp, options) { // eslint-disable-line func-names
|
35436 |
+
var Application = BeforeStartApp;
|
35437 |
+
var body;
|
35438 |
+
var globalStyles;
|
35439 |
+
// Expose style methods to global application
|
35440 |
+
Application.getGlobalStyles = Module.getGlobalStyles;
|
35441 |
+
Application.setGlobalStyles = Module.setGlobalStyles;
|
35442 |
+
Application.getAvailableStyles = Module.getAvailableStyles;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35443 |
|
35444 |
+
body = options.newsletter.body;
|
35445 |
+
globalStyles = (_.has(body, 'globalStyles')) ? body.globalStyles : {};
|
35446 |
+
this.setGlobalStyles(globalStyles);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35447 |
});
|
35448 |
|
35449 |
+
App.on('start', function (StartApp) { // eslint-disable-line func-names
|
35450 |
+
var stylesView = new Module.StylesView({ model: StartApp.getGlobalStyles() });
|
35451 |
+
StartApp._appView.showChildView('stylesRegion', stylesView);
|
|
|
|
|
|
|
35452 |
});
|
35453 |
|
35454 |
+
return Module;
|
35455 |
+
}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|
|
|
|
35456 |
|
|
|
|
|
|
|
|
|
35457 |
|
35458 |
+
/***/ },
|
|
|
|
|
|
|
|
|
35459 |
|
35460 |
+
/***/ 275:
|
35461 |
+
/***/ function(module, exports) {
|
35462 |
|
35463 |
+
module.exports = jQuery;
|
35464 |
|
35465 |
/***/ },
|
35466 |
|
36003 |
}
|
36004 |
|
36005 |
if ((App.getNewsletter().get('type') === 'notification') &&
|
36006 |
+
contents.indexOf('"type":"automatedLatestContent"') < 0 &&
|
36007 |
+
contents.indexOf('"type":"automatedLatestContentLayout"') < 0
|
36008 |
) {
|
36009 |
this.showValidationError(MailPoet.I18n.t('automatedLatestContentMissing'));
|
36010 |
return;
|
37550 |
},
|
37551 |
parse: function (response) {
|
37552 |
// If container has any blocks - add them to a collection
|
37553 |
+
if (response.type === 'container' && _.has(response, 'blocks') && response.blocks.constructor === Array) {
|
37554 |
response.blocks = new BlockCollection(response.blocks, {
|
37555 |
parse: true
|
37556 |
});
|
39202 |
defaults: function () {
|
39203 |
return this._getDefaults({
|
39204 |
type: 'automatedLatestContent',
|
39205 |
+
withLayout: false,
|
39206 |
amount: '5',
|
39207 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
39208 |
terms: [], // List of category and tag objects
|
39514 |
blockModel: Module.AutomatedLatestContentBlockModel,
|
39515 |
blockView: Module.AutomatedLatestContentBlockView
|
39516 |
});
|
39517 |
+
});
|
39518 |
+
|
39519 |
+
App.on('start', function (StartApp) {
|
39520 |
+
var Application = StartApp;
|
39521 |
+
Application._ALCSupervisor = new Module.ALCSupervisor();
|
39522 |
+
Application._ALCSupervisor.refresh();
|
39523 |
+
});
|
39524 |
+
|
39525 |
+
return Module;
|
39526 |
+
}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
39527 |
+
|
39528 |
+
|
39529 |
+
/***/ },
|
39530 |
+
|
39531 |
+
/***/ 637:
|
39532 |
+
/***/ function(module, exports, __webpack_require__) {
|
39533 |
+
|
39534 |
+
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
39535 |
+
/**
|
39536 |
+
* Automated latest content block with image alignment.
|
39537 |
+
*/
|
39538 |
+
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
|
39539 |
+
__webpack_require__(609),
|
39540 |
+
__webpack_require__(627),
|
39541 |
+
__webpack_require__(629),
|
39542 |
+
__webpack_require__(631),
|
39543 |
+
__webpack_require__(613),
|
39544 |
+
__webpack_require__(276),
|
39545 |
+
__webpack_require__(600),
|
39546 |
+
__webpack_require__(281),
|
39547 |
+
__webpack_require__(275)
|
39548 |
+
], __WEBPACK_AMD_DEFINE_RESULT__ = function (
|
39549 |
+
App,
|
39550 |
+
BaseBlock,
|
39551 |
+
ButtonBlock,
|
39552 |
+
DividerBlock,
|
39553 |
+
CommunicationComponent,
|
39554 |
+
MailPoet,
|
39555 |
+
SuperModel,
|
39556 |
+
_,
|
39557 |
+
jQuery
|
39558 |
+
) {
|
39559 |
+
'use strict';
|
39560 |
+
|
39561 |
+
var Module = {};
|
39562 |
+
var base = BaseBlock;
|
39563 |
+
|
39564 |
+
Module.ALCLayoutSupervisor = SuperModel.extend({
|
39565 |
+
initialize: function () {
|
39566 |
+
var DELAY_REFRESH_FOR_MS = 500;
|
39567 |
+
this.listenTo(
|
39568 |
+
App.getChannel(),
|
39569 |
+
'automatedLatestContentLayoutRefresh',
|
39570 |
+
_.debounce(this.refresh, DELAY_REFRESH_FOR_MS)
|
39571 |
+
);
|
39572 |
+
},
|
39573 |
+
refresh: function () {
|
39574 |
+
var blocks;
|
39575 |
+
var models = App.findModels(function (model) {
|
39576 |
+
return model.get('type') === 'automatedLatestContentLayout';
|
39577 |
+
}) || [];
|
39578 |
+
|
39579 |
+
if (models.length === 0) return;
|
39580 |
+
blocks = _.map(models, function (model) {
|
39581 |
+
return model.toJSON();
|
39582 |
+
});
|
39583 |
+
|
39584 |
+
CommunicationComponent.getBulkTransformedPosts({
|
39585 |
+
blocks: blocks
|
39586 |
+
}).then(_.partial(this.refreshBlocks, models));
|
39587 |
+
},
|
39588 |
+
refreshBlocks: function (models, renderedBlocks) {
|
39589 |
+
_.each(
|
39590 |
+
_.zip(models, renderedBlocks),
|
39591 |
+
function (args) {
|
39592 |
+
var model = args[0];
|
39593 |
+
var contents = args[1];
|
39594 |
+
model.trigger('refreshPosts', contents);
|
39595 |
+
}
|
39596 |
+
);
|
39597 |
+
}
|
39598 |
+
});
|
39599 |
+
|
39600 |
+
Module.AutomatedLatestContentLayoutBlockModel = base.BlockModel.extend({
|
39601 |
+
stale: ['_container'],
|
39602 |
+
defaults: function () {
|
39603 |
+
return this._getDefaults({
|
39604 |
+
type: 'automatedLatestContentLayout',
|
39605 |
+
withLayout: true,
|
39606 |
+
amount: '5',
|
39607 |
+
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
39608 |
+
terms: [], // List of category and tag objects
|
39609 |
+
inclusionType: 'include', // 'include'|'exclude'
|
39610 |
+
displayType: 'excerpt', // 'excerpt'|'full'|'titleOnly'
|
39611 |
+
titleFormat: 'h1', // 'h1'|'h2'|'h3'|'ul'
|
39612 |
+
titleAlignment: 'left', // 'left'|'center'|'right'
|
39613 |
+
titleIsLink: false, // false|true
|
39614 |
+
imageFullWidth: false, // true|false
|
39615 |
+
featuredImagePosition: 'centered', // 'centered'|'left'|'right'|'alternate'|'none'
|
39616 |
+
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
39617 |
+
authorPrecededBy: 'Author:',
|
39618 |
+
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
39619 |
+
categoriesPrecededBy: 'Categories:',
|
39620 |
+
readMoreType: 'button', // 'link'|'button'
|
39621 |
+
readMoreText: 'Read more', // 'link'|'button'
|
39622 |
+
readMoreButton: {
|
39623 |
+
text: 'Read more',
|
39624 |
+
url: '[postLink]'
|
39625 |
+
},
|
39626 |
+
sortBy: 'newest', // 'newest'|'oldest',
|
39627 |
+
showDivider: true, // true|false
|
39628 |
+
divider: {},
|
39629 |
+
_container: new (App.getBlockTypeModel('container'))()
|
39630 |
+
}, App.getConfig().get('blockDefaults.automatedLatestContentLayout'));
|
39631 |
+
},
|
39632 |
+
relations: function () {
|
39633 |
+
return {
|
39634 |
+
readMoreButton: App.getBlockTypeModel('button'),
|
39635 |
+
divider: App.getBlockTypeModel('divider'),
|
39636 |
+
_container: App.getBlockTypeModel('container')
|
39637 |
+
};
|
39638 |
+
},
|
39639 |
+
initialize: function () {
|
39640 |
+
base.BlockView.prototype.initialize.apply(this, arguments);
|
39641 |
+
this.on('change:amount change:contentType change:terms change:inclusionType change:displayType change:titleFormat change:featuredImagePosition change:titleAlignment change:titleIsLink change:imageFullWidth change:showAuthor change:authorPrecededBy change:showCategories change:categoriesPrecededBy change:readMoreType change:readMoreText change:sortBy change:showDivider', this._handleChanges, this);
|
39642 |
+
this.listenTo(this.get('readMoreButton'), 'change', this._handleChanges);
|
39643 |
+
this.listenTo(this.get('divider'), 'change', this._handleChanges);
|
39644 |
+
this.on('add remove update reset', this._handleChanges);
|
39645 |
+
this.on('refreshPosts', this.updatePosts, this);
|
39646 |
+
},
|
39647 |
+
updatePosts: function (posts) {
|
39648 |
+
this.get('_container.blocks').reset(posts, { parse: true });
|
39649 |
+
},
|
39650 |
+
/**
|
39651 |
+
* Batch more changes during a specific time, instead of fetching
|
39652 |
+
* ALC posts on each model change
|
39653 |
+
*/
|
39654 |
+
_handleChanges: function () {
|
39655 |
+
this._updateDefaults();
|
39656 |
+
App.getChannel().trigger('automatedLatestContentLayoutRefresh');
|
39657 |
+
}
|
39658 |
+
});
|
39659 |
+
|
39660 |
+
Module.AutomatedLatestContentLayoutBlockView = base.BlockView.extend({
|
39661 |
+
className: 'mailpoet_block mailpoet_automated_latest_content_block mailpoet_droppable_block',
|
39662 |
+
initialize: function () {
|
39663 |
+
function replaceButtonStylesHandler(data) {
|
39664 |
+
this.model.set({ readMoreButton: data });
|
39665 |
+
}
|
39666 |
+
App.getChannel().on('replaceAllButtonStyles', replaceButtonStylesHandler.bind(this));
|
39667 |
+
},
|
39668 |
+
getTemplate: function () { return window.templates.automatedLatestContentLayoutBlock; },
|
39669 |
+
regions: {
|
39670 |
+
toolsRegion: '.mailpoet_tools',
|
39671 |
+
postsRegion: '.mailpoet_automated_latest_content_block_posts'
|
39672 |
+
},
|
39673 |
+
modelEvents: _.extend(
|
39674 |
+
_.omit(base.BlockView.prototype.modelEvents, 'change'),
|
39675 |
+
{
|
39676 |
+
postsChanged: 'render'
|
39677 |
+
}),
|
39678 |
+
events: _.extend(base.BlockView.prototype.events, {
|
39679 |
+
'click .mailpoet_automated_latest_content_block_overlay': 'showSettings'
|
39680 |
+
}),
|
39681 |
+
onDragSubstituteBy: function () { return Module.AutomatedLatestContentLayoutWidgetView; },
|
39682 |
+
onRender: function () {
|
39683 |
+
var ContainerView = App.getBlockTypeView('container');
|
39684 |
+
var renderOptions = {
|
39685 |
+
disableTextEditor: true,
|
39686 |
+
disableDragAndDrop: true,
|
39687 |
+
emptyContainerMessage: MailPoet.I18n.t('noPostsToDisplay')
|
39688 |
+
};
|
39689 |
+
this.toolsView = new Module.AutomatedLatestContentLayoutBlockToolsView({ model: this.model });
|
39690 |
+
this.showChildView('toolsRegion', this.toolsView);
|
39691 |
+
this.showChildView('postsRegion', new ContainerView({ model: this.model.get('_container'), renderOptions: renderOptions }));
|
39692 |
+
}
|
39693 |
+
});
|
39694 |
+
|
39695 |
+
Module.AutomatedLatestContentLayoutBlockToolsView = base.BlockToolsView.extend({
|
39696 |
+
getSettingsView: function () { return Module.AutomatedLatestContentLayoutBlockSettingsView; }
|
39697 |
+
});
|
39698 |
+
|
39699 |
+
// Sidebar view container
|
39700 |
+
Module.AutomatedLatestContentLayoutBlockSettingsView = base.BlockSettingsView.extend({
|
39701 |
+
getTemplate: function () { return window.templates.automatedLatestContentLayoutBlockSettings; },
|
39702 |
+
events: function () {
|
39703 |
+
return {
|
39704 |
+
'click .mailpoet_automated_latest_content_hide_display_options': 'toggleDisplayOptions',
|
39705 |
+
'click .mailpoet_automated_latest_content_show_display_options': 'toggleDisplayOptions',
|
39706 |
+
'click .mailpoet_automated_latest_content_select_button': 'showButtonSettings',
|
39707 |
+
'click .mailpoet_automated_latest_content_select_divider': 'showDividerSettings',
|
39708 |
+
'change .mailpoet_automated_latest_content_read_more_type': 'changeReadMoreType',
|
39709 |
+
'change .mailpoet_automated_latest_content_display_type': 'changeDisplayType',
|
39710 |
+
'change .mailpoet_automated_latest_content_title_format': 'changeTitleFormat',
|
39711 |
+
'change .mailpoet_automated_latest_content_title_as_links': _.partial(this.changeBoolField, 'titleIsLink'),
|
39712 |
+
'change .mailpoet_automated_latest_content_show_divider': _.partial(this.changeBoolField, 'showDivider'),
|
39713 |
+
'input .mailpoet_automated_latest_content_show_amount': _.partial(this.changeField, 'amount'),
|
39714 |
+
'change .mailpoet_automated_latest_content_content_type': _.partial(this.changeField, 'contentType'),
|
39715 |
+
'change .mailpoet_automated_latest_content_include_or_exclude': _.partial(this.changeField, 'inclusionType'),
|
39716 |
+
'change .mailpoet_automated_latest_content_title_alignment': _.partial(this.changeField, 'titleAlignment'),
|
39717 |
+
'change .mailpoet_automated_latest_content_image_full_width': _.partial(this.changeBoolField, 'imageFullWidth'),
|
39718 |
+
'change .mailpoet_automated_latest_content_featured_image_position': _.partial(this.changeField, 'featuredImagePosition'),
|
39719 |
+
'change .mailpoet_automated_latest_content_show_author': _.partial(this.changeField, 'showAuthor'),
|
39720 |
+
'input .mailpoet_automated_latest_content_author_preceded_by': _.partial(this.changeField, 'authorPrecededBy'),
|
39721 |
+
'change .mailpoet_automated_latest_content_show_categories': _.partial(this.changeField, 'showCategories'),
|
39722 |
+
'input .mailpoet_automated_latest_content_categories': _.partial(this.changeField, 'categoriesPrecededBy'),
|
39723 |
+
'input .mailpoet_automated_latest_content_read_more_text': _.partial(this.changeField, 'readMoreText'),
|
39724 |
+
'change .mailpoet_automated_latest_content_sort_by': _.partial(this.changeField, 'sortBy'),
|
39725 |
+
'click .mailpoet_done_editing': 'close'
|
39726 |
+
};
|
39727 |
+
},
|
39728 |
+
onRender: function () {
|
39729 |
+
var that = this;
|
39730 |
+
|
39731 |
+
// Dynamically update available post types
|
39732 |
+
CommunicationComponent.getPostTypes().done(_.bind(this._updateContentTypes, this));
|
39733 |
+
|
39734 |
+
this.$('.mailpoet_automated_latest_content_categories_and_tags').select2({
|
39735 |
+
multiple: true,
|
39736 |
+
allowClear: true,
|
39737 |
+
placeholder: MailPoet.I18n.t('categoriesAndTags'),
|
39738 |
+
ajax: {
|
39739 |
+
data: function (params) {
|
39740 |
+
return {
|
39741 |
+
term: params.term
|
39742 |
+
};
|
39743 |
+
},
|
39744 |
+
transport: function (options, success, failure) {
|
39745 |
+
var taxonomies;
|
39746 |
+
var termsPromise;
|
39747 |
+
var promise = CommunicationComponent.getTaxonomies(
|
39748 |
+
that.model.get('contentType')
|
39749 |
+
).then(function (tax) {
|
39750 |
+
taxonomies = tax;
|
39751 |
+
// Fetch available terms based on the list of taxonomies already fetched
|
39752 |
+
termsPromise = CommunicationComponent.getTerms({
|
39753 |
+
search: options.data.term,
|
39754 |
+
taxonomies: _.keys(taxonomies)
|
39755 |
+
}).then(function (terms) {
|
39756 |
+
return {
|
39757 |
+
taxonomies: taxonomies,
|
39758 |
+
terms: terms
|
39759 |
+
};
|
39760 |
+
});
|
39761 |
+
return termsPromise;
|
39762 |
+
});
|
39763 |
+
|
39764 |
+
promise.then(success);
|
39765 |
+
promise.fail(failure);
|
39766 |
+
return promise;
|
39767 |
+
},
|
39768 |
+
processResults: function (data) {
|
39769 |
+
// Transform taxonomies and terms into select2 compatible format
|
39770 |
+
return {
|
39771 |
+
results: _.map(
|
39772 |
+
data.terms,
|
39773 |
+
function (item) {
|
39774 |
+
return _.defaults({
|
39775 |
+
text: data.taxonomies[item.taxonomy].labels.singular_name + ': ' + item.name,
|
39776 |
+
id: item.term_id
|
39777 |
+
}, item);
|
39778 |
+
}
|
39779 |
+
)
|
39780 |
+
};
|
39781 |
+
}
|
39782 |
+
}
|
39783 |
+
}).on({
|
39784 |
+
'select2:select': function (event) {
|
39785 |
+
var terms = that.model.get('terms');
|
39786 |
+
terms.add(event.params.data);
|
39787 |
+
// Reset whole model in order for change events to propagate properly
|
39788 |
+
that.model.set('terms', terms.toJSON());
|
39789 |
+
},
|
39790 |
+
'select2:unselect': function (event) {
|
39791 |
+
var terms = that.model.get('terms');
|
39792 |
+
terms.remove(event.params.data);
|
39793 |
+
// Reset whole model in order for change events to propagate properly
|
39794 |
+
that.model.set('terms', terms.toJSON());
|
39795 |
+
}
|
39796 |
+
}).trigger('change');
|
39797 |
+
},
|
39798 |
+
toggleDisplayOptions: function () {
|
39799 |
+
var el = this.$('.mailpoet_automated_latest_content_display_options');
|
39800 |
+
var showControl = this.$('.mailpoet_automated_latest_content_show_display_options');
|
39801 |
+
if (el.hasClass('mailpoet_closed')) {
|
39802 |
+
el.removeClass('mailpoet_closed');
|
39803 |
+
showControl.addClass('mailpoet_hidden');
|
39804 |
+
} else {
|
39805 |
+
el.addClass('mailpoet_closed');
|
39806 |
+
showControl.removeClass('mailpoet_hidden');
|
39807 |
+
}
|
39808 |
+
},
|
39809 |
+
showButtonSettings: function () {
|
39810 |
+
var buttonModule = ButtonBlock;
|
39811 |
+
(new buttonModule.ButtonBlockSettingsView({
|
39812 |
+
model: this.model.get('readMoreButton'),
|
39813 |
+
renderOptions: {
|
39814 |
+
displayFormat: 'subpanel',
|
39815 |
+
hideLink: true,
|
39816 |
+
hideApplyToAll: true
|
39817 |
+
}
|
39818 |
+
})).render();
|
39819 |
+
},
|
39820 |
+
showDividerSettings: function () {
|
39821 |
+
var dividerModule = DividerBlock;
|
39822 |
+
(new dividerModule.DividerBlockSettingsView({
|
39823 |
+
model: this.model.get('divider'),
|
39824 |
+
renderOptions: {
|
39825 |
+
displayFormat: 'subpanel',
|
39826 |
+
hideApplyToAll: true
|
39827 |
+
}
|
39828 |
+
})).render();
|
39829 |
+
},
|
39830 |
+
changeReadMoreType: function (event) {
|
39831 |
+
var value = jQuery(event.target).val();
|
39832 |
+
if (value === 'link') {
|
39833 |
+
this.$('.mailpoet_automated_latest_content_read_more_text').removeClass('mailpoet_hidden');
|
39834 |
+
this.$('.mailpoet_automated_latest_content_select_button').addClass('mailpoet_hidden');
|
39835 |
+
} else if (value === 'button') {
|
39836 |
+
this.$('.mailpoet_automated_latest_content_read_more_text').addClass('mailpoet_hidden');
|
39837 |
+
this.$('.mailpoet_automated_latest_content_select_button').removeClass('mailpoet_hidden');
|
39838 |
+
}
|
39839 |
+
this.changeField('readMoreType', event);
|
39840 |
+
},
|
39841 |
+
changeDisplayType: function (event) {
|
39842 |
+
var value = jQuery(event.target).val();
|
39843 |
+
|
39844 |
+
if (value === 'titleOnly') {
|
39845 |
+
this.$('.mailpoet_automated_latest_content_title_as_list').removeClass('mailpoet_hidden');
|
39846 |
+
this.$('.mailpoet_automated_latest_content_image_full_width_option').addClass('mailpoet_hidden');
|
39847 |
+
this.$('.mailpoet_automated_latest_content_image_separator').addClass('mailpoet_hidden');
|
39848 |
+
} else {
|
39849 |
+
this.$('.mailpoet_automated_latest_content_title_as_list').addClass('mailpoet_hidden');
|
39850 |
+
this.$('.mailpoet_automated_latest_content_image_full_width_option').removeClass('mailpoet_hidden');
|
39851 |
+
this.$('.mailpoet_automated_latest_content_image_separator').removeClass('mailpoet_hidden');
|
39852 |
+
|
39853 |
+
// Reset titleFormat if it was set to List when switching away from displayType=titleOnly
|
39854 |
+
if (this.model.get('titleFormat') === 'ul') {
|
39855 |
+
this.model.set('titleFormat', 'h1');
|
39856 |
+
this.$('.mailpoet_automated_latest_content_title_format').val(['h1']);
|
39857 |
+
this.$('.mailpoet_automated_latest_content_title_as_link').removeClass('mailpoet_hidden');
|
39858 |
+
}
|
39859 |
+
}
|
39860 |
+
|
39861 |
+
if (value === 'excerpt') {
|
39862 |
+
this.$('.mailpoet_automated_latest_content_featured_image_position_container').removeClass('mailpoet_hidden');
|
39863 |
+
} else {
|
39864 |
+
this.$('.mailpoet_automated_latest_content_featured_image_position_container').addClass('mailpoet_hidden');
|
39865 |
+
}
|
39866 |
+
this.changeField('displayType', event);
|
39867 |
+
},
|
39868 |
+
changeTitleFormat: function (event) {
|
39869 |
+
var value = jQuery(event.target).val();
|
39870 |
+
if (value === 'ul') {
|
39871 |
+
this.$('.mailpoet_automated_latest_content_non_title_list_options').addClass('mailpoet_hidden');
|
39872 |
+
|
39873 |
+
this.model.set('titleIsLink', true);
|
39874 |
+
this.$('.mailpoet_automated_latest_content_title_as_link').addClass('mailpoet_hidden');
|
39875 |
+
this.$('.mailpoet_automated_latest_content_title_as_links').val(['true']);
|
39876 |
+
} else {
|
39877 |
+
this.$('.mailpoet_automated_latest_content_non_title_list_options').removeClass('mailpoet_hidden');
|
39878 |
+
this.$('.mailpoet_automated_latest_content_title_as_link').removeClass('mailpoet_hidden');
|
39879 |
+
}
|
39880 |
+
this.changeField('titleFormat', event);
|
39881 |
+
},
|
39882 |
+
_updateContentTypes: function (postTypes) {
|
39883 |
+
var select = this.$('.mailpoet_automated_latest_content_content_type');
|
39884 |
+
var selectedValue = this.model.get('contentType');
|
39885 |
+
|
39886 |
+
select.find('option').remove();
|
39887 |
+
_.each(postTypes, function (type) {
|
39888 |
+
select.append(jQuery('<option>', {
|
39889 |
+
value: type.name,
|
39890 |
+
text: type.label
|
39891 |
+
}));
|
39892 |
+
});
|
39893 |
+
select.val(selectedValue);
|
39894 |
+
}
|
39895 |
+
});
|
39896 |
+
|
39897 |
+
Module.AutomatedLatestContentLayoutWidgetView = base.WidgetView.extend({
|
39898 |
+
className: base.WidgetView.prototype.className + ' mailpoet_droppable_layout_block',
|
39899 |
+
getTemplate: function () { return window.templates.automatedLatestContentLayoutInsertion; },
|
39900 |
+
behaviors: {
|
39901 |
+
DraggableBehavior: {
|
39902 |
+
cloneOriginal: true,
|
39903 |
+
drop: function () {
|
39904 |
+
return new Module.AutomatedLatestContentLayoutBlockModel({}, { parse: true });
|
39905 |
+
},
|
39906 |
+
onDrop: function (options) {
|
39907 |
+
options.droppedView.triggerMethod('showSettings');
|
39908 |
+
}
|
39909 |
+
}
|
39910 |
+
}
|
39911 |
+
});
|
39912 |
+
|
39913 |
+
App.on('before:start', function (BeforeStartApp) {
|
39914 |
+
BeforeStartApp.registerBlockType('automatedLatestContentLayout', {
|
39915 |
+
blockModel: Module.AutomatedLatestContentLayoutBlockModel,
|
39916 |
+
blockView: Module.AutomatedLatestContentLayoutBlockView
|
39917 |
+
});
|
39918 |
|
39919 |
BeforeStartApp.registerWidget({
|
39920 |
+
name: 'automatedLatestContentLayout',
|
39921 |
+
widgetView: Module.AutomatedLatestContentLayoutWidgetView,
|
39922 |
priority: 97
|
39923 |
});
|
39924 |
});
|
39925 |
|
39926 |
App.on('start', function (StartApp) {
|
39927 |
var Application = StartApp;
|
39928 |
+
Application._ALCLayoutSupervisor = new Module.ALCLayoutSupervisor();
|
39929 |
+
Application._ALCLayoutSupervisor.refresh();
|
39930 |
});
|
39931 |
|
39932 |
return Module;
|
39935 |
|
39936 |
/***/ },
|
39937 |
|
39938 |
+
/***/ 638:
|
39939 |
/***/ function(module, exports, __webpack_require__) {
|
39940 |
|
39941 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
39992 |
defaults: function () {
|
39993 |
return this._getDefaults({
|
39994 |
type: 'posts',
|
39995 |
+
withLayout: true,
|
39996 |
amount: '10',
|
39997 |
offset: 0,
|
39998 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
40005 |
titleAlignment: 'left', // 'left'|'center'|'right'
|
40006 |
titleIsLink: false, // false|true
|
40007 |
imageFullWidth: false, // true|false
|
40008 |
+
featuredImagePosition: 'centered', // 'centered'|'right'|'left'|'alternate'|'none'
|
40009 |
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
40010 |
authorPrecededBy: 'Author:',
|
40011 |
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
40119 |
if (data.posts.length === 0) return;
|
40120 |
|
40121 |
CommunicationComponent.getTransformedPosts(data).done(function (posts) {
|
40122 |
+
collection.add(JSON.parse(JSON.stringify(posts)), { at: index });
|
40123 |
}).fail(function () {
|
40124 |
MailPoet.Notice.error(MailPoet.I18n.t('failedToFetchRenderedPosts'));
|
40125 |
});
|
40131 |
getTemplate: function () { return window.templates.postsBlock; },
|
40132 |
modelEvents: {}, // Forcefully disable all events
|
40133 |
regions: _.extend({
|
40134 |
+
postsRegion: '.mailpoet_posts_container'
|
40135 |
}, base.BlockView.prototype.regions),
|
40136 |
onDragSubstituteBy: function () { return Module.PostsWidgetView; },
|
40137 |
initialize: function () {
|
40524 |
});
|
40525 |
|
40526 |
Module.PostsWidgetView = base.WidgetView.extend({
|
40527 |
+
className: base.WidgetView.prototype.className + ' mailpoet_droppable_layout_block',
|
40528 |
getTemplate: function () { return window.templates.postsInsertion; },
|
40529 |
behaviors: {
|
40530 |
DraggableBehavior: {
|
40555 |
|
40556 |
/***/ },
|
40557 |
|
40558 |
+
/***/ 639:
|
40559 |
/***/ function(module, exports, __webpack_require__) {
|
40560 |
|
40561 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
assets/js/{vendor.0b1694bf.js → vendor.98a3aa8c.js}
RENAMED
@@ -76,7 +76,7 @@
|
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
-
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
@@ -100,13 +100,13 @@
|
|
100 |
/***/ function(module, exports, __webpack_require__) {
|
101 |
|
102 |
__webpack_require__(577);
|
103 |
-
__webpack_require__(
|
104 |
module.exports = __webpack_require__(438);
|
105 |
|
106 |
|
107 |
/***/ },
|
108 |
|
109 |
-
/***/
|
110 |
/***/ function(module, exports, __webpack_require__) {
|
111 |
|
112 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
+
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"a58c3783","1":"016e33b8","2":"b2d3a84e","3":"f26c86e7","4":"1d7b4686"}[chunkId] + ".chunk.js";
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
100 |
/***/ function(module, exports, __webpack_require__) {
|
101 |
|
102 |
__webpack_require__(577);
|
103 |
+
__webpack_require__(640);
|
104 |
module.exports = __webpack_require__(438);
|
105 |
|
106 |
|
107 |
/***/ },
|
108 |
|
109 |
+
/***/ 640:
|
110 |
/***/ function(module, exports, __webpack_require__) {
|
111 |
|
112 |
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable func-names */
|
lang/mailpoet-ca.mo
CHANGED
Binary file
|
lang/mailpoet-da_DK.mo
CHANGED
Binary file
|
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_CA.mo
CHANGED
Binary file
|
lang/mailpoet-fr_FR.mo
CHANGED
Binary file
|
lang/mailpoet-it_IT.mo
CHANGED
Binary file
|
lang/mailpoet-ja.mo
CHANGED
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-sq.mo
CHANGED
Binary file
|
lang/mailpoet-sv_SE.mo
CHANGED
Binary file
|
lang/mailpoet-tr_TR.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: 2018-05
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -78,7 +78,7 @@ msgstr ""
|
|
78 |
#: lib/API/MP/v1/API.php:18
|
79 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:44
|
80 |
#: lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php:40
|
81 |
-
#: views/newsletter/editor.html:
|
82 |
msgid "Email"
|
83 |
msgstr ""
|
84 |
|
@@ -412,7 +412,7 @@ msgstr ""
|
|
412 |
msgid "Newsletter"
|
413 |
msgstr ""
|
414 |
|
415 |
-
#: lib/Config/Menu.php:113 views/newsletter/editor.html:
|
416 |
msgid "Newsletter Editor"
|
417 |
msgstr ""
|
418 |
|
@@ -651,7 +651,7 @@ msgstr ""
|
|
651 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:255
|
652 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:278
|
653 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:194
|
654 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:
|
655 |
#: lib/Config/PopulatorData/Templates/SimpleText.php:139
|
656 |
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:285
|
657 |
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:194
|
@@ -797,17 +797,19 @@ msgid ""
|
|
797 |
"below.</span></p>"
|
798 |
msgstr ""
|
799 |
|
800 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:
|
801 |
-
#: views/newsletter/editor.html:
|
|
|
802 |
msgid "Author:"
|
803 |
msgstr ""
|
804 |
|
805 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:
|
806 |
-
#: views/newsletter/editor.html:
|
|
|
807 |
msgid "Categories:"
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:
|
811 |
msgid "Read the post"
|
812 |
msgstr ""
|
813 |
|
@@ -1427,7 +1429,7 @@ msgstr ""
|
|
1427 |
msgid "Bounced"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
-
#: lib/Newsletter/Editor/PostContentManager.php:
|
1431 |
msgid "Click here to view media."
|
1432 |
msgstr ""
|
1433 |
|
@@ -1517,7 +1519,7 @@ msgid "Unsubscribe link"
|
|
1517 |
msgstr ""
|
1518 |
|
1519 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:85
|
1520 |
-
#: views/newsletter/editor.html:
|
1521 |
msgid "Unsubscribe"
|
1522 |
msgstr ""
|
1523 |
|
@@ -1526,7 +1528,7 @@ msgid "Edit subscription page link"
|
|
1526 |
msgstr ""
|
1527 |
|
1528 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:93
|
1529 |
-
#: views/newsletter/editor.html:
|
1530 |
msgid "Manage subscription"
|
1531 |
msgstr ""
|
1532 |
|
@@ -1681,10 +1683,14 @@ msgstr ""
|
|
1681 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:183
|
1682 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:209
|
1683 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:287
|
|
|
|
|
|
|
|
|
1684 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:85
|
1685 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
1686 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
1687 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
1688 |
#: views/premium.html:62 views/premium.html:63 views/settings/advanced.html:122
|
1689 |
#: views/settings/advanced.html:162 views/settings/advanced.html:202
|
1690 |
#: views/settings/bounce.html:148 views/settings/bounce.html:179
|
@@ -2044,8 +2050,10 @@ msgstr ""
|
|
2044 |
#: views/form/templates/settings/required.hbs:9
|
2045 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:124
|
2046 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
|
|
|
|
|
2047 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
|
2048 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
2049 |
#: views/premium.html:56 views/settings/advanced.html:111
|
2050 |
#: views/settings/advanced.html:151 views/settings/advanced.html:191
|
2051 |
#: views/settings/bounce.html:190 views/settings/mta.html:588
|
@@ -2103,6 +2111,7 @@ msgstr ""
|
|
2103 |
#: views/form/templates/settings/field_form.hbs:61
|
2104 |
#: views/form/templates/settings/submit.hbs:2
|
2105 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:299
|
|
|
2106 |
#: views/newsletter/templates/blocks/button/settings.hbs:117
|
2107 |
#: views/newsletter/templates/blocks/container/settings.hbs:14
|
2108 |
#: views/newsletter/templates/blocks/divider/settings.hbs:37
|
@@ -2568,357 +2577,382 @@ msgstr ""
|
|
2568 |
msgid "IMPORT STOPPED BY USER"
|
2569 |
msgstr ""
|
2570 |
|
2571 |
-
#: views/newsletter/editor.html:
|
2572 |
msgid "Insert/edit link"
|
2573 |
msgstr ""
|
2574 |
|
2575 |
-
#: views/newsletter/editor.html:
|
2576 |
msgid "Type"
|
2577 |
msgstr ""
|
2578 |
|
2579 |
-
#: views/newsletter/editor.html:
|
2580 |
msgid "Link to a web page"
|
2581 |
msgstr ""
|
2582 |
|
2583 |
-
#: views/newsletter/editor.html:
|
2584 |
msgid "Browser version"
|
2585 |
msgstr ""
|
2586 |
|
2587 |
-
#: views/newsletter/editor.html:
|
2588 |
msgid "Unsubcribe page"
|
2589 |
msgstr ""
|
2590 |
|
2591 |
-
#: views/newsletter/editor.html:
|
2592 |
msgid "Manage your subscription page"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#: views/newsletter/editor.html:
|
2596 |
-
#: views/newsletter/editor.html:
|
2597 |
-
#: views/newsletter/editor.html:
|
2598 |
-
#: views/newsletter/editor.html:
|
2599 |
-
#: views/newsletter/editor.html:
|
2600 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
|
|
|
2601 |
#: views/newsletter/templates/blocks/button/settings.hbs:14
|
2602 |
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
2603 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
2604 |
msgid "Link"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
-
#: views/newsletter/editor.html:
|
2608 |
msgid "Title"
|
2609 |
msgstr ""
|
2610 |
|
2611 |
-
#: views/newsletter/editor.html:
|
2612 |
msgid "Open link in a new window/tab"
|
2613 |
msgstr ""
|
2614 |
|
2615 |
-
#: views/newsletter/editor.html:
|
2616 |
msgid "Search your content"
|
2617 |
msgstr ""
|
2618 |
|
2619 |
-
#: views/newsletter/editor.html:
|
2620 |
msgid "No search term specified. Showing recent items."
|
2621 |
msgstr ""
|
2622 |
|
2623 |
-
#: views/newsletter/editor.html:
|
2624 |
msgid "Add Link"
|
2625 |
msgstr ""
|
2626 |
|
2627 |
-
#: views/newsletter/editor.html:
|
2628 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2629 |
#: views/newsletters.html:270
|
2630 |
#: views/subscribers/importExport/import/step2.html:150
|
2631 |
msgid "Cancel"
|
2632 |
msgstr ""
|
2633 |
|
2634 |
-
#: views/newsletter/editor.html:
|
2635 |
msgid ""
|
2636 |
"Didn't receive the test email? Read our [link]quick guide[/link] to sending "
|
2637 |
"issues. <br><br>A MailPoet logo will appear in the footer of all emails "
|
2638 |
"sent with the free version of MailPoet."
|
2639 |
msgstr ""
|
2640 |
|
2641 |
-
#: views/newsletter/editor.html:
|
2642 |
msgid "Failed to fetch available posts"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
-
#: views/newsletter/editor.html:
|
2646 |
msgid "Failed to fetch rendered posts"
|
2647 |
msgstr ""
|
2648 |
|
2649 |
-
#: views/newsletter/editor.html:
|
2650 |
msgid "Select a shortcode"
|
2651 |
msgstr ""
|
2652 |
|
2653 |
-
#: views/newsletter/editor.html:
|
2654 |
msgid ""
|
2655 |
"All emails must include an \"Unsubscribe\" link. Add a footer widget to "
|
2656 |
"your email to continue."
|
2657 |
msgstr ""
|
2658 |
|
2659 |
-
#: views/newsletter/editor.html:
|
2660 |
msgid ""
|
2661 |
"Please add an \"Automated Latest Content\" widget to the email from the "
|
2662 |
"right sidebar."
|
2663 |
msgstr ""
|
2664 |
|
2665 |
-
#: views/newsletter/editor.html:
|
2666 |
msgid "Enter an email address to send the preview newsletter to."
|
2667 |
msgstr ""
|
2668 |
|
2669 |
-
#: views/newsletter/editor.html:
|
2670 |
msgid "Your test email has been sent!"
|
2671 |
msgstr ""
|
2672 |
|
2673 |
-
#: views/newsletter/editor.html:
|
2674 |
msgid "Please add a template name"
|
2675 |
msgstr ""
|
2676 |
|
2677 |
-
#: views/newsletter/editor.html:
|
2678 |
msgid ""
|
2679 |
"We only include fonts that will display in all email clients. We understand "
|
2680 |
"it can feel limiting!"
|
2681 |
msgstr ""
|
2682 |
|
2683 |
-
#: views/newsletter/editor.html:
|
2684 |
msgid ""
|
2685 |
"You can add MailPoet shortcodes here. For example, you can add your "
|
2686 |
"subscribers' first names by using this shortcode: [subscriber:firstname | "
|
2687 |
"default:reader] Simply copy and paste the shortcode into the field."
|
2688 |
msgstr ""
|
2689 |
|
2690 |
-
#: views/newsletter/editor.html:
|
2691 |
msgid ""
|
2692 |
"This optional text will appear in your subscribers' inboxes, beside the "
|
2693 |
"subject line. Write something enticing!"
|
2694 |
msgstr ""
|
2695 |
|
2696 |
-
#: views/newsletter/editor.html:
|
2697 |
msgid ""
|
2698 |
"This option eliminates padding around the image. It only works if the image "
|
2699 |
"is larger than the column size."
|
2700 |
msgstr ""
|
2701 |
|
2702 |
-
#: views/newsletter/editor.html:
|
2703 |
msgid ""
|
2704 |
"Use images with widths of at least 1,000 pixels to ensure sharp display on "
|
2705 |
"high density screens, like mobile devices."
|
2706 |
msgstr ""
|
2707 |
|
2708 |
-
#: views/newsletter/editor.html:
|
2709 |
msgid "Template has been saved."
|
2710 |
msgstr ""
|
2711 |
|
2712 |
-
#: views/newsletter/editor.html:
|
2713 |
msgid "Template has not been saved, please try again"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
-
#: views/newsletter/editor.html:
|
2717 |
msgid "Categories & tags"
|
2718 |
msgstr ""
|
2719 |
|
2720 |
-
#: views/newsletter/editor.html:
|
2721 |
msgid "There is no content to display."
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: views/newsletter/editor.html:
|
2725 |
msgid ""
|
2726 |
"Your preview should open in a new tab. Please ensure your browser is not "
|
2727 |
"blocking popups from this page."
|
2728 |
msgstr ""
|
2729 |
|
2730 |
-
#: views/newsletter/editor.html:
|
2731 |
msgid "Newsletter Preview"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
-
#: views/newsletter/editor.html:
|
2735 |
msgid ""
|
2736 |
"Contents of this newsletter are corrupted and may be lost, you may need to "
|
2737 |
"add new content to this newsletter, or create a new one. If possible, "
|
2738 |
"please contact us and report this issue."
|
2739 |
msgstr ""
|
2740 |
|
2741 |
-
#: views/newsletter/editor.html:
|
2742 |
msgid "Saving..."
|
2743 |
msgstr ""
|
2744 |
|
2745 |
-
#: views/newsletter/editor.html:
|
2746 |
msgid "There are unsaved changes which will be lost if you leave this page."
|
2747 |
msgstr ""
|
2748 |
|
2749 |
-
#: views/newsletter/editor.html:
|
2750 |
msgid "Email sending has been paused."
|
2751 |
msgstr ""
|
2752 |
|
2753 |
-
#: views/newsletter/editor.html:
|
2754 |
msgid "Select type"
|
2755 |
msgstr ""
|
2756 |
|
2757 |
-
#: views/newsletter/editor.html:
|
2758 |
msgid "Events"
|
2759 |
msgstr ""
|
2760 |
|
2761 |
-
#: views/newsletter/editor.html:
|
2762 |
msgid "Template"
|
2763 |
msgstr ""
|
2764 |
|
2765 |
-
#: views/newsletter/editor.html:
|
2766 |
msgid "Designer"
|
2767 |
msgstr ""
|
2768 |
|
2769 |
-
#: views/newsletter/editor.html:
|
2770 |
msgid "Send"
|
2771 |
msgstr ""
|
2772 |
|
2773 |
-
#: views/newsletter/editor.html:
|
2774 |
msgid "Website"
|
2775 |
msgstr ""
|
2776 |
|
2777 |
-
#: views/newsletter/editor.html:
|
2778 |
msgid "Custom"
|
2779 |
msgstr ""
|
2780 |
|
2781 |
-
#: views/newsletter/editor.html:
|
2782 |
-
#: views/newsletter/editor.html:
|
|
|
2783 |
msgid "Read more"
|
2784 |
msgstr ""
|
2785 |
|
2786 |
-
#: views/newsletter/editor.html:
|
2787 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
|
|
|
2788 |
#: views/newsletter/templates/blocks/button/settings.hbs:1
|
2789 |
#: views/newsletter/templates/blocks/button/widget.hbs:4
|
2790 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
2791 |
msgid "Button"
|
2792 |
msgstr ""
|
2793 |
|
2794 |
-
#: views/newsletter/editor.html:
|
2795 |
msgid "Add your postal address here!"
|
2796 |
msgstr ""
|
2797 |
|
2798 |
-
#: views/newsletter/editor.html:
|
2799 |
msgid "An image of..."
|
2800 |
msgstr ""
|
2801 |
|
2802 |
-
#: views/newsletter/editor.html:
|
2803 |
msgid "Facebook"
|
2804 |
msgstr ""
|
2805 |
|
2806 |
-
#: views/newsletter/editor.html:
|
2807 |
msgid "Twitter"
|
2808 |
msgstr ""
|
2809 |
|
2810 |
-
#: views/newsletter/editor.html:
|
2811 |
msgid "Edit this to insert text."
|
2812 |
msgstr ""
|
2813 |
|
2814 |
-
#: views/newsletter/editor.html:
|
2815 |
msgid "Display problems?"
|
2816 |
msgstr ""
|
2817 |
|
2818 |
-
#: views/newsletter/editor.html:
|
2819 |
msgid "Open this email in your web browser."
|
2820 |
msgstr ""
|
2821 |
|
2822 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:1
|
|
|
2823 |
#: views/newsletter/templates/blocks/posts/settings.hbs:1
|
2824 |
msgid "Post selection"
|
2825 |
msgstr ""
|
2826 |
|
2827 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:4
|
|
|
2828 |
msgid "Show:"
|
2829 |
msgstr ""
|
2830 |
|
2831 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:8
|
|
|
2832 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:6
|
2833 |
#: views/newsletter/templates/blocks/posts/widget.hbs:4
|
2834 |
msgid "Posts"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:9
|
|
|
2838 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:7
|
2839 |
msgid "Pages"
|
2840 |
msgstr ""
|
2841 |
|
2842 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:10
|
|
|
2843 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:8
|
2844 |
msgid "MailPoet pages"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:26
|
|
|
2848 |
msgid "Include"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:32
|
|
|
2852 |
msgid "Exclude"
|
2853 |
msgstr ""
|
2854 |
|
2855 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:41
|
|
|
2856 |
#: views/newsletter/templates/blocks/posts/settings.hbs:7
|
2857 |
msgid "Display options"
|
2858 |
msgstr ""
|
2859 |
|
2860 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:45
|
|
|
2861 |
msgid "Hide display options"
|
2862 |
msgstr ""
|
2863 |
|
2864 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:52
|
|
|
2865 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:5
|
2866 |
msgid "Excerpt"
|
2867 |
msgstr ""
|
2868 |
|
2869 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:58
|
|
|
2870 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:11
|
2871 |
msgid "Full post"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:64
|
|
|
2875 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:17
|
2876 |
msgid "Title only"
|
2877 |
msgstr ""
|
2878 |
|
2879 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:70
|
|
|
2880 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:25
|
2881 |
msgid "Title Format"
|
2882 |
msgstr ""
|
2883 |
|
2884 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:74
|
|
|
2885 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:29
|
2886 |
#: views/newsletter/templates/components/sidebar/styles.hbs:34
|
2887 |
msgid "Heading 1"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:80
|
|
|
2891 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:35
|
2892 |
#: views/newsletter/templates/components/sidebar/styles.hbs:49
|
2893 |
msgid "Heading 2"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:86
|
|
|
2897 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:41
|
2898 |
#: views/newsletter/templates/components/sidebar/styles.hbs:64
|
2899 |
msgid "Heading 3"
|
2900 |
msgstr ""
|
2901 |
|
2902 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:92
|
|
|
2903 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:47
|
2904 |
msgid "Show as list"
|
2905 |
msgstr ""
|
2906 |
|
2907 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:98
|
|
|
2908 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:53
|
2909 |
msgid "Title Alignment"
|
2910 |
msgstr ""
|
2911 |
|
2912 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:102
|
|
|
|
|
2913 |
#: views/newsletter/templates/blocks/button/settings.hbs:27
|
2914 |
#: views/newsletter/templates/blocks/footer/settings.hbs:41
|
2915 |
#: views/newsletter/templates/blocks/header/settings.hbs:41
|
2916 |
#: views/newsletter/templates/blocks/image/settings.hbs:65
|
2917 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:57
|
|
|
2918 |
msgid "Left"
|
2919 |
msgstr ""
|
2920 |
|
2921 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:108
|
|
|
2922 |
#: views/newsletter/templates/blocks/button/settings.hbs:33
|
2923 |
#: views/newsletter/templates/blocks/footer/settings.hbs:47
|
2924 |
#: views/newsletter/templates/blocks/header/settings.hbs:47
|
@@ -2928,25 +2962,29 @@ msgid "Center"
|
|
2928 |
msgstr ""
|
2929 |
|
2930 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:114
|
|
|
|
|
2931 |
#: views/newsletter/templates/blocks/button/settings.hbs:39
|
2932 |
#: views/newsletter/templates/blocks/footer/settings.hbs:53
|
2933 |
#: views/newsletter/templates/blocks/header/settings.hbs:53
|
2934 |
#: views/newsletter/templates/blocks/image/settings.hbs:77
|
2935 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:69
|
|
|
2936 |
msgid "Right"
|
2937 |
msgstr ""
|
2938 |
|
2939 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:120
|
|
|
2940 |
msgid "Title as links"
|
2941 |
msgstr ""
|
2942 |
|
2943 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:138
|
|
|
2944 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:95
|
2945 |
msgid "Featured image position"
|
2946 |
msgstr ""
|
2947 |
|
2948 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:142
|
2949 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:99
|
2950 |
msgid "Below title"
|
2951 |
msgstr ""
|
2952 |
|
@@ -2955,94 +2993,124 @@ msgid "Above title"
|
|
2955 |
msgstr ""
|
2956 |
|
2957 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
|
2958 |
-
#: views/newsletter/templates/blocks/
|
|
|
2959 |
#: views/premium.html:55
|
2960 |
msgid "None"
|
2961 |
msgstr ""
|
2962 |
|
2963 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:161
|
2964 |
-
#: views/newsletter/templates/blocks/
|
|
|
2965 |
msgid "Image width"
|
2966 |
msgstr ""
|
2967 |
|
2968 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:165
|
|
|
2969 |
#: views/newsletter/templates/blocks/image/settings.hbs:55
|
2970 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:
|
2971 |
msgid "Full width"
|
2972 |
msgstr ""
|
2973 |
|
2974 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:171
|
2975 |
-
#: views/newsletter/templates/blocks/
|
|
|
2976 |
msgid "Padded"
|
2977 |
msgstr ""
|
2978 |
|
2979 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:179
|
2980 |
-
#: views/newsletter/templates/blocks/
|
|
|
2981 |
msgid "Show author"
|
2982 |
msgstr ""
|
2983 |
|
2984 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:189
|
2985 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:215
|
2986 |
-
#: views/newsletter/templates/blocks/
|
2987 |
-
#: views/newsletter/templates/blocks/
|
|
|
|
|
2988 |
msgid "Above text"
|
2989 |
msgstr ""
|
2990 |
|
2991 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:195
|
2992 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:221
|
2993 |
-
#: views/newsletter/templates/blocks/
|
2994 |
-
#: views/newsletter/templates/blocks/
|
|
|
|
|
2995 |
msgid "Below text"
|
2996 |
msgstr ""
|
2997 |
|
2998 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:198
|
2999 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:224
|
3000 |
-
#: views/newsletter/templates/blocks/
|
3001 |
-
#: views/newsletter/templates/blocks/
|
|
|
|
|
3002 |
msgid "Preceded by:"
|
3003 |
msgstr ""
|
3004 |
|
3005 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:205
|
3006 |
-
#: views/newsletter/templates/blocks/
|
|
|
3007 |
msgid "Show categories"
|
3008 |
msgstr ""
|
3009 |
|
3010 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:233
|
3011 |
-
#: views/newsletter/templates/blocks/
|
|
|
3012 |
msgid "\"Read more\" text"
|
3013 |
msgstr ""
|
3014 |
|
3015 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:252
|
3016 |
-
#: views/newsletter/templates/blocks/
|
|
|
3017 |
msgid "Design a button"
|
3018 |
msgstr ""
|
3019 |
|
3020 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:260
|
|
|
3021 |
msgid "Sort by"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:264
|
|
|
3025 |
msgid "Newest"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:270
|
|
|
3029 |
msgid "Oldest"
|
3030 |
msgstr ""
|
3031 |
|
3032 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:277
|
3033 |
-
#: views/newsletter/templates/blocks/
|
|
|
3034 |
msgid "Show divider between posts"
|
3035 |
msgstr ""
|
3036 |
|
3037 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:291
|
3038 |
-
#: views/newsletter/templates/blocks/
|
|
|
3039 |
msgid "Select divider"
|
3040 |
msgstr ""
|
3041 |
|
3042 |
#: views/newsletter/templates/blocks/automatedLatestContent/widget.hbs:4
|
|
|
3043 |
msgid "Automatic Latest Content"
|
3044 |
msgstr ""
|
3045 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3046 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:2
|
3047 |
msgid "Switch editing layer"
|
3048 |
msgstr ""
|
@@ -3214,10 +3282,6 @@ msgstr ""
|
|
3214 |
msgid "Make the post title into a link"
|
3215 |
msgstr ""
|
3216 |
|
3217 |
-
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:105
|
3218 |
-
msgid "Above block"
|
3219 |
-
msgstr ""
|
3220 |
-
|
3221 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:3
|
3222 |
msgid "Search..."
|
3223 |
msgstr ""
|
@@ -5608,17 +5672,17 @@ msgctxt "Form input type"
|
|
5608 |
msgid "Select"
|
5609 |
msgstr ""
|
5610 |
|
5611 |
-
#: views/newsletter/editor.html:
|
5612 |
msgctxt "select color"
|
5613 |
msgid "Select"
|
5614 |
msgstr ""
|
5615 |
|
5616 |
-
#: views/newsletter/editor.html:
|
5617 |
msgctxt "cancel color selection"
|
5618 |
msgid "Cancel"
|
5619 |
msgstr ""
|
5620 |
|
5621 |
-
#: views/newsletter/editor.html:
|
5622 |
msgctxt "Configuration options for automatic email events"
|
5623 |
msgid "Conditions"
|
5624 |
msgstr ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
+
"POT-Creation-Date: 2018-06-05 16:20:27+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
78 |
#: lib/API/MP/v1/API.php:18
|
79 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:44
|
80 |
#: lib/Subscribers/ImportExport/PersonalDataExporters/SubscriberExporter.php:40
|
81 |
+
#: views/newsletter/editor.html:959 views/newsletter/editor.html:960
|
82 |
msgid "Email"
|
83 |
msgstr ""
|
84 |
|
412 |
msgid "Newsletter"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: lib/Config/Menu.php:113 views/newsletter/editor.html:240
|
416 |
msgid "Newsletter Editor"
|
417 |
msgstr ""
|
418 |
|
651 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:255
|
652 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:278
|
653 |
#: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:194
|
654 |
+
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:281
|
655 |
#: lib/Config/PopulatorData/Templates/SimpleText.php:139
|
656 |
#: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:285
|
657 |
#: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:194
|
797 |
"below.</span></p>"
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:161
|
801 |
+
#: views/newsletter/editor.html:997 views/newsletter/editor.html:1052
|
802 |
+
#: views/newsletter/editor.html:1177
|
803 |
msgid "Author:"
|
804 |
msgstr ""
|
805 |
|
806 |
+
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:163
|
807 |
+
#: views/newsletter/editor.html:999 views/newsletter/editor.html:1054
|
808 |
+
#: views/newsletter/editor.html:1179
|
809 |
msgid "Categories:"
|
810 |
msgstr ""
|
811 |
|
812 |
+
#: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:168
|
813 |
msgid "Read the post"
|
814 |
msgstr ""
|
815 |
|
1429 |
msgid "Bounced"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: lib/Newsletter/Editor/PostContentManager.php:92
|
1433 |
msgid "Click here to view media."
|
1434 |
msgstr ""
|
1435 |
|
1519 |
msgstr ""
|
1520 |
|
1521 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:85
|
1522 |
+
#: views/newsletter/editor.html:1134
|
1523 |
msgid "Unsubscribe"
|
1524 |
msgstr ""
|
1525 |
|
1528 |
msgstr ""
|
1529 |
|
1530 |
#: lib/Newsletter/Shortcodes/ShortcodesHelper.php:93
|
1531 |
+
#: views/newsletter/editor.html:1134
|
1532 |
msgid "Manage subscription"
|
1533 |
msgstr ""
|
1534 |
|
1683 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:183
|
1684 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:209
|
1685 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:287
|
1686 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:130
|
1687 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:195
|
1688 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:221
|
1689 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:299
|
1690 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:85
|
1691 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:151
|
1692 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:177
|
1693 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:239
|
1694 |
#: views/premium.html:62 views/premium.html:63 views/settings/advanced.html:122
|
1695 |
#: views/settings/advanced.html:162 views/settings/advanced.html:202
|
1696 |
#: views/settings/bounce.html:148 views/settings/bounce.html:179
|
2050 |
#: views/form/templates/settings/required.hbs:9
|
2051 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:124
|
2052 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
|
2053 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:124
|
2054 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:293
|
2055 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
|
2056 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:233
|
2057 |
#: views/premium.html:56 views/settings/advanced.html:111
|
2058 |
#: views/settings/advanced.html:151 views/settings/advanced.html:191
|
2059 |
#: views/settings/bounce.html:190 views/settings/mta.html:588
|
2111 |
#: views/form/templates/settings/field_form.hbs:61
|
2112 |
#: views/form/templates/settings/submit.hbs:2
|
2113 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:299
|
2114 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:311
|
2115 |
#: views/newsletter/templates/blocks/button/settings.hbs:117
|
2116 |
#: views/newsletter/templates/blocks/container/settings.hbs:14
|
2117 |
#: views/newsletter/templates/blocks/divider/settings.hbs:37
|
2577 |
msgid "IMPORT STOPPED BY USER"
|
2578 |
msgstr ""
|
2579 |
|
2580 |
+
#: views/newsletter/editor.html:268
|
2581 |
msgid "Insert/edit link"
|
2582 |
msgstr ""
|
2583 |
|
2584 |
+
#: views/newsletter/editor.html:275
|
2585 |
msgid "Type"
|
2586 |
msgstr ""
|
2587 |
|
2588 |
+
#: views/newsletter/editor.html:277
|
2589 |
msgid "Link to a web page"
|
2590 |
msgstr ""
|
2591 |
|
2592 |
+
#: views/newsletter/editor.html:278
|
2593 |
msgid "Browser version"
|
2594 |
msgstr ""
|
2595 |
|
2596 |
+
#: views/newsletter/editor.html:279
|
2597 |
msgid "Unsubcribe page"
|
2598 |
msgstr ""
|
2599 |
|
2600 |
+
#: views/newsletter/editor.html:280
|
2601 |
msgid "Manage your subscription page"
|
2602 |
msgstr ""
|
2603 |
|
2604 |
+
#: views/newsletter/editor.html:285 views/newsletter/editor.html:935
|
2605 |
+
#: views/newsletter/editor.html:940 views/newsletter/editor.html:945
|
2606 |
+
#: views/newsletter/editor.html:950 views/newsletter/editor.html:955
|
2607 |
+
#: views/newsletter/editor.html:965 views/newsletter/editor.html:970
|
2608 |
+
#: views/newsletter/editor.html:975 views/newsletter/editor.html:980
|
2609 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
|
2610 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:249
|
2611 |
#: views/newsletter/templates/blocks/button/settings.hbs:14
|
2612 |
#: views/newsletter/templates/blocks/image/settings.hbs:4
|
2613 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:205
|
2614 |
msgid "Link"
|
2615 |
msgstr ""
|
2616 |
|
2617 |
+
#: views/newsletter/editor.html:288
|
2618 |
msgid "Title"
|
2619 |
msgstr ""
|
2620 |
|
2621 |
+
#: views/newsletter/editor.html:291
|
2622 |
msgid "Open link in a new window/tab"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
+
#: views/newsletter/editor.html:297
|
2626 |
msgid "Search your content"
|
2627 |
msgstr ""
|
2628 |
|
2629 |
+
#: views/newsletter/editor.html:309
|
2630 |
msgid "No search term specified. Showing recent items."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
+
#: views/newsletter/editor.html:319
|
2634 |
msgid "Add Link"
|
2635 |
msgstr ""
|
2636 |
|
2637 |
+
#: views/newsletter/editor.html:322
|
2638 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
|
2639 |
#: views/newsletters.html:270
|
2640 |
#: views/subscribers/importExport/import/step2.html:150
|
2641 |
msgid "Cancel"
|
2642 |
msgstr ""
|
2643 |
|
2644 |
+
#: views/newsletter/editor.html:330
|
2645 |
msgid ""
|
2646 |
"Didn't receive the test email? Read our [link]quick guide[/link] to sending "
|
2647 |
"issues. <br><br>A MailPoet logo will appear in the footer of all emails "
|
2648 |
"sent with the free version of MailPoet."
|
2649 |
msgstr ""
|
2650 |
|
2651 |
+
#: views/newsletter/editor.html:334
|
2652 |
msgid "Failed to fetch available posts"
|
2653 |
msgstr ""
|
2654 |
|
2655 |
+
#: views/newsletter/editor.html:335
|
2656 |
msgid "Failed to fetch rendered posts"
|
2657 |
msgstr ""
|
2658 |
|
2659 |
+
#: views/newsletter/editor.html:336
|
2660 |
msgid "Select a shortcode"
|
2661 |
msgstr ""
|
2662 |
|
2663 |
+
#: views/newsletter/editor.html:337
|
2664 |
msgid ""
|
2665 |
"All emails must include an \"Unsubscribe\" link. Add a footer widget to "
|
2666 |
"your email to continue."
|
2667 |
msgstr ""
|
2668 |
|
2669 |
+
#: views/newsletter/editor.html:338
|
2670 |
msgid ""
|
2671 |
"Please add an \"Automated Latest Content\" widget to the email from the "
|
2672 |
"right sidebar."
|
2673 |
msgstr ""
|
2674 |
|
2675 |
+
#: views/newsletter/editor.html:339
|
2676 |
msgid "Enter an email address to send the preview newsletter to."
|
2677 |
msgstr ""
|
2678 |
|
2679 |
+
#: views/newsletter/editor.html:340
|
2680 |
msgid "Your test email has been sent!"
|
2681 |
msgstr ""
|
2682 |
|
2683 |
+
#: views/newsletter/editor.html:341
|
2684 |
msgid "Please add a template name"
|
2685 |
msgstr ""
|
2686 |
|
2687 |
+
#: views/newsletter/editor.html:343
|
2688 |
msgid ""
|
2689 |
"We only include fonts that will display in all email clients. We understand "
|
2690 |
"it can feel limiting!"
|
2691 |
msgstr ""
|
2692 |
|
2693 |
+
#: views/newsletter/editor.html:344
|
2694 |
msgid ""
|
2695 |
"You can add MailPoet shortcodes here. For example, you can add your "
|
2696 |
"subscribers' first names by using this shortcode: [subscriber:firstname | "
|
2697 |
"default:reader] Simply copy and paste the shortcode into the field."
|
2698 |
msgstr ""
|
2699 |
|
2700 |
+
#: views/newsletter/editor.html:345
|
2701 |
msgid ""
|
2702 |
"This optional text will appear in your subscribers' inboxes, beside the "
|
2703 |
"subject line. Write something enticing!"
|
2704 |
msgstr ""
|
2705 |
|
2706 |
+
#: views/newsletter/editor.html:346
|
2707 |
msgid ""
|
2708 |
"This option eliminates padding around the image. It only works if the image "
|
2709 |
"is larger than the column size."
|
2710 |
msgstr ""
|
2711 |
|
2712 |
+
#: views/newsletter/editor.html:347
|
2713 |
msgid ""
|
2714 |
"Use images with widths of at least 1,000 pixels to ensure sharp display on "
|
2715 |
"high density screens, like mobile devices."
|
2716 |
msgstr ""
|
2717 |
|
2718 |
+
#: views/newsletter/editor.html:348
|
2719 |
msgid "Template has been saved."
|
2720 |
msgstr ""
|
2721 |
|
2722 |
+
#: views/newsletter/editor.html:349
|
2723 |
msgid "Template has not been saved, please try again"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: views/newsletter/editor.html:350
|
2727 |
msgid "Categories & tags"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
+
#: views/newsletter/editor.html:351
|
2731 |
msgid "There is no content to display."
|
2732 |
msgstr ""
|
2733 |
|
2734 |
+
#: views/newsletter/editor.html:352
|
2735 |
msgid ""
|
2736 |
"Your preview should open in a new tab. Please ensure your browser is not "
|
2737 |
"blocking popups from this page."
|
2738 |
msgstr ""
|
2739 |
|
2740 |
+
#: views/newsletter/editor.html:353
|
2741 |
msgid "Newsletter Preview"
|
2742 |
msgstr ""
|
2743 |
|
2744 |
+
#: views/newsletter/editor.html:354
|
2745 |
msgid ""
|
2746 |
"Contents of this newsletter are corrupted and may be lost, you may need to "
|
2747 |
"add new content to this newsletter, or create a new one. If possible, "
|
2748 |
"please contact us and report this issue."
|
2749 |
msgstr ""
|
2750 |
|
2751 |
+
#: views/newsletter/editor.html:355
|
2752 |
msgid "Saving..."
|
2753 |
msgstr ""
|
2754 |
|
2755 |
+
#: views/newsletter/editor.html:356
|
2756 |
msgid "There are unsaved changes which will be lost if you leave this page."
|
2757 |
msgstr ""
|
2758 |
|
2759 |
+
#: views/newsletter/editor.html:359
|
2760 |
msgid "Email sending has been paused."
|
2761 |
msgstr ""
|
2762 |
|
2763 |
+
#: views/newsletter/editor.html:361 views/newsletters.html:58
|
2764 |
msgid "Select type"
|
2765 |
msgstr ""
|
2766 |
|
2767 |
+
#: views/newsletter/editor.html:362 views/newsletters.html:59
|
2768 |
msgid "Events"
|
2769 |
msgstr ""
|
2770 |
|
2771 |
+
#: views/newsletter/editor.html:364 views/newsletters.html:61
|
2772 |
msgid "Template"
|
2773 |
msgstr ""
|
2774 |
|
2775 |
+
#: views/newsletter/editor.html:365 views/newsletters.html:62
|
2776 |
msgid "Designer"
|
2777 |
msgstr ""
|
2778 |
|
2779 |
+
#: views/newsletter/editor.html:366 views/newsletters.html:63
|
2780 |
msgid "Send"
|
2781 |
msgstr ""
|
2782 |
|
2783 |
+
#: views/newsletter/editor.html:954
|
2784 |
msgid "Website"
|
2785 |
msgstr ""
|
2786 |
|
2787 |
+
#: views/newsletter/editor.html:979
|
2788 |
msgid "Custom"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
+
#: views/newsletter/editor.html:1001 views/newsletter/editor.html:1003
|
2792 |
+
#: views/newsletter/editor.html:1056 views/newsletter/editor.html:1058
|
2793 |
+
#: views/newsletter/editor.html:1181 views/newsletter/editor.html:1183
|
2794 |
msgid "Read more"
|
2795 |
msgstr ""
|
2796 |
|
2797 |
+
#: views/newsletter/editor.html:1096
|
2798 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
|
2799 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:255
|
2800 |
#: views/newsletter/templates/blocks/button/settings.hbs:1
|
2801 |
#: views/newsletter/templates/blocks/button/widget.hbs:4
|
2802 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:211
|
2803 |
msgid "Button"
|
2804 |
msgstr ""
|
2805 |
|
2806 |
+
#: views/newsletter/editor.html:1134
|
2807 |
msgid "Add your postal address here!"
|
2808 |
msgstr ""
|
2809 |
|
2810 |
+
#: views/newsletter/editor.html:1154
|
2811 |
msgid "An image of..."
|
2812 |
msgstr ""
|
2813 |
|
2814 |
+
#: views/newsletter/editor.html:1232
|
2815 |
msgid "Facebook"
|
2816 |
msgstr ""
|
2817 |
|
2818 |
+
#: views/newsletter/editor.html:1243
|
2819 |
msgid "Twitter"
|
2820 |
msgstr ""
|
2821 |
|
2822 |
+
#: views/newsletter/editor.html:1256
|
2823 |
msgid "Edit this to insert text."
|
2824 |
msgstr ""
|
2825 |
|
2826 |
+
#: views/newsletter/editor.html:1259
|
2827 |
msgid "Display problems?"
|
2828 |
msgstr ""
|
2829 |
|
2830 |
+
#: views/newsletter/editor.html:1260
|
2831 |
msgid "Open this email in your web browser."
|
2832 |
msgstr ""
|
2833 |
|
2834 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:1
|
2835 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:1
|
2836 |
#: views/newsletter/templates/blocks/posts/settings.hbs:1
|
2837 |
msgid "Post selection"
|
2838 |
msgstr ""
|
2839 |
|
2840 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:4
|
2841 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:4
|
2842 |
msgid "Show:"
|
2843 |
msgstr ""
|
2844 |
|
2845 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:8
|
2846 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:8
|
2847 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:6
|
2848 |
#: views/newsletter/templates/blocks/posts/widget.hbs:4
|
2849 |
msgid "Posts"
|
2850 |
msgstr ""
|
2851 |
|
2852 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:9
|
2853 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:9
|
2854 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:7
|
2855 |
msgid "Pages"
|
2856 |
msgstr ""
|
2857 |
|
2858 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:10
|
2859 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:10
|
2860 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:8
|
2861 |
msgid "MailPoet pages"
|
2862 |
msgstr ""
|
2863 |
|
2864 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:26
|
2865 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:26
|
2866 |
msgid "Include"
|
2867 |
msgstr ""
|
2868 |
|
2869 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:32
|
2870 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:32
|
2871 |
msgid "Exclude"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:41
|
2875 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:41
|
2876 |
#: views/newsletter/templates/blocks/posts/settings.hbs:7
|
2877 |
msgid "Display options"
|
2878 |
msgstr ""
|
2879 |
|
2880 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:45
|
2881 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:45
|
2882 |
msgid "Hide display options"
|
2883 |
msgstr ""
|
2884 |
|
2885 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:52
|
2886 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:52
|
2887 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:5
|
2888 |
msgid "Excerpt"
|
2889 |
msgstr ""
|
2890 |
|
2891 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:58
|
2892 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:58
|
2893 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:11
|
2894 |
msgid "Full post"
|
2895 |
msgstr ""
|
2896 |
|
2897 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:64
|
2898 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:64
|
2899 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:17
|
2900 |
msgid "Title only"
|
2901 |
msgstr ""
|
2902 |
|
2903 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:70
|
2904 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:70
|
2905 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:25
|
2906 |
msgid "Title Format"
|
2907 |
msgstr ""
|
2908 |
|
2909 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:74
|
2910 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:74
|
2911 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:29
|
2912 |
#: views/newsletter/templates/components/sidebar/styles.hbs:34
|
2913 |
msgid "Heading 1"
|
2914 |
msgstr ""
|
2915 |
|
2916 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:80
|
2917 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:80
|
2918 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:35
|
2919 |
#: views/newsletter/templates/components/sidebar/styles.hbs:49
|
2920 |
msgid "Heading 2"
|
2921 |
msgstr ""
|
2922 |
|
2923 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:86
|
2924 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:86
|
2925 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:41
|
2926 |
#: views/newsletter/templates/components/sidebar/styles.hbs:64
|
2927 |
msgid "Heading 3"
|
2928 |
msgstr ""
|
2929 |
|
2930 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:92
|
2931 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:92
|
2932 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:47
|
2933 |
msgid "Show as list"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:98
|
2937 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:98
|
2938 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:53
|
2939 |
msgid "Title Alignment"
|
2940 |
msgstr ""
|
2941 |
|
2942 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:102
|
2943 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:102
|
2944 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:148
|
2945 |
#: views/newsletter/templates/blocks/button/settings.hbs:27
|
2946 |
#: views/newsletter/templates/blocks/footer/settings.hbs:41
|
2947 |
#: views/newsletter/templates/blocks/header/settings.hbs:41
|
2948 |
#: views/newsletter/templates/blocks/image/settings.hbs:65
|
2949 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:57
|
2950 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:105
|
2951 |
msgid "Left"
|
2952 |
msgstr ""
|
2953 |
|
2954 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:108
|
2955 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:108
|
2956 |
#: views/newsletter/templates/blocks/button/settings.hbs:33
|
2957 |
#: views/newsletter/templates/blocks/footer/settings.hbs:47
|
2958 |
#: views/newsletter/templates/blocks/header/settings.hbs:47
|
2962 |
msgstr ""
|
2963 |
|
2964 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:114
|
2965 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:114
|
2966 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:154
|
2967 |
#: views/newsletter/templates/blocks/button/settings.hbs:39
|
2968 |
#: views/newsletter/templates/blocks/footer/settings.hbs:53
|
2969 |
#: views/newsletter/templates/blocks/header/settings.hbs:53
|
2970 |
#: views/newsletter/templates/blocks/image/settings.hbs:77
|
2971 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:69
|
2972 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:111
|
2973 |
msgid "Right"
|
2974 |
msgstr ""
|
2975 |
|
2976 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:120
|
2977 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:120
|
2978 |
msgid "Title as links"
|
2979 |
msgstr ""
|
2980 |
|
2981 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:138
|
2982 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:138
|
2983 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:95
|
2984 |
msgid "Featured image position"
|
2985 |
msgstr ""
|
2986 |
|
2987 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:142
|
|
|
2988 |
msgid "Below title"
|
2989 |
msgstr ""
|
2990 |
|
2993 |
msgstr ""
|
2994 |
|
2995 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
|
2996 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:166
|
2997 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:123
|
2998 |
#: views/premium.html:55
|
2999 |
msgid "None"
|
3000 |
msgstr ""
|
3001 |
|
3002 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:161
|
3003 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:173
|
3004 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:129
|
3005 |
msgid "Image width"
|
3006 |
msgstr ""
|
3007 |
|
3008 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:165
|
3009 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:177
|
3010 |
#: views/newsletter/templates/blocks/image/settings.hbs:55
|
3011 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:133
|
3012 |
msgid "Full width"
|
3013 |
msgstr ""
|
3014 |
|
3015 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:171
|
3016 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:183
|
3017 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
|
3018 |
msgid "Padded"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:179
|
3022 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:191
|
3023 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:147
|
3024 |
msgid "Show author"
|
3025 |
msgstr ""
|
3026 |
|
3027 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:189
|
3028 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:215
|
3029 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:201
|
3030 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:227
|
3031 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:157
|
3032 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:183
|
3033 |
msgid "Above text"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:195
|
3037 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:221
|
3038 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:207
|
3039 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:233
|
3040 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:163
|
3041 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:189
|
3042 |
msgid "Below text"
|
3043 |
msgstr ""
|
3044 |
|
3045 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:198
|
3046 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:224
|
3047 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:210
|
3048 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:236
|
3049 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:166
|
3050 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:192
|
3051 |
msgid "Preceded by:"
|
3052 |
msgstr ""
|
3053 |
|
3054 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:205
|
3055 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:217
|
3056 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:173
|
3057 |
msgid "Show categories"
|
3058 |
msgstr ""
|
3059 |
|
3060 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:233
|
3061 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:245
|
3062 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:201
|
3063 |
msgid "\"Read more\" text"
|
3064 |
msgstr ""
|
3065 |
|
3066 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:252
|
3067 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:264
|
3068 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:220
|
3069 |
msgid "Design a button"
|
3070 |
msgstr ""
|
3071 |
|
3072 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:260
|
3073 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:272
|
3074 |
msgid "Sort by"
|
3075 |
msgstr ""
|
3076 |
|
3077 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:264
|
3078 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:276
|
3079 |
msgid "Newest"
|
3080 |
msgstr ""
|
3081 |
|
3082 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:270
|
3083 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:282
|
3084 |
msgid "Oldest"
|
3085 |
msgstr ""
|
3086 |
|
3087 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:277
|
3088 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:289
|
3089 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:229
|
3090 |
msgid "Show divider between posts"
|
3091 |
msgstr ""
|
3092 |
|
3093 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:291
|
3094 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:303
|
3095 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:243
|
3096 |
msgid "Select divider"
|
3097 |
msgstr ""
|
3098 |
|
3099 |
#: views/newsletter/templates/blocks/automatedLatestContent/widget.hbs:4
|
3100 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/widget.hbs:4
|
3101 |
msgid "Automatic Latest Content"
|
3102 |
msgstr ""
|
3103 |
|
3104 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:142
|
3105 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:99
|
3106 |
+
msgid "Centered"
|
3107 |
+
msgstr ""
|
3108 |
+
|
3109 |
+
#: views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs:160
|
3110 |
+
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:117
|
3111 |
+
msgid "Alternate"
|
3112 |
+
msgstr ""
|
3113 |
+
|
3114 |
#: views/newsletter/templates/blocks/base/toolsGeneric.hbs:2
|
3115 |
msgid "Switch editing layer"
|
3116 |
msgstr ""
|
3282 |
msgid "Make the post title into a link"
|
3283 |
msgstr ""
|
3284 |
|
|
|
|
|
|
|
|
|
3285 |
#: views/newsletter/templates/blocks/posts/settingsSelection.hbs:3
|
3286 |
msgid "Search..."
|
3287 |
msgstr ""
|
5672 |
msgid "Select"
|
5673 |
msgstr ""
|
5674 |
|
5675 |
+
#: views/newsletter/editor.html:357
|
5676 |
msgctxt "select color"
|
5677 |
msgid "Select"
|
5678 |
msgstr ""
|
5679 |
|
5680 |
+
#: views/newsletter/editor.html:358
|
5681 |
msgctxt "cancel color selection"
|
5682 |
msgid "Cancel"
|
5683 |
msgstr ""
|
5684 |
|
5685 |
+
#: views/newsletter/editor.html:363 views/newsletters.html:60
|
5686 |
msgctxt "Configuration options for automatic email events"
|
5687 |
msgid "Conditions"
|
5688 |
msgstr ""
|
lib/Config/Env.php
CHANGED
@@ -5,6 +5,8 @@ namespace MailPoet\Config;
|
|
5 |
if(!defined('ABSPATH')) exit;
|
6 |
|
7 |
class Env {
|
|
|
|
|
8 |
static $version;
|
9 |
static $plugin_name;
|
10 |
static $plugin_path;
|
5 |
if(!defined('ABSPATH')) exit;
|
6 |
|
7 |
class Env {
|
8 |
+
const NEWSLETTER_CONTENT_WIDTH = 1320;
|
9 |
+
|
10 |
static $version;
|
11 |
static $plugin_name;
|
12 |
static $plugin_path;
|
lib/Config/Initializer.php
CHANGED
@@ -213,7 +213,7 @@ class Initializer {
|
|
213 |
}
|
214 |
|
215 |
function setupImages() {
|
216 |
-
add_image_size('mailpoet_newsletter_max',
|
217 |
}
|
218 |
|
219 |
function setupChangelog() {
|
@@ -301,4 +301,4 @@ class Initializer {
|
|
301 |
}
|
302 |
return WPNotice::displayError($exception);
|
303 |
}
|
304 |
-
}
|
213 |
}
|
214 |
|
215 |
function setupImages() {
|
216 |
+
add_image_size('mailpoet_newsletter_max', Env::NEWSLETTER_CONTENT_WIDTH);
|
217 |
}
|
218 |
|
219 |
function setupChangelog() {
|
301 |
}
|
302 |
return WPNotice::displayError($exception);
|
303 |
}
|
304 |
+
}
|
lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php
CHANGED
@@ -130,93 +130,6 @@ class PostNotificationsBlank1Column {
|
|
130 |
"borderColor" => "#aaaaaa"
|
131 |
)
|
132 |
)
|
133 |
-
)
|
134 |
-
)
|
135 |
-
)
|
136 |
-
)
|
137 |
-
),
|
138 |
-
array(
|
139 |
-
"type" => "container",
|
140 |
-
"orientation" => "horizontal",
|
141 |
-
"styles" => array(
|
142 |
-
"block" => array(
|
143 |
-
"backgroundColor" => "transparent"
|
144 |
-
)
|
145 |
-
),
|
146 |
-
"blocks" => array(
|
147 |
-
array(
|
148 |
-
"type" => "container",
|
149 |
-
"orientation" => "vertical",
|
150 |
-
"styles" => array(
|
151 |
-
"block" => array(
|
152 |
-
"backgroundColor" => "transparent"
|
153 |
-
)
|
154 |
-
),
|
155 |
-
"blocks" => array(
|
156 |
-
array(
|
157 |
-
"type" => "spacer",
|
158 |
-
"styles" => array(
|
159 |
-
"block" => array(
|
160 |
-
"backgroundColor" => "transparent",
|
161 |
-
"height" => "40px"
|
162 |
-
)
|
163 |
-
)
|
164 |
-
),
|
165 |
-
array(
|
166 |
-
"type" => "automatedLatestContent",
|
167 |
-
"amount" => "3",
|
168 |
-
"contentType" => "post",
|
169 |
-
"terms" => array(),
|
170 |
-
"inclusionType" => "include",
|
171 |
-
"displayType" => "excerpt",
|
172 |
-
"titleFormat" => "h3",
|
173 |
-
"titleAlignment" => "left",
|
174 |
-
"titleIsLink" => false,
|
175 |
-
"imageFullWidth" => false,
|
176 |
-
"featuredImagePosition" => "belowTitle",
|
177 |
-
"showAuthor" => "no",
|
178 |
-
"authorPrecededBy" => __("Author:", 'mailpoet'),
|
179 |
-
"showCategories" => "no",
|
180 |
-
"categoriesPrecededBy" => __("Categories:", 'mailpoet'),
|
181 |
-
"readMoreType" => "button",
|
182 |
-
"readMoreText" => "Read more",
|
183 |
-
"readMoreButton" => array(
|
184 |
-
"type" => "button",
|
185 |
-
"text" => __("Read the post", 'mailpoet'),
|
186 |
-
"url" => "[postLink]",
|
187 |
-
"styles" => array(
|
188 |
-
"block" => array(
|
189 |
-
"backgroundColor" => "#2ea1cd",
|
190 |
-
"borderColor" => "#0074a2",
|
191 |
-
"borderWidth" => "1px",
|
192 |
-
"borderRadius" => "5px",
|
193 |
-
"borderStyle" => "solid",
|
194 |
-
"width" => "160px",
|
195 |
-
"lineHeight" => "30px",
|
196 |
-
"fontColor" => "#ffffff",
|
197 |
-
"fontFamily" => "Verdana",
|
198 |
-
"fontSize" => "16px",
|
199 |
-
"fontWeight" => "normal",
|
200 |
-
"textAlign" => "center"
|
201 |
-
)
|
202 |
-
)
|
203 |
-
),
|
204 |
-
"sortBy" => "newest",
|
205 |
-
"showDivider" => true,
|
206 |
-
"divider" => array(
|
207 |
-
"type" => "divider",
|
208 |
-
"styles" => array(
|
209 |
-
"block" => array(
|
210 |
-
"backgroundColor" => "transparent",
|
211 |
-
"padding" => "13px",
|
212 |
-
"borderStyle" => "solid",
|
213 |
-
"borderWidth" => "3px",
|
214 |
-
"borderColor" => "#aaaaaa"
|
215 |
-
)
|
216 |
-
)
|
217 |
-
),
|
218 |
-
"backgroundColor" => "#ffffff",
|
219 |
-
"backgroundColorAlternate" => "#eeeeee"
|
220 |
),
|
221 |
array(
|
222 |
"type" => "spacer",
|
@@ -231,6 +144,63 @@ class PostNotificationsBlank1Column {
|
|
231 |
)
|
232 |
)
|
233 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
array(
|
235 |
"type" => "container",
|
236 |
"orientation" => "horizontal",
|
@@ -249,6 +219,15 @@ class PostNotificationsBlank1Column {
|
|
249 |
)
|
250 |
),
|
251 |
"blocks" => array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
array(
|
253 |
"type" => "divider",
|
254 |
"styles" => array(
|
130 |
"borderColor" => "#aaaaaa"
|
131 |
)
|
132 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
),
|
134 |
array(
|
135 |
"type" => "spacer",
|
144 |
)
|
145 |
)
|
146 |
),
|
147 |
+
array(
|
148 |
+
"type" => "automatedLatestContentLayout",
|
149 |
+
"withLayout" => true,
|
150 |
+
"amount" => "3",
|
151 |
+
"contentType" => "post",
|
152 |
+
"terms" => array(),
|
153 |
+
"inclusionType" => "include",
|
154 |
+
"displayType" => "excerpt",
|
155 |
+
"titleFormat" => "h3",
|
156 |
+
"titleAlignment" => "left",
|
157 |
+
"titleIsLink" => false,
|
158 |
+
"imageFullWidth" => false,
|
159 |
+
"featuredImagePosition" => "alternate",
|
160 |
+
"showAuthor" => "no",
|
161 |
+
"authorPrecededBy" => __("Author:", 'mailpoet'),
|
162 |
+
"showCategories" => "no",
|
163 |
+
"categoriesPrecededBy" => __("Categories:", 'mailpoet'),
|
164 |
+
"readMoreType" => "button",
|
165 |
+
"readMoreText" => "Read more",
|
166 |
+
"readMoreButton" => array(
|
167 |
+
"type" => "button",
|
168 |
+
"text" => __("Read the post", 'mailpoet'),
|
169 |
+
"url" => "[postLink]",
|
170 |
+
"styles" => array(
|
171 |
+
"block" => array(
|
172 |
+
"backgroundColor" => "#2ea1cd",
|
173 |
+
"borderColor" => "#0074a2",
|
174 |
+
"borderWidth" => "1px",
|
175 |
+
"borderRadius" => "5px",
|
176 |
+
"borderStyle" => "solid",
|
177 |
+
"width" => "160px",
|
178 |
+
"lineHeight" => "30px",
|
179 |
+
"fontColor" => "#ffffff",
|
180 |
+
"fontFamily" => "Verdana",
|
181 |
+
"fontSize" => "16px",
|
182 |
+
"fontWeight" => "normal",
|
183 |
+
"textAlign" => "center"
|
184 |
+
)
|
185 |
+
)
|
186 |
+
),
|
187 |
+
"sortBy" => "newest",
|
188 |
+
"showDivider" => true,
|
189 |
+
"divider" => array(
|
190 |
+
"type" => "divider",
|
191 |
+
"styles" => array(
|
192 |
+
"block" => array(
|
193 |
+
"backgroundColor" => "transparent",
|
194 |
+
"padding" => "13px",
|
195 |
+
"borderStyle" => "solid",
|
196 |
+
"borderWidth" => "3px",
|
197 |
+
"borderColor" => "#aaaaaa"
|
198 |
+
)
|
199 |
+
)
|
200 |
+
),
|
201 |
+
"backgroundColor" => "#ffffff",
|
202 |
+
"backgroundColorAlternate" => "#eeeeee"
|
203 |
+
),
|
204 |
array(
|
205 |
"type" => "container",
|
206 |
"orientation" => "horizontal",
|
219 |
)
|
220 |
),
|
221 |
"blocks" => array(
|
222 |
+
array(
|
223 |
+
"type" => "spacer",
|
224 |
+
"styles" => array(
|
225 |
+
"block" => array(
|
226 |
+
"backgroundColor" => "transparent",
|
227 |
+
"height" => "40px"
|
228 |
+
)
|
229 |
+
)
|
230 |
+
),
|
231 |
array(
|
232 |
"type" => "divider",
|
233 |
"styles" => array(
|
lib/Newsletter/Editor/LayoutHelper.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MailPoet\Newsletter\Editor;
|
3 |
+
|
4 |
+
class LayoutHelper {
|
5 |
+
static function row($blocks) {
|
6 |
+
return array(
|
7 |
+
'type' => 'container',
|
8 |
+
'orientation' => 'horizontal',
|
9 |
+
'styles' => array(
|
10 |
+
'block' => array(
|
11 |
+
'backgroundColor' => 'transparent'
|
12 |
+
)
|
13 |
+
),
|
14 |
+
'blocks' => $blocks
|
15 |
+
);
|
16 |
+
}
|
17 |
+
|
18 |
+
static function col($blocks) {
|
19 |
+
return array(
|
20 |
+
'type' => 'container',
|
21 |
+
'orientation' => 'vertical',
|
22 |
+
'styles' => array(
|
23 |
+
'block' => array(
|
24 |
+
'backgroundColor' => 'transparent'
|
25 |
+
)
|
26 |
+
),
|
27 |
+
'blocks' => $blocks
|
28 |
+
);
|
29 |
+
}
|
30 |
+
}
|
lib/Newsletter/Editor/PostContentManager.php
CHANGED
@@ -30,7 +30,7 @@ class PostContentManager {
|
|
30 |
}
|
31 |
}
|
32 |
|
33 |
-
function filterContent($content) {
|
34 |
$content = self::convertEmbeddedContent($content);
|
35 |
|
36 |
// convert h4 h5 h6 to h3
|
@@ -45,11 +45,15 @@ class PostContentManager {
|
|
45 |
|
46 |
// strip useless tags
|
47 |
$tags_not_being_stripped = array(
|
48 |
-
'<
|
49 |
-
'<
|
50 |
);
|
51 |
$content = strip_tags($content, implode('', $tags_not_being_stripped));
|
52 |
-
|
|
|
|
|
|
|
|
|
53 |
$content = trim($content);
|
54 |
|
55 |
return $content;
|
30 |
}
|
31 |
}
|
32 |
|
33 |
+
function filterContent($content, $with_post_class = true) {
|
34 |
$content = self::convertEmbeddedContent($content);
|
35 |
|
36 |
// convert h4 h5 h6 to h3
|
45 |
|
46 |
// strip useless tags
|
47 |
$tags_not_being_stripped = array(
|
48 |
+
'<p>', '<em>', '<span>', '<b>', '<strong>', '<i>',
|
49 |
+
'<a>', '<ul>', '<ol>', '<li>', '<br>', '<blockquote>'
|
50 |
);
|
51 |
$content = strip_tags($content, implode('', $tags_not_being_stripped));
|
52 |
+
if($with_post_class) {
|
53 |
+
$content = str_replace('<p', '<p class="' . self::WP_POST_CLASS .'"', wpautop($content));
|
54 |
+
} else {
|
55 |
+
$content = wpautop($content);
|
56 |
+
}
|
57 |
$content = trim($content);
|
58 |
|
59 |
return $content;
|
lib/Newsletter/Editor/PostListTransformer.php
CHANGED
@@ -18,7 +18,7 @@ class PostListTransformer {
|
|
18 |
|
19 |
foreach($posts as $index => $post) {
|
20 |
if($use_divider && $index > 0) {
|
21 |
-
$results[] = $this->
|
22 |
}
|
23 |
|
24 |
$results = array_merge($results, $this->transformer->transform($post));
|
18 |
|
19 |
foreach($posts as $index => $post) {
|
20 |
if($use_divider && $index > 0) {
|
21 |
+
$results[] = $this->transformer->getDivider();
|
22 |
}
|
23 |
|
24 |
$results = array_merge($results, $this->transformer->transform($post));
|
lib/Newsletter/Editor/PostTransformer.php
CHANGED
@@ -4,155 +4,199 @@ namespace MailPoet\Newsletter\Editor;
|
|
4 |
use MailPoet\Newsletter\Editor\PostContentManager;
|
5 |
use MailPoet\Newsletter\Editor\MetaInformationManager;
|
6 |
use MailPoet\Newsletter\Editor\StructureTransformer;
|
|
|
|
|
7 |
|
8 |
if(!defined('ABSPATH')) exit;
|
9 |
|
10 |
class PostTransformer {
|
11 |
|
|
|
|
|
|
|
|
|
12 |
function __construct($args) {
|
13 |
$this->args = $args;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
}
|
15 |
|
16 |
function transform($post) {
|
17 |
-
$
|
18 |
-
|
|
|
|
|
|
|
19 |
|
20 |
-
|
21 |
-
$content = $
|
22 |
-
$
|
|
|
23 |
|
24 |
-
$
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
$structure = $this->appendPostTitle($post, $structure);
|
29 |
-
$structure = $this->appendFeaturedImage(
|
30 |
-
$post,
|
31 |
-
$this->args['displayType'],
|
32 |
-
filter_var($this->args['imageFullWidth'], FILTER_VALIDATE_BOOLEAN),
|
33 |
-
$structure
|
34 |
-
);
|
35 |
} else {
|
36 |
-
if($
|
37 |
-
$
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
);
|
43 |
}
|
44 |
-
$structure = $this->appendPostTitle($post, $structure);
|
45 |
}
|
46 |
-
$structure = $this->appendReadMore($post->ID, $structure);
|
47 |
|
48 |
-
return $
|
49 |
}
|
50 |
|
51 |
-
private function
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
}
|
56 |
|
57 |
-
$
|
58 |
-
$
|
59 |
-
|
60 |
-
(bool)$image_full_width
|
61 |
-
);
|
62 |
|
63 |
-
if(
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
|
70 |
-
private function
|
71 |
-
|
72 |
-
|
|
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
'mailpoet_newsletter_max'
|
78 |
-
);
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
'_wp_attachment_image_alt',
|
84 |
-
true
|
85 |
-
)));
|
86 |
-
if(strlen($alt_text) === 0) {
|
87 |
-
// if the alt text is empty then use the post title
|
88 |
-
$alt_text = trim(strip_tags($post_title));
|
89 |
-
}
|
90 |
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
'block' => array(
|
101 |
-
'textAlign' => 'center',
|
102 |
-
),
|
103 |
-
),
|
104 |
-
);
|
105 |
}
|
|
|
106 |
}
|
107 |
|
108 |
-
private function
|
109 |
-
$
|
|
|
|
|
110 |
|
111 |
-
|
112 |
-
|
|
|
113 |
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
|
|
|
|
124 |
}
|
125 |
|
126 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
}
|
128 |
|
129 |
-
private function
|
130 |
if($this->args['readMoreType'] === 'button') {
|
131 |
$button = $this->args['readMoreButton'];
|
132 |
-
$button['url'] = get_permalink($
|
133 |
-
|
134 |
-
} else {
|
135 |
-
$total_blocks = count($structure);
|
136 |
-
$read_more_text = sprintf(
|
137 |
-
'<p><a href="%s">%s</a></p>',
|
138 |
-
get_permalink($post_id),
|
139 |
-
$this->args['readMoreText']
|
140 |
-
);
|
141 |
-
|
142 |
-
if($structure[$total_blocks - 1]['type'] === 'text') {
|
143 |
-
$structure[$total_blocks - 1]['text'] .= $read_more_text;
|
144 |
-
} else {
|
145 |
-
$structure[] = array(
|
146 |
-
'type' => 'text',
|
147 |
-
'text' => $read_more_text,
|
148 |
-
);
|
149 |
-
}
|
150 |
}
|
151 |
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
}
|
154 |
|
155 |
-
private function
|
156 |
$title = $post->post_title;
|
157 |
|
158 |
if(filter_var($this->args['titleIsLink'], FILTER_VALIDATE_BOOLEAN)) {
|
@@ -169,6 +213,11 @@ class PostTransformer {
|
|
169 |
|
170 |
$alignment = (in_array($this->args['titleAlignment'], array('left', 'right', 'center'))) ? $this->args['titleAlignment'] : 'left';
|
171 |
|
172 |
-
|
|
|
|
|
|
|
|
|
173 |
}
|
|
|
174 |
}
|
4 |
use MailPoet\Newsletter\Editor\PostContentManager;
|
5 |
use MailPoet\Newsletter\Editor\MetaInformationManager;
|
6 |
use MailPoet\Newsletter\Editor\StructureTransformer;
|
7 |
+
use MailPoet\Newsletter\Editor\LayoutHelper;
|
8 |
+
use MailPoet\WP\Functions as WPFunctions;
|
9 |
|
10 |
if(!defined('ABSPATH')) exit;
|
11 |
|
12 |
class PostTransformer {
|
13 |
|
14 |
+
private $args;
|
15 |
+
private $with_layout;
|
16 |
+
private $image_position;
|
17 |
+
|
18 |
function __construct($args) {
|
19 |
$this->args = $args;
|
20 |
+
$this->with_layout = (bool)filter_var($args['withLayout'], FILTER_VALIDATE_BOOLEAN);
|
21 |
+
$this->image_position = 'left';
|
22 |
+
}
|
23 |
+
|
24 |
+
function getDivider() {
|
25 |
+
if(empty($this->with_layout)) {
|
26 |
+
return $this->args['divider'];
|
27 |
+
}
|
28 |
+
return LayoutHelper::row(array(
|
29 |
+
LayoutHelper::col(array($this->args['divider']))
|
30 |
+
));
|
31 |
}
|
32 |
|
33 |
function transform($post) {
|
34 |
+
if(empty($this->with_layout)) {
|
35 |
+
return $this->getStructure($post);
|
36 |
+
}
|
37 |
+
return $this->getStructureWithLayout($post);
|
38 |
+
}
|
39 |
|
40 |
+
private function getStructure($post) {
|
41 |
+
$content = $this->getContent($post, true);
|
42 |
+
$title = $this->getTitle($post);
|
43 |
+
$featured_image = $this->getFeaturedImage($post);
|
44 |
|
45 |
+
$image_position = $this->args['featuredImagePosition'];
|
46 |
+
|
47 |
+
if($featured_image && $image_position === 'belowTitle') {
|
48 |
+
array_unshift($content, $title, $featured_image);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
} else {
|
50 |
+
if($content[0]['type'] === 'text') {
|
51 |
+
$content[0]['text'] = $title['text'] . $content[0]['text'];
|
52 |
+
} else {
|
53 |
+
array_unshift($content, $title);
|
54 |
+
}
|
55 |
+
if($featured_image) {
|
56 |
+
array_unshift($content, $featured_image);
|
57 |
}
|
|
|
58 |
}
|
|
|
59 |
|
60 |
+
return $content;
|
61 |
}
|
62 |
|
63 |
+
private function getStructureWithLayout($post) {
|
64 |
+
$content = $this->getContent($post, false);
|
65 |
+
$title = $this->getTitle($post);
|
66 |
+
$featured_image = $this->getFeaturedImage($post);
|
67 |
+
|
68 |
+
$position = $this->args['featuredImagePosition'];
|
69 |
+
|
70 |
+
if(!$featured_image || $position === 'none' || $this->args['displayType'] !== 'excerpt') {
|
71 |
+
array_unshift($content, $title);
|
72 |
+
|
73 |
+
return array(
|
74 |
+
LayoutHelper::row(array(
|
75 |
+
LayoutHelper::col($content)
|
76 |
+
))
|
77 |
+
);
|
78 |
}
|
79 |
|
80 |
+
if($position === 'aboveTitle' || $position === 'belowTitle') {
|
81 |
+
$position = 'centered';
|
82 |
+
}
|
|
|
|
|
83 |
|
84 |
+
if($position === 'centered') {
|
85 |
+
array_unshift($content, $title, $featured_image);
|
86 |
+
return array(
|
87 |
+
LayoutHelper::row(array(
|
88 |
+
LayoutHelper::col($content)
|
89 |
+
))
|
90 |
+
);
|
91 |
+
}
|
92 |
+
|
93 |
+
if($position === 'alternate') {
|
94 |
+
$position = $this->nextImagePosition();
|
95 |
}
|
96 |
|
97 |
+
$content = ($position === 'left')
|
98 |
+
? array(
|
99 |
+
LayoutHelper::col(array($featured_image)),
|
100 |
+
LayoutHelper::col($content)
|
101 |
+
)
|
102 |
+
: array(
|
103 |
+
LayoutHelper::col($content),
|
104 |
+
LayoutHelper::col(array($featured_image))
|
105 |
+
);
|
106 |
+
|
107 |
+
return array(
|
108 |
+
LayoutHelper::row(array(
|
109 |
+
LayoutHelper::col(array($title))
|
110 |
+
)),
|
111 |
+
LayoutHelper::row($content)
|
112 |
+
);
|
113 |
}
|
114 |
|
115 |
+
private function nextImagePosition() {
|
116 |
+
$this->image_position = ($this->image_position === 'left') ? 'right' : 'left';
|
117 |
+
return $this->image_position;
|
118 |
+
}
|
119 |
|
120 |
+
private function getContent($post, $with_post_class) {
|
121 |
+
$content_manager = new PostContentManager();
|
122 |
+
$meta_manager = new MetaInformationManager();
|
|
|
|
|
123 |
|
124 |
+
$content = $content_manager->getContent($post, $this->args['displayType']);
|
125 |
+
$content = $meta_manager->appendMetaInformation($content, $post, $this->args);
|
126 |
+
$content = $content_manager->filterContent($content, $with_post_class);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
+
$structure_transformer = new StructureTransformer();
|
129 |
+
$content = $structure_transformer->transform($content, $this->args['imageFullWidth'] === true);
|
130 |
+
|
131 |
+
$read_more_btn = $this->getReadMoreButton($post);
|
132 |
+
$blocks_count = count($content);
|
133 |
+
if($read_more_btn['type'] === 'text' && $blocks_count > 0 && $content[$blocks_count - 1]['type'] === 'text') {
|
134 |
+
$content[$blocks_count - 1]['text'] .= $read_more_btn['text'];
|
135 |
+
} else {
|
136 |
+
$content[] = $read_more_btn;
|
|
|
|
|
|
|
|
|
|
|
137 |
}
|
138 |
+
return $content;
|
139 |
}
|
140 |
|
141 |
+
private function getFeaturedImage($post) {
|
142 |
+
$post_id = $post->ID;
|
143 |
+
$post_title = $post->post_title;
|
144 |
+
$image_full_width = (bool)filter_var($this->args['imageFullWidth'], FILTER_VALIDATE_BOOLEAN);
|
145 |
|
146 |
+
if(!has_post_thumbnail($post_id)) {
|
147 |
+
return false;
|
148 |
+
}
|
149 |
|
150 |
+
$thumbnail_id = get_post_thumbnail_id($post_id);
|
151 |
+
$image_info = WPFunctions::getImageInfo($thumbnail_id);
|
152 |
+
|
153 |
+
// get alt text
|
154 |
+
$alt_text = trim(strip_tags(get_post_meta(
|
155 |
+
$thumbnail_id,
|
156 |
+
'_wp_attachment_image_alt',
|
157 |
+
true
|
158 |
+
)));
|
159 |
+
if(strlen($alt_text) === 0) {
|
160 |
+
// if the alt text is empty then use the post title
|
161 |
+
$alt_text = trim(strip_tags($post_title));
|
162 |
}
|
163 |
|
164 |
+
return array(
|
165 |
+
'type' => 'image',
|
166 |
+
'link' => get_permalink($post_id),
|
167 |
+
'src' => $image_info[0],
|
168 |
+
'alt' => $alt_text,
|
169 |
+
'fullWidth' => $image_full_width,
|
170 |
+
'width' => $image_info[1],
|
171 |
+
'height' => $image_info[2],
|
172 |
+
'styles' => array(
|
173 |
+
'block' => array(
|
174 |
+
'textAlign' => 'center',
|
175 |
+
),
|
176 |
+
),
|
177 |
+
);
|
178 |
}
|
179 |
|
180 |
+
private function getReadMoreButton($post) {
|
181 |
if($this->args['readMoreType'] === 'button') {
|
182 |
$button = $this->args['readMoreButton'];
|
183 |
+
$button['url'] = get_permalink($post->ID);
|
184 |
+
return $button;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
}
|
186 |
|
187 |
+
$read_more_text = sprintf(
|
188 |
+
'<p><a href="%s">%s</a></p>',
|
189 |
+
get_permalink($post->ID),
|
190 |
+
$this->args['readMoreText']
|
191 |
+
);
|
192 |
+
|
193 |
+
return array(
|
194 |
+
'type' => 'text',
|
195 |
+
'text' => $read_more_text,
|
196 |
+
);
|
197 |
}
|
198 |
|
199 |
+
private function getTitle($post) {
|
200 |
$title = $post->post_title;
|
201 |
|
202 |
if(filter_var($this->args['titleIsLink'], FILTER_VALIDATE_BOOLEAN)) {
|
213 |
|
214 |
$alignment = (in_array($this->args['titleAlignment'], array('left', 'right', 'center'))) ? $this->args['titleAlignment'] : 'left';
|
215 |
|
216 |
+
$title = '<' . $tag . ' data-post-id="' . $post->ID . '" style="text-align: ' . $alignment . ';">' . $title . '</' . $tag . '>';
|
217 |
+
return array(
|
218 |
+
'type' => 'text',
|
219 |
+
'text' => $title
|
220 |
+
);
|
221 |
}
|
222 |
+
|
223 |
}
|
lib/Newsletter/Renderer/Blocks/Renderer.php
CHANGED
@@ -64,16 +64,20 @@ class Renderer {
|
|
64 |
return $block_class::render($block, $column_count);
|
65 |
}
|
66 |
|
67 |
-
function
|
68 |
$posts_to_exclude = $this->getPosts();
|
69 |
$ALC_posts = $this->ALC->getPosts($args, $posts_to_exclude);
|
70 |
foreach($ALC_posts as $post) {
|
71 |
$posts_to_exclude[] = $post->ID;
|
72 |
}
|
|
|
|
|
|
|
|
|
|
|
73 |
$transformed_posts = array(
|
74 |
-
'blocks' => $this->
|
75 |
);
|
76 |
-
$this->setPosts($posts_to_exclude);
|
77 |
$transformed_posts = StylesHelper::applyTextAlignment($transformed_posts);
|
78 |
$rendered_posts = $this->render($transformed_posts, $column_count);
|
79 |
return $rendered_posts;
|
64 |
return $block_class::render($block, $column_count);
|
65 |
}
|
66 |
|
67 |
+
function automatedLatestContentTransformedPosts($args) {
|
68 |
$posts_to_exclude = $this->getPosts();
|
69 |
$ALC_posts = $this->ALC->getPosts($args, $posts_to_exclude);
|
70 |
foreach($ALC_posts as $post) {
|
71 |
$posts_to_exclude[] = $post->ID;
|
72 |
}
|
73 |
+
$this->setPosts($posts_to_exclude);
|
74 |
+
return $this->ALC->transformPosts($args, $ALC_posts);
|
75 |
+
}
|
76 |
+
|
77 |
+
function processAutomatedLatestContent($args, $column_count) {
|
78 |
$transformed_posts = array(
|
79 |
+
'blocks' => $this->automatedLatestContentTransformedPosts($args)
|
80 |
);
|
|
|
81 |
$transformed_posts = StylesHelper::applyTextAlignment($transformed_posts);
|
82 |
$rendered_posts = $this->render($transformed_posts, $column_count);
|
83 |
return $rendered_posts;
|
lib/Newsletter/Renderer/Renderer.php
CHANGED
@@ -48,6 +48,7 @@ class Renderer {
|
|
48 |
$content = $this->addMailpoetLogoContentBlock($content, $styles);
|
49 |
}
|
50 |
|
|
|
51 |
$rendered_body = $this->renderBody($content);
|
52 |
$rendered_styles = $this->renderStyles($styles);
|
53 |
|
@@ -70,6 +71,26 @@ class Renderer {
|
|
70 |
$rendered_newsletter;
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
function renderBody($content) {
|
74 |
$blocks = (array_key_exists('blocks', $content))
|
75 |
? $content['blocks']
|
48 |
$content = $this->addMailpoetLogoContentBlock($content, $styles);
|
49 |
}
|
50 |
|
51 |
+
$content = $this->preProcessALC($content);
|
52 |
$rendered_body = $this->renderBody($content);
|
53 |
$rendered_styles = $this->renderStyles($styles);
|
54 |
|
71 |
$rendered_newsletter;
|
72 |
}
|
73 |
|
74 |
+
function preProcessALC($content) {
|
75 |
+
$blocks = array();
|
76 |
+
$content_blocks = (array_key_exists('blocks', $content))
|
77 |
+
? $content['blocks']
|
78 |
+
: array();
|
79 |
+
foreach($content_blocks as $block) {
|
80 |
+
if($block['type'] === 'automatedLatestContentLayout') {
|
81 |
+
$blocks = array_merge(
|
82 |
+
$blocks,
|
83 |
+
$this->blocks_renderer->automatedLatestContentTransformedPosts($block)
|
84 |
+
);
|
85 |
+
} else {
|
86 |
+
$blocks[] = $block;
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
$content['blocks'] = $blocks;
|
91 |
+
return $content;
|
92 |
+
}
|
93 |
+
|
94 |
function renderBody($content) {
|
95 |
$blocks = (array_key_exists('blocks', $content))
|
96 |
? $content['blocks']
|
lib/Settings/Pages.php
CHANGED
@@ -37,7 +37,6 @@ class Pages {
|
|
37 |
'post_title' => __('MailPoet Page', 'mailpoet'),
|
38 |
'post_name' => 'subscriptions'
|
39 |
));
|
40 |
-
flush_rewrite_rules();
|
41 |
|
42 |
return ((int)$id > 0) ? (int)$id : false;
|
43 |
}
|
37 |
'post_title' => __('MailPoet Page', 'mailpoet'),
|
38 |
'post_name' => 'subscriptions'
|
39 |
));
|
|
|
40 |
|
41 |
return ((int)$id > 0) ? (int)$id : false;
|
42 |
}
|
lib/WP/Functions.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php
|
2 |
namespace MailPoet\WP;
|
3 |
|
|
|
|
|
4 |
class Functions {
|
5 |
static function wpRemotePost() {
|
6 |
return self::callWithFallback('wp_remote_post', func_get_args());
|
@@ -33,4 +35,23 @@ class Functions {
|
|
33 |
}
|
34 |
return call_user_func_array($func, $args);
|
35 |
}
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
namespace MailPoet\WP;
|
3 |
|
4 |
+
use Mailpoet\Config\Env;
|
5 |
+
|
6 |
class Functions {
|
7 |
static function wpRemotePost() {
|
8 |
return self::callWithFallback('wp_remote_post', func_get_args());
|
35 |
}
|
36 |
return call_user_func_array($func, $args);
|
37 |
}
|
38 |
+
|
39 |
+
static function getImageInfo($id) {
|
40 |
+
/*
|
41 |
+
* In some cases wp_get_attachment_image_src ignore the second parameter
|
42 |
+
* and use global variable $content_width value instead.
|
43 |
+
* By overriding it ourselves when ensure a constant behaviour regardless
|
44 |
+
* of the user setup.
|
45 |
+
*
|
46 |
+
* https://mailpoet.atlassian.net/browse/MAILPOET-1365
|
47 |
+
*/
|
48 |
+
global $content_width; // default is NULL
|
49 |
+
|
50 |
+
$content_width_copy = $content_width;
|
51 |
+
$content_width = Env::NEWSLETTER_CONTENT_WIDTH;
|
52 |
+
$image_info = wp_get_attachment_image_src($id, 'mailpoet_newsletter_max');
|
53 |
+
$content_width = $content_width_copy;
|
54 |
+
|
55 |
+
return $image_info;
|
56 |
+
}
|
57 |
+
}
|
mailpoet.php
CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
|
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
-
* Version: 3.7.
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
@@ -20,7 +20,7 @@ if(!defined('ABSPATH')) exit;
|
|
20 |
*/
|
21 |
|
22 |
$mailpoet_plugin = array(
|
23 |
-
'version' => '3.7.
|
24 |
'filename' => __FILE__,
|
25 |
'path' => dirname(__FILE__),
|
26 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
+
* Version: 3.7.5
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
20 |
*/
|
21 |
|
22 |
$mailpoet_plugin = array(
|
23 |
+
'version' => '3.7.5',
|
24 |
'filename' => __FILE__,
|
25 |
'path' => dirname(__FILE__),
|
26 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: mailpoet, wysija
|
|
3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, subscription, SMTP
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 4.9
|
6 |
-
Requires PHP: 5.
|
7 |
-
Stable tag: 3.7.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -21,10 +21,11 @@ The new MailPoet is here! With our new free sending plan, send unlimited emails
|
|
21 |
* Improved user experience
|
22 |
* Easy configuration
|
23 |
* Solid reliability
|
|
|
24 |
* Weekly releases
|
25 |
|
26 |
= See it in action. =
|
27 |
-
[Test the demo](http://
|
28 |
[vimeo https://vimeo.com/223581490]
|
29 |
|
30 |
= Before you install =
|
@@ -33,12 +34,11 @@ Take note:
|
|
33 |
|
34 |
* Not optimized for right-to-left (RTL) languages yet
|
35 |
* Multisite works, but is not officially supported
|
36 |
-
* Please check the translations in your language
|
37 |
* Review [our minimum requirements](http://beta.docs.mailpoet.com/article/152-minimum-requirements-for-mailpoet-3)
|
38 |
|
39 |
= What about the Premium? =
|
40 |
|
41 |
-
MailPoet is fully featured in its free version and works up until you have 2000 subscribers.
|
42 |
|
43 |
The Premium version adds the following features:
|
44 |
|
@@ -46,7 +46,7 @@ The Premium version adds the following features:
|
|
46 |
* ability to send Welcome Emails automatically; i.e. "Welcome to my Newsletter” autoresponders or multi-email courses
|
47 |
* removes the small MailPoet logo in the footer of your emails
|
48 |
* same day support (Monday to Friday)
|
49 |
-
* send to over 2000 subscribers with your own sending method
|
50 |
* see the [short video summary on the Premium](http://beta.docs.mailpoet.com/article/208-video-overview-of-mailpoet-premium)
|
51 |
|
52 |
Plus: if you sign up to one of our sending plans, you’ll get all of these fancy features for free. Visit the Premium page inside the plugin for more info.
|
@@ -75,6 +75,8 @@ We welcome experienced translators to translate directly on [our Transifex proje
|
|
75 |
|
76 |
[Security audits are made by LogicalTrust](https://logicaltrust.net/en/), an independent third party.
|
77 |
|
|
|
|
|
78 |
== Installation ==
|
79 |
|
80 |
There are 3 ways to install this plugin:
|
@@ -116,6 +118,10 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
116 |
|
117 |
== Changelog ==
|
118 |
|
|
|
|
|
|
|
|
|
119 |
= 3.7.4 - 2018-05-30 =
|
120 |
* Added: What's New page no longer shows after every update;
|
121 |
* Improved: template selection page thumbnails are larger;
|
@@ -321,7 +327,7 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
321 |
= 3.0.0 - 2017-09-20 =
|
322 |
* Official launch of the new MailPoet. :)
|
323 |
* Improved: MailPoet 3 now works with other plugins that use a supported version of Twig templating engine. Thanks @supsysticcom;
|
324 |
-
* Added: we now offer a free sending plan for 2000 subscribers or less. Thx MailPoet!
|
325 |
|
326 |
= 3.0.0-rc.2.0.3 - 2017-09-12 =
|
327 |
* Added: hook to override default cron URL. Thanks Fred;
|
@@ -382,310 +388,6 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
382 |
* Fixed: [newsletter:post_title] properly displays titles of custom post types; Thanks Adrian!
|
383 |
* Fixed: post images are displayed in expected positions; Thanks Gary!
|
384 |
|
385 |
-
= 3.0.0-beta.37.0.0 - 2017-07-25 =
|
386 |
-
* Improved: we collect more informative data from those who share it with us in order to improve the plugin. You should share too!
|
387 |
-
* Fixed: deleted WordPress users are removed from the WordPress Users list as well;
|
388 |
-
* Fixed: shortcodes for custom fields are now inserted correctly in the email designer;
|
389 |
-
* Fixed: MailPoet Sending Service stays activated after saving Settings;
|
390 |
-
* Fixed: improperly rendered newsletters will not be sent. Thanks Scott and Alison!
|
391 |
-
|
392 |
-
= 3.0.0-beta.36.3.1 - 2017-07-18 =
|
393 |
-
* Added: you can now duplicate any item in the email designer;
|
394 |
-
* Improved: added filter to specify custom SMTP connection timeout value. Thanks, Rik;
|
395 |
-
* Improved: added a custom filter to whitelist JS/CSS styles that are loaded by other plugins on MailPoet's pages;
|
396 |
-
* Fixed: sending is not interrupted if a newsletter contains URLs with unicode characters. Thanks Sam!
|
397 |
-
* Fixed: sent date is reset when newsletter is duplicated;
|
398 |
-
* Fixed: SMTP sending frequency is properly updated when changed;
|
399 |
-
* Fixed: newsletter/form/subscriber listings no longer throw an error on some PHP 5.3 hosts. Thanks, Jérôme!
|
400 |
-
|
401 |
-
= 3.0.0-beta.36.3.0 - 2017-07-11 =
|
402 |
-
* Added: migration script for MailPoet 2 users now imports settings;
|
403 |
-
* Fixed: emails are sorted by date sent instead of modified date; thanks Scott
|
404 |
-
* Fixed: cursor doesn't get stuck on "move" icon when editing text;
|
405 |
-
* Fixed: repeated subscriptions don't duplicate welcome notifications; thanks Luc
|
406 |
-
|
407 |
-
= 3.0.0-beta.36.2.0 - 2017-07-04 =
|
408 |
-
* Added: 13 new default templates to choose from;
|
409 |
-
* Added: a new help page in the menu to help us help you better;
|
410 |
-
* Added: link to list of form plugins that work with MailPoet in our Forms page;
|
411 |
-
* Improved: display infinite number of posts in Posts widget, instead of just 10. Kudos Keith!
|
412 |
-
* Fixed: DB connection exceptions are now safely handled. Thanks FxB!
|
413 |
-
|
414 |
-
= 3.0.0-beta.36.1.0 - 2017-06-27 =
|
415 |
-
* Improved: error notices are displayed when AJAX requests fail;
|
416 |
-
* Added: MailPoet 2 forms are migrated when MailPoet 3 is installed/reinstalled.
|
417 |
-
|
418 |
-
= 3.0.0-beta.36.0.1 - 2017-06-23 =
|
419 |
-
* Improved: preheader will now be hidden in Gmail app;
|
420 |
-
* Fixed: subscription forms now work without causing "missing file" errors. Thanks Sherrie!
|
421 |
-
* Fixed: Premium keys status to not be invalidated after saving Settings;
|
422 |
-
* Fixed: email shortcodes are correctly displayed in Newsletter Archive. Thanks Lukáš!
|
423 |
-
|
424 |
-
= 3.0.0-beta.36.0.0 - 2017-06-20 =
|
425 |
-
* Improved: "view in browser" link is disabled in preview emails. Thanks Riccardo;
|
426 |
-
* Improved: show a warning when activating on Multisite environments;
|
427 |
-
* Improved: suggest to activate MailPoet Sending Service after a successful key check;
|
428 |
-
* Added: MailPoet Sending Service sets the List-Unsubscribe header;
|
429 |
-
* Fixed: outdated JS assets aren't loaded in new releases;
|
430 |
-
* Fixed: settings page is not blocked any more if you have more than 2000 subscribers which prevented Premium version updates;
|
431 |
-
* Fixed: premium and Welcome pages are correctly formated in WP 4.8;
|
432 |
-
* Fixed: scheduled regular emails are now sent. Thanks Karen;
|
433 |
-
* Fixed: subscription form no longer throws an error message when included in a popup. Thanks Gregor.
|
434 |
-
|
435 |
-
= 3.0.0-beta.35.0.0 - 2017-06-13 =
|
436 |
-
* Added: Subscriber and List migration from MailPoet 2, the option will be offered for new installations;
|
437 |
-
* Improved: switched "Your own website" sending method to use PHPMailer library from WordPress;
|
438 |
-
* Fixed: "Subscriber Import" screen allows hyphens in email addresses. Thanks Cherian!
|
439 |
-
* Fixed: "addSubscriber" method in MailPoet API sends confirmation emails;
|
440 |
-
* Fixed: subscribing via a IPv6 IP address no longer throws an error. Thanks Hans!
|
441 |
-
* Fixed: "Apply to all" button will apply button styles to Automatic Latest Content as well.
|
442 |
-
|
443 |
-
= 3.0.0-beta.34.0.0 - 2017-06-07 =
|
444 |
-
* 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;
|
445 |
-
* Improved: email addresses are now validated using WordPress is_email() function. Kudos Oskar L. and cnesbit!;
|
446 |
-
* Fixed: scheduled sending queue jobs are paused when post notifications are made inactive. Thanks Oskar!;
|
447 |
-
* Fixed: post notification history no longer displays a blank subject for notifications waiting in queue. Thanks Lyon!;
|
448 |
-
* Fixed: unsubscribe page works again. Thx Oskar one more time!
|
449 |
-
|
450 |
-
= 3.0.0-beta.33.1 - 2017-05-30 =
|
451 |
-
* 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;
|
452 |
-
* Improved: we now bundle multilingual translations that are 75% or more complete (a decrease from the previous 100% threshold);
|
453 |
-
* Fixed: âccéntèd characters are properly saved and displayed on all hosts. WARNING: non-English language users are advised to back up their data before upgrading and contact us if something goes wrong;
|
454 |
-
* Fixed: when subscription confirmation is enabled, welcome notifications will only get scheduled when one's subscription is confirmed;
|
455 |
-
* Fixed: subscription widget's title is styled in accordance with the active theme's configuration.
|
456 |
-
|
457 |
-
= 3.0.0-beta.32 - 2017-05-23 =
|
458 |
-
* Added: API methods for 3rd party plugins to add subscribers to MailPoet. Which plugins should we connect to?
|
459 |
-
|
460 |
-
= 3.0.0-beta.31 - 2017-05-16 =
|
461 |
-
* Improved: automated latest content/post search boxes in the editor now return up to 50 results;
|
462 |
-
* Improved: sending progress bar got a new look;
|
463 |
-
* Improved: added plugin translation to Persian (Iran) language. Thanks Ali Reza Karami!;
|
464 |
-
* Fixed: submission of subscription forms with list selection or non-text custom fields works again. Thanks Stefan!;
|
465 |
-
* Fixed: subscription management form works fine again;
|
466 |
-
* Fixed: invalid license key warnings are temporarily hidden if a key is empty;
|
467 |
-
* Fixed: newsletter link hashes are much less likely to collide. Thanks Sherrie!
|
468 |
-
|
469 |
-
= 3.0.0-beta.30 - 2017-05-09 =
|
470 |
-
* Fixed: list buttons (ordered/unordered) were added back to the newsletter designer's WYSIWYG editor;
|
471 |
-
* Fixed: form editor properly displays custom field names when notifying of a completed action (add/update/delete).
|
472 |
-
|
473 |
-
= 3.0.0-beta.29 - 2017-05-02 =
|
474 |
-
* Improved: added a filter allowing to change SMTP configuration. Thanks Luc!
|
475 |
-
* Improved: MailPoet now avoids conflicts with other plugins using footer scripts. Thanks Mike and Tina!
|
476 |
-
* Improved: newsletter stats got a new look with badges that help to measure success of a campaign at a glance;
|
477 |
-
* Fixed: restoring trashed newsletters restores their sending progress;
|
478 |
-
* Fixed: trashed lists no longer appear as filters in listings. Thanks Luc and Marc!
|
479 |
-
* Fixed: newsletter subscription management, unsubscription, browser preview links now work with tracking enabled. Thanks Luc!
|
480 |
-
* Fixed: shortcode's default values are used when subscriber does not have first or last names;
|
481 |
-
|
482 |
-
= 3.0.0-beta.28 - 2017-04-25 =
|
483 |
-
* Improved: now you can subscribe to our brand new email course on the Welcome page;
|
484 |
-
* Improved: API is now versioned. More goodies to come for 3rd-party developers!;
|
485 |
-
* Improved: List-Unsubscribe header is added to newsletters. Thanks Galfom!;
|
486 |
-
* Fixed: editor loads correct newsletters when the specified ID is greater or equals 1000. Thx Jim!;
|
487 |
-
* Fixed: created/updated subscriber count in import results is shown correctly for large imports;
|
488 |
-
* Fixed: some admin notices now look better.
|
489 |
-
|
490 |
-
= 3.0.0-beta.27 - 2017-04-18 =
|
491 |
-
* Improved: a warning notice is displayed when the required XML and ZIP PHP extensions are missing;
|
492 |
-
* Improved: when clicking on a text block inside the email designer, the text cursor is positioned where the click took place;
|
493 |
-
* Fixed: images remotely added inside the email designer are no longer scaled down to 281px. Thanks Marcelo;
|
494 |
-
* Fixed: re-importing existing users no longer resets their subscription status. Thanks Marco;
|
495 |
-
* Fixed: import doesn't fail on certain MySQL setups when subscribers' first and/or last name data is missing;
|
496 |
-
* Fixed: custom field data no longer get swapped between subscribers during import. Thanks Eric;
|
497 |
-
* Fixed: automatic latest content block now properly applies tag/category filters to all post types. Thanks JP;
|
498 |
-
* Fixed: various minor issues.
|
499 |
-
|
500 |
-
= 3.0.0-beta.26 - 2017-04-11 =
|
501 |
-
* Fixed: interactive widget customizer is now working with MailPoet form widgets. Thanks Peter and Charis!
|
502 |
-
* Fixed: multi-line headings are now properly displayed in emails. Thanks Karen!
|
503 |
-
|
504 |
-
= 3.0.0-beta.25 - 2017-04-04 =
|
505 |
-
* Improved: subscriber listings with large number of subscribers (tens of thousands) now load much faster on MySQL 5.5 and lower. Thanks Moulouk!;
|
506 |
-
* Fixed: updating sending frequency no longer breaks limit enforcement. Thx Vincent!;
|
507 |
-
* Fixed: sending works again on hosts running (very old) PHP version 5.3. WordPress recommends PHP 7 or newer. Ask your host how to upgrade. Thanks Emmanuel.
|
508 |
-
|
509 |
-
= 3.0.0-beta.24 - 2017-03-28 =
|
510 |
-
* Improved: clarified UI language in Settings and Import. Thanks Lloyd, @rtomo and @perthmetro;
|
511 |
-
* Added: hooks and filters for premium features. Thx Alex;
|
512 |
-
* Premium: Google Analytics tracking is now enabled. Get in touch with us if you're a premium user!
|
513 |
-
* Fixed: multilingual translations are no longer breaking the UI. Thanks Marco;
|
514 |
-
* Fixed: tracking image inside newsletters is now transparent and does not produce a false positive result during VaultPress's security scan. Thanks Raw-B.
|
515 |
-
|
516 |
-
= 3.0.0-beta.23.2 - 2017-03-14 =
|
517 |
-
* Improved: added plugin translations to Dutch, English (UK), French, German, Italian, Portuguese (Brazil), Portuguese (Portugal), Russian and Spanish languages. Thank you translators!
|
518 |
-
* Fixed: unsubscribed subscriber will no longer receive newsletters (whoops!). Thanks, Oskar;
|
519 |
-
* Fixed: previously scheduled send tasks are rescheduled when post notifications' scheduling options change. Thanks, Karen and Eric!
|
520 |
-
* Fixed: Amazon SES sending method now works regardless of custom "arg_separator" set in PHP's configuration. Thanks Lukas!
|
521 |
-
|
522 |
-
= 3.0.0-beta.22 - 2017-03-07 =
|
523 |
-
* Improved: sending very large emails with our sending service is less likely to time out. Thanks Mark!;
|
524 |
-
* Fixed: WordPress warnings are no longer displayed in the editor's contents;
|
525 |
-
* Small, little and tiny improvements to show we pay attention to details;
|
526 |
-
* British scientists say people whose sites run on PHP below version 7 have the lowest quality of life.
|
527 |
-
|
528 |
-
= 3.0.0-beta.21 - 2017-02-28 =
|
529 |
-
* Fixed: newsletter sending process will fully stop when sending is paused. Thanks Terry!
|
530 |
-
* Fixed: MailPoet sending method will work on sites using PHP 5.3. Thanks Jeff!
|
531 |
-
* Fixed: bulk trashing and restoring newsletters and forms will work on sites using PHP 5.3. Thanks Scott!
|
532 |
-
* We recommend all of you to upgrade to PHP 7. It's faster, more reliable, and safer. It's just a question of asking your host to switch.
|
533 |
-
|
534 |
-
= 3.0.0-beta.20 - 2017-02-23 =
|
535 |
-
* Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
|
536 |
-
* Fixed: sending is not interrupted when a post included in the email is trashed. Thanks Bernhard!
|
537 |
-
|
538 |
-
= 3.0.0-beta.19 - 2017-02-21 =
|
539 |
-
* Improved: import uses stricter email validation rules. Kudos Oskar;
|
540 |
-
* Improved: database is cleaned up after deleting subscribers. Thx Eric;
|
541 |
-
* Improved: cursor focuses on the modal window and sidebars. A big thanks to users who reported the issue;
|
542 |
-
* Improved: plugin is leaner;
|
543 |
-
* Improved: we're translation-ready. Contact us to help and get freebies;
|
544 |
-
* Improved: detailed error messages are displayed when sending with SMTP fails. Thx Rik;
|
545 |
-
* Fixed: going back to email designer does not corrupt its contents. Thx Taut;
|
546 |
-
* Fixed: emails trashed while sending can be resent if restored. Thnx Vlad;
|
547 |
-
* Fixed: sending to large lists (30,000+) works again. Oskar, again!;
|
548 |
-
* Fixed: default email templates are not duplicated when changed;
|
549 |
-
* Fixed: email rendering does not display warning notices on PHP 7.1. Thx Alex;
|
550 |
-
* Fixed: bulk trashing of subscribers works on PHP 5.3. Thx Chris!
|
551 |
-
|
552 |
-
= 3.0.0-beta.18 - 2017-02-14 =
|
553 |
-
* Fixed: subscriber stats for lists are accurately calculated;
|
554 |
-
* Fixed: 'Create a new form' link in the MailPoet Form widget now leads to the Form editor;
|
555 |
-
* Fixed: category names are shown for Automated latest content widget posts on WP 4.7. Thanks Christopher!;
|
556 |
-
* Fixed: SendGrid error messages are properly displayed. Thanks Larry!;
|
557 |
-
* Fixed: non-Latin-1 characters are now rendered on some hosts running PHP 5.3. Thanks Andreas!
|
558 |
-
|
559 |
-
= 3.0.0-beta.17 - 2017-02-01 =
|
560 |
-
* Added: send in style with MailPoet's own sending service. Visit your MailPoet Settings > Send with... tab.
|
561 |
-
|
562 |
-
= 3.0.0-beta.16 - 2017-01-31 =
|
563 |
-
* Improved: Updated language strings for better translation support;
|
564 |
-
* Fixed: subscription forms now allow to subscribe only to specified lists. Thanks Paul!
|
565 |
-
* Fixed: subscription forms now ignore any extra fields added not via the Form editor. Thx again Paul!
|
566 |
-
* Fixed: previewing sent welcome emails now displays latest email version. Thanks Tim!
|
567 |
-
* Fixed: plugin no longer triggers a PHP error during initialization on hosts using PHP 5.3;
|
568 |
-
* Fixed: plugin warns about missing required PDO_MYSQL extension.
|
569 |
-
|
570 |
-
= 3.0.0-beta.15 - 2017-01-24 =
|
571 |
-
* Fixed: plugin no longer throws a fatal exception error on (prehistoric :)) hosts running older versions than PHP 5.3. Thanks Otto & jtm12!;
|
572 |
-
* Fixed: users who are not subscribed to any list can be filtered in the admin panel;
|
573 |
-
* Fixed: newsletter preview links can now be shared with non WP users.
|
574 |
-
|
575 |
-
= 3.0.0-beta.14 - 2017-01-19 =
|
576 |
-
* Fixed: images can't be added to newsletters. Thanks Leon!;
|
577 |
-
* Fixed: forms require first & last name input fields on some systems;
|
578 |
-
* Fixed: unable to remove subscribers from lists in admin panel. Thanks Kay!
|
579 |
-
|
580 |
-
= 3.0.0-beta.13 - 2017-01-17 =
|
581 |
-
* Improved: style/script conflicts on MailPoet pages are now resolved by unloading non-default assets. Thx Michel for reporting one such case!;
|
582 |
-
* Fixed: MySQL wait_timeout of less than 20 seconds results in errors when sending. Thx Tim!;
|
583 |
-
* Fixed: unsubscribe URL doesn't work when BuddyPress is enabled;
|
584 |
-
* Fixed: some form styles aren't saved. Thanks Pete!;
|
585 |
-
* Fixed: typo in subscription management shortcode instructions. Thx Tim once more!
|
586 |
-
|
587 |
-
= 3.0.0-beta.12 - 2017-01-10 =
|
588 |
-
* Improved: faster load times of Emails page with large database;
|
589 |
-
* Improved: sender header is now set for SMTP/PHPMail method to work with MS Exchange. Thx Karsten!;
|
590 |
-
* Improved: better asset conflict management with other plugins;
|
591 |
-
* Fixed: newly published custom post types are now sent. Thx Jim!;
|
592 |
-
* Fixed: post notifications now sent when ALC block is configured to display titles only. Thx Pete;
|
593 |
-
* Fixed: shortcode "date:dtext" displays full name (e.g., Sunday) instead of abbreviated (e.g., Sun);
|
594 |
-
* Fixed: hide mailer error on send previews. Thx Karsten again!;
|
595 |
-
* Fixed: various minor issues.
|
596 |
-
|
597 |
-
= 3.0.0-beta.11 - 2016-12-31 =
|
598 |
-
* Improved: newsletters' statistics are generated in a split second;
|
599 |
-
* Fixed: subscribers' data is properly saved on repeat and/or multiple subscription attempts;
|
600 |
-
* Fixed: WP posts are displayed/rendered with proper line breaks and spaces;
|
601 |
-
* Fixed: preview-by-email works once again;
|
602 |
-
* Wished: 2017 sees the release of the fantastic MailPoet 3 and the super-duper MailPoet Sending Service;
|
603 |
-
* Wished: 2017 turns out to be an amazing year for all of our beloved and new users!
|
604 |
-
|
605 |
-
= 3.0.0-beta.10 - 2016-12-27 =
|
606 |
-
* Improved: newsletter is saved prior to sending an email preview;
|
607 |
-
* Improved: subscription management page conditionally displays the "bounced" status;
|
608 |
-
* Improved: deleted lists are displayed in newsletter listings;
|
609 |
-
* Fixed: newsletter/subscriber/list/form dates are properly formatted according to WP settings;
|
610 |
-
* Fixed: emails' "Return-path" header is set to the bounce address configured in Settings->Advanced;
|
611 |
-
* Fixed: archived newsletters' shortcode works for site visitors;
|
612 |
-
* Fixed: unicode support for newsletters.
|
613 |
-
|
614 |
-
= 3.0.0-beta.9 - 2016-12-20 =
|
615 |
-
* Improved: the plugin is now tested up to WP 4.7;
|
616 |
-
* Improved: MailPoet's sending service bounce status API update;
|
617 |
-
* Improved: change duplicate subscribers import message to be more descriptive;
|
618 |
-
* Fixed: database character set and time zone setup;
|
619 |
-
* Fixed: alignment of post titles inside notificaiton emails;
|
620 |
-
* Fixed: partially generated or missing translations from .pot file.
|
621 |
-
|
622 |
-
= 3.0.0-beta.8 - 2016-12-13 =
|
623 |
-
* Added: MailPoet's sending service can now sync hard bounced addresses with the plugin to keep your lists tidy and clean;
|
624 |
-
* Improved: gracefully catch vendor library conflicts with other plugins. Thx Vikas;
|
625 |
-
* Improved: force browsers to load the intended JS and CSS assets by adding a parameter, ie style.css?ver=x.y.z;
|
626 |
-
* Fixed: render non paragraph elements inside a block quote. Thx Remco!;
|
627 |
-
* Fixed a query that's gone awry in Mysql version 5.6. Dank je Pim!
|
628 |
-
|
629 |
-
= 3.0.0-beta.7.1 - 2016-12-06 =
|
630 |
-
* Improved: allow user to restart sending after sending method failure;
|
631 |
-
* Fixed: subscribers are not added to lists after import;
|
632 |
-
* Fixed: sending should stop when newsletter is trashed;
|
633 |
-
* Fixed: update database schema after an update which fixes an SQL error;
|
634 |
-
* Fixed: status of sent newsletters is showing "paused" instead of "sent";
|
635 |
-
* Fixed: dividers in Automatic Latest Posts posts are not displayed. Thx Gregor!;
|
636 |
-
* Fixed: shortcodes (ie, first name) are not rendered when sending a preview;
|
637 |
-
* Fixed: count of confirmed subscribers only in step 2 of import is erroneous.
|
638 |
-
|
639 |
-
= 3.0.0-beta.6 - 2016-11-29 =
|
640 |
-
* Added: "bounced" status has been added to subscribers;
|
641 |
-
* Improved: execution time enforced between individual send operations. Avoids duplicate sending on really slow servers;
|
642 |
-
* Improved: Welcome emails are given higher priority for sending;
|
643 |
-
* Fixed: Welcome emails are not scheduled for WP users;
|
644 |
-
* Fixed: Unicode characters in FROM/REPLY-TO/TO fields are not rendered;
|
645 |
-
* Fixed: sending HTML emails with Amazon SES works again. Kudos Alex for reporting;
|
646 |
-
* Fixed: import fails when subscriber already exists in the database but the email is in different case format. Thx Ellen for telling us;
|
647 |
-
* Fixed: ampersand char ("&") inside the subject line won't throw errors in browser preview. Thanks Michel for reporting.
|
648 |
-
|
649 |
-
= 3.0.0-beta.5 - 2016-11 =
|
650 |
-
* Fixed ALC block in newsletter editor to not show tools of content blocks;
|
651 |
-
* Fixed Sending Queue to remove post notification history newsletter when sending queue record is removed;
|
652 |
-
* Fixed vendor library initialization path on certain configurations;
|
653 |
-
* Optimized image assets to reduce file size;
|
654 |
-
* Added security fixes;
|
655 |
-
* Added plugin requirements checker;
|
656 |
-
* Fixed "MailPoet Page" custom post type to not display an entry on admin menu;
|
657 |
-
* Fixed language strings in subscriber import;
|
658 |
-
* Added "Get back to MailPoet" button on plugin update page.
|
659 |
-
|
660 |
-
= 3.0.0-beta.4 - 2016-11 =
|
661 |
-
|
662 |
-
* Updated HelpScout beacon to provide support articles;
|
663 |
-
* Fixed handling of URLs containing shortcodes in newsletter editor;
|
664 |
-
* Security fixes;
|
665 |
-
* Fixed subscriber count to not count trashed subscribers;
|
666 |
-
* Fixed template renderer to gracefully display an error when template caching issues arise;
|
667 |
-
* Added security measures to prevent mass subscriptions.
|
668 |
-
|
669 |
-
= 3.0.0-beta.3 - 2016-11 =
|
670 |
-
|
671 |
-
* Improved compatibility with PHP 7;
|
672 |
-
* Fixed showing current newsletter status in newsletter listings when there are no subscribers to send to;
|
673 |
-
* Removed obsolete libraries;
|
674 |
-
* Fixed security issues;
|
675 |
-
* Fixed html form embed code to use correct paths;
|
676 |
-
* Updated settings documentation URL;
|
677 |
-
* Improved text fitting in newsletter type/template selection boxes;
|
678 |
-
* Fixed Populator compatibility with earlier PHP versions;
|
679 |
-
* Fixed newsletter number shortcode for notification newsletters;
|
680 |
-
* Enhanced HelpScout support beacon report with extra support data;
|
681 |
-
* Fixed email renderer to not throw entity warnings on earlier PHP versions;
|
682 |
-
* Fixed newsletter preview incompatibility errors for earlier PHP versions.
|
683 |
-
|
684 |
-
= 3.0.0-beta.2 - 2016-10 =
|
685 |
-
|
686 |
-
* Fixed compatibility issues with PHP versions earlier than PHP 5.6;
|
687 |
-
* Renamed 'Emails' email type to 'Newsletters'.
|
688 |
-
|
689 |
= 3.0.0-beta.1 - 2016-10 =
|
690 |
|
691 |
* Initial public beta release.
|
3 |
Tags: newsletter, email, welcome email, post notification, autoresponder, signup, subscription, SMTP
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 4.9
|
6 |
+
Requires PHP: 5.6
|
7 |
+
Stable tag: 3.7.5
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
21 |
* Improved user experience
|
22 |
* Easy configuration
|
23 |
* Solid reliability
|
24 |
+
* GDPR compliant
|
25 |
* Weekly releases
|
26 |
|
27 |
= See it in action. =
|
28 |
+
[Test the demo](http://demo.mailpoet.com/) or [see the 2 min. video](https://vimeo.com/223581490)
|
29 |
[vimeo https://vimeo.com/223581490]
|
30 |
|
31 |
= Before you install =
|
34 |
|
35 |
* Not optimized for right-to-left (RTL) languages yet
|
36 |
* Multisite works, but is not officially supported
|
|
|
37 |
* Review [our minimum requirements](http://beta.docs.mailpoet.com/article/152-minimum-requirements-for-mailpoet-3)
|
38 |
|
39 |
= What about the Premium? =
|
40 |
|
41 |
+
MailPoet is fully featured in its free version and works up until you have "2000" subscribers.
|
42 |
|
43 |
The Premium version adds the following features:
|
44 |
|
46 |
* ability to send Welcome Emails automatically; i.e. "Welcome to my Newsletter” autoresponders or multi-email courses
|
47 |
* removes the small MailPoet logo in the footer of your emails
|
48 |
* same day support (Monday to Friday)
|
49 |
+
* send to over "2000" subscribers with your own sending method
|
50 |
* see the [short video summary on the Premium](http://beta.docs.mailpoet.com/article/208-video-overview-of-mailpoet-premium)
|
51 |
|
52 |
Plus: if you sign up to one of our sending plans, you’ll get all of these fancy features for free. Visit the Premium page inside the plugin for more info.
|
75 |
|
76 |
[Security audits are made by LogicalTrust](https://logicaltrust.net/en/), an independent third party.
|
77 |
|
78 |
+
Have a question for us? Reach us at security@ our domain.
|
79 |
+
|
80 |
== Installation ==
|
81 |
|
82 |
There are 3 ways to install this plugin:
|
118 |
|
119 |
== Changelog ==
|
120 |
|
121 |
+
= 3.7.5 - 2018-06-05 =
|
122 |
+
* Added: align images left or right of posts excerpts;
|
123 |
+
* Fixed: post content block image alignment issues.
|
124 |
+
|
125 |
= 3.7.4 - 2018-05-30 =
|
126 |
* Added: What's New page no longer shows after every update;
|
127 |
* Improved: template selection page thumbnails are larger;
|
327 |
= 3.0.0 - 2017-09-20 =
|
328 |
* Official launch of the new MailPoet. :)
|
329 |
* Improved: MailPoet 3 now works with other plugins that use a supported version of Twig templating engine. Thanks @supsysticcom;
|
330 |
+
* Added: we now offer a free sending plan for "2000" subscribers or less. Thx MailPoet!
|
331 |
|
332 |
= 3.0.0-rc.2.0.3 - 2017-09-12 =
|
333 |
* Added: hook to override default cron URL. Thanks Fred;
|
388 |
* Fixed: [newsletter:post_title] properly displays titles of custom post types; Thanks Adrian!
|
389 |
* Fixed: post images are displayed in expected positions; Thanks Gary!
|
390 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
= 3.0.0-beta.1 - 2016-10 =
|
392 |
|
393 |
* Initial public beta release.
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInite98a710e71e6174923a86d79102fe7dc::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -172,6 +172,7 @@ return array(
|
|
172 |
'MailPoet\\Models\\SubscriberIP' => $baseDir . '/lib/Models/SubscriberIP.php',
|
173 |
'MailPoet\\Models\\SubscriberSegment' => $baseDir . '/lib/Models/SubscriberSegment.php',
|
174 |
'MailPoet\\Newsletter\\AutomatedLatestContent' => $baseDir . '/lib/Newsletter/AutomatedLatestContent.php',
|
|
|
175 |
'MailPoet\\Newsletter\\Editor\\MetaInformationManager' => $baseDir . '/lib/Newsletter/Editor/MetaInformationManager.php',
|
176 |
'MailPoet\\Newsletter\\Editor\\PostContentManager' => $baseDir . '/lib/Newsletter/Editor/PostContentManager.php',
|
177 |
'MailPoet\\Newsletter\\Editor\\PostListTransformer' => $baseDir . '/lib/Newsletter/Editor/PostListTransformer.php',
|
172 |
'MailPoet\\Models\\SubscriberIP' => $baseDir . '/lib/Models/SubscriberIP.php',
|
173 |
'MailPoet\\Models\\SubscriberSegment' => $baseDir . '/lib/Models/SubscriberSegment.php',
|
174 |
'MailPoet\\Newsletter\\AutomatedLatestContent' => $baseDir . '/lib/Newsletter/AutomatedLatestContent.php',
|
175 |
+
'MailPoet\\Newsletter\\Editor\\LayoutHelper' => $baseDir . '/lib/Newsletter/Editor/LayoutHelper.php',
|
176 |
'MailPoet\\Newsletter\\Editor\\MetaInformationManager' => $baseDir . '/lib/Newsletter/Editor/MetaInformationManager.php',
|
177 |
'MailPoet\\Newsletter\\Editor\\PostContentManager' => $baseDir . '/lib/Newsletter/Editor/PostContentManager.php',
|
178 |
'MailPoet\\Newsletter\\Editor\\PostListTransformer' => $baseDir . '/lib/Newsletter/Editor/PostListTransformer.php',
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit4d9111e3a54c2a8eb9f81bba71451d8b
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit4d9111e3a54c2a8eb9f81bba71451d8b
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInite98a710e71e6174923a86d79102fe7dc
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInite98a710e71e6174923a86d79102fe7dc', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInite98a710e71e6174923a86d79102fe7dc', '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\ComposerStaticInite98a710e71e6174923a86d79102fe7dc::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\ComposerStaticInite98a710e71e6174923a86d79102fe7dc::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequiree98a710e71e6174923a86d79102fe7dc($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequiree98a710e71e6174923a86d79102fe7dc($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
@@ -289,6 +289,7 @@ class ComposerStaticInit4d9111e3a54c2a8eb9f81bba71451d8b
|
|
289 |
'MailPoet\\Models\\SubscriberIP' => __DIR__ . '/../..' . '/lib/Models/SubscriberIP.php',
|
290 |
'MailPoet\\Models\\SubscriberSegment' => __DIR__ . '/../..' . '/lib/Models/SubscriberSegment.php',
|
291 |
'MailPoet\\Newsletter\\AutomatedLatestContent' => __DIR__ . '/../..' . '/lib/Newsletter/AutomatedLatestContent.php',
|
|
|
292 |
'MailPoet\\Newsletter\\Editor\\MetaInformationManager' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/MetaInformationManager.php',
|
293 |
'MailPoet\\Newsletter\\Editor\\PostContentManager' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/PostContentManager.php',
|
294 |
'MailPoet\\Newsletter\\Editor\\PostListTransformer' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/PostListTransformer.php',
|
@@ -1001,10 +1002,10 @@ class ComposerStaticInit4d9111e3a54c2a8eb9f81bba71451d8b
|
|
1001 |
public static function getInitializer(ClassLoader $loader)
|
1002 |
{
|
1003 |
return \Closure::bind(function () use ($loader) {
|
1004 |
-
$loader->prefixLengthsPsr4 =
|
1005 |
-
$loader->prefixDirsPsr4 =
|
1006 |
-
$loader->prefixesPsr0 =
|
1007 |
-
$loader->classMap =
|
1008 |
|
1009 |
}, null, ClassLoader::class);
|
1010 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInite98a710e71e6174923a86d79102fe7dc
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
289 |
'MailPoet\\Models\\SubscriberIP' => __DIR__ . '/../..' . '/lib/Models/SubscriberIP.php',
|
290 |
'MailPoet\\Models\\SubscriberSegment' => __DIR__ . '/../..' . '/lib/Models/SubscriberSegment.php',
|
291 |
'MailPoet\\Newsletter\\AutomatedLatestContent' => __DIR__ . '/../..' . '/lib/Newsletter/AutomatedLatestContent.php',
|
292 |
+
'MailPoet\\Newsletter\\Editor\\LayoutHelper' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/LayoutHelper.php',
|
293 |
'MailPoet\\Newsletter\\Editor\\MetaInformationManager' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/MetaInformationManager.php',
|
294 |
'MailPoet\\Newsletter\\Editor\\PostContentManager' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/PostContentManager.php',
|
295 |
'MailPoet\\Newsletter\\Editor\\PostListTransformer' => __DIR__ . '/../..' . '/lib/Newsletter/Editor/PostListTransformer.php',
|
1002 |
public static function getInitializer(ClassLoader $loader)
|
1003 |
{
|
1004 |
return \Closure::bind(function () use ($loader) {
|
1005 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInite98a710e71e6174923a86d79102fe7dc::$prefixLengthsPsr4;
|
1006 |
+
$loader->prefixDirsPsr4 = ComposerStaticInite98a710e71e6174923a86d79102fe7dc::$prefixDirsPsr4;
|
1007 |
+
$loader->prefixesPsr0 = ComposerStaticInite98a710e71e6174923a86d79102fe7dc::$prefixesPsr0;
|
1008 |
+
$loader->classMap = ComposerStaticInite98a710e71e6174923a86d79102fe7dc::$classMap;
|
1009 |
|
1010 |
}, null, ClassLoader::class);
|
1011 |
}
|
views/newsletter/editor.html
CHANGED
@@ -17,6 +17,18 @@
|
|
17 |
'newsletter_editor_template_automated_latest_content_settings',
|
18 |
'newsletter/templates/blocks/automatedLatestContent/settings.hbs'
|
19 |
) %>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
<%= partial(
|
21 |
'newsletter_editor_template_button_block',
|
22 |
'newsletter/templates/blocks/button/block.hbs'
|
@@ -521,6 +533,16 @@
|
|
521 |
jQuery('#newsletter_editor_template_automated_latest_content_settings').html()
|
522 |
),
|
523 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
postsBlock: Handlebars.compile(
|
525 |
jQuery('#newsletter_editor_template_posts_block').html()
|
526 |
),
|
@@ -962,6 +984,7 @@
|
|
962 |
blockDefaults: {
|
963 |
automatedLatestContent: {
|
964 |
amount: '5',
|
|
|
965 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
966 |
inclusionType: 'include', // 'include'|'exclude'
|
967 |
displayType: 'excerpt', // 'excerpt'|'full'|'titleOnly'
|
@@ -1014,6 +1037,61 @@
|
|
1014 |
backgroundColor: '#ffffff',
|
1015 |
backgroundColorAlternate: '#eeeeee',
|
1016 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1017 |
button: {
|
1018 |
text: '<%= __('Button') | escape('js') %>',
|
1019 |
url: '',
|
@@ -1085,6 +1163,7 @@
|
|
1085 |
},
|
1086 |
posts: {
|
1087 |
amount: '10',
|
|
|
1088 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
1089 |
postStatus: 'publish', // 'draft'|'pending'|'private'|'publish'|'future'
|
1090 |
inclusionType: 'include', // 'include'|'exclude'
|
@@ -1093,7 +1172,7 @@
|
|
1093 |
titleAlignment: 'left', // 'left'|'center'|'right'
|
1094 |
titleIsLink: false, // false|true
|
1095 |
imageFullWidth: false, // true|false
|
1096 |
-
featuredImagePosition: '
|
1097 |
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
1098 |
authorPrecededBy: '<%= __('Author:') | escape('js') %>',
|
1099 |
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
17 |
'newsletter_editor_template_automated_latest_content_settings',
|
18 |
'newsletter/templates/blocks/automatedLatestContent/settings.hbs'
|
19 |
) %>
|
20 |
+
<%= partial(
|
21 |
+
'newsletter_editor_template_automated_latest_content_layout_block',
|
22 |
+
'newsletter/templates/blocks/automatedLatestContentLayout/block.hbs'
|
23 |
+
) %>
|
24 |
+
<%= partial(
|
25 |
+
'newsletter_editor_template_automated_latest_content_layout_widget',
|
26 |
+
'newsletter/templates/blocks/automatedLatestContentLayout/widget.hbs'
|
27 |
+
) %>
|
28 |
+
<%= partial(
|
29 |
+
'newsletter_editor_template_automated_latest_content_layout_settings',
|
30 |
+
'newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs'
|
31 |
+
) %>
|
32 |
<%= partial(
|
33 |
'newsletter_editor_template_button_block',
|
34 |
'newsletter/templates/blocks/button/block.hbs'
|
533 |
jQuery('#newsletter_editor_template_automated_latest_content_settings').html()
|
534 |
),
|
535 |
|
536 |
+
automatedLatestContentLayoutBlock: Handlebars.compile(
|
537 |
+
jQuery('#newsletter_editor_template_automated_latest_content_layout_block').html()
|
538 |
+
),
|
539 |
+
automatedLatestContentLayoutInsertion: Handlebars.compile(
|
540 |
+
jQuery('#newsletter_editor_template_automated_latest_content_layout_widget').html()
|
541 |
+
),
|
542 |
+
automatedLatestContentLayoutBlockSettings: Handlebars.compile(
|
543 |
+
jQuery('#newsletter_editor_template_automated_latest_content_layout_settings').html()
|
544 |
+
),
|
545 |
+
|
546 |
postsBlock: Handlebars.compile(
|
547 |
jQuery('#newsletter_editor_template_posts_block').html()
|
548 |
),
|
984 |
blockDefaults: {
|
985 |
automatedLatestContent: {
|
986 |
amount: '5',
|
987 |
+
withLayout: false,
|
988 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
989 |
inclusionType: 'include', // 'include'|'exclude'
|
990 |
displayType: 'excerpt', // 'excerpt'|'full'|'titleOnly'
|
1037 |
backgroundColor: '#ffffff',
|
1038 |
backgroundColorAlternate: '#eeeeee',
|
1039 |
},
|
1040 |
+
automatedLatestContentLayout: {
|
1041 |
+
amount: '5',
|
1042 |
+
withLayout: true,
|
1043 |
+
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
1044 |
+
inclusionType: 'include', // 'include'|'exclude'
|
1045 |
+
displayType: 'excerpt', // 'excerpt'|'full'|'titleOnly'
|
1046 |
+
titleFormat: 'h1', // 'h1'|'h2'|'h3'|'ul'
|
1047 |
+
titleAlignment: 'left', // 'left'|'center'|'right'
|
1048 |
+
titleIsLink: false, // false|true
|
1049 |
+
imageFullWidth: false, // true|false
|
1050 |
+
featuredImagePosition: 'alternate', // 'centered'|'left'|'right'|'alternate'|'none',
|
1051 |
+
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
1052 |
+
authorPrecededBy: '<%= __('Author:') | escape('js') %>',
|
1053 |
+
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
1054 |
+
categoriesPrecededBy: '<%= __('Categories:') | escape('js') %>',
|
1055 |
+
readMoreType: 'button', // 'link'|'button'
|
1056 |
+
readMoreText: '<%= __('Read more') | escape('js') %>',
|
1057 |
+
readMoreButton: {
|
1058 |
+
text: '<%= __('Read more') | escape('js') %>',
|
1059 |
+
url: '[postLink]',
|
1060 |
+
context: 'automatedLatestContentLayout.readMoreButton',
|
1061 |
+
styles: {
|
1062 |
+
block: {
|
1063 |
+
backgroundColor: '#2ea1cd',
|
1064 |
+
borderColor: '#0074a2',
|
1065 |
+
borderWidth: '1px',
|
1066 |
+
borderRadius: '5px',
|
1067 |
+
borderStyle: 'solid',
|
1068 |
+
width: '180px',
|
1069 |
+
lineHeight: '40px',
|
1070 |
+
fontColor: '#ffffff',
|
1071 |
+
fontFamily: 'Verdana',
|
1072 |
+
fontSize: '18px',
|
1073 |
+
fontWeight: 'normal',
|
1074 |
+
textAlign: 'center',
|
1075 |
+
}
|
1076 |
+
}
|
1077 |
+
},
|
1078 |
+
sortBy: 'newest', // 'newest'|'oldest',
|
1079 |
+
showDivider: true, // true|false
|
1080 |
+
divider: {
|
1081 |
+
context: 'automatedLatestContentLayout.divider',
|
1082 |
+
styles: {
|
1083 |
+
block: {
|
1084 |
+
backgroundColor: 'transparent',
|
1085 |
+
padding: '13px',
|
1086 |
+
borderStyle: 'solid',
|
1087 |
+
borderWidth: '3px',
|
1088 |
+
borderColor: '#aaaaaa',
|
1089 |
+
},
|
1090 |
+
},
|
1091 |
+
},
|
1092 |
+
backgroundColor: '#ffffff',
|
1093 |
+
backgroundColorAlternate: '#eeeeee',
|
1094 |
+
},
|
1095 |
button: {
|
1096 |
text: '<%= __('Button') | escape('js') %>',
|
1097 |
url: '',
|
1163 |
},
|
1164 |
posts: {
|
1165 |
amount: '10',
|
1166 |
+
withLayout: true,
|
1167 |
contentType: 'post', // 'post'|'page'|'mailpoet_page'
|
1168 |
postStatus: 'publish', // 'draft'|'pending'|'private'|'publish'|'future'
|
1169 |
inclusionType: 'include', // 'include'|'exclude'
|
1172 |
titleAlignment: 'left', // 'left'|'center'|'right'
|
1173 |
titleIsLink: false, // false|true
|
1174 |
imageFullWidth: false, // true|false
|
1175 |
+
featuredImagePosition: 'alternate', // 'centered'|'left'|'right'|'alternate'|'none',
|
1176 |
showAuthor: 'no', // 'no'|'aboveText'|'belowText'
|
1177 |
authorPrecededBy: '<%= __('Author:') | escape('js') %>',
|
1178 |
showCategories: 'no', // 'no'|'aboveText'|'belowText'
|
views/newsletter/templates/blocks/automatedLatestContentLayout/block.hbs
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="mailpoet_tools"></div>
|
2 |
+
<div class="mailpoet_content">
|
3 |
+
<div class="mailpoet_automated_latest_content_block_overlay"></div>
|
4 |
+
<div class="mailpoet_automated_latest_content_block_posts"></div>
|
5 |
+
</div>
|
6 |
+
<div class="mailpoet_block_highlight"></div>
|
views/newsletter/templates/blocks/automatedLatestContentLayout/index.php
ADDED
File without changes
|
views/newsletter/templates/blocks/automatedLatestContentLayout/settings.hbs
ADDED
@@ -0,0 +1,313 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h3><%= __('Post selection') %></h3>
|
2 |
+
|
3 |
+
<div class="mailpoet_form_field">
|
4 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_inline"><%= __('Show:') %></div>
|
5 |
+
<div class="mailpoet_form_field_input_option">
|
6 |
+
<input type="text" class="mailpoet_input mailpoet_input_small mailpoet_automated_latest_content_show_amount" value="{{ model.amount }}" maxlength="2" size="2" />
|
7 |
+
<select class="mailpoet_select mailpoet_select_large mailpoet_automated_latest_content_content_type">
|
8 |
+
<option value="post" {{#ifCond model.contentType '==' 'post'}}SELECTED{{/ifCond}}><%= __('Posts') %></option>
|
9 |
+
<option value="page" {{#ifCond model.contentType '==' 'page'}}SELECTED{{/ifCond}}><%= __('Pages') %></option>
|
10 |
+
<option value="mailpoet_page" {{#ifCond model.contentType '==' 'mailpoet_page'}}SELECTED{{/ifCond}}><%= __('MailPoet pages') %></option>
|
11 |
+
</select>
|
12 |
+
</div>
|
13 |
+
</div>
|
14 |
+
|
15 |
+
<div class="mailpoet_form_field">
|
16 |
+
<div class="mailpoet_form_field_select_option">
|
17 |
+
<select class="mailpoet_select mailpoet_automated_latest_content_categories_and_tags" multiple="multiple">
|
18 |
+
{{#each model.terms}}
|
19 |
+
<option value="{{ id }}" selected="selected">{{ text }}</option>
|
20 |
+
{{/each}}
|
21 |
+
</select>
|
22 |
+
</div>
|
23 |
+
<div class="mailpoet_form_field_radio_option">
|
24 |
+
<label>
|
25 |
+
<input type="radio" name="mailpoet_automated_latest_content_include_or_exclude" class="mailpoet_automated_latest_content_include_or_exclude" value="include" {{#ifCond model.inclusionType '==' 'include'}}CHECKED{{/ifCond}}/>
|
26 |
+
<%= __('Include') %>
|
27 |
+
</label>
|
28 |
+
</div>
|
29 |
+
<div class="mailpoet_form_field_radio_option">
|
30 |
+
<label>
|
31 |
+
<input type="radio" name="mailpoet_automated_latest_content_include_or_exclude" class="mailpoet_automated_latest_content_include_or_exclude" value="exclude" {{#ifCond model.inclusionType '==' 'exclude'}}CHECKED{{/ifCond}} />
|
32 |
+
<%= __('Exclude') %>
|
33 |
+
</label>
|
34 |
+
</div>
|
35 |
+
</div>
|
36 |
+
|
37 |
+
<hr class="mailpoet_separator" />
|
38 |
+
|
39 |
+
|
40 |
+
<div class="mailpoet_form_field">
|
41 |
+
<a href="javascript:;" class="mailpoet_automated_latest_content_show_display_options"><%= __('Display options') %></a>
|
42 |
+
</div>
|
43 |
+
<div class="mailpoet_automated_latest_content_display_options mailpoet_closed">
|
44 |
+
<div class="mailpoet_form_field">
|
45 |
+
<a href="javascript:;" class="mailpoet_automated_latest_content_hide_display_options"><%= __('Hide display options') %></a>
|
46 |
+
</div>
|
47 |
+
|
48 |
+
<div class="mailpoet_form_field">
|
49 |
+
<div class="mailpoet_form_field_radio_option">
|
50 |
+
<label>
|
51 |
+
<input type="radio" name="mailpoet_automated_latest_content_display_type" class="mailpoet_automated_latest_content_display_type" value="excerpt" {{#ifCond model.displayType '==' 'excerpt'}}CHECKED{{/ifCond}}/>
|
52 |
+
<%= __('Excerpt') %>
|
53 |
+
</label>
|
54 |
+
</div>
|
55 |
+
<div class="mailpoet_form_field_radio_option">
|
56 |
+
<label>
|
57 |
+
<input type="radio" name="mailpoet_automated_latest_content_display_type" class="mailpoet_automated_latest_content_display_type" value="full" {{#ifCond model.displayType '==' 'full'}}CHECKED{{/ifCond}}/>
|
58 |
+
<%= __('Full post') %>
|
59 |
+
</label>
|
60 |
+
</div>
|
61 |
+
<div class="mailpoet_form_field_radio_option">
|
62 |
+
<label>
|
63 |
+
<input type="radio" name="mailpoet_automated_latest_content_display_type" class="mailpoet_automated_latest_content_display_type" value="titleOnly" {{#ifCond model.displayType '==' 'titleOnly'}}CHECKED{{/ifCond}} />
|
64 |
+
<%= __('Title only') %>
|
65 |
+
</label>
|
66 |
+
</div>
|
67 |
+
</div>
|
68 |
+
|
69 |
+
<div class="mailpoet_form_field">
|
70 |
+
<div class="mailpoet_form_field_title"><%= __('Title Format') %></div>
|
71 |
+
<div class="mailpoet_form_field_radio_option">
|
72 |
+
<label>
|
73 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_format" class="mailpoet_automated_latest_content_title_format" value="h1" {{#ifCond model.titleFormat '==' 'h1'}}CHECKED{{/ifCond}}/>
|
74 |
+
<%= __('Heading 1') %>
|
75 |
+
</label>
|
76 |
+
</div>
|
77 |
+
<div class="mailpoet_form_field_radio_option">
|
78 |
+
<label>
|
79 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_format" class="mailpoet_automated_latest_content_title_format" value="h2" {{#ifCond model.titleFormat '==' 'h2'}}CHECKED{{/ifCond}}/>
|
80 |
+
<%= __('Heading 2') %>
|
81 |
+
</label>
|
82 |
+
</div>
|
83 |
+
<div class="mailpoet_form_field_radio_option">
|
84 |
+
<label>
|
85 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_format" class="mailpoet_automated_latest_content_title_format" value="h3" {{#ifCond model.titleFormat '==' 'h3'}}CHECKED{{/ifCond}}/>
|
86 |
+
<%= __('Heading 3') %>
|
87 |
+
</label>
|
88 |
+
</div>
|
89 |
+
<div class="mailpoet_form_field_radio_option mailpoet_automated_latest_content_title_as_list {{#ifCond model.displayType '!=' 'titleOnly'}}mailpoet_hidden{{/ifCond}}">
|
90 |
+
<label>
|
91 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_format" class="mailpoet_automated_latest_content_title_format" value="ul" {{#ifCond model.titleFormat '==' 'ul'}}CHECKED{{/ifCond}}/>
|
92 |
+
<%= __('Show as list') %>
|
93 |
+
</label>
|
94 |
+
</div>
|
95 |
+
</div>
|
96 |
+
|
97 |
+
<div class="mailpoet_form_field">
|
98 |
+
<div class="mailpoet_form_field_title"><%= __('Title Alignment') %></div>
|
99 |
+
<div class="mailpoet_form_field_radio_option">
|
100 |
+
<label>
|
101 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_alignment" class="mailpoet_automated_latest_content_title_alignment" value="left" {{#ifCond model.titleAlignment '==' 'left'}}CHECKED{{/ifCond}} />
|
102 |
+
<%= __('Left') %>
|
103 |
+
</label>
|
104 |
+
</div>
|
105 |
+
<div class="mailpoet_form_field_radio_option">
|
106 |
+
<label>
|
107 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_alignment" class="mailpoet_automated_latest_content_title_alignment" value="center" {{#ifCond model.titleAlignment '==' 'center'}}CHECKED{{/ifCond}} />
|
108 |
+
<%= __('Center') %>
|
109 |
+
</label>
|
110 |
+
</div>
|
111 |
+
<div class="mailpoet_form_field_radio_option">
|
112 |
+
<label>
|
113 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_alignment" class="mailpoet_automated_latest_content_title_alignment" value="right" {{#ifCond model.titleAlignment '==' 'right'}}CHECKED{{/ifCond}} />
|
114 |
+
<%= __('Right') %>
|
115 |
+
</label>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
|
119 |
+
<div class="mailpoet_form_field mailpoet_automated_latest_content_title_as_link {{#ifCond model.titleFormat '===' 'ul'}}mailpoet_hidden{{/ifCond}}">
|
120 |
+
<div class="mailpoet_form_field_title"><%= __('Title as links') %></div>
|
121 |
+
<div class="mailpoet_form_field_radio_option">
|
122 |
+
<label>
|
123 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_as_links" class="mailpoet_automated_latest_content_title_as_links" value="true" {{#if model.titleIsLink}}CHECKED{{/if}}/>
|
124 |
+
<%= __('Yes') %>
|
125 |
+
</label>
|
126 |
+
</div>
|
127 |
+
<div class="mailpoet_form_field_radio_option">
|
128 |
+
<label>
|
129 |
+
<input type="radio" name="mailpoet_automated_latest_content_title_as_links" class="mailpoet_automated_latest_content_title_as_links" value="false" {{#unless model.titleIsLink}}CHECKED{{/unless}}/>
|
130 |
+
<%= __('No') %>
|
131 |
+
</label>
|
132 |
+
</div>
|
133 |
+
</div>
|
134 |
+
|
135 |
+
<hr class="mailpoet_separator mailpoet_automated_latest_content_image_separator {{#ifCond model.displayType '===' 'titleOnly'}}mailpoet_hidden{{/ifCond}}" />
|
136 |
+
|
137 |
+
<div class="mailpoet_form_field mailpoet_automated_latest_content_featured_image_position_container {{#ifCond model.displayType '!==' 'excerpt'}}mailpoet_hidden{{/ifCond}}">
|
138 |
+
<div class="mailpoet_form_field_title"><%= __('Featured image position') %></div>
|
139 |
+
<div class="mailpoet_form_field_radio_option">
|
140 |
+
<label>
|
141 |
+
<input type="radio" name="mailpoet_automated_latest_content_featured_image_position" class="mailpoet_automated_latest_content_featured_image_position" value="centered" {{#ifCond model.featuredImagePosition '==' 'centered' }}CHECKED{{/ifCond}}/>
|
142 |
+
<%= __('Centered') %>
|
143 |
+
</label>
|
144 |
+
</div>
|
145 |
+
<div class="mailpoet_form_field_radio_option">
|
146 |
+
<label>
|
147 |
+
<input type="radio" name="mailpoet_automated_latest_content_featured_image_position" class="mailpoet_automated_latest_content_featured_image_position" value="left" {{#ifCond model.featuredImagePosition '==' 'left' }}CHECKED{{/ifCond}}/>
|
148 |
+
<%= __('Left') %>
|
149 |
+
</label>
|
150 |
+
</div>
|
151 |
+
<div class="mailpoet_form_field_radio_option">
|
152 |
+
<label>
|
153 |
+
<input type="radio" name="mailpoet_automated_latest_content_featured_image_position" class="mailpoet_automated_latest_content_featured_image_position" value="right" {{#ifCond model.featuredImagePosition '==' 'right' }}CHECKED{{/ifCond}}/>
|
154 |
+
<%= __('Right') %>
|
155 |
+
</label>
|
156 |
+
</div>
|
157 |
+
<div class="mailpoet_form_field_radio_option">
|
158 |
+
<label>
|
159 |
+
<input type="radio" name="mailpoet_automated_latest_content_featured_image_position" class="mailpoet_automated_latest_content_featured_image_position" value="alternate" {{#ifCond model.featuredImagePosition '==' 'alternate' }}CHECKED{{/ifCond}}/>
|
160 |
+
<%= __('Alternate') %>
|
161 |
+
</label>
|
162 |
+
</div>
|
163 |
+
<div class="mailpoet_form_field_radio_option">
|
164 |
+
<label>
|
165 |
+
<input type="radio" name="mailpoet_automated_latest_content_featured_image_position" class="mailpoet_automated_latest_content_featured_image_position" value="none" {{#ifCond model.featuredImagePosition '==' 'none' }}CHECKED{{/ifCond}}/>
|
166 |
+
<%= __('None') %>
|
167 |
+
</label>
|
168 |
+
</div>
|
169 |
+
</div>
|
170 |
+
|
171 |
+
<div class="mailpoet_automated_latest_content_non_title_list_options {{#ifCond model.displayType '==' 'titleOnly'}}{{#ifCond model.titleFormat '==' 'ul'}}mailpoet_hidden{{/ifCond}}{{/ifCond}}">
|
172 |
+
<div class="mailpoet_form_field mailpoet_automated_latest_content_image_full_width_option {{#ifCond model.displayType '==' 'titleOnly'}}mailpoet_hidden{{/ifCond}}">
|
173 |
+
<div class="mailpoet_form_field_title"><%= __('Image width') %></div>
|
174 |
+
<div class="mailpoet_form_field_radio_option">
|
175 |
+
<label>
|
176 |
+
<input type="radio" name="imageFullWidth" class="mailpoet_automated_latest_content_image_full_width" value="true" {{#if model.imageFullWidth}}CHECKED{{/if}}/>
|
177 |
+
<%= __('Full width') %>
|
178 |
+
</label>
|
179 |
+
</div>
|
180 |
+
<div class="mailpoet_form_field_radio_option">
|
181 |
+
<label>
|
182 |
+
<input type="radio" name="imageFullWidth" class="mailpoet_automated_latest_content_image_full_width" value="false" {{#unless model.imageFullWidth}}CHECKED{{/unless}}/>
|
183 |
+
<%= __('Padded') %>
|
184 |
+
</label>
|
185 |
+
</div>
|
186 |
+
</div>
|
187 |
+
|
188 |
+
<hr class="mailpoet_separator" />
|
189 |
+
|
190 |
+
<div class="mailpoet_form_field">
|
191 |
+
<div class="mailpoet_form_field_title"><%= __('Show author') %></div>
|
192 |
+
<div class="mailpoet_form_field_radio_option">
|
193 |
+
<label>
|
194 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_author" class="mailpoet_automated_latest_content_show_author" value="no" {{#ifCond model.showAuthor '==' 'no'}}CHECKED{{/ifCond}}/>
|
195 |
+
<%= __('No') %>
|
196 |
+
</label>
|
197 |
+
</div>
|
198 |
+
<div class="mailpoet_form_field_radio_option">
|
199 |
+
<label>
|
200 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_author" class="mailpoet_automated_latest_content_show_author" value="aboveText" {{#ifCond model.showAuthor '==' 'aboveText'}}CHECKED{{/ifCond}}/>
|
201 |
+
<%= __('Above text') %>
|
202 |
+
</label>
|
203 |
+
</div>
|
204 |
+
<div class="mailpoet_form_field_radio_option">
|
205 |
+
<label>
|
206 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_author" class="mailpoet_automated_latest_content_show_author" value="belowText" {{#ifCond model.showAuthor '==' 'belowText'}}CHECKED{{/ifCond}}/>
|
207 |
+
<%= __('Below text') %><br />
|
208 |
+
</label>
|
209 |
+
</div>
|
210 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_small"><%= __('Preceded by:') %></div>
|
211 |
+
<div class="mailpoet_form_field_input_option mailpoet_form_field_block">
|
212 |
+
<input type="text" class="mailpoet_input mailpoet_input_full mailpoet_automated_latest_content_author_preceded_by" value="{{ model.authorPrecededBy }}" />
|
213 |
+
</div>
|
214 |
+
</div>
|
215 |
+
|
216 |
+
<div class="mailpoet_form_field">
|
217 |
+
<div class="mailpoet_form_field_title"><%= __('Show categories') %></div>
|
218 |
+
<div class="mailpoet_form_field_radio_option">
|
219 |
+
<label>
|
220 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_categories" class="mailpoet_automated_latest_content_show_categories" value="no" {{#ifCond model.showCategories '==' 'no'}}CHECKED{{/ifCond}}/>
|
221 |
+
<%= __('No') %>
|
222 |
+
</label>
|
223 |
+
</div>
|
224 |
+
<div class="mailpoet_form_field_radio_option">
|
225 |
+
<label>
|
226 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_categories" class="mailpoet_automated_latest_content_show_categories" value="aboveText" {{#ifCond model.showCategories '==' 'aboveText'}}CHECKED{{/ifCond}}/>
|
227 |
+
<%= __('Above text') %>
|
228 |
+
</label>
|
229 |
+
</div>
|
230 |
+
<div class="mailpoet_form_field_radio_option">
|
231 |
+
<label>
|
232 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_categories" class="mailpoet_automated_latest_content_show_categories" value="belowText" {{#ifCond model.showCategories '==' 'belowText'}}CHECKED{{/ifCond}}/>
|
233 |
+
<%= __('Below text') %>
|
234 |
+
</label>
|
235 |
+
</div>
|
236 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_small"><%= __('Preceded by:') %></div>
|
237 |
+
<div class="mailpoet_form_field_input_option mailpoet_form_field_block">
|
238 |
+
<input type="text" class="mailpoet_input mailpoet_input_full mailpoet_automated_latest_content_categories" value="{{ model.categoriesPrecededBy }}" />
|
239 |
+
</div>
|
240 |
+
</div>
|
241 |
+
|
242 |
+
<hr class="mailpoet_separator" />
|
243 |
+
|
244 |
+
<div class="mailpoet_form_field">
|
245 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_small"><%= __('"Read more" text') %></div>
|
246 |
+
<div class="mailpoet_form_field_radio_option">
|
247 |
+
<label>
|
248 |
+
<input type="radio" name="mailpoet_automated_latest_content_read_more_type" class="mailpoet_automated_latest_content_read_more_type" value="link" {{#ifCond model.readMoreType '==' 'link'}}CHECKED{{/ifCond}}/>
|
249 |
+
<%= __('Link') %>
|
250 |
+
</label>
|
251 |
+
</div>
|
252 |
+
<div class="mailpoet_form_field_radio_option">
|
253 |
+
<label>
|
254 |
+
<input type="radio" name="mailpoet_automated_latest_content_read_more_type" class="mailpoet_automated_latest_content_read_more_type" value="button" {{#ifCond model.readMoreType '==' 'button'}}CHECKED{{/ifCond}}/>
|
255 |
+
<%= __('Button') %>
|
256 |
+
</label>
|
257 |
+
</div>
|
258 |
+
|
259 |
+
<div class="mailpoet_form_field_input_option mailpoet_form_field_block">
|
260 |
+
<input type="text" class="mailpoet_input mailpoet_input_full mailpoet_automated_latest_content_read_more_text {{#ifCond model.readMoreType '!=' 'link'}}mailpoet_hidden{{/ifCond}}" value="{{ model.readMoreText }}" />
|
261 |
+
</div>
|
262 |
+
|
263 |
+
<div class="mailpoet_form_field_input_option mailpoet_form_field_block">
|
264 |
+
<a href="javascript:;" class="mailpoet_automated_latest_content_select_button {{#ifCond model.readMoreType '!=' 'button'}}mailpoet_hidden{{/ifCond}}"><%= __('Design a button') %></a>
|
265 |
+
</div>
|
266 |
+
</div>
|
267 |
+
|
268 |
+
<hr class="mailpoet_separator" />
|
269 |
+
</div>
|
270 |
+
|
271 |
+
<div class="mailpoet_form_field">
|
272 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_small"><%= __('Sort by') %></div>
|
273 |
+
<div class="mailpoet_form_field_radio_option">
|
274 |
+
<label>
|
275 |
+
<input type="radio" name="mailpoet_automated_latest_content_sort_by" class="mailpoet_automated_latest_content_sort_by" value="newest" {{#ifCond model.sortBy '==' 'newest'}}CHECKED{{/ifCond}}/>
|
276 |
+
<%= __('Newest') %>
|
277 |
+
</label>
|
278 |
+
</div>
|
279 |
+
<div class="mailpoet_form_field_radio_option">
|
280 |
+
<label>
|
281 |
+
<input type="radio" name="mailpoet_automated_latest_content_sort_by" class="mailpoet_automated_latest_content_sort_by" value="oldest" {{#ifCond model.sortBy '==' 'oldest'}}CHECKED{{/ifCond}}/>
|
282 |
+
<%= __('Oldest') %>
|
283 |
+
</label>
|
284 |
+
</div>
|
285 |
+
</div>
|
286 |
+
|
287 |
+
<div class="mailpoet_automated_latest_content_non_title_list_options {{#ifCond model.displayType '==' 'titleOnly'}}{{#ifCond model.titleFormat '==' 'ul'}}mailpoet_hidden{{/ifCond}}{{/ifCond}}">
|
288 |
+
<div class="mailpoet_form_field">
|
289 |
+
<div class="mailpoet_form_field_title mailpoet_form_field_title_small"><%= __('Show divider between posts') %></div>
|
290 |
+
<div class="mailpoet_form_field_radio_option">
|
291 |
+
<label>
|
292 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_divider"class="mailpoet_automated_latest_content_show_divider" value="true" {{#if model.showDivider}}CHECKED{{/if}}/>
|
293 |
+
<%= __('Yes') %>
|
294 |
+
</label>
|
295 |
+
</div>
|
296 |
+
<div class="mailpoet_form_field_radio_option">
|
297 |
+
<label>
|
298 |
+
<input type="radio" name="mailpoet_automated_latest_content_show_divider"class="mailpoet_automated_latest_content_show_divider" value="false" {{#unless model.showDivider}}CHECKED{{/unless}}/>
|
299 |
+
<%= __('No') %>
|
300 |
+
</label>
|
301 |
+
</div>
|
302 |
+
<div>
|
303 |
+
<a href="javascript:;" class="mailpoet_automated_latest_content_select_divider"><%= __('Select divider') %></a>
|
304 |
+
</div>
|
305 |
+
</div>
|
306 |
+
|
307 |
+
</div>
|
308 |
+
</div>
|
309 |
+
|
310 |
+
<div class="mailpoet_form_field">
|
311 |
+
<input type="button" class="button button-primary mailpoet_done_editing" value="<%= __('Done') | escape('html_attr') %>" />
|
312 |
+
</div>
|
313 |
+
|
views/newsletter/templates/blocks/automatedLatestContentLayout/widget.hbs
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<div class="mailpoet_widget_icon">
|
2 |
+
<%= source('newsletter/templates/svg/block-icons/auto-post.svg') %>
|
3 |
+
</div>
|
4 |
+
<div class="mailpoet_widget_title"><%= __('Automatic Latest Content') %></div>
|
views/newsletter/templates/blocks/posts/block.hbs
CHANGED
@@ -1,5 +1,3 @@
|
|
1 |
<div class="mailpoet_tools"></div>
|
2 |
-
<div class="
|
3 |
-
<div class="mailpoet_posts_block_posts"></div>
|
4 |
-
</div>
|
5 |
<div class="mailpoet_block_highlight"></div>
|
1 |
<div class="mailpoet_tools"></div>
|
2 |
+
<div class="mailpoet_posts_container"></div>
|
|
|
|
|
3 |
<div class="mailpoet_block_highlight"></div>
|
views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs
CHANGED
@@ -95,14 +95,26 @@
|
|
95 |
<div class="mailpoet_form_field_title"><%= __('Featured image position') %></div>
|
96 |
<div class="mailpoet_form_field_radio_option">
|
97 |
<label>
|
98 |
-
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="
|
99 |
-
<%= __('
|
100 |
</label>
|
101 |
</div>
|
102 |
<div class="mailpoet_form_field_radio_option">
|
103 |
<label>
|
104 |
-
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="
|
105 |
-
<%= __('
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
</label>
|
107 |
</div>
|
108 |
<div class="mailpoet_form_field_radio_option">
|
95 |
<div class="mailpoet_form_field_title"><%= __('Featured image position') %></div>
|
96 |
<div class="mailpoet_form_field_radio_option">
|
97 |
<label>
|
98 |
+
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="centered" {{#ifCond model.featuredImagePosition '==' 'centered' }}CHECKED{{/ifCond}}/>
|
99 |
+
<%= __('Centered') %>
|
100 |
</label>
|
101 |
</div>
|
102 |
<div class="mailpoet_form_field_radio_option">
|
103 |
<label>
|
104 |
+
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="left" {{#ifCond model.featuredImagePosition '==' 'left' }}CHECKED{{/ifCond}}/>
|
105 |
+
<%= __('Left') %>
|
106 |
+
</label>
|
107 |
+
</div>
|
108 |
+
<div class="mailpoet_form_field_radio_option">
|
109 |
+
<label>
|
110 |
+
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="right" {{#ifCond model.featuredImagePosition '==' 'right' }}CHECKED{{/ifCond}}/>
|
111 |
+
<%= __('Right') %>
|
112 |
+
</label>
|
113 |
+
</div>
|
114 |
+
<div class="mailpoet_form_field_radio_option">
|
115 |
+
<label>
|
116 |
+
<input type="radio" name="mailpoet_posts_featured_image_position" class="mailpoet_posts_featured_image_position" value="alternate" {{#ifCond model.featuredImagePosition '==' 'alternate' }}CHECKED{{/ifCond}}/>
|
117 |
+
<%= __('Alternate') %>
|
118 |
</label>
|
119 |
</div>
|
120 |
<div class="mailpoet_form_field_radio_option">
|