Version Description
- 2017-10-03 =
- Improved: plugin capabilities can be managed with Members plugin;
- Improved: removes unsightly horizontal scrollbar in some parts of the newsletter editor;
- Improved: email templates to be displayed in order of last modification;
- Fixed: it's not possible to submit a subscription form multiple times with an existing e-mail address anymore. Thanks Suyog Palav and Bits of Freedom!
- Fixed: users subscribed before registering on a site are synchronized during WP users sync. Thanks Nicolas!
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (New) |
Version | 3.0.2 |
Comparing to | |
See all releases |
Code changes from version 3.0.1 to 3.0.2
- assets/css/admin-global.4193f33b.css +32 -0
- assets/css/manifest.json +2 -1
- assets/css/{newsletter_editor.47c884ae.css → newsletter_editor.40bfeff4.css} +2 -2
- assets/fonts/index.php +0 -0
- assets/fonts/mailpoet.svg +11 -0
- assets/fonts/mailpoet.ttf +0 -0
- assets/fonts/mailpoet.woff +0 -0
- assets/js/{admin.e3b1aa46.js → admin.5545d8c1.js} +504 -483
- assets/js/{admin_vendor.53a6d3ec.js → admin_vendor.5bfea06b.js} +0 -0
- assets/js/manifest.json +4 -4
- assets/js/{newsletter_editor.2627c560.js → newsletter_editor.ea5d61a2.js} +504 -483
- assets/js/{vendor.b4463523.js → vendor.3c88b878.js} +1 -1
- lang/index.php +0 -3
- 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-sv_SE.mo +0 -0
- lang/mailpoet-tr_TR.mo +0 -0
- lang/mailpoet.pot +118 -69
- lib/API/JSON/v1/AutomatedLatestContent.php +2 -1
- lib/API/JSON/v1/NewsletterTemplates.php +1 -1
- lib/API/JSON/v1/Subscribers.php +16 -0
- lib/Config/AccessControl.php +29 -24
- lib/Config/Activator.php +6 -0
- lib/Config/Capabilities.php +85 -0
- lib/Config/Initializer.php +6 -3
- lib/Config/Menu.php +158 -168
- lib/Models/Subscriber.php +2 -17
- lib/Segments/WP.php +12 -0
- lib/Subscription/Pages.php +1 -1
- lib/Util/Helpers.php +5 -0
- mailpoet.php +2 -3
- readme.txt +8 -1
- 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/settings.html +1 -1
- views/settings/advanced.html +21 -0
- views/settings/premium.html +4 -4
- views/update.html +2 -12
assets/css/admin-global.4193f33b.css
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'mailpoet';
|
3 |
+
src: url("../fonts/mailpoet.ttf?mx0b6n") format('truetype'), url("../fonts/mailpoet.woff?mx0b6n") format('woff'), url("../fonts/mailpoet.svg?mx0b6n#mailpoet") format('svg');
|
4 |
+
font-weight: normal;
|
5 |
+
font-style: normal;
|
6 |
+
}
|
7 |
+
[class^="mailpoet-icon-"],
|
8 |
+
[class*=" mailpoet-icon-"] {
|
9 |
+
font-family: 'mailpoet' !important;
|
10 |
+
speak: none;
|
11 |
+
font-style: normal;
|
12 |
+
font-weight: normal;
|
13 |
+
font-variant: normal;
|
14 |
+
text-transform: none;
|
15 |
+
line-height: 1;
|
16 |
+
/* Better Font Rendering =========== */
|
17 |
+
-webkit-font-smoothing: antialiased;
|
18 |
+
-moz-osx-font-smoothing: grayscale;
|
19 |
+
}
|
20 |
+
.mailpoet-icon-logo:before {
|
21 |
+
content: "\e900";
|
22 |
+
}
|
23 |
+
/*
|
24 |
+
Style for Members plugin
|
25 |
+
*/
|
26 |
+
.members-tab-title .mailpoet-icon-logo {
|
27 |
+
vertical-align: middle;
|
28 |
+
height: 20px;
|
29 |
+
width: 20px;
|
30 |
+
font-size: 20px;
|
31 |
+
margin-right: 3px;
|
32 |
+
}
|
assets/css/manifest.json
CHANGED
@@ -1,7 +1,8 @@
|
|
1 |
{
|
|
|
2 |
"admin.css": "admin.8b85810c.css",
|
3 |
"importExport.css": "importExport.b3745466.css",
|
4 |
-
"newsletter_editor.css": "newsletter_editor.
|
5 |
"public.css": "public.cae357df.css",
|
6 |
"rtl.css": "rtl.d41d8cd9.css"
|
7 |
}
|
1 |
{
|
2 |
+
"admin-global.css": "admin-global.4193f33b.css",
|
3 |
"admin.css": "admin.8b85810c.css",
|
4 |
"importExport.css": "importExport.b3745466.css",
|
5 |
+
"newsletter_editor.css": "newsletter_editor.40bfeff4.css",
|
6 |
"public.css": "public.cae357df.css",
|
7 |
"rtl.css": "rtl.d41d8cd9.css"
|
8 |
}
|
assets/css/{newsletter_editor.47c884ae.css → newsletter_editor.40bfeff4.css}
RENAMED
@@ -2130,7 +2130,7 @@ input.mailpoet_option_offset_left_small {
|
|
2130 |
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
|
2131 |
max-height: 2000px;
|
2132 |
opacity: 1;
|
2133 |
-
overflow-y:
|
2134 |
}
|
2135 |
.mailpoet_automated_latest_content_display_options.mailpoet_closed {
|
2136 |
max-height: 0px;
|
@@ -2164,7 +2164,7 @@ input.mailpoet_option_offset_left_small {
|
|
2164 |
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
|
2165 |
max-height: 2000px;
|
2166 |
opacity: 1;
|
2167 |
-
overflow-y:
|
2168 |
overflow-x: hidden;
|
2169 |
}
|
2170 |
.mailpoet_settings_posts_display_options.mailpoet_closed,
|
2130 |
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
|
2131 |
max-height: 2000px;
|
2132 |
opacity: 1;
|
2133 |
+
overflow-y: inherit;
|
2134 |
}
|
2135 |
.mailpoet_automated_latest_content_display_options.mailpoet_closed {
|
2136 |
max-height: 0px;
|
2164 |
transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
|
2165 |
max-height: 2000px;
|
2166 |
opacity: 1;
|
2167 |
+
overflow-y: inherit;
|
2168 |
overflow-x: hidden;
|
2169 |
}
|
2170 |
.mailpoet_settings_posts_display_options.mailpoet_closed,
|
assets/fonts/index.php
ADDED
File without changes
|
assets/fonts/mailpoet.svg
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="mailpoet" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
+
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="0" d="" />
|
10 |
+
<glyph unicode="" glyph-name="optimised" horiz-adv-x="972" d="M230.188 949.695c-21.982-3.361-41.376-14.741-48.618-28.188l-5.948-11.637 0.517-265.588c0.776-263.779 0.776-265.847 6.206-273.088 11.12-15.258 40.601-22.24 68.79-16.551 16.551 3.621 25.861 9.827 32.584 21.723 3.879 7.499 4.397 23.791 5.689 185.161l1.293 176.628 60.514-161.111c33.102-88.702 63.875-168.612 68.013-177.404 13.707-29.481 35.687-41.376 72.151-39.049 21.206 1.293 39.308 9.827 47.584 22.499 3.361 5.172 35.947 91.806 72.41 192.662s67.237 185.42 68.53 187.49c1.551 2.587 2.587-69.307 2.587-185.937v-190.335l5.948-11.379c8.533-16.809 20.172-21.982 49.652-21.982 27.929 0.259 39.825 4.914 49.911 20.172l6.982 10.603v530.401l-5.689 9.31c-12.671 20.43-50.17 31.033-91.806 25.601-34.394-4.138-53.79-16.292-66.72-41.118-2.587-5.172-35.947-101.89-73.961-214.902s-69.824-206.367-70.6-207.403c-1.034-1.034-32.326 86.115-69.824 193.954-37.757 107.581-71.892 205.075-76.030 216.453-10.086 26.118-25.601 42.929-45.514 48.877-17.326 5.172-46.807 6.982-64.652 4.138zM54.854 243.443c-20.172-3.879-43.963-19.136-51.204-33.619-6.206-11.379-4.914-32.843 2.587-47.841 23.533-46.807 71.634-86.892 126.717-104.736 17.068-5.689 23.274-5.948 120.252-7.499 97.235-1.551 102.926-1.81 116.373-7.241 29.739-11.896 51.204-35.687 61.807-68.013 3.621-11.12 13.964-21.206 25.861-25.344 4.914-1.551 18.361-2.844 29.739-2.844 16.809 0 23.533 1.293 32.584 5.689 11.896 6.206 13.964 9.31 26.895 38.791 11.896 27.671 39.567 49.652 70.858 56.117 8.533 1.81 47.067 2.844 100.856 2.844 99.563 0 113.786 2.068 151.801 20.689 49.652 24.567 96.978 77.84 101.373 113.529 3.104 26.118-17.326 49.394-51.204 58.187-25.601 6.465-41.635-0.517-54.825-24.050-11.12-19.655-29.998-38.015-47.841-46.29l-14.741-6.982-99.563-1.551c-90.77-1.293-101.373-2.068-120.252-6.982-27.154-7.499-58.444-23.016-80.427-40.084l-17.844-13.964-16.809 13.964c-20.689 16.809-51.462 32.584-78.875 39.825-19.136 5.172-28.705 5.948-120.252 7.241l-99.563 1.551-15.775 7.241c-18.102 8.533-32.584 21.982-48.36 45.773-16.034 24.567-26.895 29.998-50.17 25.601z" />
|
11 |
+
</font></defs></svg>
|
assets/fonts/mailpoet.ttf
ADDED
Binary file
|
assets/fonts/mailpoet.woff
ADDED
Binary file
|
assets/js/{admin.e3b1aa46.js → admin.5545d8c1.js}
RENAMED
@@ -3412,7 +3412,7 @@ webpackJsonp([0],[
|
|
3412 |
/***/ function(module, exports, __webpack_require__) {
|
3413 |
|
3414 |
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
|
3415 |
-
* Select2 4.0.
|
3416 |
* https://select2.github.io
|
3417 |
*
|
3418 |
* Released under the MIT license
|
@@ -3422,462 +3422,480 @@ webpackJsonp([0],[
|
|
3422 |
if (true) {
|
3423 |
// AMD. Register as an anonymous module.
|
3424 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(273)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
3425 |
-
} else if (typeof
|
3426 |
// Node/CommonJS
|
3427 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3428 |
} else {
|
3429 |
// Browser globals
|
3430 |
factory(jQuery);
|
3431 |
}
|
3432 |
-
}(function (jQuery) {
|
3433 |
// This is needed so we can catch the AMD loader configuration and use it
|
3434 |
// The inner file should be wrapped (by `banner.start.js`) in a function that
|
3435 |
// returns the AMD loader references.
|
3436 |
-
var S2 =
|
3437 |
-
(function () {
|
3438 |
// Restore the Select2 AMD loader so it can be used
|
3439 |
// Needed mostly in the language files, where the loader is not inserted
|
3440 |
if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
|
3441 |
var S2 = jQuery.fn.select2.amd;
|
3442 |
}
|
3443 |
-
var S2;(function () { if (!S2 || !S2.requirejs) {
|
3444 |
-
if (!S2) { S2 = {}; } else { require = S2; }
|
3445 |
-
/**
|
3446 |
-
* @license almond 0.3.
|
3447 |
-
*
|
3448 |
-
|
3449 |
-
|
3450 |
-
//
|
3451 |
-
|
3452 |
-
|
3453 |
-
|
3454 |
-
|
3455 |
-
|
3456 |
-
|
3457 |
-
|
3458 |
-
|
3459 |
-
|
3460 |
-
|
3461 |
-
|
3462 |
-
|
3463 |
-
|
3464 |
-
|
3465 |
-
|
3466 |
-
|
3467 |
-
|
3468 |
-
|
3469 |
-
|
3470 |
-
|
3471 |
-
*
|
3472 |
-
* a real name that
|
3473 |
-
*
|
3474 |
-
* @
|
3475 |
-
|
3476 |
-
|
3477 |
-
|
3478 |
-
|
3479 |
-
|
3480 |
-
|
3481 |
-
|
3482 |
-
|
3483 |
-
|
3484 |
-
|
3485 |
-
|
3486 |
-
|
3487 |
-
|
3488 |
-
//
|
3489 |
-
//
|
3490 |
-
|
3491 |
-
|
3492 |
-
|
3493 |
-
|
3494 |
-
|
3495 |
-
|
3496 |
-
|
3497 |
-
|
3498 |
-
|
3499 |
-
//
|
3500 |
-
//
|
3501 |
-
//
|
3502 |
-
//
|
3503 |
-
|
3504 |
-
|
3505 |
-
|
3506 |
-
|
3507 |
-
|
3508 |
-
|
3509 |
-
|
3510 |
-
|
3511 |
-
|
3512 |
-
|
3513 |
-
|
3514 |
-
|
3515 |
-
|
3516 |
-
|
3517 |
-
|
3518 |
-
|
3519 |
-
|
3520 |
-
|
3521 |
-
|
3522 |
-
|
3523 |
-
|
3524 |
-
}
|
3525 |
-
}
|
3526 |
-
|
3527 |
-
|
3528 |
-
|
3529 |
-
|
3530 |
-
|
3531 |
-
|
3532 |
-
|
3533 |
-
|
3534 |
-
|
3535 |
-
|
3536 |
-
|
3537 |
-
|
3538 |
-
|
3539 |
-
|
3540 |
-
|
3541 |
-
|
3542 |
-
|
3543 |
-
|
3544 |
-
|
3545 |
-
|
3546 |
-
|
3547 |
-
|
3548 |
-
|
3549 |
-
|
3550 |
-
|
3551 |
-
|
3552 |
-
|
3553 |
-
|
3554 |
-
|
3555 |
-
|
3556 |
-
|
3557 |
-
|
3558 |
-
|
3559 |
-
|
3560 |
-
|
3561 |
-
}
|
3562 |
-
|
3563 |
-
|
3564 |
-
|
3565 |
-
|
3566 |
-
|
3567 |
-
|
3568 |
-
|
3569 |
-
|
3570 |
-
|
3571 |
-
|
3572 |
-
|
3573 |
-
|
3574 |
-
|
3575 |
-
|
3576 |
-
|
3577 |
-
|
3578 |
-
foundI
|
3579 |
-
|
3580 |
-
|
3581 |
-
|
3582 |
-
|
3583 |
-
|
3584 |
-
|
3585 |
-
|
3586 |
-
|
3587 |
-
return
|
3588 |
-
|
3589 |
-
|
3590 |
-
|
3591 |
-
|
3592 |
-
|
3593 |
-
//
|
3594 |
-
//
|
3595 |
-
|
3596 |
-
|
3597 |
-
|
3598 |
-
|
3599 |
-
|
3600 |
-
|
3601 |
-
|
3602 |
-
|
3603 |
-
|
3604 |
-
|
3605 |
-
|
3606 |
-
|
3607 |
-
|
3608 |
-
|
3609 |
-
|
3610 |
-
|
3611 |
-
|
3612 |
-
|
3613 |
-
|
3614 |
-
|
3615 |
-
|
3616 |
-
|
3617 |
-
|
3618 |
-
|
3619 |
-
|
3620 |
-
|
3621 |
-
|
3622 |
-
|
3623 |
-
|
3624 |
-
|
3625 |
-
}
|
3626 |
-
|
3627 |
-
|
3628 |
-
|
3629 |
-
|
3630 |
-
|
3631 |
-
|
3632 |
-
|
3633 |
-
|
3634 |
-
|
3635 |
-
|
3636 |
-
|
3637 |
-
|
3638 |
-
|
3639 |
-
|
3640 |
-
|
3641 |
-
|
3642 |
-
|
3643 |
-
|
3644 |
-
|
3645 |
-
|
3646 |
-
|
3647 |
-
|
3648 |
-
|
3649 |
-
*
|
3650 |
-
|
3651 |
-
|
3652 |
-
|
3653 |
-
|
3654 |
-
|
3655 |
-
|
3656 |
-
|
3657 |
-
|
3658 |
-
|
3659 |
-
|
3660 |
-
|
3661 |
-
|
3662 |
-
|
3663 |
-
|
3664 |
-
|
3665 |
-
|
3666 |
-
|
3667 |
-
|
3668 |
-
|
3669 |
-
|
3670 |
-
|
3671 |
-
|
3672 |
-
|
3673 |
-
|
3674 |
-
name =
|
3675 |
-
|
3676 |
-
|
3677 |
-
|
3678 |
-
|
3679 |
-
|
3680 |
-
|
3681 |
-
|
3682 |
-
|
3683 |
-
|
3684 |
-
|
3685 |
-
|
3686 |
-
|
3687 |
-
|
3688 |
-
|
3689 |
-
|
3690 |
-
|
3691 |
-
|
3692 |
-
|
3693 |
-
|
3694 |
-
|
3695 |
-
|
3696 |
-
|
3697 |
-
|
3698 |
-
|
3699 |
-
|
3700 |
-
|
3701 |
-
|
3702 |
-
|
3703 |
-
|
3704 |
-
|
3705 |
-
|
3706 |
-
|
3707 |
-
|
3708 |
-
|
3709 |
-
|
3710 |
-
|
3711 |
-
|
3712 |
-
|
3713 |
-
|
3714 |
-
|
3715 |
-
|
3716 |
-
|
3717 |
-
|
3718 |
-
|
3719 |
-
|
3720 |
-
|
3721 |
-
|
3722 |
-
|
3723 |
-
|
3724 |
-
|
3725 |
-
|
3726 |
-
//
|
3727 |
-
|
3728 |
-
|
3729 |
-
|
3730 |
-
|
3731 |
-
|
3732 |
-
|
3733 |
-
|
3734 |
-
|
3735 |
-
|
3736 |
-
|
3737 |
-
|
3738 |
-
|
3739 |
-
|
3740 |
-
|
3741 |
-
|
3742 |
-
|
3743 |
-
} else if (depName === "
|
3744 |
-
//CommonJS module spec 1.1
|
3745 |
-
|
3746 |
-
|
3747 |
-
|
3748 |
-
|
3749 |
-
args[i] =
|
3750 |
-
} else if (
|
3751 |
-
|
3752 |
-
|
3753 |
-
|
3754 |
-
|
3755 |
-
|
3756 |
-
|
3757 |
-
|
3758 |
-
|
3759 |
-
|
3760 |
-
|
3761 |
-
|
3762 |
-
|
3763 |
-
|
3764 |
-
|
3765 |
-
|
3766 |
-
|
3767 |
-
|
3768 |
-
|
3769 |
-
|
3770 |
-
|
3771 |
-
|
3772 |
-
|
3773 |
-
|
3774 |
-
|
3775 |
-
|
3776 |
-
}
|
3777 |
-
|
3778 |
-
|
3779 |
-
|
3780 |
-
|
3781 |
-
|
3782 |
-
|
3783 |
-
|
3784 |
-
|
3785 |
-
|
3786 |
-
|
3787 |
-
|
3788 |
-
|
3789 |
-
return
|
3790 |
-
|
3791 |
-
//
|
3792 |
-
|
3793 |
-
|
3794 |
-
|
3795 |
-
|
3796 |
-
|
3797 |
-
|
3798 |
-
|
3799 |
-
|
3800 |
-
if (callback
|
3801 |
-
|
3802 |
-
|
3803 |
-
|
3804 |
-
|
3805 |
-
|
3806 |
-
|
3807 |
-
deps =
|
3808 |
-
|
3809 |
-
|
3810 |
-
|
3811 |
-
|
3812 |
-
|
3813 |
-
|
3814 |
-
|
3815 |
-
//
|
3816 |
-
|
3817 |
-
|
3818 |
-
|
3819 |
-
|
3820 |
-
|
3821 |
-
|
3822 |
-
|
3823 |
-
|
3824 |
-
|
3825 |
-
|
3826 |
-
|
3827 |
-
|
3828 |
-
|
3829 |
-
//
|
3830 |
-
//
|
3831 |
-
|
3832 |
-
|
3833 |
-
|
3834 |
-
|
3835 |
-
|
3836 |
-
|
3837 |
-
|
3838 |
-
|
3839 |
-
|
3840 |
-
|
3841 |
-
|
3842 |
-
|
3843 |
-
|
3844 |
-
|
3845 |
-
|
3846 |
-
|
3847 |
-
|
3848 |
-
|
3849 |
-
|
3850 |
-
|
3851 |
-
|
3852 |
-
|
3853 |
-
|
3854 |
-
|
3855 |
-
|
3856 |
-
|
3857 |
-
|
3858 |
-
|
3859 |
-
|
3860 |
-
|
3861 |
-
|
3862 |
-
|
3863 |
-
deps
|
3864 |
-
|
3865 |
-
|
3866 |
-
|
3867 |
-
|
3868 |
-
}
|
3869 |
-
|
3870 |
-
|
3871 |
-
|
3872 |
-
|
3873 |
-
};
|
3874 |
-
|
3875 |
-
|
3876 |
-
|
3877 |
-
|
3878 |
-
}());
|
3879 |
-
|
3880 |
-
|
|
|
|
|
|
|
|
|
3881 |
/* global jQuery:false, $:false */
|
3882 |
S2.define('jquery',[],function () {
|
3883 |
var _$ = jQuery || $;
|
@@ -3892,7 +3910,7 @@ webpackJsonp([0],[
|
|
3892 |
|
3893 |
return _$;
|
3894 |
});
|
3895 |
-
|
3896 |
S2.define('select2/utils',[
|
3897 |
'jquery'
|
3898 |
], function ($) {
|
@@ -4169,7 +4187,7 @@ webpackJsonp([0],[
|
|
4169 |
|
4170 |
return Utils;
|
4171 |
});
|
4172 |
-
|
4173 |
S2.define('select2/results',[
|
4174 |
'jquery',
|
4175 |
'./utils'
|
@@ -4693,7 +4711,7 @@ webpackJsonp([0],[
|
|
4693 |
|
4694 |
return Results;
|
4695 |
});
|
4696 |
-
|
4697 |
S2.define('select2/keys',[
|
4698 |
|
4699 |
], function () {
|
@@ -4719,7 +4737,7 @@ webpackJsonp([0],[
|
|
4719 |
|
4720 |
return KEYS;
|
4721 |
});
|
4722 |
-
|
4723 |
S2.define('select2/selection/base',[
|
4724 |
'jquery',
|
4725 |
'../utils',
|
@@ -4878,7 +4896,7 @@ webpackJsonp([0],[
|
|
4878 |
|
4879 |
return BaseSelection;
|
4880 |
});
|
4881 |
-
|
4882 |
S2.define('select2/selection/single',[
|
4883 |
'jquery',
|
4884 |
'./base',
|
@@ -4978,7 +4996,7 @@ webpackJsonp([0],[
|
|
4978 |
|
4979 |
return SingleSelection;
|
4980 |
});
|
4981 |
-
|
4982 |
S2.define('select2/selection/multiple',[
|
4983 |
'jquery',
|
4984 |
'./base',
|
@@ -5088,7 +5106,7 @@ webpackJsonp([0],[
|
|
5088 |
|
5089 |
return MultipleSelection;
|
5090 |
});
|
5091 |
-
|
5092 |
S2.define('select2/selection/placeholder',[
|
5093 |
'../utils'
|
5094 |
], function (Utils) {
|
@@ -5138,7 +5156,7 @@ webpackJsonp([0],[
|
|
5138 |
|
5139 |
return Placeholder;
|
5140 |
});
|
5141 |
-
|
5142 |
S2.define('select2/selection/allowClear',[
|
5143 |
'jquery',
|
5144 |
'../keys'
|
@@ -5236,7 +5254,7 @@ webpackJsonp([0],[
|
|
5236 |
|
5237 |
return AllowClear;
|
5238 |
});
|
5239 |
-
|
5240 |
S2.define('select2/selection/search',[
|
5241 |
'jquery',
|
5242 |
'../utils',
|
@@ -5459,7 +5477,7 @@ webpackJsonp([0],[
|
|
5459 |
|
5460 |
return Search;
|
5461 |
});
|
5462 |
-
|
5463 |
S2.define('select2/selection/eventRelay',[
|
5464 |
'jquery'
|
5465 |
], function ($) {
|
@@ -5505,7 +5523,7 @@ webpackJsonp([0],[
|
|
5505 |
|
5506 |
return EventRelay;
|
5507 |
});
|
5508 |
-
|
5509 |
S2.define('select2/translation',[
|
5510 |
'jquery',
|
5511 |
'require'
|
@@ -5542,7 +5560,7 @@ webpackJsonp([0],[
|
|
5542 |
|
5543 |
return Translation;
|
5544 |
});
|
5545 |
-
|
5546 |
S2.define('select2/diacritics',[
|
5547 |
|
5548 |
], function () {
|
@@ -6390,7 +6408,7 @@ webpackJsonp([0],[
|
|
6390 |
|
6391 |
return diacritics;
|
6392 |
});
|
6393 |
-
|
6394 |
S2.define('select2/data/base',[
|
6395 |
'../utils'
|
6396 |
], function (Utils) {
|
@@ -6431,7 +6449,7 @@ webpackJsonp([0],[
|
|
6431 |
|
6432 |
return BaseAdapter;
|
6433 |
});
|
6434 |
-
|
6435 |
S2.define('select2/data/select',[
|
6436 |
'./base',
|
6437 |
'../utils',
|
@@ -6604,7 +6622,7 @@ webpackJsonp([0],[
|
|
6604 |
}
|
6605 |
}
|
6606 |
|
6607 |
-
if (data.id) {
|
6608 |
option.value = data.id;
|
6609 |
}
|
6610 |
|
@@ -6717,7 +6735,7 @@ webpackJsonp([0],[
|
|
6717 |
|
6718 |
return SelectAdapter;
|
6719 |
});
|
6720 |
-
|
6721 |
S2.define('select2/data/array',[
|
6722 |
'./select',
|
6723 |
'../utils',
|
@@ -6797,7 +6815,7 @@ webpackJsonp([0],[
|
|
6797 |
|
6798 |
return ArrayAdapter;
|
6799 |
});
|
6800 |
-
|
6801 |
S2.define('select2/data/ajax',[
|
6802 |
'./array',
|
6803 |
'../utils',
|
@@ -6907,7 +6925,7 @@ webpackJsonp([0],[
|
|
6907 |
|
6908 |
return AjaxAdapter;
|
6909 |
});
|
6910 |
-
|
6911 |
S2.define('select2/data/tags',[
|
6912 |
'jquery'
|
6913 |
], function ($) {
|
@@ -6963,7 +6981,10 @@ webpackJsonp([0],[
|
|
6963 |
}, true)
|
6964 |
);
|
6965 |
|
6966 |
-
var
|
|
|
|
|
|
|
6967 |
|
6968 |
if (checkText || checkChildren) {
|
6969 |
if (child) {
|
@@ -7033,7 +7054,7 @@ webpackJsonp([0],[
|
|
7033 |
|
7034 |
return Tags;
|
7035 |
});
|
7036 |
-
|
7037 |
S2.define('select2/data/tokenizer',[
|
7038 |
'jquery'
|
7039 |
], function ($) {
|
@@ -7150,7 +7171,7 @@ webpackJsonp([0],[
|
|
7150 |
|
7151 |
return Tokenizer;
|
7152 |
});
|
7153 |
-
|
7154 |
S2.define('select2/data/minimumInputLength',[
|
7155 |
|
7156 |
], function () {
|
@@ -7181,7 +7202,7 @@ webpackJsonp([0],[
|
|
7181 |
|
7182 |
return MinimumInputLength;
|
7183 |
});
|
7184 |
-
|
7185 |
S2.define('select2/data/maximumInputLength',[
|
7186 |
|
7187 |
], function () {
|
@@ -7213,7 +7234,7 @@ webpackJsonp([0],[
|
|
7213 |
|
7214 |
return MaximumInputLength;
|
7215 |
});
|
7216 |
-
|
7217 |
S2.define('select2/data/maximumSelectionLength',[
|
7218 |
|
7219 |
], function (){
|
@@ -7245,7 +7266,7 @@ webpackJsonp([0],[
|
|
7245 |
|
7246 |
return MaximumSelectionLength;
|
7247 |
});
|
7248 |
-
|
7249 |
S2.define('select2/dropdown',[
|
7250 |
'jquery',
|
7251 |
'./utils'
|
@@ -7288,7 +7309,7 @@ webpackJsonp([0],[
|
|
7288 |
|
7289 |
return Dropdown;
|
7290 |
});
|
7291 |
-
|
7292 |
S2.define('select2/dropdown/search',[
|
7293 |
'jquery',
|
7294 |
'../utils'
|
@@ -7354,7 +7375,7 @@ webpackJsonp([0],[
|
|
7354 |
});
|
7355 |
|
7356 |
container.on('focus', function () {
|
7357 |
-
if (container.isOpen()) {
|
7358 |
self.$search.focus();
|
7359 |
}
|
7360 |
});
|
@@ -7390,7 +7411,7 @@ webpackJsonp([0],[
|
|
7390 |
|
7391 |
return Search;
|
7392 |
});
|
7393 |
-
|
7394 |
S2.define('select2/dropdown/hidePlaceholder',[
|
7395 |
|
7396 |
], function () {
|
@@ -7433,7 +7454,7 @@ webpackJsonp([0],[
|
|
7433 |
|
7434 |
return HidePlaceholder;
|
7435 |
});
|
7436 |
-
|
7437 |
S2.define('select2/dropdown/infiniteScroll',[
|
7438 |
'jquery'
|
7439 |
], function ($) {
|
@@ -7523,7 +7544,7 @@ webpackJsonp([0],[
|
|
7523 |
|
7524 |
return InfiniteScroll;
|
7525 |
});
|
7526 |
-
|
7527 |
S2.define('select2/dropdown/attachBody',[
|
7528 |
'jquery',
|
7529 |
'../utils'
|
@@ -7746,7 +7767,7 @@ webpackJsonp([0],[
|
|
7746 |
|
7747 |
return AttachBody;
|
7748 |
});
|
7749 |
-
|
7750 |
S2.define('select2/dropdown/minimumResultsForSearch',[
|
7751 |
|
7752 |
], function () {
|
@@ -7786,7 +7807,7 @@ webpackJsonp([0],[
|
|
7786 |
|
7787 |
return MinimumResultsForSearch;
|
7788 |
});
|
7789 |
-
|
7790 |
S2.define('select2/dropdown/selectOnClose',[
|
7791 |
|
7792 |
], function () {
|
@@ -7837,7 +7858,7 @@ webpackJsonp([0],[
|
|
7837 |
|
7838 |
return SelectOnClose;
|
7839 |
});
|
7840 |
-
|
7841 |
S2.define('select2/dropdown/closeOnSelect',[
|
7842 |
|
7843 |
], function () {
|
@@ -7873,7 +7894,7 @@ webpackJsonp([0],[
|
|
7873 |
|
7874 |
return CloseOnSelect;
|
7875 |
});
|
7876 |
-
|
7877 |
S2.define('select2/i18n/en',[],function () {
|
7878 |
// English
|
7879 |
return {
|
@@ -7918,7 +7939,7 @@ webpackJsonp([0],[
|
|
7918 |
}
|
7919 |
};
|
7920 |
});
|
7921 |
-
|
7922 |
S2.define('select2/defaults',[
|
7923 |
'jquery',
|
7924 |
'require',
|
@@ -8315,7 +8336,7 @@ webpackJsonp([0],[
|
|
8315 |
|
8316 |
return defaults;
|
8317 |
});
|
8318 |
-
|
8319 |
S2.define('select2/options',[
|
8320 |
'require',
|
8321 |
'jquery',
|
@@ -8438,7 +8459,7 @@ webpackJsonp([0],[
|
|
8438 |
|
8439 |
return Options;
|
8440 |
});
|
8441 |
-
|
8442 |
S2.define('select2/core',[
|
8443 |
'jquery',
|
8444 |
'./options',
|
@@ -9051,14 +9072,14 @@ webpackJsonp([0],[
|
|
9051 |
|
9052 |
return Select2;
|
9053 |
});
|
9054 |
-
|
9055 |
S2.define('jquery-mousewheel',[
|
9056 |
'jquery'
|
9057 |
], function ($) {
|
9058 |
// Used to shim jQuery.mousewheel for non-full builds.
|
9059 |
return $;
|
9060 |
});
|
9061 |
-
|
9062 |
S2.define('jquery.select2',[
|
9063 |
'jquery',
|
9064 |
'jquery-mousewheel',
|
@@ -9116,7 +9137,7 @@ webpackJsonp([0],[
|
|
9116 |
|
9117 |
return Select2;
|
9118 |
});
|
9119 |
-
|
9120 |
// Return the AMD loader configuration so it can be used outside of this file
|
9121 |
return {
|
9122 |
define: S2.define,
|
3412 |
/***/ function(module, exports, __webpack_require__) {
|
3413 |
|
3414 |
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
|
3415 |
+
* Select2 4.0.4
|
3416 |
* https://select2.github.io
|
3417 |
*
|
3418 |
* Released under the MIT license
|
3422 |
if (true) {
|
3423 |
// AMD. Register as an anonymous module.
|
3424 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(273)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
3425 |
+
} else if (typeof module === 'object' && module.exports) {
|
3426 |
// Node/CommonJS
|
3427 |
+
module.exports = function (root, jQuery) {
|
3428 |
+
if (jQuery === undefined) {
|
3429 |
+
// require('jQuery') returns a factory that requires window to
|
3430 |
+
// build a jQuery instance, we normalize how we use modules
|
3431 |
+
// that require this pattern but the window provided is a noop
|
3432 |
+
// if it's defined (how jquery works)
|
3433 |
+
if (typeof window !== 'undefined') {
|
3434 |
+
jQuery = require('jquery');
|
3435 |
+
}
|
3436 |
+
else {
|
3437 |
+
jQuery = require('jquery')(root);
|
3438 |
+
}
|
3439 |
+
}
|
3440 |
+
factory(jQuery);
|
3441 |
+
return jQuery;
|
3442 |
+
};
|
3443 |
} else {
|
3444 |
// Browser globals
|
3445 |
factory(jQuery);
|
3446 |
}
|
3447 |
+
} (function (jQuery) {
|
3448 |
// This is needed so we can catch the AMD loader configuration and use it
|
3449 |
// The inner file should be wrapped (by `banner.start.js`) in a function that
|
3450 |
// returns the AMD loader references.
|
3451 |
+
var S2 =(function () {
|
|
|
3452 |
// Restore the Select2 AMD loader so it can be used
|
3453 |
// Needed mostly in the language files, where the loader is not inserted
|
3454 |
if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
|
3455 |
var S2 = jQuery.fn.select2.amd;
|
3456 |
}
|
3457 |
+
var S2;(function () { if (!S2 || !S2.requirejs) {
|
3458 |
+
if (!S2) { S2 = {}; } else { require = S2; }
|
3459 |
+
/**
|
3460 |
+
* @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
|
3461 |
+
* Released under MIT license, http://github.com/requirejs/almond/LICENSE
|
3462 |
+
*/
|
3463 |
+
//Going sloppy to avoid 'use strict' string cost, but strict practices should
|
3464 |
+
//be followed.
|
3465 |
+
/*global setTimeout: false */
|
3466 |
+
|
3467 |
+
var requirejs, require, define;
|
3468 |
+
(function (undef) {
|
3469 |
+
var main, req, makeMap, handlers,
|
3470 |
+
defined = {},
|
3471 |
+
waiting = {},
|
3472 |
+
config = {},
|
3473 |
+
defining = {},
|
3474 |
+
hasOwn = Object.prototype.hasOwnProperty,
|
3475 |
+
aps = [].slice,
|
3476 |
+
jsSuffixRegExp = /\.js$/;
|
3477 |
+
|
3478 |
+
function hasProp(obj, prop) {
|
3479 |
+
return hasOwn.call(obj, prop);
|
3480 |
+
}
|
3481 |
+
|
3482 |
+
/**
|
3483 |
+
* Given a relative module name, like ./something, normalize it to
|
3484 |
+
* a real name that can be mapped to a path.
|
3485 |
+
* @param {String} name the relative name
|
3486 |
+
* @param {String} baseName a real name that the name arg is relative
|
3487 |
+
* to.
|
3488 |
+
* @returns {String} normalized name
|
3489 |
+
*/
|
3490 |
+
function normalize(name, baseName) {
|
3491 |
+
var nameParts, nameSegment, mapValue, foundMap, lastIndex,
|
3492 |
+
foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,
|
3493 |
+
baseParts = baseName && baseName.split("/"),
|
3494 |
+
map = config.map,
|
3495 |
+
starMap = (map && map['*']) || {};
|
3496 |
+
|
3497 |
+
//Adjust any relative paths.
|
3498 |
+
if (name) {
|
3499 |
+
name = name.split('/');
|
3500 |
+
lastIndex = name.length - 1;
|
3501 |
+
|
3502 |
+
// If wanting node ID compatibility, strip .js from end
|
3503 |
+
// of IDs. Have to do this here, and not in nameToUrl
|
3504 |
+
// because node allows either .js or non .js to map
|
3505 |
+
// to same file.
|
3506 |
+
if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
|
3507 |
+
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
|
3508 |
+
}
|
3509 |
+
|
3510 |
+
// Starts with a '.' so need the baseName
|
3511 |
+
if (name[0].charAt(0) === '.' && baseParts) {
|
3512 |
+
//Convert baseName to array, and lop off the last part,
|
3513 |
+
//so that . matches that 'directory' and not name of the baseName's
|
3514 |
+
//module. For instance, baseName of 'one/two/three', maps to
|
3515 |
+
//'one/two/three.js', but we want the directory, 'one/two' for
|
3516 |
+
//this normalization.
|
3517 |
+
normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
|
3518 |
+
name = normalizedBaseParts.concat(name);
|
3519 |
+
}
|
3520 |
+
|
3521 |
+
//start trimDots
|
3522 |
+
for (i = 0; i < name.length; i++) {
|
3523 |
+
part = name[i];
|
3524 |
+
if (part === '.') {
|
3525 |
+
name.splice(i, 1);
|
3526 |
+
i -= 1;
|
3527 |
+
} else if (part === '..') {
|
3528 |
+
// If at the start, or previous value is still ..,
|
3529 |
+
// keep them so that when converted to a path it may
|
3530 |
+
// still work when converted to a path, even though
|
3531 |
+
// as an ID it is less than ideal. In larger point
|
3532 |
+
// releases, may be better to just kick out an error.
|
3533 |
+
if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {
|
3534 |
+
continue;
|
3535 |
+
} else if (i > 0) {
|
3536 |
+
name.splice(i - 1, 2);
|
3537 |
+
i -= 2;
|
3538 |
+
}
|
3539 |
+
}
|
3540 |
+
}
|
3541 |
+
//end trimDots
|
3542 |
+
|
3543 |
+
name = name.join('/');
|
3544 |
+
}
|
3545 |
+
|
3546 |
+
//Apply map config if available.
|
3547 |
+
if ((baseParts || starMap) && map) {
|
3548 |
+
nameParts = name.split('/');
|
3549 |
+
|
3550 |
+
for (i = nameParts.length; i > 0; i -= 1) {
|
3551 |
+
nameSegment = nameParts.slice(0, i).join("/");
|
3552 |
+
|
3553 |
+
if (baseParts) {
|
3554 |
+
//Find the longest baseName segment match in the config.
|
3555 |
+
//So, do joins on the biggest to smallest lengths of baseParts.
|
3556 |
+
for (j = baseParts.length; j > 0; j -= 1) {
|
3557 |
+
mapValue = map[baseParts.slice(0, j).join('/')];
|
3558 |
+
|
3559 |
+
//baseName segment has config, find if it has one for
|
3560 |
+
//this name.
|
3561 |
+
if (mapValue) {
|
3562 |
+
mapValue = mapValue[nameSegment];
|
3563 |
+
if (mapValue) {
|
3564 |
+
//Match, update name to the new value.
|
3565 |
+
foundMap = mapValue;
|
3566 |
+
foundI = i;
|
3567 |
+
break;
|
3568 |
+
}
|
3569 |
+
}
|
3570 |
+
}
|
3571 |
+
}
|
3572 |
+
|
3573 |
+
if (foundMap) {
|
3574 |
+
break;
|
3575 |
+
}
|
3576 |
+
|
3577 |
+
//Check for a star map match, but just hold on to it,
|
3578 |
+
//if there is a shorter segment match later in a matching
|
3579 |
+
//config, then favor over this star map.
|
3580 |
+
if (!foundStarMap && starMap && starMap[nameSegment]) {
|
3581 |
+
foundStarMap = starMap[nameSegment];
|
3582 |
+
starI = i;
|
3583 |
+
}
|
3584 |
+
}
|
3585 |
+
|
3586 |
+
if (!foundMap && foundStarMap) {
|
3587 |
+
foundMap = foundStarMap;
|
3588 |
+
foundI = starI;
|
3589 |
+
}
|
3590 |
+
|
3591 |
+
if (foundMap) {
|
3592 |
+
nameParts.splice(0, foundI, foundMap);
|
3593 |
+
name = nameParts.join('/');
|
3594 |
+
}
|
3595 |
+
}
|
3596 |
+
|
3597 |
+
return name;
|
3598 |
+
}
|
3599 |
+
|
3600 |
+
function makeRequire(relName, forceSync) {
|
3601 |
+
return function () {
|
3602 |
+
//A version of a require function that passes a moduleName
|
3603 |
+
//value for items that may need to
|
3604 |
+
//look up paths relative to the moduleName
|
3605 |
+
var args = aps.call(arguments, 0);
|
3606 |
+
|
3607 |
+
//If first arg is not require('string'), and there is only
|
3608 |
+
//one arg, it is the array form without a callback. Insert
|
3609 |
+
//a null so that the following concat is correct.
|
3610 |
+
if (typeof args[0] !== 'string' && args.length === 1) {
|
3611 |
+
args.push(null);
|
3612 |
+
}
|
3613 |
+
return req.apply(undef, args.concat([relName, forceSync]));
|
3614 |
+
};
|
3615 |
+
}
|
3616 |
+
|
3617 |
+
function makeNormalize(relName) {
|
3618 |
+
return function (name) {
|
3619 |
+
return normalize(name, relName);
|
3620 |
+
};
|
3621 |
+
}
|
3622 |
+
|
3623 |
+
function makeLoad(depName) {
|
3624 |
+
return function (value) {
|
3625 |
+
defined[depName] = value;
|
3626 |
+
};
|
3627 |
+
}
|
3628 |
+
|
3629 |
+
function callDep(name) {
|
3630 |
+
if (hasProp(waiting, name)) {
|
3631 |
+
var args = waiting[name];
|
3632 |
+
delete waiting[name];
|
3633 |
+
defining[name] = true;
|
3634 |
+
main.apply(undef, args);
|
3635 |
+
}
|
3636 |
+
|
3637 |
+
if (!hasProp(defined, name) && !hasProp(defining, name)) {
|
3638 |
+
throw new Error('No ' + name);
|
3639 |
+
}
|
3640 |
+
return defined[name];
|
3641 |
+
}
|
3642 |
+
|
3643 |
+
//Turns a plugin!resource to [plugin, resource]
|
3644 |
+
//with the plugin being undefined if the name
|
3645 |
+
//did not have a plugin prefix.
|
3646 |
+
function splitPrefix(name) {
|
3647 |
+
var prefix,
|
3648 |
+
index = name ? name.indexOf('!') : -1;
|
3649 |
+
if (index > -1) {
|
3650 |
+
prefix = name.substring(0, index);
|
3651 |
+
name = name.substring(index + 1, name.length);
|
3652 |
+
}
|
3653 |
+
return [prefix, name];
|
3654 |
+
}
|
3655 |
+
|
3656 |
+
//Creates a parts array for a relName where first part is plugin ID,
|
3657 |
+
//second part is resource ID. Assumes relName has already been normalized.
|
3658 |
+
function makeRelParts(relName) {
|
3659 |
+
return relName ? splitPrefix(relName) : [];
|
3660 |
+
}
|
3661 |
+
|
3662 |
+
/**
|
3663 |
+
* Makes a name map, normalizing the name, and using a plugin
|
3664 |
+
* for normalization if necessary. Grabs a ref to plugin
|
3665 |
+
* too, as an optimization.
|
3666 |
+
*/
|
3667 |
+
makeMap = function (name, relParts) {
|
3668 |
+
var plugin,
|
3669 |
+
parts = splitPrefix(name),
|
3670 |
+
prefix = parts[0],
|
3671 |
+
relResourceName = relParts[1];
|
3672 |
+
|
3673 |
+
name = parts[1];
|
3674 |
+
|
3675 |
+
if (prefix) {
|
3676 |
+
prefix = normalize(prefix, relResourceName);
|
3677 |
+
plugin = callDep(prefix);
|
3678 |
+
}
|
3679 |
+
|
3680 |
+
//Normalize according
|
3681 |
+
if (prefix) {
|
3682 |
+
if (plugin && plugin.normalize) {
|
3683 |
+
name = plugin.normalize(name, makeNormalize(relResourceName));
|
3684 |
+
} else {
|
3685 |
+
name = normalize(name, relResourceName);
|
3686 |
+
}
|
3687 |
+
} else {
|
3688 |
+
name = normalize(name, relResourceName);
|
3689 |
+
parts = splitPrefix(name);
|
3690 |
+
prefix = parts[0];
|
3691 |
+
name = parts[1];
|
3692 |
+
if (prefix) {
|
3693 |
+
plugin = callDep(prefix);
|
3694 |
+
}
|
3695 |
+
}
|
3696 |
+
|
3697 |
+
//Using ridiculous property names for space reasons
|
3698 |
+
return {
|
3699 |
+
f: prefix ? prefix + '!' + name : name, //fullName
|
3700 |
+
n: name,
|
3701 |
+
pr: prefix,
|
3702 |
+
p: plugin
|
3703 |
+
};
|
3704 |
+
};
|
3705 |
+
|
3706 |
+
function makeConfig(name) {
|
3707 |
+
return function () {
|
3708 |
+
return (config && config.config && config.config[name]) || {};
|
3709 |
+
};
|
3710 |
+
}
|
3711 |
+
|
3712 |
+
handlers = {
|
3713 |
+
require: function (name) {
|
3714 |
+
return makeRequire(name);
|
3715 |
+
},
|
3716 |
+
exports: function (name) {
|
3717 |
+
var e = defined[name];
|
3718 |
+
if (typeof e !== 'undefined') {
|
3719 |
+
return e;
|
3720 |
+
} else {
|
3721 |
+
return (defined[name] = {});
|
3722 |
+
}
|
3723 |
+
},
|
3724 |
+
module: function (name) {
|
3725 |
+
return {
|
3726 |
+
id: name,
|
3727 |
+
uri: '',
|
3728 |
+
exports: defined[name],
|
3729 |
+
config: makeConfig(name)
|
3730 |
+
};
|
3731 |
+
}
|
3732 |
+
};
|
3733 |
+
|
3734 |
+
main = function (name, deps, callback, relName) {
|
3735 |
+
var cjsModule, depName, ret, map, i, relParts,
|
3736 |
+
args = [],
|
3737 |
+
callbackType = typeof callback,
|
3738 |
+
usingExports;
|
3739 |
+
|
3740 |
+
//Use name if no relName
|
3741 |
+
relName = relName || name;
|
3742 |
+
relParts = makeRelParts(relName);
|
3743 |
+
|
3744 |
+
//Call the callback to define the module, if necessary.
|
3745 |
+
if (callbackType === 'undefined' || callbackType === 'function') {
|
3746 |
+
//Pull out the defined dependencies and pass the ordered
|
3747 |
+
//values to the callback.
|
3748 |
+
//Default to [require, exports, module] if no deps
|
3749 |
+
deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
|
3750 |
+
for (i = 0; i < deps.length; i += 1) {
|
3751 |
+
map = makeMap(deps[i], relParts);
|
3752 |
+
depName = map.f;
|
3753 |
+
|
3754 |
+
//Fast path CommonJS standard dependencies.
|
3755 |
+
if (depName === "require") {
|
3756 |
+
args[i] = handlers.require(name);
|
3757 |
+
} else if (depName === "exports") {
|
3758 |
+
//CommonJS module spec 1.1
|
3759 |
+
args[i] = handlers.exports(name);
|
3760 |
+
usingExports = true;
|
3761 |
+
} else if (depName === "module") {
|
3762 |
+
//CommonJS module spec 1.1
|
3763 |
+
cjsModule = args[i] = handlers.module(name);
|
3764 |
+
} else if (hasProp(defined, depName) ||
|
3765 |
+
hasProp(waiting, depName) ||
|
3766 |
+
hasProp(defining, depName)) {
|
3767 |
+
args[i] = callDep(depName);
|
3768 |
+
} else if (map.p) {
|
3769 |
+
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
|
3770 |
+
args[i] = defined[depName];
|
3771 |
+
} else {
|
3772 |
+
throw new Error(name + ' missing ' + depName);
|
3773 |
+
}
|
3774 |
+
}
|
3775 |
+
|
3776 |
+
ret = callback ? callback.apply(defined[name], args) : undefined;
|
3777 |
+
|
3778 |
+
if (name) {
|
3779 |
+
//If setting exports via "module" is in play,
|
3780 |
+
//favor that over return value and exports. After that,
|
3781 |
+
//favor a non-undefined return value over exports use.
|
3782 |
+
if (cjsModule && cjsModule.exports !== undef &&
|
3783 |
+
cjsModule.exports !== defined[name]) {
|
3784 |
+
defined[name] = cjsModule.exports;
|
3785 |
+
} else if (ret !== undef || !usingExports) {
|
3786 |
+
//Use the return value from the function.
|
3787 |
+
defined[name] = ret;
|
3788 |
+
}
|
3789 |
+
}
|
3790 |
+
} else if (name) {
|
3791 |
+
//May just be an object definition for the module. Only
|
3792 |
+
//worry about defining if have a module name.
|
3793 |
+
defined[name] = callback;
|
3794 |
+
}
|
3795 |
+
};
|
3796 |
+
|
3797 |
+
requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
|
3798 |
+
if (typeof deps === "string") {
|
3799 |
+
if (handlers[deps]) {
|
3800 |
+
//callback in this case is really relName
|
3801 |
+
return handlers[deps](callback);
|
3802 |
+
}
|
3803 |
+
//Just return the module wanted. In this scenario, the
|
3804 |
+
//deps arg is the module name, and second arg (if passed)
|
3805 |
+
//is just the relName.
|
3806 |
+
//Normalize module name, if it contains . or ..
|
3807 |
+
return callDep(makeMap(deps, makeRelParts(callback)).f);
|
3808 |
+
} else if (!deps.splice) {
|
3809 |
+
//deps is a config object, not an array.
|
3810 |
+
config = deps;
|
3811 |
+
if (config.deps) {
|
3812 |
+
req(config.deps, config.callback);
|
3813 |
+
}
|
3814 |
+
if (!callback) {
|
3815 |
+
return;
|
3816 |
+
}
|
3817 |
+
|
3818 |
+
if (callback.splice) {
|
3819 |
+
//callback is an array, which means it is a dependency list.
|
3820 |
+
//Adjust args if there are dependencies
|
3821 |
+
deps = callback;
|
3822 |
+
callback = relName;
|
3823 |
+
relName = null;
|
3824 |
+
} else {
|
3825 |
+
deps = undef;
|
3826 |
+
}
|
3827 |
+
}
|
3828 |
+
|
3829 |
+
//Support require(['a'])
|
3830 |
+
callback = callback || function () {};
|
3831 |
+
|
3832 |
+
//If relName is a function, it is an errback handler,
|
3833 |
+
//so remove it.
|
3834 |
+
if (typeof relName === 'function') {
|
3835 |
+
relName = forceSync;
|
3836 |
+
forceSync = alt;
|
3837 |
+
}
|
3838 |
+
|
3839 |
+
//Simulate async callback;
|
3840 |
+
if (forceSync) {
|
3841 |
+
main(undef, deps, callback, relName);
|
3842 |
+
} else {
|
3843 |
+
//Using a non-zero value because of concern for what old browsers
|
3844 |
+
//do, and latest browsers "upgrade" to 4 if lower value is used:
|
3845 |
+
//http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
|
3846 |
+
//If want a value immediately, use require('id') instead -- something
|
3847 |
+
//that works in almond on the global level, but not guaranteed and
|
3848 |
+
//unlikely to work in other AMD implementations.
|
3849 |
+
setTimeout(function () {
|
3850 |
+
main(undef, deps, callback, relName);
|
3851 |
+
}, 4);
|
3852 |
+
}
|
3853 |
+
|
3854 |
+
return req;
|
3855 |
+
};
|
3856 |
+
|
3857 |
+
/**
|
3858 |
+
* Just drops the config on the floor, but returns req in case
|
3859 |
+
* the config return value is used.
|
3860 |
+
*/
|
3861 |
+
req.config = function (cfg) {
|
3862 |
+
return req(cfg);
|
3863 |
+
};
|
3864 |
+
|
3865 |
+
/**
|
3866 |
+
* Expose module registry for debugging and tooling
|
3867 |
+
*/
|
3868 |
+
requirejs._defined = defined;
|
3869 |
+
|
3870 |
+
define = function (name, deps, callback) {
|
3871 |
+
if (typeof name !== 'string') {
|
3872 |
+
throw new Error('See almond README: incorrect module build, no module name');
|
3873 |
+
}
|
3874 |
+
|
3875 |
+
//This module may not have dependencies
|
3876 |
+
if (!deps.splice) {
|
3877 |
+
//deps is not an array, so probably means
|
3878 |
+
//an object literal or factory function for
|
3879 |
+
//the value. Adjust args.
|
3880 |
+
callback = deps;
|
3881 |
+
deps = [];
|
3882 |
+
}
|
3883 |
+
|
3884 |
+
if (!hasProp(defined, name) && !hasProp(waiting, name)) {
|
3885 |
+
waiting[name] = [name, deps, callback];
|
3886 |
+
}
|
3887 |
+
};
|
3888 |
+
|
3889 |
+
define.amd = {
|
3890 |
+
jQuery: true
|
3891 |
+
};
|
3892 |
+
}());
|
3893 |
+
|
3894 |
+
S2.requirejs = requirejs;S2.require = require;S2.define = define;
|
3895 |
+
}
|
3896 |
+
}());
|
3897 |
+
S2.define("almond", function(){});
|
3898 |
+
|
3899 |
/* global jQuery:false, $:false */
|
3900 |
S2.define('jquery',[],function () {
|
3901 |
var _$ = jQuery || $;
|
3910 |
|
3911 |
return _$;
|
3912 |
});
|
3913 |
+
|
3914 |
S2.define('select2/utils',[
|
3915 |
'jquery'
|
3916 |
], function ($) {
|
4187 |
|
4188 |
return Utils;
|
4189 |
});
|
4190 |
+
|
4191 |
S2.define('select2/results',[
|
4192 |
'jquery',
|
4193 |
'./utils'
|
4711 |
|
4712 |
return Results;
|
4713 |
});
|
4714 |
+
|
4715 |
S2.define('select2/keys',[
|
4716 |
|
4717 |
], function () {
|
4737 |
|
4738 |
return KEYS;
|
4739 |
});
|
4740 |
+
|
4741 |
S2.define('select2/selection/base',[
|
4742 |
'jquery',
|
4743 |
'../utils',
|
4896 |
|
4897 |
return BaseSelection;
|
4898 |
});
|
4899 |
+
|
4900 |
S2.define('select2/selection/single',[
|
4901 |
'jquery',
|
4902 |
'./base',
|
4996 |
|
4997 |
return SingleSelection;
|
4998 |
});
|
4999 |
+
|
5000 |
S2.define('select2/selection/multiple',[
|
5001 |
'jquery',
|
5002 |
'./base',
|
5106 |
|
5107 |
return MultipleSelection;
|
5108 |
});
|
5109 |
+
|
5110 |
S2.define('select2/selection/placeholder',[
|
5111 |
'../utils'
|
5112 |
], function (Utils) {
|
5156 |
|
5157 |
return Placeholder;
|
5158 |
});
|
5159 |
+
|
5160 |
S2.define('select2/selection/allowClear',[
|
5161 |
'jquery',
|
5162 |
'../keys'
|
5254 |
|
5255 |
return AllowClear;
|
5256 |
});
|
5257 |
+
|
5258 |
S2.define('select2/selection/search',[
|
5259 |
'jquery',
|
5260 |
'../utils',
|
5477 |
|
5478 |
return Search;
|
5479 |
});
|
5480 |
+
|
5481 |
S2.define('select2/selection/eventRelay',[
|
5482 |
'jquery'
|
5483 |
], function ($) {
|
5523 |
|
5524 |
return EventRelay;
|
5525 |
});
|
5526 |
+
|
5527 |
S2.define('select2/translation',[
|
5528 |
'jquery',
|
5529 |
'require'
|
5560 |
|
5561 |
return Translation;
|
5562 |
});
|
5563 |
+
|
5564 |
S2.define('select2/diacritics',[
|
5565 |
|
5566 |
], function () {
|
6408 |
|
6409 |
return diacritics;
|
6410 |
});
|
6411 |
+
|
6412 |
S2.define('select2/data/base',[
|
6413 |
'../utils'
|
6414 |
], function (Utils) {
|
6449 |
|
6450 |
return BaseAdapter;
|
6451 |
});
|
6452 |
+
|
6453 |
S2.define('select2/data/select',[
|
6454 |
'./base',
|
6455 |
'../utils',
|
6622 |
}
|
6623 |
}
|
6624 |
|
6625 |
+
if (data.id !== undefined) {
|
6626 |
option.value = data.id;
|
6627 |
}
|
6628 |
|
6735 |
|
6736 |
return SelectAdapter;
|
6737 |
});
|
6738 |
+
|
6739 |
S2.define('select2/data/array',[
|
6740 |
'./select',
|
6741 |
'../utils',
|
6815 |
|
6816 |
return ArrayAdapter;
|
6817 |
});
|
6818 |
+
|
6819 |
S2.define('select2/data/ajax',[
|
6820 |
'./array',
|
6821 |
'../utils',
|
6925 |
|
6926 |
return AjaxAdapter;
|
6927 |
});
|
6928 |
+
|
6929 |
S2.define('select2/data/tags',[
|
6930 |
'jquery'
|
6931 |
], function ($) {
|
6981 |
}, true)
|
6982 |
);
|
6983 |
|
6984 |
+
var optionText = (option.text || '').toUpperCase();
|
6985 |
+
var paramsTerm = (params.term || '').toUpperCase();
|
6986 |
+
|
6987 |
+
var checkText = optionText === paramsTerm;
|
6988 |
|
6989 |
if (checkText || checkChildren) {
|
6990 |
if (child) {
|
7054 |
|
7055 |
return Tags;
|
7056 |
});
|
7057 |
+
|
7058 |
S2.define('select2/data/tokenizer',[
|
7059 |
'jquery'
|
7060 |
], function ($) {
|
7171 |
|
7172 |
return Tokenizer;
|
7173 |
});
|
7174 |
+
|
7175 |
S2.define('select2/data/minimumInputLength',[
|
7176 |
|
7177 |
], function () {
|
7202 |
|
7203 |
return MinimumInputLength;
|
7204 |
});
|
7205 |
+
|
7206 |
S2.define('select2/data/maximumInputLength',[
|
7207 |
|
7208 |
], function () {
|
7234 |
|
7235 |
return MaximumInputLength;
|
7236 |
});
|
7237 |
+
|
7238 |
S2.define('select2/data/maximumSelectionLength',[
|
7239 |
|
7240 |
], function (){
|
7266 |
|
7267 |
return MaximumSelectionLength;
|
7268 |
});
|
7269 |
+
|
7270 |
S2.define('select2/dropdown',[
|
7271 |
'jquery',
|
7272 |
'./utils'
|
7309 |
|
7310 |
return Dropdown;
|
7311 |
});
|
7312 |
+
|
7313 |
S2.define('select2/dropdown/search',[
|
7314 |
'jquery',
|
7315 |
'../utils'
|
7375 |
});
|
7376 |
|
7377 |
container.on('focus', function () {
|
7378 |
+
if (!container.isOpen()) {
|
7379 |
self.$search.focus();
|
7380 |
}
|
7381 |
});
|
7411 |
|
7412 |
return Search;
|
7413 |
});
|
7414 |
+
|
7415 |
S2.define('select2/dropdown/hidePlaceholder',[
|
7416 |
|
7417 |
], function () {
|
7454 |
|
7455 |
return HidePlaceholder;
|
7456 |
});
|
7457 |
+
|
7458 |
S2.define('select2/dropdown/infiniteScroll',[
|
7459 |
'jquery'
|
7460 |
], function ($) {
|
7544 |
|
7545 |
return InfiniteScroll;
|
7546 |
});
|
7547 |
+
|
7548 |
S2.define('select2/dropdown/attachBody',[
|
7549 |
'jquery',
|
7550 |
'../utils'
|
7767 |
|
7768 |
return AttachBody;
|
7769 |
});
|
7770 |
+
|
7771 |
S2.define('select2/dropdown/minimumResultsForSearch',[
|
7772 |
|
7773 |
], function () {
|
7807 |
|
7808 |
return MinimumResultsForSearch;
|
7809 |
});
|
7810 |
+
|
7811 |
S2.define('select2/dropdown/selectOnClose',[
|
7812 |
|
7813 |
], function () {
|
7858 |
|
7859 |
return SelectOnClose;
|
7860 |
});
|
7861 |
+
|
7862 |
S2.define('select2/dropdown/closeOnSelect',[
|
7863 |
|
7864 |
], function () {
|
7894 |
|
7895 |
return CloseOnSelect;
|
7896 |
});
|
7897 |
+
|
7898 |
S2.define('select2/i18n/en',[],function () {
|
7899 |
// English
|
7900 |
return {
|
7939 |
}
|
7940 |
};
|
7941 |
});
|
7942 |
+
|
7943 |
S2.define('select2/defaults',[
|
7944 |
'jquery',
|
7945 |
'require',
|
8336 |
|
8337 |
return defaults;
|
8338 |
});
|
8339 |
+
|
8340 |
S2.define('select2/options',[
|
8341 |
'require',
|
8342 |
'jquery',
|
8459 |
|
8460 |
return Options;
|
8461 |
});
|
8462 |
+
|
8463 |
S2.define('select2/core',[
|
8464 |
'jquery',
|
8465 |
'./options',
|
9072 |
|
9073 |
return Select2;
|
9074 |
});
|
9075 |
+
|
9076 |
S2.define('jquery-mousewheel',[
|
9077 |
'jquery'
|
9078 |
], function ($) {
|
9079 |
// Used to shim jQuery.mousewheel for non-full builds.
|
9080 |
return $;
|
9081 |
});
|
9082 |
+
|
9083 |
S2.define('jquery.select2',[
|
9084 |
'jquery',
|
9085 |
'jquery-mousewheel',
|
9137 |
|
9138 |
return Select2;
|
9139 |
});
|
9140 |
+
|
9141 |
// Return the AMD loader configuration so it can be used outside of this file
|
9142 |
return {
|
9143 |
define: S2.define,
|
assets/js/{admin_vendor.53a6d3ec.js → admin_vendor.5bfea06b.js}
RENAMED
File without changes
|
assets/js/manifest.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.e755af46.js",
|
3 |
"public.js": "public.6e3f442a.js",
|
4 |
-
"admin.js": "admin.
|
5 |
-
"admin_vendor.js": "admin_vendor.
|
6 |
"form_editor.js": "form_editor.c4bc7e0b.js",
|
7 |
"mailpoet.js": "mailpoet.eab93337.js",
|
8 |
-
"newsletter_editor.js": "newsletter_editor.
|
9 |
-
"vendor.js": "vendor.
|
10 |
}
|
1 |
{
|
2 |
"mp2migrator.js": "mp2migrator.e755af46.js",
|
3 |
"public.js": "public.6e3f442a.js",
|
4 |
+
"admin.js": "admin.5545d8c1.js",
|
5 |
+
"admin_vendor.js": "admin_vendor.5bfea06b.js",
|
6 |
"form_editor.js": "form_editor.c4bc7e0b.js",
|
7 |
"mailpoet.js": "mailpoet.eab93337.js",
|
8 |
+
"newsletter_editor.js": "newsletter_editor.ea5d61a2.js",
|
9 |
+
"vendor.js": "vendor.3c88b878.js"
|
10 |
}
|
assets/js/{newsletter_editor.2627c560.js → newsletter_editor.ea5d61a2.js}
RENAMED
@@ -1747,7 +1747,7 @@ webpackJsonp([4],{
|
|
1747 |
/***/ function(module, exports, __webpack_require__) {
|
1748 |
|
1749 |
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
|
1750 |
-
* Select2 4.0.
|
1751 |
* https://select2.github.io
|
1752 |
*
|
1753 |
* Released under the MIT license
|
@@ -1757,462 +1757,480 @@ webpackJsonp([4],{
|
|
1757 |
if (true) {
|
1758 |
// AMD. Register as an anonymous module.
|
1759 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(273)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
1760 |
-
} else if (typeof
|
1761 |
// Node/CommonJS
|
1762 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1763 |
} else {
|
1764 |
// Browser globals
|
1765 |
factory(jQuery);
|
1766 |
}
|
1767 |
-
}(function (jQuery) {
|
1768 |
// This is needed so we can catch the AMD loader configuration and use it
|
1769 |
// The inner file should be wrapped (by `banner.start.js`) in a function that
|
1770 |
// returns the AMD loader references.
|
1771 |
-
var S2 =
|
1772 |
-
(function () {
|
1773 |
// Restore the Select2 AMD loader so it can be used
|
1774 |
// Needed mostly in the language files, where the loader is not inserted
|
1775 |
if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
|
1776 |
var S2 = jQuery.fn.select2.amd;
|
1777 |
}
|
1778 |
-
var S2;(function () { if (!S2 || !S2.requirejs) {
|
1779 |
-
if (!S2) { S2 = {}; } else { require = S2; }
|
1780 |
-
/**
|
1781 |
-
* @license almond 0.3.
|
1782 |
-
*
|
1783 |
-
|
1784 |
-
|
1785 |
-
//
|
1786 |
-
|
1787 |
-
|
1788 |
-
|
1789 |
-
|
1790 |
-
|
1791 |
-
|
1792 |
-
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
1799 |
-
|
1800 |
-
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
*
|
1807 |
-
* a real name that
|
1808 |
-
*
|
1809 |
-
* @
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
|
1814 |
-
|
1815 |
-
|
1816 |
-
|
1817 |
-
|
1818 |
-
|
1819 |
-
|
1820 |
-
|
1821 |
-
|
1822 |
-
|
1823 |
-
//
|
1824 |
-
//
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
-
|
1830 |
-
|
1831 |
-
|
1832 |
-
|
1833 |
-
|
1834 |
-
//
|
1835 |
-
//
|
1836 |
-
//
|
1837 |
-
//
|
1838 |
-
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
-
|
1845 |
-
|
1846 |
-
|
1847 |
-
|
1848 |
-
|
1849 |
-
|
1850 |
-
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
-
|
1855 |
-
|
1856 |
-
|
1857 |
-
|
1858 |
-
|
1859 |
-
}
|
1860 |
-
}
|
1861 |
-
|
1862 |
-
|
1863 |
-
|
1864 |
-
|
1865 |
-
|
1866 |
-
|
1867 |
-
|
1868 |
-
|
1869 |
-
|
1870 |
-
|
1871 |
-
|
1872 |
-
|
1873 |
-
|
1874 |
-
|
1875 |
-
|
1876 |
-
|
1877 |
-
|
1878 |
-
|
1879 |
-
|
1880 |
-
|
1881 |
-
|
1882 |
-
|
1883 |
-
|
1884 |
-
|
1885 |
-
|
1886 |
-
|
1887 |
-
|
1888 |
-
|
1889 |
-
|
1890 |
-
|
1891 |
-
|
1892 |
-
|
1893 |
-
|
1894 |
-
|
1895 |
-
|
1896 |
-
}
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
-
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
|
1913 |
-
foundI
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
|
1920 |
-
|
1921 |
-
|
1922 |
-
return
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
|
1928 |
-
//
|
1929 |
-
//
|
1930 |
-
|
1931 |
-
|
1932 |
-
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
-
|
1937 |
-
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
|
1959 |
-
|
1960 |
-
}
|
1961 |
-
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
|
1968 |
-
|
1969 |
-
|
1970 |
-
|
1971 |
-
|
1972 |
-
|
1973 |
-
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
1977 |
-
|
1978 |
-
|
1979 |
-
|
1980 |
-
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
*
|
1985 |
-
|
1986 |
-
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
-
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
|
2000 |
-
|
2001 |
-
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
-
|
2006 |
-
|
2007 |
-
|
2008 |
-
|
2009 |
-
name =
|
2010 |
-
|
2011 |
-
|
2012 |
-
|
2013 |
-
|
2014 |
-
|
2015 |
-
|
2016 |
-
|
2017 |
-
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
-
|
2023 |
-
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
2057 |
-
|
2058 |
-
|
2059 |
-
|
2060 |
-
|
2061 |
-
//
|
2062 |
-
|
2063 |
-
|
2064 |
-
|
2065 |
-
|
2066 |
-
|
2067 |
-
|
2068 |
-
|
2069 |
-
|
2070 |
-
|
2071 |
-
|
2072 |
-
|
2073 |
-
|
2074 |
-
|
2075 |
-
|
2076 |
-
|
2077 |
-
|
2078 |
-
} else if (depName === "
|
2079 |
-
//CommonJS module spec 1.1
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
args[i] =
|
2085 |
-
} else if (
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
2090 |
-
|
2091 |
-
|
2092 |
-
|
2093 |
-
|
2094 |
-
|
2095 |
-
|
2096 |
-
|
2097 |
-
|
2098 |
-
|
2099 |
-
|
2100 |
-
|
2101 |
-
|
2102 |
-
|
2103 |
-
|
2104 |
-
|
2105 |
-
|
2106 |
-
|
2107 |
-
|
2108 |
-
|
2109 |
-
|
2110 |
-
|
2111 |
-
}
|
2112 |
-
|
2113 |
-
|
2114 |
-
|
2115 |
-
|
2116 |
-
|
2117 |
-
|
2118 |
-
|
2119 |
-
|
2120 |
-
|
2121 |
-
|
2122 |
-
|
2123 |
-
|
2124 |
-
return
|
2125 |
-
|
2126 |
-
//
|
2127 |
-
|
2128 |
-
|
2129 |
-
|
2130 |
-
|
2131 |
-
|
2132 |
-
|
2133 |
-
|
2134 |
-
|
2135 |
-
if (callback
|
2136 |
-
|
2137 |
-
|
2138 |
-
|
2139 |
-
|
2140 |
-
|
2141 |
-
|
2142 |
-
deps =
|
2143 |
-
|
2144 |
-
|
2145 |
-
|
2146 |
-
|
2147 |
-
|
2148 |
-
|
2149 |
-
|
2150 |
-
//
|
2151 |
-
|
2152 |
-
|
2153 |
-
|
2154 |
-
|
2155 |
-
|
2156 |
-
|
2157 |
-
|
2158 |
-
|
2159 |
-
|
2160 |
-
|
2161 |
-
|
2162 |
-
|
2163 |
-
|
2164 |
-
//
|
2165 |
-
//
|
2166 |
-
|
2167 |
-
|
2168 |
-
|
2169 |
-
|
2170 |
-
|
2171 |
-
|
2172 |
-
|
2173 |
-
|
2174 |
-
|
2175 |
-
|
2176 |
-
|
2177 |
-
|
2178 |
-
|
2179 |
-
|
2180 |
-
|
2181 |
-
|
2182 |
-
|
2183 |
-
|
2184 |
-
|
2185 |
-
|
2186 |
-
|
2187 |
-
|
2188 |
-
|
2189 |
-
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
-
|
2196 |
-
|
2197 |
-
|
2198 |
-
deps
|
2199 |
-
|
2200 |
-
|
2201 |
-
|
2202 |
-
|
2203 |
-
}
|
2204 |
-
|
2205 |
-
|
2206 |
-
|
2207 |
-
|
2208 |
-
};
|
2209 |
-
|
2210 |
-
|
2211 |
-
|
2212 |
-
|
2213 |
-
}());
|
2214 |
-
|
2215 |
-
|
|
|
|
|
|
|
|
|
2216 |
/* global jQuery:false, $:false */
|
2217 |
S2.define('jquery',[],function () {
|
2218 |
var _$ = jQuery || $;
|
@@ -2227,7 +2245,7 @@ webpackJsonp([4],{
|
|
2227 |
|
2228 |
return _$;
|
2229 |
});
|
2230 |
-
|
2231 |
S2.define('select2/utils',[
|
2232 |
'jquery'
|
2233 |
], function ($) {
|
@@ -2504,7 +2522,7 @@ webpackJsonp([4],{
|
|
2504 |
|
2505 |
return Utils;
|
2506 |
});
|
2507 |
-
|
2508 |
S2.define('select2/results',[
|
2509 |
'jquery',
|
2510 |
'./utils'
|
@@ -3028,7 +3046,7 @@ webpackJsonp([4],{
|
|
3028 |
|
3029 |
return Results;
|
3030 |
});
|
3031 |
-
|
3032 |
S2.define('select2/keys',[
|
3033 |
|
3034 |
], function () {
|
@@ -3054,7 +3072,7 @@ webpackJsonp([4],{
|
|
3054 |
|
3055 |
return KEYS;
|
3056 |
});
|
3057 |
-
|
3058 |
S2.define('select2/selection/base',[
|
3059 |
'jquery',
|
3060 |
'../utils',
|
@@ -3213,7 +3231,7 @@ webpackJsonp([4],{
|
|
3213 |
|
3214 |
return BaseSelection;
|
3215 |
});
|
3216 |
-
|
3217 |
S2.define('select2/selection/single',[
|
3218 |
'jquery',
|
3219 |
'./base',
|
@@ -3313,7 +3331,7 @@ webpackJsonp([4],{
|
|
3313 |
|
3314 |
return SingleSelection;
|
3315 |
});
|
3316 |
-
|
3317 |
S2.define('select2/selection/multiple',[
|
3318 |
'jquery',
|
3319 |
'./base',
|
@@ -3423,7 +3441,7 @@ webpackJsonp([4],{
|
|
3423 |
|
3424 |
return MultipleSelection;
|
3425 |
});
|
3426 |
-
|
3427 |
S2.define('select2/selection/placeholder',[
|
3428 |
'../utils'
|
3429 |
], function (Utils) {
|
@@ -3473,7 +3491,7 @@ webpackJsonp([4],{
|
|
3473 |
|
3474 |
return Placeholder;
|
3475 |
});
|
3476 |
-
|
3477 |
S2.define('select2/selection/allowClear',[
|
3478 |
'jquery',
|
3479 |
'../keys'
|
@@ -3571,7 +3589,7 @@ webpackJsonp([4],{
|
|
3571 |
|
3572 |
return AllowClear;
|
3573 |
});
|
3574 |
-
|
3575 |
S2.define('select2/selection/search',[
|
3576 |
'jquery',
|
3577 |
'../utils',
|
@@ -3794,7 +3812,7 @@ webpackJsonp([4],{
|
|
3794 |
|
3795 |
return Search;
|
3796 |
});
|
3797 |
-
|
3798 |
S2.define('select2/selection/eventRelay',[
|
3799 |
'jquery'
|
3800 |
], function ($) {
|
@@ -3840,7 +3858,7 @@ webpackJsonp([4],{
|
|
3840 |
|
3841 |
return EventRelay;
|
3842 |
});
|
3843 |
-
|
3844 |
S2.define('select2/translation',[
|
3845 |
'jquery',
|
3846 |
'require'
|
@@ -3877,7 +3895,7 @@ webpackJsonp([4],{
|
|
3877 |
|
3878 |
return Translation;
|
3879 |
});
|
3880 |
-
|
3881 |
S2.define('select2/diacritics',[
|
3882 |
|
3883 |
], function () {
|
@@ -4725,7 +4743,7 @@ webpackJsonp([4],{
|
|
4725 |
|
4726 |
return diacritics;
|
4727 |
});
|
4728 |
-
|
4729 |
S2.define('select2/data/base',[
|
4730 |
'../utils'
|
4731 |
], function (Utils) {
|
@@ -4766,7 +4784,7 @@ webpackJsonp([4],{
|
|
4766 |
|
4767 |
return BaseAdapter;
|
4768 |
});
|
4769 |
-
|
4770 |
S2.define('select2/data/select',[
|
4771 |
'./base',
|
4772 |
'../utils',
|
@@ -4939,7 +4957,7 @@ webpackJsonp([4],{
|
|
4939 |
}
|
4940 |
}
|
4941 |
|
4942 |
-
if (data.id) {
|
4943 |
option.value = data.id;
|
4944 |
}
|
4945 |
|
@@ -5052,7 +5070,7 @@ webpackJsonp([4],{
|
|
5052 |
|
5053 |
return SelectAdapter;
|
5054 |
});
|
5055 |
-
|
5056 |
S2.define('select2/data/array',[
|
5057 |
'./select',
|
5058 |
'../utils',
|
@@ -5132,7 +5150,7 @@ webpackJsonp([4],{
|
|
5132 |
|
5133 |
return ArrayAdapter;
|
5134 |
});
|
5135 |
-
|
5136 |
S2.define('select2/data/ajax',[
|
5137 |
'./array',
|
5138 |
'../utils',
|
@@ -5242,7 +5260,7 @@ webpackJsonp([4],{
|
|
5242 |
|
5243 |
return AjaxAdapter;
|
5244 |
});
|
5245 |
-
|
5246 |
S2.define('select2/data/tags',[
|
5247 |
'jquery'
|
5248 |
], function ($) {
|
@@ -5298,7 +5316,10 @@ webpackJsonp([4],{
|
|
5298 |
}, true)
|
5299 |
);
|
5300 |
|
5301 |
-
var
|
|
|
|
|
|
|
5302 |
|
5303 |
if (checkText || checkChildren) {
|
5304 |
if (child) {
|
@@ -5368,7 +5389,7 @@ webpackJsonp([4],{
|
|
5368 |
|
5369 |
return Tags;
|
5370 |
});
|
5371 |
-
|
5372 |
S2.define('select2/data/tokenizer',[
|
5373 |
'jquery'
|
5374 |
], function ($) {
|
@@ -5485,7 +5506,7 @@ webpackJsonp([4],{
|
|
5485 |
|
5486 |
return Tokenizer;
|
5487 |
});
|
5488 |
-
|
5489 |
S2.define('select2/data/minimumInputLength',[
|
5490 |
|
5491 |
], function () {
|
@@ -5516,7 +5537,7 @@ webpackJsonp([4],{
|
|
5516 |
|
5517 |
return MinimumInputLength;
|
5518 |
});
|
5519 |
-
|
5520 |
S2.define('select2/data/maximumInputLength',[
|
5521 |
|
5522 |
], function () {
|
@@ -5548,7 +5569,7 @@ webpackJsonp([4],{
|
|
5548 |
|
5549 |
return MaximumInputLength;
|
5550 |
});
|
5551 |
-
|
5552 |
S2.define('select2/data/maximumSelectionLength',[
|
5553 |
|
5554 |
], function (){
|
@@ -5580,7 +5601,7 @@ webpackJsonp([4],{
|
|
5580 |
|
5581 |
return MaximumSelectionLength;
|
5582 |
});
|
5583 |
-
|
5584 |
S2.define('select2/dropdown',[
|
5585 |
'jquery',
|
5586 |
'./utils'
|
@@ -5623,7 +5644,7 @@ webpackJsonp([4],{
|
|
5623 |
|
5624 |
return Dropdown;
|
5625 |
});
|
5626 |
-
|
5627 |
S2.define('select2/dropdown/search',[
|
5628 |
'jquery',
|
5629 |
'../utils'
|
@@ -5689,7 +5710,7 @@ webpackJsonp([4],{
|
|
5689 |
});
|
5690 |
|
5691 |
container.on('focus', function () {
|
5692 |
-
if (container.isOpen()) {
|
5693 |
self.$search.focus();
|
5694 |
}
|
5695 |
});
|
@@ -5725,7 +5746,7 @@ webpackJsonp([4],{
|
|
5725 |
|
5726 |
return Search;
|
5727 |
});
|
5728 |
-
|
5729 |
S2.define('select2/dropdown/hidePlaceholder',[
|
5730 |
|
5731 |
], function () {
|
@@ -5768,7 +5789,7 @@ webpackJsonp([4],{
|
|
5768 |
|
5769 |
return HidePlaceholder;
|
5770 |
});
|
5771 |
-
|
5772 |
S2.define('select2/dropdown/infiniteScroll',[
|
5773 |
'jquery'
|
5774 |
], function ($) {
|
@@ -5858,7 +5879,7 @@ webpackJsonp([4],{
|
|
5858 |
|
5859 |
return InfiniteScroll;
|
5860 |
});
|
5861 |
-
|
5862 |
S2.define('select2/dropdown/attachBody',[
|
5863 |
'jquery',
|
5864 |
'../utils'
|
@@ -6081,7 +6102,7 @@ webpackJsonp([4],{
|
|
6081 |
|
6082 |
return AttachBody;
|
6083 |
});
|
6084 |
-
|
6085 |
S2.define('select2/dropdown/minimumResultsForSearch',[
|
6086 |
|
6087 |
], function () {
|
@@ -6121,7 +6142,7 @@ webpackJsonp([4],{
|
|
6121 |
|
6122 |
return MinimumResultsForSearch;
|
6123 |
});
|
6124 |
-
|
6125 |
S2.define('select2/dropdown/selectOnClose',[
|
6126 |
|
6127 |
], function () {
|
@@ -6172,7 +6193,7 @@ webpackJsonp([4],{
|
|
6172 |
|
6173 |
return SelectOnClose;
|
6174 |
});
|
6175 |
-
|
6176 |
S2.define('select2/dropdown/closeOnSelect',[
|
6177 |
|
6178 |
], function () {
|
@@ -6208,7 +6229,7 @@ webpackJsonp([4],{
|
|
6208 |
|
6209 |
return CloseOnSelect;
|
6210 |
});
|
6211 |
-
|
6212 |
S2.define('select2/i18n/en',[],function () {
|
6213 |
// English
|
6214 |
return {
|
@@ -6253,7 +6274,7 @@ webpackJsonp([4],{
|
|
6253 |
}
|
6254 |
};
|
6255 |
});
|
6256 |
-
|
6257 |
S2.define('select2/defaults',[
|
6258 |
'jquery',
|
6259 |
'require',
|
@@ -6650,7 +6671,7 @@ webpackJsonp([4],{
|
|
6650 |
|
6651 |
return defaults;
|
6652 |
});
|
6653 |
-
|
6654 |
S2.define('select2/options',[
|
6655 |
'require',
|
6656 |
'jquery',
|
@@ -6773,7 +6794,7 @@ webpackJsonp([4],{
|
|
6773 |
|
6774 |
return Options;
|
6775 |
});
|
6776 |
-
|
6777 |
S2.define('select2/core',[
|
6778 |
'jquery',
|
6779 |
'./options',
|
@@ -7386,14 +7407,14 @@ webpackJsonp([4],{
|
|
7386 |
|
7387 |
return Select2;
|
7388 |
});
|
7389 |
-
|
7390 |
S2.define('jquery-mousewheel',[
|
7391 |
'jquery'
|
7392 |
], function ($) {
|
7393 |
// Used to shim jQuery.mousewheel for non-full builds.
|
7394 |
return $;
|
7395 |
});
|
7396 |
-
|
7397 |
S2.define('jquery.select2',[
|
7398 |
'jquery',
|
7399 |
'jquery-mousewheel',
|
@@ -7451,7 +7472,7 @@ webpackJsonp([4],{
|
|
7451 |
|
7452 |
return Select2;
|
7453 |
});
|
7454 |
-
|
7455 |
// Return the AMD loader configuration so it can be used outside of this file
|
7456 |
return {
|
7457 |
define: S2.define,
|
1747 |
/***/ function(module, exports, __webpack_require__) {
|
1748 |
|
1749 |
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
|
1750 |
+
* Select2 4.0.4
|
1751 |
* https://select2.github.io
|
1752 |
*
|
1753 |
* Released under the MIT license
|
1757 |
if (true) {
|
1758 |
// AMD. Register as an anonymous module.
|
1759 |
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(273)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
1760 |
+
} else if (typeof module === 'object' && module.exports) {
|
1761 |
// Node/CommonJS
|
1762 |
+
module.exports = function (root, jQuery) {
|
1763 |
+
if (jQuery === undefined) {
|
1764 |
+
// require('jQuery') returns a factory that requires window to
|
1765 |
+
// build a jQuery instance, we normalize how we use modules
|
1766 |
+
// that require this pattern but the window provided is a noop
|
1767 |
+
// if it's defined (how jquery works)
|
1768 |
+
if (typeof window !== 'undefined') {
|
1769 |
+
jQuery = require('jquery');
|
1770 |
+
}
|
1771 |
+
else {
|
1772 |
+
jQuery = require('jquery')(root);
|
1773 |
+
}
|
1774 |
+
}
|
1775 |
+
factory(jQuery);
|
1776 |
+
return jQuery;
|
1777 |
+
};
|
1778 |
} else {
|
1779 |
// Browser globals
|
1780 |
factory(jQuery);
|
1781 |
}
|
1782 |
+
} (function (jQuery) {
|
1783 |
// This is needed so we can catch the AMD loader configuration and use it
|
1784 |
// The inner file should be wrapped (by `banner.start.js`) in a function that
|
1785 |
// returns the AMD loader references.
|
1786 |
+
var S2 =(function () {
|
|
|
1787 |
// Restore the Select2 AMD loader so it can be used
|
1788 |
// Needed mostly in the language files, where the loader is not inserted
|
1789 |
if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
|
1790 |
var S2 = jQuery.fn.select2.amd;
|
1791 |
}
|
1792 |
+
var S2;(function () { if (!S2 || !S2.requirejs) {
|
1793 |
+
if (!S2) { S2 = {}; } else { require = S2; }
|
1794 |
+
/**
|
1795 |
+
* @license almond 0.3.3 Copyright jQuery Foundation and other contributors.
|
1796 |
+
* Released under MIT license, http://github.com/requirejs/almond/LICENSE
|
1797 |
+
*/
|
1798 |
+
//Going sloppy to avoid 'use strict' string cost, but strict practices should
|
1799 |
+
//be followed.
|
1800 |
+
/*global setTimeout: false */
|
1801 |
+
|
1802 |
+
var requirejs, require, define;
|
1803 |
+
(function (undef) {
|
1804 |
+
var main, req, makeMap, handlers,
|
1805 |
+
defined = {},
|
1806 |
+
waiting = {},
|
1807 |
+
config = {},
|
1808 |
+
defining = {},
|
1809 |
+
hasOwn = Object.prototype.hasOwnProperty,
|
1810 |
+
aps = [].slice,
|
1811 |
+
jsSuffixRegExp = /\.js$/;
|
1812 |
+
|
1813 |
+
function hasProp(obj, prop) {
|
1814 |
+
return hasOwn.call(obj, prop);
|
1815 |
+
}
|
1816 |
+
|
1817 |
+
/**
|
1818 |
+
* Given a relative module name, like ./something, normalize it to
|
1819 |
+
* a real name that can be mapped to a path.
|
1820 |
+
* @param {String} name the relative name
|
1821 |
+
* @param {String} baseName a real name that the name arg is relative
|
1822 |
+
* to.
|
1823 |
+
* @returns {String} normalized name
|
1824 |
+
*/
|
1825 |
+
function normalize(name, baseName) {
|
1826 |
+
var nameParts, nameSegment, mapValue, foundMap, lastIndex,
|
1827 |
+
foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,
|
1828 |
+
baseParts = baseName && baseName.split("/"),
|
1829 |
+
map = config.map,
|
1830 |
+
starMap = (map && map['*']) || {};
|
1831 |
+
|
1832 |
+
//Adjust any relative paths.
|
1833 |
+
if (name) {
|
1834 |
+
name = name.split('/');
|
1835 |
+
lastIndex = name.length - 1;
|
1836 |
+
|
1837 |
+
// If wanting node ID compatibility, strip .js from end
|
1838 |
+
// of IDs. Have to do this here, and not in nameToUrl
|
1839 |
+
// because node allows either .js or non .js to map
|
1840 |
+
// to same file.
|
1841 |
+
if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
|
1842 |
+
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
|
1843 |
+
}
|
1844 |
+
|
1845 |
+
// Starts with a '.' so need the baseName
|
1846 |
+
if (name[0].charAt(0) === '.' && baseParts) {
|
1847 |
+
//Convert baseName to array, and lop off the last part,
|
1848 |
+
//so that . matches that 'directory' and not name of the baseName's
|
1849 |
+
//module. For instance, baseName of 'one/two/three', maps to
|
1850 |
+
//'one/two/three.js', but we want the directory, 'one/two' for
|
1851 |
+
//this normalization.
|
1852 |
+
normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
|
1853 |
+
name = normalizedBaseParts.concat(name);
|
1854 |
+
}
|
1855 |
+
|
1856 |
+
//start trimDots
|
1857 |
+
for (i = 0; i < name.length; i++) {
|
1858 |
+
part = name[i];
|
1859 |
+
if (part === '.') {
|
1860 |
+
name.splice(i, 1);
|
1861 |
+
i -= 1;
|
1862 |
+
} else if (part === '..') {
|
1863 |
+
// If at the start, or previous value is still ..,
|
1864 |
+
// keep them so that when converted to a path it may
|
1865 |
+
// still work when converted to a path, even though
|
1866 |
+
// as an ID it is less than ideal. In larger point
|
1867 |
+
// releases, may be better to just kick out an error.
|
1868 |
+
if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {
|
1869 |
+
continue;
|
1870 |
+
} else if (i > 0) {
|
1871 |
+
name.splice(i - 1, 2);
|
1872 |
+
i -= 2;
|
1873 |
+
}
|
1874 |
+
}
|
1875 |
+
}
|
1876 |
+
//end trimDots
|
1877 |
+
|
1878 |
+
name = name.join('/');
|
1879 |
+
}
|
1880 |
+
|
1881 |
+
//Apply map config if available.
|
1882 |
+
if ((baseParts || starMap) && map) {
|
1883 |
+
nameParts = name.split('/');
|
1884 |
+
|
1885 |
+
for (i = nameParts.length; i > 0; i -= 1) {
|
1886 |
+
nameSegment = nameParts.slice(0, i).join("/");
|
1887 |
+
|
1888 |
+
if (baseParts) {
|
1889 |
+
//Find the longest baseName segment match in the config.
|
1890 |
+
//So, do joins on the biggest to smallest lengths of baseParts.
|
1891 |
+
for (j = baseParts.length; j > 0; j -= 1) {
|
1892 |
+
mapValue = map[baseParts.slice(0, j).join('/')];
|
1893 |
+
|
1894 |
+
//baseName segment has config, find if it has one for
|
1895 |
+
//this name.
|
1896 |
+
if (mapValue) {
|
1897 |
+
mapValue = mapValue[nameSegment];
|
1898 |
+
if (mapValue) {
|
1899 |
+
//Match, update name to the new value.
|
1900 |
+
foundMap = mapValue;
|
1901 |
+
foundI = i;
|
1902 |
+
break;
|
1903 |
+
}
|
1904 |
+
}
|
1905 |
+
}
|
1906 |
+
}
|
1907 |
+
|
1908 |
+
if (foundMap) {
|
1909 |
+
break;
|
1910 |
+
}
|
1911 |
+
|
1912 |
+
//Check for a star map match, but just hold on to it,
|
1913 |
+
//if there is a shorter segment match later in a matching
|
1914 |
+
//config, then favor over this star map.
|
1915 |
+
if (!foundStarMap && starMap && starMap[nameSegment]) {
|
1916 |
+
foundStarMap = starMap[nameSegment];
|
1917 |
+
starI = i;
|
1918 |
+
}
|
1919 |
+
}
|
1920 |
+
|
1921 |
+
if (!foundMap && foundStarMap) {
|
1922 |
+
foundMap = foundStarMap;
|
1923 |
+
foundI = starI;
|
1924 |
+
}
|
1925 |
+
|
1926 |
+
if (foundMap) {
|
1927 |
+
nameParts.splice(0, foundI, foundMap);
|
1928 |
+
name = nameParts.join('/');
|
1929 |
+
}
|
1930 |
+
}
|
1931 |
+
|
1932 |
+
return name;
|
1933 |
+
}
|
1934 |
+
|
1935 |
+
function makeRequire(relName, forceSync) {
|
1936 |
+
return function () {
|
1937 |
+
//A version of a require function that passes a moduleName
|
1938 |
+
//value for items that may need to
|
1939 |
+
//look up paths relative to the moduleName
|
1940 |
+
var args = aps.call(arguments, 0);
|
1941 |
+
|
1942 |
+
//If first arg is not require('string'), and there is only
|
1943 |
+
//one arg, it is the array form without a callback. Insert
|
1944 |
+
//a null so that the following concat is correct.
|
1945 |
+
if (typeof args[0] !== 'string' && args.length === 1) {
|
1946 |
+
args.push(null);
|
1947 |
+
}
|
1948 |
+
return req.apply(undef, args.concat([relName, forceSync]));
|
1949 |
+
};
|
1950 |
+
}
|
1951 |
+
|
1952 |
+
function makeNormalize(relName) {
|
1953 |
+
return function (name) {
|
1954 |
+
return normalize(name, relName);
|
1955 |
+
};
|
1956 |
+
}
|
1957 |
+
|
1958 |
+
function makeLoad(depName) {
|
1959 |
+
return function (value) {
|
1960 |
+
defined[depName] = value;
|
1961 |
+
};
|
1962 |
+
}
|
1963 |
+
|
1964 |
+
function callDep(name) {
|
1965 |
+
if (hasProp(waiting, name)) {
|
1966 |
+
var args = waiting[name];
|
1967 |
+
delete waiting[name];
|
1968 |
+
defining[name] = true;
|
1969 |
+
main.apply(undef, args);
|
1970 |
+
}
|
1971 |
+
|
1972 |
+
if (!hasProp(defined, name) && !hasProp(defining, name)) {
|
1973 |
+
throw new Error('No ' + name);
|
1974 |
+
}
|
1975 |
+
return defined[name];
|
1976 |
+
}
|
1977 |
+
|
1978 |
+
//Turns a plugin!resource to [plugin, resource]
|
1979 |
+
//with the plugin being undefined if the name
|
1980 |
+
//did not have a plugin prefix.
|
1981 |
+
function splitPrefix(name) {
|
1982 |
+
var prefix,
|
1983 |
+
index = name ? name.indexOf('!') : -1;
|
1984 |
+
if (index > -1) {
|
1985 |
+
prefix = name.substring(0, index);
|
1986 |
+
name = name.substring(index + 1, name.length);
|
1987 |
+
}
|
1988 |
+
return [prefix, name];
|
1989 |
+
}
|
1990 |
+
|
1991 |
+
//Creates a parts array for a relName where first part is plugin ID,
|
1992 |
+
//second part is resource ID. Assumes relName has already been normalized.
|
1993 |
+
function makeRelParts(relName) {
|
1994 |
+
return relName ? splitPrefix(relName) : [];
|
1995 |
+
}
|
1996 |
+
|
1997 |
+
/**
|
1998 |
+
* Makes a name map, normalizing the name, and using a plugin
|
1999 |
+
* for normalization if necessary. Grabs a ref to plugin
|
2000 |
+
* too, as an optimization.
|
2001 |
+
*/
|
2002 |
+
makeMap = function (name, relParts) {
|
2003 |
+
var plugin,
|
2004 |
+
parts = splitPrefix(name),
|
2005 |
+
prefix = parts[0],
|
2006 |
+
relResourceName = relParts[1];
|
2007 |
+
|
2008 |
+
name = parts[1];
|
2009 |
+
|
2010 |
+
if (prefix) {
|
2011 |
+
prefix = normalize(prefix, relResourceName);
|
2012 |
+
plugin = callDep(prefix);
|
2013 |
+
}
|
2014 |
+
|
2015 |
+
//Normalize according
|
2016 |
+
if (prefix) {
|
2017 |
+
if (plugin && plugin.normalize) {
|
2018 |
+
name = plugin.normalize(name, makeNormalize(relResourceName));
|
2019 |
+
} else {
|
2020 |
+
name = normalize(name, relResourceName);
|
2021 |
+
}
|
2022 |
+
} else {
|
2023 |
+
name = normalize(name, relResourceName);
|
2024 |
+
parts = splitPrefix(name);
|
2025 |
+
prefix = parts[0];
|
2026 |
+
name = parts[1];
|
2027 |
+
if (prefix) {
|
2028 |
+
plugin = callDep(prefix);
|
2029 |
+
}
|
2030 |
+
}
|
2031 |
+
|
2032 |
+
//Using ridiculous property names for space reasons
|
2033 |
+
return {
|
2034 |
+
f: prefix ? prefix + '!' + name : name, //fullName
|
2035 |
+
n: name,
|
2036 |
+
pr: prefix,
|
2037 |
+
p: plugin
|
2038 |
+
};
|
2039 |
+
};
|
2040 |
+
|
2041 |
+
function makeConfig(name) {
|
2042 |
+
return function () {
|
2043 |
+
return (config && config.config && config.config[name]) || {};
|
2044 |
+
};
|
2045 |
+
}
|
2046 |
+
|
2047 |
+
handlers = {
|
2048 |
+
require: function (name) {
|
2049 |
+
return makeRequire(name);
|
2050 |
+
},
|
2051 |
+
exports: function (name) {
|
2052 |
+
var e = defined[name];
|
2053 |
+
if (typeof e !== 'undefined') {
|
2054 |
+
return e;
|
2055 |
+
} else {
|
2056 |
+
return (defined[name] = {});
|
2057 |
+
}
|
2058 |
+
},
|
2059 |
+
module: function (name) {
|
2060 |
+
return {
|
2061 |
+
id: name,
|
2062 |
+
uri: '',
|
2063 |
+
exports: defined[name],
|
2064 |
+
config: makeConfig(name)
|
2065 |
+
};
|
2066 |
+
}
|
2067 |
+
};
|
2068 |
+
|
2069 |
+
main = function (name, deps, callback, relName) {
|
2070 |
+
var cjsModule, depName, ret, map, i, relParts,
|
2071 |
+
args = [],
|
2072 |
+
callbackType = typeof callback,
|
2073 |
+
usingExports;
|
2074 |
+
|
2075 |
+
//Use name if no relName
|
2076 |
+
relName = relName || name;
|
2077 |
+
relParts = makeRelParts(relName);
|
2078 |
+
|
2079 |
+
//Call the callback to define the module, if necessary.
|
2080 |
+
if (callbackType === 'undefined' || callbackType === 'function') {
|
2081 |
+
//Pull out the defined dependencies and pass the ordered
|
2082 |
+
//values to the callback.
|
2083 |
+
//Default to [require, exports, module] if no deps
|
2084 |
+
deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
|
2085 |
+
for (i = 0; i < deps.length; i += 1) {
|
2086 |
+
map = makeMap(deps[i], relParts);
|
2087 |
+
depName = map.f;
|
2088 |
+
|
2089 |
+
//Fast path CommonJS standard dependencies.
|
2090 |
+
if (depName === "require") {
|
2091 |
+
args[i] = handlers.require(name);
|
2092 |
+
} else if (depName === "exports") {
|
2093 |
+
//CommonJS module spec 1.1
|
2094 |
+
args[i] = handlers.exports(name);
|
2095 |
+
usingExports = true;
|
2096 |
+
} else if (depName === "module") {
|
2097 |
+
//CommonJS module spec 1.1
|
2098 |
+
cjsModule = args[i] = handlers.module(name);
|
2099 |
+
} else if (hasProp(defined, depName) ||
|
2100 |
+
hasProp(waiting, depName) ||
|
2101 |
+
hasProp(defining, depName)) {
|
2102 |
+
args[i] = callDep(depName);
|
2103 |
+
} else if (map.p) {
|
2104 |
+
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
|
2105 |
+
args[i] = defined[depName];
|
2106 |
+
} else {
|
2107 |
+
throw new Error(name + ' missing ' + depName);
|
2108 |
+
}
|
2109 |
+
}
|
2110 |
+
|
2111 |
+
ret = callback ? callback.apply(defined[name], args) : undefined;
|
2112 |
+
|
2113 |
+
if (name) {
|
2114 |
+
//If setting exports via "module" is in play,
|
2115 |
+
//favor that over return value and exports. After that,
|
2116 |
+
//favor a non-undefined return value over exports use.
|
2117 |
+
if (cjsModule && cjsModule.exports !== undef &&
|
2118 |
+
cjsModule.exports !== defined[name]) {
|
2119 |
+
defined[name] = cjsModule.exports;
|
2120 |
+
} else if (ret !== undef || !usingExports) {
|
2121 |
+
//Use the return value from the function.
|
2122 |
+
defined[name] = ret;
|
2123 |
+
}
|
2124 |
+
}
|
2125 |
+
} else if (name) {
|
2126 |
+
//May just be an object definition for the module. Only
|
2127 |
+
//worry about defining if have a module name.
|
2128 |
+
defined[name] = callback;
|
2129 |
+
}
|
2130 |
+
};
|
2131 |
+
|
2132 |
+
requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
|
2133 |
+
if (typeof deps === "string") {
|
2134 |
+
if (handlers[deps]) {
|
2135 |
+
//callback in this case is really relName
|
2136 |
+
return handlers[deps](callback);
|
2137 |
+
}
|
2138 |
+
//Just return the module wanted. In this scenario, the
|
2139 |
+
//deps arg is the module name, and second arg (if passed)
|
2140 |
+
//is just the relName.
|
2141 |
+
//Normalize module name, if it contains . or ..
|
2142 |
+
return callDep(makeMap(deps, makeRelParts(callback)).f);
|
2143 |
+
} else if (!deps.splice) {
|
2144 |
+
//deps is a config object, not an array.
|
2145 |
+
config = deps;
|
2146 |
+
if (config.deps) {
|
2147 |
+
req(config.deps, config.callback);
|
2148 |
+
}
|
2149 |
+
if (!callback) {
|
2150 |
+
return;
|
2151 |
+
}
|
2152 |
+
|
2153 |
+
if (callback.splice) {
|
2154 |
+
//callback is an array, which means it is a dependency list.
|
2155 |
+
//Adjust args if there are dependencies
|
2156 |
+
deps = callback;
|
2157 |
+
callback = relName;
|
2158 |
+
relName = null;
|
2159 |
+
} else {
|
2160 |
+
deps = undef;
|
2161 |
+
}
|
2162 |
+
}
|
2163 |
+
|
2164 |
+
//Support require(['a'])
|
2165 |
+
callback = callback || function () {};
|
2166 |
+
|
2167 |
+
//If relName is a function, it is an errback handler,
|
2168 |
+
//so remove it.
|
2169 |
+
if (typeof relName === 'function') {
|
2170 |
+
relName = forceSync;
|
2171 |
+
forceSync = alt;
|
2172 |
+
}
|
2173 |
+
|
2174 |
+
//Simulate async callback;
|
2175 |
+
if (forceSync) {
|
2176 |
+
main(undef, deps, callback, relName);
|
2177 |
+
} else {
|
2178 |
+
//Using a non-zero value because of concern for what old browsers
|
2179 |
+
//do, and latest browsers "upgrade" to 4 if lower value is used:
|
2180 |
+
//http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
|
2181 |
+
//If want a value immediately, use require('id') instead -- something
|
2182 |
+
//that works in almond on the global level, but not guaranteed and
|
2183 |
+
//unlikely to work in other AMD implementations.
|
2184 |
+
setTimeout(function () {
|
2185 |
+
main(undef, deps, callback, relName);
|
2186 |
+
}, 4);
|
2187 |
+
}
|
2188 |
+
|
2189 |
+
return req;
|
2190 |
+
};
|
2191 |
+
|
2192 |
+
/**
|
2193 |
+
* Just drops the config on the floor, but returns req in case
|
2194 |
+
* the config return value is used.
|
2195 |
+
*/
|
2196 |
+
req.config = function (cfg) {
|
2197 |
+
return req(cfg);
|
2198 |
+
};
|
2199 |
+
|
2200 |
+
/**
|
2201 |
+
* Expose module registry for debugging and tooling
|
2202 |
+
*/
|
2203 |
+
requirejs._defined = defined;
|
2204 |
+
|
2205 |
+
define = function (name, deps, callback) {
|
2206 |
+
if (typeof name !== 'string') {
|
2207 |
+
throw new Error('See almond README: incorrect module build, no module name');
|
2208 |
+
}
|
2209 |
+
|
2210 |
+
//This module may not have dependencies
|
2211 |
+
if (!deps.splice) {
|
2212 |
+
//deps is not an array, so probably means
|
2213 |
+
//an object literal or factory function for
|
2214 |
+
//the value. Adjust args.
|
2215 |
+
callback = deps;
|
2216 |
+
deps = [];
|
2217 |
+
}
|
2218 |
+
|
2219 |
+
if (!hasProp(defined, name) && !hasProp(waiting, name)) {
|
2220 |
+
waiting[name] = [name, deps, callback];
|
2221 |
+
}
|
2222 |
+
};
|
2223 |
+
|
2224 |
+
define.amd = {
|
2225 |
+
jQuery: true
|
2226 |
+
};
|
2227 |
+
}());
|
2228 |
+
|
2229 |
+
S2.requirejs = requirejs;S2.require = require;S2.define = define;
|
2230 |
+
}
|
2231 |
+
}());
|
2232 |
+
S2.define("almond", function(){});
|
2233 |
+
|
2234 |
/* global jQuery:false, $:false */
|
2235 |
S2.define('jquery',[],function () {
|
2236 |
var _$ = jQuery || $;
|
2245 |
|
2246 |
return _$;
|
2247 |
});
|
2248 |
+
|
2249 |
S2.define('select2/utils',[
|
2250 |
'jquery'
|
2251 |
], function ($) {
|
2522 |
|
2523 |
return Utils;
|
2524 |
});
|
2525 |
+
|
2526 |
S2.define('select2/results',[
|
2527 |
'jquery',
|
2528 |
'./utils'
|
3046 |
|
3047 |
return Results;
|
3048 |
});
|
3049 |
+
|
3050 |
S2.define('select2/keys',[
|
3051 |
|
3052 |
], function () {
|
3072 |
|
3073 |
return KEYS;
|
3074 |
});
|
3075 |
+
|
3076 |
S2.define('select2/selection/base',[
|
3077 |
'jquery',
|
3078 |
'../utils',
|
3231 |
|
3232 |
return BaseSelection;
|
3233 |
});
|
3234 |
+
|
3235 |
S2.define('select2/selection/single',[
|
3236 |
'jquery',
|
3237 |
'./base',
|
3331 |
|
3332 |
return SingleSelection;
|
3333 |
});
|
3334 |
+
|
3335 |
S2.define('select2/selection/multiple',[
|
3336 |
'jquery',
|
3337 |
'./base',
|
3441 |
|
3442 |
return MultipleSelection;
|
3443 |
});
|
3444 |
+
|
3445 |
S2.define('select2/selection/placeholder',[
|
3446 |
'../utils'
|
3447 |
], function (Utils) {
|
3491 |
|
3492 |
return Placeholder;
|
3493 |
});
|
3494 |
+
|
3495 |
S2.define('select2/selection/allowClear',[
|
3496 |
'jquery',
|
3497 |
'../keys'
|
3589 |
|
3590 |
return AllowClear;
|
3591 |
});
|
3592 |
+
|
3593 |
S2.define('select2/selection/search',[
|
3594 |
'jquery',
|
3595 |
'../utils',
|
3812 |
|
3813 |
return Search;
|
3814 |
});
|
3815 |
+
|
3816 |
S2.define('select2/selection/eventRelay',[
|
3817 |
'jquery'
|
3818 |
], function ($) {
|
3858 |
|
3859 |
return EventRelay;
|
3860 |
});
|
3861 |
+
|
3862 |
S2.define('select2/translation',[
|
3863 |
'jquery',
|
3864 |
'require'
|
3895 |
|
3896 |
return Translation;
|
3897 |
});
|
3898 |
+
|
3899 |
S2.define('select2/diacritics',[
|
3900 |
|
3901 |
], function () {
|
4743 |
|
4744 |
return diacritics;
|
4745 |
});
|
4746 |
+
|
4747 |
S2.define('select2/data/base',[
|
4748 |
'../utils'
|
4749 |
], function (Utils) {
|
4784 |
|
4785 |
return BaseAdapter;
|
4786 |
});
|
4787 |
+
|
4788 |
S2.define('select2/data/select',[
|
4789 |
'./base',
|
4790 |
'../utils',
|
4957 |
}
|
4958 |
}
|
4959 |
|
4960 |
+
if (data.id !== undefined) {
|
4961 |
option.value = data.id;
|
4962 |
}
|
4963 |
|
5070 |
|
5071 |
return SelectAdapter;
|
5072 |
});
|
5073 |
+
|
5074 |
S2.define('select2/data/array',[
|
5075 |
'./select',
|
5076 |
'../utils',
|
5150 |
|
5151 |
return ArrayAdapter;
|
5152 |
});
|
5153 |
+
|
5154 |
S2.define('select2/data/ajax',[
|
5155 |
'./array',
|
5156 |
'../utils',
|
5260 |
|
5261 |
return AjaxAdapter;
|
5262 |
});
|
5263 |
+
|
5264 |
S2.define('select2/data/tags',[
|
5265 |
'jquery'
|
5266 |
], function ($) {
|
5316 |
}, true)
|
5317 |
);
|
5318 |
|
5319 |
+
var optionText = (option.text || '').toUpperCase();
|
5320 |
+
var paramsTerm = (params.term || '').toUpperCase();
|
5321 |
+
|
5322 |
+
var checkText = optionText === paramsTerm;
|
5323 |
|
5324 |
if (checkText || checkChildren) {
|
5325 |
if (child) {
|
5389 |
|
5390 |
return Tags;
|
5391 |
});
|
5392 |
+
|
5393 |
S2.define('select2/data/tokenizer',[
|
5394 |
'jquery'
|
5395 |
], function ($) {
|
5506 |
|
5507 |
return Tokenizer;
|
5508 |
});
|
5509 |
+
|
5510 |
S2.define('select2/data/minimumInputLength',[
|
5511 |
|
5512 |
], function () {
|
5537 |
|
5538 |
return MinimumInputLength;
|
5539 |
});
|
5540 |
+
|
5541 |
S2.define('select2/data/maximumInputLength',[
|
5542 |
|
5543 |
], function () {
|
5569 |
|
5570 |
return MaximumInputLength;
|
5571 |
});
|
5572 |
+
|
5573 |
S2.define('select2/data/maximumSelectionLength',[
|
5574 |
|
5575 |
], function (){
|
5601 |
|
5602 |
return MaximumSelectionLength;
|
5603 |
});
|
5604 |
+
|
5605 |
S2.define('select2/dropdown',[
|
5606 |
'jquery',
|
5607 |
'./utils'
|
5644 |
|
5645 |
return Dropdown;
|
5646 |
});
|
5647 |
+
|
5648 |
S2.define('select2/dropdown/search',[
|
5649 |
'jquery',
|
5650 |
'../utils'
|
5710 |
});
|
5711 |
|
5712 |
container.on('focus', function () {
|
5713 |
+
if (!container.isOpen()) {
|
5714 |
self.$search.focus();
|
5715 |
}
|
5716 |
});
|
5746 |
|
5747 |
return Search;
|
5748 |
});
|
5749 |
+
|
5750 |
S2.define('select2/dropdown/hidePlaceholder',[
|
5751 |
|
5752 |
], function () {
|
5789 |
|
5790 |
return HidePlaceholder;
|
5791 |
});
|
5792 |
+
|
5793 |
S2.define('select2/dropdown/infiniteScroll',[
|
5794 |
'jquery'
|
5795 |
], function ($) {
|
5879 |
|
5880 |
return InfiniteScroll;
|
5881 |
});
|
5882 |
+
|
5883 |
S2.define('select2/dropdown/attachBody',[
|
5884 |
'jquery',
|
5885 |
'../utils'
|
6102 |
|
6103 |
return AttachBody;
|
6104 |
});
|
6105 |
+
|
6106 |
S2.define('select2/dropdown/minimumResultsForSearch',[
|
6107 |
|
6108 |
], function () {
|
6142 |
|
6143 |
return MinimumResultsForSearch;
|
6144 |
});
|
6145 |
+
|
6146 |
S2.define('select2/dropdown/selectOnClose',[
|
6147 |
|
6148 |
], function () {
|
6193 |
|
6194 |
return SelectOnClose;
|
6195 |
});
|
6196 |
+
|
6197 |
S2.define('select2/dropdown/closeOnSelect',[
|
6198 |
|
6199 |
], function () {
|
6229 |
|
6230 |
return CloseOnSelect;
|
6231 |
});
|
6232 |
+
|
6233 |
S2.define('select2/i18n/en',[],function () {
|
6234 |
// English
|
6235 |
return {
|
6274 |
}
|
6275 |
};
|
6276 |
});
|
6277 |
+
|
6278 |
S2.define('select2/defaults',[
|
6279 |
'jquery',
|
6280 |
'require',
|
6671 |
|
6672 |
return defaults;
|
6673 |
});
|
6674 |
+
|
6675 |
S2.define('select2/options',[
|
6676 |
'require',
|
6677 |
'jquery',
|
6794 |
|
6795 |
return Options;
|
6796 |
});
|
6797 |
+
|
6798 |
S2.define('select2/core',[
|
6799 |
'jquery',
|
6800 |
'./options',
|
7407 |
|
7408 |
return Select2;
|
7409 |
});
|
7410 |
+
|
7411 |
S2.define('jquery-mousewheel',[
|
7412 |
'jquery'
|
7413 |
], function ($) {
|
7414 |
// Used to shim jQuery.mousewheel for non-full builds.
|
7415 |
return $;
|
7416 |
});
|
7417 |
+
|
7418 |
S2.define('jquery.select2',[
|
7419 |
'jquery',
|
7420 |
'jquery-mousewheel',
|
7472 |
|
7473 |
return Select2;
|
7474 |
});
|
7475 |
+
|
7476 |
// Return the AMD loader configuration so it can be used outside of this file
|
7477 |
return {
|
7478 |
define: S2.define,
|
assets/js/{vendor.b4463523.js → vendor.3c88b878.js}
RENAMED
@@ -76,7 +76,7 @@
|
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
-
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
76 |
/******/ script.charset = 'utf-8';
|
77 |
/******/ script.async = true;
|
78 |
|
79 |
+
/******/ script.src = __webpack_require__.p + "" + ({"0":"admin","1":"admin_vendor","2":"form_editor","3":"mailpoet","4":"newsletter_editor"}[chunkId]||chunkId) + "." + {"0":"5545d8c1","1":"5bfea06b","2":"c4bc7e0b","3":"eab93337","4":"ea5d61a2"}[chunkId] + ".chunk.js";
|
80 |
/******/ head.appendChild(script);
|
81 |
/******/ }
|
82 |
/******/ };
|
lang/index.php
CHANGED
@@ -1,3 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Silence is golden
|
|
|
|
|
|
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-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: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -152,7 +152,7 @@ msgstr ""
|
|
152 |
msgid "Your MailPoet Sending Service key expires on %s!"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: lib/API/JSON/v1/Services.php:62
|
156 |
msgid "Your MailPoet Sending Service key is invalid."
|
157 |
msgstr ""
|
158 |
|
@@ -172,7 +172,7 @@ msgstr ""
|
|
172 |
msgid "Your Premium key expires on %s."
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: lib/API/JSON/v1/Services.php:118
|
176 |
msgid "Your Premium key is invalid."
|
177 |
msgstr ""
|
178 |
|
@@ -198,24 +198,28 @@ msgstr ""
|
|
198 |
msgid "You have not specified any settings to be saved."
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
202 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
203 |
#: lib/API/MP/v1/API.php:48
|
204 |
msgid "This subscriber does not exist."
|
205 |
msgstr ""
|
206 |
|
207 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
208 |
msgid "Please specify a valid form ID."
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
212 |
msgid "Please leave the first field empty."
|
213 |
msgstr ""
|
214 |
|
215 |
-
#: lib/API/JSON/v1/Subscribers.php:
|
216 |
msgid "Please select a list."
|
217 |
msgstr ""
|
218 |
|
|
|
|
|
|
|
|
|
219 |
#: lib/API/MP/v1/API.php:21
|
220 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:33
|
221 |
#: lib/Subscription/Pages.php:278 views/form/editor.html:219
|
@@ -242,6 +246,34 @@ msgstr ""
|
|
242 |
msgid "This subscriber already exists."
|
243 |
msgstr ""
|
244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
#: lib/Config/Hooks.php:148
|
246 |
msgid "MailPoet Newsletter"
|
247 |
msgstr ""
|
@@ -253,10 +285,6 @@ msgid ""
|
|
253 |
"[link] Knowledge Base article [/link] for steps how to resolve it."
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: lib/Config/Initializer.php:156
|
257 |
-
msgid "You do not have permission to activate/deactivate MailPoet plugin."
|
258 |
-
msgstr ""
|
259 |
-
|
260 |
#: lib/Config/MP2Migrator.php:151
|
261 |
msgid "Start import"
|
262 |
msgstr ""
|
@@ -343,86 +371,82 @@ msgstr[1] ""
|
|
343 |
msgid "Settings imported"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: lib/Config/Menu.php:
|
347 |
msgid "Emails"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: lib/Config/Menu.php:
|
351 |
#: views/newsletter/templates/components/sidebar/styles.hbs:75
|
352 |
#: views/newsletters.html:121
|
353 |
msgid "Newsletter"
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: lib/Config/Menu.php:
|
357 |
msgid "Newsletter Editor"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: lib/Config/Menu.php:
|
361 |
msgid "Forms"
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: lib/Config/Menu.php:
|
365 |
msgid "Form Editor"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: lib/Config/Menu.php:
|
369 |
#: views/subscribers/subscribers.html:18
|
370 |
msgid "Subscribers"
|
371 |
msgstr ""
|
372 |
|
373 |
-
#: lib/Config/Menu.php:
|
374 |
#: views/subscribers/importExport/import.html:7
|
375 |
#: views/subscribers/subscribers.html:94
|
376 |
msgid "Import"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: lib/Config/Menu.php:
|
380 |
#: views/subscribers/importExport/export.html:6
|
381 |
#: views/subscribers/importExport/export.html:96
|
382 |
#: views/subscribers/subscribers.html:95
|
383 |
msgid "Export"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: lib/Config/Menu.php:
|
387 |
#: views/newsletters.html:64 views/newsletters.html:166 views/segments.html:13
|
388 |
#: views/subscribers/subscribers.html:66
|
389 |
msgid "Lists"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: lib/Config/Menu.php:
|
393 |
#: views/newsletters.html:65 views/settings.html:6
|
394 |
msgid "Settings"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: lib/Config/Menu.php:
|
398 |
msgid "Help"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: lib/Config/Menu.php:
|
402 |
msgid "Premium"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: lib/Config/Menu.php:
|
406 |
#: views/welcome.html:16
|
407 |
msgid "Welcome"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: lib/Config/Menu.php:
|
411 |
msgid "Update"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: lib/Config/Menu.php:
|
415 |
msgid "Migration"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: lib/Config/Menu.php:
|
419 |
msgid "In any WordPress role"
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: lib/Config/Menu.php:607 views/premium.html:41
|
423 |
-
msgid "MailPoet"
|
424 |
-
msgstr ""
|
425 |
-
|
426 |
#: lib/Config/PluginActivatedHook.php:14
|
427 |
msgid ""
|
428 |
"We noticed that you're using an unsupported environment. While MailPoet "
|
@@ -1262,12 +1286,12 @@ msgid "Please specify a type."
|
|
1262 |
msgstr ""
|
1263 |
|
1264 |
#: lib/Models/Form.php:93 lib/Models/Newsletter.php:645
|
1265 |
-
#: lib/Models/Segment.php:133 lib/Models/Subscriber.php:
|
1266 |
msgid "All"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#: lib/Models/Form.php:98 lib/Models/Newsletter.php:715
|
1270 |
-
#: lib/Models/Segment.php:138 lib/Models/Subscriber.php:
|
1271 |
#: views/newsletters.html:77 views/segments.html:50
|
1272 |
#: views/subscribers/subscribers.html:37
|
1273 |
msgid "Trash"
|
@@ -1281,7 +1305,7 @@ msgstr ""
|
|
1281 |
msgid "Deleted list"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
-
#: lib/Models/Newsletter.php:546 lib/Models/Subscriber.php:
|
1285 |
#: lib/Subscribers/ImportExport/Export/Export.php:173
|
1286 |
msgid "All Lists"
|
1287 |
msgstr ""
|
@@ -1356,38 +1380,34 @@ msgid ""
|
|
1356 |
"The Team"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: lib/Models/Subscriber.php:
|
1360 |
msgid "Please enter your email address"
|
1361 |
msgstr ""
|
1362 |
|
1363 |
-
#: lib/Models/Subscriber.php:
|
1364 |
msgid "Your email address is invalid!"
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
#: lib/Models/Subscriber.php:
|
1368 |
-
msgid "You need to wait before subscribing again."
|
1369 |
-
msgstr ""
|
1370 |
-
|
1371 |
-
#: lib/Models/Subscriber.php:290
|
1372 |
msgid "Subscribers without a list (%s)"
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: lib/Models/Subscriber.php:
|
1376 |
#: views/segments.html:30 views/subscribers/subscribers.html:56
|
1377 |
msgid "Subscribed"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
-
#: lib/Models/Subscriber.php:
|
1381 |
#: views/subscribers/subscribers.html:55
|
1382 |
msgid "Unconfirmed"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: lib/Models/Subscriber.php:
|
1386 |
#: views/segments.html:32 views/subscribers/subscribers.html:57
|
1387 |
msgid "Unsubscribed"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: lib/Models/Subscriber.php:
|
1391 |
#: views/segments.html:33 views/subscribers/subscribers.html:58
|
1392 |
msgid "Bounced"
|
1393 |
msgstr ""
|
@@ -1689,20 +1709,20 @@ msgstr ""
|
|
1689 |
msgid "MailPoet Error:"
|
1690 |
msgstr ""
|
1691 |
|
1692 |
-
#: mailpoet.php:
|
1693 |
msgid ""
|
1694 |
"MailPoet plugin requires PHP version 5.3.3 or newer. Please read our "
|
1695 |
"[link]instructions[/link] on how to resolve this issue."
|
1696 |
msgstr ""
|
1697 |
|
1698 |
-
#: mailpoet.php:
|
1699 |
msgid ""
|
1700 |
"MailPoet plugin cannot run under Microsoft's Internet Information Services "
|
1701 |
"(IIS) web server. We recommend that you use a web server powered by Apache "
|
1702 |
"or NGINX."
|
1703 |
msgstr ""
|
1704 |
|
1705 |
-
#: mailpoet.php:
|
1706 |
msgid ""
|
1707 |
"MailPoet cannot start because it is missing core files. Please reinstall "
|
1708 |
"the plugin."
|
@@ -1873,8 +1893,8 @@ msgstr ""
|
|
1873 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
|
1874 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
|
1875 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
|
1876 |
-
#: views/premium.html:56 views/settings/advanced.html:
|
1877 |
-
#: views/settings/advanced.html:
|
1878 |
#: views/settings/mta.html:589 views/settings/signup.html:34
|
1879 |
#: views/subscribers/importExport/export.html:33
|
1880 |
#: views/subscribers/importExport/import/step2.html:63
|
@@ -1892,8 +1912,8 @@ msgstr ""
|
|
1892 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
|
1893 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
|
1894 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
|
1895 |
-
#: views/premium.html:62 views/premium.html:63 views/settings/advanced.html:
|
1896 |
-
#: views/settings/advanced.html:
|
1897 |
#: views/settings/bounce.html:179 views/settings/mta.html:546
|
1898 |
#: views/settings/mta.html:600 views/settings/signup.html:46
|
1899 |
#: views/subscribers/importExport/export.html:38
|
@@ -4054,35 +4074,51 @@ msgstr ""
|
|
4054 |
msgid "MailPoet's own script. Doesn't work with [link]these hosts[/link]."
|
4055 |
msgstr ""
|
4056 |
|
4057 |
-
#: views/settings/advanced.html:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4058 |
msgid "Open and click tracking"
|
4059 |
msgstr ""
|
4060 |
|
4061 |
-
#: views/settings/advanced.html:
|
4062 |
msgid "Enable or disable open and click tracking."
|
4063 |
msgstr ""
|
4064 |
|
4065 |
-
#: views/settings/advanced.html:
|
4066 |
msgid "Share anonymous data"
|
4067 |
msgstr ""
|
4068 |
|
4069 |
-
#: views/settings/advanced.html:
|
4070 |
msgid ""
|
4071 |
"Share anonymous data and help us improve the plugin. We appreciate your "
|
4072 |
"help!"
|
4073 |
msgstr ""
|
4074 |
|
4075 |
-
#: views/settings/advanced.html:
|
4076 |
msgid "Reinstall from scratch"
|
4077 |
msgstr ""
|
4078 |
|
4079 |
-
#: views/settings/advanced.html:
|
4080 |
msgid ""
|
4081 |
"Want to start from the beginning? This will completely delete MailPoet and "
|
4082 |
"reinstall it from scratch. Remember: you will lose all of your data!"
|
4083 |
msgstr ""
|
4084 |
|
4085 |
-
#: views/settings/advanced.html:
|
4086 |
msgid "Reinstall now..."
|
4087 |
msgstr ""
|
4088 |
|
@@ -4561,13 +4597,14 @@ msgid "You have selected an invalid sending method."
|
|
4561 |
msgstr ""
|
4562 |
|
4563 |
#: views/settings/premium.html:7
|
4564 |
-
msgid "
|
4565 |
msgstr ""
|
4566 |
|
4567 |
#: views/settings/premium.html:10
|
4568 |
msgid ""
|
4569 |
-
"This key is used
|
4570 |
-
"
|
|
|
4571 |
msgstr ""
|
4572 |
|
4573 |
#: views/settings/premium.html:25
|
@@ -4575,6 +4612,14 @@ msgstr ""
|
|
4575 |
msgid "Verify"
|
4576 |
msgstr ""
|
4577 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4578 |
#: views/settings/premium.html:56
|
4579 |
msgid "Install Premium now."
|
4580 |
msgstr ""
|
@@ -4690,6 +4735,10 @@ msgstr ""
|
|
4690 |
msgid "Advanced"
|
4691 |
msgstr ""
|
4692 |
|
|
|
|
|
|
|
|
|
4693 |
#: views/settings.html:55
|
4694 |
msgid "Save settings"
|
4695 |
msgstr ""
|
@@ -5152,7 +5201,7 @@ msgstr ""
|
|
5152 |
msgid "Care to Give Your Opinion?"
|
5153 |
msgstr ""
|
5154 |
|
5155 |
-
#: views/update.html:
|
5156 |
msgid "Awesome! Now, take me to MailPoet"
|
5157 |
msgstr ""
|
5158 |
|
@@ -5242,22 +5291,22 @@ msgctxt "Error code (inside parentheses)"
|
|
5242 |
msgid "code: %s"
|
5243 |
msgstr ""
|
5244 |
|
5245 |
-
#: lib/Config/Menu.php:
|
5246 |
msgctxt "newsletters per page (screen options)"
|
5247 |
msgid "Number of newsletters per page"
|
5248 |
msgstr ""
|
5249 |
|
5250 |
-
#: lib/Config/Menu.php:
|
5251 |
msgctxt "forms per page (screen options)"
|
5252 |
msgid "Number of forms per page"
|
5253 |
msgstr ""
|
5254 |
|
5255 |
-
#: lib/Config/Menu.php:
|
5256 |
msgctxt "subscribers per page (screen options)"
|
5257 |
msgid "Number of subscribers per page"
|
5258 |
msgstr ""
|
5259 |
|
5260 |
-
#: lib/Config/Menu.php:
|
5261 |
msgctxt "segments per page (screen options)"
|
5262 |
msgid "Number of segments per page"
|
5263 |
msgstr ""
|
@@ -5331,7 +5380,7 @@ msgid "S"
|
|
5331 |
msgstr ""
|
5332 |
|
5333 |
#: views/settings/advanced.html:13 views/settings/advanced.html:37
|
5334 |
-
#: views/settings/advanced.html:
|
5335 |
msgctxt "support article link label"
|
5336 |
msgid "Read more."
|
5337 |
msgstr ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
+
"POT-Creation-Date: 2017-10-03 13:34:28+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
152 |
msgid "Your MailPoet Sending Service key expires on %s!"
|
153 |
msgstr ""
|
154 |
|
155 |
+
#: lib/API/JSON/v1/Services.php:62
|
156 |
msgid "Your MailPoet Sending Service key is invalid."
|
157 |
msgstr ""
|
158 |
|
172 |
msgid "Your Premium key expires on %s."
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: lib/API/JSON/v1/Services.php:118
|
176 |
msgid "Your Premium key is invalid."
|
177 |
msgstr ""
|
178 |
|
198 |
msgid "You have not specified any settings to be saved."
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: lib/API/JSON/v1/Subscribers.php:30 lib/API/JSON/v1/Subscribers.php:170
|
202 |
+
#: lib/API/JSON/v1/Subscribers.php:186 lib/API/JSON/v1/Subscribers.php:202
|
203 |
#: lib/API/MP/v1/API.php:48
|
204 |
msgid "This subscriber does not exist."
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: lib/API/JSON/v1/Subscribers.php:71
|
208 |
msgid "Please specify a valid form ID."
|
209 |
msgstr ""
|
210 |
|
211 |
+
#: lib/API/JSON/v1/Subscribers.php:76
|
212 |
msgid "Please leave the first field empty."
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: lib/API/JSON/v1/Subscribers.php:92 views/form/editor.html:57
|
216 |
msgid "Please select a list."
|
217 |
msgstr ""
|
218 |
|
219 |
+
#: lib/API/JSON/v1/Subscribers.php:110
|
220 |
+
msgid "You need to wait before subscribing again."
|
221 |
+
msgstr ""
|
222 |
+
|
223 |
#: lib/API/MP/v1/API.php:21
|
224 |
#: lib/Subscribers/ImportExport/ImportExportFactory.php:33
|
225 |
#: lib/Subscription/Pages.php:278 views/form/editor.html:219
|
246 |
msgid "This subscriber already exists."
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: lib/Config/AccessControl.php:74
|
250 |
+
msgid "Admin menu item"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: lib/Config/AccessControl.php:75
|
254 |
+
msgid "Manage settings"
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: lib/Config/AccessControl.php:76
|
258 |
+
msgid "Manage emails"
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: lib/Config/AccessControl.php:77
|
262 |
+
msgid "Manage subscribers"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: lib/Config/AccessControl.php:78
|
266 |
+
msgid "Manage forms"
|
267 |
+
msgstr ""
|
268 |
+
|
269 |
+
#: lib/Config/AccessControl.php:79
|
270 |
+
msgid "Manage segments"
|
271 |
+
msgstr ""
|
272 |
+
|
273 |
+
#: lib/Config/Capabilities.php:65 lib/Config/Menu.php:597 views/premium.html:41
|
274 |
+
msgid "MailPoet"
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
#: lib/Config/Hooks.php:148
|
278 |
msgid "MailPoet Newsletter"
|
279 |
msgstr ""
|
285 |
"[link] Knowledge Base article [/link] for steps how to resolve it."
|
286 |
msgstr ""
|
287 |
|
|
|
|
|
|
|
|
|
288 |
#: lib/Config/MP2Migrator.php:151
|
289 |
msgid "Start import"
|
290 |
msgstr ""
|
371 |
msgid "Settings imported"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: lib/Config/Menu.php:82 lib/Config/Menu.php:83 views/newsletters.html:23
|
375 |
msgid "Emails"
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: lib/Config/Menu.php:107 lib/Newsletter/Shortcodes/ShortcodesHelper.php:33
|
379 |
#: views/newsletter/templates/components/sidebar/styles.hbs:75
|
380 |
#: views/newsletters.html:121
|
381 |
msgid "Newsletter"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: lib/Config/Menu.php:108 views/newsletter/editor.html:228
|
385 |
msgid "Newsletter Editor"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: lib/Config/Menu.php:120 lib/Config/Menu.php:121 views/forms.html:25
|
389 |
msgid "Forms"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: lib/Config/Menu.php:145 lib/Config/Menu.php:146
|
393 |
msgid "Form Editor"
|
394 |
msgstr ""
|
395 |
|
396 |
+
#: lib/Config/Menu.php:158 lib/Config/Menu.php:159
|
397 |
#: views/subscribers/subscribers.html:18
|
398 |
msgid "Subscribers"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: lib/Config/Menu.php:183 lib/Config/Menu.php:184
|
402 |
#: views/subscribers/importExport/import.html:7
|
403 |
#: views/subscribers/subscribers.html:94
|
404 |
msgid "Import"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: lib/Config/Menu.php:196 lib/Config/Menu.php:197
|
408 |
#: views/subscribers/importExport/export.html:6
|
409 |
#: views/subscribers/importExport/export.html:96
|
410 |
#: views/subscribers/subscribers.html:95
|
411 |
msgid "Export"
|
412 |
msgstr ""
|
413 |
|
414 |
+
#: lib/Config/Menu.php:209 lib/Config/Menu.php:210 views/forms.html:53
|
415 |
#: views/newsletters.html:64 views/newsletters.html:166 views/segments.html:13
|
416 |
#: views/subscribers/subscribers.html:66
|
417 |
msgid "Lists"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: lib/Config/Menu.php:234 lib/Config/Menu.php:235 views/form/editor.html:37
|
421 |
#: views/newsletters.html:65 views/settings.html:6
|
422 |
msgid "Settings"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: lib/Config/Menu.php:247 lib/Config/Menu.php:248 views/help.html:5
|
426 |
msgid "Help"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: lib/Config/Menu.php:261 lib/Config/Menu.php:262
|
430 |
msgid "Premium"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: lib/Config/Menu.php:274 lib/Config/Menu.php:275 views/update.html:16
|
434 |
#: views/welcome.html:16
|
435 |
msgid "Welcome"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: lib/Config/Menu.php:287 lib/Config/Menu.php:288 views/segments.html:43
|
439 |
msgid "Update"
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: lib/Config/Menu.php:300
|
443 |
msgid "Migration"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: lib/Config/Menu.php:520
|
447 |
msgid "In any WordPress role"
|
448 |
msgstr ""
|
449 |
|
|
|
|
|
|
|
|
|
450 |
#: lib/Config/PluginActivatedHook.php:14
|
451 |
msgid ""
|
452 |
"We noticed that you're using an unsupported environment. While MailPoet "
|
1286 |
msgstr ""
|
1287 |
|
1288 |
#: lib/Models/Form.php:93 lib/Models/Newsletter.php:645
|
1289 |
+
#: lib/Models/Segment.php:133 lib/Models/Subscriber.php:331
|
1290 |
msgid "All"
|
1291 |
msgstr ""
|
1292 |
|
1293 |
#: lib/Models/Form.php:98 lib/Models/Newsletter.php:715
|
1294 |
+
#: lib/Models/Segment.php:138 lib/Models/Subscriber.php:356 views/forms.html:66
|
1295 |
#: views/newsletters.html:77 views/segments.html:50
|
1296 |
#: views/subscribers/subscribers.html:37
|
1297 |
msgid "Trash"
|
1305 |
msgid "Deleted list"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
+
#: lib/Models/Newsletter.php:546 lib/Models/Subscriber.php:267
|
1309 |
#: lib/Subscribers/ImportExport/Export/Export.php:173
|
1310 |
msgid "All Lists"
|
1311 |
msgstr ""
|
1380 |
"The Team"
|
1381 |
msgstr ""
|
1382 |
|
1383 |
+
#: lib/Models/Subscriber.php:23
|
1384 |
msgid "Please enter your email address"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: lib/Models/Subscriber.php:24
|
1388 |
msgid "Your email address is invalid!"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: lib/Models/Subscriber.php:275
|
|
|
|
|
|
|
|
|
1392 |
msgid "Subscribers without a list (%s)"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: lib/Models/Subscriber.php:336 lib/Subscription/Pages.php:301
|
1396 |
#: views/segments.html:30 views/subscribers/subscribers.html:56
|
1397 |
msgid "Subscribed"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: lib/Models/Subscriber.php:341 views/segments.html:31
|
1401 |
#: views/subscribers/subscribers.html:55
|
1402 |
msgid "Unconfirmed"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
+
#: lib/Models/Subscriber.php:346 lib/Subscription/Pages.php:309
|
1406 |
#: views/segments.html:32 views/subscribers/subscribers.html:57
|
1407 |
msgid "Unsubscribed"
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: lib/Models/Subscriber.php:351 lib/Subscription/Pages.php:317
|
1411 |
#: views/segments.html:33 views/subscribers/subscribers.html:58
|
1412 |
msgid "Bounced"
|
1413 |
msgstr ""
|
1709 |
msgid "MailPoet Error:"
|
1710 |
msgstr ""
|
1711 |
|
1712 |
+
#: mailpoet.php:50
|
1713 |
msgid ""
|
1714 |
"MailPoet plugin requires PHP version 5.3.3 or newer. Please read our "
|
1715 |
"[link]instructions[/link] on how to resolve this issue."
|
1716 |
msgstr ""
|
1717 |
|
1718 |
+
#: mailpoet.php:65
|
1719 |
msgid ""
|
1720 |
"MailPoet plugin cannot run under Microsoft's Internet Information Services "
|
1721 |
"(IIS) web server. We recommend that you use a web server powered by Apache "
|
1722 |
"or NGINX."
|
1723 |
msgstr ""
|
1724 |
|
1725 |
+
#: mailpoet.php:79
|
1726 |
msgid ""
|
1727 |
"MailPoet cannot start because it is missing core files. Please reinstall "
|
1728 |
"the plugin."
|
1893 |
#: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
|
1894 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
|
1895 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
|
1896 |
+
#: views/premium.html:56 views/settings/advanced.html:111
|
1897 |
+
#: views/settings/advanced.html:151 views/settings/bounce.html:190
|
1898 |
#: views/settings/mta.html:589 views/settings/signup.html:34
|
1899 |
#: views/subscribers/importExport/export.html:33
|
1900 |
#: views/subscribers/importExport/import/step2.html:63
|
1912 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
|
1913 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
|
1914 |
#: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
|
1915 |
+
#: views/premium.html:62 views/premium.html:63 views/settings/advanced.html:122
|
1916 |
+
#: views/settings/advanced.html:162 views/settings/bounce.html:148
|
1917 |
#: views/settings/bounce.html:179 views/settings/mta.html:546
|
1918 |
#: views/settings/mta.html:600 views/settings/signup.html:46
|
1919 |
#: views/subscribers/importExport/export.html:38
|
4074 |
msgid "MailPoet's own script. Doesn't work with [link]these hosts[/link]."
|
4075 |
msgstr ""
|
4076 |
|
4077 |
+
#: views/settings/advanced.html:73
|
4078 |
+
msgid "Roles and capabilities"
|
4079 |
+
msgstr ""
|
4080 |
+
|
4081 |
+
#: views/settings/advanced.html:75
|
4082 |
+
msgid "Manage which WordPress roles access which features of MailPoet."
|
4083 |
+
msgstr ""
|
4084 |
+
|
4085 |
+
#: views/settings/advanced.html:81
|
4086 |
+
msgid "Manage using the Members plugin"
|
4087 |
+
msgstr ""
|
4088 |
+
|
4089 |
+
#: views/settings/advanced.html:84
|
4090 |
+
msgid "Install the plugin [link]Members[/link] (free) to manage permissions."
|
4091 |
+
msgstr ""
|
4092 |
+
|
4093 |
+
#: views/settings/advanced.html:95
|
4094 |
msgid "Open and click tracking"
|
4095 |
msgstr ""
|
4096 |
|
4097 |
+
#: views/settings/advanced.html:98
|
4098 |
msgid "Enable or disable open and click tracking."
|
4099 |
msgstr ""
|
4100 |
|
4101 |
+
#: views/settings/advanced.html:131
|
4102 |
msgid "Share anonymous data"
|
4103 |
msgstr ""
|
4104 |
|
4105 |
+
#: views/settings/advanced.html:134
|
4106 |
msgid ""
|
4107 |
"Share anonymous data and help us improve the plugin. We appreciate your "
|
4108 |
"help!"
|
4109 |
msgstr ""
|
4110 |
|
4111 |
+
#: views/settings/advanced.html:170
|
4112 |
msgid "Reinstall from scratch"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
+
#: views/settings/advanced.html:172
|
4116 |
msgid ""
|
4117 |
"Want to start from the beginning? This will completely delete MailPoet and "
|
4118 |
"reinstall it from scratch. Remember: you will lose all of your data!"
|
4119 |
msgstr ""
|
4120 |
|
4121 |
+
#: views/settings/advanced.html:180
|
4122 |
msgid "Reinstall now..."
|
4123 |
msgstr ""
|
4124 |
|
4597 |
msgstr ""
|
4598 |
|
4599 |
#: views/settings/premium.html:7
|
4600 |
+
msgid "Activation Key"
|
4601 |
msgstr ""
|
4602 |
|
4603 |
#: views/settings/premium.html:10
|
4604 |
msgid ""
|
4605 |
+
"This key is used to validate your free or paid subscription. Paying "
|
4606 |
+
"customers will enjoy automatic upgrades of their Premium plugin and access "
|
4607 |
+
"to faster support."
|
4608 |
msgstr ""
|
4609 |
|
4610 |
#: views/settings/premium.html:25
|
4612 |
msgid "Verify"
|
4613 |
msgstr ""
|
4614 |
|
4615 |
+
#: views/settings/premium.html:35
|
4616 |
+
msgid "Your key is not valid for the Premium plugin."
|
4617 |
+
msgstr ""
|
4618 |
+
|
4619 |
+
#: views/settings/premium.html:45
|
4620 |
+
msgid "Your key is not valid for the MailPoet Sending Service."
|
4621 |
+
msgstr ""
|
4622 |
+
|
4623 |
#: views/settings/premium.html:56
|
4624 |
msgid "Install Premium now."
|
4625 |
msgstr ""
|
4735 |
msgid "Advanced"
|
4736 |
msgstr ""
|
4737 |
|
4738 |
+
#: views/settings.html:22
|
4739 |
+
msgid "Key Activation"
|
4740 |
+
msgstr ""
|
4741 |
+
|
4742 |
#: views/settings.html:55
|
4743 |
msgid "Save settings"
|
4744 |
msgstr ""
|
5201 |
msgid "Care to Give Your Opinion?"
|
5202 |
msgstr ""
|
5203 |
|
5204 |
+
#: views/update.html:70 views/welcome.html:93
|
5205 |
msgid "Awesome! Now, take me to MailPoet"
|
5206 |
msgstr ""
|
5207 |
|
5291 |
msgid "code: %s"
|
5292 |
msgstr ""
|
5293 |
|
5294 |
+
#: lib/Config/Menu.php:95
|
5295 |
msgctxt "newsletters per page (screen options)"
|
5296 |
msgid "Number of newsletters per page"
|
5297 |
msgstr ""
|
5298 |
|
5299 |
+
#: lib/Config/Menu.php:133
|
5300 |
msgctxt "forms per page (screen options)"
|
5301 |
msgid "Number of forms per page"
|
5302 |
msgstr ""
|
5303 |
|
5304 |
+
#: lib/Config/Menu.php:171
|
5305 |
msgctxt "subscribers per page (screen options)"
|
5306 |
msgid "Number of subscribers per page"
|
5307 |
msgstr ""
|
5308 |
|
5309 |
+
#: lib/Config/Menu.php:222
|
5310 |
msgctxt "segments per page (screen options)"
|
5311 |
msgid "Number of segments per page"
|
5312 |
msgstr ""
|
5380 |
msgstr ""
|
5381 |
|
5382 |
#: views/settings/advanced.html:13 views/settings/advanced.html:37
|
5383 |
+
#: views/settings/advanced.html:138
|
5384 |
msgctxt "support article link label"
|
5385 |
msgid "Read more."
|
5386 |
msgstr ""
|
lib/API/JSON/v1/AutomatedLatestContent.php
CHANGED
@@ -20,13 +20,14 @@ class AutomatedLatestContent extends APIEndpoint {
|
|
20 |
|
21 |
function getPostTypes() {
|
22 |
$post_types = array_map(function($post_type) {
|
|
|
23 |
return array(
|
24 |
'name' => $post_type->name,
|
25 |
'label' => $post_type->label
|
26 |
);
|
27 |
}, get_post_types(array(), 'objects'));
|
28 |
return $this->successResponse(
|
29 |
-
$post_types
|
30 |
);
|
31 |
}
|
32 |
|
20 |
|
21 |
function getPostTypes() {
|
22 |
$post_types = array_map(function($post_type) {
|
23 |
+
if(!empty($post_type->exclude_from_search)) return;
|
24 |
return array(
|
25 |
'name' => $post_type->name,
|
26 |
'label' => $post_type->label
|
27 |
);
|
28 |
}, get_post_types(array(), 'objects'));
|
29 |
return $this->successResponse(
|
30 |
+
array_filter($post_types)
|
31 |
);
|
32 |
}
|
33 |
|
lib/API/JSON/v1/NewsletterTemplates.php
CHANGED
@@ -29,7 +29,7 @@ class NewsletterTemplates extends APIEndpoint {
|
|
29 |
}
|
30 |
|
31 |
function getAll() {
|
32 |
-
$collection = NewsletterTemplate::findMany();
|
33 |
$templates = array_map(function($item) {
|
34 |
return $item->asArray();
|
35 |
}, $collection);
|
29 |
}
|
30 |
|
31 |
function getAll() {
|
32 |
+
$collection = NewsletterTemplate::orderByDesc('created_at')->orderByAsc('name')->findMany();
|
33 |
$templates = array_map(function($item) {
|
34 |
return $item->asArray();
|
35 |
}, $collection);
|
lib/API/JSON/v1/Subscribers.php
CHANGED
@@ -10,10 +10,13 @@ use MailPoet\Form\Util\FieldNameObfuscator;
|
|
10 |
use MailPoet\Models\Form;
|
11 |
use MailPoet\Models\StatisticsForms;
|
12 |
use MailPoet\Models\Subscriber;
|
|
|
13 |
|
14 |
if(!defined('ABSPATH')) exit;
|
15 |
|
16 |
class Subscribers extends APIEndpoint {
|
|
|
|
|
17 |
public $permissions = array(
|
18 |
'global' => AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
19 |
'methods' => array('subscribe' => AccessControl::NO_ACCESS_RESTRICTION)
|
@@ -94,6 +97,19 @@ class Subscribers extends APIEndpoint {
|
|
94 |
$form_fields = $form->getFieldList();
|
95 |
$data = array_intersect_key($data, array_flip($form_fields));
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
$subscriber = Subscriber::subscribe($data, $segment_ids);
|
98 |
$errors = $subscriber->getErrors();
|
99 |
|
10 |
use MailPoet\Models\Form;
|
11 |
use MailPoet\Models\StatisticsForms;
|
12 |
use MailPoet\Models\Subscriber;
|
13 |
+
use MailPoet\Util\Helpers;
|
14 |
|
15 |
if(!defined('ABSPATH')) exit;
|
16 |
|
17 |
class Subscribers extends APIEndpoint {
|
18 |
+
const SUBSCRIPTION_LIMIT_COOLDOWN = 60;
|
19 |
+
|
20 |
public $permissions = array(
|
21 |
'global' => AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
22 |
'methods' => array('subscribe' => AccessControl::NO_ACCESS_RESTRICTION)
|
97 |
$form_fields = $form->getFieldList();
|
98 |
$data = array_intersect_key($data, array_flip($form_fields));
|
99 |
|
100 |
+
// make sure we don't allow too many subscriptions with the same ip address
|
101 |
+
$subscription_count = Subscriber::where(
|
102 |
+
'subscribed_ip',
|
103 |
+
Helpers::getIP()
|
104 |
+
)->whereRaw(
|
105 |
+
'(TIME_TO_SEC(TIMEDIFF(NOW(), created_at)) < ? OR TIME_TO_SEC(TIMEDIFF(NOW(), updated_at)) < ?)',
|
106 |
+
array(self::SUBSCRIPTION_LIMIT_COOLDOWN, self::SUBSCRIPTION_LIMIT_COOLDOWN)
|
107 |
+
)->count();
|
108 |
+
|
109 |
+
if($subscription_count > 0) {
|
110 |
+
throw new \Exception(__('You need to wait before subscribing again.', 'mailpoet'));
|
111 |
+
}
|
112 |
+
|
113 |
$subscriber = Subscriber::subscribe($data, $segment_ids);
|
114 |
$errors = $subscriber->getErrors();
|
115 |
|
lib/Config/AccessControl.php
CHANGED
@@ -8,26 +8,25 @@ if(!defined('ABSPATH')) exit;
|
|
8 |
require_once(ABSPATH . 'wp-includes/pluggable.php');
|
9 |
|
10 |
class AccessControl {
|
11 |
-
const PERMISSION_ACCESS_PLUGIN_ADMIN = '
|
12 |
-
const PERMISSION_MANAGE_SETTINGS = '
|
13 |
-
const PERMISSION_MANAGE_EMAILS = '
|
14 |
-
const PERMISSION_MANAGE_SUBSCRIBERS = '
|
15 |
-
const PERMISSION_MANAGE_FORMS = '
|
16 |
-
const PERMISSION_MANAGE_SEGMENTS = '
|
17 |
-
const
|
18 |
-
const NO_ACCESS_RESTRICTION = 'no_access_restriction';
|
19 |
|
20 |
public $permissions;
|
21 |
-
public $
|
22 |
public $user_capabilities;
|
23 |
|
24 |
function __construct() {
|
25 |
-
$this->permissions =
|
26 |
$this->user_roles = $this->getUserRoles();
|
27 |
$this->user_capabilities = $this->getUserCapabilities();
|
28 |
}
|
29 |
|
30 |
-
|
31 |
return array(
|
32 |
self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPHooks::applyFilters(
|
33 |
'mailpoet_permission_access_plugin_admin',
|
@@ -67,12 +66,17 @@ class AccessControl {
|
|
67 |
'administrator'
|
68 |
)
|
69 |
),
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
),
|
|
|
|
|
|
|
|
|
|
|
76 |
);
|
77 |
}
|
78 |
|
@@ -94,11 +98,12 @@ class AccessControl {
|
|
94 |
|
95 |
function validatePermission($permission) {
|
96 |
if($permission === self::NO_ACCESS_RESTRICTION) return true;
|
97 |
-
|
98 |
-
|
99 |
-
$
|
100 |
-
|
101 |
-
|
102 |
-
|
|
|
103 |
}
|
104 |
-
}
|
8 |
require_once(ABSPATH . 'wp-includes/pluggable.php');
|
9 |
|
10 |
class AccessControl {
|
11 |
+
const PERMISSION_ACCESS_PLUGIN_ADMIN = 'mailpoet_access_plugin_admin';
|
12 |
+
const PERMISSION_MANAGE_SETTINGS = 'mailpoet_manage_settings';
|
13 |
+
const PERMISSION_MANAGE_EMAILS = 'mailpoet_manage_emails';
|
14 |
+
const PERMISSION_MANAGE_SUBSCRIBERS = 'mailpoet_manage_subscribers';
|
15 |
+
const PERMISSION_MANAGE_FORMS = 'mailpoet_manage_forms';
|
16 |
+
const PERMISSION_MANAGE_SEGMENTS = 'mailpoet_manage_segments';
|
17 |
+
const NO_ACCESS_RESTRICTION = 'mailpoet_no_access_restriction';
|
|
|
18 |
|
19 |
public $permissions;
|
20 |
+
public $user_roles;
|
21 |
public $user_capabilities;
|
22 |
|
23 |
function __construct() {
|
24 |
+
$this->permissions = self::getDefaultPermissions();
|
25 |
$this->user_roles = $this->getUserRoles();
|
26 |
$this->user_capabilities = $this->getUserCapabilities();
|
27 |
}
|
28 |
|
29 |
+
static function getDefaultPermissions() {
|
30 |
return array(
|
31 |
self::PERMISSION_ACCESS_PLUGIN_ADMIN => WPHooks::applyFilters(
|
32 |
'mailpoet_permission_access_plugin_admin',
|
66 |
'administrator'
|
67 |
)
|
68 |
),
|
69 |
+
);
|
70 |
+
}
|
71 |
+
|
72 |
+
static function getPermissionLabels() {
|
73 |
+
return array(
|
74 |
+
self::PERMISSION_ACCESS_PLUGIN_ADMIN => __('Admin menu item', 'mailpoet'),
|
75 |
+
self::PERMISSION_MANAGE_SETTINGS => __('Manage settings', 'mailpoet'),
|
76 |
+
self::PERMISSION_MANAGE_EMAILS => __('Manage emails', 'mailpoet'),
|
77 |
+
self::PERMISSION_MANAGE_SUBSCRIBERS => __('Manage subscribers', 'mailpoet'),
|
78 |
+
self::PERMISSION_MANAGE_FORMS => __('Manage forms', 'mailpoet'),
|
79 |
+
self::PERMISSION_MANAGE_SEGMENTS => __('Manage segments', 'mailpoet'),
|
80 |
);
|
81 |
}
|
82 |
|
98 |
|
99 |
function validatePermission($permission) {
|
100 |
if($permission === self::NO_ACCESS_RESTRICTION) return true;
|
101 |
+
foreach($this->user_roles as $role) {
|
102 |
+
$role_object = get_role($role);
|
103 |
+
if($role_object && $role_object->has_cap($permission)) {
|
104 |
+
return true;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
return false;
|
108 |
}
|
109 |
+
}
|
lib/Config/Activator.php
CHANGED
@@ -14,10 +14,16 @@ class Activator {
|
|
14 |
$populator = new Populator();
|
15 |
$populator->up();
|
16 |
Setting::setValue('db_version', Env::$version);
|
|
|
|
|
|
|
17 |
}
|
18 |
|
19 |
function deactivate() {
|
20 |
$migrator = new Migrator();
|
21 |
$migrator->down();
|
|
|
|
|
|
|
22 |
}
|
23 |
}
|
14 |
$populator = new Populator();
|
15 |
$populator->up();
|
16 |
Setting::setValue('db_version', Env::$version);
|
17 |
+
|
18 |
+
$caps = new Capabilities();
|
19 |
+
$caps->setupWPCapabilities();
|
20 |
}
|
21 |
|
22 |
function deactivate() {
|
23 |
$migrator = new Migrator();
|
24 |
$migrator->down();
|
25 |
+
|
26 |
+
$caps = new Capabilities();
|
27 |
+
$caps->removeWPCapabilities();
|
28 |
}
|
29 |
}
|
lib/Config/Capabilities.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace MailPoet\Config;
|
4 |
+
|
5 |
+
use MailPoet\WP\Hooks;
|
6 |
+
|
7 |
+
class Capabilities {
|
8 |
+
const MEMBERS_CAP_GROUP_NAME = 'mailpoet';
|
9 |
+
|
10 |
+
private $renderer = null;
|
11 |
+
|
12 |
+
function __construct($renderer = null) {
|
13 |
+
if($renderer !== null) {
|
14 |
+
$this->renderer = $renderer;
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
function init() {
|
19 |
+
$this->setupMembersCapabilities();
|
20 |
+
}
|
21 |
+
|
22 |
+
function setupWPCapabilities() {
|
23 |
+
$permissions = AccessControl::getDefaultPermissions();
|
24 |
+
$role_objects = array();
|
25 |
+
foreach($permissions as $name => $roles) {
|
26 |
+
foreach($roles as $role) {
|
27 |
+
if(!isset($role_objects[$role])) {
|
28 |
+
$role_objects[$role] = get_role($role);
|
29 |
+
}
|
30 |
+
$role_objects[$role]->add_cap($name);
|
31 |
+
}
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
function removeWPCapabilities() {
|
36 |
+
$permissions = AccessControl::getDefaultPermissions();
|
37 |
+
$role_objects = array();
|
38 |
+
foreach($permissions as $name => $roles) {
|
39 |
+
foreach($roles as $role) {
|
40 |
+
if(!isset($role_objects[$role])) {
|
41 |
+
$role_objects[$role] = get_role($role);
|
42 |
+
}
|
43 |
+
$role_objects[$role]->remove_cap($name);
|
44 |
+
}
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
function setupMembersCapabilities() {
|
49 |
+
Hooks::addAction('admin_enqueue_scripts', array($this, 'enqueueMembersStyles'));
|
50 |
+
Hooks::addAction('members_register_cap_groups', array($this, 'registerMembersCapGroup'));
|
51 |
+
Hooks::addAction('members_register_caps', array($this, 'registerMembersCapabilities'));
|
52 |
+
}
|
53 |
+
|
54 |
+
function enqueueMembersStyles() {
|
55 |
+
wp_enqueue_style(
|
56 |
+
'mailpoet-admin-global',
|
57 |
+
Env::$assets_url . '/css/' . $this->renderer->getCssAsset('admin-global.css')
|
58 |
+
);
|
59 |
+
}
|
60 |
+
|
61 |
+
function registerMembersCapGroup() {
|
62 |
+
members_register_cap_group(
|
63 |
+
self::MEMBERS_CAP_GROUP_NAME,
|
64 |
+
array(
|
65 |
+
'label' => __('MailPoet', 'mailpoet'),
|
66 |
+
'caps' => array(),
|
67 |
+
'icon' => 'mailpoet-icon-logo',
|
68 |
+
'priority' => 30
|
69 |
+
)
|
70 |
+
);
|
71 |
+
}
|
72 |
+
|
73 |
+
function registerMembersCapabilities() {
|
74 |
+
$permissions = AccessControl::getPermissionLabels();
|
75 |
+
foreach($permissions as $name => $label) {
|
76 |
+
members_register_cap(
|
77 |
+
$name,
|
78 |
+
array(
|
79 |
+
'label' => $label,
|
80 |
+
'group' => self::MEMBERS_CAP_GROUP_NAME
|
81 |
+
)
|
82 |
+
);
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
lib/Config/Initializer.php
CHANGED
@@ -125,6 +125,7 @@ class Initializer {
|
|
125 |
$this->setupUpdater();
|
126 |
|
127 |
$this->setupLocalizer();
|
|
|
128 |
$this->setupMenu();
|
129 |
$this->setupShortcodes();
|
130 |
$this->setupImages();
|
@@ -152,9 +153,6 @@ class Initializer {
|
|
152 |
|
153 |
// if current db version and plugin version differ
|
154 |
if(version_compare($current_db_version, Env::$version) !== 0) {
|
155 |
-
if(!$this->access_control->validatePermission(AccessControl::PERMISSION_UPDATE_PLUGIN)) {
|
156 |
-
throw new \Exception(__('You do not have permission to activate/deactivate MailPoet plugin.', 'mailpoet'));
|
157 |
-
}
|
158 |
$this->runActivator();
|
159 |
}
|
160 |
}
|
@@ -189,6 +187,11 @@ class Initializer {
|
|
189 |
$localizer->init();
|
190 |
}
|
191 |
|
|
|
|
|
|
|
|
|
|
|
192 |
function setupMenu() {
|
193 |
$menu = new Menu($this->renderer, Env::$assets_url, $this->access_control);
|
194 |
$menu->init();
|
125 |
$this->setupUpdater();
|
126 |
|
127 |
$this->setupLocalizer();
|
128 |
+
$this->setupCapabilities();
|
129 |
$this->setupMenu();
|
130 |
$this->setupShortcodes();
|
131 |
$this->setupImages();
|
153 |
|
154 |
// if current db version and plugin version differ
|
155 |
if(version_compare($current_db_version, Env::$version) !== 0) {
|
|
|
|
|
|
|
156 |
$this->runActivator();
|
157 |
}
|
158 |
}
|
187 |
$localizer->init();
|
188 |
}
|
189 |
|
190 |
+
function setupCapabilities() {
|
191 |
+
$caps = new Capabilities($this->renderer);
|
192 |
+
$caps->init();
|
193 |
+
}
|
194 |
+
|
195 |
function setupMenu() {
|
196 |
$menu = new Menu($this->renderer, Env::$assets_url, $this->access_control);
|
197 |
$menu->init();
|
lib/Config/Menu.php
CHANGED
@@ -37,7 +37,6 @@ class Menu {
|
|
37 |
$this->renderer = $renderer;
|
38 |
$this->assets_url = $assets_url;
|
39 |
$this->access_control = $access_control;
|
40 |
-
$this->user_capability = $this->access_control->getUserFirstCapability();
|
41 |
$subscribers_feature = new SubscribersFeature();
|
42 |
$this->subscribers_over_limit = $subscribers_feature->check();
|
43 |
$this->checkMailPoetAPIKey();
|
@@ -70,7 +69,7 @@ class Menu {
|
|
70 |
add_menu_page(
|
71 |
'MailPoet',
|
72 |
'MailPoet',
|
73 |
-
|
74 |
self::MAIN_PAGE_SLUG,
|
75 |
null,
|
76 |
$this->assets_url . '/img/menu_icon.png',
|
@@ -78,186 +77,176 @@ class Menu {
|
|
78 |
);
|
79 |
|
80 |
// Emails page
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
);
|
93 |
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
}
|
119 |
|
120 |
// Forms page
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
);
|
133 |
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
}
|
159 |
|
160 |
// Subscribers page
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
);
|
173 |
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
}
|
212 |
|
213 |
// Segments page
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
);
|
226 |
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
}
|
239 |
|
240 |
// Settings page
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
);
|
253 |
-
}
|
254 |
|
255 |
// Help page
|
256 |
add_submenu_page(
|
257 |
self::MAIN_PAGE_SLUG,
|
258 |
$this->setPageTitle(__('Help', 'mailpoet')),
|
259 |
__('Help', 'mailpoet'),
|
260 |
-
|
261 |
'mailpoet-help',
|
262 |
array(
|
263 |
$this,
|
@@ -271,7 +260,7 @@ class Menu {
|
|
271 |
License::getLicense() ? true : self::MAIN_PAGE_SLUG,
|
272 |
$this->setPageTitle(__('Premium', 'mailpoet')),
|
273 |
__('Premium', 'mailpoet'),
|
274 |
-
|
275 |
'mailpoet-premium',
|
276 |
array(
|
277 |
$this,
|
@@ -284,7 +273,7 @@ class Menu {
|
|
284 |
true,
|
285 |
$this->setPageTitle(__('Welcome', 'mailpoet')),
|
286 |
__('Welcome', 'mailpoet'),
|
287 |
-
|
288 |
'mailpoet-welcome',
|
289 |
array(
|
290 |
$this,
|
@@ -297,7 +286,7 @@ class Menu {
|
|
297 |
true,
|
298 |
$this->setPageTitle(__('Update', 'mailpoet')),
|
299 |
__('Update', 'mailpoet'),
|
300 |
-
|
301 |
'mailpoet-update',
|
302 |
array(
|
303 |
$this,
|
@@ -310,7 +299,7 @@ class Menu {
|
|
310 |
true,
|
311 |
$this->setPageTitle(__('Migration', 'mailpoet')),
|
312 |
'',
|
313 |
-
|
314 |
'mailpoet-migration',
|
315 |
array(
|
316 |
$this,
|
@@ -422,6 +411,7 @@ class Menu {
|
|
422 |
'premium_key_valid' => !empty($this->premium_key_valid),
|
423 |
'mss_active' => Bridge::isMPSendingServiceEnabled(),
|
424 |
'mss_key_valid' => !empty($mp_api_key_valid),
|
|
|
425 |
'pages' => Pages::getAll(),
|
426 |
'flags' => $flags,
|
427 |
'current_user' => wp_get_current_user(),
|
@@ -658,7 +648,7 @@ class Menu {
|
|
658 |
true,
|
659 |
'MailPoet',
|
660 |
'MailPoet',
|
661 |
-
|
662 |
$_REQUEST['page'],
|
663 |
array(
|
664 |
__CLASS__,
|
37 |
$this->renderer = $renderer;
|
38 |
$this->assets_url = $assets_url;
|
39 |
$this->access_control = $access_control;
|
|
|
40 |
$subscribers_feature = new SubscribersFeature();
|
41 |
$this->subscribers_over_limit = $subscribers_feature->check();
|
42 |
$this->checkMailPoetAPIKey();
|
69 |
add_menu_page(
|
70 |
'MailPoet',
|
71 |
'MailPoet',
|
72 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
73 |
self::MAIN_PAGE_SLUG,
|
74 |
null,
|
75 |
$this->assets_url . '/img/menu_icon.png',
|
77 |
);
|
78 |
|
79 |
// Emails page
|
80 |
+
$newsletters_page = add_submenu_page(
|
81 |
+
self::MAIN_PAGE_SLUG,
|
82 |
+
$this->setPageTitle(__('Emails', 'mailpoet')),
|
83 |
+
__('Emails', 'mailpoet'),
|
84 |
+
AccessControl::PERMISSION_MANAGE_EMAILS,
|
85 |
+
self::MAIN_PAGE_SLUG,
|
86 |
+
array(
|
87 |
+
$this,
|
88 |
+
'newsletters'
|
89 |
+
)
|
90 |
+
);
|
|
|
91 |
|
92 |
+
// add limit per page to screen options
|
93 |
+
add_action('load-' . $newsletters_page, function() {
|
94 |
+
add_screen_option('per_page', array(
|
95 |
+
'label' => _x(
|
96 |
+
'Number of newsletters per page',
|
97 |
+
'newsletters per page (screen options)',
|
98 |
+
'mailpoet'
|
99 |
+
),
|
100 |
+
'option' => 'mailpoet_newsletters_per_page'
|
101 |
+
));
|
102 |
+
});
|
103 |
+
|
104 |
+
// newsletter editor
|
105 |
+
add_submenu_page(
|
106 |
+
true,
|
107 |
+
$this->setPageTitle(__('Newsletter', 'mailpoet')),
|
108 |
+
__('Newsletter Editor', 'mailpoet'),
|
109 |
+
AccessControl::PERMISSION_MANAGE_EMAILS,
|
110 |
+
'mailpoet-newsletter-editor',
|
111 |
+
array(
|
112 |
+
$this,
|
113 |
+
'newletterEditor'
|
114 |
+
)
|
115 |
+
);
|
|
|
116 |
|
117 |
// Forms page
|
118 |
+
$forms_page = add_submenu_page(
|
119 |
+
self::MAIN_PAGE_SLUG,
|
120 |
+
$this->setPageTitle(__('Forms', 'mailpoet')),
|
121 |
+
__('Forms', 'mailpoet'),
|
122 |
+
AccessControl::PERMISSION_MANAGE_FORMS,
|
123 |
+
'mailpoet-forms',
|
124 |
+
array(
|
125 |
+
$this,
|
126 |
+
'forms'
|
127 |
+
)
|
128 |
+
);
|
|
|
129 |
|
130 |
+
// add limit per page to screen options
|
131 |
+
add_action('load-' . $forms_page, function() {
|
132 |
+
add_screen_option('per_page', array(
|
133 |
+
'label' => _x(
|
134 |
+
'Number of forms per page',
|
135 |
+
'forms per page (screen options)',
|
136 |
+
'mailpoet'
|
137 |
+
),
|
138 |
+
'option' => 'mailpoet_forms_per_page'
|
139 |
+
));
|
140 |
+
});
|
141 |
+
|
142 |
+
// form editor
|
143 |
+
add_submenu_page(
|
144 |
+
true,
|
145 |
+
$this->setPageTitle(__('Form Editor', 'mailpoet')),
|
146 |
+
__('Form Editor', 'mailpoet'),
|
147 |
+
AccessControl::PERMISSION_MANAGE_FORMS,
|
148 |
+
'mailpoet-form-editor',
|
149 |
+
array(
|
150 |
+
$this,
|
151 |
+
'formEditor'
|
152 |
+
)
|
153 |
+
);
|
|
|
154 |
|
155 |
// Subscribers page
|
156 |
+
$subscribers_page = add_submenu_page(
|
157 |
+
self::MAIN_PAGE_SLUG,
|
158 |
+
$this->setPageTitle(__('Subscribers', 'mailpoet')),
|
159 |
+
__('Subscribers', 'mailpoet'),
|
160 |
+
AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
161 |
+
'mailpoet-subscribers',
|
162 |
+
array(
|
163 |
+
$this,
|
164 |
+
'subscribers'
|
165 |
+
)
|
166 |
+
);
|
|
|
167 |
|
168 |
+
// add limit per page to screen options
|
169 |
+
add_action('load-' . $subscribers_page, function() {
|
170 |
+
add_screen_option('per_page', array(
|
171 |
+
'label' => _x(
|
172 |
+
'Number of subscribers per page',
|
173 |
+
'subscribers per page (screen options)',
|
174 |
+
'mailpoet'
|
175 |
+
),
|
176 |
+
'option' => 'mailpoet_subscribers_per_page'
|
177 |
+
));
|
178 |
+
});
|
179 |
+
|
180 |
+
// import
|
181 |
+
add_submenu_page(
|
182 |
+
'admin.php?page=mailpoet-subscribers',
|
183 |
+
$this->setPageTitle(__('Import', 'mailpoet')),
|
184 |
+
__('Import', 'mailpoet'),
|
185 |
+
AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
186 |
+
'mailpoet-import',
|
187 |
+
array(
|
188 |
+
$this,
|
189 |
+
'import'
|
190 |
+
)
|
191 |
+
);
|
192 |
|
193 |
+
// export
|
194 |
+
add_submenu_page(
|
195 |
+
true,
|
196 |
+
$this->setPageTitle(__('Export', 'mailpoet')),
|
197 |
+
__('Export', 'mailpoet'),
|
198 |
+
AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
199 |
+
'mailpoet-export',
|
200 |
+
array(
|
201 |
+
$this,
|
202 |
+
'export'
|
203 |
+
)
|
204 |
+
);
|
|
|
205 |
|
206 |
// Segments page
|
207 |
+
$segments_page = add_submenu_page(
|
208 |
+
self::MAIN_PAGE_SLUG,
|
209 |
+
$this->setPageTitle(__('Lists', 'mailpoet')),
|
210 |
+
__('Lists', 'mailpoet'),
|
211 |
+
AccessControl::PERMISSION_MANAGE_SEGMENTS,
|
212 |
+
'mailpoet-segments',
|
213 |
+
array(
|
214 |
+
$this,
|
215 |
+
'segments'
|
216 |
+
)
|
217 |
+
);
|
|
|
218 |
|
219 |
+
// add limit per page to screen options
|
220 |
+
add_action('load-' . $segments_page, function() {
|
221 |
+
add_screen_option('per_page', array(
|
222 |
+
'label' => _x(
|
223 |
+
'Number of segments per page',
|
224 |
+
'segments per page (screen options)',
|
225 |
+
'mailpoet'
|
226 |
+
),
|
227 |
+
'option' => 'mailpoet_segments_per_page'
|
228 |
+
));
|
229 |
+
});
|
|
|
230 |
|
231 |
// Settings page
|
232 |
+
add_submenu_page(
|
233 |
+
self::MAIN_PAGE_SLUG,
|
234 |
+
$this->setPageTitle(__('Settings', 'mailpoet')),
|
235 |
+
__('Settings', 'mailpoet'),
|
236 |
+
AccessControl::PERMISSION_MANAGE_SETTINGS,
|
237 |
+
'mailpoet-settings',
|
238 |
+
array(
|
239 |
+
$this,
|
240 |
+
'settings'
|
241 |
+
)
|
242 |
+
);
|
|
|
|
|
243 |
|
244 |
// Help page
|
245 |
add_submenu_page(
|
246 |
self::MAIN_PAGE_SLUG,
|
247 |
$this->setPageTitle(__('Help', 'mailpoet')),
|
248 |
__('Help', 'mailpoet'),
|
249 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
250 |
'mailpoet-help',
|
251 |
array(
|
252 |
$this,
|
260 |
License::getLicense() ? true : self::MAIN_PAGE_SLUG,
|
261 |
$this->setPageTitle(__('Premium', 'mailpoet')),
|
262 |
__('Premium', 'mailpoet'),
|
263 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
264 |
'mailpoet-premium',
|
265 |
array(
|
266 |
$this,
|
273 |
true,
|
274 |
$this->setPageTitle(__('Welcome', 'mailpoet')),
|
275 |
__('Welcome', 'mailpoet'),
|
276 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
277 |
'mailpoet-welcome',
|
278 |
array(
|
279 |
$this,
|
286 |
true,
|
287 |
$this->setPageTitle(__('Update', 'mailpoet')),
|
288 |
__('Update', 'mailpoet'),
|
289 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
290 |
'mailpoet-update',
|
291 |
array(
|
292 |
$this,
|
299 |
true,
|
300 |
$this->setPageTitle(__('Migration', 'mailpoet')),
|
301 |
'',
|
302 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
303 |
'mailpoet-migration',
|
304 |
array(
|
305 |
$this,
|
411 |
'premium_key_valid' => !empty($this->premium_key_valid),
|
412 |
'mss_active' => Bridge::isMPSendingServiceEnabled(),
|
413 |
'mss_key_valid' => !empty($mp_api_key_valid),
|
414 |
+
'members_plugin_active' => is_plugin_active('members/members.php'),
|
415 |
'pages' => Pages::getAll(),
|
416 |
'flags' => $flags,
|
417 |
'current_user' => wp_get_current_user(),
|
648 |
true,
|
649 |
'MailPoet',
|
650 |
'MailPoet',
|
651 |
+
AccessControl::PERMISSION_ACCESS_PLUGIN_ADMIN,
|
652 |
$_REQUEST['page'],
|
653 |
array(
|
654 |
__CLASS__,
|
lib/Models/Subscriber.php
CHANGED
@@ -14,7 +14,6 @@ class Subscriber extends Model {
|
|
14 |
const STATUS_UNSUBSCRIBED = 'unsubscribed';
|
15 |
const STATUS_UNCONFIRMED = 'unconfirmed';
|
16 |
const STATUS_BOUNCED = 'bounced';
|
17 |
-
const SUBSCRIPTION_LIMIT_COOLDOWN = 60;
|
18 |
const SUBSCRIBER_TOKEN_LENGTH = 6;
|
19 |
|
20 |
function __construct() {
|
@@ -175,22 +174,7 @@ class Subscriber extends Model {
|
|
175 |
'signup_confirmation.enabled'
|
176 |
);
|
177 |
|
178 |
-
$subscriber_data['subscribed_ip'] = (
|
179 |
-
? $_SERVER['REMOTE_ADDR']
|
180 |
-
: null;
|
181 |
-
|
182 |
-
// make sure we don't allow too many subscriptions with the same ip address
|
183 |
-
$subscription_count = Subscriber::where(
|
184 |
-
'subscribed_ip',
|
185 |
-
$subscriber_data['subscribed_ip']
|
186 |
-
)->whereRaw(
|
187 |
-
'TIME_TO_SEC(TIMEDIFF(NOW(), created_at)) < ?',
|
188 |
-
self::SUBSCRIPTION_LIMIT_COOLDOWN
|
189 |
-
)->count();
|
190 |
-
|
191 |
-
if($subscription_count > 0) {
|
192 |
-
throw new \Exception(__('You need to wait before subscribing again.', 'mailpoet'));
|
193 |
-
}
|
194 |
|
195 |
$subscriber = self::findOne($subscriber_data['email']);
|
196 |
|
@@ -205,6 +189,7 @@ class Subscriber extends Model {
|
|
205 |
} else {
|
206 |
// store subscriber data to be updated after confirmation
|
207 |
$subscriber->setUnconfirmedData($subscriber_data);
|
|
|
208 |
}
|
209 |
|
210 |
// restore trashed subscriber
|
14 |
const STATUS_UNSUBSCRIBED = 'unsubscribed';
|
15 |
const STATUS_UNCONFIRMED = 'unconfirmed';
|
16 |
const STATUS_BOUNCED = 'bounced';
|
|
|
17 |
const SUBSCRIBER_TOKEN_LENGTH = 6;
|
18 |
|
19 |
function __construct() {
|
174 |
'signup_confirmation.enabled'
|
175 |
);
|
176 |
|
177 |
+
$subscriber_data['subscribed_ip'] = Helpers::getIP();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
|
179 |
$subscriber = self::findOne($subscriber_data['email']);
|
180 |
|
189 |
} else {
|
190 |
// store subscriber data to be updated after confirmation
|
191 |
$subscriber->setUnconfirmedData($subscriber_data);
|
192 |
+
$subscriber->setExpr('updated_at', 'NOW()');
|
193 |
}
|
194 |
|
195 |
// restore trashed subscriber
|
lib/Segments/WP.php
CHANGED
@@ -80,6 +80,7 @@ class WP {
|
|
80 |
|
81 |
static function synchronizeUsers() {
|
82 |
|
|
|
83 |
self::updateSubscribersEmails();
|
84 |
self::insertSubscribers();
|
85 |
self::removeFromTrash();
|
@@ -92,6 +93,17 @@ class WP {
|
|
92 |
return true;
|
93 |
}
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
private static function updateSubscribersEmails() {
|
96 |
global $wpdb;
|
97 |
$subscribers_table = Subscriber::$_table;
|
80 |
|
81 |
static function synchronizeUsers() {
|
82 |
|
83 |
+
self::updateSubscriberWPUserIds();
|
84 |
self::updateSubscribersEmails();
|
85 |
self::insertSubscribers();
|
86 |
self::removeFromTrash();
|
93 |
return true;
|
94 |
}
|
95 |
|
96 |
+
private static function updateSubscriberWPUserIds() {
|
97 |
+
global $wpdb;
|
98 |
+
$subscribers_table = Subscriber::$_table;
|
99 |
+
Subscriber::raw_execute(sprintf('
|
100 |
+
UPDATE IGNORE %s mps
|
101 |
+
JOIN %s as wu ON mps.email = wu.user_email
|
102 |
+
SET mps.wp_user_id = wu.ID
|
103 |
+
WHERE mps.wp_user_id IS NULL
|
104 |
+
', $subscribers_table, $wpdb->users));
|
105 |
+
}
|
106 |
+
|
107 |
private static function updateSubscribersEmails() {
|
108 |
global $wpdb;
|
109 |
$subscribers_table = Subscriber::$_table;
|
lib/Subscription/Pages.php
CHANGED
@@ -64,7 +64,7 @@ class Pages {
|
|
64 |
$subscriber_data = $this->subscriber->getUnconfirmedData();
|
65 |
|
66 |
$this->subscriber->status = Subscriber::STATUS_SUBSCRIBED;
|
67 |
-
$this->subscriber->confirmed_ip = (
|
68 |
$this->subscriber->setExpr('confirmed_at', 'NOW()');
|
69 |
$this->subscriber->unconfirmed_data = null;
|
70 |
$this->subscriber->save();
|
64 |
$subscriber_data = $this->subscriber->getUnconfirmedData();
|
65 |
|
66 |
$this->subscriber->status = Subscriber::STATUS_SUBSCRIBED;
|
67 |
+
$this->subscriber->confirmed_ip = Helpers::getIP();
|
68 |
$this->subscriber->setExpr('confirmed_at', 'NOW()');
|
69 |
$this->subscriber->unconfirmed_data = null;
|
70 |
$this->subscriber->save();
|
lib/Util/Helpers.php
CHANGED
@@ -146,4 +146,9 @@ class Helpers {
|
|
146 |
return explode(self::DIVIDER, $object);
|
147 |
}
|
148 |
|
|
|
|
|
|
|
|
|
|
|
149 |
}
|
146 |
return explode(self::DIVIDER, $object);
|
147 |
}
|
148 |
|
149 |
+
static function getIP() {
|
150 |
+
return (isset($_SERVER['REMOTE_ADDR']))
|
151 |
+
? $_SERVER['REMOTE_ADDR']
|
152 |
+
: null;
|
153 |
+
}
|
154 |
}
|
mailpoet.php
CHANGED
@@ -4,7 +4,7 @@ if(!defined('ABSPATH')) exit;
|
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (new)
|
7 |
-
* Version: 3.0.
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
@@ -12,7 +12,6 @@ if(!defined('ABSPATH')) exit;
|
|
12 |
* Requires at least: 4.6
|
13 |
* Tested up to: 4.8
|
14 |
*
|
15 |
-
* Text Domain: mailpoet
|
16 |
* Domain Path: /lang/
|
17 |
*
|
18 |
* @package WordPress
|
@@ -21,7 +20,7 @@ if(!defined('ABSPATH')) exit;
|
|
21 |
*/
|
22 |
|
23 |
$mailpoet_plugin = array(
|
24 |
-
'version' => '3.0.
|
25 |
'filename' => __FILE__,
|
26 |
'path' => dirname(__FILE__),
|
27 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (new)
|
7 |
+
* Version: 3.0.2
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
12 |
* Requires at least: 4.6
|
13 |
* Tested up to: 4.8
|
14 |
*
|
|
|
15 |
* Domain Path: /lang/
|
16 |
*
|
17 |
* @package WordPress
|
20 |
*/
|
21 |
|
22 |
$mailpoet_plugin = array(
|
23 |
+
'version' => '3.0.2',
|
24 |
'filename' => __FILE__,
|
25 |
'path' => dirname(__FILE__),
|
26 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: newsletter, email, welcome email, post notification, autoresponder, signup
|
|
4 |
Requires at least: 4.6
|
5 |
Tested up to: 4.8
|
6 |
Requires PHP: 5.3
|
7 |
-
Stable tag: 3.0.
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -114,6 +114,13 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
114 |
|
115 |
== Changelog ==
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
= 3.0.1 - 2017-09-26 =
|
118 |
* Added: images can be resized in newsletter editor;
|
119 |
* Fixed: scheduled newsletters that are unscheduled will not be mistakenly sent. Thx Georges in Provence;
|
4 |
Requires at least: 4.6
|
5 |
Tested up to: 4.8
|
6 |
Requires PHP: 5.3
|
7 |
+
Stable tag: 3.0.2
|
8 |
License: GPLv3
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
114 |
|
115 |
== Changelog ==
|
116 |
|
117 |
+
= 3.0.2 - 2017-10-03 =
|
118 |
+
* Improved: plugin capabilities can be managed with Members plugin;
|
119 |
+
* Improved: removes unsightly horizontal scrollbar in some parts of the newsletter editor;
|
120 |
+
* Improved: email templates to be displayed in order of last modification;
|
121 |
+
* Fixed: it's not possible to submit a subscription form multiple times with an existing e-mail address anymore. Thanks Suyog Palav and Bits of Freedom!
|
122 |
+
* Fixed: users subscribed before registering on a site are synchronized during WP users sync. Thanks Nicolas!
|
123 |
+
|
124 |
= 3.0.1 - 2017-09-26 =
|
125 |
* Added: images can be resized in newsletter editor;
|
126 |
* Fixed: scheduled newsletters that are unscheduled will not be mistakenly sent. Thx Georges in Provence;
|
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 ComposerAutoloaderInit80a9d6aa63279f2b4c07f332343fb652::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -51,6 +51,7 @@ return array(
|
|
51 |
'MailPoet\\Analytics\\Reporter' => $baseDir . '/lib/Analytics/Reporter.php',
|
52 |
'MailPoet\\Config\\AccessControl' => $baseDir . '/lib/Config/AccessControl.php',
|
53 |
'MailPoet\\Config\\Activator' => $baseDir . '/lib/Config/Activator.php',
|
|
|
54 |
'MailPoet\\Config\\Changelog' => $baseDir . '/lib/Config/Changelog.php',
|
55 |
'MailPoet\\Config\\Database' => $baseDir . '/lib/Config/Database.php',
|
56 |
'MailPoet\\Config\\DeferredAdminNotices' => $baseDir . '/lib/Config/DeferredAdminNotices.php',
|
51 |
'MailPoet\\Analytics\\Reporter' => $baseDir . '/lib/Analytics/Reporter.php',
|
52 |
'MailPoet\\Config\\AccessControl' => $baseDir . '/lib/Config/AccessControl.php',
|
53 |
'MailPoet\\Config\\Activator' => $baseDir . '/lib/Config/Activator.php',
|
54 |
+
'MailPoet\\Config\\Capabilities' => $baseDir . '/lib/Config/Capabilities.php',
|
55 |
'MailPoet\\Config\\Changelog' => $baseDir . '/lib/Config/Changelog.php',
|
56 |
'MailPoet\\Config\\Database' => $baseDir . '/lib/Config/Database.php',
|
57 |
'MailPoet\\Config\\DeferredAdminNotices' => $baseDir . '/lib/Config/DeferredAdminNotices.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 ComposerAutoloaderInitf2444e07caaed476ec8d2343d153c0ec
|
|
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 ComposerAutoloaderInitf2444e07caaed476ec8d2343d153c0ec
|
|
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 ComposerAutoloaderInit80a9d6aa63279f2b4c07f332343fb652
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit80a9d6aa63279f2b4c07f332343fb652', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit80a9d6aa63279f2b4c07f332343fb652', '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\ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::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\ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequire80a9d6aa63279f2b4c07f332343fb652($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequire80a9d6aa63279f2b4c07f332343fb652($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',
|
@@ -141,6 +141,7 @@ class ComposerStaticInitf2444e07caaed476ec8d2343d153c0ec
|
|
141 |
'MailPoet\\Analytics\\Reporter' => __DIR__ . '/../..' . '/lib/Analytics/Reporter.php',
|
142 |
'MailPoet\\Config\\AccessControl' => __DIR__ . '/../..' . '/lib/Config/AccessControl.php',
|
143 |
'MailPoet\\Config\\Activator' => __DIR__ . '/../..' . '/lib/Config/Activator.php',
|
|
|
144 |
'MailPoet\\Config\\Changelog' => __DIR__ . '/../..' . '/lib/Config/Changelog.php',
|
145 |
'MailPoet\\Config\\Database' => __DIR__ . '/../..' . '/lib/Config/Database.php',
|
146 |
'MailPoet\\Config\\DeferredAdminNotices' => __DIR__ . '/../..' . '/lib/Config/DeferredAdminNotices.php',
|
@@ -835,10 +836,10 @@ class ComposerStaticInitf2444e07caaed476ec8d2343d153c0ec
|
|
835 |
public static function getInitializer(ClassLoader $loader)
|
836 |
{
|
837 |
return \Closure::bind(function () use ($loader) {
|
838 |
-
$loader->prefixLengthsPsr4 =
|
839 |
-
$loader->prefixDirsPsr4 =
|
840 |
-
$loader->prefixesPsr0 =
|
841 |
-
$loader->classMap =
|
842 |
|
843 |
}, null, ClassLoader::class);
|
844 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
141 |
'MailPoet\\Analytics\\Reporter' => __DIR__ . '/../..' . '/lib/Analytics/Reporter.php',
|
142 |
'MailPoet\\Config\\AccessControl' => __DIR__ . '/../..' . '/lib/Config/AccessControl.php',
|
143 |
'MailPoet\\Config\\Activator' => __DIR__ . '/../..' . '/lib/Config/Activator.php',
|
144 |
+
'MailPoet\\Config\\Capabilities' => __DIR__ . '/../..' . '/lib/Config/Capabilities.php',
|
145 |
'MailPoet\\Config\\Changelog' => __DIR__ . '/../..' . '/lib/Config/Changelog.php',
|
146 |
'MailPoet\\Config\\Database' => __DIR__ . '/../..' . '/lib/Config/Database.php',
|
147 |
'MailPoet\\Config\\DeferredAdminNotices' => __DIR__ . '/../..' . '/lib/Config/DeferredAdminNotices.php',
|
836 |
public static function getInitializer(ClassLoader $loader)
|
837 |
{
|
838 |
return \Closure::bind(function () use ($loader) {
|
839 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::$prefixLengthsPsr4;
|
840 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::$prefixDirsPsr4;
|
841 |
+
$loader->prefixesPsr0 = ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::$prefixesPsr0;
|
842 |
+
$loader->classMap = ComposerStaticInit80a9d6aa63279f2b4c07f332343fb652::$classMap;
|
843 |
|
844 |
}, null, ClassLoader::class);
|
845 |
}
|
views/settings.html
CHANGED
@@ -19,7 +19,7 @@
|
|
19 |
<a class="nav-tab" href="#basics"><%= __('Basics') %></a>
|
20 |
<a class="nav-tab" href="#signup"><%= __('Sign-up Confirmation') %></a>
|
21 |
<a class="nav-tab" href="#advanced"><%= __('Advanced') %></a>
|
22 |
-
<a class="nav-tab" href="#premium"><%= __('
|
23 |
</h2>
|
24 |
|
25 |
<!-- sending method -->
|
19 |
<a class="nav-tab" href="#basics"><%= __('Basics') %></a>
|
20 |
<a class="nav-tab" href="#signup"><%= __('Sign-up Confirmation') %></a>
|
21 |
<a class="nav-tab" href="#advanced"><%= __('Advanced') %></a>
|
22 |
+
<a class="nav-tab" href="#premium"><%= __('Key Activation') %></a>
|
23 |
</h2>
|
24 |
|
25 |
<!-- sending method -->
|
views/settings/advanced.html
CHANGED
@@ -67,6 +67,27 @@
|
|
67 |
</p>
|
68 |
</td>
|
69 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
<!-- link tracking -->
|
71 |
<tr>
|
72 |
<th scope="row">
|
67 |
</p>
|
68 |
</td>
|
69 |
</tr>
|
70 |
+
<!-- roles and capabilities -->
|
71 |
+
<tr>
|
72 |
+
<th scope="row">
|
73 |
+
<%= __('Roles and capabilities') %>
|
74 |
+
<p class="description">
|
75 |
+
<%= __('Manage which WordPress roles access which features of MailPoet.') %>
|
76 |
+
</p>
|
77 |
+
</th>
|
78 |
+
<td>
|
79 |
+
<% if (members_plugin_active) %>
|
80 |
+
<p>
|
81 |
+
<a href="<%= admin_url('users.php?page=roles') %>"><%= __('Manage using the Members plugin') %></a>
|
82 |
+
</p>
|
83 |
+
<% else %>
|
84 |
+
<%= __('Install the plugin [link]Members[/link] (free) to manage permissions.')
|
85 |
+
|replaceLinkTags('https://wordpress.org/plugins/members/', {'target' : '_blank'})
|
86 |
+
|raw
|
87 |
+
%>
|
88 |
+
<% endif %>
|
89 |
+
</td>
|
90 |
+
</tr>
|
91 |
<!-- link tracking -->
|
92 |
<tr>
|
93 |
<th scope="row">
|
views/settings/premium.html
CHANGED
@@ -4,10 +4,10 @@
|
|
4 |
<tr>
|
5 |
<th scope="row">
|
6 |
<label for="mailpoet_premium_key">
|
7 |
-
<%= __('
|
8 |
</label>
|
9 |
<p class="description">
|
10 |
-
<%= __('This key is used
|
11 |
</p>
|
12 |
</th>
|
13 |
<td>
|
@@ -32,7 +32,7 @@
|
|
32 |
<div
|
33 |
class="mailpoet_premium_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.premium.premium_key) or premium_key_valid %> mailpoet_hidden<% endif %>"
|
34 |
>
|
35 |
-
<%= __('Your
|
36 |
</div>
|
37 |
<div
|
38 |
class="mailpoet_mss_key_valid mailpoet_success_item mailpoet_success<% if not(settings.mta.mailpoet_api_key) or not(mss_key_valid) %> mailpoet_hidden<% endif %>"
|
@@ -42,7 +42,7 @@
|
|
42 |
<div
|
43 |
class="mailpoet_mss_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.mta.mailpoet_api_key) or mss_key_valid %> mailpoet_hidden<% endif %>"
|
44 |
>
|
45 |
-
<%= __('Your MailPoet Sending Service
|
46 |
</div>
|
47 |
<div
|
48 |
class="mailpoet_premium_download mailpoet_spaced_block"
|
4 |
<tr>
|
5 |
<th scope="row">
|
6 |
<label for="mailpoet_premium_key">
|
7 |
+
<%= __('Activation Key') %>
|
8 |
</label>
|
9 |
<p class="description">
|
10 |
+
<%= __('This key is used to validate your free or paid subscription. Paying customers will enjoy automatic upgrades of their Premium plugin and access to faster support.') %>
|
11 |
</p>
|
12 |
</th>
|
13 |
<td>
|
32 |
<div
|
33 |
class="mailpoet_premium_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.premium.premium_key) or premium_key_valid %> mailpoet_hidden<% endif %>"
|
34 |
>
|
35 |
+
<%= __('Your key is not valid for the Premium plugin.') %>
|
36 |
</div>
|
37 |
<div
|
38 |
class="mailpoet_mss_key_valid mailpoet_success_item mailpoet_success<% if not(settings.mta.mailpoet_api_key) or not(mss_key_valid) %> mailpoet_hidden<% endif %>"
|
42 |
<div
|
43 |
class="mailpoet_mss_key_invalid mailpoet_error_item mailpoet_error<% if not(settings.mta.mailpoet_api_key) or mss_key_valid %> mailpoet_hidden<% endif %>"
|
44 |
>
|
45 |
+
<%= __('Your key is not valid for the MailPoet Sending Service.') %>
|
46 |
</div>
|
47 |
<div
|
48 |
class="mailpoet_premium_download mailpoet_spaced_block"
|
views/update.html
CHANGED
@@ -60,18 +60,8 @@
|
|
60 |
<div class="feature-section one-col mailpoet_centered">
|
61 |
<h2><%= __('Care to Give Your Opinion?') %></h2>
|
62 |
|
63 |
-
<
|
64 |
-
<
|
65 |
-
var _polldaddy = [] || _polldaddy;
|
66 |
-
_polldaddy.push( {
|
67 |
-
type: "iframe",
|
68 |
-
auto: "1",
|
69 |
-
domain: "mailpoet.polldaddy.com/s/",
|
70 |
-
id: "what-s-one-feature-that-s-missing-in-mailpoet",
|
71 |
-
placeholder: "pd_1505214143"
|
72 |
-
} );
|
73 |
-
(function(d,c,j){if(!document.getElementById(j)){var pd=d.createElement(c),s;pd.id=j;pd.src=('https:'==document.location.protocol)?'https://polldaddy.com/survey.js':'http://i0.poll.fm/survey.js';s=document.getElementsByTagName(c)[0];s.parentNode.insertBefore(pd,s);}}(document,'script','pd-embed'));
|
74 |
-
</script>
|
75 |
</div>
|
76 |
|
77 |
<hr>
|
60 |
<div class="feature-section one-col mailpoet_centered">
|
61 |
<h2><%= __('Care to Give Your Opinion?') %></h2>
|
62 |
|
63 |
+
<script type="text/javascript" charset="utf-8" src="https://static.polldaddy.com/p/9840615.js"></script>
|
64 |
+
<noscript><a href="https://polldaddy.com/poll/9840615/">How did you find out about our plugin?</a></noscript>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
</div>
|
66 |
|
67 |
<hr>
|