Version Description
Download this release
Release Info
Developer | danieliser |
Plugin | User Menus – Nav Menu Visibility |
Version | 1.2.6 |
Comparing to | |
See all releases |
Code changes from version 1.2.5 to 1.2.6
- assets/css/admin-general.css +0 -0
- assets/css/admin-general.css.map +0 -0
- assets/css/admin-general.min.css +0 -0
- assets/js/admin-general.js +4 -3
- assets/js/admin-general.min.js +1 -1
- assets/sass/admin-general.scss +0 -0
- freemius/LICENSE.txt +0 -0
- freemius/README.md +0 -0
- freemius/assets/css/admin/account.css +0 -0
- freemius/assets/css/admin/add-ons.css +0 -0
- freemius/assets/css/admin/affiliation.css +0 -0
- freemius/assets/css/admin/checkout.css +0 -0
- freemius/assets/css/admin/common.css +1 -1
- freemius/assets/css/admin/connect.css +1 -1
- freemius/assets/css/admin/debug.css +0 -0
- freemius/assets/css/admin/dialog-boxes.css +0 -0
- freemius/assets/css/admin/gdpr-optin-notice.css +0 -0
- freemius/assets/css/admin/index.php +0 -0
- freemius/assets/css/admin/plugins.css +0 -0
- freemius/assets/css/customizer.css +0 -0
- freemius/assets/css/index.php +0 -0
- freemius/assets/img/index.php +0 -0
- freemius/assets/img/plugin-icon.png +0 -0
- freemius/assets/img/theme-icon.png +0 -0
- freemius/assets/img/user-menus.png +0 -0
- freemius/assets/index.php +0 -0
- freemius/assets/js/index.php +0 -0
- freemius/assets/js/nojquery.ba-postmessage.js +0 -0
- freemius/assets/js/nojquery.ba-postmessage.min.js +0 -0
- freemius/assets/js/postmessage.js +0 -0
- freemius/config.php +0 -0
- freemius/includes/class-freemius-abstract.php +0 -0
- freemius/includes/class-freemius.php +79 -41
- freemius/includes/class-fs-admin-notices.php +0 -0
- freemius/includes/class-fs-api.php +0 -0
- freemius/includes/class-fs-logger.php +2 -2
- freemius/includes/class-fs-options.php +0 -0
- freemius/includes/class-fs-plugin-updater.php +0 -0
- freemius/includes/class-fs-security.php +0 -0
- freemius/includes/class-fs-storage.php +0 -0
- freemius/includes/class-fs-user-lock.php +0 -0
- freemius/includes/customizer/class-fs-customizer-support-section.php +0 -0
- freemius/includes/customizer/class-fs-customizer-upsell-control.php +0 -0
- freemius/includes/customizer/index.php +0 -0
- freemius/includes/debug/class-fs-debug-bar-panel.php +0 -0
- freemius/includes/debug/debug-bar-start.php +0 -0
- freemius/includes/debug/index.php +0 -0
- freemius/includes/entities/class-fs-affiliate-terms.php +0 -0
- freemius/includes/entities/class-fs-affiliate.php +0 -0
- freemius/includes/entities/class-fs-billing.php +0 -0
- freemius/includes/entities/class-fs-entity.php +0 -0
- freemius/includes/entities/class-fs-payment.php +0 -0
- freemius/includes/entities/class-fs-plugin-info.php +0 -0
- freemius/includes/entities/class-fs-plugin-license.php +0 -0
- freemius/includes/entities/class-fs-plugin-plan.php +0 -0
- freemius/includes/entities/class-fs-plugin-tag.php +0 -0
- freemius/includes/entities/class-fs-plugin.php +0 -0
- freemius/includes/entities/class-fs-pricing.php +0 -0
- freemius/includes/entities/class-fs-scope-entity.php +0 -0
- freemius/includes/entities/class-fs-site.php +17 -0
- freemius/includes/entities/class-fs-subscription.php +0 -0
- freemius/includes/entities/class-fs-user.php +0 -17
- freemius/includes/entities/index.php +0 -0
- freemius/includes/fs-core-functions.php +0 -0
- freemius/includes/fs-essential-functions.php +0 -0
- freemius/includes/fs-plugin-info-dialog.php +0 -0
- freemius/includes/i18n.php +0 -0
- freemius/includes/index.php +0 -0
- freemius/includes/l10n.php +0 -0
- freemius/includes/managers/class-fs-admin-menu-manager.php +0 -0
- freemius/includes/managers/class-fs-admin-notice-manager.php +0 -0
- freemius/includes/managers/class-fs-cache-manager.php +0 -0
- freemius/includes/managers/class-fs-gdpr-manager.php +0 -0
- freemius/includes/managers/class-fs-key-value-storage.php +0 -0
- freemius/includes/managers/class-fs-license-manager.php +0 -0
- freemius/includes/managers/class-fs-option-manager.php +0 -0
- freemius/includes/managers/class-fs-plan-manager.php +0 -0
- freemius/includes/managers/class-fs-plugin-manager.php +0 -0
- freemius/includes/managers/index.php +0 -0
- freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +0 -0
- freemius/includes/sdk/Exceptions/EmptyArgumentException.php +0 -0
- freemius/includes/sdk/Exceptions/Exception.php +0 -0
- freemius/includes/sdk/Exceptions/InvalidArgumentException.php +0 -0
- freemius/includes/sdk/Exceptions/OAuthException.php +0 -0
- freemius/includes/sdk/Exceptions/index.php +0 -0
- freemius/includes/sdk/FreemiusBase.php +0 -0
- freemius/includes/sdk/FreemiusWordPress.php +0 -0
- freemius/includes/sdk/LICENSE.txt +0 -0
- freemius/includes/sdk/index.php +0 -0
- freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +0 -0
- freemius/includes/supplements/fs-essential-functions-2.2.1.php +0 -0
- freemius/includes/supplements/index.php +0 -0
- freemius/index.php +0 -0
- freemius/languages/freemius-cs_CZ.mo +0 -0
- freemius/languages/freemius-da_DK.mo +0 -0
- freemius/languages/freemius-en.mo +0 -0
- freemius/languages/freemius-es_ES.mo +0 -0
- freemius/languages/freemius-fr_FR.mo +0 -0
- freemius/languages/freemius-he_IL.mo +0 -0
- freemius/languages/freemius-hu_HU.mo +0 -0
- freemius/languages/freemius-it_IT.mo +0 -0
- freemius/languages/freemius-ja.mo +0 -0
- freemius/languages/freemius-nl_NL.mo +0 -0
- freemius/languages/freemius-ru_RU.mo +0 -0
- freemius/languages/freemius-ta.mo +0 -0
- freemius/languages/freemius-zh_CN.mo +0 -0
- freemius/languages/freemius.pot +345 -313
- freemius/languages/index.php +0 -0
- freemius/package.json +1 -1
- freemius/require.php +0 -0
- freemius/start.php +3 -3
- freemius/templates/account.php +5 -3
- freemius/templates/account/billing.php +0 -0
- freemius/templates/account/index.php +0 -0
- freemius/templates/account/partials/activate-license-button.php +0 -0
- freemius/templates/account/partials/addon.php +0 -0
- freemius/templates/account/partials/deactivate-license-button.php +0 -0
- freemius/templates/account/partials/index.php +0 -0
- freemius/templates/account/partials/site.php +0 -0
- freemius/templates/account/payments.php +0 -0
- freemius/templates/add-ons.php +0 -0
- freemius/templates/add-trial-to-pricing.php +0 -0
- freemius/templates/admin-notice.php +0 -0
- freemius/templates/ajax-loader.php +0 -0
- freemius/templates/auto-installation.php +0 -0
- freemius/templates/checkout.php +0 -0
- freemius/templates/connect.php +49 -37
- freemius/templates/contact.php +0 -0
- freemius/templates/debug.php +0 -0
- freemius/templates/debug/api-calls.php +0 -0
- freemius/templates/debug/index.php +0 -0
- freemius/templates/debug/logger.php +0 -0
- freemius/templates/debug/plugins-themes-sync.php +0 -0
- freemius/templates/debug/scheduled-crons.php +0 -0
- freemius/templates/email.php +0 -0
- freemius/templates/firewall-issues-js.php +0 -0
- freemius/templates/forms/affiliation.php +0 -0
- freemius/templates/forms/data-debug-mode.php +0 -0
- freemius/templates/forms/deactivation/contact.php +0 -0
- freemius/templates/forms/deactivation/form.php +0 -0
- freemius/templates/forms/deactivation/index.php +0 -0
- freemius/templates/forms/deactivation/retry-skip.php +0 -0
- freemius/templates/forms/index.php +0 -0
- freemius/templates/forms/license-activation.php +3 -1
- freemius/templates/forms/optout.php +0 -0
- freemius/templates/forms/premium-versions-upgrade-handler.php +0 -0
- freemius/templates/forms/premium-versions-upgrade-metadata.php +0 -0
- freemius/templates/forms/resend-key.php +0 -0
- freemius/templates/forms/subscription-cancellation.php +0 -0
- freemius/templates/forms/trial-start.php +0 -0
- freemius/templates/forms/user-change.php +0 -0
- freemius/templates/gdpr-optin-js.php +0 -0
- freemius/templates/index.php +0 -0
- freemius/templates/js/index.php +0 -0
- freemius/templates/js/jquery.content-change.php +0 -0
- freemius/templates/js/open-license-activation.php +0 -0
- freemius/templates/js/style-premium-theme.php +0 -0
- freemius/templates/partials/index.php +0 -0
- freemius/templates/partials/network-activation.php +0 -0
- freemius/templates/plugin-icon.php +0 -0
- freemius/templates/plugin-info/description.php +0 -0
- freemius/templates/plugin-info/features.php +0 -0
- freemius/templates/plugin-info/index.php +0 -0
- freemius/templates/plugin-info/screenshots.php +0 -0
- freemius/templates/powered-by.php +0 -0
- freemius/templates/pricing.php +0 -0
- freemius/templates/secure-https-header.php +0 -0
- freemius/templates/sticky-admin-notice-js.php +0 -0
- freemius/templates/tabs-capture-js.php +0 -0
- freemius/templates/tabs.php +0 -0
- includes/classes/admin/menu-editor.php +66 -44
- includes/classes/admin/menu-importer.php +7 -6
- includes/classes/admin/menu-settings.php +65 -56
- includes/classes/admin/reviews.php +73 -64
- includes/classes/importer/menu.php +45 -31
- includes/classes/menu/item.php +16 -8
- includes/classes/menu/items.php +29 -30
- includes/classes/site/menus.php +17 -17
- includes/classes/user/codes.php +9 -2
- includes/classes/walker/nav-menu-edit-custom-fields-deprecated.php +9 -5
- includes/classes/walker/nav-menu-edit-custom-fields.php +10 -8
- languages/user-menus.pot +59 -45
- readme.md +13 -1
- readme.txt +21 -4
- user-menus.php +81 -45
assets/css/admin-general.css
CHANGED
File without changes
|
assets/css/admin-general.css.map
CHANGED
File without changes
|
assets/css/admin-general.min.css
CHANGED
File without changes
|
assets/js/admin-general.js
CHANGED
@@ -108,13 +108,14 @@
|
|
108 |
.on('click', '.jpum-user-codes > button', toggle_user_codes)
|
109 |
.on('click keypress', '.jpum-user-codes li > a', insert_user_code)
|
110 |
.on('click', reset_user_codes)
|
111 |
-
.on('menu-item-added', refresh_all_items)
|
112 |
-
.ready(refresh_all_items)
|
113 |
-
.ready(disable_register_menu_item);
|
114 |
|
115 |
// Add click event directly to submit buttons to prevent being prevented by default action.
|
116 |
$('.submit-add-to-menu').click(function () {
|
117 |
setTimeout(refresh_all_items, 1000);
|
118 |
});
|
119 |
|
|
|
|
|
|
|
120 |
}(jQuery, jQuery(document)));
|
108 |
.on('click', '.jpum-user-codes > button', toggle_user_codes)
|
109 |
.on('click keypress', '.jpum-user-codes li > a', insert_user_code)
|
110 |
.on('click', reset_user_codes)
|
111 |
+
.on('menu-item-added', refresh_all_items);
|
|
|
|
|
112 |
|
113 |
// Add click event directly to submit buttons to prevent being prevented by default action.
|
114 |
$('.submit-add-to-menu').click(function () {
|
115 |
setTimeout(refresh_all_items, 1000);
|
116 |
});
|
117 |
|
118 |
+
$(refresh_all_items);
|
119 |
+
$(disable_register_menu_item);
|
120 |
+
|
121 |
}(jQuery, jQuery(document)));
|
assets/js/admin-general.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(o){"use strict";function e(){var e=o(this),t=e.parents(".menu-item").find(".nav_item_options-redirect_url");"custom"==e.val()?t.slideDown():t.slideUp()}function t(){var e=o(this),t=e.parents(".menu-item").find(".nav_item_options-avatar_size");0<=e.val().indexOf("{avatar}")?t.slideDown():t.slideUp()}function n(){var e=o(this),t=e.parents(".menu-item"),n=t.find(".nav_item_options-can_see"),i=t.find(".nav_item_options-roles"),s=t.find(".jpum-user-codes");"logged_in"===e.val()?(n.slideDown(),i.slideDown(),t.addClass("show-insert-button"),s.fadeOut(0).fadeIn()):(n.slideUp(),i.slideUp(),s.fadeOut(function(){t.removeClass("show-insert-button")}))}function s(e){void 0!==e&&o(e.target).parents(".jpum-user-codes").length||o(".jpum-user-codes").removeClass("open")}function i(){o("input.edit-menu-item-title").each(function(){var e=o(this).parents("label"),t=_.template(o("#tmpl-jpum-user-codes").html());e.parents("p").find(".jpum-user-codes").length||e.after(t())}),o(".nav_item_options-redirect_type select").each(e),o(".nav_item_options-which_users select").each(n),o(".nav_item_options-which_users select").each(n),o("input.edit-menu-item-title").each(t)}jQuery(document).on("change",".nav_item_options-redirect_type select",e).on("change",".nav_item_options-which_users select",n).on("change keyup focusout","input.edit-menu-item-title",t).on("click",".jpum-user-codes > button",function(){o(this).parent().toggleClass("open")}).on("click keypress",".jpum-user-codes li > a",function(e){var t=o(this),n=t.parents("p").find("input"),i=n.val();e.which=e.which||e.keyCode,"keypress"===e.type&&13!==e.keyCode&&32!==e.keyCode||(n.val(i+"{"+t.data("code")+"}").trigger("change"),s(),e.preventDefault())}).on("click",s).on("menu-item-added",i).
|
1 |
+
!function(o){"use strict";function e(){var e=o(this),t=e.parents(".menu-item").find(".nav_item_options-redirect_url");"custom"==e.val()?t.slideDown():t.slideUp()}function t(){var e=o(this),t=e.parents(".menu-item").find(".nav_item_options-avatar_size");0<=e.val().indexOf("{avatar}")?t.slideDown():t.slideUp()}function n(){var e=o(this),t=e.parents(".menu-item"),n=t.find(".nav_item_options-can_see"),i=t.find(".nav_item_options-roles"),s=t.find(".jpum-user-codes");"logged_in"===e.val()?(n.slideDown(),i.slideDown(),t.addClass("show-insert-button"),s.fadeOut(0).fadeIn()):(n.slideUp(),i.slideUp(),s.fadeOut(function(){t.removeClass("show-insert-button")}))}function s(e){void 0!==e&&o(e.target).parents(".jpum-user-codes").length||o(".jpum-user-codes").removeClass("open")}function i(){o("input.edit-menu-item-title").each(function(){var e=o(this).parents("label"),t=_.template(o("#tmpl-jpum-user-codes").html());e.parents("p").find(".jpum-user-codes").length||e.after(t())}),o(".nav_item_options-redirect_type select").each(e),o(".nav_item_options-which_users select").each(n),o(".nav_item_options-which_users select").each(n),o("input.edit-menu-item-title").each(t)}jQuery(document).on("change",".nav_item_options-redirect_type select",e).on("change",".nav_item_options-which_users select",n).on("change keyup focusout","input.edit-menu-item-title",t).on("click",".jpum-user-codes > button",function(){o(this).parent().toggleClass("open")}).on("click keypress",".jpum-user-codes li > a",function(e){var t=o(this),n=t.parents("p").find("input"),i=n.val();e.which=e.which||e.keyCode,"keypress"===e.type&&13!==e.keyCode&&32!==e.keyCode||(n.val(i+"{"+t.data("code")+"}").trigger("change"),s(),e.preventDefault())}).on("click",s).on("menu-item-added",i),o(".submit-add-to-menu").click(function(){setTimeout(i,1e3)}),o(i),o(function(){var e=o(".user-menus-registration-disabled");e.length&&e.find('li:eq(1) input[type="checkbox"]').attr("disabled",!0)})}(jQuery);
|
assets/sass/admin-general.scss
CHANGED
File without changes
|
freemius/LICENSE.txt
CHANGED
File without changes
|
freemius/README.md
CHANGED
File without changes
|
freemius/assets/css/admin/account.css
CHANGED
File without changes
|
freemius/assets/css/admin/add-ons.css
CHANGED
File without changes
|
freemius/assets/css/admin/affiliation.css
CHANGED
File without changes
|
freemius/assets/css/admin/checkout.css
CHANGED
File without changes
|
freemius/assets/css/admin/common.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{position:relative;top:0;margin-top:10px;text-align:center}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{position:relative;display:inline-block;color:#ccc;text-shadow:0 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);background:#ececec;box-shadow:0 0 4px rgba(0,0,0,0.1),inset 0 1px 3px 0 rgba(0,0,0,0.1);cursor:pointer}.fs-switch span{display:inline-block;width:35px;text-transform:uppercase}.fs-switch .fs-toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background-color:#fff;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(1, #fff));background-image:-webkit-linear-gradient(top, #ececec, #fff);background-image:-moz-linear-gradient(top, #ececec, #fff);background-image:-ms-linear-gradient(top, #ececec, #fff);background-image:-o-linear-gradient(top, #ececec, #fff);background-image:linear-gradient(top, bottom, #ececec, #fff);box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);z-index:999;-moz-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-o-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-ms-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-webkit-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1)}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{top:8px;padding:4px 25px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round .fs-toggle{top:0;width:24px;height:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{top:0;width:18px;height:18px;-moz-border-radius:18px;-webkit-border-radius:18px;border-radius:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}.fs-switch-feedback{margin-left:10px}.fs-switch-feedback.success{color:#71ae00}.rtl .fs-switch-feedback{margin-left:0;margin-right:10px}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
|
2 |
-
.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width:
|
1 |
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}.theme-browser .theme .fs-premium-theme-badge-container{position:absolute;right:0;top:0}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge{position:relative;top:0;margin-top:10px;text-align:center}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-premium-theme-badge{font-size:1.1em}.theme-browser .theme .fs-premium-theme-badge-container .fs-badge.fs-beta-theme-badge{background:#00a0d2}.fs-switch{position:relative;display:inline-block;color:#ccc;text-shadow:0 1px 1px rgba(255,255,255,0.8);height:18px;padding:6px 6px 5px 6px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);background:#ececec;box-shadow:0 0 4px rgba(0,0,0,0.1),inset 0 1px 3px 0 rgba(0,0,0,0.1);cursor:pointer}.fs-switch span{display:inline-block;width:35px;text-transform:uppercase}.fs-switch .fs-toggle{position:absolute;top:1px;width:37px;height:25px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.3);border-radius:4px;background:#fff;background-color:#fff;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ececec), color-stop(1, #fff));background-image:-webkit-linear-gradient(top, #ececec, #fff);background-image:-moz-linear-gradient(top, #ececec, #fff);background-image:-ms-linear-gradient(top, #ececec, #fff);background-image:-o-linear-gradient(top, #ececec, #fff);background-image:linear-gradient(top, bottom, #ececec, #fff);box-shadow:inset 0 1px 0 0 rgba(255,255,255,0.5);z-index:999;-moz-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-o-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-ms-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);-webkit-transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1);transition:0.4s cubic-bezier(0.54, 1.6, 0.5, 1)}.fs-switch.fs-off .fs-toggle{left:2%}.fs-switch.fs-on .fs-toggle{left:54%}.fs-switch.fs-round{top:8px;padding:4px 25px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round .fs-toggle{top:0;width:24px;height:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px}.fs-switch.fs-round.fs-off .fs-toggle{left:-1px}.fs-switch.fs-round.fs-on{background:#0085ba}.fs-switch.fs-round.fs-on .fs-toggle{left:25px}.fs-switch.fs-small.fs-round{padding:1px 19px}.fs-switch.fs-small.fs-round .fs-toggle{top:0;width:18px;height:18px;-moz-border-radius:18px;-webkit-border-radius:18px;border-radius:18px}.fs-switch.fs-small.fs-round.fs-on .fs-toggle{left:19px}.fs-switch-feedback{margin-left:10px}.fs-switch-feedback.success{color:#71ae00}.rtl .fs-switch-feedback{margin-left:0;margin-right:10px}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}
|
2 |
+
.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 1250px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain;margin-bottom:-2px}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px}
|
freemius/assets/css/admin/connect.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions
|
1 |
+
#fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key .fs-sites-list-container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions>.fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li>i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li .fs-switch{float:right}#fs_connect .fs-permissions ul li .fs-permission-description{margin-left:55px}#fs_connect .fs-permissions ul li .fs-permission-description span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li .fs-permission-description p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{overflow:initial;height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.fs-multisite-options-container{margin-top:10px;border:1px solid #ccc;padding:5px}.fs-multisite-options-container a{text-decoration:none}.fs-multisite-options-container a:focus{box-shadow:none}.fs-multisite-options-container a.selected{font-weight:bold}.fs-multisite-options-container.fs-apply-on-all-sites{border:0 none;padding:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options{border-spacing:0}.fs-multisite-options-container.fs-apply-on-all-sites .fs-all-sites-options td:not(:first-child){display:none}.fs-multisite-options-container .fs-sites-list-container{display:none;overflow:auto}.fs-multisite-options-container .fs-sites-list-container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff !important;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:-17px;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left;text-transform:none !important}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right;left:auto;right:-17px}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li .fs-permission-description{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li .fs-switch{float:left}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}#license_issues_link{display:block;text-align:center;font-size:0.9em;margin-top:10px}
|
freemius/assets/css/admin/debug.css
CHANGED
File without changes
|
freemius/assets/css/admin/dialog-boxes.css
CHANGED
File without changes
|
freemius/assets/css/admin/gdpr-optin-notice.css
CHANGED
File without changes
|
freemius/assets/css/admin/index.php
CHANGED
File without changes
|
freemius/assets/css/admin/plugins.css
CHANGED
File without changes
|
freemius/assets/css/customizer.css
CHANGED
File without changes
|
freemius/assets/css/index.php
CHANGED
File without changes
|
freemius/assets/img/index.php
CHANGED
File without changes
|
freemius/assets/img/plugin-icon.png
CHANGED
File without changes
|
freemius/assets/img/theme-icon.png
CHANGED
File without changes
|
freemius/assets/img/user-menus.png
ADDED
Binary file
|
freemius/assets/index.php
CHANGED
File without changes
|
freemius/assets/js/index.php
CHANGED
File without changes
|
freemius/assets/js/nojquery.ba-postmessage.js
CHANGED
File without changes
|
freemius/assets/js/nojquery.ba-postmessage.min.js
CHANGED
File without changes
|
freemius/assets/js/postmessage.js
CHANGED
File without changes
|
freemius/config.php
CHANGED
File without changes
|
freemius/includes/class-freemius-abstract.php
CHANGED
File without changes
|
freemius/includes/class-freemius.php
CHANGED
@@ -384,6 +384,13 @@
|
|
384 |
* @var boolean|null
|
385 |
*/
|
386 |
private $_use_external_pricing = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
|
388 |
#endregion
|
389 |
|
@@ -5484,7 +5491,7 @@
|
|
5484 |
function is_extensions_tracking_allowed() {
|
5485 |
return ( true === $this->apply_filters(
|
5486 |
'is_extensions_tracking_allowed',
|
5487 |
-
$this->_storage->get( 'is_extensions_tracking_allowed',
|
5488 |
) );
|
5489 |
}
|
5490 |
|
@@ -5528,10 +5535,12 @@
|
|
5528 |
* @author Leo Fajardo (@leorw)
|
5529 |
* @since 2.3.2
|
5530 |
*
|
5531 |
-
* @param bool $is_enabled
|
5532 |
*/
|
5533 |
-
|
5534 |
-
|
|
|
|
|
5535 |
}
|
5536 |
|
5537 |
/**
|
@@ -6860,8 +6869,6 @@
|
|
6860 |
*/
|
6861 |
function _sync_cron_method( array $blog_ids, $current_blog_id = null ) {
|
6862 |
if ( $this->is_registered() ) {
|
6863 |
-
$this->sync_user_beta_mode();
|
6864 |
-
|
6865 |
if ( $this->has_paid_plan() ) {
|
6866 |
// Initiate background plan sync.
|
6867 |
$this->_sync_license( true, false, $current_blog_id );
|
@@ -7234,7 +7241,8 @@
|
|
7234 |
}
|
7235 |
|
7236 |
if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
|
7237 |
-
if ( ! $this->_anonymous_mode
|
|
|
7238 |
// Show notice for new plugin installations.
|
7239 |
$this->_admin_notices->add(
|
7240 |
sprintf(
|
@@ -7285,6 +7293,10 @@
|
|
7285 |
* @return bool
|
7286 |
*/
|
7287 |
private function should_add_sticky_optin_notice() {
|
|
|
|
|
|
|
|
|
7288 |
if ( fs_is_network_admin() ) {
|
7289 |
if ( ! $this->_is_network_active ) {
|
7290 |
return false;
|
@@ -13238,26 +13250,25 @@
|
|
13238 |
self::shoot_ajax_failure();
|
13239 |
}
|
13240 |
|
13241 |
-
$
|
13242 |
'',
|
13243 |
'put',
|
13244 |
array(
|
13245 |
-
'plugin_id' => $this->get_id(),
|
13246 |
'is_beta' => ( 'true' == $is_beta ),
|
13247 |
'fields' => 'is_beta'
|
13248 |
)
|
13249 |
);
|
13250 |
|
13251 |
-
if ( ! $this->is_api_result_entity( $
|
13252 |
self::shoot_ajax_failure(
|
13253 |
-
FS_Api::is_api_error_object( $
|
13254 |
-
$
|
13255 |
fs_text_inline( "An unknown error has occurred while trying to set the user's beta mode.", 'unknown-error-occurred', $this->get_slug() )
|
13256 |
);
|
13257 |
}
|
13258 |
|
13259 |
-
$this->
|
13260 |
-
$this->
|
13261 |
|
13262 |
self::shoot_ajax_response( array( 'success' => true ) );
|
13263 |
}
|
@@ -13292,7 +13303,7 @@
|
|
13292 |
fs_request_get( 'blog_id', null ),
|
13293 |
fs_request_get( 'module_id', null, 'post' ),
|
13294 |
fs_request_get( 'user_id', null ),
|
13295 |
-
fs_request_get_bool( 'is_extensions_tracking_allowed',
|
13296 |
);
|
13297 |
|
13298 |
if (
|
@@ -13482,7 +13493,31 @@
|
|
13482 |
* @return string
|
13483 |
*/
|
13484 |
function get_pricing_js_path() {
|
13485 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13486 |
}
|
13487 |
|
13488 |
/**
|
@@ -13527,7 +13562,7 @@
|
|
13527 |
$blog_id = null,
|
13528 |
$plugin_id = null,
|
13529 |
$license_owner_id = null,
|
13530 |
-
$is_extensions_tracking_allowed =
|
13531 |
) {
|
13532 |
$this->_logger->entrance();
|
13533 |
|
@@ -16448,19 +16483,6 @@
|
|
16448 |
);
|
16449 |
}
|
16450 |
|
16451 |
-
/**
|
16452 |
-
* @author Leo Fajardo (@leorw)
|
16453 |
-
* @since 2.3.0
|
16454 |
-
*/
|
16455 |
-
private function sync_user_beta_mode() {
|
16456 |
-
$user = $this->get_api_user_scope()->get( '/?plugin_id=' . $this->get_id() . '&fields=is_beta' );
|
16457 |
-
|
16458 |
-
if ( $this->is_api_result_entity( $user ) ) {
|
16459 |
-
$this->_user->is_beta = $user->is_beta;
|
16460 |
-
$this->_store_user();
|
16461 |
-
}
|
16462 |
-
}
|
16463 |
-
|
16464 |
/**
|
16465 |
* @author Vova Feldman (@svovaf)
|
16466 |
* @since 1.1.7.4
|
@@ -17148,9 +17170,7 @@
|
|
17148 |
$this->disable_opt_in_notice_and_lock_user();
|
17149 |
}
|
17150 |
|
17151 |
-
|
17152 |
-
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
17153 |
-
}
|
17154 |
|
17155 |
return $this->setup_account(
|
17156 |
$this->_user,
|
@@ -17195,9 +17215,7 @@
|
|
17195 |
$this->disable_opt_in_notice_and_lock_user();
|
17196 |
}
|
17197 |
|
17198 |
-
|
17199 |
-
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
17200 |
-
}
|
17201 |
|
17202 |
$sites = array();
|
17203 |
foreach ( $site_ids as $site_id ) {
|
@@ -17240,9 +17258,7 @@
|
|
17240 |
$this->disable_opt_in_notice_and_lock_user();
|
17241 |
}
|
17242 |
|
17243 |
-
|
17244 |
-
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
17245 |
-
}
|
17246 |
|
17247 |
$install_ids = array();
|
17248 |
|
@@ -17353,7 +17369,7 @@
|
|
17353 |
*/
|
17354 |
$license_key = fs_request_get( 'license_secret_key' );
|
17355 |
|
17356 |
-
$this->update_extensions_tracking_flag( fs_request_get_bool( 'is_extensions_tracking_allowed',
|
17357 |
|
17358 |
$this->install_with_current_user( $license_key );
|
17359 |
}
|
@@ -20605,6 +20621,20 @@
|
|
20605 |
}
|
20606 |
}
|
20607 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20608 |
if ( $this->is_addon() || $this->has_addons() ) {
|
20609 |
/**
|
20610 |
* Purge the valid user licenses cache so that when the "Account" or the "Add-Ons" page is loaded,
|
@@ -21298,7 +21328,7 @@
|
|
21298 |
|
21299 |
if ( $this->has_secret_key() ) {
|
21300 |
$endpoint = add_query_arg( 'type', 'all', $endpoint );
|
21301 |
-
} else if ( $this->
|
21302 |
$endpoint = add_query_arg( 'type', 'beta', $endpoint );
|
21303 |
}
|
21304 |
|
@@ -23396,6 +23426,14 @@
|
|
23396 |
return;
|
23397 |
}
|
23398 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23399 |
if ( fs_is_network_admin() ) {
|
23400 |
if ( ! $this->_is_network_active ) {
|
23401 |
// Don't add tracking links when browsing the network WP Admin and the plugin is not network active.
|
384 |
* @var boolean|null
|
385 |
*/
|
386 |
private $_use_external_pricing = null;
|
387 |
+
/**
|
388 |
+
* @author Leo Fajardo (@leorw)
|
389 |
+
* @since 2.4.2
|
390 |
+
*
|
391 |
+
* @var string|null
|
392 |
+
*/
|
393 |
+
private $_pricing_js_path = null;
|
394 |
|
395 |
#endregion
|
396 |
|
5491 |
function is_extensions_tracking_allowed() {
|
5492 |
return ( true === $this->apply_filters(
|
5493 |
'is_extensions_tracking_allowed',
|
5494 |
+
$this->_storage->get( 'is_extensions_tracking_allowed', null )
|
5495 |
) );
|
5496 |
}
|
5497 |
|
5535 |
* @author Leo Fajardo (@leorw)
|
5536 |
* @since 2.3.2
|
5537 |
*
|
5538 |
+
* @param bool|null $is_enabled
|
5539 |
*/
|
5540 |
+
function update_extensions_tracking_flag( $is_enabled ) {
|
5541 |
+
if ( is_bool( $is_enabled ) ) {
|
5542 |
+
$this->_storage->store( 'is_extensions_tracking_allowed', $is_enabled );
|
5543 |
+
}
|
5544 |
}
|
5545 |
|
5546 |
/**
|
6869 |
*/
|
6870 |
function _sync_cron_method( array $blog_ids, $current_blog_id = null ) {
|
6871 |
if ( $this->is_registered() ) {
|
|
|
|
|
6872 |
if ( $this->has_paid_plan() ) {
|
6873 |
// Initiate background plan sync.
|
6874 |
$this->_sync_license( true, false, $current_blog_id );
|
7241 |
}
|
7242 |
|
7243 |
if ( $this->is_plugin_new_install() || $this->is_only_premium() ) {
|
7244 |
+
if ( ! $this->_anonymous_mode &&
|
7245 |
+
( ! $this->is_addon() || ! $this->_parent->is_anonymous() ) ) {
|
7246 |
// Show notice for new plugin installations.
|
7247 |
$this->_admin_notices->add(
|
7248 |
sprintf(
|
7293 |
* @return bool
|
7294 |
*/
|
7295 |
private function should_add_sticky_optin_notice() {
|
7296 |
+
if ( $this->is_addon() && $this->_parent->is_anonymous() ) {
|
7297 |
+
return false;
|
7298 |
+
}
|
7299 |
+
|
7300 |
if ( fs_is_network_admin() ) {
|
7301 |
if ( ! $this->_is_network_active ) {
|
7302 |
return false;
|
13250 |
self::shoot_ajax_failure();
|
13251 |
}
|
13252 |
|
13253 |
+
$site = $this->get_api_site_scope()->call(
|
13254 |
'',
|
13255 |
'put',
|
13256 |
array(
|
|
|
13257 |
'is_beta' => ( 'true' == $is_beta ),
|
13258 |
'fields' => 'is_beta'
|
13259 |
)
|
13260 |
);
|
13261 |
|
13262 |
+
if ( ! $this->is_api_result_entity( $site ) ) {
|
13263 |
self::shoot_ajax_failure(
|
13264 |
+
FS_Api::is_api_error_object( $site ) ?
|
13265 |
+
$site->error->message :
|
13266 |
fs_text_inline( "An unknown error has occurred while trying to set the user's beta mode.", 'unknown-error-occurred', $this->get_slug() )
|
13267 |
);
|
13268 |
}
|
13269 |
|
13270 |
+
$this->_site->is_beta = $site->is_beta;
|
13271 |
+
$this->_store_site();
|
13272 |
|
13273 |
self::shoot_ajax_response( array( 'success' => true ) );
|
13274 |
}
|
13303 |
fs_request_get( 'blog_id', null ),
|
13304 |
fs_request_get( 'module_id', null, 'post' ),
|
13305 |
fs_request_get( 'user_id', null ),
|
13306 |
+
fs_request_get_bool( 'is_extensions_tracking_allowed', null )
|
13307 |
);
|
13308 |
|
13309 |
if (
|
13493 |
* @return string
|
13494 |
*/
|
13495 |
function get_pricing_js_path() {
|
13496 |
+
if ( ! isset( $this->_pricing_js_path ) ) {
|
13497 |
+
$pricing_js_path = $this->apply_filters( 'freemius_pricing_js_path', '' );
|
13498 |
+
|
13499 |
+
if ( empty( $pricing_js_path ) ) {
|
13500 |
+
global $fs_active_plugins;
|
13501 |
+
|
13502 |
+
foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
|
13503 |
+
if ( $data->plugin_path == $this->get_plugin_basename() ) {
|
13504 |
+
$plugin_or_theme_root_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) );
|
13505 |
+
|
13506 |
+
$pricing_js_path = $plugin_or_theme_root_dir
|
13507 |
+
. '/'
|
13508 |
+
// The basename will be `plugins`, `themes`, or the basename of a custom plugins or themes directory.
|
13509 |
+
. str_replace( '../' . basename( $plugin_or_theme_root_dir ) . '/', '', $sdk_path )
|
13510 |
+
. '/includes/freemius-pricing/freemius-pricing.js';
|
13511 |
+
|
13512 |
+
break;
|
13513 |
+
}
|
13514 |
+
}
|
13515 |
+
}
|
13516 |
+
|
13517 |
+
$this->_pricing_js_path = $pricing_js_path;
|
13518 |
+
}
|
13519 |
+
|
13520 |
+
return $this->_pricing_js_path;
|
13521 |
}
|
13522 |
|
13523 |
/**
|
13562 |
$blog_id = null,
|
13563 |
$plugin_id = null,
|
13564 |
$license_owner_id = null,
|
13565 |
+
$is_extensions_tracking_allowed = null
|
13566 |
) {
|
13567 |
$this->_logger->entrance();
|
13568 |
|
16483 |
);
|
16484 |
}
|
16485 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16486 |
/**
|
16487 |
* @author Vova Feldman (@svovaf)
|
16488 |
* @since 1.1.7.4
|
17170 |
$this->disable_opt_in_notice_and_lock_user();
|
17171 |
}
|
17172 |
|
17173 |
+
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
|
|
|
|
17174 |
|
17175 |
return $this->setup_account(
|
17176 |
$this->_user,
|
17215 |
$this->disable_opt_in_notice_and_lock_user();
|
17216 |
}
|
17217 |
|
17218 |
+
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
|
|
|
|
17219 |
|
17220 |
$sites = array();
|
17221 |
foreach ( $site_ids as $site_id ) {
|
17258 |
$this->disable_opt_in_notice_and_lock_user();
|
17259 |
}
|
17260 |
|
17261 |
+
$this->update_extensions_tracking_flag( $is_extensions_tracking_allowed );
|
|
|
|
|
17262 |
|
17263 |
$install_ids = array();
|
17264 |
|
17369 |
*/
|
17370 |
$license_key = fs_request_get( 'license_secret_key' );
|
17371 |
|
17372 |
+
$this->update_extensions_tracking_flag( fs_request_get_bool( 'is_extensions_tracking_allowed', null ) );
|
17373 |
|
17374 |
$this->install_with_current_user( $license_key );
|
17375 |
}
|
20621 |
}
|
20622 |
}
|
20623 |
|
20624 |
+
if ( ! $this->is_addon() &&
|
20625 |
+
$this->_site->is_beta() !== $site->is_beta
|
20626 |
+
) {
|
20627 |
+
// Beta flag updated.
|
20628 |
+
$this->_site = $site;
|
20629 |
+
|
20630 |
+
$this->_store_site(
|
20631 |
+
true,
|
20632 |
+
$is_site_level_sync ?
|
20633 |
+
null :
|
20634 |
+
$this->get_network_install_blog_id()
|
20635 |
+
);
|
20636 |
+
}
|
20637 |
+
|
20638 |
if ( $this->is_addon() || $this->has_addons() ) {
|
20639 |
/**
|
20640 |
* Purge the valid user licenses cache so that when the "Account" or the "Add-Ons" page is loaded,
|
21328 |
|
21329 |
if ( $this->has_secret_key() ) {
|
21330 |
$endpoint = add_query_arg( 'type', 'all', $endpoint );
|
21331 |
+
} else if ( is_object( $this->_site ) && $this->_site->is_beta() ) {
|
21332 |
$endpoint = add_query_arg( 'type', 'beta', $endpoint );
|
21333 |
}
|
21334 |
|
23426 |
return;
|
23427 |
}
|
23428 |
|
23429 |
+
if (
|
23430 |
+
$this->is_addon() &&
|
23431 |
+
! $this->is_only_premium() &&
|
23432 |
+
$this->_parent->is_anonymous()
|
23433 |
+
) {
|
23434 |
+
return;
|
23435 |
+
}
|
23436 |
+
|
23437 |
if ( fs_is_network_admin() ) {
|
23438 |
if ( ! $this->_is_network_active ) {
|
23439 |
// Don't add tracking links when browsing the network WP Admin and the plugin is not network active.
|
freemius/includes/class-fs-admin-notices.php
CHANGED
File without changes
|
freemius/includes/class-fs-api.php
CHANGED
File without changes
|
freemius/includes/class-fs-logger.php
CHANGED
@@ -142,7 +142,7 @@
|
|
142 |
return $this->_file_start;
|
143 |
}
|
144 |
|
145 |
-
private function _log( &$message, $type
|
146 |
if ( ! $this->is_on() ) {
|
147 |
return;
|
148 |
}
|
@@ -688,4 +688,4 @@ KEY `type` (`type` ASC))" );
|
|
688 |
}
|
689 |
|
690 |
#endregion
|
691 |
-
}
|
142 |
return $this->_file_start;
|
143 |
}
|
144 |
|
145 |
+
private function _log( &$message, $type, $wrapper = false ) {
|
146 |
if ( ! $this->is_on() ) {
|
147 |
return;
|
148 |
}
|
688 |
}
|
689 |
|
690 |
#endregion
|
691 |
+
}
|
freemius/includes/class-fs-options.php
CHANGED
File without changes
|
freemius/includes/class-fs-plugin-updater.php
CHANGED
File without changes
|
freemius/includes/class-fs-security.php
CHANGED
File without changes
|
freemius/includes/class-fs-storage.php
CHANGED
File without changes
|
freemius/includes/class-fs-user-lock.php
CHANGED
File without changes
|
freemius/includes/customizer/class-fs-customizer-support-section.php
CHANGED
File without changes
|
freemius/includes/customizer/class-fs-customizer-upsell-control.php
CHANGED
File without changes
|
freemius/includes/customizer/index.php
CHANGED
File without changes
|
freemius/includes/debug/class-fs-debug-bar-panel.php
CHANGED
File without changes
|
freemius/includes/debug/debug-bar-start.php
CHANGED
File without changes
|
freemius/includes/debug/index.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-affiliate-terms.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-affiliate.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-billing.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-entity.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-payment.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-info.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-license.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-plan.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin-tag.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-plugin.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-pricing.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-scope-entity.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-site.php
CHANGED
@@ -102,6 +102,14 @@
|
|
102 |
* @var bool
|
103 |
*/
|
104 |
public $is_uninstalled = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
|
106 |
/**
|
107 |
* @param stdClass|bool $site
|
@@ -233,4 +241,13 @@
|
|
233 |
function is_tracking_prohibited() {
|
234 |
return ! $this->is_tracking_allowed();
|
235 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
}
|
102 |
* @var bool
|
103 |
*/
|
104 |
public $is_uninstalled = false;
|
105 |
+
/**
|
106 |
+
* @author Edgar Melkonyan
|
107 |
+
*
|
108 |
+
* @since 2.4.2
|
109 |
+
*
|
110 |
+
* @var bool
|
111 |
+
*/
|
112 |
+
public $is_beta;
|
113 |
|
114 |
/**
|
115 |
* @param stdClass|bool $site
|
241 |
function is_tracking_prohibited() {
|
242 |
return ! $this->is_tracking_allowed();
|
243 |
}
|
244 |
+
|
245 |
+
/**
|
246 |
+
* @author Edgar Melkonyan
|
247 |
+
*
|
248 |
+
* @return bool
|
249 |
+
*/
|
250 |
+
function is_beta() {
|
251 |
+
return ( isset( $this->is_beta ) && true === $this->is_beta );
|
252 |
+
}
|
253 |
}
|
freemius/includes/entities/class-fs-subscription.php
CHANGED
File without changes
|
freemius/includes/entities/class-fs-user.php
CHANGED
@@ -31,13 +31,6 @@
|
|
31 |
*/
|
32 |
public $is_verified;
|
33 |
/**
|
34 |
-
* @author Leo Fajardo (@leorw)
|
35 |
-
* @since 2.3.0
|
36 |
-
*
|
37 |
-
* @var bool
|
38 |
-
*/
|
39 |
-
public $is_beta;
|
40 |
-
/**
|
41 |
* @var string|null
|
42 |
*/
|
43 |
public $customer_id;
|
@@ -63,16 +56,6 @@
|
|
63 |
return ( isset( $this->is_verified ) && true === $this->is_verified );
|
64 |
}
|
65 |
|
66 |
-
/**
|
67 |
-
* @author Leo Fajardo (@leorw)
|
68 |
-
* @since 2.3.0
|
69 |
-
*
|
70 |
-
* @return bool
|
71 |
-
*/
|
72 |
-
function is_beta() {
|
73 |
-
return ( isset( $this->is_beta ) && true === $this->is_beta );
|
74 |
-
}
|
75 |
-
|
76 |
static function get_type() {
|
77 |
return 'user';
|
78 |
}
|
31 |
*/
|
32 |
public $is_verified;
|
33 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
* @var string|null
|
35 |
*/
|
36 |
public $customer_id;
|
56 |
return ( isset( $this->is_verified ) && true === $this->is_verified );
|
57 |
}
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
static function get_type() {
|
60 |
return 'user';
|
61 |
}
|
freemius/includes/entities/index.php
CHANGED
File without changes
|
freemius/includes/fs-core-functions.php
CHANGED
File without changes
|
freemius/includes/fs-essential-functions.php
CHANGED
File without changes
|
freemius/includes/fs-plugin-info-dialog.php
CHANGED
File without changes
|
freemius/includes/i18n.php
CHANGED
File without changes
|
freemius/includes/index.php
CHANGED
File without changes
|
freemius/includes/l10n.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-admin-notice-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-cache-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-gdpr-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-key-value-storage.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-license-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-option-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-plan-manager.php
CHANGED
File without changes
|
freemius/includes/managers/class-fs-plugin-manager.php
CHANGED
File without changes
|
freemius/includes/managers/index.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/ArgumentNotExistException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/EmptyArgumentException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/Exception.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/InvalidArgumentException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/OAuthException.php
CHANGED
File without changes
|
freemius/includes/sdk/Exceptions/index.php
CHANGED
File without changes
|
freemius/includes/sdk/FreemiusBase.php
CHANGED
File without changes
|
freemius/includes/sdk/FreemiusWordPress.php
CHANGED
File without changes
|
freemius/includes/sdk/LICENSE.txt
CHANGED
File without changes
|
freemius/includes/sdk/index.php
CHANGED
File without changes
|
freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
CHANGED
File without changes
|
freemius/includes/supplements/fs-essential-functions-2.2.1.php
CHANGED
File without changes
|
freemius/includes/supplements/index.php
CHANGED
File without changes
|
freemius/index.php
CHANGED
File without changes
|
freemius/languages/freemius-cs_CZ.mo
CHANGED
Binary file
|
freemius/languages/freemius-da_DK.mo
CHANGED
Binary file
|
freemius/languages/freemius-en.mo
CHANGED
Binary file
|
freemius/languages/freemius-es_ES.mo
CHANGED
Binary file
|
freemius/languages/freemius-fr_FR.mo
CHANGED
Binary file
|
freemius/languages/freemius-he_IL.mo
CHANGED
Binary file
|
freemius/languages/freemius-hu_HU.mo
CHANGED
Binary file
|
freemius/languages/freemius-it_IT.mo
CHANGED
Binary file
|
freemius/languages/freemius-ja.mo
CHANGED
Binary file
|
freemius/languages/freemius-nl_NL.mo
CHANGED
Binary file
|
freemius/languages/freemius-ru_RU.mo
CHANGED
Binary file
|
freemius/languages/freemius-ta.mo
CHANGED
Binary file
|
freemius/languages/freemius-zh_CN.mo
CHANGED
Binary file
|
freemius/languages/freemius.pot
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
@@ -16,795 +16,795 @@ msgstr ""
|
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
-
#: includes/class-freemius.php:
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: includes/class-freemius.php:
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: includes/class-freemius.php:
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/class-freemius.php:
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: includes/class-freemius.php:
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: includes/class-freemius.php:
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/class-freemius.php:
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/class-freemius.php:
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/class-freemius.php:
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: includes/class-freemius.php:
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/class-freemius.php:
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: includes/class-freemius.php:
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: includes/class-freemius.php:
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: includes/class-freemius.php:
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/class-freemius.php:
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/class-freemius.php:
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: includes/class-freemius.php:
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/class-freemius.php:
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/class-freemius.php:
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/class-freemius.php:
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/class-freemius.php:
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/class-freemius.php:
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/class-freemius.php:
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/class-freemius.php:
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: includes/class-freemius.php:
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/class-freemius.php:
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: includes/class-freemius.php:
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: includes/class-freemius.php:
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: includes/class-freemius.php:
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/class-freemius.php:
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/class-freemius.php:
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/class-freemius.php:
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/class-freemius.php:
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: includes/class-freemius.php:
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: includes/class-freemius.php:
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: includes/class-freemius.php:
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class-freemius.php:
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/class-freemius.php:
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/class-freemius.php:
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/class-freemius.php:
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: includes/class-freemius.php:
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: includes/class-freemius.php:
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: includes/class-freemius.php:
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class-freemius.php:
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/class-freemius.php:
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/class-freemius.php:
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/class-freemius.php:
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/class-freemius.php:
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/class-freemius.php:
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/class-freemius.php:
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/class-freemius.php:
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: includes/class-freemius.php:
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: includes/class-freemius.php:
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/class-freemius.php:
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: includes/class-freemius.php:
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: includes/class-freemius.php:
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: includes/class-freemius.php:
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: includes/class-freemius.php:
|
254 |
msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/class-freemius.php:
|
258 |
msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/class-freemius.php:
|
262 |
msgid "User Dashboard"
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: includes/class-freemius.php:
|
266 |
msgid "revert it now"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/class-freemius.php:
|
270 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: includes/class-freemius.php:
|
274 |
msgid "Invalid new user ID or email address."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/class-freemius.php:
|
278 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/class-freemius.php:
|
282 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/class-freemius.php:
|
286 |
msgid "Change Ownership"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/class-freemius.php:
|
290 |
msgid "Invalid site details collection."
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/class-freemius.php:
|
294 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/class-freemius.php:
|
298 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/class-freemius.php:
|
302 |
msgid "Account is pending activation."
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/class-freemius.php:
|
306 |
msgid "Buy a license now"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/class-freemius.php:
|
310 |
msgid "Renew your license now"
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: includes/class-freemius.php:
|
314 |
msgid "%s to access version %s security & feature updates, and support."
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/class-freemius.php:
|
318 |
msgid "%s activation was successfully completed."
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: includes/class-freemius.php:
|
322 |
msgid "Your account was successfully activated with the %s plan."
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: includes/class-freemius.php:
|
326 |
msgid "Your trial has been successfully started."
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/class-freemius.php:
|
330 |
msgid "Couldn't activate %s."
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/class-freemius.php:
|
334 |
msgid "Please contact us with the following message:"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/class-freemius.php:
|
338 |
msgid "An unknown error has occurred."
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/class-freemius.php:
|
342 |
msgid "Upgrade"
|
343 |
msgstr ""
|
344 |
|
345 |
-
#: includes/class-freemius.php:
|
346 |
msgid "Start Trial"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: includes/class-freemius.php:
|
350 |
msgid "Pricing"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: includes/class-freemius.php:
|
354 |
msgid "Affiliation"
|
355 |
msgstr ""
|
356 |
|
357 |
-
#: includes/class-freemius.php:
|
358 |
msgid "Account"
|
359 |
msgstr ""
|
360 |
|
361 |
-
#: includes/class-freemius.php:
|
362 |
msgid "Contact Us"
|
363 |
msgstr ""
|
364 |
|
365 |
-
#: includes/class-freemius.php:
|
366 |
msgid "Add-Ons"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: includes/class-freemius.php:
|
370 |
msgctxt "ASCII arrow left icon"
|
371 |
msgid "←"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: includes/class-freemius.php:
|
375 |
msgctxt "ASCII arrow right icon"
|
376 |
msgid "➤"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: includes/class-freemius.php:
|
380 |
msgctxt "noun"
|
381 |
msgid "Pricing"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: includes/class-freemius.php:
|
385 |
msgid "Support Forum"
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: includes/class-freemius.php:
|
389 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: includes/class-freemius.php:
|
393 |
msgctxt "a positive response"
|
394 |
msgid "Right on"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/class-freemius.php:
|
398 |
msgid "seems like the key you entered doesn't match our records."
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/class-freemius.php:
|
402 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: includes/class-freemius.php:
|
406 |
msgid "Your %s Add-on plan was successfully upgraded."
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: includes/class-freemius.php:
|
410 |
msgid "%s Add-on was successfully purchased."
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: includes/class-freemius.php:
|
414 |
msgid "Download the latest version"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: includes/class-freemius.php:
|
418 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: includes/class-freemius.php:
|
422 |
msgid "Error received from the server:"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: includes/class-freemius.php:
|
426 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: includes/class-freemius.php:
|
430 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
431 |
msgid "Hmm"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: includes/class-freemius.php:
|
435 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: includes/class-freemius.php:
|
439 |
msgctxt "trial period"
|
440 |
msgid "Trial"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/class-freemius.php:
|
444 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/class-freemius.php:
|
448 |
msgid "Please contact us here"
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/class-freemius.php:
|
452 |
msgid "Your plan was successfully activated."
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: includes/class-freemius.php:
|
456 |
msgid "Your plan was successfully upgraded."
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: includes/class-freemius.php:
|
460 |
msgid "Your plan was successfully changed to %s."
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/class-freemius.php:
|
464 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/class-freemius.php:
|
468 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/class-freemius.php:
|
472 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/class-freemius.php:
|
476 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/class-freemius.php:
|
480 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/class-freemius.php:
|
484 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: includes/class-freemius.php:
|
488 |
msgid "It looks like the license could not be activated."
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: includes/class-freemius.php:
|
492 |
msgid "Your license was successfully activated."
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: includes/class-freemius.php:
|
496 |
msgid "It looks like your site currently doesn't have an active license."
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/class-freemius.php:
|
500 |
msgid "It looks like the license deactivation failed."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class-freemius.php:
|
504 |
msgid "Your %s license was successfully deactivated."
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/class-freemius.php:
|
508 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/class-freemius.php:
|
512 |
msgid "O.K"
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/class-freemius.php:
|
516 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/class-freemius.php:
|
520 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: includes/class-freemius.php:
|
524 |
msgid "You are already running the %s in a trial mode."
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: includes/class-freemius.php:
|
528 |
msgid "You already utilized a trial before."
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: includes/class-freemius.php:
|
532 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: includes/class-freemius.php:
|
536 |
msgid "Plan %s does not support a trial period."
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: includes/class-freemius.php:
|
540 |
msgid "None of the %s's plans supports a trial period."
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: includes/class-freemius.php:
|
544 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/class-freemius.php:
|
548 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: includes/class-freemius.php:
|
552 |
msgid "Your %s free trial was successfully cancelled."
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: includes/class-freemius.php:
|
556 |
msgid "Version %s was released."
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/class-freemius.php:
|
560 |
msgid "Please download %s."
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: includes/class-freemius.php:
|
564 |
msgid "the latest %s version here"
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: includes/class-freemius.php:
|
568 |
msgid "New"
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: includes/class-freemius.php:
|
572 |
msgid "Seems like you got the latest release."
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/class-freemius.php:
|
576 |
msgid "You are all good!"
|
577 |
msgstr ""
|
578 |
|
579 |
-
#: includes/class-freemius.php:
|
580 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: includes/class-freemius.php:
|
584 |
msgid "Site successfully opted in."
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: includes/class-freemius.php:
|
588 |
msgid "Awesome"
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: includes/class-freemius.php:
|
592 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
593 |
msgstr ""
|
594 |
|
595 |
-
#: includes/class-freemius.php:
|
596 |
msgid "Thank you!"
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: includes/class-freemius.php:
|
600 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
601 |
msgstr ""
|
602 |
|
603 |
-
#: includes/class-freemius.php:
|
604 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
605 |
msgstr ""
|
606 |
|
607 |
-
#: includes/class-freemius.php:
|
608 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: includes/class-freemius.php:
|
612 |
msgid "%s is the new owner of the account."
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: includes/class-freemius.php:
|
616 |
msgctxt "as congratulations"
|
617 |
msgid "Congrats"
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/class-freemius.php:
|
621 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: includes/class-freemius.php:
|
625 |
msgid "Please provide your full name."
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: includes/class-freemius.php:
|
629 |
msgid "Your name was successfully updated."
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: includes/class-freemius.php:
|
633 |
msgid "You have successfully updated your %s."
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: includes/class-freemius.php:
|
637 |
msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: includes/class-freemius.php:
|
641 |
msgid "Click here"
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: includes/class-freemius.php:
|
645 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: includes/class-freemius.php:
|
649 |
msgctxt "advance notice of something that will need attention."
|
650 |
msgid "Heads up"
|
651 |
msgstr ""
|
652 |
|
653 |
-
#: includes/class-freemius.php:
|
654 |
msgctxt "exclamation"
|
655 |
msgid "Hey"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: includes/class-freemius.php:
|
659 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: includes/class-freemius.php:
|
663 |
msgid "No commitment for %s days - cancel anytime!"
|
664 |
msgstr ""
|
665 |
|
666 |
-
#: includes/class-freemius.php:
|
667 |
msgid "No credit card required"
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: includes/class-freemius.php:
|
671 |
msgctxt "call to action"
|
672 |
msgid "Start free trial"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: includes/class-freemius.php:
|
676 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/class-freemius.php:
|
680 |
msgid "Learn more"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/class-freemius.php:
|
684 |
msgid "Activate License"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: includes/class-freemius.php:
|
688 |
msgid "Change License"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: includes/class-freemius.php:
|
692 |
msgid "Opt Out"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/class-freemius.php:
|
696 |
msgid "Opt In"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/class-freemius.php:
|
700 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/class-freemius.php:
|
704 |
msgid "Activate %s features"
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/class-freemius.php:
|
708 |
msgid "Please follow these steps to complete the upgrade"
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-freemius.php:
|
712 |
msgid "Download the latest %s version"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-freemius.php:
|
716 |
msgid "Upload and activate the downloaded version"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-freemius.php:
|
720 |
msgid "How to upload and activate?"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/class-freemius.php:
|
724 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/class-freemius.php:
|
728 |
msgid "Auto installation only works for opted-in users."
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/class-freemius.php:
|
732 |
msgid "Invalid module ID."
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: includes/class-freemius.php:
|
736 |
msgid "Premium version already active."
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/class-freemius.php:
|
740 |
msgid "You do not have a valid license to access the premium version."
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: includes/class-freemius.php:
|
744 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/class-freemius.php:
|
748 |
msgid "Premium add-on version already installed."
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/class-freemius.php:
|
752 |
msgid "View paid features"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/class-freemius.php:
|
756 |
msgid "Thank you so much for using %s and its add-ons!"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/class-freemius.php:
|
760 |
msgid "Thank you so much for using %s!"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/class-freemius.php:
|
764 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: includes/class-freemius.php:
|
768 |
msgid "Thank you so much for using our products!"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/class-freemius.php:
|
772 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/class-freemius.php:
|
776 |
msgid "%s and its add-ons"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/class-freemius.php:
|
780 |
msgid "Products"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/class-freemius.php:
|
784 |
msgid "Yes"
|
785 |
msgstr ""
|
786 |
|
787 |
-
#: includes/class-freemius.php:
|
788 |
msgid "send me security & feature updates, educational content and offers."
|
789 |
msgstr ""
|
790 |
|
791 |
-
#: includes/class-freemius.php:
|
792 |
msgid "No"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: includes/class-freemius.php:
|
796 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/class-freemius.php:
|
800 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/class-freemius.php:
|
804 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/class-freemius.php:
|
808 |
msgid "License key is empty."
|
809 |
msgstr ""
|
810 |
|
@@ -832,15 +832,15 @@ msgstr ""
|
|
832 |
msgid "Important Upgrade Notice:"
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: includes/class-fs-plugin-updater.php:
|
836 |
msgid "Installing plugin: %s"
|
837 |
msgstr ""
|
838 |
|
839 |
-
#: includes/class-fs-plugin-updater.php:
|
840 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
841 |
msgstr ""
|
842 |
|
843 |
-
#: includes/class-fs-plugin-updater.php:
|
844 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
845 |
msgstr ""
|
846 |
|
@@ -861,7 +861,7 @@ msgstr ""
|
|
861 |
msgid "Install Free Version Update Now"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: includes/fs-plugin-info-dialog.php:745, templates/account.php:
|
865 |
msgid "Install Update Now"
|
866 |
msgstr ""
|
867 |
|
@@ -878,7 +878,7 @@ msgctxt "as download latest version"
|
|
878 |
msgid "Download Latest Free Version"
|
879 |
msgstr ""
|
880 |
|
881 |
-
#: includes/fs-plugin-info-dialog.php:772, templates/account.php:
|
882 |
msgctxt "as download latest version"
|
883 |
msgid "Download Latest"
|
884 |
msgstr ""
|
@@ -887,11 +887,11 @@ msgstr ""
|
|
887 |
msgid "Activate this add-on"
|
888 |
msgstr ""
|
889 |
|
890 |
-
#: includes/fs-plugin-info-dialog.php:789, templates/connect.php:
|
891 |
msgid "Activate Free Version"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: includes/fs-plugin-info-dialog.php:790, templates/account.php:
|
895 |
msgid "Activate"
|
896 |
msgstr ""
|
897 |
|
@@ -1020,7 +1020,7 @@ msgstr ""
|
|
1020 |
msgid "Details"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: includes/fs-plugin-info-dialog.php:1318, templates/account.php:
|
1024 |
msgctxt "product version"
|
1025 |
msgid "Version"
|
1026 |
msgstr ""
|
@@ -1034,7 +1034,7 @@ msgstr ""
|
|
1034 |
msgid "Last Updated"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: includes/fs-plugin-info-dialog.php:1337, templates/account.php:
|
1038 |
msgctxt "x-ago"
|
1039 |
msgid "%s ago"
|
1040 |
msgstr ""
|
@@ -1143,293 +1143,293 @@ msgstr ""
|
|
1143 |
msgid "Latest Free Version Installed"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
-
#: templates/account.php:
|
1147 |
msgid "Downgrading your plan"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
-
#: templates/account.php:
|
1151 |
msgid "Cancelling the subscription"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
#. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
|
1155 |
-
#: templates/account.php:
|
1156 |
msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: templates/account.php:
|
1160 |
msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1161 |
msgstr ""
|
1162 |
|
1163 |
-
#: templates/account.php:
|
1164 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
-
#: templates/account.php:
|
1168 |
msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: templates/account.php:
|
1172 |
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1173 |
msgstr ""
|
1174 |
|
1175 |
#. translators: %s: Plan title (e.g. "Professional")
|
1176 |
-
#: templates/account.php:
|
1177 |
msgid "Activate %s Plan"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
#. translators: %s: Time period (e.g. Auto renews in "2 months")
|
1181 |
-
#: templates/account.php:
|
1182 |
msgid "Auto renews in %s"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
#. translators: %s: Time period (e.g. Expires in "2 months")
|
1186 |
-
#: templates/account.php:
|
1187 |
msgid "Expires in %s"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
-
#: templates/account.php:
|
1191 |
msgctxt "as synchronize license"
|
1192 |
msgid "Sync License"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#: templates/account.php:
|
1196 |
msgid "Cancel Trial"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
-
#: templates/account.php:
|
1200 |
msgid "Change Plan"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: templates/account.php:
|
1204 |
msgctxt "verb"
|
1205 |
msgid "Upgrade"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
-
#: templates/account.php:
|
1209 |
msgctxt "verb"
|
1210 |
msgid "Downgrade"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: templates/account.php:
|
1214 |
msgid "Free"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: templates/account.php:
|
1218 |
msgctxt "as product pricing plan"
|
1219 |
msgid "Plan"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: templates/account.php:
|
1223 |
msgid "Bundle Plan"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
-
#: templates/account.php:
|
1227 |
msgid "Free Trial"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
-
#: templates/account.php:
|
1231 |
msgid "Account Details"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
-
#: templates/account.php:
|
1235 |
msgid "Start Debug"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
-
#: templates/account.php:
|
1239 |
msgid "Stop Debug"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
-
#: templates/account.php:
|
1243 |
msgid "Billing & Invoices"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: templates/account.php:
|
1247 |
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: templates/account.php:
|
1251 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: templates/account.php:
|
1255 |
msgid "Delete Account"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: templates/account.php:
|
1259 |
msgid "Deactivate License"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: templates/account.php:
|
1263 |
msgid "Are you sure you want to proceed?"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: templates/account.php:
|
1267 |
msgid "Cancel Subscription"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: templates/account.php:
|
1271 |
msgctxt "as synchronize"
|
1272 |
msgid "Sync"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: templates/account.php:
|
1276 |
msgid "Name"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: templates/account.php:
|
1280 |
msgid "Email"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: templates/account.php:
|
1284 |
msgid "User ID"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: templates/account.php:
|
1288 |
msgid "ID"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: templates/account.php:
|
1292 |
msgid "Site ID"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: templates/account.php:
|
1296 |
msgid "No ID"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
-
#: templates/account.php:
|
1300 |
msgid "Public Key"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: templates/account.php:
|
1304 |
msgid "Secret Key"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
-
#: templates/account.php:
|
1308 |
msgctxt "as secret encryption key missing"
|
1309 |
msgid "No Secret"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: templates/account.php:
|
1313 |
msgid "Trial"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#: templates/account.php:
|
1317 |
msgid "License Key"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#: templates/account.php:
|
1321 |
msgid "Join the Beta program"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: templates/account.php:
|
1325 |
msgid "not verified"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: templates/account.php:
|
1329 |
msgid "Expired"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: templates/account.php:
|
1333 |
msgid "Premium version"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
-
#: templates/account.php:
|
1337 |
msgid "Free version"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#: templates/account.php:
|
1341 |
msgid "Verify Email"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: templates/account.php:
|
1345 |
msgid "Download %s Version"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#: templates/account.php:
|
1349 |
msgid "Download Paid Version"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#: templates/account.php:
|
1353 |
msgctxt "verb"
|
1354 |
msgid "Show"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
-
#: templates/account.php:
|
1358 |
msgid "What is your %s?"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
-
#: templates/account.php:
|
1362 |
msgctxt "verb"
|
1363 |
msgid "Edit"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: templates/account.php:
|
1367 |
msgid "Change User"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
-
#: templates/account.php:
|
1371 |
msgid "Sites"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: templates/account.php:
|
1375 |
msgid "Search by address"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
-
#: templates/account.php:
|
1379 |
msgid "Address"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
-
#: templates/account.php:
|
1383 |
msgid "License"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: templates/account.php:
|
1387 |
msgid "Plan"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: templates/account.php:
|
1391 |
msgctxt "as software license"
|
1392 |
msgid "License"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
-
#: templates/account.php:
|
1396 |
msgctxt "verb"
|
1397 |
msgid "Hide"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: templates/account.php:
|
1401 |
msgid "Processing"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: templates/account.php:
|
1405 |
msgid "Get updates for bleeding edge Beta versions of %s."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
-
#: templates/account.php:
|
1409 |
msgid "Cancelling %s"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
-
#: templates/account.php:
|
1413 |
msgid "trial"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
-
#: templates/account.php:
|
1417 |
msgid "Cancelling %s..."
|
1418 |
msgstr ""
|
1419 |
|
1420 |
-
#: templates/account.php:
|
1421 |
msgid "subscription"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
-
#: templates/account.php:
|
1425 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
-
#: templates/account.php:
|
1429 |
msgid "Disabling white-label mode"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
-
#: templates/account.php:
|
1433 |
msgid "Enabling white-label mode"
|
1434 |
msgstr ""
|
1435 |
|
@@ -1455,7 +1455,7 @@ msgctxt "installed add-on"
|
|
1455 |
msgid "Installed"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
-
#: templates/admin-notice.php:13, templates/forms/license-activation.php:
|
1459 |
msgctxt "as close a window"
|
1460 |
msgid "Dismiss"
|
1461 |
msgstr ""
|
@@ -1510,84 +1510,92 @@ msgstr ""
|
|
1510 |
msgid "Agree & Activate License"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
-
#: templates/connect.php:
|
1514 |
-
msgid "
|
1515 |
msgstr ""
|
1516 |
|
1517 |
-
#: templates/connect.php:
|
1518 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1519 |
msgstr ""
|
1520 |
|
1521 |
-
#: templates/connect.php:
|
1522 |
msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1523 |
msgstr ""
|
1524 |
|
1525 |
-
#: templates/connect.php:
|
1526 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1527 |
msgstr ""
|
1528 |
|
1529 |
-
#: templates/connect.php:
|
1530 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: templates/connect.php:
|
1534 |
msgid "We're excited to introduce the Freemius network-level integration."
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#: templates/connect.php:
|
1538 |
msgid "During the update process we detected %d site(s) that are still pending license activation."
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#: templates/connect.php:
|
1542 |
msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1543 |
msgstr ""
|
1544 |
|
1545 |
-
#: templates/connect.php:
|
1546 |
msgid "%s's paid features"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#: templates/connect.php:
|
1550 |
msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1551 |
msgstr ""
|
1552 |
|
1553 |
-
#: templates/connect.php:
|
1554 |
msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1555 |
msgstr ""
|
1556 |
|
1557 |
-
#: templates/connect.php:
|
1558 |
msgid "License key"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
-
#: templates/connect.php:
|
1562 |
msgid "Can't find your license key?"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
-
#: templates/connect.php:
|
1566 |
msgctxt "verb"
|
1567 |
msgid "Skip"
|
1568 |
msgstr ""
|
1569 |
|
1570 |
-
#: templates/connect.php:
|
1571 |
msgid "Delegate to Site Admins"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
-
#: templates/connect.php:
|
1575 |
msgid "If you click it, this decision will be delegated to the sites administrators."
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: templates/connect.php:
|
|
|
|
|
|
|
|
|
1579 |
msgid "Your Profile Overview"
|
1580 |
msgstr ""
|
1581 |
|
1582 |
-
#: templates/connect.php:
|
1583 |
msgid "Name and email address"
|
1584 |
msgstr ""
|
1585 |
|
1586 |
-
#: templates/connect.php:
|
|
|
|
|
|
|
|
|
1587 |
msgid "Your Site Overview"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: templates/connect.php:
|
1591 |
msgid "Site URL, WP version, PHP info"
|
1592 |
msgstr ""
|
1593 |
|
@@ -1595,64 +1603,84 @@ msgstr ""
|
|
1595 |
msgid "Admin Notices"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: templates/connect.php:380, templates/connect.php:
|
1599 |
msgid "Updates, announcements, marketing, no spam"
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: templates/connect.php:
|
1603 |
-
msgid "
|
|
|
|
|
|
|
|
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: templates/connect.php:
|
1607 |
-
msgid "
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: templates/connect.php:
|
1611 |
msgid "Newsletter"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: templates/connect.php:
|
1615 |
msgid "Plugins & Themes"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: templates/connect.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1619 |
msgid "Title, slug, version, and is active"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
-
#: templates/connect.php:
|
1623 |
-
msgid "The %1$s will
|
1624 |
msgstr ""
|
1625 |
|
1626 |
#: templates/connect.php:426
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1627 |
msgid "What permissions are being granted?"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#: templates/connect.php:
|
1631 |
msgid "Don't have a license key?"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
-
#: templates/connect.php:
|
1635 |
msgid "Have a license key?"
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#: templates/connect.php:
|
1639 |
msgid "Privacy Policy"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: templates/connect.php:
|
1643 |
msgid "License Agreement"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
-
#: templates/connect.php:
|
1647 |
msgid "Terms of Service"
|
1648 |
msgstr ""
|
1649 |
|
1650 |
-
#: templates/connect.php:
|
1651 |
msgctxt "as in the process of sending an email"
|
1652 |
msgid "Sending email"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
-
#: templates/connect.php:
|
1656 |
msgctxt "as activating plugin"
|
1657 |
msgid "Activating"
|
1658 |
msgstr ""
|
@@ -2241,7 +2269,11 @@ msgstr ""
|
|
2241 |
msgid "Update License"
|
2242 |
msgstr ""
|
2243 |
|
2244 |
-
#: templates/forms/license-activation.php:
|
|
|
|
|
|
|
|
|
2245 |
msgid "Associate with the license owner's account."
|
2246 |
msgstr ""
|
2247 |
|
1 |
+
# Copyright (C) 2021 freemius
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
+
#: includes/class-freemius.php:1919, templates/account.php:912
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/class-freemius.php:1926
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/class-freemius.php:2138
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/class-freemius.php:2140
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/class-freemius.php:2540
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/class-freemius.php:2542
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: includes/class-freemius.php:2548
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: includes/class-freemius.php:2550
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/class-freemius.php:2551
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: includes/class-freemius.php:2560, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: includes/class-freemius.php:2568
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: includes/class-freemius.php:2575
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: includes/class-freemius.php:2581
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: includes/class-freemius.php:2588
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: includes/class-freemius.php:2598
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/class-freemius.php:2600
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/class-freemius.php:2606
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/class-freemius.php:2627
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/class-freemius.php:2637
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/class-freemius.php:2645
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/class-freemius.php:2647
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/class-freemius.php:2651
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/class-freemius.php:2653
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/class-freemius.php:2657
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/class-freemius.php:2659
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/class-freemius.php:2663
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/class-freemius.php:2665
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/class-freemius.php:3520, templates/debug.php:20
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: includes/class-freemius.php:4272
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/class-freemius.php:4274
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/class-freemius.php:4281
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/class-freemius.php:4386
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/class-freemius.php:4391
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/class-freemius.php:4436, includes/class-freemius.php:4930, includes/class-freemius.php:6191, includes/class-freemius.php:13368, includes/class-freemius.php:14110, includes/class-freemius.php:17542, includes/class-freemius.php:17647, includes/class-freemius.php:17822, includes/class-freemius.php:20056, includes/class-freemius.php:20414, includes/class-freemius.php:20424, includes/class-freemius.php:21109, includes/class-freemius.php:22015, includes/class-freemius.php:22148, includes/class-freemius.php:22304, templates/add-ons.php:57
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: includes/class-freemius.php:4505
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: includes/class-freemius.php:4927
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-freemius.php:4928
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/class-freemius.php:5127, includes/class-freemius.php:5152, includes/class-freemius.php:21180
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/class-freemius.php:5857
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: includes/class-freemius.php:5869, includes/class-freemius.php:7774
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: includes/class-freemius.php:5884
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: includes/class-freemius.php:5888, includes/class-freemius.php:16947, includes/class-freemius.php:16958, includes/class-freemius.php:20325, includes/class-freemius.php:20689, includes/class-freemius.php:20758, includes/class-freemius.php:20930
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/class-freemius.php:6174
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-freemius.php:6178
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: includes/class-freemius.php:6187, templates/add-ons.php:186, templates/account/partials/addon.php:381
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/class-freemius.php:6188
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/class-freemius.php:7125, templates/connect.php:171
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/class-freemius.php:7129
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: includes/class-freemius.php:7130, templates/connect.php:175
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-freemius.php:7249
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: includes/class-freemius.php:7252
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/class-freemius.php:7334
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: includes/class-freemius.php:7338
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/class-freemius.php:7773
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: includes/class-freemius.php:10255, includes/class-fs-plugin-updater.php:1087, includes/class-fs-plugin-updater.php:1282, includes/class-fs-plugin-updater.php:1289, templates/auto-installation.php:32
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: includes/class-freemius.php:10257, templates/account.php:394, templates/account.php:402, templates/debug.php:358, templates/debug.php:549
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: includes/class-freemius.php:10258, templates/account.php:395, templates/account.php:403, templates/debug.php:358, templates/debug.php:549, templates/forms/deactivation/form.php:71
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: includes/class-freemius.php:13188
|
254 |
msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
|
255 |
msgstr ""
|
256 |
|
257 |
+
#: includes/class-freemius.php:13202
|
258 |
msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
|
259 |
msgstr ""
|
260 |
|
261 |
+
#: includes/class-freemius.php:13207
|
262 |
msgid "User Dashboard"
|
263 |
msgstr ""
|
264 |
|
265 |
+
#: includes/class-freemius.php:13208
|
266 |
msgid "revert it now"
|
267 |
msgstr ""
|
268 |
|
269 |
+
#: includes/class-freemius.php:13266
|
270 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: includes/class-freemius.php:13339
|
274 |
msgid "Invalid new user ID or email address."
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/class-freemius.php:13369, includes/class-freemius.php:22259
|
278 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/class-freemius.php:13370, includes/class-freemius.php:22260
|
282 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: includes/class-freemius.php:13377, includes/class-freemius.php:22267
|
286 |
msgid "Change Ownership"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: includes/class-freemius.php:13977
|
290 |
msgid "Invalid site details collection."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: includes/class-freemius.php:14097
|
294 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: includes/class-freemius.php:14099
|
298 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: includes/class-freemius.php:14373
|
302 |
msgid "Account is pending activation."
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: includes/class-freemius.php:14485, templates/forms/premium-versions-upgrade-handler.php:47
|
306 |
msgid "Buy a license now"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: includes/class-freemius.php:14497, templates/forms/premium-versions-upgrade-handler.php:46
|
310 |
msgid "Renew your license now"
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: includes/class-freemius.php:14501
|
314 |
msgid "%s to access version %s security & feature updates, and support."
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: includes/class-freemius.php:16929
|
318 |
msgid "%s activation was successfully completed."
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/class-freemius.php:16943
|
322 |
msgid "Your account was successfully activated with the %s plan."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/class-freemius.php:16954, includes/class-freemius.php:20754
|
326 |
msgid "Your trial has been successfully started."
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/class-freemius.php:17540, includes/class-freemius.php:17645, includes/class-freemius.php:17820
|
330 |
msgid "Couldn't activate %s."
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/class-freemius.php:17541, includes/class-freemius.php:17646, includes/class-freemius.php:17821
|
334 |
msgid "Please contact us with the following message:"
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: includes/class-freemius.php:17642, templates/forms/data-debug-mode.php:162
|
338 |
msgid "An unknown error has occurred."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/class-freemius.php:18178, includes/class-freemius.php:23340
|
342 |
msgid "Upgrade"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: includes/class-freemius.php:18184
|
346 |
msgid "Start Trial"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: includes/class-freemius.php:18186
|
350 |
msgid "Pricing"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: includes/class-freemius.php:18266, includes/class-freemius.php:18268
|
354 |
msgid "Affiliation"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/class-freemius.php:18296, includes/class-freemius.php:18298, templates/account.php:242, templates/debug.php:324
|
358 |
msgid "Account"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: includes/class-freemius.php:18312, includes/class-freemius.php:18314, includes/customizer/class-fs-customizer-support-section.php:60
|
362 |
msgid "Contact Us"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: includes/class-freemius.php:18325, includes/class-freemius.php:18327, includes/class-freemius.php:23354, templates/account.php:121, templates/account/partials/addon.php:44
|
366 |
msgid "Add-Ons"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: includes/class-freemius.php:18361
|
370 |
msgctxt "ASCII arrow left icon"
|
371 |
msgid "←"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: includes/class-freemius.php:18361
|
375 |
msgctxt "ASCII arrow right icon"
|
376 |
msgid "➤"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/class-freemius.php:18363, templates/pricing.php:109
|
380 |
msgctxt "noun"
|
381 |
msgid "Pricing"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/class-freemius.php:18576, includes/customizer/class-fs-customizer-support-section.php:67
|
385 |
msgid "Support Forum"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/class-freemius.php:19550
|
389 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: includes/class-freemius.php:19551
|
393 |
msgctxt "a positive response"
|
394 |
msgid "Right on"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/class-freemius.php:20057
|
398 |
msgid "seems like the key you entered doesn't match our records."
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/class-freemius.php:20081
|
402 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/class-freemius.php:20316
|
406 |
msgid "Your %s Add-on plan was successfully upgraded."
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/class-freemius.php:20318
|
410 |
msgid "%s Add-on was successfully purchased."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/class-freemius.php:20321
|
414 |
msgid "Download the latest version"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: includes/class-freemius.php:20407
|
418 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: includes/class-freemius.php:20413, includes/class-freemius.php:20423, includes/class-freemius.php:20889, includes/class-freemius.php:20978
|
422 |
msgid "Error received from the server:"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: includes/class-freemius.php:20423
|
426 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: includes/class-freemius.php:20651, includes/class-freemius.php:20894, includes/class-freemius.php:20949, includes/class-freemius.php:21056
|
430 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
431 |
msgid "Hmm"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/class-freemius.php:20664
|
435 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/class-freemius.php:20665, templates/account.php:123, templates/add-ons.php:250, templates/account/partials/addon.php:46
|
439 |
msgctxt "trial period"
|
440 |
msgid "Trial"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/class-freemius.php:20670
|
444 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: includes/class-freemius.php:20674, includes/class-freemius.php:20733
|
448 |
msgid "Please contact us here"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: includes/class-freemius.php:20685
|
452 |
msgid "Your plan was successfully activated."
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/class-freemius.php:20686
|
456 |
msgid "Your plan was successfully upgraded."
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: includes/class-freemius.php:20703
|
460 |
msgid "Your plan was successfully changed to %s."
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/class-freemius.php:20719
|
464 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/class-freemius.php:20721
|
468 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/class-freemius.php:20729
|
472 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/class-freemius.php:20742
|
476 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: includes/class-freemius.php:20768
|
480 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/class-freemius.php:20770
|
484 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: includes/class-freemius.php:20885
|
488 |
msgid "It looks like the license could not be activated."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: includes/class-freemius.php:20927
|
492 |
msgid "Your license was successfully activated."
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: includes/class-freemius.php:20953
|
496 |
msgid "It looks like your site currently doesn't have an active license."
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: includes/class-freemius.php:20977
|
500 |
msgid "It looks like the license deactivation failed."
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: includes/class-freemius.php:21006
|
504 |
msgid "Your %s license was successfully deactivated."
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: includes/class-freemius.php:21007
|
508 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/class-freemius.php:21010
|
512 |
msgid "O.K"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/class-freemius.php:21063
|
516 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: includes/class-freemius.php:21072
|
520 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: includes/class-freemius.php:21114
|
524 |
msgid "You are already running the %s in a trial mode."
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: includes/class-freemius.php:21125
|
528 |
msgid "You already utilized a trial before."
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: includes/class-freemius.php:21139
|
532 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: includes/class-freemius.php:21150
|
536 |
msgid "Plan %s does not support a trial period."
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: includes/class-freemius.php:21161
|
540 |
msgid "None of the %s's plans supports a trial period."
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: includes/class-freemius.php:21211
|
544 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
545 |
msgstr ""
|
546 |
|
547 |
+
#: includes/class-freemius.php:21247
|
548 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
549 |
msgstr ""
|
550 |
|
551 |
+
#: includes/class-freemius.php:21266
|
552 |
msgid "Your %s free trial was successfully cancelled."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: includes/class-freemius.php:21582
|
556 |
msgid "Version %s was released."
|
557 |
msgstr ""
|
558 |
|
559 |
+
#: includes/class-freemius.php:21582
|
560 |
msgid "Please download %s."
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: includes/class-freemius.php:21589
|
564 |
msgid "the latest %s version here"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/class-freemius.php:21594
|
568 |
msgid "New"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/class-freemius.php:21599
|
572 |
msgid "Seems like you got the latest release."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: includes/class-freemius.php:21600
|
576 |
msgid "You are all good!"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: includes/class-freemius.php:21903
|
580 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: includes/class-freemius.php:22043
|
584 |
msgid "Site successfully opted in."
|
585 |
msgstr ""
|
586 |
|
587 |
+
#: includes/class-freemius.php:22044, includes/class-freemius.php:23050
|
588 |
msgid "Awesome"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: includes/class-freemius.php:22060, templates/forms/optout.php:41
|
592 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: includes/class-freemius.php:22061
|
596 |
msgid "Thank you!"
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: includes/class-freemius.php:22068
|
600 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: includes/class-freemius.php:22226
|
604 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: includes/class-freemius.php:22232
|
608 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/class-freemius.php:22237
|
612 |
msgid "%s is the new owner of the account."
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: includes/class-freemius.php:22239
|
616 |
msgctxt "as congratulations"
|
617 |
msgid "Congrats"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: includes/class-freemius.php:22275
|
621 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: includes/class-freemius.php:22287
|
625 |
msgid "Please provide your full name."
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: includes/class-freemius.php:22292
|
629 |
msgid "Your name was successfully updated."
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: includes/class-freemius.php:22353
|
633 |
msgid "You have successfully updated your %s."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/class-freemius.php:22412
|
637 |
msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: includes/class-freemius.php:22415
|
641 |
msgid "Click here"
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: includes/class-freemius.php:22513
|
645 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: includes/class-freemius.php:22514
|
649 |
msgctxt "advance notice of something that will need attention."
|
650 |
msgid "Heads up"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: includes/class-freemius.php:23090
|
654 |
msgctxt "exclamation"
|
655 |
msgid "Hey"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: includes/class-freemius.php:23090
|
659 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: includes/class-freemius.php:23098
|
663 |
msgid "No commitment for %s days - cancel anytime!"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: includes/class-freemius.php:23099
|
667 |
msgid "No credit card required"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: includes/class-freemius.php:23106, templates/forms/trial-start.php:53
|
671 |
msgctxt "call to action"
|
672 |
msgid "Start free trial"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: includes/class-freemius.php:23183
|
676 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: includes/class-freemius.php:23192
|
680 |
msgid "Learn more"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: includes/class-freemius.php:23378, templates/account.php:558, templates/account.php:708, templates/connect.php:179, templates/connect.php:461, templates/forms/license-activation.php:27, templates/account/partials/addon.php:321
|
684 |
msgid "Activate License"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: includes/class-freemius.php:23379, templates/account.php:652, templates/account.php:707, templates/account/partials/addon.php:322, templates/account/partials/site.php:271
|
688 |
msgid "Change License"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: includes/class-freemius.php:23500, templates/account/partials/site.php:169
|
692 |
msgid "Opt Out"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/class-freemius.php:23502, includes/class-freemius.php:23508, templates/account/partials/site.php:49, templates/account/partials/site.php:169
|
696 |
msgid "Opt In"
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: includes/class-freemius.php:23738
|
700 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: includes/class-freemius.php:23746
|
704 |
msgid "Activate %s features"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: includes/class-freemius.php:23759
|
708 |
msgid "Please follow these steps to complete the upgrade"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-freemius.php:23763
|
712 |
msgid "Download the latest %s version"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/class-freemius.php:23767
|
716 |
msgid "Upload and activate the downloaded version"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/class-freemius.php:23769
|
720 |
msgid "How to upload and activate?"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/class-freemius.php:23903
|
724 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/class-freemius.php:24072
|
728 |
msgid "Auto installation only works for opted-in users."
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/class-freemius.php:24082, includes/class-freemius.php:24115, includes/class-fs-plugin-updater.php:1261, includes/class-fs-plugin-updater.php:1275
|
732 |
msgid "Invalid module ID."
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: includes/class-freemius.php:24091, includes/class-fs-plugin-updater.php:1297
|
736 |
msgid "Premium version already active."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: includes/class-freemius.php:24098
|
740 |
msgid "You do not have a valid license to access the premium version."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: includes/class-freemius.php:24105
|
744 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/class-freemius.php:24123, includes/class-fs-plugin-updater.php:1296
|
748 |
msgid "Premium add-on version already installed."
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/class-freemius.php:24473
|
752 |
msgid "View paid features"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/class-freemius.php:24795
|
756 |
msgid "Thank you so much for using %s and its add-ons!"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/class-freemius.php:24796
|
760 |
msgid "Thank you so much for using %s!"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/class-freemius.php:24802
|
764 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/class-freemius.php:24806
|
768 |
msgid "Thank you so much for using our products!"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/class-freemius.php:24807
|
772 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: includes/class-freemius.php:24826
|
776 |
msgid "%s and its add-ons"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: includes/class-freemius.php:24835
|
780 |
msgid "Products"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: includes/class-freemius.php:24842, templates/connect.php:275
|
784 |
msgid "Yes"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: includes/class-freemius.php:24843, templates/connect.php:276
|
788 |
msgid "send me security & feature updates, educational content and offers."
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: includes/class-freemius.php:24844, templates/connect.php:281
|
792 |
msgid "No"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/class-freemius.php:24846, templates/connect.php:283
|
796 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/class-freemius.php:24856
|
800 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: includes/class-freemius.php:24858, templates/connect.php:290
|
804 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: includes/class-freemius.php:25140
|
808 |
msgid "License key is empty."
|
809 |
msgstr ""
|
810 |
|
832 |
msgid "Important Upgrade Notice:"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/class-fs-plugin-updater.php:1326
|
836 |
msgid "Installing plugin: %s"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: includes/class-fs-plugin-updater.php:1367
|
840 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: includes/class-fs-plugin-updater.php:1549
|
844 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
845 |
msgstr ""
|
846 |
|
861 |
msgid "Install Free Version Update Now"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: includes/fs-plugin-info-dialog.php:745, templates/account.php:641
|
865 |
msgid "Install Update Now"
|
866 |
msgstr ""
|
867 |
|
878 |
msgid "Download Latest Free Version"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: includes/fs-plugin-info-dialog.php:772, templates/account.php:101, templates/add-ons.php:37, templates/account/partials/addon.php:25
|
882 |
msgctxt "as download latest version"
|
883 |
msgid "Download Latest"
|
884 |
msgstr ""
|
887 |
msgid "Activate this add-on"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: includes/fs-plugin-info-dialog.php:789, templates/connect.php:458
|
891 |
msgid "Activate Free Version"
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/fs-plugin-info-dialog.php:790, templates/account.php:125, templates/add-ons.php:330, templates/account/partials/addon.php:48
|
895 |
msgid "Activate"
|
896 |
msgstr ""
|
897 |
|
1020 |
msgid "Details"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/fs-plugin-info-dialog.php:1318, templates/account.php:112, templates/debug.php:201, templates/debug.php:238, templates/debug.php:455, templates/account/partials/addon.php:36
|
1024 |
msgctxt "product version"
|
1025 |
msgid "Version"
|
1026 |
msgstr ""
|
1034 |
msgid "Last Updated"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: includes/fs-plugin-info-dialog.php:1337, templates/account.php:527
|
1038 |
msgctxt "x-ago"
|
1039 |
msgid "%s ago"
|
1040 |
msgstr ""
|
1143 |
msgid "Latest Free Version Installed"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: templates/account.php:102, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:26, templates/account/partials/site.php:311
|
1147 |
msgid "Downgrading your plan"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: templates/account.php:103, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:27, templates/account/partials/site.php:312
|
1151 |
msgid "Cancelling the subscription"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
#. translators: %1$s: Either 'Downgrading your plan' or 'Cancelling the subscription'
|
1155 |
+
#: templates/account.php:105, templates/forms/subscription-cancellation.php:99, templates/account/partials/site.php:314
|
1156 |
msgid "%1$s will immediately stop all future recurring payments and your %2$s plan license will expire in %3$s."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: templates/account.php:106, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:30, templates/account/partials/site.php:315
|
1160 |
msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: templates/account.php:107, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:31
|
1164 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: templates/account.php:108, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:32, templates/account/partials/site.php:316
|
1168 |
msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: templates/account.php:109, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:33, templates/account/partials/site.php:317
|
1172 |
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1173 |
msgstr ""
|
1174 |
|
1175 |
#. translators: %s: Plan title (e.g. "Professional")
|
1176 |
+
#: templates/account.php:111, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:35
|
1177 |
msgid "Activate %s Plan"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
#. translators: %s: Time period (e.g. Auto renews in "2 months")
|
1181 |
+
#: templates/account.php:114, templates/account/partials/addon.php:38, templates/account/partials/site.php:291
|
1182 |
msgid "Auto renews in %s"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
#. translators: %s: Time period (e.g. Expires in "2 months")
|
1186 |
+
#: templates/account.php:116, templates/account/partials/addon.php:40, templates/account/partials/site.php:293
|
1187 |
msgid "Expires in %s"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
+
#: templates/account.php:117
|
1191 |
msgctxt "as synchronize license"
|
1192 |
msgid "Sync License"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: templates/account.php:118, templates/account/partials/addon.php:41
|
1196 |
msgid "Cancel Trial"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
+
#: templates/account.php:119, templates/account/partials/addon.php:42
|
1200 |
msgid "Change Plan"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: templates/account.php:120, templates/account/partials/addon.php:43
|
1204 |
msgctxt "verb"
|
1205 |
msgid "Upgrade"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: templates/account.php:122, templates/account/partials/addon.php:45, templates/account/partials/site.php:318
|
1209 |
msgctxt "verb"
|
1210 |
msgid "Downgrade"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: templates/account.php:124, templates/add-ons.php:246, templates/plugin-info/features.php:72, templates/account/partials/addon.php:47, templates/account/partials/site.php:33
|
1214 |
msgid "Free"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
+
#: templates/account.php:126, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:110, templates/account/partials/addon.php:49
|
1218 |
msgctxt "as product pricing plan"
|
1219 |
msgid "Plan"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: templates/account.php:127
|
1223 |
msgid "Bundle Plan"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: templates/account.php:250
|
1227 |
msgid "Free Trial"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: templates/account.php:261
|
1231 |
msgid "Account Details"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: templates/account.php:268, templates/forms/data-debug-mode.php:33
|
1235 |
msgid "Start Debug"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: templates/account.php:270
|
1239 |
msgid "Stop Debug"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: templates/account.php:277
|
1243 |
msgid "Billing & Invoices"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: templates/account.php:288
|
1247 |
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: templates/account.php:290
|
1251 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: templates/account.php:293
|
1255 |
msgid "Delete Account"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: templates/account.php:305, templates/account/partials/addon.php:231, templates/account/partials/deactivate-license-button.php:35
|
1259 |
msgid "Deactivate License"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
+
#: templates/account.php:328, templates/forms/subscription-cancellation.php:125
|
1263 |
msgid "Are you sure you want to proceed?"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
+
#: templates/account.php:328, templates/account/partials/addon.php:255
|
1267 |
msgid "Cancel Subscription"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: templates/account.php:357, templates/account/partials/addon.php:340
|
1271 |
msgctxt "as synchronize"
|
1272 |
msgid "Sync"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: templates/account.php:372, templates/debug.php:505
|
1276 |
msgid "Name"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
+
#: templates/account.php:378, templates/debug.php:506
|
1280 |
msgid "Email"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: templates/account.php:385, templates/debug.php:369, templates/debug.php:555
|
1284 |
msgid "User ID"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: templates/account.php:403, templates/account.php:721, templates/account.php:754, templates/debug.php:236, templates/debug.php:363, templates/debug.php:452, templates/debug.php:504, templates/debug.php:553, templates/debug.php:632, templates/account/payments.php:35, templates/debug/logger.php:21
|
1288 |
msgid "ID"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: templates/account.php:410
|
1292 |
msgid "Site ID"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: templates/account.php:413
|
1296 |
msgid "No ID"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: templates/account.php:418, templates/debug.php:243, templates/debug.php:372, templates/debug.php:456, templates/debug.php:508, templates/account/partials/site.php:227
|
1300 |
msgid "Public Key"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: templates/account.php:424, templates/debug.php:373, templates/debug.php:457, templates/debug.php:509, templates/account/partials/site.php:239
|
1304 |
msgid "Secret Key"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: templates/account.php:427
|
1308 |
msgctxt "as secret encryption key missing"
|
1309 |
msgid "No Secret"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: templates/account.php:454, templates/account/partials/site.php:120, templates/account/partials/site.php:122
|
1313 |
msgid "Trial"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: templates/account.php:481, templates/debug.php:561, templates/account/partials/site.php:260
|
1317 |
msgid "License Key"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: templates/account.php:512
|
1321 |
msgid "Join the Beta program"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: templates/account.php:518
|
1325 |
msgid "not verified"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: templates/account.php:527, templates/account/partials/addon.php:190
|
1329 |
msgid "Expired"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: templates/account.php:587
|
1333 |
msgid "Premium version"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: templates/account.php:589
|
1337 |
msgid "Free version"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
+
#: templates/account.php:601
|
1341 |
msgid "Verify Email"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: templates/account.php:615
|
1345 |
msgid "Download %s Version"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: templates/account.php:631
|
1349 |
msgid "Download Paid Version"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: templates/account.php:649, templates/account.php:892, templates/account/partials/site.php:248, templates/account/partials/site.php:270
|
1353 |
msgctxt "verb"
|
1354 |
msgid "Show"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: templates/account.php:664
|
1358 |
msgid "What is your %s?"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: templates/account.php:672, templates/account/billing.php:21
|
1362 |
msgctxt "verb"
|
1363 |
msgid "Edit"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: templates/account.php:676, templates/forms/user-change.php:27
|
1367 |
msgid "Change User"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: templates/account.php:700
|
1371 |
msgid "Sites"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: templates/account.php:713
|
1375 |
msgid "Search by address"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
+
#: templates/account.php:722, templates/debug.php:366
|
1379 |
msgid "Address"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
+
#: templates/account.php:723
|
1383 |
msgid "License"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
+
#: templates/account.php:724
|
1387 |
msgid "Plan"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
+
#: templates/account.php:757
|
1391 |
msgctxt "as software license"
|
1392 |
msgid "License"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: templates/account.php:886
|
1396 |
msgctxt "verb"
|
1397 |
msgid "Hide"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: templates/account.php:908, templates/forms/data-debug-mode.php:31
|
1401 |
msgid "Processing"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: templates/account.php:911
|
1405 |
msgid "Get updates for bleeding edge Beta versions of %s."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
#: templates/account.php:969
|
1409 |
msgid "Cancelling %s"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: templates/account.php:969, templates/account.php:986, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:133
|
1413 |
msgid "trial"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: templates/account.php:984, templates/forms/deactivation/form.php:150
|
1417 |
msgid "Cancelling %s..."
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: templates/account.php:987, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:134
|
1421 |
msgid "subscription"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: templates/account.php:1001
|
1425 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: templates/account.php:1075
|
1429 |
msgid "Disabling white-label mode"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: templates/account.php:1076
|
1433 |
msgid "Enabling white-label mode"
|
1434 |
msgstr ""
|
1435 |
|
1455 |
msgid "Installed"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
#: templates/admin-notice.php:13, templates/forms/license-activation.php:222, templates/forms/resend-key.php:77
|
1459 |
msgctxt "as close a window"
|
1460 |
msgid "Dismiss"
|
1461 |
msgstr ""
|
1510 |
msgid "Agree & Activate License"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: templates/connect.php:184
|
1514 |
+
msgid "Welcome to %s! To get started, please enter your license key:"
|
1515 |
msgstr ""
|
1516 |
|
1517 |
+
#: templates/connect.php:191
|
1518 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1519 |
msgstr ""
|
1520 |
|
1521 |
+
#: templates/connect.php:192
|
1522 |
msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1523 |
msgstr ""
|
1524 |
|
1525 |
+
#: templates/connect.php:198
|
1526 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1527 |
msgstr ""
|
1528 |
|
1529 |
+
#: templates/connect.php:199
|
1530 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1531 |
msgstr ""
|
1532 |
|
1533 |
+
#: templates/connect.php:233
|
1534 |
msgid "We're excited to introduce the Freemius network-level integration."
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: templates/connect.php:236
|
1538 |
msgid "During the update process we detected %d site(s) that are still pending license activation."
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: templates/connect.php:238
|
1542 |
msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: templates/connect.php:240
|
1546 |
msgid "%s's paid features"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
+
#: templates/connect.php:245
|
1550 |
msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1551 |
msgstr ""
|
1552 |
|
1553 |
+
#: templates/connect.php:247
|
1554 |
msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1555 |
msgstr ""
|
1556 |
|
1557 |
+
#: templates/connect.php:256, templates/forms/data-debug-mode.php:35, templates/forms/license-activation.php:49
|
1558 |
msgid "License key"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
+
#: templates/connect.php:259, templates/forms/license-activation.php:22
|
1562 |
msgid "Can't find your license key?"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
+
#: templates/connect.php:318, templates/connect.php:700, templates/forms/deactivation/retry-skip.php:20
|
1566 |
msgctxt "verb"
|
1567 |
msgid "Skip"
|
1568 |
msgstr ""
|
1569 |
|
1570 |
+
#: templates/connect.php:321
|
1571 |
msgid "Delegate to Site Admins"
|
1572 |
msgstr ""
|
1573 |
|
1574 |
+
#: templates/connect.php:321
|
1575 |
msgid "If you click it, this decision will be delegated to the sites administrators."
|
1576 |
msgstr ""
|
1577 |
|
1578 |
+
#: templates/connect.php:346
|
1579 |
+
msgid "License issues?"
|
1580 |
+
msgstr ""
|
1581 |
+
|
1582 |
+
#: templates/connect.php:362
|
1583 |
msgid "Your Profile Overview"
|
1584 |
msgstr ""
|
1585 |
|
1586 |
+
#: templates/connect.php:363
|
1587 |
msgid "Name and email address"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
+
#: templates/connect.php:370
|
1591 |
+
msgid "So you can manage and control your license remotely from the User Dashboard."
|
1592 |
+
msgstr ""
|
1593 |
+
|
1594 |
+
#: templates/connect.php:371
|
1595 |
msgid "Your Site Overview"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
+
#: templates/connect.php:372
|
1599 |
msgid "Site URL, WP version, PHP info"
|
1600 |
msgstr ""
|
1601 |
|
1603 |
msgid "Admin Notices"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
+
#: templates/connect.php:380, templates/connect.php:398
|
1607 |
msgid "Updates, announcements, marketing, no spam"
|
1608 |
msgstr ""
|
1609 |
|
1610 |
+
#: templates/connect.php:387
|
1611 |
+
msgid "So you can reuse the license when the %s is no longer active."
|
1612 |
+
msgstr ""
|
1613 |
+
|
1614 |
+
#: templates/connect.php:388
|
1615 |
+
msgid "Current %s Status"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
+
#: templates/connect.php:389
|
1619 |
+
msgid "Active, deactivated, or uninstalled"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
+
#: templates/connect.php:397
|
1623 |
msgid "Newsletter"
|
1624 |
msgstr ""
|
1625 |
|
1626 |
+
#: templates/connect.php:405
|
1627 |
msgid "Plugins & Themes"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: templates/connect.php:405
|
1631 |
+
msgid "optional"
|
1632 |
+
msgstr ""
|
1633 |
+
|
1634 |
+
#: templates/connect.php:406
|
1635 |
+
msgid "To help us troubleshoot any potential issues that may arise from other plugin or theme conflicts."
|
1636 |
+
msgstr ""
|
1637 |
+
|
1638 |
+
#: templates/connect.php:407
|
1639 |
msgid "Title, slug, version, and is active"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
#: templates/connect.php:424
|
1643 |
+
msgid "The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management."
|
1644 |
msgstr ""
|
1645 |
|
1646 |
#: templates/connect.php:426
|
1647 |
+
msgid "diagnostic data"
|
1648 |
+
msgstr ""
|
1649 |
+
|
1650 |
+
#: templates/connect.php:427
|
1651 |
+
msgid "Freemius is our licensing and software updates engine"
|
1652 |
+
msgstr ""
|
1653 |
+
|
1654 |
+
#: templates/connect.php:430
|
1655 |
msgid "What permissions are being granted?"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
+
#: templates/connect.php:457
|
1659 |
msgid "Don't have a license key?"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
+
#: templates/connect.php:460
|
1663 |
msgid "Have a license key?"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
+
#: templates/connect.php:468
|
1667 |
msgid "Privacy Policy"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: templates/connect.php:470
|
1671 |
msgid "License Agreement"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
+
#: templates/connect.php:470
|
1675 |
msgid "Terms of Service"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
+
#: templates/connect.php:866
|
1679 |
msgctxt "as in the process of sending an email"
|
1680 |
msgid "Sending email"
|
1681 |
msgstr ""
|
1682 |
|
1683 |
+
#: templates/connect.php:867
|
1684 |
msgctxt "as activating plugin"
|
1685 |
msgid "Activating"
|
1686 |
msgstr ""
|
2269 |
msgid "Update License"
|
2270 |
msgstr ""
|
2271 |
|
2272 |
+
#: templates/forms/license-activation.php:41
|
2273 |
+
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
2274 |
+
msgstr ""
|
2275 |
+
|
2276 |
+
#: templates/forms/license-activation.php:183
|
2277 |
msgid "Associate with the license owner's account."
|
2278 |
msgstr ""
|
2279 |
|
freemius/languages/index.php
CHANGED
File without changes
|
freemius/package.json
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
"author": "Freemius, Inc.",
|
5 |
"license": "GPL-3.0",
|
6 |
"homepage": "https://freemius.com",
|
7 |
-
"version": "2.4.
|
8 |
"main": "gulpfile.js",
|
9 |
"dependencies": {},
|
10 |
"scripts": {
|
4 |
"author": "Freemius, Inc.",
|
5 |
"license": "GPL-3.0",
|
6 |
"homepage": "https://freemius.com",
|
7 |
+
"version": "2.4.2",
|
8 |
"main": "gulpfile.js",
|
9 |
"dependencies": {},
|
10 |
"scripts": {
|
freemius/require.php
CHANGED
File without changes
|
freemius/start.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
-
$this_sdk_version = '2.4.
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
@@ -512,7 +512,7 @@
|
|
512 |
}
|
513 |
|
514 |
/**
|
515 |
-
* @param array <string,string> $module Plugin or Theme details.
|
516 |
*
|
517 |
* @return Freemius
|
518 |
* @throws Freemius_Exception
|
@@ -527,4 +527,4 @@
|
|
527 |
function fs_dump_log() {
|
528 |
FS_Logger::dump();
|
529 |
}
|
530 |
-
}
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
+
$this_sdk_version = '2.4.2';
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
512 |
}
|
513 |
|
514 |
/**
|
515 |
+
* @param array <string,string|bool|array> $module Plugin or Theme details.
|
516 |
*
|
517 |
* @return Freemius
|
518 |
* @throws Freemius_Exception
|
527 |
function fs_dump_log() {
|
528 |
FS_Logger::dump();
|
529 |
}
|
530 |
+
}
|
freemius/templates/account.php
CHANGED
@@ -21,7 +21,9 @@
|
|
21 |
/**
|
22 |
* @var FS_Plugin_Tag $update
|
23 |
*/
|
24 |
-
$update = $fs->
|
|
|
|
|
25 |
|
26 |
if ( is_object($update) ) {
|
27 |
/**
|
@@ -433,11 +435,11 @@
|
|
433 |
'value' => $fs->get_plugin_version()
|
434 |
);
|
435 |
|
436 |
-
if ( $is_premium && ! $is_whitelabeled ) {
|
437 |
$profile[] = array(
|
438 |
'id' => 'beta_program',
|
439 |
'title' => '',
|
440 |
-
'value' => $
|
441 |
);
|
442 |
}
|
443 |
|
21 |
/**
|
22 |
* @var FS_Plugin_Tag $update
|
23 |
*/
|
24 |
+
$update = $fs->has_release_on_freemius() ?
|
25 |
+
$fs->get_update( false, false, WP_FS__TIME_24_HOURS_IN_SEC / 24 ) :
|
26 |
+
null;
|
27 |
|
28 |
if ( is_object($update) ) {
|
29 |
/**
|
435 |
'value' => $fs->get_plugin_version()
|
436 |
);
|
437 |
|
438 |
+
if ( ! fs_is_network_admin() && $is_premium && ! $is_whitelabeled ) {
|
439 |
$profile[] = array(
|
440 |
'id' => 'beta_program',
|
441 |
'title' => '',
|
442 |
+
'value' => $site->is_beta
|
443 |
);
|
444 |
}
|
445 |
|
freemius/templates/account/billing.php
CHANGED
File without changes
|
freemius/templates/account/index.php
CHANGED
File without changes
|
freemius/templates/account/partials/activate-license-button.php
CHANGED
File without changes
|
freemius/templates/account/partials/addon.php
CHANGED
File without changes
|
freemius/templates/account/partials/deactivate-license-button.php
CHANGED
File without changes
|
freemius/templates/account/partials/index.php
CHANGED
File without changes
|
freemius/templates/account/partials/site.php
CHANGED
File without changes
|
freemius/templates/account/payments.php
CHANGED
File without changes
|
freemius/templates/add-ons.php
CHANGED
File without changes
|
freemius/templates/add-trial-to-pricing.php
CHANGED
File without changes
|
freemius/templates/admin-notice.php
CHANGED
File without changes
|
freemius/templates/ajax-loader.php
CHANGED
File without changes
|
freemius/templates/auto-installation.php
CHANGED
File without changes
|
freemius/templates/checkout.php
CHANGED
File without changes
|
freemius/templates/connect.php
CHANGED
@@ -181,12 +181,7 @@
|
|
181 |
|
182 |
$message = $fs->apply_filters(
|
183 |
'connect-message_on-premium',
|
184 |
-
|
185 |
-
'' :
|
186 |
-
/* translators: %s: name (e.g. Hey John,) */
|
187 |
-
$hey_x_text . '<br>'
|
188 |
-
) .
|
189 |
-
sprintf( fs_text_inline( 'Thanks for purchasing %s! To get started, please enter your license key:', 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
|
190 |
$first_name,
|
191 |
$fs->get_plugin_name()
|
192 |
);
|
@@ -347,6 +342,9 @@
|
|
347 |
} ?>><?php echo esc_html( $button_label ) ?></button>
|
348 |
</form>
|
349 |
<?php endif ?>
|
|
|
|
|
|
|
350 |
</div><?php
|
351 |
|
352 |
// Set core permission list items.
|
@@ -367,26 +365,30 @@
|
|
367 |
);
|
368 |
}
|
369 |
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
|
|
|
|
|
|
383 |
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
|
|
390 |
|
391 |
// Add newsletter permissions if enabled.
|
392 |
if ( $is_gdpr_required || $fs->is_permission_requested( 'newsletter' ) ) {
|
@@ -398,14 +400,15 @@
|
|
398 |
);
|
399 |
}
|
400 |
|
401 |
-
|
402 |
'icon-class' => 'dashicons dashicons-menu',
|
403 |
-
'label' => $fs->get_text_inline( 'Plugins & Themes', 'permissions-extensions' ),
|
|
|
404 |
'desc' => $fs->get_text_inline( 'Title, slug, version, and is active', 'permissions-extensions_desc' ),
|
405 |
'priority' => 25,
|
406 |
'optional' => true,
|
407 |
-
'default' => $fs->apply_filters( 'permission_extensions_default',
|
408 |
-
|
409 |
|
410 |
// Allow filtering of the permissions list.
|
411 |
$permissions = $fs->apply_filters( 'permission_list', $permissions );
|
@@ -417,13 +420,15 @@
|
|
417 |
<div class="fs-permissions">
|
418 |
<?php if ( $require_license_key ) : ?>
|
419 |
<p class="fs-license-sync-disclaimer"><?php
|
420 |
-
|
421 |
-
fs_esc_html_inline( 'The %1$s will
|
422 |
$fs->get_module_label( true ),
|
423 |
-
|
|
|
424 |
) ?></p>
|
425 |
-
<?php
|
426 |
<a class="fs-trigger" href="#" tabindex="1"><?php fs_esc_html_echo_inline( 'What permissions are being granted?', 'what-permissions', $slug ) ?></a>
|
|
|
427 |
<ul><?php
|
428 |
foreach ( $permissions as $id => $permission ) : ?>
|
429 |
<li id="fs-permission-<?php echo esc_attr( $id ); ?>"
|
@@ -436,7 +441,7 @@
|
|
436 |
<?php endif ?>
|
437 |
|
438 |
<div class="fs-permission-description">
|
439 |
-
<span
|
440 |
|
441 |
<p><?php echo esc_html( $permission['desc'] ); ?></p>
|
442 |
</div>
|
@@ -702,9 +707,16 @@
|
|
702 |
var ajaxOptin = ( requireLicenseKey || isNetworkActive );
|
703 |
|
704 |
$form.on('submit', function () {
|
705 |
-
|
706 |
-
|
707 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
|
709 |
/**
|
710 |
* @author Vova Feldman (@svovaf)
|
181 |
|
182 |
$message = $fs->apply_filters(
|
183 |
'connect-message_on-premium',
|
184 |
+
sprintf( fs_text_inline( 'Welcome to %s! To get started, please enter your license key:', 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
|
|
|
|
|
|
|
|
|
|
|
185 |
$first_name,
|
186 |
$fs->get_plugin_name()
|
187 |
);
|
342 |
} ?>><?php echo esc_html( $button_label ) ?></button>
|
343 |
</form>
|
344 |
<?php endif ?>
|
345 |
+
<?php if ( $require_license_key ) : ?>
|
346 |
+
<a id="license_issues_link" href="<?php echo $fs->apply_filters( 'known_license_issues_url', 'https://freemius.com/help/documentation/wordpress-sdk/license-activation-issues/' ) ?>" target="_blank"><?php fs_esc_html_echo_inline( 'License issues?', 'license-issues', $slug ) ?></a>
|
347 |
+
<?php endif ?>
|
348 |
</div><?php
|
349 |
|
350 |
// Set core permission list items.
|
365 |
);
|
366 |
}
|
367 |
|
368 |
+
$permissions['site'] = array(
|
369 |
+
'icon-class' => 'dashicons dashicons-admin-settings',
|
370 |
+
'tooltip' => ( $require_license_key ? sprintf( $fs->get_text_inline( 'So you can manage and control your license remotely from the User Dashboard.', 'permissions-site_tooltip' ), $fs->get_module_type() ) : '' ),
|
371 |
+
'label' => $fs->get_text_inline( 'Your Site Overview', 'permissions-site' ),
|
372 |
+
'desc' => $fs->get_text_inline( 'Site URL, WP version, PHP info', 'permissions-site_desc' ),
|
373 |
+
'priority' => 10,
|
374 |
+
);
|
375 |
+
|
376 |
+
if ( ! $require_license_key ) {
|
377 |
+
$permissions['notices'] = array(
|
378 |
+
'icon-class' => 'dashicons dashicons-testimonial',
|
379 |
+
'label' => $fs->get_text_inline( 'Admin Notices', 'permissions-admin-notices' ),
|
380 |
+
'desc' => $fs->get_text_inline( 'Updates, announcements, marketing, no spam', 'permissions-newsletter_desc' ),
|
381 |
+
'priority' => 13,
|
382 |
+
);
|
383 |
+
}
|
384 |
|
385 |
+
$permissions['events'] = array(
|
386 |
+
'icon-class' => 'dashicons dashicons-admin-' . ( $fs->is_plugin() ? 'plugins' : 'appearance' ),
|
387 |
+
'tooltip' => ( $require_license_key ? sprintf( $fs->get_text_inline( 'So you can reuse the license when the %s is no longer active.', 'permissions-events_tooltip' ), $fs->get_module_type() ) : '' ),
|
388 |
+
'label' => sprintf( $fs->get_text_inline( 'Current %s Status', 'permissions-events' ), ucfirst( $fs->get_module_type() ) ),
|
389 |
+
'desc' => $fs->get_text_inline( 'Active, deactivated, or uninstalled', 'permissions-events_desc' ),
|
390 |
+
'priority' => 20,
|
391 |
+
);
|
392 |
|
393 |
// Add newsletter permissions if enabled.
|
394 |
if ( $is_gdpr_required || $fs->is_permission_requested( 'newsletter' ) ) {
|
400 |
);
|
401 |
}
|
402 |
|
403 |
+
$permissions['extensions'] = array(
|
404 |
'icon-class' => 'dashicons dashicons-menu',
|
405 |
+
'label' => $fs->get_text_inline( 'Plugins & Themes', 'permissions-extensions' ) . ( $require_license_key ? ' (' . $fs->get_text_inline( 'optional' ) . ')' : '' ),
|
406 |
+
'tooltip' => $fs->get_text_inline( 'To help us troubleshoot any potential issues that may arise from other plugin or theme conflicts.', 'permissions-events_tooltip' ),
|
407 |
'desc' => $fs->get_text_inline( 'Title, slug, version, and is active', 'permissions-extensions_desc' ),
|
408 |
'priority' => 25,
|
409 |
'optional' => true,
|
410 |
+
'default' => $fs->apply_filters( 'permission_extensions_default', ! $require_license_key )
|
411 |
+
);
|
412 |
|
413 |
// Allow filtering of the permissions list.
|
414 |
$permissions = $fs->apply_filters( 'permission_list', $permissions );
|
420 |
<div class="fs-permissions">
|
421 |
<?php if ( $require_license_key ) : ?>
|
422 |
<p class="fs-license-sync-disclaimer"><?php
|
423 |
+
echo sprintf(
|
424 |
+
fs_esc_html_inline( 'The %1$s will periodically send %2$s to %3$s for security & feature updates delivery, and license management.', 'license-sync-disclaimer', $slug ),
|
425 |
$fs->get_module_label( true ),
|
426 |
+
sprintf('<a class="fs-trigger" href="#" tabindex="1">%s</a>', fs_esc_html_inline('diagnostic data', 'send-data')),
|
427 |
+
'<a class="fs-tooltip-trigger' . (is_rtl() ? ' rtl' : '') . '" href="' . $freemius_site_url . '" target="_blank" rel="noopener" tabindex="1">freemius.com <i class="dashicons dashicons-editor-help" style="text-decoration: none;"><span class="fs-tooltip" style="width: 170px">' . $fs->get_text_inline( 'Freemius is our licensing and software updates engine', 'permissions-extensions_desc' ) . '</span></i></a>'
|
428 |
) ?></p>
|
429 |
+
<?php else : ?>
|
430 |
<a class="fs-trigger" href="#" tabindex="1"><?php fs_esc_html_echo_inline( 'What permissions are being granted?', 'what-permissions', $slug ) ?></a>
|
431 |
+
<?php endif ?>
|
432 |
<ul><?php
|
433 |
foreach ( $permissions as $id => $permission ) : ?>
|
434 |
<li id="fs-permission-<?php echo esc_attr( $id ); ?>"
|
441 |
<?php endif ?>
|
442 |
|
443 |
<div class="fs-permission-description">
|
444 |
+
<span<?php if ( ! empty($permission['tooltip']) ) : ?> class="fs-tooltip-trigger"<?php endif ?>><?php echo esc_html( $permission['label'] ); ?><?php if ( ! empty($permission['tooltip']) ) : ?><i class="dashicons dashicons-editor-help"><span class="fs-tooltip" style="width: 200px"><?php echo $permission['tooltip'] ?></span></i><?php endif ?></span>
|
445 |
|
446 |
<p><?php echo esc_html( $permission['desc'] ); ?></p>
|
447 |
</div>
|
707 |
var ajaxOptin = ( requireLicenseKey || isNetworkActive );
|
708 |
|
709 |
$form.on('submit', function () {
|
710 |
+
var $extensionsPermission = $('#fs-permission-extensions .fs-switch'),
|
711 |
+
isExtensionsTrackingAllowed = ($extensionsPermission.length > 0) ?
|
712 |
+
$extensionsPermission.hasClass('fs-on') :
|
713 |
+
null;
|
714 |
+
|
715 |
+
if (null === isExtensionsTrackingAllowed) {
|
716 |
+
$('input[name=is_extensions_tracking_allowed]').remove();
|
717 |
+
} else {
|
718 |
+
$('input[name=is_extensions_tracking_allowed]').val(isExtensionsTrackingAllowed ? 1 : 0);
|
719 |
+
}
|
720 |
|
721 |
/**
|
722 |
* @author Vova Feldman (@svovaf)
|
freemius/templates/contact.php
CHANGED
File without changes
|
freemius/templates/debug.php
CHANGED
File without changes
|
freemius/templates/debug/api-calls.php
CHANGED
File without changes
|
freemius/templates/debug/index.php
CHANGED
File without changes
|
freemius/templates/debug/logger.php
CHANGED
File without changes
|
freemius/templates/debug/plugins-themes-sync.php
CHANGED
File without changes
|
freemius/templates/debug/scheduled-crons.php
CHANGED
File without changes
|
freemius/templates/email.php
CHANGED
File without changes
|
freemius/templates/firewall-issues-js.php
CHANGED
File without changes
|
freemius/templates/forms/affiliation.php
CHANGED
File without changes
|
freemius/templates/forms/data-debug-mode.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/contact.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/form.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/index.php
CHANGED
File without changes
|
freemius/templates/forms/deactivation/retry-skip.php
CHANGED
File without changes
|
freemius/templates/forms/index.php
CHANGED
File without changes
|
freemius/templates/forms/license-activation.php
CHANGED
@@ -115,13 +115,15 @@ HTML;
|
|
115 |
* @var FS_Plugin_License $license
|
116 |
*/
|
117 |
foreach ( $available_licenses as $license ) {
|
|
|
|
|
118 |
$label = sprintf(
|
119 |
"%s-Site %s License - %s",
|
120 |
( 1 == $license->quota ?
|
121 |
'Single' :
|
122 |
( $license->is_unlimited() ? 'Unlimited' : $license->quota )
|
123 |
),
|
124 |
-
|
125 |
$license->get_html_escaped_masked_secret_key()
|
126 |
);
|
127 |
|
115 |
* @var FS_Plugin_License $license
|
116 |
*/
|
117 |
foreach ( $available_licenses as $license ) {
|
118 |
+
$plan = $fs->_get_plan_by_id( $license->plan_id );
|
119 |
+
|
120 |
$label = sprintf(
|
121 |
"%s-Site %s License - %s",
|
122 |
( 1 == $license->quota ?
|
123 |
'Single' :
|
124 |
( $license->is_unlimited() ? 'Unlimited' : $license->quota )
|
125 |
),
|
126 |
+
( is_object( $plan ) ? $plan->title : '' ),
|
127 |
$license->get_html_escaped_masked_secret_key()
|
128 |
);
|
129 |
|
freemius/templates/forms/optout.php
CHANGED
File without changes
|
freemius/templates/forms/premium-versions-upgrade-handler.php
CHANGED
File without changes
|
freemius/templates/forms/premium-versions-upgrade-metadata.php
CHANGED
File without changes
|
freemius/templates/forms/resend-key.php
CHANGED
File without changes
|
freemius/templates/forms/subscription-cancellation.php
CHANGED
File without changes
|
freemius/templates/forms/trial-start.php
CHANGED
File without changes
|
freemius/templates/forms/user-change.php
CHANGED
File without changes
|
freemius/templates/gdpr-optin-js.php
CHANGED
File without changes
|
freemius/templates/index.php
CHANGED
File without changes
|
freemius/templates/js/index.php
CHANGED
File without changes
|
freemius/templates/js/jquery.content-change.php
CHANGED
File without changes
|
freemius/templates/js/open-license-activation.php
CHANGED
File without changes
|
freemius/templates/js/style-premium-theme.php
CHANGED
File without changes
|
freemius/templates/partials/index.php
CHANGED
File without changes
|
freemius/templates/partials/network-activation.php
CHANGED
File without changes
|
freemius/templates/plugin-icon.php
CHANGED
File without changes
|
freemius/templates/plugin-info/description.php
CHANGED
File without changes
|
freemius/templates/plugin-info/features.php
CHANGED
File without changes
|
freemius/templates/plugin-info/index.php
CHANGED
File without changes
|
freemius/templates/plugin-info/screenshots.php
CHANGED
File without changes
|
freemius/templates/powered-by.php
CHANGED
File without changes
|
freemius/templates/pricing.php
CHANGED
File without changes
|
freemius/templates/secure-https-header.php
CHANGED
File without changes
|
freemius/templates/sticky-admin-notice-js.php
CHANGED
File without changes
|
freemius/templates/tabs-capture-js.php
CHANGED
File without changes
|
freemius/templates/tabs.php
CHANGED
File without changes
|
includes/classes/admin/menu-editor.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Admin;
|
4 |
|
@@ -17,13 +22,17 @@ class Menu_Editor {
|
|
17 |
* Init
|
18 |
*/
|
19 |
public static function init() {
|
20 |
-
add_filter( 'wp_edit_nav_menu_walker',
|
21 |
-
add_action( 'admin_head-nav-menus.php',
|
22 |
-
add_action( 'admin_enqueue_scripts',
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
* Override the Admin Menu Walker
|
|
|
|
|
|
|
|
|
27 |
*/
|
28 |
public static function nav_menu_walker( $walker ) {
|
29 |
global $wp_version;
|
@@ -34,10 +43,10 @@ class Menu_Editor {
|
|
34 |
// not sure about this one, was part of the original solution.
|
35 |
doing_filter( 'plugins_loaded' ),
|
36 |
// No need if its already loaded by another plugin.
|
37 |
-
|
38 |
];
|
39 |
|
40 |
-
if ( in_array( true, $bail_early ) ) {
|
41 |
return $walker;
|
42 |
}
|
43 |
|
@@ -55,38 +64,39 @@ class Menu_Editor {
|
|
55 |
|
56 |
|
57 |
/**
|
58 |
-
*
|
59 |
*/
|
60 |
public static function register_metaboxes() {
|
61 |
-
add_meta_box( 'jp_user_menus', __( 'User Links', 'user-menus' ),
|
62 |
}
|
63 |
|
64 |
/**
|
65 |
-
*
|
|
|
|
|
66 |
*/
|
67 |
public static function nav_menu_metabox( $object ) {
|
68 |
global $_nav_menu_placeholder, $nav_menu_selected_id;
|
69 |
|
70 |
-
$link_types =
|
71 |
-
|
72 |
'object' => 'login',
|
73 |
'title' => __( 'Login', 'user-menus' ),
|
74 |
-
|
75 |
-
|
76 |
-
'object'
|
77 |
-
'title'
|
78 |
-
|
79 |
-
|
80 |
'object' => 'logout',
|
81 |
'title' => __( 'Logout', 'user-menus' ),
|
82 |
-
|
83 |
-
|
84 |
|
85 |
foreach ( $link_types as $key => $link ) {
|
86 |
-
|
87 |
$i = isset( $i ) ? $i + 1 : 1;
|
88 |
|
89 |
-
$link_types[ $key ] = (object) array_replace_recursive(
|
90 |
'type' => '',
|
91 |
'object' => '',
|
92 |
'title' => '',
|
@@ -99,22 +109,21 @@ class Menu_Editor {
|
|
99 |
'target' => '',
|
100 |
'attr_title' => '',
|
101 |
'description' => '',
|
102 |
-
'classes' =>
|
103 |
'xfn' => '',
|
104 |
-
|
105 |
-
|
106 |
}
|
107 |
|
108 |
-
$walker = new \Walker_Nav_Menu_Checklist;
|
109 |
|
110 |
-
$removed_args =
|
111 |
'action',
|
112 |
'customlink-tab',
|
113 |
'edit-menu-item',
|
114 |
'menu-item',
|
115 |
'page-tab',
|
116 |
'_wpnonce',
|
117 |
-
|
118 |
|
119 |
?>
|
120 |
|
@@ -126,56 +135,69 @@ class Menu_Editor {
|
|
126 |
<?php if ( $registration_disabled ) : ?>
|
127 |
<small>
|
128 |
<span class="dashicons dashicons-info"></span>
|
129 |
-
<?php
|
|
|
|
|
|
|
130 |
</small>
|
131 |
<?php endif; ?>
|
132 |
|
133 |
<ul id="user-menus-checklist-all" class="categorychecklist form-no-clear <?php echo $registration_disabled ? 'user-menus-registration-disabled' : ''; ?>">
|
134 |
-
<?php echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $link_types ), 0, (object)
|
135 |
</ul>
|
136 |
|
137 |
<p class="button-controls">
|
138 |
<span class="list-controls">
|
139 |
-
<a href="
|
140 |
-
|
|
|
141 |
'user-menus-all' => 'all',
|
142 |
'selectall' => 1,
|
143 |
-
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
</span>
|
146 |
|
147 |
<span class="add-to-menu">
|
148 |
-
<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-user-menus-menu-item" id="submit-user-menus-div" />
|
149 |
<span class="spinner"></span>
|
150 |
</span> </p>
|
151 |
</div>
|
152 |
</div>
|
153 |
|
154 |
<?php
|
155 |
-
|
156 |
}
|
157 |
|
158 |
/**
|
159 |
-
*
|
|
|
|
|
160 |
*/
|
161 |
public static function enqueue_scripts( $hook ) {
|
162 |
-
if (
|
163 |
return;
|
164 |
}
|
165 |
|
166 |
-
add_action( 'admin_footer',
|
167 |
|
168 |
-
// Use minified libraries if SCRIPT_DEBUG is turned off
|
169 |
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
|
170 |
|
171 |
-
wp_enqueue_script( 'jpum-scripts', \JP_User_Menus::$URL . 'assets/js/admin-general' . $suffix . '.js',
|
172 |
-
wp_enqueue_style( 'jpum-styles', \JP_User_Menus::$URL . 'assets/css/admin-general' . $suffix . '.css',
|
173 |
}
|
174 |
|
175 |
/**
|
176 |
-
*
|
177 |
*/
|
178 |
-
public static function media_templates() {
|
|
|
|
|
179 |
<script type="text/html" id="tmpl-jpum-user-codes">
|
180 |
<div class="jpum-user-codes">
|
181 |
<button type="button" title="<?php _e( 'Insert User Menu Codes', 'user-menus' ); ?>">
|
@@ -184,8 +206,8 @@ class Menu_Editor {
|
|
184 |
<ul>
|
185 |
<?php foreach ( Codes::valid_codes() as $code => $label ) : ?>
|
186 |
<li>
|
187 |
-
<a title="<?php echo $label; ?>" href="#" data-code="<?php echo $code; ?>">
|
188 |
-
<?php echo $label; ?>
|
189 |
</a>
|
190 |
</li>
|
191 |
<?php endforeach; ?>
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Admin menu editor class
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Admin;
|
9 |
|
22 |
* Init
|
23 |
*/
|
24 |
public static function init() {
|
25 |
+
add_filter( 'wp_edit_nav_menu_walker', [ __CLASS__, 'nav_menu_walker' ], 999999999 );
|
26 |
+
add_action( 'admin_head-nav-menus.php', [ __CLASS__, 'register_metaboxes' ] );
|
27 |
+
add_action( 'admin_enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
|
28 |
}
|
29 |
|
30 |
/**
|
31 |
* Override the Admin Menu Walker
|
32 |
+
*
|
33 |
+
* @param string $walker Current walker name.
|
34 |
+
*
|
35 |
+
* @return string
|
36 |
*/
|
37 |
public static function nav_menu_walker( $walker ) {
|
38 |
global $wp_version;
|
43 |
// not sure about this one, was part of the original solution.
|
44 |
doing_filter( 'plugins_loaded' ),
|
45 |
// No need if its already loaded by another plugin.
|
46 |
+
'Walker_Nav_Menu_Edit_Custom_Fields' === $walker,
|
47 |
];
|
48 |
|
49 |
+
if ( in_array( true, $bail_early, true ) ) {
|
50 |
return $walker;
|
51 |
}
|
52 |
|
64 |
|
65 |
|
66 |
/**
|
67 |
+
* Register metaboxes.
|
68 |
*/
|
69 |
public static function register_metaboxes() {
|
70 |
+
add_meta_box( 'jp_user_menus', __( 'User Links', 'user-menus' ), [ __CLASS__, 'nav_menu_metabox' ], 'nav-menus', 'side', 'default' );
|
71 |
}
|
72 |
|
73 |
/**
|
74 |
+
* Render nav menu metabox.
|
75 |
+
*
|
76 |
+
* @param mixed $object Nav menu object.
|
77 |
*/
|
78 |
public static function nav_menu_metabox( $object ) {
|
79 |
global $_nav_menu_placeholder, $nav_menu_selected_id;
|
80 |
|
81 |
+
$link_types = [
|
82 |
+
[
|
83 |
'object' => 'login',
|
84 |
'title' => __( 'Login', 'user-menus' ),
|
85 |
+
],
|
86 |
+
[
|
87 |
+
'object' => 'register',
|
88 |
+
'title' => __( 'Register', 'user-menus' ),
|
89 |
+
],
|
90 |
+
[
|
91 |
'object' => 'logout',
|
92 |
'title' => __( 'Logout', 'user-menus' ),
|
93 |
+
],
|
94 |
+
];
|
95 |
|
96 |
foreach ( $link_types as $key => $link ) {
|
|
|
97 |
$i = isset( $i ) ? $i + 1 : 1;
|
98 |
|
99 |
+
$link_types[ $key ] = (object) array_replace_recursive( [
|
100 |
'type' => '',
|
101 |
'object' => '',
|
102 |
'title' => '',
|
109 |
'target' => '',
|
110 |
'attr_title' => '',
|
111 |
'description' => '',
|
112 |
+
'classes' => [],
|
113 |
'xfn' => '',
|
114 |
+
], $link );
|
|
|
115 |
}
|
116 |
|
117 |
+
$walker = new \Walker_Nav_Menu_Checklist();
|
118 |
|
119 |
+
$removed_args = [
|
120 |
'action',
|
121 |
'customlink-tab',
|
122 |
'edit-menu-item',
|
123 |
'menu-item',
|
124 |
'page-tab',
|
125 |
'_wpnonce',
|
126 |
+
];
|
127 |
|
128 |
?>
|
129 |
|
135 |
<?php if ( $registration_disabled ) : ?>
|
136 |
<small>
|
137 |
<span class="dashicons dashicons-info"></span>
|
138 |
+
<?php
|
139 |
+
// translators: 1: link to registration page, 2: closing link tag.
|
140 |
+
echo esc_html( sprintf( __( 'Registration is %1$scurrently disabled%2$s on your site.', 'user-menus' ), '<a href="' . admin_url( 'options-general.php' ) . '">', '</a>' ) );
|
141 |
+
?>
|
142 |
</small>
|
143 |
<?php endif; ?>
|
144 |
|
145 |
<ul id="user-menus-checklist-all" class="categorychecklist form-no-clear <?php echo $registration_disabled ? 'user-menus-registration-disabled' : ''; ?>">
|
146 |
+
<?php echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $link_types ), 0, (object) [ 'walker' => $walker ] ); ?>
|
147 |
</ul>
|
148 |
|
149 |
<p class="button-controls">
|
150 |
<span class="list-controls">
|
151 |
+
<a href="
|
152 |
+
<?php
|
153 |
+
echo esc_url( add_query_arg( [
|
154 |
'user-menus-all' => 'all',
|
155 |
'selectall' => 1,
|
156 |
+
], remove_query_arg( $removed_args ) ) );
|
157 |
+
?>
|
158 |
+
#user-menus-div" class="select-all">
|
159 |
+
<?php
|
160 |
+
/* phpcs:ignore WordPress.Security.EscapeOutput.UnsafePrintingFunction */
|
161 |
+
_e( 'Select All', 'user-menus' );
|
162 |
+
?>
|
163 |
+
</a>
|
164 |
</span>
|
165 |
|
166 |
<span class="add-to-menu">
|
167 |
+
<input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu', 'user-menus' ); ?>" name="add-user-menus-menu-item" id="submit-user-menus-div" />
|
168 |
<span class="spinner"></span>
|
169 |
</span> </p>
|
170 |
</div>
|
171 |
</div>
|
172 |
|
173 |
<?php
|
|
|
174 |
}
|
175 |
|
176 |
/**
|
177 |
+
* Enqueue scripts and styles.
|
178 |
+
*
|
179 |
+
* @param string $hook Hook name.
|
180 |
*/
|
181 |
public static function enqueue_scripts( $hook ) {
|
182 |
+
if ( 'nav-menus.php' !== $hook ) {
|
183 |
return;
|
184 |
}
|
185 |
|
186 |
+
add_action( 'admin_footer', [ __CLASS__, 'media_templates' ] );
|
187 |
|
188 |
+
// Use minified libraries if SCRIPT_DEBUG is turned off.
|
189 |
$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
|
190 |
|
191 |
+
wp_enqueue_script( 'jpum-scripts', \JP_User_Menus::$URL . 'assets/js/admin-general' . $suffix . '.js', [ 'jquery', 'underscore' ], \JP_User_Menus::$VER, true );
|
192 |
+
wp_enqueue_style( 'jpum-styles', \JP_User_Menus::$URL . 'assets/css/admin-general' . $suffix . '.css', [ 'dashicons' ], \JP_User_Menus::$VER );
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* Render media templates.
|
197 |
*/
|
198 |
+
public static function media_templates() {
|
199 |
+
/* phpcs:disable WordPress.Security.EscapeOutput.UnsafePrintingFunction */
|
200 |
+
?>
|
201 |
<script type="text/html" id="tmpl-jpum-user-codes">
|
202 |
<div class="jpum-user-codes">
|
203 |
<button type="button" title="<?php _e( 'Insert User Menu Codes', 'user-menus' ); ?>">
|
206 |
<ul>
|
207 |
<?php foreach ( Codes::valid_codes() as $code => $label ) : ?>
|
208 |
<li>
|
209 |
+
<a title="<?php echo esc_attr( $label ); ?>" href="#" data-code="<?php echo esc_attr( $code ); ?>">
|
210 |
+
<?php echo esc_html( $label ); ?>
|
211 |
</a>
|
212 |
</li>
|
213 |
<?php endforeach; ?>
|
includes/classes/admin/menu-importer.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Admin;
|
4 |
|
@@ -16,7 +21,7 @@ class Menu_Importer {
|
|
16 |
* Init
|
17 |
*/
|
18 |
public static function init() {
|
19 |
-
add_action( 'admin_init',
|
20 |
}
|
21 |
|
22 |
/**
|
@@ -28,9 +33,7 @@ class Menu_Importer {
|
|
28 |
* @return void
|
29 |
*/
|
30 |
public static function register_importer() {
|
31 |
-
|
32 |
if ( defined( 'WP_LOAD_IMPORTERS' ) ) {
|
33 |
-
|
34 |
if ( ! class_exists( 'JP\UM\Importer\Menu' ) ) {
|
35 |
require_once \JP_User_Menus::$DIR . 'includes/classes/importer/menu.php';
|
36 |
}
|
@@ -41,11 +44,9 @@ class Menu_Importer {
|
|
41 |
'jpum_nav_menu_importer',
|
42 |
__( 'WP Nav Menus', 'user-menus' ),
|
43 |
__( 'Import nav menus and other menu item meta skipped by the default importer', 'user-menus' ),
|
44 |
-
|
45 |
);
|
46 |
-
|
47 |
}
|
48 |
-
|
49 |
}
|
50 |
}
|
51 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Menu importer class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Admin;
|
9 |
|
21 |
* Init
|
22 |
*/
|
23 |
public static function init() {
|
24 |
+
add_action( 'admin_init', [ __CLASS__, 'register_importer' ] );
|
25 |
}
|
26 |
|
27 |
/**
|
33 |
* @return void
|
34 |
*/
|
35 |
public static function register_importer() {
|
|
|
36 |
if ( defined( 'WP_LOAD_IMPORTERS' ) ) {
|
|
|
37 |
if ( ! class_exists( 'JP\UM\Importer\Menu' ) ) {
|
38 |
require_once \JP_User_Menus::$DIR . 'includes/classes/importer/menu.php';
|
39 |
}
|
44 |
'jpum_nav_menu_importer',
|
45 |
__( 'WP Nav Menus', 'user-menus' ),
|
46 |
__( 'Import nav menus and other menu item meta skipped by the default importer', 'user-menus' ),
|
47 |
+
[ $importer, 'dispatch' ]
|
48 |
);
|
|
|
49 |
}
|
|
|
50 |
}
|
51 |
}
|
52 |
|
includes/classes/admin/menu-settings.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Admin;
|
4 |
|
@@ -17,30 +22,30 @@ class Menu_Settings {
|
|
17 |
* Init
|
18 |
*/
|
19 |
public static function init() {
|
20 |
-
add_action( 'wp_nav_menu_item_custom_fields',
|
21 |
-
|
22 |
-
add_action( 'wp_update_nav_menu_item', array( __CLASS__, 'save' ), 10, 2 );
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
-
*
|
27 |
-
*
|
28 |
-
* @param $
|
29 |
-
* @param $
|
|
|
|
|
30 |
*/
|
31 |
public static function fields( $item_id, $item, $depth, $args ) {
|
32 |
-
|
33 |
$allowed_user_roles = static::allowed_user_roles();
|
34 |
|
35 |
wp_nonce_field( 'jpum-menu-editor-nonce', 'jpum-menu-editor-nonce' ); ?>
|
36 |
|
37 |
<p class="nav_item_options-avatar_size description description-wide">
|
38 |
|
39 |
-
<label for="jp_nav_item_options-avatar_size-<?php echo $item->ID; ?>">
|
40 |
|
41 |
-
|
42 |
|
43 |
-
<input type="number" min="0" step="1" name="jp_nav_item_options[<?php echo $item->ID; ?>][avatar_size]" id="jp_nav_item_options-avatar_size-<?php echo $item->ID; ?>" value="<?php
|
44 |
|
45 |
</label>
|
46 |
|
@@ -49,29 +54,29 @@ class Menu_Settings {
|
|
49 |
|
50 |
<?php
|
51 |
|
52 |
-
$which_users_options =
|
53 |
'' => __( 'Everyone', 'user-menus' ),
|
54 |
'logged_out' => __( 'Logged Out Users', 'user-menus' ),
|
55 |
'logged_in' => __( 'Logged In Users', 'user-menus' ),
|
56 |
-
|
57 |
-
|
58 |
-
if ( in_array( $item->object, array( 'login', 'register', 'logout' ) ) ) :
|
59 |
|
60 |
-
|
|
|
61 |
'current' => __( 'Current Page', 'user-menus' ),
|
62 |
'home' => __( 'Home Page', 'user-menus' ),
|
63 |
'custom' => __( 'Custom URL', 'user-menus' ),
|
64 |
-
|
|
|
65 |
|
66 |
<p class="nav_item_options-redirect_type description description-wide">
|
67 |
|
68 |
-
<label for="jp_nav_item_options-redirect_type-<?php echo $item->ID; ?>">
|
69 |
|
70 |
-
<?php
|
71 |
|
72 |
-
<select name="jp_nav_item_options[<?php echo $item->ID; ?>][redirect_type]" id="jp_nav_item_options-redirect_type-<?php echo $item->ID; ?>" class="widefat">
|
73 |
<?php foreach ( $redirect_types as $option => $label ) : ?>
|
74 |
-
<option value="<?php echo $option; ?>" <?php selected( $option, $item->redirect_type ); ?>>
|
75 |
<?php echo esc_html( $label ); ?>
|
76 |
</option>
|
77 |
<?php endforeach; ?>
|
@@ -83,11 +88,11 @@ class Menu_Settings {
|
|
83 |
|
84 |
<p class="nav_item_options-redirect_url description description-wide">
|
85 |
|
86 |
-
<label for="jp_nav_item_options-redirect_url-<?php echo $item->ID; ?>">
|
87 |
|
88 |
-
<?php
|
89 |
|
90 |
-
<input type="text" name="jp_nav_item_options[<?php echo $item->ID; ?>][redirect_url]" id="jp_nav_item_options-redirect_url-<?php echo $item->ID; ?>" value="<?php
|
91 |
|
92 |
</label>
|
93 |
|
@@ -95,38 +100,38 @@ class Menu_Settings {
|
|
95 |
|
96 |
<p class="nav_item_options-which_users description description-wide">
|
97 |
|
98 |
-
<label for="jp_nav_item_options-which_users-<?php echo $item->ID; ?>">
|
99 |
|
100 |
-
<?php
|
101 |
|
102 |
</label>
|
103 |
|
104 |
-
<select n id="jp_nav_item_options-which_users-<?php echo $item->ID; ?>" class="widefat" disabled="disabled">
|
105 |
<option>
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
</option>
|
114 |
</select>
|
115 |
|
116 |
</p>
|
117 |
|
118 |
-
<?php else: ?>
|
119 |
|
120 |
<p class="nav_item_options-which_users description description-wide">
|
121 |
|
122 |
-
<label for="jp_nav_item_options-which_users-<?php echo $item->ID; ?>">
|
123 |
|
124 |
-
<?php
|
125 |
|
126 |
-
<select name="jp_nav_item_options[<?php echo $item->ID; ?>][which_users]" id="jp_nav_item_options-which_users-<?php echo $item->ID; ?>" class="widefat">
|
127 |
-
|
128 |
-
<option value="<?php echo $option; ?>" <?php selected( $option, $item->which_users ); ?>>
|
129 |
-
|
130 |
</option>
|
131 |
<?php endforeach; ?>
|
132 |
</select>
|
@@ -138,15 +143,15 @@ class Menu_Settings {
|
|
138 |
<p class="nav_item_options-can_see description description-wide">
|
139 |
|
140 |
<label>
|
141 |
-
<input type="radio" name="jp_nav_item_options[<?php echo $item->ID; ?>][can_see]" value="yes" <?php checked( $item->can_see, 'yes' ); ?>/>
|
142 |
-
|
143 |
</label>
|
144 |
|
145 |
<br />
|
146 |
|
147 |
<label>
|
148 |
-
<input type="radio" name="jp_nav_item_options[<?php echo $item->ID; ?>][can_see]" value="no" <?php checked( $item->can_see, 'no' ); ?>/>
|
149 |
-
|
150 |
</label>
|
151 |
|
152 |
</p>
|
@@ -154,18 +159,21 @@ class Menu_Settings {
|
|
154 |
<p class="nav_item_options-roles description description-wide">
|
155 |
|
156 |
<?php foreach ( $allowed_user_roles as $option => $label ) : ?>
|
157 |
-
<label> <input type="checkbox" name="jp_nav_item_options[<?php echo $item->ID; ?>][roles][]" value="<?php echo $option; ?>" <?php checked( in_array( $option, $item->roles ), true ); ?>/>
|
158 |
<?php echo esc_html( $label ); ?>
|
159 |
</label>
|
160 |
<?php endforeach; ?>
|
161 |
|
162 |
</p>
|
163 |
|
164 |
-
|
|
|
165 |
}
|
166 |
|
167 |
/**
|
168 |
-
*
|
|
|
|
|
169 |
*/
|
170 |
public static function allowed_user_roles() {
|
171 |
global $wp_roles;
|
@@ -176,7 +184,7 @@ class Menu_Settings {
|
|
176 |
$roles = apply_filters( 'jpum_user_roles', $wp_roles->role_names );
|
177 |
|
178 |
if ( ! is_array( $roles ) || empty( $roles ) ) {
|
179 |
-
$roles =
|
180 |
}
|
181 |
}
|
182 |
|
@@ -184,20 +192,22 @@ class Menu_Settings {
|
|
184 |
}
|
185 |
|
186 |
/**
|
187 |
-
*
|
188 |
-
*
|
|
|
|
|
189 |
*/
|
190 |
public static function save( $menu_id, $item_id ) {
|
191 |
-
|
192 |
$allowed_roles = static::allowed_user_roles();
|
193 |
|
194 |
-
if ( empty( $_POST['jp_nav_item_options'][ $item_id ] ) || ! isset( $_POST['jpum-menu-editor-nonce'] ) || ! wp_verify_nonce( $_POST['jpum-menu-editor-nonce'], 'jpum-menu-editor-nonce' ) ) {
|
195 |
return;
|
196 |
}
|
197 |
|
198 |
-
|
|
|
199 |
|
200 |
-
if ( $item_options['which_users']
|
201 |
// Validate chosen roles and remove non-allowed roles.
|
202 |
foreach ( (array) $item_options['roles'] as $key => $role ) {
|
203 |
if ( ! array_key_exists( $role, $allowed_roles ) ) {
|
@@ -217,7 +227,6 @@ class Menu_Settings {
|
|
217 |
delete_post_meta( $item_id, '_jp_nav_item_options' );
|
218 |
}
|
219 |
}
|
220 |
-
|
221 |
}
|
222 |
|
223 |
Menu_Settings::init();
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Menu settings class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Admin;
|
9 |
|
22 |
* Init
|
23 |
*/
|
24 |
public static function init() {
|
25 |
+
add_action( 'wp_nav_menu_item_custom_fields', [ __CLASS__, 'fields' ], 10, 4 );
|
26 |
+
add_action( 'wp_update_nav_menu_item', [ __CLASS__, 'save' ], 10, 2 );
|
|
|
27 |
}
|
28 |
|
29 |
/**
|
30 |
+
* Render fields for each menu item.
|
31 |
+
*
|
32 |
+
* @param int $item_id Item ID.
|
33 |
+
* @param object $item Item object.
|
34 |
+
* @param int $depth Current menu item depth.
|
35 |
+
* @param array $args Additional array of arguments.
|
36 |
*/
|
37 |
public static function fields( $item_id, $item, $depth, $args ) {
|
|
|
38 |
$allowed_user_roles = static::allowed_user_roles();
|
39 |
|
40 |
wp_nonce_field( 'jpum-menu-editor-nonce', 'jpum-menu-editor-nonce' ); ?>
|
41 |
|
42 |
<p class="nav_item_options-avatar_size description description-wide">
|
43 |
|
44 |
+
<label for="jp_nav_item_options-avatar_size-<?php echo esc_attr( $item->ID ); ?>">
|
45 |
|
46 |
+
<?php echo esc_html( __( 'Avatar Size', 'user-menus' ) ); ?><br />
|
47 |
|
48 |
+
<input type="number" min="0" step="1" name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][avatar_size]" id="jp_nav_item_options-avatar_size-<?php echo esc_attr( $item->ID ); ?>" value="<?php echo esc_attr( $item->avatar_size ); ?>" class="widefat code" />
|
49 |
|
50 |
</label>
|
51 |
|
54 |
|
55 |
<?php
|
56 |
|
57 |
+
$which_users_options = [
|
58 |
'' => __( 'Everyone', 'user-menus' ),
|
59 |
'logged_out' => __( 'Logged Out Users', 'user-menus' ),
|
60 |
'logged_in' => __( 'Logged In Users', 'user-menus' ),
|
61 |
+
];
|
|
|
|
|
62 |
|
63 |
+
if ( in_array( $item->object, [ 'login', 'register', 'logout' ], true ) ) :
|
64 |
+
$redirect_types = [
|
65 |
'current' => __( 'Current Page', 'user-menus' ),
|
66 |
'home' => __( 'Home Page', 'user-menus' ),
|
67 |
'custom' => __( 'Custom URL', 'user-menus' ),
|
68 |
+
];
|
69 |
+
?>
|
70 |
|
71 |
<p class="nav_item_options-redirect_type description description-wide">
|
72 |
|
73 |
+
<label for="jp_nav_item_options-redirect_type-<?php echo esc_attr( $item->ID ); ?>">
|
74 |
|
75 |
+
<?php echo esc_html( __( 'Where should users be taken afterwards?', 'user-menus' ) ); ?><br />
|
76 |
|
77 |
+
<select name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][redirect_type]" id="jp_nav_item_options-redirect_type-<?php echo esc_attr( $item->ID ); ?>" class="widefat">
|
78 |
<?php foreach ( $redirect_types as $option => $label ) : ?>
|
79 |
+
<option value="<?php echo $option; ?>" <?php /*phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ selected( $option, $item->redirect_type ); ?>>
|
80 |
<?php echo esc_html( $label ); ?>
|
81 |
</option>
|
82 |
<?php endforeach; ?>
|
88 |
|
89 |
<p class="nav_item_options-redirect_url description description-wide">
|
90 |
|
91 |
+
<label for="jp_nav_item_options-redirect_url-<?php echo esc_attr( $item->ID ); ?>">
|
92 |
|
93 |
+
<?php echo esc_html( __( 'Enter a url user should be redirected to', 'user-menus' ) ); ?><br />
|
94 |
|
95 |
+
<input type="text" name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][redirect_url]" id="jp_nav_item_options-redirect_url-<?php echo esc_attr( $item->ID ); ?>" value="<?php echo esc_attr( $item->redirect_url ); ?>" class="widefat code" />
|
96 |
|
97 |
</label>
|
98 |
|
100 |
|
101 |
<p class="nav_item_options-which_users description description-wide">
|
102 |
|
103 |
+
<label for="jp_nav_item_options-which_users-<?php echo esc_attr( $item->ID ); ?>">
|
104 |
|
105 |
+
<?php echo esc_html( __( 'Who can see this link?', 'user-menus' ) ); ?>
|
106 |
|
107 |
</label>
|
108 |
|
109 |
+
<select n id="jp_nav_item_options-which_users-<?php echo esc_attr( $item->ID ); ?>" class="widefat" disabled="disabled">
|
110 |
<option>
|
111 |
+
<?php
|
112 |
+
if ( 'logout' === $item->object ) {
|
113 |
+
echo esc_html( $which_users_options['logged_in'] );
|
114 |
+
} else {
|
115 |
+
echo esc_html( $which_users_options['logged_out'] );
|
116 |
+
}
|
117 |
+
?>
|
118 |
</option>
|
119 |
</select>
|
120 |
|
121 |
</p>
|
122 |
|
123 |
+
<?php else : ?>
|
124 |
|
125 |
<p class="nav_item_options-which_users description description-wide">
|
126 |
|
127 |
+
<label for="jp_nav_item_options-which_users-<?php echo esc_attr( $item->ID ); ?>">
|
128 |
|
129 |
+
<?php echo esc_html( __( 'Who can see this link?', 'user-menus' ) ); ?><br />
|
130 |
|
131 |
+
<select name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][which_users]" id="jp_nav_item_options-which_users-<?php echo esc_attr( $item->ID ); ?>" class="widefat">
|
132 |
+
<?php foreach ( $which_users_options as $option => $label ) : ?>
|
133 |
+
<option value="<?php echo $option; ?>" <?php /*phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ selected( $option, $item->which_users ); ?>>
|
134 |
+
<?php echo esc_html( $label ); ?>
|
135 |
</option>
|
136 |
<?php endforeach; ?>
|
137 |
</select>
|
143 |
<p class="nav_item_options-can_see description description-wide">
|
144 |
|
145 |
<label>
|
146 |
+
<input type="radio" name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][can_see]" value="yes" <?php checked( $item->can_see, 'yes' ); ?>/>
|
147 |
+
<?php echo esc_html( __( 'Choose which roles can see this link', 'user-menus' ) ); ?>
|
148 |
</label>
|
149 |
|
150 |
<br />
|
151 |
|
152 |
<label>
|
153 |
+
<input type="radio" name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][can_see]" value="no" <?php checked( $item->can_see, 'no' ); ?>/>
|
154 |
+
<?php echo esc_html( __( 'Choose which roles won\'t see this link', 'user-menus' ) ); ?>
|
155 |
</label>
|
156 |
|
157 |
</p>
|
159 |
<p class="nav_item_options-roles description description-wide">
|
160 |
|
161 |
<?php foreach ( $allowed_user_roles as $option => $label ) : ?>
|
162 |
+
<label> <input type="checkbox" name="jp_nav_item_options[<?php echo esc_attr( $item->ID ); ?>][roles][]" value="<?php echo $option; ?>" <?php /*phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */ checked( in_array( esc_attr( $option ), $item->roles, true ), true ); ?>/>
|
163 |
<?php echo esc_html( $label ); ?>
|
164 |
</label>
|
165 |
<?php endforeach; ?>
|
166 |
|
167 |
</p>
|
168 |
|
169 |
+
<?php
|
170 |
+
endif;
|
171 |
}
|
172 |
|
173 |
/**
|
174 |
+
* Get array of allowed user roles.
|
175 |
+
*
|
176 |
+
* @return array
|
177 |
*/
|
178 |
public static function allowed_user_roles() {
|
179 |
global $wp_roles;
|
184 |
$roles = apply_filters( 'jpum_user_roles', $wp_roles->role_names );
|
185 |
|
186 |
if ( ! is_array( $roles ) || empty( $roles ) ) {
|
187 |
+
$roles = [];
|
188 |
}
|
189 |
}
|
190 |
|
192 |
}
|
193 |
|
194 |
/**
|
195 |
+
* Save menu item data.
|
196 |
+
*
|
197 |
+
* @param int $menu_id Menu ID.
|
198 |
+
* @param int $item_id Item ID.
|
199 |
*/
|
200 |
public static function save( $menu_id, $item_id ) {
|
|
|
201 |
$allowed_roles = static::allowed_user_roles();
|
202 |
|
203 |
+
if ( empty( $_POST['jp_nav_item_options'][ $item_id ] ) || ! isset( $_POST['jpum-menu-editor-nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['jpum-menu-editor-nonce'] ) ), 'jpum-menu-editor-nonce' ) ) {
|
204 |
return;
|
205 |
}
|
206 |
|
207 |
+
/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized */
|
208 |
+
$item_options = Item::parse_options( wp_unslash( $_POST['jp_nav_item_options'][ $item_id ] ) );
|
209 |
|
210 |
+
if ( 'logged_in' === $item_options['which_users'] ) {
|
211 |
// Validate chosen roles and remove non-allowed roles.
|
212 |
foreach ( (array) $item_options['roles'] as $key => $role ) {
|
213 |
if ( ! array_key_exists( $role, $allowed_roles ) ) {
|
227 |
delete_post_meta( $item_id, '_jp_nav_item_options' );
|
228 |
}
|
229 |
}
|
|
|
230 |
}
|
231 |
|
232 |
Menu_Settings::init();
|
includes/classes/admin/reviews.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Admin;
|
4 |
|
@@ -23,11 +28,11 @@ class Reviews {
|
|
23 |
public static $api_url;
|
24 |
|
25 |
/**
|
26 |
-
*
|
27 |
*/
|
28 |
public static function init() {
|
29 |
-
add_action( 'admin_init',
|
30 |
-
add_action( 'wp_ajax_jpum_review_action',
|
31 |
}
|
32 |
|
33 |
/**
|
@@ -36,9 +41,9 @@ class Reviews {
|
|
36 |
public static function hooks() {
|
37 |
if ( is_admin() && current_user_can( 'edit_theme_options' ) ) {
|
38 |
self::installed_on();
|
39 |
-
add_action( 'admin_notices',
|
40 |
-
add_action( 'network_admin_notices',
|
41 |
-
add_action( 'user_admin_notices',
|
42 |
}
|
43 |
}
|
44 |
|
@@ -62,16 +67,17 @@ class Reviews {
|
|
62 |
* AJAX Handler
|
63 |
*/
|
64 |
public static function ajax_handler() {
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
66 |
'group' => self::get_trigger_group(),
|
67 |
'code' => self::get_trigger_code(),
|
68 |
'pri' => self::get_current_trigger( 'pri' ),
|
69 |
'reason' => 'maybe_later',
|
70 |
-
|
71 |
-
|
72 |
-
if ( ! wp_verify_nonce( $_REQUEST['nonce'], 'jpum_review_action' ) ) {
|
73 |
-
wp_send_json_error();
|
74 |
-
}
|
75 |
|
76 |
try {
|
77 |
$user_id = get_current_user_id();
|
@@ -92,27 +98,27 @@ class Reviews {
|
|
92 |
}
|
93 |
|
94 |
wp_send_json_success();
|
95 |
-
|
96 |
} catch ( \Exception $e ) {
|
97 |
wp_send_json_error( $e );
|
98 |
}
|
99 |
}
|
100 |
|
101 |
/**
|
|
|
|
|
102 |
* @return int|string
|
103 |
*/
|
104 |
public static function get_trigger_group() {
|
105 |
static $selected;
|
106 |
|
107 |
if ( ! isset( $selected ) ) {
|
108 |
-
|
109 |
$dismissed_triggers = self::dismissed_triggers();
|
110 |
|
111 |
$triggers = self::triggers();
|
112 |
|
113 |
foreach ( $triggers as $g => $group ) {
|
114 |
foreach ( $group['triggers'] as $t => $trigger ) {
|
115 |
-
if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
116 |
$selected = $g;
|
117 |
break;
|
118 |
}
|
@@ -128,18 +134,19 @@ class Reviews {
|
|
128 |
}
|
129 |
|
130 |
/**
|
|
|
|
|
131 |
* @return int|string
|
132 |
*/
|
133 |
public static function get_trigger_code() {
|
134 |
static $selected;
|
135 |
|
136 |
if ( ! isset( $selected ) ) {
|
137 |
-
|
138 |
$dismissed_triggers = self::dismissed_triggers();
|
139 |
|
140 |
foreach ( self::triggers() as $g => $group ) {
|
141 |
foreach ( $group['triggers'] as $t => $trigger ) {
|
142 |
-
if ( ! in_array( false, $trigger['conditions'] ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
143 |
$selected = $t;
|
144 |
break;
|
145 |
}
|
@@ -155,7 +162,9 @@ class Reviews {
|
|
155 |
}
|
156 |
|
157 |
/**
|
158 |
-
*
|
|
|
|
|
159 |
*
|
160 |
* @return bool|mixed|void
|
161 |
*/
|
@@ -189,7 +198,7 @@ class Reviews {
|
|
189 |
$dismissed_triggers = get_user_meta( $user_id, '_jpum_reviews_dismissed_triggers', true );
|
190 |
|
191 |
if ( ! $dismissed_triggers ) {
|
192 |
-
$dismissed_triggers =
|
193 |
}
|
194 |
|
195 |
return $dismissed_triggers;
|
@@ -217,50 +226,50 @@ class Reviews {
|
|
217 |
/**
|
218 |
* Gets a list of triggers.
|
219 |
*
|
220 |
-
* @param
|
221 |
-
* @param
|
222 |
*
|
223 |
-
* @return
|
224 |
*/
|
225 |
public static function triggers( $group = null, $code = null ) {
|
226 |
static $triggers;
|
227 |
|
228 |
if ( ! isset( $triggers ) ) {
|
229 |
-
|
230 |
$time_message = __( 'Hi there! You\'ve been using the User Menus plugin on your site for %s now - We hope it\'s been helpful. If you\'re enjoying the plugin, would you mind rating it 5-stars to help spread the word?', 'user-menus' );
|
231 |
-
$triggers =
|
232 |
-
'time_installed' =>
|
233 |
-
'triggers' =>
|
234 |
-
'one_week' =>
|
235 |
'message' => sprintf( $time_message, __( '2 weeks', 'user-menus' ) ),
|
236 |
-
'conditions' =>
|
237 |
strtotime( self::installed_on() . ' +2 weeks' ) < time(),
|
238 |
-
|
239 |
'link' => 'https://wordpress.org/support/plugin/user-menus/reviews/?rate=5#rate-response',
|
240 |
'pri' => 10,
|
241 |
-
|
242 |
-
'three_months' =>
|
243 |
'message' => sprintf( $time_message, __( '3 months', 'user-menus' ) ),
|
244 |
-
'conditions' =>
|
245 |
strtotime( self::installed_on() . ' +3 months' ) < time(),
|
246 |
-
|
247 |
'link' => 'https://wordpress.org/support/plugin/user-menus/reviews/?rate=5#rate-response',
|
248 |
'pri' => 20,
|
249 |
-
|
250 |
|
251 |
-
|
252 |
'pri' => 10,
|
253 |
-
|
254 |
-
|
255 |
|
256 |
$triggers = apply_filters( 'jpum_reviews_triggers', $triggers );
|
257 |
|
258 |
-
// Sort Groups
|
259 |
-
uasort( $triggers,
|
260 |
|
261 |
// Sort each groups triggers.
|
262 |
foreach ( $triggers as $k => $v ) {
|
263 |
-
uasort( $triggers[ $k ]['triggers'],
|
264 |
}
|
265 |
}
|
266 |
|
@@ -270,10 +279,10 @@ class Reviews {
|
|
270 |
}
|
271 |
|
272 |
if ( ! isset( $code ) ) {
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
}
|
278 |
|
279 |
return $triggers;
|
@@ -300,9 +309,9 @@ class Reviews {
|
|
300 |
<script type="text/javascript">
|
301 |
(function ($) {
|
302 |
var trigger = {
|
303 |
-
group: '<?php echo $group; ?>',
|
304 |
-
code: '<?php echo $code; ?>',
|
305 |
-
pri: '<?php echo $pri; ?>'
|
306 |
};
|
307 |
|
308 |
function dismiss(reason) {
|
@@ -312,7 +321,7 @@ class Reviews {
|
|
312 |
url: ajaxurl,
|
313 |
data: {
|
314 |
action: 'jpum_review_action',
|
315 |
-
nonce: '<?php echo wp_create_nonce( 'jpum_review_action' ); ?>',
|
316 |
group: trigger.group,
|
317 |
code: trigger.code,
|
318 |
pri: trigger.pri,
|
@@ -324,12 +333,12 @@ class Reviews {
|
|
324 |
$.ajax({
|
325 |
method: "POST",
|
326 |
dataType: "json",
|
327 |
-
url: '<?php echo self::$api_url; ?>',
|
328 |
data: {
|
329 |
trigger_group: trigger.group,
|
330 |
trigger_code: trigger.code,
|
331 |
reason: reason,
|
332 |
-
uuid: '<?php echo $uuid; ?>'
|
333 |
}
|
334 |
});
|
335 |
<?php endif; ?>
|
@@ -376,27 +385,27 @@ class Reviews {
|
|
376 |
<div class="notice notice-success is-dismissible jpum-notice">
|
377 |
|
378 |
<p>
|
379 |
-
<img class="logo" src="<?php echo \JP_User_Menus::$URL; ?>assets/images/icon-128x128.png" />
|
380 |
<strong>
|
381 |
-
<?php echo $trigger['message']; ?>
|
382 |
<br />
|
383 |
~<a target="_blank" href="https://twitter.com/danieliser" title="Follow Daniel on Twitter">@danieliser</a>
|
384 |
</strong>
|
385 |
</p>
|
386 |
<ul>
|
387 |
<li>
|
388 |
-
<a class="jpum-dismiss" target="_blank" href="<?php echo $trigger['link']; ?>>" data-reason="am_now">
|
389 |
-
<strong><?php
|
390 |
</a>
|
391 |
</li>
|
392 |
<li>
|
393 |
<a href="#" class="jpum-dismiss" data-reason="maybe_later">
|
394 |
-
<?php
|
395 |
</a>
|
396 |
</li>
|
397 |
<li>
|
398 |
<a href="#" class="jpum-dismiss" data-reason="already_did">
|
399 |
-
<?php
|
400 |
</a>
|
401 |
</li>
|
402 |
</ul>
|
@@ -414,13 +423,13 @@ class Reviews {
|
|
414 |
public static function hide_notices() {
|
415 |
$code = self::get_trigger_code();
|
416 |
|
417 |
-
$conditions =
|
418 |
self::already_did(),
|
419 |
self::last_dismissed() && strtotime( self::last_dismissed() . ' +2 weeks' ) > time(),
|
420 |
empty( $code ),
|
421 |
-
|
422 |
|
423 |
-
return in_array( true, $conditions );
|
424 |
}
|
425 |
|
426 |
/**
|
@@ -435,10 +444,10 @@ class Reviews {
|
|
435 |
}
|
436 |
|
437 |
/**
|
438 |
-
* Sort array by priority value
|
439 |
*
|
440 |
-
* @param $a
|
441 |
-
* @param $b
|
442 |
*
|
443 |
* @return int
|
444 |
*/
|
@@ -453,8 +462,8 @@ class Reviews {
|
|
453 |
/**
|
454 |
* Sort array in reverse by priority value
|
455 |
*
|
456 |
-
* @param $a
|
457 |
-
* @param $b
|
458 |
*
|
459 |
* @return int
|
460 |
*/
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Review request class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Admin;
|
9 |
|
28 |
public static $api_url;
|
29 |
|
30 |
/**
|
31 |
+
* Initialize.
|
32 |
*/
|
33 |
public static function init() {
|
34 |
+
add_action( 'admin_init', [ __CLASS__, 'hooks' ] );
|
35 |
+
add_action( 'wp_ajax_jpum_review_action', [ __CLASS__, 'ajax_handler' ] );
|
36 |
}
|
37 |
|
38 |
/**
|
41 |
public static function hooks() {
|
42 |
if ( is_admin() && current_user_can( 'edit_theme_options' ) ) {
|
43 |
self::installed_on();
|
44 |
+
add_action( 'admin_notices', [ __CLASS__, 'admin_notices' ] );
|
45 |
+
add_action( 'network_admin_notices', [ __CLASS__, 'admin_notices' ] );
|
46 |
+
add_action( 'user_admin_notices', [ __CLASS__, 'admin_notices' ] );
|
47 |
}
|
48 |
}
|
49 |
|
67 |
* AJAX Handler
|
68 |
*/
|
69 |
public static function ajax_handler() {
|
70 |
+
/* phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated */
|
71 |
+
if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['nonce'] ) ), 'jpum_review_action' ) ) {
|
72 |
+
wp_send_json_error();
|
73 |
+
}
|
74 |
+
|
75 |
+
$args = wp_parse_args( $_REQUEST, [
|
76 |
'group' => self::get_trigger_group(),
|
77 |
'code' => self::get_trigger_code(),
|
78 |
'pri' => self::get_current_trigger( 'pri' ),
|
79 |
'reason' => 'maybe_later',
|
80 |
+
] );
|
|
|
|
|
|
|
|
|
81 |
|
82 |
try {
|
83 |
$user_id = get_current_user_id();
|
98 |
}
|
99 |
|
100 |
wp_send_json_success();
|
|
|
101 |
} catch ( \Exception $e ) {
|
102 |
wp_send_json_error( $e );
|
103 |
}
|
104 |
}
|
105 |
|
106 |
/**
|
107 |
+
* Get review trigger group.
|
108 |
+
*
|
109 |
* @return int|string
|
110 |
*/
|
111 |
public static function get_trigger_group() {
|
112 |
static $selected;
|
113 |
|
114 |
if ( ! isset( $selected ) ) {
|
|
|
115 |
$dismissed_triggers = self::dismissed_triggers();
|
116 |
|
117 |
$triggers = self::triggers();
|
118 |
|
119 |
foreach ( $triggers as $g => $group ) {
|
120 |
foreach ( $group['triggers'] as $t => $trigger ) {
|
121 |
+
if ( ! in_array( false, $trigger['conditions'], true ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
122 |
$selected = $g;
|
123 |
break;
|
124 |
}
|
134 |
}
|
135 |
|
136 |
/**
|
137 |
+
* Get review trigger code.
|
138 |
+
*
|
139 |
* @return int|string
|
140 |
*/
|
141 |
public static function get_trigger_code() {
|
142 |
static $selected;
|
143 |
|
144 |
if ( ! isset( $selected ) ) {
|
|
|
145 |
$dismissed_triggers = self::dismissed_triggers();
|
146 |
|
147 |
foreach ( self::triggers() as $g => $group ) {
|
148 |
foreach ( $group['triggers'] as $t => $trigger ) {
|
149 |
+
if ( ! in_array( false, $trigger['conditions'], true ) && ( empty( $dismissed_triggers[ $g ] ) || $dismissed_triggers[ $g ] < $trigger['pri'] ) ) {
|
150 |
$selected = $t;
|
151 |
break;
|
152 |
}
|
162 |
}
|
163 |
|
164 |
/**
|
165 |
+
* Get current trigger.
|
166 |
+
*
|
167 |
+
* @param string $key Trigger key string.
|
168 |
*
|
169 |
* @return bool|mixed|void
|
170 |
*/
|
198 |
$dismissed_triggers = get_user_meta( $user_id, '_jpum_reviews_dismissed_triggers', true );
|
199 |
|
200 |
if ( ! $dismissed_triggers ) {
|
201 |
+
$dismissed_triggers = [];
|
202 |
}
|
203 |
|
204 |
return $dismissed_triggers;
|
226 |
/**
|
227 |
* Gets a list of triggers.
|
228 |
*
|
229 |
+
* @param string $group Group key.
|
230 |
+
* @param string $code Trigger ID.
|
231 |
*
|
232 |
+
* @return array
|
233 |
*/
|
234 |
public static function triggers( $group = null, $code = null ) {
|
235 |
static $triggers;
|
236 |
|
237 |
if ( ! isset( $triggers ) ) {
|
238 |
+
/* phpcs:ignore WordPress.WP.I18n.MissingTranslatorsComment */
|
239 |
$time_message = __( 'Hi there! You\'ve been using the User Menus plugin on your site for %s now - We hope it\'s been helpful. If you\'re enjoying the plugin, would you mind rating it 5-stars to help spread the word?', 'user-menus' );
|
240 |
+
$triggers = [
|
241 |
+
'time_installed' => [
|
242 |
+
'triggers' => [
|
243 |
+
'one_week' => [
|
244 |
'message' => sprintf( $time_message, __( '2 weeks', 'user-menus' ) ),
|
245 |
+
'conditions' => [
|
246 |
strtotime( self::installed_on() . ' +2 weeks' ) < time(),
|
247 |
+
],
|
248 |
'link' => 'https://wordpress.org/support/plugin/user-menus/reviews/?rate=5#rate-response',
|
249 |
'pri' => 10,
|
250 |
+
],
|
251 |
+
'three_months' => [
|
252 |
'message' => sprintf( $time_message, __( '3 months', 'user-menus' ) ),
|
253 |
+
'conditions' => [
|
254 |
strtotime( self::installed_on() . ' +3 months' ) < time(),
|
255 |
+
],
|
256 |
'link' => 'https://wordpress.org/support/plugin/user-menus/reviews/?rate=5#rate-response',
|
257 |
'pri' => 20,
|
258 |
+
],
|
259 |
|
260 |
+
],
|
261 |
'pri' => 10,
|
262 |
+
],
|
263 |
+
];
|
264 |
|
265 |
$triggers = apply_filters( 'jpum_reviews_triggers', $triggers );
|
266 |
|
267 |
+
// Sort Groups.
|
268 |
+
uasort( $triggers, [ __CLASS__, 'rsort_by_priority' ] );
|
269 |
|
270 |
// Sort each groups triggers.
|
271 |
foreach ( $triggers as $k => $v ) {
|
272 |
+
uasort( $triggers[ $k ]['triggers'], [ __CLASS__, 'rsort_by_priority' ] );
|
273 |
}
|
274 |
}
|
275 |
|
279 |
}
|
280 |
|
281 |
if ( ! isset( $code ) ) {
|
282 |
+
return $triggers[ $group ];
|
283 |
+
} else {
|
284 |
+
return isset( $triggers[ $group ]['triggers'][ $code ] ) ? $triggers[ $group ]['triggers'][ $code ] : false;
|
285 |
+
}
|
286 |
}
|
287 |
|
288 |
return $triggers;
|
309 |
<script type="text/javascript">
|
310 |
(function ($) {
|
311 |
var trigger = {
|
312 |
+
group: '<?php echo esc_html( $group ); ?>',
|
313 |
+
code: '<?php echo esc_html( $code ); ?>',
|
314 |
+
pri: '<?php echo esc_html( $pri ); ?>'
|
315 |
};
|
316 |
|
317 |
function dismiss(reason) {
|
321 |
url: ajaxurl,
|
322 |
data: {
|
323 |
action: 'jpum_review_action',
|
324 |
+
nonce: '<?php echo esc_attr( wp_create_nonce( 'jpum_review_action' ) ); ?>',
|
325 |
group: trigger.group,
|
326 |
code: trigger.code,
|
327 |
pri: trigger.pri,
|
333 |
$.ajax({
|
334 |
method: "POST",
|
335 |
dataType: "json",
|
336 |
+
url: '<?php echo esc_attr( self::$api_url ); ?>',
|
337 |
data: {
|
338 |
trigger_group: trigger.group,
|
339 |
trigger_code: trigger.code,
|
340 |
reason: reason,
|
341 |
+
uuid: '<?php echo esc_attr( $uuid ); ?>'
|
342 |
}
|
343 |
});
|
344 |
<?php endif; ?>
|
385 |
<div class="notice notice-success is-dismissible jpum-notice">
|
386 |
|
387 |
<p>
|
388 |
+
<img class="logo" src="<?php echo esc_attr( \JP_User_Menus::$URL ); ?>assets/images/icon-128x128.png" />
|
389 |
<strong>
|
390 |
+
<?php echo esc_attr( $trigger['message'] ); ?>
|
391 |
<br />
|
392 |
~<a target="_blank" href="https://twitter.com/danieliser" title="Follow Daniel on Twitter">@danieliser</a>
|
393 |
</strong>
|
394 |
</p>
|
395 |
<ul>
|
396 |
<li>
|
397 |
+
<a class="jpum-dismiss" target="_blank" href="<?php echo esc_attr( $trigger['link'] ); ?>>" data-reason="am_now">
|
398 |
+
<strong><?php echo esc_html( __( 'Ok, you deserve it', 'user-menus' ) ); ?></strong>
|
399 |
</a>
|
400 |
</li>
|
401 |
<li>
|
402 |
<a href="#" class="jpum-dismiss" data-reason="maybe_later">
|
403 |
+
<?php esc_html( __( 'Nope, maybe later', 'user-menus' ) ); ?>
|
404 |
</a>
|
405 |
</li>
|
406 |
<li>
|
407 |
<a href="#" class="jpum-dismiss" data-reason="already_did">
|
408 |
+
<?php esc_html( __( 'I already did', 'user-menus' ) ); ?>
|
409 |
</a>
|
410 |
</li>
|
411 |
</ul>
|
423 |
public static function hide_notices() {
|
424 |
$code = self::get_trigger_code();
|
425 |
|
426 |
+
$conditions = [
|
427 |
self::already_did(),
|
428 |
self::last_dismissed() && strtotime( self::last_dismissed() . ' +2 weeks' ) > time(),
|
429 |
empty( $code ),
|
430 |
+
];
|
431 |
|
432 |
+
return in_array( true, $conditions, true );
|
433 |
}
|
434 |
|
435 |
/**
|
444 |
}
|
445 |
|
446 |
/**
|
447 |
+
* Sort array by priority value.
|
448 |
*
|
449 |
+
* @param string|int $a The first value to compare.
|
450 |
+
* @param string|int $b The second value to compare.
|
451 |
*
|
452 |
* @return int
|
453 |
*/
|
462 |
/**
|
463 |
* Sort array in reverse by priority value
|
464 |
*
|
465 |
+
* @param string|int $a The first value to compare.
|
466 |
+
* @param string|int $b The second value to compare.
|
467 |
*
|
468 |
* @return int
|
469 |
*/
|
includes/classes/importer/menu.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Importer;
|
4 |
|
@@ -12,13 +17,10 @@ if ( ! defined( 'WP_LOAD_IMPORTERS' ) ) {
|
|
12 |
|
13 |
/** Display verbose errors */
|
14 |
if ( ! defined( 'IMPORT_DEBUG' ) ) {
|
15 |
-
/**
|
16 |
-
*
|
17 |
-
*/
|
18 |
define( 'IMPORT_DEBUG', false );
|
19 |
}
|
20 |
|
21 |
-
// Load Importer API
|
22 |
if ( ! function_exists( 'get_importers' ) ) {
|
23 |
require_once ABSPATH . 'wp-admin/includes/import.php';
|
24 |
}
|
@@ -27,6 +29,7 @@ if ( ! class_exists( 'WP_Importer' ) ) {
|
|
27 |
require_once ABSPATH . 'wp-admin/includes/class-wp-importer.php';
|
28 |
}
|
29 |
|
|
|
30 |
|
31 |
/**
|
32 |
* Class JP\UM\Importer\Menu
|
@@ -34,36 +37,50 @@ if ( ! class_exists( 'WP_Importer' ) ) {
|
|
34 |
class Menu extends \WP_Importer {
|
35 |
|
36 |
/**
|
37 |
-
*
|
|
|
|
|
38 |
*/
|
39 |
public $max_wxr_version = 1.2;
|
40 |
|
41 |
/**
|
42 |
-
*
|
|
|
|
|
43 |
*/
|
44 |
public $id;
|
45 |
|
46 |
/**
|
47 |
-
*
|
|
|
|
|
48 |
*/
|
49 |
public $version;
|
|
|
50 |
/**
|
|
|
|
|
51 |
* @var array
|
52 |
*/
|
53 |
-
public $posts =
|
|
|
54 |
/**
|
|
|
|
|
55 |
* @var string
|
56 |
*/
|
57 |
public $base_url = '';
|
58 |
|
59 |
/**
|
|
|
|
|
60 |
* @var array
|
61 |
*/
|
62 |
-
public $invalid_meta_keys =
|
63 |
'_wp_attached_file',
|
64 |
'_wp_attachment_metadata',
|
65 |
'_edit_lock',
|
66 |
-
|
67 |
|
68 |
/**
|
69 |
* Registered callback function for the WordPress Importer
|
@@ -133,7 +150,7 @@ class Menu extends \WP_Importer {
|
|
133 |
echo esc_html( $file['error'] ) . '</p>';
|
134 |
|
135 |
return false;
|
136 |
-
}
|
137 |
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'user-menus' ) . '</strong><br />';
|
138 |
printf( __( 'The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem.', 'user-menus' ), esc_html( $file['file'] ) );
|
139 |
echo '</p>';
|
@@ -163,11 +180,11 @@ class Menu extends \WP_Importer {
|
|
163 |
/**
|
164 |
* The main controller for the actual import stage.
|
165 |
*
|
166 |
-
* @param string $file Path to the WXR file for importing
|
167 |
*/
|
168 |
public function import( $file ) {
|
169 |
-
add_filter( 'import_post_meta_key',
|
170 |
-
add_filter( 'http_request_timeout',
|
171 |
|
172 |
$this->import_start( $file );
|
173 |
|
@@ -188,9 +205,9 @@ class Menu extends \WP_Importer {
|
|
188 |
/**
|
189 |
* Parse a WXR file
|
190 |
*
|
191 |
-
* @param string $file Path to WXR file for parsing
|
192 |
*
|
193 |
-
* @return array Information gathered from the WXR file
|
194 |
*/
|
195 |
public function parse( $file ) {
|
196 |
$parser = new \WXR_Parser();
|
@@ -199,9 +216,9 @@ class Menu extends \WP_Importer {
|
|
199 |
}
|
200 |
|
201 |
/**
|
202 |
-
* Parses the WXR file and prepares us for the task of processing parsed data
|
203 |
*
|
204 |
-
* @param string $file Path to the WXR file for importing
|
205 |
*/
|
206 |
public function import_start( $file ) {
|
207 |
if ( ! is_file( $file ) ) {
|
@@ -217,7 +234,8 @@ class Menu extends \WP_Importer {
|
|
217 |
|
218 |
if ( is_wp_error( $import_data ) ) {
|
219 |
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'user-menus' ) . '</strong><br />';
|
220 |
-
echo esc_html( $import_data->get_error_message() )
|
|
|
221 |
echo '</p>';
|
222 |
|
223 |
$this->footer();
|
@@ -238,29 +256,25 @@ class Menu extends \WP_Importer {
|
|
238 |
foreach ( $this->posts as $post ) {
|
239 |
|
240 |
// Exclude other post types.
|
241 |
-
if ( 'nav_menu_item'
|
242 |
continue;
|
243 |
}
|
244 |
|
245 |
$post_id = (int) $post['post_id'];
|
246 |
|
247 |
if ( isset( $post['postmeta'] ) ) {
|
248 |
-
|
249 |
foreach ( $post['postmeta'] as $meta ) {
|
250 |
-
|
251 |
$key = apply_filters( 'import_post_meta_key', $meta['key'] );
|
252 |
$value = false;
|
253 |
|
254 |
-
|
255 |
if ( $key ) {
|
256 |
-
// export gets meta straight from the DB so could have a serialized string
|
257 |
if ( ! $value ) {
|
258 |
$value = maybe_unserialize( $meta['value'] );
|
259 |
}
|
260 |
|
261 |
update_post_meta( $post_id, $key, $value );
|
262 |
do_action( 'import_post_meta', $post_id, $key, $value );
|
263 |
-
|
264 |
}
|
265 |
}
|
266 |
}
|
@@ -270,27 +284,27 @@ class Menu extends \WP_Importer {
|
|
270 |
}
|
271 |
|
272 |
/**
|
273 |
-
* Performs post-import cleanup of files and the cache
|
274 |
*/
|
275 |
public function import_end() {
|
276 |
wp_import_cleanup( $this->id );
|
277 |
|
278 |
wp_cache_flush();
|
279 |
|
280 |
-
echo '<p>' . __( 'All done.', 'user-menus' ) . ' <a href="' . admin_url() . '">' . __( 'Have fun!', 'user-menus' ) . '</a
|
281 |
|
282 |
do_action( 'import_end' );
|
283 |
}
|
284 |
|
285 |
/**
|
286 |
-
* Decide if the given meta key maps to information we will want to import
|
287 |
*
|
288 |
-
* @param string $key The meta key to check
|
289 |
*
|
290 |
-
* @return string|bool The key if we do want to import, false if not
|
291 |
*/
|
292 |
public function is_valid_meta_key( $key ) {
|
293 |
-
if ( in_array( $key, $this->invalid_meta_keys ) ) {
|
294 |
return false;
|
295 |
}
|
296 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Nav menu custom importer class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Importer;
|
9 |
|
17 |
|
18 |
/** Display verbose errors */
|
19 |
if ( ! defined( 'IMPORT_DEBUG' ) ) {
|
|
|
|
|
|
|
20 |
define( 'IMPORT_DEBUG', false );
|
21 |
}
|
22 |
|
23 |
+
// Load Importer API.
|
24 |
if ( ! function_exists( 'get_importers' ) ) {
|
25 |
require_once ABSPATH . 'wp-admin/includes/import.php';
|
26 |
}
|
29 |
require_once ABSPATH . 'wp-admin/includes/class-wp-importer.php';
|
30 |
}
|
31 |
|
32 |
+
/* phpcs:disable WordPress.WP.I18n.MissingTranslatorsComment, WordPress.Security.EscapeOutput.OutputNotEscaped */
|
33 |
|
34 |
/**
|
35 |
* Class JP\UM\Importer\Menu
|
37 |
class Menu extends \WP_Importer {
|
38 |
|
39 |
/**
|
40 |
+
* Max supported WXR version
|
41 |
+
*
|
42 |
+
* @var float
|
43 |
*/
|
44 |
public $max_wxr_version = 1.2;
|
45 |
|
46 |
/**
|
47 |
+
* WXR attachment ID
|
48 |
+
*
|
49 |
+
* @var integer
|
50 |
*/
|
51 |
public $id;
|
52 |
|
53 |
/**
|
54 |
+
* WXR File Version
|
55 |
+
*
|
56 |
+
* @var string
|
57 |
*/
|
58 |
public $version;
|
59 |
+
|
60 |
/**
|
61 |
+
* Array of posts.
|
62 |
+
*
|
63 |
* @var array
|
64 |
*/
|
65 |
+
public $posts = [];
|
66 |
+
|
67 |
/**
|
68 |
+
* Base URL.
|
69 |
+
*
|
70 |
* @var string
|
71 |
*/
|
72 |
public $base_url = '';
|
73 |
|
74 |
/**
|
75 |
+
* Invalid meta keys.
|
76 |
+
*
|
77 |
* @var array
|
78 |
*/
|
79 |
+
public $invalid_meta_keys = [
|
80 |
'_wp_attached_file',
|
81 |
'_wp_attachment_metadata',
|
82 |
'_edit_lock',
|
83 |
+
];
|
84 |
|
85 |
/**
|
86 |
* Registered callback function for the WordPress Importer
|
150 |
echo esc_html( $file['error'] ) . '</p>';
|
151 |
|
152 |
return false;
|
153 |
+
} elseif ( ! file_exists( $file['file'] ) ) {
|
154 |
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'user-menus' ) . '</strong><br />';
|
155 |
printf( __( 'The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem.', 'user-menus' ), esc_html( $file['file'] ) );
|
156 |
echo '</p>';
|
180 |
/**
|
181 |
* The main controller for the actual import stage.
|
182 |
*
|
183 |
+
* @param string $file Path to the WXR file for importing.
|
184 |
*/
|
185 |
public function import( $file ) {
|
186 |
+
add_filter( 'import_post_meta_key', [ $this, 'is_valid_meta_key' ] );
|
187 |
+
add_filter( 'http_request_timeout', [ $this, 'bump_request_timeout' ] );
|
188 |
|
189 |
$this->import_start( $file );
|
190 |
|
205 |
/**
|
206 |
* Parse a WXR file
|
207 |
*
|
208 |
+
* @param string $file Path to WXR file for parsing.
|
209 |
*
|
210 |
+
* @return array Information gathered from the WXR file.
|
211 |
*/
|
212 |
public function parse( $file ) {
|
213 |
$parser = new \WXR_Parser();
|
216 |
}
|
217 |
|
218 |
/**
|
219 |
+
* Parses the WXR file and prepares us for the task of processing parsed data.
|
220 |
*
|
221 |
+
* @param string $file Path to the WXR file for importing.
|
222 |
*/
|
223 |
public function import_start( $file ) {
|
224 |
if ( ! is_file( $file ) ) {
|
234 |
|
235 |
if ( is_wp_error( $import_data ) ) {
|
236 |
echo '<p><strong>' . __( 'Sorry, there has been an error.', 'user-menus' ) . '</strong><br />';
|
237 |
+
echo esc_html( $import_data->get_error_message() );
|
238 |
+
|
239 |
echo '</p>';
|
240 |
|
241 |
$this->footer();
|
256 |
foreach ( $this->posts as $post ) {
|
257 |
|
258 |
// Exclude other post types.
|
259 |
+
if ( 'nav_menu_item' !== $post['post_type'] || ! empty( $post['post_id'] ) ) {
|
260 |
continue;
|
261 |
}
|
262 |
|
263 |
$post_id = (int) $post['post_id'];
|
264 |
|
265 |
if ( isset( $post['postmeta'] ) ) {
|
|
|
266 |
foreach ( $post['postmeta'] as $meta ) {
|
|
|
267 |
$key = apply_filters( 'import_post_meta_key', $meta['key'] );
|
268 |
$value = false;
|
269 |
|
|
|
270 |
if ( $key ) {
|
271 |
+
// export gets meta straight from the DB so could have a serialized string.
|
272 |
if ( ! $value ) {
|
273 |
$value = maybe_unserialize( $meta['value'] );
|
274 |
}
|
275 |
|
276 |
update_post_meta( $post_id, $key, $value );
|
277 |
do_action( 'import_post_meta', $post_id, $key, $value );
|
|
|
278 |
}
|
279 |
}
|
280 |
}
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
+
* Performs post-import cleanup of files and the cache.
|
288 |
*/
|
289 |
public function import_end() {
|
290 |
wp_import_cleanup( $this->id );
|
291 |
|
292 |
wp_cache_flush();
|
293 |
|
294 |
+
echo '<p>' . __( 'All done.', 'user-menus' ) . ' <a href="' . admin_url() . '">' . __( 'Have fun!', 'user-menus' ) . '</a></p>';
|
295 |
|
296 |
do_action( 'import_end' );
|
297 |
}
|
298 |
|
299 |
/**
|
300 |
+
* Decide if the given meta key maps to information we will want to import.
|
301 |
*
|
302 |
+
* @param string $key The meta key to check.
|
303 |
*
|
304 |
+
* @return string|bool The key if we do want to import, false if not.
|
305 |
*/
|
306 |
public function is_valid_meta_key( $key ) {
|
307 |
+
if ( in_array( $key, $this->invalid_meta_keys, true ) ) {
|
308 |
return false;
|
309 |
}
|
310 |
|
includes/classes/menu/item.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Menu;
|
4 |
|
@@ -12,7 +17,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
class Item {
|
13 |
|
14 |
/**
|
15 |
-
*
|
|
|
|
|
16 |
*
|
17 |
* @return array
|
18 |
*/
|
@@ -25,24 +32,25 @@ class Item {
|
|
25 |
}
|
26 |
|
27 |
/**
|
28 |
-
*
|
|
|
|
|
29 |
*
|
30 |
* @return array
|
31 |
*/
|
32 |
-
public static function parse_options( $options =
|
33 |
-
|
34 |
if ( ! is_array( $options ) ) {
|
35 |
-
$options =
|
36 |
}
|
37 |
|
38 |
-
return wp_parse_args( $options,
|
39 |
'avatar_size' => 24,
|
40 |
'redirect_type' => 'current',
|
41 |
'redirect_url' => '',
|
42 |
'which_users' => '',
|
43 |
'can_see' => 'yes',
|
44 |
-
'roles' =>
|
45 |
-
|
46 |
}
|
47 |
|
48 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Menu item class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Menu;
|
9 |
|
17 |
class Item {
|
18 |
|
19 |
/**
|
20 |
+
* Get item options.
|
21 |
+
*
|
22 |
+
* @param int $item_id Item ID.
|
23 |
*
|
24 |
* @return array
|
25 |
*/
|
32 |
}
|
33 |
|
34 |
/**
|
35 |
+
* Parse options.
|
36 |
+
*
|
37 |
+
* @param array $options Array of options to parse.
|
38 |
*
|
39 |
* @return array
|
40 |
*/
|
41 |
+
public static function parse_options( $options = [] ) {
|
|
|
42 |
if ( ! is_array( $options ) ) {
|
43 |
+
$options = [];
|
44 |
}
|
45 |
|
46 |
+
return wp_parse_args( $options, [
|
47 |
'avatar_size' => 24,
|
48 |
'redirect_type' => 'current',
|
49 |
'redirect_url' => '',
|
50 |
'which_users' => '',
|
51 |
'can_see' => 'yes',
|
52 |
+
'roles' => [],
|
53 |
+
] );
|
54 |
}
|
55 |
|
56 |
}
|
includes/classes/menu/items.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Menu;
|
4 |
|
@@ -13,24 +18,28 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
*/
|
14 |
class Items {
|
15 |
|
|
|
|
|
|
|
|
|
|
|
16 |
private static $current_item;
|
17 |
|
18 |
/**
|
19 |
* Init
|
20 |
*/
|
21 |
public static function init() {
|
22 |
-
add_filter( 'wp_setup_nav_menu_item',
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
* Merge Item data into the $item object.
|
27 |
*
|
28 |
-
* @param $item
|
29 |
*
|
30 |
* @return mixed
|
31 |
*/
|
32 |
public static function merge_item_data( $item ) {
|
33 |
-
|
34 |
self::$current_item = $item;
|
35 |
|
36 |
// Merge Rules.
|
@@ -38,8 +47,7 @@ class Items {
|
|
38 |
$item->$key = $value;
|
39 |
}
|
40 |
|
41 |
-
if ( in_array( $item->object,
|
42 |
-
|
43 |
$item->type_label = __( 'User Link', 'user-menus' );
|
44 |
|
45 |
switch ( $item->redirect_type ) {
|
@@ -66,14 +74,13 @@ class Items {
|
|
66 |
break;
|
67 |
|
68 |
case 'register':
|
69 |
-
$item->url = add_query_arg(
|
70 |
break;
|
71 |
|
72 |
case 'logout':
|
73 |
$item->url = wp_logout_url( $redirect );
|
74 |
break;
|
75 |
}
|
76 |
-
|
77 |
}
|
78 |
|
79 |
// User text replacement.
|
@@ -81,49 +88,50 @@ class Items {
|
|
81 |
$item->title = static::user_titles( $item->title );
|
82 |
}
|
83 |
|
84 |
-
|
85 |
return $item;
|
86 |
}
|
87 |
|
88 |
/**
|
|
|
|
|
89 |
* @return string
|
90 |
*/
|
91 |
public static function current_url() {
|
92 |
-
|
|
|
93 |
|
94 |
-
return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER[
|
|
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
-
*
|
|
|
|
|
99 |
*
|
100 |
* @return mixed|string
|
101 |
*/
|
102 |
public static function user_titles( $title = '' ) {
|
103 |
-
|
104 |
preg_match_all( '/{(.*?)}/', $title, $found );
|
105 |
|
106 |
if ( count( $found[1] ) ) {
|
107 |
-
|
108 |
foreach ( $found[1] as $key => $match ) {
|
109 |
-
|
110 |
$title = static::text_replace( $title, $match );
|
111 |
-
|
112 |
}
|
113 |
}
|
114 |
|
115 |
return $title;
|
116 |
-
|
117 |
}
|
118 |
|
119 |
/**
|
120 |
-
*
|
121 |
-
*
|
|
|
|
|
122 |
*
|
123 |
* @return mixed|string
|
124 |
*/
|
125 |
public static function text_replace( $title = '', $match = '' ) {
|
126 |
-
|
127 |
if ( empty( $match ) ) {
|
128 |
return $title;
|
129 |
}
|
@@ -131,7 +139,7 @@ class Items {
|
|
131 |
if ( strpos( $match, '||' ) !== false ) {
|
132 |
$matches = explode( '||', $match );
|
133 |
} else {
|
134 |
-
$matches =
|
135 |
}
|
136 |
|
137 |
$current_user = wp_get_current_user();
|
@@ -139,22 +147,16 @@ class Items {
|
|
139 |
$replace = '';
|
140 |
|
141 |
foreach ( $matches as $string ) {
|
142 |
-
|
143 |
-
|
144 |
if ( ! array_key_exists( $string, Codes::valid_codes() ) ) {
|
145 |
|
146 |
// If its not a valid code it is likely a fallback.
|
147 |
$replace = $string;
|
148 |
-
|
149 |
-
} else if ( $current_user->ID == 0 && array_key_exists( $string, Codes::valid_codes() ) ) {
|
150 |
|
151 |
// If the code exists & user is not logged in, return nothing.
|
152 |
$replace = '';
|
153 |
-
|
154 |
} else {
|
155 |
-
|
156 |
switch ( $string ) {
|
157 |
-
|
158 |
case 'avatar':
|
159 |
$replace = get_avatar( $current_user->ID, self::$current_item->avatar_size );
|
160 |
break;
|
@@ -186,16 +188,13 @@ class Items {
|
|
186 |
default:
|
187 |
$replace = $string;
|
188 |
break;
|
189 |
-
|
190 |
}
|
191 |
-
|
192 |
}
|
193 |
|
194 |
// If we found a replacement stop the loop.
|
195 |
if ( ! empty( $replace ) ) {
|
196 |
break;
|
197 |
}
|
198 |
-
|
199 |
}
|
200 |
|
201 |
return str_replace( '{' . $match . '}', $replace, $title );
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Menu items class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Menu;
|
9 |
|
18 |
*/
|
19 |
class Items {
|
20 |
|
21 |
+
/**
|
22 |
+
* Current item.
|
23 |
+
*
|
24 |
+
* @var object
|
25 |
+
*/
|
26 |
private static $current_item;
|
27 |
|
28 |
/**
|
29 |
* Init
|
30 |
*/
|
31 |
public static function init() {
|
32 |
+
add_filter( 'wp_setup_nav_menu_item', [ __CLASS__, 'merge_item_data' ] );
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
* Merge Item data into the $item object.
|
37 |
*
|
38 |
+
* @param object $item Item object.
|
39 |
*
|
40 |
* @return mixed
|
41 |
*/
|
42 |
public static function merge_item_data( $item ) {
|
|
|
43 |
self::$current_item = $item;
|
44 |
|
45 |
// Merge Rules.
|
47 |
$item->$key = $value;
|
48 |
}
|
49 |
|
50 |
+
if ( in_array( $item->object, [ 'login', 'register', 'logout' ], true ) ) {
|
|
|
51 |
$item->type_label = __( 'User Link', 'user-menus' );
|
52 |
|
53 |
switch ( $item->redirect_type ) {
|
74 |
break;
|
75 |
|
76 |
case 'register':
|
77 |
+
$item->url = add_query_arg( [ 'redirect_to' => $redirect ], wp_registration_url() );
|
78 |
break;
|
79 |
|
80 |
case 'logout':
|
81 |
$item->url = wp_logout_url( $redirect );
|
82 |
break;
|
83 |
}
|
|
|
84 |
}
|
85 |
|
86 |
// User text replacement.
|
88 |
$item->title = static::user_titles( $item->title );
|
89 |
}
|
90 |
|
|
|
91 |
return $item;
|
92 |
}
|
93 |
|
94 |
/**
|
95 |
+
* Get the current url.
|
96 |
+
*
|
97 |
* @return string
|
98 |
*/
|
99 |
public static function current_url() {
|
100 |
+
/* phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotValidated */
|
101 |
+
$protocol = ( ! empty( $_SERVER['HTTPS'] ) && 'off' !== $_SERVER['HTTPS'] ) || 443 === $_SERVER['SERVER_PORT'] ? 'https://' : 'http://';
|
102 |
|
103 |
+
return $protocol . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) );
|
104 |
+
/* phpcs:enable WordPress.Security.ValidatedSanitizedInput.InputNotValidated */
|
105 |
}
|
106 |
|
107 |
/**
|
108 |
+
* Get replacement titles.
|
109 |
+
*
|
110 |
+
* @param string $title Menu item title.
|
111 |
*
|
112 |
* @return mixed|string
|
113 |
*/
|
114 |
public static function user_titles( $title = '' ) {
|
|
|
115 |
preg_match_all( '/{(.*?)}/', $title, $found );
|
116 |
|
117 |
if ( count( $found[1] ) ) {
|
|
|
118 |
foreach ( $found[1] as $key => $match ) {
|
|
|
119 |
$title = static::text_replace( $title, $match );
|
|
|
120 |
}
|
121 |
}
|
122 |
|
123 |
return $title;
|
|
|
124 |
}
|
125 |
|
126 |
/**
|
127 |
+
* Replace text.
|
128 |
+
*
|
129 |
+
* @param string $title Text to search.
|
130 |
+
* @param string $match Strings to match.
|
131 |
*
|
132 |
* @return mixed|string
|
133 |
*/
|
134 |
public static function text_replace( $title = '', $match = '' ) {
|
|
|
135 |
if ( empty( $match ) ) {
|
136 |
return $title;
|
137 |
}
|
139 |
if ( strpos( $match, '||' ) !== false ) {
|
140 |
$matches = explode( '||', $match );
|
141 |
} else {
|
142 |
+
$matches = [ $match ];
|
143 |
}
|
144 |
|
145 |
$current_user = wp_get_current_user();
|
147 |
$replace = '';
|
148 |
|
149 |
foreach ( $matches as $string ) {
|
|
|
|
|
150 |
if ( ! array_key_exists( $string, Codes::valid_codes() ) ) {
|
151 |
|
152 |
// If its not a valid code it is likely a fallback.
|
153 |
$replace = $string;
|
154 |
+
} elseif ( 0 === $current_user->ID && array_key_exists( $string, Codes::valid_codes() ) ) {
|
|
|
155 |
|
156 |
// If the code exists & user is not logged in, return nothing.
|
157 |
$replace = '';
|
|
|
158 |
} else {
|
|
|
159 |
switch ( $string ) {
|
|
|
160 |
case 'avatar':
|
161 |
$replace = get_avatar( $current_user->ID, self::$current_item->avatar_size );
|
162 |
break;
|
188 |
default:
|
189 |
$replace = $string;
|
190 |
break;
|
|
|
191 |
}
|
|
|
192 |
}
|
193 |
|
194 |
// If we found a replacement stop the loop.
|
195 |
if ( ! empty( $replace ) ) {
|
196 |
break;
|
197 |
}
|
|
|
198 |
}
|
199 |
|
200 |
return str_replace( '{' . $match . '}', $replace, $title );
|
includes/classes/site/menus.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\Site;
|
4 |
|
@@ -15,37 +20,35 @@ class Menus {
|
|
15 |
* Init
|
16 |
*/
|
17 |
public static function init() {
|
18 |
-
add_filter( 'wp_get_nav_menu_items',
|
19 |
}
|
20 |
|
21 |
/**
|
22 |
* Exclude menu items via wp_get_nav_menu_items filter.
|
23 |
*
|
24 |
* Guarantees compatibility with nearly any theme.
|
|
|
|
|
25 |
*/
|
26 |
-
public static function exclude_menu_items( $items =
|
27 |
-
|
28 |
if ( empty( $items ) ) {
|
29 |
return $items;
|
30 |
}
|
31 |
|
32 |
$logged_in = is_user_logged_in();
|
33 |
|
34 |
-
$excluded =
|
35 |
|
36 |
foreach ( $items as $key => $item ) {
|
|
|
37 |
|
38 |
-
|
39 |
-
|
40 |
-
if ( 'logout' == $item->object ) {
|
41 |
$exclude = ! $logged_in;
|
42 |
-
} elseif ( 'login'
|
43 |
$exclude = $logged_in;
|
44 |
} else {
|
45 |
-
|
46 |
if ( is_object( $item ) && isset( $item->which_users ) ) {
|
47 |
switch ( $item->which_users ) {
|
48 |
-
|
49 |
case 'logged_in':
|
50 |
if ( ! $logged_in ) {
|
51 |
$exclude = true;
|
@@ -62,8 +65,8 @@ class Menus {
|
|
62 |
* - $allowed_by_role will be set to true by default, allowing all not-matched roles to see it.
|
63 |
* - if any matching role is found, $allowed_by_role will be set to false.
|
64 |
*/
|
65 |
-
$can_see
|
66 |
-
$allowed_by_role =
|
67 |
|
68 |
foreach ( $item->roles as $role ) {
|
69 |
if ( current_user_can( $role ) ) {
|
@@ -81,20 +84,17 @@ class Menus {
|
|
81 |
case 'logged_out':
|
82 |
$exclude = $logged_in;
|
83 |
break;
|
84 |
-
|
85 |
}
|
86 |
}
|
87 |
-
|
88 |
}
|
89 |
|
90 |
$exclude = apply_filters( 'jpum_should_exclude_item', $exclude, $item );
|
91 |
|
92 |
-
// unset non-visible item
|
93 |
if ( $exclude ) {
|
94 |
-
$excluded[] = $item->ID; // store ID of item
|
95 |
unset( $items[ $key ] );
|
96 |
}
|
97 |
-
|
98 |
}
|
99 |
|
100 |
return $items;
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Site menu class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\Site;
|
9 |
|
20 |
* Init
|
21 |
*/
|
22 |
public static function init() {
|
23 |
+
add_filter( 'wp_get_nav_menu_items', [ __CLASS__, 'exclude_menu_items' ] );
|
24 |
}
|
25 |
|
26 |
/**
|
27 |
* Exclude menu items via wp_get_nav_menu_items filter.
|
28 |
*
|
29 |
* Guarantees compatibility with nearly any theme.
|
30 |
+
*
|
31 |
+
* @param array $items Menu items.
|
32 |
*/
|
33 |
+
public static function exclude_menu_items( $items = [] ) {
|
|
|
34 |
if ( empty( $items ) ) {
|
35 |
return $items;
|
36 |
}
|
37 |
|
38 |
$logged_in = is_user_logged_in();
|
39 |
|
40 |
+
$excluded = [];
|
41 |
|
42 |
foreach ( $items as $key => $item ) {
|
43 |
+
$exclude = in_array( $item->menu_item_parent, $excluded, true );
|
44 |
|
45 |
+
if ( 'logout' === $item->object ) {
|
|
|
|
|
46 |
$exclude = ! $logged_in;
|
47 |
+
} elseif ( 'login' === $item->object || 'register' === $item->object ) {
|
48 |
$exclude = $logged_in;
|
49 |
} else {
|
|
|
50 |
if ( is_object( $item ) && isset( $item->which_users ) ) {
|
51 |
switch ( $item->which_users ) {
|
|
|
52 |
case 'logged_in':
|
53 |
if ( ! $logged_in ) {
|
54 |
$exclude = true;
|
65 |
* - $allowed_by_role will be set to true by default, allowing all not-matched roles to see it.
|
66 |
* - if any matching role is found, $allowed_by_role will be set to false.
|
67 |
*/
|
68 |
+
$can_see = 'yes' === $item->can_see;
|
69 |
+
$allowed_by_role = ! $can_see;
|
70 |
|
71 |
foreach ( $item->roles as $role ) {
|
72 |
if ( current_user_can( $role ) ) {
|
84 |
case 'logged_out':
|
85 |
$exclude = $logged_in;
|
86 |
break;
|
|
|
87 |
}
|
88 |
}
|
|
|
89 |
}
|
90 |
|
91 |
$exclude = apply_filters( 'jpum_should_exclude_item', $exclude, $item );
|
92 |
|
93 |
+
// unset non-visible item.
|
94 |
if ( $exclude ) {
|
95 |
+
$excluded[] = $item->ID; // store ID of item.
|
96 |
unset( $items[ $key ] );
|
97 |
}
|
|
|
98 |
}
|
99 |
|
100 |
return $items;
|
includes/classes/user/codes.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
namespace JP\UM\User;
|
4 |
|
@@ -12,10 +17,12 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
class Codes {
|
13 |
|
14 |
/**
|
|
|
|
|
15 |
* @return array
|
16 |
*/
|
17 |
public static function valid_codes() {
|
18 |
-
return
|
19 |
'avatar' => __( 'Avatar', 'user-menus' ),
|
20 |
'first_name' => __( 'First Name', 'user-menus' ),
|
21 |
'last_name' => __( 'Last Name', 'user-menus' ),
|
@@ -23,7 +30,7 @@ class Codes {
|
|
23 |
'display_name' => __( 'Display Name', 'user-menus' ),
|
24 |
'nickname' => __( 'Nickname', 'user-menus' ),
|
25 |
'email' => __( 'Email', 'user-menus' ),
|
26 |
-
|
27 |
}
|
28 |
|
29 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* User code class.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
namespace JP\UM\User;
|
9 |
|
17 |
class Codes {
|
18 |
|
19 |
/**
|
20 |
+
* Get a list of valid user replacement codes.
|
21 |
+
*
|
22 |
* @return array
|
23 |
*/
|
24 |
public static function valid_codes() {
|
25 |
+
return [
|
26 |
'avatar' => __( 'Avatar', 'user-menus' ),
|
27 |
'first_name' => __( 'First Name', 'user-menus' ),
|
28 |
'last_name' => __( 'Last Name', 'user-menus' ),
|
30 |
'display_name' => __( 'Display Name', 'user-menus' ),
|
31 |
'nickname' => __( 'Nickname', 'user-menus' ),
|
32 |
'email' => __( 'Email', 'user-menus' ),
|
33 |
+
];
|
34 |
}
|
35 |
|
36 |
}
|
includes/classes/walker/nav-menu-edit-custom-fields-deprecated.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) {
|
4 |
/** Walker_Nav_Menu_Edit class */
|
@@ -27,13 +32,13 @@ class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
|
|
27 |
* @param string $output Passed by reference. Used to append additional content.
|
28 |
* @param object $item Menu item data object.
|
29 |
* @param int $depth Depth of menu item.
|
30 |
-
* @param array $args
|
31 |
*
|
32 |
* @see Walker_Nav_Menu_Edit::start_el()
|
33 |
*/
|
34 |
-
public function start_el( &$output, $item, $depth = 0, $args =
|
35 |
$item_output = '';
|
36 |
-
$output
|
37 |
// NOTE: Check this regex on major WP version updates!
|
38 |
$output .= preg_replace( '/(?=<fieldset[^>]+class="[^"]*field-move)/', $this->get_custom_fields( $item, $depth, $args ), $item_output );
|
39 |
}
|
@@ -47,9 +52,8 @@ class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
|
|
47 |
*
|
48 |
* @return string Additional fields or html for the nav menu editor.
|
49 |
* @uses do_action() Calls 'menu_item_custom_fields' hook
|
50 |
-
*
|
51 |
*/
|
52 |
-
protected function get_custom_fields( $item, $depth, $args =
|
53 |
ob_start();
|
54 |
$item_id = intval( $item->ID );
|
55 |
/**
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Nav menu walker class for Old WP Versions.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
8 |
if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) {
|
9 |
/** Walker_Nav_Menu_Edit class */
|
32 |
* @param string $output Passed by reference. Used to append additional content.
|
33 |
* @param object $item Menu item data object.
|
34 |
* @param int $depth Depth of menu item.
|
35 |
+
* @param array $args Additional arguments.
|
36 |
*
|
37 |
* @see Walker_Nav_Menu_Edit::start_el()
|
38 |
*/
|
39 |
+
public function start_el( &$output, $item, $depth = 0, $args = [] ) {
|
40 |
$item_output = '';
|
41 |
+
$output .= parent::start_el( $output, $item, $depth, $args );
|
42 |
// NOTE: Check this regex on major WP version updates!
|
43 |
$output .= preg_replace( '/(?=<fieldset[^>]+class="[^"]*field-move)/', $this->get_custom_fields( $item, $depth, $args ), $item_output );
|
44 |
}
|
52 |
*
|
53 |
* @return string Additional fields or html for the nav menu editor.
|
54 |
* @uses do_action() Calls 'menu_item_custom_fields' hook
|
|
|
55 |
*/
|
56 |
+
protected function get_custom_fields( $item, $depth, $args = [] ) {
|
57 |
ob_start();
|
58 |
$item_id = intval( $item->ID );
|
59 |
/**
|
includes/classes/walker/nav-menu-edit-custom-fields.php
CHANGED
@@ -1,6 +1,10 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
/** Walker_Nav_Menu_Edit class */
|
4 |
if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) {
|
5 |
global $wp_version;
|
6 |
if ( version_compare( $wp_version, '4.4', '>=' ) ) {
|
@@ -32,15 +36,14 @@ class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
|
|
32 |
* @param string $output Passed by reference. Used to append additional content.
|
33 |
* @param object $item Menu item data object.
|
34 |
* @param int $depth Depth of menu item.
|
35 |
-
* @param array $args
|
36 |
-
* @param int $id
|
37 |
*
|
38 |
* @see Walker_Nav_Menu_Edit::start_el()
|
39 |
-
*
|
40 |
*/
|
41 |
-
public function start_el( &$output, $item, $depth = 0, $args =
|
42 |
$item_output = '';
|
43 |
-
$output
|
44 |
// NOTE: Check this regex on major WP version updates!
|
45 |
$output .= preg_replace( '/(?=<fieldset[^>]+class="[^"]*field-move)/', $this->get_custom_fields( $item, $depth, $args ), $item_output );
|
46 |
}
|
@@ -61,7 +64,7 @@ class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
|
|
61 |
*
|
62 |
* @since 0.1.0
|
63 |
*/
|
64 |
-
protected function get_custom_fields( $item, $depth, $args =
|
65 |
ob_start();
|
66 |
$item_id = intval( $item->ID );
|
67 |
/**
|
@@ -74,7 +77,6 @@ class Walker_Nav_Menu_Edit_Custom_Fields extends Walker_Nav_Menu_Edit {
|
|
74 |
*
|
75 |
* @return string Custom fields
|
76 |
* @since 0.1.0
|
77 |
-
*
|
78 |
*/
|
79 |
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
80 |
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Nav menu walker class for Old WP Versions.
|
4 |
+
*
|
5 |
+
* @package User Menus
|
6 |
+
*/
|
7 |
|
|
|
8 |
if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) {
|
9 |
global $wp_version;
|
10 |
if ( version_compare( $wp_version, '4.4', '>=' ) ) {
|
36 |
* @param string $output Passed by reference. Used to append additional content.
|
37 |
* @param object $item Menu item data object.
|
38 |
* @param int $depth Depth of menu item.
|
39 |
+
* @param array $args Additional arguments.
|
40 |
+
* @param int $id Id of menu item.
|
41 |
*
|
42 |
* @see Walker_Nav_Menu_Edit::start_el()
|
|
|
43 |
*/
|
44 |
+
public function start_el( &$output, $item, $depth = 0, $args = [], $id = 0 ) {
|
45 |
$item_output = '';
|
46 |
+
$output .= parent::start_el( $item_output, $item, $depth, $args, $id );
|
47 |
// NOTE: Check this regex on major WP version updates!
|
48 |
$output .= preg_replace( '/(?=<fieldset[^>]+class="[^"]*field-move)/', $this->get_custom_fields( $item, $depth, $args ), $item_output );
|
49 |
}
|
64 |
*
|
65 |
* @since 0.1.0
|
66 |
*/
|
67 |
+
protected function get_custom_fields( $item, $depth, $args = [], $id = 0 ) {
|
68 |
ob_start();
|
69 |
$item_id = intval( $item->ID );
|
70 |
/**
|
77 |
*
|
78 |
* @return string Custom fields
|
79 |
* @since 0.1.0
|
|
|
80 |
*/
|
81 |
do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
|
82 |
|
languages/user-menus.pot
CHANGED
@@ -15,182 +15,196 @@ msgstr ""
|
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
|
18 |
-
|
|
|
19 |
msgid "The %4$s %1$s %5$s plugin requires %2$s version %3$s or greater."
|
20 |
msgstr ""
|
21 |
|
22 |
-
#: user-menus.php:
|
23 |
msgid "Plugin Activation Error"
|
24 |
msgstr ""
|
25 |
|
26 |
-
#: includes/classes/admin/menu-editor.php:
|
27 |
msgid "User Links"
|
28 |
msgstr ""
|
29 |
|
30 |
-
#: includes/classes/admin/menu-editor.php:
|
31 |
msgid "Login"
|
32 |
msgstr ""
|
33 |
|
34 |
-
#: includes/classes/admin/menu-editor.php:
|
35 |
msgid "Register"
|
36 |
msgstr ""
|
37 |
|
38 |
-
#: includes/classes/admin/menu-editor.php:
|
39 |
msgid "Logout"
|
40 |
msgstr ""
|
41 |
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
msgid "Insert User Menu Codes"
|
44 |
msgstr ""
|
45 |
|
46 |
-
#: includes/classes/admin/menu-importer.php:
|
47 |
msgid "WP Nav Menus"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: includes/classes/admin/menu-importer.php:
|
51 |
msgid "Import nav menus and other menu item meta skipped by the default importer"
|
52 |
msgstr ""
|
53 |
|
54 |
-
#: includes/classes/admin/menu-settings.php:
|
55 |
msgid "Avatar Size"
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: includes/classes/admin/menu-settings.php:
|
59 |
msgid "Everyone"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: includes/classes/admin/menu-settings.php:
|
63 |
msgid "Logged Out Users"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: includes/classes/admin/menu-settings.php:
|
67 |
msgid "Logged In Users"
|
68 |
msgstr ""
|
69 |
|
70 |
-
#: includes/classes/admin/menu-settings.php:
|
71 |
msgid "Who can see this link?"
|
72 |
msgstr ""
|
73 |
|
74 |
-
#: includes/classes/admin/menu-settings.php:
|
75 |
msgid "Choose which roles can see this link"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: includes/classes/admin/menu-settings.php:
|
79 |
msgid "Choose which roles won't see this link"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: includes/classes/admin/menu-settings.php:
|
83 |
msgid "Current Page"
|
84 |
msgstr ""
|
85 |
|
86 |
-
#: includes/classes/admin/menu-settings.php:
|
87 |
msgid "Home Page"
|
88 |
msgstr ""
|
89 |
|
90 |
-
#: includes/classes/admin/menu-settings.php:
|
91 |
msgid "Custom URL"
|
92 |
msgstr ""
|
93 |
|
94 |
-
#: includes/classes/admin/menu-settings.php:
|
95 |
msgid "Where should users be taken afterwards?"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: includes/classes/admin/menu-settings.php:
|
99 |
msgid "Enter a url user should be redirected to"
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: includes/classes/admin/reviews.php:
|
103 |
msgid "Hi there! You've been using the User Menus plugin on your site for %s now - We hope it's been helpful. If you're enjoying the plugin, would you mind rating it 5-stars to help spread the word?"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: includes/classes/admin/reviews.php:
|
107 |
msgid "2 weeks"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: includes/classes/admin/reviews.php:
|
111 |
msgid "3 months"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: includes/classes/admin/reviews.php:
|
115 |
msgid "Ok, you deserve it"
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: includes/classes/admin/reviews.php:
|
119 |
msgid "Nope, maybe later"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: includes/classes/admin/reviews.php:
|
123 |
msgid "I already did"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: includes/classes/importer/menu.php:
|
127 |
msgid "Import Nav Menus"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/classes/importer/menu.php:
|
131 |
msgid "A new version of this importer is available. Please update to version %s to ensure compatibility with newer export files."
|
132 |
msgstr ""
|
133 |
|
134 |
-
#: includes/classes/importer/menu.php:
|
135 |
msgid "Upload your WordPress export (WXR) file and import the Nav Menus and any meta for the Nav Menu items."
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: includes/classes/importer/menu.php:
|
139 |
msgid "Choose a WXR (.xml) file to upload, then click Upload file and import."
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: includes/classes/importer/menu.php:
|
143 |
msgid "Sorry, there has been an error."
|
144 |
msgstr ""
|
145 |
|
146 |
-
#: includes/classes/importer/menu.php:
|
147 |
msgid "The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem."
|
148 |
msgstr ""
|
149 |
|
150 |
-
#: includes/classes/importer/menu.php:
|
151 |
msgid "This WXR file (version %s) may not be supported by this version of the importer. Please consider updating."
|
152 |
msgstr ""
|
153 |
|
154 |
-
#: includes/classes/importer/menu.php:
|
155 |
msgid "The file does not exist, please try again."
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: includes/classes/importer/menu.php:
|
159 |
msgid "All done."
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: includes/classes/importer/menu.php:
|
163 |
msgid "Have fun!"
|
164 |
msgstr ""
|
165 |
|
166 |
-
#: includes/classes/menu/items.php:
|
167 |
msgid "User Link"
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/classes/user/codes.php:
|
171 |
msgid "Avatar"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/classes/user/codes.php:
|
175 |
msgid "First Name"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/classes/user/codes.php:
|
179 |
msgid "Last Name"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: includes/classes/user/codes.php:
|
183 |
msgid "Username"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: includes/classes/user/codes.php:
|
187 |
msgid "Display Name"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: includes/classes/user/codes.php:
|
191 |
msgid "Nickname"
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: includes/classes/user/codes.php:
|
195 |
msgid "Email"
|
196 |
msgstr ""
|
15 |
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
|
18 |
+
#. translators: 1: Plugin Name, 2: Flagged software (PHP or WP), 3: PHP or WordPress version
|
19 |
+
#: user-menus.php:235
|
20 |
msgid "The %4$s %1$s %5$s plugin requires %2$s version %3$s or greater."
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: user-menus.php:238
|
24 |
msgid "Plugin Activation Error"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/classes/admin/menu-editor.php:70
|
28 |
msgid "User Links"
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/classes/admin/menu-editor.php:84
|
32 |
msgid "Login"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/classes/admin/menu-editor.php:88
|
36 |
msgid "Register"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/classes/admin/menu-editor.php:92
|
40 |
msgid "Logout"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#. translators: 1: link to registration page, 2: closing link tag.
|
44 |
+
#: includes/classes/admin/menu-editor.php:140
|
45 |
+
msgid "Registration is %1$scurrently disabled%2$s on your site."
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: includes/classes/admin/menu-editor.php:161
|
49 |
+
msgid "Select All"
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: includes/classes/admin/menu-editor.php:167
|
53 |
+
msgid "Add to Menu"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: includes/classes/admin/menu-editor.php:203
|
57 |
msgid "Insert User Menu Codes"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: includes/classes/admin/menu-importer.php:45
|
61 |
msgid "WP Nav Menus"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: includes/classes/admin/menu-importer.php:46
|
65 |
msgid "Import nav menus and other menu item meta skipped by the default importer"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: includes/classes/admin/menu-settings.php:46
|
69 |
msgid "Avatar Size"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: includes/classes/admin/menu-settings.php:58
|
73 |
msgid "Everyone"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: includes/classes/admin/menu-settings.php:59
|
77 |
msgid "Logged Out Users"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: includes/classes/admin/menu-settings.php:60
|
81 |
msgid "Logged In Users"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: includes/classes/admin/menu-settings.php:129, includes/classes/admin/menu-settings.php:105
|
85 |
msgid "Who can see this link?"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: includes/classes/admin/menu-settings.php:147
|
89 |
msgid "Choose which roles can see this link"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: includes/classes/admin/menu-settings.php:154
|
93 |
msgid "Choose which roles won't see this link"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: includes/classes/admin/menu-settings.php:65
|
97 |
msgid "Current Page"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: includes/classes/admin/menu-settings.php:66
|
101 |
msgid "Home Page"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: includes/classes/admin/menu-settings.php:67
|
105 |
msgid "Custom URL"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: includes/classes/admin/menu-settings.php:75
|
109 |
msgid "Where should users be taken afterwards?"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: includes/classes/admin/menu-settings.php:93
|
113 |
msgid "Enter a url user should be redirected to"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: includes/classes/admin/reviews.php:239
|
117 |
msgid "Hi there! You've been using the User Menus plugin on your site for %s now - We hope it's been helpful. If you're enjoying the plugin, would you mind rating it 5-stars to help spread the word?"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: includes/classes/admin/reviews.php:244
|
121 |
msgid "2 weeks"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: includes/classes/admin/reviews.php:252
|
125 |
msgid "3 months"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: includes/classes/admin/reviews.php:398
|
129 |
msgid "Ok, you deserve it"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: includes/classes/admin/reviews.php:403
|
133 |
msgid "Nope, maybe later"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: includes/classes/admin/reviews.php:408
|
137 |
msgid "I already did"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: includes/classes/importer/menu.php:116
|
141 |
msgid "Import Nav Menus"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: includes/classes/importer/menu.php:123
|
145 |
msgid "A new version of this importer is available. Please update to version %s to ensure compatibility with newer export files."
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: includes/classes/importer/menu.php:133
|
149 |
msgid "Upload your WordPress export (WXR) file and import the Nav Menus and any meta for the Nav Menu items."
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: includes/classes/importer/menu.php:134
|
153 |
msgid "Choose a WXR (.xml) file to upload, then click Upload file and import."
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: includes/classes/importer/menu.php:154, includes/classes/importer/menu.php:149, includes/classes/importer/menu.php:164, includes/classes/importer/menu.php:225, includes/classes/importer/menu.php:236
|
157 |
msgid "Sorry, there has been an error."
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: includes/classes/importer/menu.php:155
|
161 |
msgid "The export file could not be found at <code>%s</code>. It is likely that this was caused by a permissions problem."
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: includes/classes/importer/menu.php:173
|
165 |
msgid "This WXR file (version %s) may not be supported by this version of the importer. Please consider updating."
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: includes/classes/importer/menu.php:226
|
169 |
msgid "The file does not exist, please try again."
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: includes/classes/importer/menu.php:294
|
173 |
msgid "All done."
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: includes/classes/importer/menu.php:294
|
177 |
msgid "Have fun!"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: includes/classes/menu/items.php:51
|
181 |
msgid "User Link"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: includes/classes/user/codes.php:26
|
185 |
msgid "Avatar"
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: includes/classes/user/codes.php:27
|
189 |
msgid "First Name"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/classes/user/codes.php:28
|
193 |
msgid "Last Name"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/classes/user/codes.php:29
|
197 |
msgid "Username"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: includes/classes/user/codes.php:30
|
201 |
msgid "Display Name"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/classes/user/codes.php:31
|
205 |
msgid "Nickname"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/classes/user/codes.php:32
|
209 |
msgid "Email"
|
210 |
msgstr ""
|
readme.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
# User Menus
|
|
|
2 |
Needs to show or hide menu items to logged in users, logged out users or specific user roles in WordPress? User Menus is the plugin you need!
|
3 |
|
4 |
Feel free to browse the code and make suggestions/requests. Thanks!
|
@@ -6,29 +7,35 @@ Feel free to browse the code and make suggestions/requests. Thanks!
|
|
6 |
## Getting Started
|
7 |
|
8 |
### Downloading And Using As A Plugin
|
|
|
9 |
To use this plugin, this repo can be downloaded as a zip and installed as-is as a WordPress plugin. Once installed and activated, Go to wp-admin > Appearance > Menus and edit your menu.
|
10 |
|
11 |
### Getting Set Up For Development
|
12 |
|
13 |
#### Prerequisites
|
|
|
14 |
In order to run our Gulp tasks, you will need Node.js and NPM installed. To do so, you can [follow the NPM documentation's guide](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
|
15 |
If you have not used NPM before, you can [refer to this beginner's guide to NPM](https://www.sitepoint.com/beginners-guide-node-package-manager/).
|
16 |
|
17 |
This plugin uses a series of [Gulp](https://gulpjs.com) tasks to clean and prepare builds. To get started, run `npm install` to get the necessary gulp dependencies.
|
18 |
|
19 |
#### Gulp Tasks
|
|
|
20 |
As normal, we have our gulp tasks in the gulpfile.js file.
|
21 |
|
22 |
Task info coming soon....
|
23 |
|
24 |
## Built With
|
|
|
25 |
* [SASS](https://sass-lang.com) - The CSS pre-processor we use. We use the SCSS syntax.
|
26 |
|
27 |
## Deployment
|
|
|
28 |
This is a WordPress plugin that is hosted on the WordPress.org SVN repo.
|
29 |
There is not currently any automated deployment. Instead, once a release is published on GitHub, that release is manually uploaded to the SVN.
|
30 |
|
31 |
## Contributing
|
|
|
32 |
Community made feature requests, patches, localizations, bug reports, and contributions are always welcome and are crucial to ensure User Menus continues to grow.
|
33 |
|
34 |
When contributing please ensure you follow the guidelines below so that we can keep on top of things.
|
@@ -36,27 +43,32 @@ When contributing please ensure you follow the guidelines below so that we can k
|
|
36 |
Please Note: GitHub is not intended for support based questions. For those, please use the [support forums](https://wordpress.org/support/plugin/user-menus).
|
37 |
|
38 |
### Creating Issues
|
|
|
39 |
* If you have any bugs or feature requests, please [create an issue](https://github.com/JunglePlugins/User-Menus/issues/new)
|
40 |
* For bug reports, please clearly describe the bug/issue and include steps on how to reproduce it
|
41 |
* For feature requests, please clearly describe what you would like, how it would be used, and example screenshots (if possible)
|
42 |
|
43 |
### Pull Requests
|
|
|
44 |
* Ensure you stick to the [WordPress Coding Standards](https://codex.wordpress.org/WordPress_Coding_Standards)
|
45 |
* When committing, reference your issue (if present) and include a note about the fix
|
46 |
* Push the changes to your fork and submit a pull request to the 'master' branch of this repository
|
47 |
* We are trying to ensure that every function is documented well and follows the standards set by phpDoc going forward
|
48 |
|
49 |
## Versioning
|
|
|
50 |
We use [SemVer](http://semver.org/) for versioning. For the versions available, see [the releases in this repository](https://github.com/JunglePlugins/User-Menus/releases).
|
51 |
|
52 |
## Developers
|
|
|
53 |
* Daniel Iser - Lead Developer
|
54 |
-
* Frank Corso - Developer
|
55 |
|
56 |
See also [the list of contributors](https://github.com/JunglePlugins/User-Menus/graphs/contributors) who participated in this project.
|
57 |
|
58 |
## License
|
|
|
59 |
This project is licensed under the GPLv3 License.
|
60 |
|
61 |
## Support
|
|
|
62 |
This is a developer's portal for User Menus and **should not** be used for support. Please [create a support ticket here](https://wordpress.org/support/plugin/user-menus).
|
1 |
# User Menus
|
2 |
+
|
3 |
Needs to show or hide menu items to logged in users, logged out users or specific user roles in WordPress? User Menus is the plugin you need!
|
4 |
|
5 |
Feel free to browse the code and make suggestions/requests. Thanks!
|
7 |
## Getting Started
|
8 |
|
9 |
### Downloading And Using As A Plugin
|
10 |
+
|
11 |
To use this plugin, this repo can be downloaded as a zip and installed as-is as a WordPress plugin. Once installed and activated, Go to wp-admin > Appearance > Menus and edit your menu.
|
12 |
|
13 |
### Getting Set Up For Development
|
14 |
|
15 |
#### Prerequisites
|
16 |
+
|
17 |
In order to run our Gulp tasks, you will need Node.js and NPM installed. To do so, you can [follow the NPM documentation's guide](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
|
18 |
If you have not used NPM before, you can [refer to this beginner's guide to NPM](https://www.sitepoint.com/beginners-guide-node-package-manager/).
|
19 |
|
20 |
This plugin uses a series of [Gulp](https://gulpjs.com) tasks to clean and prepare builds. To get started, run `npm install` to get the necessary gulp dependencies.
|
21 |
|
22 |
#### Gulp Tasks
|
23 |
+
|
24 |
As normal, we have our gulp tasks in the gulpfile.js file.
|
25 |
|
26 |
Task info coming soon....
|
27 |
|
28 |
## Built With
|
29 |
+
|
30 |
* [SASS](https://sass-lang.com) - The CSS pre-processor we use. We use the SCSS syntax.
|
31 |
|
32 |
## Deployment
|
33 |
+
|
34 |
This is a WordPress plugin that is hosted on the WordPress.org SVN repo.
|
35 |
There is not currently any automated deployment. Instead, once a release is published on GitHub, that release is manually uploaded to the SVN.
|
36 |
|
37 |
## Contributing
|
38 |
+
|
39 |
Community made feature requests, patches, localizations, bug reports, and contributions are always welcome and are crucial to ensure User Menus continues to grow.
|
40 |
|
41 |
When contributing please ensure you follow the guidelines below so that we can keep on top of things.
|
43 |
Please Note: GitHub is not intended for support based questions. For those, please use the [support forums](https://wordpress.org/support/plugin/user-menus).
|
44 |
|
45 |
### Creating Issues
|
46 |
+
|
47 |
* If you have any bugs or feature requests, please [create an issue](https://github.com/JunglePlugins/User-Menus/issues/new)
|
48 |
* For bug reports, please clearly describe the bug/issue and include steps on how to reproduce it
|
49 |
* For feature requests, please clearly describe what you would like, how it would be used, and example screenshots (if possible)
|
50 |
|
51 |
### Pull Requests
|
52 |
+
|
53 |
* Ensure you stick to the [WordPress Coding Standards](https://codex.wordpress.org/WordPress_Coding_Standards)
|
54 |
* When committing, reference your issue (if present) and include a note about the fix
|
55 |
* Push the changes to your fork and submit a pull request to the 'master' branch of this repository
|
56 |
* We are trying to ensure that every function is documented well and follows the standards set by phpDoc going forward
|
57 |
|
58 |
## Versioning
|
59 |
+
|
60 |
We use [SemVer](http://semver.org/) for versioning. For the versions available, see [the releases in this repository](https://github.com/JunglePlugins/User-Menus/releases).
|
61 |
|
62 |
## Developers
|
63 |
+
|
64 |
* Daniel Iser - Lead Developer
|
|
|
65 |
|
66 |
See also [the list of contributors](https://github.com/JunglePlugins/User-Menus/graphs/contributors) who participated in this project.
|
67 |
|
68 |
## License
|
69 |
+
|
70 |
This project is licensed under the GPLv3 License.
|
71 |
|
72 |
## Support
|
73 |
+
|
74 |
This is a developer's portal for User Menus and **should not** be used for support. Please [create a support ticket here](https://wordpress.org/support/plugin/user-menus).
|
readme.txt
CHANGED
@@ -5,10 +5,10 @@ Plugin URI: https://wordpress.org/plugins/user-menus/
|
|
5 |
Donate link: https://code-atlantic.com/donate/
|
6 |
Tags: menu, menus, user-menu, logout, nav-menu, nav-menus, user, user-role, user-roles
|
7 |
Requires at least: 4.6
|
8 |
-
Tested up to: 5.
|
9 |
-
Stable tag: 1.2.
|
10 |
Requires PHP: 5.6
|
11 |
-
Freemius: 2.4.
|
12 |
License: GPLv3 or Any Later Version
|
13 |
|
14 |
Show/hide menu items to logged in users, logged out users or specific user roles. Display logged in user details in menu. Add a logout link to menu.
|
@@ -108,25 +108,37 @@ Bugs can be reported either in our support forum or preferably on the [User Menu
|
|
108 |
|
109 |
== Changelog ==
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
= v1.2.5 - 12/31/2020 =
|
112 |
-
|
|
|
113 |
|
114 |
= v1.2.4 - 08/20/2020 =
|
|
|
115 |
* Improvement: Removed class that could cause links to be disabled with some themes.
|
116 |
* Tweak: Update Freemius sdk to v2.4.0.1.
|
117 |
* Fix: Compatibility issue with some sites where duplicate fields were shown in the menu editor.
|
118 |
|
119 |
= v1.2.3 - 3/23/2020 =
|
|
|
120 |
* Tweak: Add compatibility fix for WP 5.4 menu walker
|
121 |
|
122 |
= v1.2.2 - 12/17/2019 =
|
|
|
123 |
* Improvement: Login, Register & Logout menu links now hint at who they will be visible for.
|
124 |
* Fix: Deprecation notice for sites using PHP 7.4
|
125 |
|
126 |
= v1.2.1 - 10/20/2019 =
|
|
|
127 |
* Fix: Bug in some sites where Menu Editor Description field was not shown.
|
128 |
|
129 |
= v1.2.0 - 10/10/2019 =
|
|
|
130 |
* Feature: Added option to *show* or *hide* the menu item for chosen roles.
|
131 |
* Feature: Added Register user link navigation menu type with optional redirect.
|
132 |
* Improvement: Added Freemius integration to allow for future premium offerings
|
@@ -135,19 +147,24 @@ Bugs can be reported either in our support forum or preferably on the [User Menu
|
|
135 |
* Fix: Bug where missing data in menu items caused an error to be thrown in edge cases.
|
136 |
|
137 |
= v1.1.3 =
|
|
|
138 |
* Improvement: Corrected usage of get_avatar to ensure compatibility with 3rd party avatar plugins.
|
139 |
|
140 |
= v1.1.2 =
|
|
|
141 |
* Improvement: Made changes to the nav menu editor to make it more compatible with other plugins.
|
142 |
|
143 |
= v1.1.1 =
|
|
|
144 |
* Fix: Forgot to add new files during commit. Correcting this issue.
|
145 |
|
146 |
= v1.1.0 =
|
|
|
147 |
* Feature: Added ability to insert user avatar in menu items with size option to match your needs.
|
148 |
* Improvement: Added accessibility enhancements to menu editor. Includes keyboard support, proper focus, tabbing & titles.
|
149 |
* Improvement: Added proper labeling to the user code dropdown.
|
150 |
* Tweak: Restyled user code insert elements to better resemble default WP admin.
|
151 |
|
152 |
= v1.0.0 =
|
|
|
153 |
* Initial Release
|
5 |
Donate link: https://code-atlantic.com/donate/
|
6 |
Tags: menu, menus, user-menu, logout, nav-menu, nav-menus, user, user-role, user-roles
|
7 |
Requires at least: 4.6
|
8 |
+
Tested up to: 5.8
|
9 |
+
Stable tag: 1.2.6
|
10 |
Requires PHP: 5.6
|
11 |
+
Freemius: 2.4.2
|
12 |
License: GPLv3 or Any Later Version
|
13 |
|
14 |
Show/hide menu items to logged in users, logged out users or specific user roles. Display logged in user details in menu. Add a logout link to menu.
|
108 |
|
109 |
== Changelog ==
|
110 |
|
111 |
+
= v1.2.6 - 07/20/2021 =
|
112 |
+
|
113 |
+
* Improvement: Update Freemius to 2.4.2
|
114 |
+
* Improvement: Code styling clean up.
|
115 |
+
* Improvement: Compatibility with jQuery v3.
|
116 |
+
|
117 |
= v1.2.5 - 12/31/2020 =
|
118 |
+
|
119 |
+
* Improvement:Update Freemius to 2.4.1
|
120 |
|
121 |
= v1.2.4 - 08/20/2020 =
|
122 |
+
|
123 |
* Improvement: Removed class that could cause links to be disabled with some themes.
|
124 |
* Tweak: Update Freemius sdk to v2.4.0.1.
|
125 |
* Fix: Compatibility issue with some sites where duplicate fields were shown in the menu editor.
|
126 |
|
127 |
= v1.2.3 - 3/23/2020 =
|
128 |
+
|
129 |
* Tweak: Add compatibility fix for WP 5.4 menu walker
|
130 |
|
131 |
= v1.2.2 - 12/17/2019 =
|
132 |
+
|
133 |
* Improvement: Login, Register & Logout menu links now hint at who they will be visible for.
|
134 |
* Fix: Deprecation notice for sites using PHP 7.4
|
135 |
|
136 |
= v1.2.1 - 10/20/2019 =
|
137 |
+
|
138 |
* Fix: Bug in some sites where Menu Editor Description field was not shown.
|
139 |
|
140 |
= v1.2.0 - 10/10/2019 =
|
141 |
+
|
142 |
* Feature: Added option to *show* or *hide* the menu item for chosen roles.
|
143 |
* Feature: Added Register user link navigation menu type with optional redirect.
|
144 |
* Improvement: Added Freemius integration to allow for future premium offerings
|
147 |
* Fix: Bug where missing data in menu items caused an error to be thrown in edge cases.
|
148 |
|
149 |
= v1.1.3 =
|
150 |
+
|
151 |
* Improvement: Corrected usage of get_avatar to ensure compatibility with 3rd party avatar plugins.
|
152 |
|
153 |
= v1.1.2 =
|
154 |
+
|
155 |
* Improvement: Made changes to the nav menu editor to make it more compatible with other plugins.
|
156 |
|
157 |
= v1.1.1 =
|
158 |
+
|
159 |
* Fix: Forgot to add new files during commit. Correcting this issue.
|
160 |
|
161 |
= v1.1.0 =
|
162 |
+
|
163 |
* Feature: Added ability to insert user avatar in menu items with size option to match your needs.
|
164 |
* Improvement: Added accessibility enhancements to menu editor. Includes keyboard support, proper focus, tabbing & titles.
|
165 |
* Improvement: Added proper labeling to the user code dropdown.
|
166 |
* Tweak: Restyled user code insert elements to better resemble default WP admin.
|
167 |
|
168 |
= v1.0.0 =
|
169 |
+
|
170 |
* Initial Release
|
user-menus.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: User Menus
|
4 |
* Plugin URI: https://wordpress.org/plugins/user-menus/
|
5 |
* Description: Quickly customize your menus with a user's name & avatar, or show items based on user role.
|
6 |
-
* Version: 1.2.
|
7 |
* Author: Code Atlantic
|
8 |
* Author URI: https://code-atlantic.com/
|
9 |
* License: GPL2 or later
|
@@ -14,6 +14,7 @@
|
|
14 |
* Minimum WP: 4.6
|
15 |
*
|
16 |
* @author Daniel Iser
|
|
|
17 |
* @copyright Copyright (c) 2019, Code Atlantic LLC
|
18 |
*
|
19 |
* Prior Work Credits. Big thanks to the following:
|
@@ -26,39 +27,43 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
26 |
}
|
27 |
|
28 |
if ( ! function_exists( 'um_fs' ) ) {
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
/**
|
@@ -67,50 +72,72 @@ if ( ! function_exists( 'um_fs' ) ) {
|
|
67 |
class JP_User_Menus {
|
68 |
|
69 |
/**
|
|
|
|
|
70 |
* @var string
|
71 |
*/
|
72 |
public static $NAME = 'User Menus';
|
73 |
|
74 |
/**
|
|
|
|
|
75 |
* @var string
|
76 |
*/
|
77 |
-
public static $VER = '1.2.
|
78 |
|
79 |
/**
|
|
|
|
|
80 |
* @var string
|
81 |
*/
|
82 |
public static $MIN_PHP_VER = '5.6';
|
83 |
|
84 |
/**
|
|
|
|
|
85 |
* @var string
|
86 |
*/
|
87 |
public static $MIN_WP_VER = '4.6';
|
88 |
|
89 |
/**
|
|
|
|
|
90 |
* @var string
|
91 |
*/
|
92 |
public static $URL = '';
|
|
|
93 |
/**
|
|
|
|
|
94 |
* @var string
|
95 |
*/
|
96 |
public static $DIR = '';
|
|
|
97 |
/**
|
|
|
|
|
98 |
* @var string
|
99 |
*/
|
100 |
public static $FILE = '';
|
101 |
|
102 |
/**
|
|
|
|
|
103 |
* @var string
|
104 |
*/
|
105 |
public static $TEMPLATE_PATH = 'jp/user-menus/';
|
106 |
|
107 |
/**
|
|
|
|
|
108 |
* @var string
|
109 |
*/
|
110 |
public static $TD = 'user-menus';
|
|
|
111 |
/**
|
|
|
|
|
112 |
* @var JP_User_Menus $instance The one true JP_User_Menus
|
113 |
-
* @since 1.0.0
|
114 |
*/
|
115 |
private static $instance;
|
116 |
|
@@ -123,10 +150,10 @@ class JP_User_Menus {
|
|
123 |
*/
|
124 |
public static function instance() {
|
125 |
if ( ! self::$instance ) {
|
126 |
-
self::$instance = new static;
|
127 |
self::$instance->setup_constants();
|
128 |
|
129 |
-
add_action( 'plugins_loaded',
|
130 |
|
131 |
self::$instance->includes();
|
132 |
}
|
@@ -151,24 +178,25 @@ class JP_User_Menus {
|
|
151 |
* @since 1.0.0
|
152 |
*/
|
153 |
private function includes() {
|
154 |
-
// Menu Items
|
155 |
require_once self::$DIR . 'includes/classes/menu/item.php';
|
156 |
require_once self::$DIR . 'includes/classes/menu/items.php';
|
157 |
require_once self::$DIR . 'includes/classes/user/codes.php';
|
158 |
if ( is_admin() ) {
|
159 |
-
// Admin Menu Editor
|
160 |
require_once self::$DIR . 'includes/classes/admin/menu-editor.php';
|
161 |
require_once self::$DIR . 'includes/classes/admin/menu-settings.php';
|
162 |
require_once self::$DIR . 'includes/classes/admin/menu-importer.php';
|
163 |
require_once self::$DIR . 'includes/classes/admin/reviews.php';
|
164 |
} else {
|
165 |
-
// Site Menu Filter
|
166 |
require_once self::$DIR . 'includes/classes/site/menus.php';
|
167 |
}
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
* Get the plugin path.
|
|
|
172 |
* @return string
|
173 |
*/
|
174 |
public function plugin_path() {
|
@@ -177,6 +205,7 @@ class JP_User_Menus {
|
|
177 |
|
178 |
/**
|
179 |
* Get the plugin url.
|
|
|
180 |
* @return string
|
181 |
*/
|
182 |
public function plugin_url() {
|
@@ -197,14 +226,19 @@ class JP_User_Menus {
|
|
197 |
return;
|
198 |
}
|
199 |
|
200 |
-
$version = 'PHP'
|
201 |
|
202 |
// Deactivate automatically due to insufficient PHP or WP Version.
|
203 |
deactivate_plugins( basename( __FILE__ ) );
|
204 |
|
205 |
-
|
|
|
206 |
|
207 |
-
|
|
|
|
|
|
|
|
|
208 |
}
|
209 |
|
210 |
/**
|
@@ -219,6 +253,8 @@ class JP_User_Menus {
|
|
219 |
}
|
220 |
|
221 |
/**
|
|
|
|
|
222 |
* @return object
|
223 |
*/
|
224 |
function jp_user_menus() {
|
@@ -228,4 +264,4 @@ function jp_user_menus() {
|
|
228 |
jp_user_menus();
|
229 |
|
230 |
// Ensure plugin & environment compatibility.
|
231 |
-
register_activation_hook( __FILE__,
|
3 |
* Plugin Name: User Menus
|
4 |
* Plugin URI: https://wordpress.org/plugins/user-menus/
|
5 |
* Description: Quickly customize your menus with a user's name & avatar, or show items based on user role.
|
6 |
+
* Version: 1.2.6
|
7 |
* Author: Code Atlantic
|
8 |
* Author URI: https://code-atlantic.com/
|
9 |
* License: GPL2 or later
|
14 |
* Minimum WP: 4.6
|
15 |
*
|
16 |
* @author Daniel Iser
|
17 |
+
* @package User Menus
|
18 |
* @copyright Copyright (c) 2019, Code Atlantic LLC
|
19 |
*
|
20 |
* Prior Work Credits. Big thanks to the following:
|
27 |
}
|
28 |
|
29 |
if ( ! function_exists( 'um_fs' ) ) {
|
30 |
+
/**
|
31 |
+
* Create a helper function for easy SDK access.
|
32 |
+
*
|
33 |
+
* @return \Freemius
|
34 |
+
*/
|
35 |
+
function um_fs() {
|
36 |
+
global $um_fs;
|
37 |
+
|
38 |
+
if ( ! isset( $um_fs ) ) {
|
39 |
+
// Include Freemius SDK.
|
40 |
+
require_once dirname( __FILE__ ) . '/freemius/start.php';
|
41 |
+
|
42 |
+
$um_fs = fs_dynamic_init( [
|
43 |
+
'id' => '3637',
|
44 |
+
'slug' => 'user-menus',
|
45 |
+
'type' => 'plugin',
|
46 |
+
'public_key' => 'pk_367ac2d0a38c35ef2a78d161fed88',
|
47 |
+
'is_premium' => false,
|
48 |
+
'has_addons' => false,
|
49 |
+
'has_paid_plans' => false,
|
50 |
+
'menu' => [
|
51 |
+
'first-path' => 'plugins.php',
|
52 |
+
'account' => false,
|
53 |
+
'contact' => false,
|
54 |
+
'support' => false,
|
55 |
+
],
|
56 |
+
] );
|
57 |
+
}
|
58 |
+
|
59 |
+
return $um_fs;
|
60 |
+
}
|
61 |
+
|
62 |
+
// Init Freemius.
|
63 |
+
um_fs();
|
64 |
+
|
65 |
+
// Signal that SDK was initiated.
|
66 |
+
do_action( 'um_fs_loaded' );
|
67 |
}
|
68 |
|
69 |
/**
|
72 |
class JP_User_Menus {
|
73 |
|
74 |
/**
|
75 |
+
* Plugin Name
|
76 |
+
*
|
77 |
* @var string
|
78 |
*/
|
79 |
public static $NAME = 'User Menus';
|
80 |
|
81 |
/**
|
82 |
+
* Plugin Version
|
83 |
+
*
|
84 |
* @var string
|
85 |
*/
|
86 |
+
public static $VER = '1.2.6';
|
87 |
|
88 |
/**
|
89 |
+
* Minimum PHP version
|
90 |
+
*
|
91 |
* @var string
|
92 |
*/
|
93 |
public static $MIN_PHP_VER = '5.6';
|
94 |
|
95 |
/**
|
96 |
+
* Minimum WP version
|
97 |
+
*
|
98 |
* @var string
|
99 |
*/
|
100 |
public static $MIN_WP_VER = '4.6';
|
101 |
|
102 |
/**
|
103 |
+
* Plugin URL
|
104 |
+
*
|
105 |
* @var string
|
106 |
*/
|
107 |
public static $URL = '';
|
108 |
+
|
109 |
/**
|
110 |
+
* Plugin Directory
|
111 |
+
*
|
112 |
* @var string
|
113 |
*/
|
114 |
public static $DIR = '';
|
115 |
+
|
116 |
/**
|
117 |
+
* Plugin File
|
118 |
+
*
|
119 |
* @var string
|
120 |
*/
|
121 |
public static $FILE = '';
|
122 |
|
123 |
/**
|
124 |
+
* Plugin Template Directory
|
125 |
+
*
|
126 |
* @var string
|
127 |
*/
|
128 |
public static $TEMPLATE_PATH = 'jp/user-menus/';
|
129 |
|
130 |
/**
|
131 |
+
* Text Domain
|
132 |
+
*
|
133 |
* @var string
|
134 |
*/
|
135 |
public static $TD = 'user-menus';
|
136 |
+
|
137 |
/**
|
138 |
+
* Instance of the plugin class
|
139 |
+
*
|
140 |
* @var JP_User_Menus $instance The one true JP_User_Menus
|
|
|
141 |
*/
|
142 |
private static $instance;
|
143 |
|
150 |
*/
|
151 |
public static function instance() {
|
152 |
if ( ! self::$instance ) {
|
153 |
+
self::$instance = new static();
|
154 |
self::$instance->setup_constants();
|
155 |
|
156 |
+
add_action( 'plugins_loaded', [ self::$instance, 'load_textdomain' ] );
|
157 |
|
158 |
self::$instance->includes();
|
159 |
}
|
178 |
* @since 1.0.0
|
179 |
*/
|
180 |
private function includes() {
|
181 |
+
// Menu Items.
|
182 |
require_once self::$DIR . 'includes/classes/menu/item.php';
|
183 |
require_once self::$DIR . 'includes/classes/menu/items.php';
|
184 |
require_once self::$DIR . 'includes/classes/user/codes.php';
|
185 |
if ( is_admin() ) {
|
186 |
+
// Admin Menu Editor.
|
187 |
require_once self::$DIR . 'includes/classes/admin/menu-editor.php';
|
188 |
require_once self::$DIR . 'includes/classes/admin/menu-settings.php';
|
189 |
require_once self::$DIR . 'includes/classes/admin/menu-importer.php';
|
190 |
require_once self::$DIR . 'includes/classes/admin/reviews.php';
|
191 |
} else {
|
192 |
+
// Site Menu Filter.
|
193 |
require_once self::$DIR . 'includes/classes/site/menus.php';
|
194 |
}
|
195 |
}
|
196 |
|
197 |
/**
|
198 |
* Get the plugin path.
|
199 |
+
*
|
200 |
* @return string
|
201 |
*/
|
202 |
public function plugin_path() {
|
205 |
|
206 |
/**
|
207 |
* Get the plugin url.
|
208 |
+
*
|
209 |
* @return string
|
210 |
*/
|
211 |
public function plugin_url() {
|
226 |
return;
|
227 |
}
|
228 |
|
229 |
+
$version = 'PHP' === $flag ? self::$MIN_PHP_VER : self::$MIN_WP_VER;
|
230 |
|
231 |
// Deactivate automatically due to insufficient PHP or WP Version.
|
232 |
deactivate_plugins( basename( __FILE__ ) );
|
233 |
|
234 |
+
/* translators: 1: Plugin Name, 2: Flagged software (PHP or WP), 3: PHP or WordPress version */
|
235 |
+
$notice = sprintf( __( 'The %4$s %1$s %5$s plugin requires %2$s version %3$s or greater.', 'user-menus' ), self::$NAME, $flag, $version, '<strong>', '</strong>' );
|
236 |
|
237 |
+
/* phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped */
|
238 |
+
wp_die( sprintf( '<p>%s</p>', $notice ), __( 'Plugin Activation Error', 'user-menus' ), [
|
239 |
+
'response' => 200,
|
240 |
+
'back_link' => true,
|
241 |
+
] );
|
242 |
}
|
243 |
|
244 |
/**
|
253 |
}
|
254 |
|
255 |
/**
|
256 |
+
* Globally available function to get plugin instance.
|
257 |
+
*
|
258 |
* @return object
|
259 |
*/
|
260 |
function jp_user_menus() {
|
264 |
jp_user_menus();
|
265 |
|
266 |
// Ensure plugin & environment compatibility.
|
267 |
+
register_activation_hook( __FILE__, [ 'JP_User_Menus', 'activation_check' ] );
|