Version Description
Download this release
Release Info
Developer | danieliser |
Plugin | Popup Maker – Popup Forms, Optins & More |
Version | 1.5.3 |
Comparing to | |
See all releases |
Code changes from version 1.5.2 to 1.5.3
- assets/js/site.js +25 -0
- assets/js/site.min.js +2 -2
- includes/admin/popups/class-metabox-triggers.php +2 -2
- includes/class-pum-fields.php +1 -1
- includes/class-pum.php +1 -1
- includes/pum-sdk/freemius/assets/css/admin/checkout.css +1 -0
- includes/pum-sdk/freemius/assets/css/admin/common.css +1 -0
- includes/pum-sdk/freemius/assets/css/admin/debug.css +1 -1
- includes/pum-sdk/freemius/assets/css/admin/dialog-boxes.css +1 -1
- includes/pum-sdk/freemius/assets/index.php +3 -0
- includes/pum-sdk/freemius/assets/scss/_load.scss +4 -4
- includes/pum-sdk/freemius/assets/scss/_start.scss +3 -3
- includes/pum-sdk/freemius/assets/scss/_vars.scss +6 -5
- includes/pum-sdk/freemius/assets/scss/admin/_license-key-resend.scss +54 -30
- includes/pum-sdk/freemius/assets/scss/admin/checkout.scss +5 -0
- includes/pum-sdk/freemius/assets/scss/admin/common.scss +13 -0
- includes/pum-sdk/freemius/assets/scss/admin/connect.scss +471 -471
- includes/pum-sdk/freemius/assets/scss/admin/debug.scss +44 -0
- includes/pum-sdk/freemius/config.php +19 -1
- includes/pum-sdk/freemius/gulpfile.js +19 -3
- includes/pum-sdk/freemius/includes/class-freemius-abstract.php +33 -7
- includes/pum-sdk/freemius/includes/class-freemius.php +456 -178
- includes/pum-sdk/freemius/includes/class-fs-api.php +1 -1
- includes/pum-sdk/freemius/includes/class-fs-logger.php +493 -12
- includes/pum-sdk/freemius/includes/class-fs-plugin-updater.php +93 -15
- includes/pum-sdk/freemius/includes/class-fs-security.php +7 -1
- includes/pum-sdk/freemius/includes/debug/index.php +3 -0
- includes/pum-sdk/freemius/includes/entities/class-fs-plugin-license.php +9 -1
- includes/pum-sdk/freemius/includes/entities/index.php +3 -0
- includes/pum-sdk/freemius/includes/fs-core-functions.php +94 -5
- includes/pum-sdk/freemius/includes/fs-essential-functions.php +21 -9
- includes/pum-sdk/freemius/includes/fs-plugin-info-dialog.php +368 -356
- includes/pum-sdk/freemius/includes/i18n.php +518 -534
- includes/pum-sdk/freemius/includes/index.php +3 -0
- includes/pum-sdk/freemius/includes/l10n.php +250 -0
- includes/pum-sdk/freemius/includes/managers/class-fs-admin-menu-manager.php +85 -21
- includes/pum-sdk/freemius/includes/managers/class-fs-admin-notice-manager.php +312 -312
- includes/pum-sdk/freemius/includes/managers/index.php +3 -0
- includes/pum-sdk/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +8 -8
- includes/pum-sdk/freemius/includes/sdk/Exceptions/EmptyArgumentException.php +8 -8
- includes/pum-sdk/freemius/includes/sdk/Exceptions/Exception.php +73 -73
- includes/pum-sdk/freemius/includes/sdk/Exceptions/InvalidArgumentException.php +7 -7
- includes/pum-sdk/freemius/includes/sdk/Exceptions/OAuthException.php +11 -11
- includes/pum-sdk/freemius/includes/sdk/Exceptions/index.php +3 -0
- includes/pum-sdk/freemius/includes/sdk/Freemius.php +582 -582
- includes/pum-sdk/freemius/includes/sdk/FreemiusBase.php +188 -188
- includes/pum-sdk/freemius/includes/sdk/index.php +3 -0
- includes/pum-sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +1 -1
- includes/pum-sdk/freemius/includes/supplements/index.php +3 -0
- includes/pum-sdk/freemius/index.php +3 -0
- includes/pum-sdk/freemius/languages/freemius-en.mo +0 -0
- includes/pum-sdk/freemius/languages/freemius-en.po +581 -376
- includes/pum-sdk/freemius/languages/freemius-it_IT.mo +0 -0
- includes/pum-sdk/freemius/languages/freemius-it_IT.po +578 -375
- includes/pum-sdk/freemius/languages/freemius-ja_JP.mo +0 -0
- includes/pum-sdk/freemius/languages/freemius-ja_JP.po +1662 -0
- includes/pum-sdk/freemius/languages/freemius.pot +568 -369
- includes/pum-sdk/freemius/languages/index.php +3 -0
- includes/pum-sdk/freemius/package.json +2 -2
- includes/pum-sdk/freemius/start.php +307 -307
- includes/pum-sdk/freemius/templates/account.php +53 -46
- includes/pum-sdk/freemius/templates/add-ons.php +11 -0
- includes/pum-sdk/freemius/templates/checkout-legacy.php +242 -0
- includes/pum-sdk/freemius/templates/checkout.php +43 -24
- includes/pum-sdk/freemius/templates/connect.php +406 -404
- includes/pum-sdk/freemius/templates/debug.php +289 -113
- includes/pum-sdk/freemius/templates/debug/index.php +3 -0
- includes/pum-sdk/freemius/templates/debug/logger.php +3 -3
- includes/pum-sdk/freemius/templates/email.php +3 -3
- includes/pum-sdk/freemius/templates/forms/deactivation/index.php +3 -0
- includes/pum-sdk/freemius/templates/forms/index.php +3 -0
- includes/pum-sdk/freemius/templates/forms/license-activation.php +6 -6
- includes/pum-sdk/freemius/templates/forms/optout.php +18 -13
- includes/pum-sdk/freemius/templates/forms/resend-key.php +108 -58
- includes/pum-sdk/freemius/templates/forms/trial-start.php +11 -7
- includes/pum-sdk/freemius/templates/index.php +3 -0
- includes/pum-sdk/freemius/templates/plugin-icon.php +1 -1
- includes/pum-sdk/freemius/templates/plugin-info/index.php +3 -0
- popup-maker.php +2 -2
- readme.txt +9 -5
assets/js/site.js
CHANGED
@@ -2426,6 +2426,26 @@ var pum_debug_mode = false,
|
|
2426 |
.data('do-default', settings.do_default)
|
2427 |
.attr('data-do-default', settings.do_default)
|
2428 |
.css({cursor: "pointer"});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2429 |
},
|
2430 |
admin_debug: function () {
|
2431 |
PUM.getPopup(this).popmake('open');
|
@@ -2459,6 +2479,11 @@ var pum_debug_mode = false,
|
|
2459 |
return;
|
2460 |
}
|
2461 |
|
|
|
|
|
|
|
|
|
|
|
2462 |
// If cookie exists or conditions fail return.
|
2463 |
if ($popup.popmake('checkCookies', settings) || !$popup.popmake('checkConditions')) {
|
2464 |
return;
|
2426 |
.data('do-default', settings.do_default)
|
2427 |
.attr('data-do-default', settings.do_default)
|
2428 |
.css({cursor: "pointer"});
|
2429 |
+
|
2430 |
+
// Catches and initializes any triggers added to the page late.
|
2431 |
+
$(document).on('click', trigger_selector+':not(.pum-trigger)', function (event) {
|
2432 |
+
var $this = $(this);
|
2433 |
+
|
2434 |
+
$this
|
2435 |
+
.addClass('pum-trigger')
|
2436 |
+
.data('popup', popup_settings.id)
|
2437 |
+
.attr('data-popup', popup_settings.id)
|
2438 |
+
.data('settings', settings)
|
2439 |
+
.data('do-default', settings.do_default)
|
2440 |
+
.attr('data-do-default', settings.do_default)
|
2441 |
+
.css({cursor: "pointer"});
|
2442 |
+
|
2443 |
+
event.preventDefault();
|
2444 |
+
event.stopPropagation();
|
2445 |
+
|
2446 |
+
// TODO test this.
|
2447 |
+
$this.trigger('click');
|
2448 |
+
});
|
2449 |
},
|
2450 |
admin_debug: function () {
|
2451 |
PUM.getPopup(this).popmake('open');
|
2479 |
return;
|
2480 |
}
|
2481 |
|
2482 |
+
// If the popup is already open return.
|
2483 |
+
if ($popup.popmake('state', 'isOpen')) {
|
2484 |
+
return;
|
2485 |
+
}
|
2486 |
+
|
2487 |
// If cookie exists or conditions fail return.
|
2488 |
if ($popup.popmake('checkCookies', settings) || !$popup.popmake('checkConditions')) {
|
2489 |
return;
|
assets/js/site.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
!function(e){"use strict";void 0===e.fn.on&&(e.fn.on=function(e,t,o){return this.delegate(t,e,o)}),void 0===e.fn.off&&(e.fn.off=function(e,t,o){return this.undelegate(t,e,o)}),void 0===e.fn.bindFirst&&(e.fn.bindFirst=function(t,o){var n,i,p=e(this);p.unbind(t,o),p.bind(t,o),n=e._data(p[0]).events,i=n[t],i.unshift(i.pop()),n[t]=i}),void 0===e.fn.outerHtml&&(e.fn.outerHtml=function(){var t=e(this).clone(),o=e("<div/>").append(t);return o.html()}),void 0===Date.now&&(Date.now=function(){return(new Date).getTime()})}(jQuery);var PUM;!function(e,t,o){"use strict";function n(e){return!isNaN(e)&&parseInt(Number(e))==e&&!isNaN(parseInt(e,10))}function i(){var e={},t=function(t,n,i){"boolean"==typeof n&&(i=n,n=!1);var p=n?n.selector+" "+t:t;return(o===e[p]||i)&&(e[p]=n?n.find(t):jQuery(t)),e[p]};return t.elementCache=e,t}function p(e,t){function o(e,t,o){return t?e[t.slice(0,o?-1:t.length)]:e}function n(e,t){return t?t.split("[").reduce(o,e):e}return t.split(".").reduce(n,e)}PUM={get:new i,getPopup:function(t){var o;return o=n(t)?PUM.get("#pum-"+t):"current"===t?PUM.get(".pum-overlay.pum-active:eq(0)",!0):"open"===t?PUM.get(".pum-overlay.pum-active",!0):"closed"===t?PUM.get(".pum-overlay:not(.pum-active)",!0):t instanceof jQuery?t:e(t),o.hasClass("pum-overlay")?o:o.hasClass("popmake")?o.parents(".pum-overlay"):o.parents(".pum-overlay").length?o.parents(".pum-overlay"):e()},open:function(e,t){PUM.getPopup(e).popmake("open",t)},close:function(e,t){PUM.getPopup(e).popmake("close",t)},preventOpen:function(e){PUM.getPopup(e).addClass("preventOpen")},getSettings:function(e){var t=PUM.getPopup(e);return t.popmake("getSettings")},getSetting:function(e,t,n){var i=PUM.getSettings(e),a=p(i,t);return"undefined"!=typeof a?a:n!==o?n:null},checkConditions:function(e){return PUM.getPopup(e).popmake("checkConditions")},getCookie:function(t){return e.pm_cookie(t)},clearCookie:function(t,o){e.pm_remove_cookie(t),"function"==typeof o&&o()},clearCookies:function(t,n){var i,p=PUM.getPopup(t),a=p.popmake("getSettings"),s=a.cookies;if(s!==o&&s.length)for(i=0;s.length>i;i+=1)e.pm_remove_cookie(s[i].settings.name);"function"==typeof n&&n()}},e.fn.popmake=function(o){return e.fn.popmake.methods[o]?(e(t).trigger("pumMethodCall",arguments),e.fn.popmake.methods[o].apply(this,Array.prototype.slice.call(arguments,1))):"object"!=typeof o&&o?void(window.console&&console.warn("Method "+o+" does not exist on $.fn.popmake")):e.fn.popmake.methods.init.apply(this,arguments)},e.fn.popmake.methods={init:function(t){return this.each(function(){var n=PUM.getPopup(this),i=e.extend(!0,{},e.fn.popmake.defaults,n.data("popmake"),t);return i.theme_id<=0&&(i.theme_id=popmake_default_theme),i.meta.display.disable_reposition===o&&e(window).on("resize",function(){(n.hasClass("pum-active")||n.find(".popmake.active").length)&&e.fn.popmake.utilities.throttle(setTimeout(function(){n.popmake("reposition")},25),500,!1)}),n.find(".pum-container").data("popmake",i),n.data("popmake",i).trigger("pumInit"),this})},getOverlay:function(){return e(this)},getContainer:function(){return e(this).find(".pum-container")},getTitle:function(){return e(this).find(".pum-title")||null},getContent:function(){return e(this).find(".pum-content")||null},getClose:function(){return e(this).find(".pum-content + .pum-close")||null},getSettings:function(){return e(this).data("popmake")},state:function(e){var t=PUM.getPopup(this);if(o!==e)switch(e){case"isOpen":return t.hasClass("pum-open")||t.popmake("getContainer").hasClass("active");case"isClosed":return!t.hasClass("pum-open")&&!t.popmake("getContainer").hasClass("active")}},open:function(t){var n=PUM.getPopup(this),i=n.popmake("getContainer"),p=n.popmake("getClose"),a=n.popmake("getSettings"),s=e("html");return n.trigger("pumBeforeOpen"),n.hasClass("preventOpen")||i.hasClass("preventOpen")?(console.log("prevented"),n.removeClass("preventOpen").removeClass("pum-active").trigger("pumOpenPrevented"),this):(a.meta.display.stackable||n.popmake("close_all"),n.addClass("pum-active"),a.meta.close.button_delay>0&&p.fadeOut(0),s.addClass("pum-open"),a.meta.display.overlay_disabled?s.addClass("pum-open-overlay-disabled"):s.addClass("pum-open-overlay"),a.meta.display.position_fixed!==o&&a.meta.display.position_fixed?s.addClass("pum-open-fixed"):s.addClass("pum-open-scrollable"),n.popmake("setup_close").popmake("reposition").css({"z-index":a.meta.display.overlay_zindex||1999999998}).popmake("animate",a.meta.display.animation_type,function(){a.meta.close.button_delay>0&&setTimeout(function(){p.fadeIn()},a.meta.close.button_delay),n.trigger("pumAfterOpen"),e.fn.popmake.last_open_popup=n,t!==o&&t()}),this)},setup_close:function(){var t=PUM.getPopup(this),n=t.popmake("getClose").add(e(".popmake-close",t).not(t.popmake("getClose"))),i=t.popmake("getSettings");return n.off("click.pum").on("click.pum",function(n){var i=e(this),p=i.hasClass("pum-do-default")||i.data("do-default")!==o&&i.data("do-default");p||n.preventDefault(),e.fn.popmake.last_close_trigger="Close Button",t.popmake("close")}),(i.meta.close.esc_press||i.meta.close.f4_press)&&e(window).off("keyup.popmake").on("keyup.popmake",function(o){27===o.keyCode&&i.meta.close.esc_press&&(e.fn.popmake.last_close_trigger="ESC Key",t.popmake("close")),115===o.keyCode&&i.meta.close.f4_press&&(e.fn.popmake.last_close_trigger="F4 Key",t.popmake("close"))}),i.meta.close.overlay_click&&t.off("click.popmake").on("click.popmake",function(o){o.target===t[0]&&(e.fn.popmake.last_close_trigger="Overlay Click",t.popmake("close"))}),t.trigger("pumSetupClose"),this},close:function(t){return this.each(function(){var n=PUM.getPopup(this),i=n.popmake("getContainer"),p=n.popmake("getClose").add(e(".popmake-close",n).not(n.popmake("getClose")));return n.trigger("pumBeforeClose"),n.hasClass("preventClose")||i.hasClass("preventClose")?(n.removeClass("preventClose").trigger("pumClosePrevented"),this):(i.fadeOut("fast",function(){n.is(":visible")&&n.fadeOut("fast"),e(window).off("keyup.popmake"),n.off("click.popmake"),p.off("click.popmake"),1===e(".pum-active").length&&e("html").removeClass("pum-open").removeClass("pum-open-scrollable").removeClass("pum-open-overlay").removeClass("pum-open-overlay-disabled").removeClass("pum-open-fixed"),n.removeClass("pum-active").trigger("pumAfterClose"),i.find("iframe").filter('[src*="youtube"],[src*="vimeo"]').each(function(){var t=e(this),o=t.attr("src"),n=o.replace("autoplay=1","1=1");n!==o&&(o=n),t.prop("src",o)}),i.find("video").each(function(){this.pause()}),t!==o&&t()}),this)})},close_all:function(){return e(".pum-active").popmake("close"),this},reposition:function(t){var o=PUM.getPopup(this).trigger("pumBeforeReposition"),n=o.popmake("getContainer"),i=o.popmake("getSettings"),p=i.meta.display,a=p.location,s={my:"",at:"",of:window,collision:"none",using:"function"==typeof t?t:e.fn.popmake.callbacks.reposition_using},r={overlay:null,container:null},l=null;try{l=e(e.fn.popmake.last_open_trigger)}catch(c){l=e()}return p.position_from_trigger&&l.length?(s.of=l,a.indexOf("left")>=0&&(s.my+=" right",s.at+=" left"+(0!==p.position_left?"-"+p.position_left:"")),a.indexOf("right")>=0&&(s.my+=" left",s.at+=" right"+(0!==p.position_right?"+"+p.position_right:"")),a.indexOf("center")>=0&&(s.my="center"===a?"center":s.my+" center",s.at="center"===a?"center":s.at+" center"),a.indexOf("top")>=0&&(s.my+=" bottom",s.at+=" top"+(0!==p.position_top?"-"+p.position_top:"")),a.indexOf("bottom")>=0&&(s.my+=" top",s.at+=" bottom"+(0!==p.position_bottom?"+"+p.position_bottom:""))):(a.indexOf("left")>=0&&(s.my+=" left"+(0!==p.position_left?"+"+p.position_left:""),s.at+=" left"),a.indexOf("right")>=0&&(s.my+=" right"+(0!==p.position_right?"-"+p.position_right:""),s.at+=" right"),a.indexOf("center")>=0&&(s.my="center"===a?"center":s.my+" center",s.at="center"===a?"center":s.at+" center"),a.indexOf("top")>=0&&(s.my+=" top"+(0!==p.position_top?"+"+(e("body").hasClass("admin-bar")?parseInt(p.position_top,10)+32:p.position_top):""),s.at+=" top"),a.indexOf("bottom")>=0&&(s.my+=" bottom"+(0!==p.position_bottom?"-"+p.position_bottom:""),s.at+=" bottom")),s.my=e.trim(s.my),s.at=e.trim(s.at),o.is(":hidden")&&(r.overlay=o.css("opacity"),o.css({opacity:0}).show()),n.is(":hidden")&&(r.container=n.css("opacity"),n.css({opacity:0}).show()),p.position_fixed&&n.addClass("fixed"),"custom"===i.meta.display.size?n.css({width:i.meta.display.custom_width+i.meta.display.custom_width_unit,height:i.meta.display.custom_height_auto?"auto":i.meta.display.custom_height+i.meta.display.custom_height_unit}):"auto"!==i.meta.display.size&&n.addClass("responsive").css({minWidth:""!==i.meta.display.responsive_min_width?i.meta.display.responsive_min_width+i.meta.display.responsive_min_width_unit:"auto",maxWidth:""!==i.meta.display.responsive_max_width?i.meta.display.responsive_max_width+i.meta.display.responsive_max_width_unit:"auto"}),o.trigger("pumAfterReposition"),n.addClass("custom-position").position(s).trigger("popmakeAfterReposition"),r.overlay&&o.css({opacity:r.overlay}).hide(),r.container&&n.css({opacity:r.container}).hide(),this},retheme:function(t){e(this).trigger("popmakeBeforeRetheme");var n,i,p=PUM.getPopup(this),a=p.popmake("getContainer"),s=p.popmake("getTitle"),r=p.popmake("getContent"),l=p.popmake("getClose"),c=p.popmake("getSettings");switch(t===o&&(t=e.fn.popmake.themes[c.theme_id],t===o&&(t=e.fn.popmake.themes[1])),n="yes"===t.container.boxshadow_inset?"inset ":"",i="yes"===t.close.boxshadow_inset?"inset ":"",p.removeAttr("style").css({backgroundColor:e.fn.popmake.utilities.convert_hex(t.overlay.background_color,t.overlay.background_opacity),zIndex:c.meta.display.overlay_zindex||998}),a.css({padding:t.container.padding+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.container.background_color,t.container.background_opacity),borderStyle:t.container.border_style,borderColor:t.container.border_color,borderWidth:t.container.border_width+"px",borderRadius:t.container.border_radius+"px",boxShadow:n+t.container.boxshadow_horizontal+"px "+t.container.boxshadow_vertical+"px "+t.container.boxshadow_blur+"px "+t.container.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.container.boxshadow_color,t.container.boxshadow_opacity),zIndex:c.meta.display.zindex||999}),s.css({color:t.title.font_color,lineHeight:t.title.line_height+"px",fontSize:t.title.font_size+"px",fontFamily:t.title.font_family,fontWeight:t.title.font_weight,fontStyle:t.title.font_style,textAlign:t.title.text_align,textShadow:t.title.textshadow_horizontal+"px "+t.title.textshadow_vertical+"px "+t.title.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.title.textshadow_color,t.title.textshadow_opacity)}),r.css({color:t.content.font_color,fontFamily:t.content.font_family,fontWeight:t.content.font_weight,fontStyle:t.content.font_style}),e("p, label",r).css({color:t.content.font_color,fontFamily:t.content.font_family}),l.html(t.close.text).css({padding:t.close.padding+"px",height:t.close.height+"px",width:t.close.width+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.close.background_color,t.close.background_opacity),color:t.close.font_color,lineHeight:t.close.line_height+"px",fontSize:t.close.font_size+"px",fontWeight:t.close.font_weight,fontStyle:t.close.font_style,fontFamily:t.close.font_family,borderStyle:t.close.border_style,borderColor:t.close.border_color,borderWidth:t.close.border_width+"px",borderRadius:t.close.border_radius+"px",boxShadow:i+t.close.boxshadow_horizontal+"px "+t.close.boxshadow_vertical+"px "+t.close.boxshadow_blur+"px "+t.close.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.close.boxshadow_color,t.close.boxshadow_opacity),textShadow:t.close.textshadow_horizontal+"px "+t.close.textshadow_vertical+"px "+t.close.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.close.textshadow_color,t.close.textshadow_opacity),left:"auto",right:"auto",bottom:"auto",top:"auto"}),t.close.location){case"topleft":l.css({top:t.close.position_top+"px",left:t.close.position_left+"px"});break;case"topright":l.css({top:t.close.position_top+"px",right:t.close.position_right+"px"});break;case"bottomleft":l.css({bottom:t.close.position_bottom+"px",left:t.close.position_left+"px"});break;case"bottomright":l.css({bottom:t.close.position_bottom+"px",right:t.close.position_right+"px"})}return p.trigger("popmakeAfterRetheme",[t]),this},animation_origin:function(t){var o=PUM.getPopup(this),n=o.popmake("getContainer"),i={my:"",at:""};switch(t){case"top":i={my:"left+"+n.offset().left+" bottom-100",at:"left top"};break;case"bottom":i={my:"left+"+n.offset().left+" top+100",at:"left bottom"};break;case"left":i={my:"right top+"+n.offset().top,at:"left top"};break;case"right":i={my:"left top+"+n.offset().top,at:"right top"};break;default:t.indexOf("left")>=0&&(i={my:i.my+" right",at:i.at+" left"}),t.indexOf("right")>=0&&(i={my:i.my+" left",at:i.at+" right"}),t.indexOf("center")>=0&&(i={my:i.my+" center",at:i.at+" center"}),t.indexOf("top")>=0&&(i={my:i.my+" bottom-100",at:i.at+" top"}),t.indexOf("bottom")>=0&&(i={my:i.my+" top+100",at:i.at+" bottom"}),i.my=e.trim(i.my),i.at=e.trim(i.at)}return i.of=window,i.collision="none",i}}}(jQuery,document);var PUM_Accessibility;!function(e,t,o){"use strict";var n,i,p,a="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";PUM_Accessibility={forceFocus:function(t){p&&!e.contains(p,t.target)&&(t.stopPropagation(),PUM_Accessibility.setFocusToFirstItem())},trapTabKey:function(t){if(9===t.keyCode){var o=p.find(".pum-container *").filter(a).filter(":visible"),n=e(":focus"),i=o.length,s=o.index(n);t.shiftKey?0===s&&(o.get(i-1).focus(),t.preventDefault()):s===i-1&&(o.get(0).focus(),t.preventDefault())}},setFocusToFirstItem:function(){p.find(".pum-container *").filter(a).filter(":visible").filter(":not(.pum-close)").first().focus()}},e(t).on("pumInit",".pum",function(){PUM.getPopup(this).find("[tabindex]").each(function(){var t=e(this);t.data("tabindex",t.attr("tabindex")).prop("tabindex","0")})}).on("pumBeforeOpen",".pum",function(){var o=PUM.getPopup(this),a=e(":focus");o.has(a).length||(i=a),p=o.on("keydown.pum_accessibility",PUM_Accessibility.trapTabKey).attr("aria-hidden","false"),n=e("body > *").filter(":visible").not(p),n.attr("aria-hidden","true"),e(t).on("focus.pum_accessibility",PUM_Accessibility.forceFocus),PUM_Accessibility.setFocusToFirstItem()}).on("pumAfterOpen",".pum",function(){}).on("pumBeforeClose",".pum",function(){}).on("pumAfterClose",".pum",function(){var a=PUM.getPopup(this);a.off("keydown.pum_accessibility").attr("aria-hidden","true"),n&&(n.attr("aria-hidden","false"),n=null),i!==o&&i.length&&i.focus(),p=null,e(t).off("focus.pum_accessibility")}).on("pumSetupClose",".pum",function(){}).on("pumOpenPrevented",".pum",function(){}).on("pumClosePrevented",".pum",function(){}).on("pumBeforeReposition",".pum",function(){})}(jQuery,document);var PUM_Analytics;!function(e,t,o){"use strict";e.fn.popmake.last_open_trigger=null,e.fn.popmake.last_close_trigger=null,e.fn.popmake.conversion_trigger=null;var n=!("undefined"==typeof pum_vars.restapi||!pum_vars.restapi);PUM_Analytics={beacon:function(t){var o=new Image,i=n?pum_vars.restapi:pum_vars.ajaxurl;t=e.extend(!0,{route:"/analytics/open",type:"open",data:{pid:null,_cache:+new Date},callback:function(){}},t),n?i+=t.route:(t.data.action="pum_analytics",t.data.type=t.type),i&&(e(o).on("error success load done",t.callback),o.src=i+"?"+e.param(t.data))}},pum_vars.disable_open_tracking!==o&&pum_vars.disable_open_tracking||e(t).on("pumAfterOpen.core_analytics","body > .pum",function(){var t=PUM.getPopup(this),o={pid:parseInt(t.popmake("getSettings").id,10)||null};o.pid>0&&!e("body").hasClass("single-popup")&&PUM_Analytics.beacon({data:o})})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.methods.animate_overlay=function(t,o,n){var i=PUM.getPopup(this).popmake("getSettings");return i.meta.display.overlay_disabled?e.fn.popmake.overlay_animations.none.apply(this,[o,n]):e.fn.popmake.overlay_animations[t]?e.fn.popmake.overlay_animations[t].apply(this,[o,n]):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.methods.animate=function(t){return e.fn.popmake.animations[t]?e.fn.popmake.animations[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.animations={none:function(e){var t=PUM.getPopup(this);return t.popmake("getContainer").show(0),t.popmake("animate_overlay","none",0,function(){e!==o&&e()}),this},slide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2,a=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(a).css({opacity:1}),t.css({opacity:1}).popmake("animate_overlay","fade",p,function(){n.popmake("reposition",function(t){n.animate(t,p,"swing",function(){e!==o&&e()})})}),this},fade:function(e){var t=PUM.getPopup(this),n=t.popmake("getContainer"),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2;return n.show(0).css({opacity:0}),t.popmake("animate_overlay","fade",p,function(){n.animate({opacity:1},p,"swing",function(){e!==o&&e()})}),this},fadeAndSlide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),p=i.meta.display.animation_speed/2,a=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(a),t.hide().css({opacity:1}).popmake("animate_overlay","fade",p,function(){n.popmake("reposition",function(t){t.opacity=1,n.animate(t,p,"swing",function(){e!==o&&e()})})}),this},grow:function(t){return e.fn.popmake.animations.fade.apply(this,arguments)},growAndSlide:function(t){return e.fn.popmake.animations.fadeAndSlide.apply(this,arguments)}},e.fn.popmake.overlay_animations={none:function(e,t){PUM.getPopup(this).show(e,t)},fade:function(e,t){PUM.getPopup(this).fadeIn(e,t)},slide:function(e,t){PUM.getPopup(this).slideDown(e,t)}}}(jQuery,document),function(e,t,o){"use strict";e(t).on("pumInit",".pum",function(){e(this).popmake("getContainer").trigger("popmakeInit")}).on("pumBeforeOpen",".pum",function(){e(this).popmake("getContainer").addClass("active").trigger("popmakeBeforeOpen")}).on("pumAfterOpen",".pum",function(){e(this).popmake("getContainer").trigger("popmakeAfterOpen")}).on("pumBeforeClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeClose")}).on("pumAfterClose",".pum",function(){e(this).popmake("getContainer").removeClass("active").trigger("popmakeAfterClose")}).on("pumSetupClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeSetupClose")}).on("pumOpenPrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventOpen").removeClass("active")}).on("pumClosePrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventClose")}).on("pumBeforeReposition",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeReposition")})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.callbacks={reposition_using:function(t){e(this).css(t)}}}(jQuery,document),function(e,t,o){"use strict";var n;e.extend(e.fn.popmake.methods,{checkConditions:function(){var t,i,p,a,s,r=PUM.getPopup(this),l=r.popmake("getSettings"),c=!0;if(l.mobile_disabled!==o&&l.mobile_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.phone()))return!1;if(l.tablet_disabled!==o&&l.tablet_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.tablet()))return!1;if(l.conditions!==o&&l.conditions.length)for(i=0;l.conditions.length>i;i++){for(a=l.conditions[i],t=!1,p=0;a.length>p&&(s=e.extend({},{not_operand:!1},a[p]),!s.not_operand&&r.popmake("checkCondition",s)?t=!0:s.not_operand&&!r.popmake("checkCondition",s)&&(t=!0),e(this).trigger("pumCheckingCondition",[t,s]),!t);p++);t||(c=!1)}return c},checkCondition:function(t){var o=t.target||null;return o?e.fn.popmake.conditions[o]?e.fn.popmake.conditions[o].apply(this,[t]):window.console?(console.warn("Condition "+o+" does not exist."),!0):void 0:(console.warn("Condition type not set."),!1)}}),e.fn.popmake.conditions={device_is_mobile:function(e){return n.mobile()}}}(jQuery,document);var pm_cookie,pm_cookie_json,pm_remove_cookie;!function(e){"use strict";function t(t){function o(n,i,p){var a,s=new Date;if("undefined"!=typeof document){if(arguments.length>1){switch(p=e.extend({path:"/"},o.defaults,p),typeof p.expires){case"number":s.setMilliseconds(s.getMilliseconds()+864e5*p.expires),p.expires=s;break;case"string":s.setTime(1e3*e.fn.popmake.utilities.strtotime("+"+p.expires)),p.expires=s}try{a=JSON.stringify(i),/^[\{\[]/.test(a)&&(i=a)}catch(r){}return i=t.write?t.write(i,n):encodeURIComponent(String(i)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",i,p.expires?"; expires="+p.expires.toUTCString():"",p.path?"; path="+p.path:"",p.domain?"; domain="+p.domain:"",p.secure?"; secure":""].join("")}n||(a={});for(var l=document.cookie?document.cookie.split("; "):[],c=/(%[0-9A-Z]{2})+/g,u=0;u<l.length;u++){var m=l[u].split("="),d=m.slice(1).join("=");'"'===d.charAt(0)&&(d=d.slice(1,-1));try{var f=m[0].replace(c,decodeURIComponent);if(d=t.read?t.read(d,f):t(d,f)||d.replace(c,decodeURIComponent),this.json)try{d=JSON.parse(d)}catch(r){}if(n===f){a=d;break}n||(a[f]=d)}catch(r){}}return a}}return void 0===t&&(t=function(){}),o.set=o,o.get=function(e){return o.call(o,e)},o.getJSON=function(){return o.apply({json:!0},[].slice.call(arguments))},o.defaults={},o.remove=function(t,n){o(t,"",e.extend({},n,{expires:-1,path:""})),o(t,"",e.extend({},n,{expires:-1}))},o.process=function(e,t,n,i){return arguments.length>3&&"object"!=typeof arguments[2]&&void 0!==t?o.apply(o,[e,t,{expires:n,path:i}]):o.apply(o,[].slice.call(arguments,[0,2]))},o.withConverter=e.fn.popmake.cookie,o}e.extend(e.fn.popmake,{cookie:t()}),pm_cookie=e.pm_cookie=e.fn.popmake.cookie.process,pm_cookie_json=e.pm_cookie_json=e.fn.popmake.cookie.getJSON,pm_remove_cookie=e.pm_remove_cookie=e.fn.popmake.cookie.remove}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addCookie:function(t){return pum.hooks.doAction("popmake.addCookie",arguments),e.fn.popmake.cookies[t]?e.fn.popmake.cookies[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Cookie type "+t+" does not exist."),this)},setCookie:function(t){e.pm_cookie(t.name,!0,t.session?null:t.time,t.path?"/":null),pum.hooks.doAction("popmake.setCookie",t)},checkCookies:function(t){var n,i=!1;if(t.cookie===o||t.cookie.name===o||null===t.cookie.name)return!1;switch(typeof t.cookie.name){case"object":case"array":for(n=0;t.cookie.name.length>n;n+=1)e.pm_cookie(t.cookie.name[n])!==o&&(i=!0);break;case"string":e.pm_cookie(t.cookie.name)!==o&&(i=!0)}return pum.hooks.doAction("popmake.checkCookies",t,i),i}}),e.fn.popmake.cookies={on_popup_open:function(e){var t=PUM.getPopup(this);t.on("pumAfterOpen",function(){t.popmake("setCookie",e)})},on_popup_close:function(e){var t=PUM.getPopup(this);t.on("pumBeforeClose",function(){t.popmake("setCookie",e)})},manual:function(e){var t=PUM.getPopup(this);t.on("pumSetCookie",function(){t.popmake("setCookie",e)})},ninja_form_success:function(e){var t=PUM.getPopup(this);t.on("pum_nf.success",function(){t.popmake("setCookie",e)})}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.cookies,p=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)p=i[e],t.popmake("addCookie",p.event,p.settings)})}(jQuery,document);var pum_debug_mode=!1,pum_debug;!function(e,t){if(t=window.pum_vars||{debug_mode:!1},pum_debug_mode=void 0!==t.debug_mode&&t.debug_mode,pum_debug_mode||window.location.href.indexOf("pum_debug")===-1||(pum_debug_mode=!0),pum_debug_mode){var o=!1,n=!1,i=window.pum_debug_vars||{};pum_debug={odump:function(t){return e.extend({},t)},logo:function(){console.log(" -------------------------------------------------------------\n| ____ __ __ _ |\n| | _ \\ ___ _ __ _ _ _ __ | \\/ | __ _| | _____ _ __ |\n| | |_) / _ \\| '_ \\| | | | '_ \\ | |\\/| |/ _` | |/ / _ \\ '__| |\n| | __/ (_) | |_) | |_| | |_) | | | | | (_| | < __/ | |\n| |_| \\___/| .__/ \\__,_| .__/ |_| |_|\\__,_|_|\\_\\___|_| |\n| |_| |_| |\n -------------------------------------------------------------")},initialize:function(){o=!0,pum_debug.logo(),console.debug(i.debug_mode_enabled),console.log(i.debug_started_at,new Date),console.info(i.debug_more_info),pum_debug.divider(i.global_info),console.groupCollapsed(i.localized_vars),console.log("pum_vars:",pum_debug.odump(t)),e(document).trigger("pum_debug_initialize_localized_vars"),console.groupEnd(),e(document).trigger("pum_debug_initialize")},popup_event_header:function(e){var t=e.popmake("getSettings");n!==t.id&&(n=t.id,pum_debug.divider(i.single_popup_label+t.id+" - "+t.slug))},divider:function(e){var t=62,o=62,n=0,i=" "+new Array(t+1).join("-")+" ";"string"==typeof e?(o=t-e.length,n={left:Math.floor(o/2),right:Math.floor(o/2)},n.left+n.right===o-1&&n.right++,n.left=new Array(n.left+1).join(" "),n.right=new Array(n.right+1).join(" "),console.log(""+i+"\n|"+n.left+e+n.right+"|\n"+i)):console.log(i)},click_trigger:function(e,t){var o,n=e.popmake("getSettings"),p=[".popmake-"+n.id,".popmake-"+decodeURIComponent(n.slug),'a[href$="#popmake-'+n.id+'"]'];t.extra_selectors&&""!==t.extra_selectors&&p.push(t.extra_selectors),p=pum.hooks.applyFilters("pum.trigger.click_open.selectors",p,t,e),o=p.join(", "),console.log(i.label_selector,o)},trigger:function(t,o){switch(console.groupCollapsed(i.triggers[o.type].name),o.type){case"auto_open":console.log(i.label_delay,o.settings.delay),console.log(i.label_cookie,o.settings.cookie.name);break;case"click_open":pum_debug.click_trigger(t,o.settings),console.log(i.label_cookie,o.settings.cookie.name)}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()},cookie:function(t,o){switch(console.groupCollapsed(i.cookies[o.event].name),o.event){case"on_popup_open":case"on_popup_close":case"manual":case"ninja_form_success":console.log(i.label_settings,pum_debug.odump(o.settings))}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()}},e(document).on("pumInit",".pum",function(){var t=PUM.getPopup(e(this)),n=t.popmake("getSettings"),p=0;if(o||(pum_debug.initialize(),pum_debug.divider(i.popups_initializing)),console.groupCollapsed(i.single_popup_label+n.id+" - "+n.slug),console.log(i.theme_id,n.theme_id),void 0!==n.triggers&&n.triggers.length){for(console.groupCollapsed(i.label_triggers),p=0;n.triggers.length>p;p++)pum_debug.trigger(t,n.triggers[p]);console.groupEnd()}if(void 0!==n.cookies&&n.cookies.length){for(console.groupCollapsed(i.label_cookies),p=0;n.cookies.length>p;p+=1)pum_debug.cookie(t,n.cookies[p]);console.groupEnd()}void 0!==n.conditions&&n.conditions.length&&(console.groupCollapsed(i.label_conditions),console.log(n.conditions),console.groupEnd()),console.groupCollapsed(i.label_popup_settings),console.log(i.label_mobile_disabled,null!==n.mobile_disabled),console.log(i.label_tablet_disabled,null!==n.tablet_disabled),console.log(i.label_display_settings,pum_debug.odump(n.meta.display)),console.log(i.label_close_settings,pum_debug.odump(n.meta.close)),t.trigger("pum_debug_popup_settings");var a=pum.hooks.applyFilters("pum_debug.popup_settings.cleaned_meta",pum_debug.odump(n.meta),t);delete a.display,delete a.close,delete a.click_open,a.length&&console.log("Meta: ",a),console.groupEnd(),console.groupEnd()}).on("pumBeforeOpen",".pum",function(){var t=PUM.getPopup(e(this)),o=(t.popmake("getSettings"),e.fn.popmake.last_open_trigger);pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_open);try{o=e(e.fn.popmake.last_open_trigger)}catch(n){o=e()}finally{o=o.length?o:e.fn.popmake.last_open_trigger.toString(),console.log(i.label_triggers,[o])}console.groupEnd()}).on("pumOpenPrevented",".pum",function(){var t=PUM.getPopup(e(this));pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_open_prevented),console.groupEnd()}).on("pumAfterOpen",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_open),console.groupEnd()}).on("pumSetupClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_setup_close),console.groupEnd()}).on("pumClosePrevented",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_close_prevented),console.groupEnd()}).on("pumBeforeClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_close),console.groupEnd()}).on("pumAfterClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_close),console.groupEnd()}).on("pumBeforeReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_reposition),console.groupEnd()}).on("pumAfterReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_reposition),console.groupEnd()}).on("pumCheckingCondition",".pum",function(t,o,n){var p=PUM.getPopup(e(this));p.popmake("getSettings");pum_debug.popup_event_header(p),console.groupCollapsed(i.label_event_checking_condition),console.log((n.not_operand?"(!) ":"")+n.target+": "+o,n),console.groupEnd()})}}(jQuery),function(e,t,o){"use strict";e.fn.popmake.defaults={meta:{display:{stackable:0,overlay_disabled:0,size:"medium",responsive_max_width:"",responsive_max_width_unit:"%",responsive_min_width:"",responsive_min_width_unit:"%",custom_width:"",custom_width_unit:"%",custom_height:"",custom_height_unit:"em",custom_height_auto:0,location:"center top",position_top:100,position_left:0,position_bottom:0,position_right:0,position_fixed:0,animation_type:"fade",animation_speed:350,animation_origin:"center top"},close:{overlay_click:0,esc_press:0,f4_press:0}},container:{active_class:"active",attr:{"class":"popmake"}},title:{attr:{"class":"popmake-title"}},content:{attr:{"class":"popmake-content"}},close:{close_speed:0,attr:{"class":"popmake-close"}},overlay:{attr:{id:"popmake-overlay","class":"popmake-overlay"}}}}(jQuery,document),function(e,t){"use strict";var o=function(){function e(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("actions",e,t,o,n)),u}function t(){var e=c.call(arguments),t=e.shift();return"string"==typeof t&&l("actions",t,e),u}function o(e,t){return"string"==typeof e&&a("actions",e,t),u}function n(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("filters",e,t,o,n)),u}function i(){var e=c.call(arguments),t=e.shift();return"string"==typeof t?l("filters",t,e):u}function p(e,t){return"string"==typeof e&&a("filters",e,t),u}function a(e,t,o,n){var i,p,a;if(m[e][t])if(o)if(i=m[e][t],n)for(a=i.length;a--;)p=i[a],p.callback===o&&p.context===n&&i.splice(a,1);else for(a=i.length;a--;)i[a].callback===o&&i.splice(a,1);else m[e][t]=[]}function s(e,t,o,n,i){var p={callback:o,priority:n,context:i},a=m[e][t];a?(a.push(p),a=r(a)):a=[p],m[e][t]=a}function r(e){for(var t,o,n,i=1,p=e.length;i<p;i++){for(t=e[i],o=i;(n=e[o-1])&&n.priority>t.priority;)e[o]=e[o-1],
|
2 |
-
--o;e[o]=t}return e}function l(e,t,o){var n,i,
|
1 |
+
!function(e){"use strict";void 0===e.fn.on&&(e.fn.on=function(e,t,o){return this.delegate(t,e,o)}),void 0===e.fn.off&&(e.fn.off=function(e,t,o){return this.undelegate(t,e,o)}),void 0===e.fn.bindFirst&&(e.fn.bindFirst=function(t,o){var n,i,a=e(this);a.unbind(t,o),a.bind(t,o),n=e._data(a[0]).events,i=n[t],i.unshift(i.pop()),n[t]=i}),void 0===e.fn.outerHtml&&(e.fn.outerHtml=function(){var t=e(this).clone(),o=e("<div/>").append(t);return o.html()}),void 0===Date.now&&(Date.now=function(){return(new Date).getTime()})}(jQuery);var PUM;!function(e,t,o){"use strict";function n(e){return!isNaN(e)&&parseInt(Number(e))==e&&!isNaN(parseInt(e,10))}function i(){var e={},t=function(t,n,i){"boolean"==typeof n&&(i=n,n=!1);var a=n?n.selector+" "+t:t;return(o===e[a]||i)&&(e[a]=n?n.find(t):jQuery(t)),e[a]};return t.elementCache=e,t}function a(e,t){function o(e,t,o){return t?e[t.slice(0,o?-1:t.length)]:e}function n(e,t){return t?t.split("[").reduce(o,e):e}return t.split(".").reduce(n,e)}PUM={get:new i,getPopup:function(t){var o;return o=n(t)?PUM.get("#pum-"+t):"current"===t?PUM.get(".pum-overlay.pum-active:eq(0)",!0):"open"===t?PUM.get(".pum-overlay.pum-active",!0):"closed"===t?PUM.get(".pum-overlay:not(.pum-active)",!0):t instanceof jQuery?t:e(t),o.hasClass("pum-overlay")?o:o.hasClass("popmake")?o.parents(".pum-overlay"):o.parents(".pum-overlay").length?o.parents(".pum-overlay"):e()},open:function(e,t){PUM.getPopup(e).popmake("open",t)},close:function(e,t){PUM.getPopup(e).popmake("close",t)},preventOpen:function(e){PUM.getPopup(e).addClass("preventOpen")},getSettings:function(e){var t=PUM.getPopup(e);return t.popmake("getSettings")},getSetting:function(e,t,n){var i=PUM.getSettings(e),p=a(i,t);return"undefined"!=typeof p?p:n!==o?n:null},checkConditions:function(e){return PUM.getPopup(e).popmake("checkConditions")},getCookie:function(t){return e.pm_cookie(t)},clearCookie:function(t,o){e.pm_remove_cookie(t),"function"==typeof o&&o()},clearCookies:function(t,n){var i,a=PUM.getPopup(t),p=a.popmake("getSettings"),s=p.cookies;if(s!==o&&s.length)for(i=0;s.length>i;i+=1)e.pm_remove_cookie(s[i].settings.name);"function"==typeof n&&n()}},e.fn.popmake=function(o){return e.fn.popmake.methods[o]?(e(t).trigger("pumMethodCall",arguments),e.fn.popmake.methods[o].apply(this,Array.prototype.slice.call(arguments,1))):"object"!=typeof o&&o?void(window.console&&console.warn("Method "+o+" does not exist on $.fn.popmake")):e.fn.popmake.methods.init.apply(this,arguments)},e.fn.popmake.methods={init:function(t){return this.each(function(){var n=PUM.getPopup(this),i=e.extend(!0,{},e.fn.popmake.defaults,n.data("popmake"),t);return i.theme_id<=0&&(i.theme_id=popmake_default_theme),i.meta.display.disable_reposition===o&&e(window).on("resize",function(){(n.hasClass("pum-active")||n.find(".popmake.active").length)&&e.fn.popmake.utilities.throttle(setTimeout(function(){n.popmake("reposition")},25),500,!1)}),n.find(".pum-container").data("popmake",i),n.data("popmake",i).trigger("pumInit"),this})},getOverlay:function(){return e(this)},getContainer:function(){return e(this).find(".pum-container")},getTitle:function(){return e(this).find(".pum-title")||null},getContent:function(){return e(this).find(".pum-content")||null},getClose:function(){return e(this).find(".pum-content + .pum-close")||null},getSettings:function(){return e(this).data("popmake")},state:function(e){var t=PUM.getPopup(this);if(o!==e)switch(e){case"isOpen":return t.hasClass("pum-open")||t.popmake("getContainer").hasClass("active");case"isClosed":return!t.hasClass("pum-open")&&!t.popmake("getContainer").hasClass("active")}},open:function(t){var n=PUM.getPopup(this),i=n.popmake("getContainer"),a=n.popmake("getClose"),p=n.popmake("getSettings"),s=e("html");return n.trigger("pumBeforeOpen"),n.hasClass("preventOpen")||i.hasClass("preventOpen")?(console.log("prevented"),n.removeClass("preventOpen").removeClass("pum-active").trigger("pumOpenPrevented"),this):(p.meta.display.stackable||n.popmake("close_all"),n.addClass("pum-active"),p.meta.close.button_delay>0&&a.fadeOut(0),s.addClass("pum-open"),p.meta.display.overlay_disabled?s.addClass("pum-open-overlay-disabled"):s.addClass("pum-open-overlay"),p.meta.display.position_fixed!==o&&p.meta.display.position_fixed?s.addClass("pum-open-fixed"):s.addClass("pum-open-scrollable"),n.popmake("setup_close").popmake("reposition").css({"z-index":p.meta.display.overlay_zindex||1999999998}).popmake("animate",p.meta.display.animation_type,function(){p.meta.close.button_delay>0&&setTimeout(function(){a.fadeIn()},p.meta.close.button_delay),n.trigger("pumAfterOpen"),e.fn.popmake.last_open_popup=n,t!==o&&t()}),this)},setup_close:function(){var t=PUM.getPopup(this),n=t.popmake("getClose").add(e(".popmake-close",t).not(t.popmake("getClose"))),i=t.popmake("getSettings");return n.off("click.pum").on("click.pum",function(n){var i=e(this),a=i.hasClass("pum-do-default")||i.data("do-default")!==o&&i.data("do-default");a||n.preventDefault(),e.fn.popmake.last_close_trigger="Close Button",t.popmake("close")}),(i.meta.close.esc_press||i.meta.close.f4_press)&&e(window).off("keyup.popmake").on("keyup.popmake",function(o){27===o.keyCode&&i.meta.close.esc_press&&(e.fn.popmake.last_close_trigger="ESC Key",t.popmake("close")),115===o.keyCode&&i.meta.close.f4_press&&(e.fn.popmake.last_close_trigger="F4 Key",t.popmake("close"))}),i.meta.close.overlay_click&&t.off("click.popmake").on("click.popmake",function(o){o.target===t[0]&&(e.fn.popmake.last_close_trigger="Overlay Click",t.popmake("close"))}),t.trigger("pumSetupClose"),this},close:function(t){return this.each(function(){var n=PUM.getPopup(this),i=n.popmake("getContainer"),a=n.popmake("getClose").add(e(".popmake-close",n).not(n.popmake("getClose")));return n.trigger("pumBeforeClose"),n.hasClass("preventClose")||i.hasClass("preventClose")?(n.removeClass("preventClose").trigger("pumClosePrevented"),this):(i.fadeOut("fast",function(){n.is(":visible")&&n.fadeOut("fast"),e(window).off("keyup.popmake"),n.off("click.popmake"),a.off("click.popmake"),1===e(".pum-active").length&&e("html").removeClass("pum-open").removeClass("pum-open-scrollable").removeClass("pum-open-overlay").removeClass("pum-open-overlay-disabled").removeClass("pum-open-fixed"),n.removeClass("pum-active").trigger("pumAfterClose"),i.find("iframe").filter('[src*="youtube"],[src*="vimeo"]').each(function(){var t=e(this),o=t.attr("src"),n=o.replace("autoplay=1","1=1");n!==o&&(o=n),t.prop("src",o)}),i.find("video").each(function(){this.pause()}),t!==o&&t()}),this)})},close_all:function(){return e(".pum-active").popmake("close"),this},reposition:function(t){var o=PUM.getPopup(this).trigger("pumBeforeReposition"),n=o.popmake("getContainer"),i=o.popmake("getSettings"),a=i.meta.display,p=a.location,s={my:"",at:"",of:window,collision:"none",using:"function"==typeof t?t:e.fn.popmake.callbacks.reposition_using},r={overlay:null,container:null},l=null;try{l=e(e.fn.popmake.last_open_trigger)}catch(c){l=e()}return a.position_from_trigger&&l.length?(s.of=l,p.indexOf("left")>=0&&(s.my+=" right",s.at+=" left"+(0!==a.position_left?"-"+a.position_left:"")),p.indexOf("right")>=0&&(s.my+=" left",s.at+=" right"+(0!==a.position_right?"+"+a.position_right:"")),p.indexOf("center")>=0&&(s.my="center"===p?"center":s.my+" center",s.at="center"===p?"center":s.at+" center"),p.indexOf("top")>=0&&(s.my+=" bottom",s.at+=" top"+(0!==a.position_top?"-"+a.position_top:"")),p.indexOf("bottom")>=0&&(s.my+=" top",s.at+=" bottom"+(0!==a.position_bottom?"+"+a.position_bottom:""))):(p.indexOf("left")>=0&&(s.my+=" left"+(0!==a.position_left?"+"+a.position_left:""),s.at+=" left"),p.indexOf("right")>=0&&(s.my+=" right"+(0!==a.position_right?"-"+a.position_right:""),s.at+=" right"),p.indexOf("center")>=0&&(s.my="center"===p?"center":s.my+" center",s.at="center"===p?"center":s.at+" center"),p.indexOf("top")>=0&&(s.my+=" top"+(0!==a.position_top?"+"+(e("body").hasClass("admin-bar")?parseInt(a.position_top,10)+32:a.position_top):""),s.at+=" top"),p.indexOf("bottom")>=0&&(s.my+=" bottom"+(0!==a.position_bottom?"-"+a.position_bottom:""),s.at+=" bottom")),s.my=e.trim(s.my),s.at=e.trim(s.at),o.is(":hidden")&&(r.overlay=o.css("opacity"),o.css({opacity:0}).show()),n.is(":hidden")&&(r.container=n.css("opacity"),n.css({opacity:0}).show()),a.position_fixed&&n.addClass("fixed"),"custom"===i.meta.display.size?n.css({width:i.meta.display.custom_width+i.meta.display.custom_width_unit,height:i.meta.display.custom_height_auto?"auto":i.meta.display.custom_height+i.meta.display.custom_height_unit}):"auto"!==i.meta.display.size&&n.addClass("responsive").css({minWidth:""!==i.meta.display.responsive_min_width?i.meta.display.responsive_min_width+i.meta.display.responsive_min_width_unit:"auto",maxWidth:""!==i.meta.display.responsive_max_width?i.meta.display.responsive_max_width+i.meta.display.responsive_max_width_unit:"auto"}),o.trigger("pumAfterReposition"),n.addClass("custom-position").position(s).trigger("popmakeAfterReposition"),r.overlay&&o.css({opacity:r.overlay}).hide(),r.container&&n.css({opacity:r.container}).hide(),this},retheme:function(t){e(this).trigger("popmakeBeforeRetheme");var n,i,a=PUM.getPopup(this),p=a.popmake("getContainer"),s=a.popmake("getTitle"),r=a.popmake("getContent"),l=a.popmake("getClose"),c=a.popmake("getSettings");switch(t===o&&(t=e.fn.popmake.themes[c.theme_id],t===o&&(t=e.fn.popmake.themes[1])),n="yes"===t.container.boxshadow_inset?"inset ":"",i="yes"===t.close.boxshadow_inset?"inset ":"",a.removeAttr("style").css({backgroundColor:e.fn.popmake.utilities.convert_hex(t.overlay.background_color,t.overlay.background_opacity),zIndex:c.meta.display.overlay_zindex||998}),p.css({padding:t.container.padding+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.container.background_color,t.container.background_opacity),borderStyle:t.container.border_style,borderColor:t.container.border_color,borderWidth:t.container.border_width+"px",borderRadius:t.container.border_radius+"px",boxShadow:n+t.container.boxshadow_horizontal+"px "+t.container.boxshadow_vertical+"px "+t.container.boxshadow_blur+"px "+t.container.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.container.boxshadow_color,t.container.boxshadow_opacity),zIndex:c.meta.display.zindex||999}),s.css({color:t.title.font_color,lineHeight:t.title.line_height+"px",fontSize:t.title.font_size+"px",fontFamily:t.title.font_family,fontWeight:t.title.font_weight,fontStyle:t.title.font_style,textAlign:t.title.text_align,textShadow:t.title.textshadow_horizontal+"px "+t.title.textshadow_vertical+"px "+t.title.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.title.textshadow_color,t.title.textshadow_opacity)}),r.css({color:t.content.font_color,fontFamily:t.content.font_family,fontWeight:t.content.font_weight,fontStyle:t.content.font_style}),e("p, label",r).css({color:t.content.font_color,fontFamily:t.content.font_family}),l.html(t.close.text).css({padding:t.close.padding+"px",height:t.close.height+"px",width:t.close.width+"px",backgroundColor:e.fn.popmake.utilities.convert_hex(t.close.background_color,t.close.background_opacity),color:t.close.font_color,lineHeight:t.close.line_height+"px",fontSize:t.close.font_size+"px",fontWeight:t.close.font_weight,fontStyle:t.close.font_style,fontFamily:t.close.font_family,borderStyle:t.close.border_style,borderColor:t.close.border_color,borderWidth:t.close.border_width+"px",borderRadius:t.close.border_radius+"px",boxShadow:i+t.close.boxshadow_horizontal+"px "+t.close.boxshadow_vertical+"px "+t.close.boxshadow_blur+"px "+t.close.boxshadow_spread+"px "+e.fn.popmake.utilities.convert_hex(t.close.boxshadow_color,t.close.boxshadow_opacity),textShadow:t.close.textshadow_horizontal+"px "+t.close.textshadow_vertical+"px "+t.close.textshadow_blur+"px "+e.fn.popmake.utilities.convert_hex(t.close.textshadow_color,t.close.textshadow_opacity),left:"auto",right:"auto",bottom:"auto",top:"auto"}),t.close.location){case"topleft":l.css({top:t.close.position_top+"px",left:t.close.position_left+"px"});break;case"topright":l.css({top:t.close.position_top+"px",right:t.close.position_right+"px"});break;case"bottomleft":l.css({bottom:t.close.position_bottom+"px",left:t.close.position_left+"px"});break;case"bottomright":l.css({bottom:t.close.position_bottom+"px",right:t.close.position_right+"px"})}return a.trigger("popmakeAfterRetheme",[t]),this},animation_origin:function(t){var o=PUM.getPopup(this),n=o.popmake("getContainer"),i={my:"",at:""};switch(t){case"top":i={my:"left+"+n.offset().left+" bottom-100",at:"left top"};break;case"bottom":i={my:"left+"+n.offset().left+" top+100",at:"left bottom"};break;case"left":i={my:"right top+"+n.offset().top,at:"left top"};break;case"right":i={my:"left top+"+n.offset().top,at:"right top"};break;default:t.indexOf("left")>=0&&(i={my:i.my+" right",at:i.at+" left"}),t.indexOf("right")>=0&&(i={my:i.my+" left",at:i.at+" right"}),t.indexOf("center")>=0&&(i={my:i.my+" center",at:i.at+" center"}),t.indexOf("top")>=0&&(i={my:i.my+" bottom-100",at:i.at+" top"}),t.indexOf("bottom")>=0&&(i={my:i.my+" top+100",at:i.at+" bottom"}),i.my=e.trim(i.my),i.at=e.trim(i.at)}return i.of=window,i.collision="none",i}}}(jQuery,document);var PUM_Accessibility;!function(e,t,o){"use strict";var n,i,a,p="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";PUM_Accessibility={forceFocus:function(t){a&&!e.contains(a,t.target)&&(t.stopPropagation(),PUM_Accessibility.setFocusToFirstItem())},trapTabKey:function(t){if(9===t.keyCode){var o=a.find(".pum-container *").filter(p).filter(":visible"),n=e(":focus"),i=o.length,s=o.index(n);t.shiftKey?0===s&&(o.get(i-1).focus(),t.preventDefault()):s===i-1&&(o.get(0).focus(),t.preventDefault())}},setFocusToFirstItem:function(){a.find(".pum-container *").filter(p).filter(":visible").filter(":not(.pum-close)").first().focus()}},e(t).on("pumInit",".pum",function(){PUM.getPopup(this).find("[tabindex]").each(function(){var t=e(this);t.data("tabindex",t.attr("tabindex")).prop("tabindex","0")})}).on("pumBeforeOpen",".pum",function(){var o=PUM.getPopup(this),p=e(":focus");o.has(p).length||(i=p),a=o.on("keydown.pum_accessibility",PUM_Accessibility.trapTabKey).attr("aria-hidden","false"),n=e("body > *").filter(":visible").not(a),n.attr("aria-hidden","true"),e(t).on("focus.pum_accessibility",PUM_Accessibility.forceFocus),PUM_Accessibility.setFocusToFirstItem()}).on("pumAfterOpen",".pum",function(){}).on("pumBeforeClose",".pum",function(){}).on("pumAfterClose",".pum",function(){var p=PUM.getPopup(this);p.off("keydown.pum_accessibility").attr("aria-hidden","true"),n&&(n.attr("aria-hidden","false"),n=null),i!==o&&i.length&&i.focus(),a=null,e(t).off("focus.pum_accessibility")}).on("pumSetupClose",".pum",function(){}).on("pumOpenPrevented",".pum",function(){}).on("pumClosePrevented",".pum",function(){}).on("pumBeforeReposition",".pum",function(){})}(jQuery,document);var PUM_Analytics;!function(e,t,o){"use strict";e.fn.popmake.last_open_trigger=null,e.fn.popmake.last_close_trigger=null,e.fn.popmake.conversion_trigger=null;var n=!("undefined"==typeof pum_vars.restapi||!pum_vars.restapi);PUM_Analytics={beacon:function(t){var o=new Image,i=n?pum_vars.restapi:pum_vars.ajaxurl;t=e.extend(!0,{route:"/analytics/open",type:"open",data:{pid:null,_cache:+new Date},callback:function(){}},t),n?i+=t.route:(t.data.action="pum_analytics",t.data.type=t.type),i&&(e(o).on("error success load done",t.callback),o.src=i+"?"+e.param(t.data))}},pum_vars.disable_open_tracking!==o&&pum_vars.disable_open_tracking||e(t).on("pumAfterOpen.core_analytics","body > .pum",function(){var t=PUM.getPopup(this),o={pid:parseInt(t.popmake("getSettings").id,10)||null};o.pid>0&&!e("body").hasClass("single-popup")&&PUM_Analytics.beacon({data:o})})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.methods.animate_overlay=function(t,o,n){var i=PUM.getPopup(this).popmake("getSettings");return i.meta.display.overlay_disabled?e.fn.popmake.overlay_animations.none.apply(this,[o,n]):e.fn.popmake.overlay_animations[t]?e.fn.popmake.overlay_animations[t].apply(this,[o,n]):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.methods.animate=function(t){return e.fn.popmake.animations[t]?e.fn.popmake.animations[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Animation style "+t+" does not exist."),this)},e.fn.popmake.animations={none:function(e){var t=PUM.getPopup(this);return t.popmake("getContainer").show(0),t.popmake("animate_overlay","none",0,function(){e!==o&&e()}),this},slide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2,p=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(p).css({opacity:1}),t.css({opacity:1}).popmake("animate_overlay","fade",a,function(){n.popmake("reposition",function(t){n.animate(t,a,"swing",function(){e!==o&&e()})})}),this},fade:function(e){var t=PUM.getPopup(this),n=t.popmake("getContainer"),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2;return n.show(0).css({opacity:0}),t.popmake("animate_overlay","fade",a,function(){n.animate({opacity:1},a,"swing",function(){e!==o&&e()})}),this},fadeAndSlide:function(e){var t=PUM.getPopup(this).show(0).css({opacity:0}),n=t.popmake("getContainer").show(0).css({opacity:0}),i=t.popmake("getSettings"),a=i.meta.display.animation_speed/2,p=t.popmake("animation_origin",i.meta.display.animation_origin);return n.position(p),t.hide().css({opacity:1}).popmake("animate_overlay","fade",a,function(){n.popmake("reposition",function(t){t.opacity=1,n.animate(t,a,"swing",function(){e!==o&&e()})})}),this},grow:function(t){return e.fn.popmake.animations.fade.apply(this,arguments)},growAndSlide:function(t){return e.fn.popmake.animations.fadeAndSlide.apply(this,arguments)}},e.fn.popmake.overlay_animations={none:function(e,t){PUM.getPopup(this).show(e,t)},fade:function(e,t){PUM.getPopup(this).fadeIn(e,t)},slide:function(e,t){PUM.getPopup(this).slideDown(e,t)}}}(jQuery,document),function(e,t,o){"use strict";e(t).on("pumInit",".pum",function(){e(this).popmake("getContainer").trigger("popmakeInit")}).on("pumBeforeOpen",".pum",function(){e(this).popmake("getContainer").addClass("active").trigger("popmakeBeforeOpen")}).on("pumAfterOpen",".pum",function(){e(this).popmake("getContainer").trigger("popmakeAfterOpen")}).on("pumBeforeClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeClose")}).on("pumAfterClose",".pum",function(){e(this).popmake("getContainer").removeClass("active").trigger("popmakeAfterClose")}).on("pumSetupClose",".pum",function(){e(this).popmake("getContainer").trigger("popmakeSetupClose")}).on("pumOpenPrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventOpen").removeClass("active")}).on("pumClosePrevented",".pum",function(){e(this).popmake("getContainer").removeClass("preventClose")}).on("pumBeforeReposition",".pum",function(){e(this).popmake("getContainer").trigger("popmakeBeforeReposition")})}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.callbacks={reposition_using:function(t){e(this).css(t)}}}(jQuery,document),function(e,t,o){"use strict";var n;e.extend(e.fn.popmake.methods,{checkConditions:function(){var t,i,a,p,s,r=PUM.getPopup(this),l=r.popmake("getSettings"),c=!0;if(l.mobile_disabled!==o&&l.mobile_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.phone()))return!1;if(l.tablet_disabled!==o&&l.tablet_disabled&&("object"!=typeof n&&(n=new MobileDetect(window.navigator.userAgent)),n.tablet()))return!1;if(l.conditions!==o&&l.conditions.length)for(i=0;l.conditions.length>i;i++){for(p=l.conditions[i],t=!1,a=0;p.length>a&&(s=e.extend({},{not_operand:!1},p[a]),!s.not_operand&&r.popmake("checkCondition",s)?t=!0:s.not_operand&&!r.popmake("checkCondition",s)&&(t=!0),e(this).trigger("pumCheckingCondition",[t,s]),!t);a++);t||(c=!1)}return c},checkCondition:function(t){var o=t.target||null;return o?e.fn.popmake.conditions[o]?e.fn.popmake.conditions[o].apply(this,[t]):window.console?(console.warn("Condition "+o+" does not exist."),!0):void 0:(console.warn("Condition type not set."),!1)}}),e.fn.popmake.conditions={device_is_mobile:function(e){return n.mobile()}}}(jQuery,document);var pm_cookie,pm_cookie_json,pm_remove_cookie;!function(e){"use strict";function t(t){function o(n,i,a){var p,s=new Date;if("undefined"!=typeof document){if(arguments.length>1){switch(a=e.extend({path:"/"},o.defaults,a),typeof a.expires){case"number":s.setMilliseconds(s.getMilliseconds()+864e5*a.expires),a.expires=s;break;case"string":s.setTime(1e3*e.fn.popmake.utilities.strtotime("+"+a.expires)),a.expires=s}try{p=JSON.stringify(i),/^[\{\[]/.test(p)&&(i=p)}catch(r){}return i=t.write?t.write(i,n):encodeURIComponent(String(i)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",i,a.expires?"; expires="+a.expires.toUTCString():"",a.path?"; path="+a.path:"",a.domain?"; domain="+a.domain:"",a.secure?"; secure":""].join("")}n||(p={});for(var l=document.cookie?document.cookie.split("; "):[],c=/(%[0-9A-Z]{2})+/g,u=0;u<l.length;u++){var d=l[u].split("="),m=d.slice(1).join("=");'"'===m.charAt(0)&&(m=m.slice(1,-1));try{var f=d[0].replace(c,decodeURIComponent);if(m=t.read?t.read(m,f):t(m,f)||m.replace(c,decodeURIComponent),this.json)try{m=JSON.parse(m)}catch(r){}if(n===f){p=m;break}n||(p[f]=m)}catch(r){}}return p}}return void 0===t&&(t=function(){}),o.set=o,o.get=function(e){return o.call(o,e)},o.getJSON=function(){return o.apply({json:!0},[].slice.call(arguments))},o.defaults={},o.remove=function(t,n){o(t,"",e.extend({},n,{expires:-1,path:""})),o(t,"",e.extend({},n,{expires:-1}))},o.process=function(e,t,n,i){return arguments.length>3&&"object"!=typeof arguments[2]&&void 0!==t?o.apply(o,[e,t,{expires:n,path:i}]):o.apply(o,[].slice.call(arguments,[0,2]))},o.withConverter=e.fn.popmake.cookie,o}e.extend(e.fn.popmake,{cookie:t()}),pm_cookie=e.pm_cookie=e.fn.popmake.cookie.process,pm_cookie_json=e.pm_cookie_json=e.fn.popmake.cookie.getJSON,pm_remove_cookie=e.pm_remove_cookie=e.fn.popmake.cookie.remove}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addCookie:function(t){return pum.hooks.doAction("popmake.addCookie",arguments),e.fn.popmake.cookies[t]?e.fn.popmake.cookies[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Cookie type "+t+" does not exist."),this)},setCookie:function(t){e.pm_cookie(t.name,!0,t.session?null:t.time,t.path?"/":null),pum.hooks.doAction("popmake.setCookie",t)},checkCookies:function(t){var n,i=!1;if(t.cookie===o||t.cookie.name===o||null===t.cookie.name)return!1;switch(typeof t.cookie.name){case"object":case"array":for(n=0;t.cookie.name.length>n;n+=1)e.pm_cookie(t.cookie.name[n])!==o&&(i=!0);break;case"string":e.pm_cookie(t.cookie.name)!==o&&(i=!0)}return pum.hooks.doAction("popmake.checkCookies",t,i),i}}),e.fn.popmake.cookies={on_popup_open:function(e){var t=PUM.getPopup(this);t.on("pumAfterOpen",function(){t.popmake("setCookie",e)})},on_popup_close:function(e){var t=PUM.getPopup(this);t.on("pumBeforeClose",function(){t.popmake("setCookie",e)})},manual:function(e){var t=PUM.getPopup(this);t.on("pumSetCookie",function(){t.popmake("setCookie",e)})},ninja_form_success:function(e){var t=PUM.getPopup(this);t.on("pum_nf.success",function(){t.popmake("setCookie",e)})}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.cookies,a=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)a=i[e],t.popmake("addCookie",a.event,a.settings)})}(jQuery,document);var pum_debug_mode=!1,pum_debug;!function(e,t){if(t=window.pum_vars||{debug_mode:!1},pum_debug_mode=void 0!==t.debug_mode&&t.debug_mode,pum_debug_mode||window.location.href.indexOf("pum_debug")===-1||(pum_debug_mode=!0),pum_debug_mode){var o=!1,n=!1,i=window.pum_debug_vars||{};pum_debug={odump:function(t){return e.extend({},t)},logo:function(){console.log(" -------------------------------------------------------------\n| ____ __ __ _ |\n| | _ \\ ___ _ __ _ _ _ __ | \\/ | __ _| | _____ _ __ |\n| | |_) / _ \\| '_ \\| | | | '_ \\ | |\\/| |/ _` | |/ / _ \\ '__| |\n| | __/ (_) | |_) | |_| | |_) | | | | | (_| | < __/ | |\n| |_| \\___/| .__/ \\__,_| .__/ |_| |_|\\__,_|_|\\_\\___|_| |\n| |_| |_| |\n -------------------------------------------------------------")},initialize:function(){o=!0,pum_debug.logo(),console.debug(i.debug_mode_enabled),console.log(i.debug_started_at,new Date),console.info(i.debug_more_info),pum_debug.divider(i.global_info),console.groupCollapsed(i.localized_vars),console.log("pum_vars:",pum_debug.odump(t)),e(document).trigger("pum_debug_initialize_localized_vars"),console.groupEnd(),e(document).trigger("pum_debug_initialize")},popup_event_header:function(e){var t=e.popmake("getSettings");n!==t.id&&(n=t.id,pum_debug.divider(i.single_popup_label+t.id+" - "+t.slug))},divider:function(e){var t=62,o=62,n=0,i=" "+new Array(t+1).join("-")+" ";"string"==typeof e?(o=t-e.length,n={left:Math.floor(o/2),right:Math.floor(o/2)},n.left+n.right===o-1&&n.right++,n.left=new Array(n.left+1).join(" "),n.right=new Array(n.right+1).join(" "),console.log(""+i+"\n|"+n.left+e+n.right+"|\n"+i)):console.log(i)},click_trigger:function(e,t){var o,n=e.popmake("getSettings"),a=[".popmake-"+n.id,".popmake-"+decodeURIComponent(n.slug),'a[href$="#popmake-'+n.id+'"]'];t.extra_selectors&&""!==t.extra_selectors&&a.push(t.extra_selectors),a=pum.hooks.applyFilters("pum.trigger.click_open.selectors",a,t,e),o=a.join(", "),console.log(i.label_selector,o)},trigger:function(t,o){switch(console.groupCollapsed(i.triggers[o.type].name),o.type){case"auto_open":console.log(i.label_delay,o.settings.delay),console.log(i.label_cookie,o.settings.cookie.name);break;case"click_open":pum_debug.click_trigger(t,o.settings),console.log(i.label_cookie,o.settings.cookie.name)}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()},cookie:function(t,o){switch(console.groupCollapsed(i.cookies[o.event].name),o.event){case"on_popup_open":case"on_popup_close":case"manual":case"ninja_form_success":console.log(i.label_settings,pum_debug.odump(o.settings))}e(document).trigger("pum_debug_render_trigger",t,o),console.groupEnd()}},e(document).on("pumInit",".pum",function(){var t=PUM.getPopup(e(this)),n=t.popmake("getSettings"),a=0;if(o||(pum_debug.initialize(),pum_debug.divider(i.popups_initializing)),console.groupCollapsed(i.single_popup_label+n.id+" - "+n.slug),console.log(i.theme_id,n.theme_id),void 0!==n.triggers&&n.triggers.length){for(console.groupCollapsed(i.label_triggers),a=0;n.triggers.length>a;a++)pum_debug.trigger(t,n.triggers[a]);console.groupEnd()}if(void 0!==n.cookies&&n.cookies.length){for(console.groupCollapsed(i.label_cookies),a=0;n.cookies.length>a;a+=1)pum_debug.cookie(t,n.cookies[a]);console.groupEnd()}void 0!==n.conditions&&n.conditions.length&&(console.groupCollapsed(i.label_conditions),console.log(n.conditions),console.groupEnd()),console.groupCollapsed(i.label_popup_settings),console.log(i.label_mobile_disabled,null!==n.mobile_disabled),console.log(i.label_tablet_disabled,null!==n.tablet_disabled),console.log(i.label_display_settings,pum_debug.odump(n.meta.display)),console.log(i.label_close_settings,pum_debug.odump(n.meta.close)),t.trigger("pum_debug_popup_settings");var p=pum.hooks.applyFilters("pum_debug.popup_settings.cleaned_meta",pum_debug.odump(n.meta),t);delete p.display,delete p.close,delete p.click_open,p.length&&console.log("Meta: ",p),console.groupEnd(),console.groupEnd()}).on("pumBeforeOpen",".pum",function(){var t=PUM.getPopup(e(this)),o=(t.popmake("getSettings"),e.fn.popmake.last_open_trigger);pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_open);try{o=e(e.fn.popmake.last_open_trigger)}catch(n){o=e()}finally{o=o.length?o:e.fn.popmake.last_open_trigger.toString(),console.log(i.label_triggers,[o])}console.groupEnd()}).on("pumOpenPrevented",".pum",function(){var t=PUM.getPopup(e(this));pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_open_prevented),console.groupEnd()}).on("pumAfterOpen",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_open),console.groupEnd()}).on("pumSetupClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_setup_close),console.groupEnd()}).on("pumClosePrevented",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_close_prevented),console.groupEnd()}).on("pumBeforeClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_close),console.groupEnd()}).on("pumAfterClose",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_close),console.groupEnd()}).on("pumBeforeReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_before_reposition),console.groupEnd()}).on("pumAfterReposition",".pum",function(){var t=PUM.getPopup(e(this));t.popmake("getSettings");pum_debug.popup_event_header(t),console.groupCollapsed(i.label_event_after_reposition),console.groupEnd()}).on("pumCheckingCondition",".pum",function(t,o,n){var a=PUM.getPopup(e(this));a.popmake("getSettings");pum_debug.popup_event_header(a),console.groupCollapsed(i.label_event_checking_condition),console.log((n.not_operand?"(!) ":"")+n.target+": "+o,n),console.groupEnd()})}}(jQuery),function(e,t,o){"use strict";e.fn.popmake.defaults={meta:{display:{stackable:0,overlay_disabled:0,size:"medium",responsive_max_width:"",responsive_max_width_unit:"%",responsive_min_width:"",responsive_min_width_unit:"%",custom_width:"",custom_width_unit:"%",custom_height:"",custom_height_unit:"em",custom_height_auto:0,location:"center top",position_top:100,position_left:0,position_bottom:0,position_right:0,position_fixed:0,animation_type:"fade",animation_speed:350,animation_origin:"center top"},close:{overlay_click:0,esc_press:0,f4_press:0}},container:{active_class:"active",attr:{"class":"popmake"}},title:{attr:{"class":"popmake-title"}},content:{attr:{"class":"popmake-content"}},close:{close_speed:0,attr:{"class":"popmake-close"}},overlay:{attr:{id:"popmake-overlay","class":"popmake-overlay"}}}}(jQuery,document),function(e,t){"use strict";var o=function(){function e(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("actions",e,t,o,n)),u}function t(){var e=c.call(arguments),t=e.shift();return"string"==typeof t&&l("actions",t,e),u}function o(e,t){return"string"==typeof e&&p("actions",e,t),u}function n(e,t,o,n){return"string"==typeof e&&"function"==typeof t&&(o=parseInt(o||10,10),s("filters",e,t,o,n)),u}function i(){var e=c.call(arguments),t=e.shift();return"string"==typeof t?l("filters",t,e):u}function a(e,t){return"string"==typeof e&&p("filters",e,t),u}function p(e,t,o,n){var i,a,p;if(d[e][t])if(o)if(i=d[e][t],n)for(p=i.length;p--;)a=i[p],a.callback===o&&a.context===n&&i.splice(p,1);else for(p=i.length;p--;)i[p].callback===o&&i.splice(p,1);else d[e][t]=[]}function s(e,t,o,n,i){var a={callback:o,priority:n,context:i},p=d[e][t];p?(p.push(a),p=r(p)):p=[a],d[e][t]=p}function r(e){for(var t,o,n,i=1,a=e.length;i<a;i++){for(t=e[i],o=i;(n=e[o-1])&&n.priority>t.priority;)e[o]=e[o-1],
|
2 |
+
--o;e[o]=t}return e}function l(e,t,o){var n,i,a=d[e][t];if(!a)return"filters"===e&&o[0];if(i=a.length,"filters"===e)for(n=0;n<i;n++)o[0]=a[n].callback.apply(a[n].context,o);else for(n=0;n<i;n++)a[n].callback.apply(a[n].context,o);return"filters"!==e||o[0]}var c=Array.prototype.slice,u={removeFilter:a,applyFilters:i,addFilter:n,removeAction:o,doAction:t,addAction:e},d={actions:{},filters:{}};return u};e.pum=e.pum||{},e.pum.hooks=e.pum.hooks||new o}(window),function(e){"use strict";if("undefined"!=typeof Marionette&&"undefined"!=typeof nfRadio){var t=Marionette.Object.extend({initialize:function(){this.listenTo(nfRadio.channel("forms"),"submit:response",this.closePopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.openPopup),this.listenTo(nfRadio.channel("forms"),"submit:response",this.popupTriggers)},popupTriggers:function(t,o,n,i){var a;a=e("#nf-form-"+i+"-cont").parents(".pum"),a.length&&(a.trigger("pum_nf.success"),t.errors.length?a.trigger("pum_nf.error"):a.trigger("pum_nf.success"))},closePopup:function(t,o,n,i){var a;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.closepopup&&(a=e("#nf-form-"+i+"-cont").parents(".pum"),a.length&&setTimeout(function(){a.popmake("close")},parseInt(t.data.actions.closepopup)))},openPopup:function(t){var o;"undefined"==typeof t.data.actions||t.errors.length||"undefined"!=typeof t.data.actions.openpopup&&(o=e("#pum-"+parseInt(t.data.actions.openpopup)),o.length&&o.popmake("open"))}});jQuery(document).ready(function(){new t})}}(jQuery),function(e,t,o){"use strict";e.extend(e.fn.popmake.methods,{addTrigger:function(t){return e.fn.popmake.triggers[t]?e.fn.popmake.triggers[t].apply(this,Array.prototype.slice.call(arguments,1)):(window.console&&console.warn("Trigger type "+t+" does not exist."),this)}}),e.fn.popmake.triggers={auto_open:function(t){var o=PUM.getPopup(this);setTimeout(function(){o.popmake("state","isOpen")||!o.popmake("checkCookies",t)&&o.popmake("checkConditions")&&(e.fn.popmake.last_open_trigger="Auto Open - Delay: "+t.delay,o.popmake("open"))},t.delay)},click_open:function(o){var n,i=PUM.getPopup(this),a=i.popmake("getSettings"),p=[".popmake-"+a.id,".popmake-"+decodeURIComponent(a.slug),'a[href$="#popmake-'+a.id+'"]'];o.extra_selectors&&""!==o.extra_selectors&&p.push(o.extra_selectors),p=pum.hooks.applyFilters("pum.trigger.click_open.selectors",p,o,i),n=p.join(", "),e(n).addClass("pum-trigger").data("popup",a.id).attr("data-popup",a.id).data("settings",o).data("do-default",o.do_default).attr("data-do-default",o.do_default).css({cursor:"pointer"}),e(t).on("click",n+":not(.pum-trigger)",function(t){var n=e(this);n.addClass("pum-trigger").data("popup",a.id).attr("data-popup",a.id).data("settings",o).data("do-default",o.do_default).attr("data-do-default",o.do_default).css({cursor:"pointer"}),t.preventDefault(),t.stopPropagation(),n.trigger("click")})},admin_debug:function(){PUM.getPopup(this).popmake("open")}},e(t).on("pumInit",".pum",function(){var e,t=PUM.getPopup(this),n=t.popmake("getSettings"),i=n.triggers,a=null;if(i!==o&&i.length)for(e=0;i.length>e;e+=1)a=i[e],t.popmake("addTrigger",a.type,a.settings)}).on("click.pumTrigger",".pum-trigger[data-popup]",function(t){var o=e(this),n=PUM.getPopup(o.data("popup")),i=o.data("settings"),a=i.do_default||!1;n.has(o).length>0||n.popmake("state","isOpen")||!n.popmake("checkCookies",i)&&n.popmake("checkConditions")&&(o.data("do-default")?a=o.data("do-default"):o.hasClass("do-default")&&(a=!0),pum.hooks.applyFilters("pum.trigger.click_open.do_default",a,n,o)||(t.preventDefault(),t.stopPropagation()),e.fn.popmake.last_open_trigger=o,n.popmake("open"))})}(jQuery,document),function(e,t,o){"use strict";function n(t,o){return e.inArray(o,t)!==-1}function i(e,t,o){var n=t[0];t.length>1?(e[n]||(e[n]=t[1]?{}:[]),i(e[n],t.slice(1),o)):(n||(n=e.length),e[n]=o)}var a="color,date,datetime,datetime-local,email,hidden,month,number,password,range,search,tel,text,time,url,week".split(","),p="select,textarea".split(","),s=/\[([^\]]*)\]/g;e.fn.popmake.utilities={convert_hex:function(e,t){e=e.replace("#","");var o=parseInt(e.substring(0,2),16),n=parseInt(e.substring(2,4),16),i=parseInt(e.substring(4,6),16);return"rgba("+o+","+n+","+i+","+t/100+")"},debounce:function(e,t){var o;return function(){var n=this,i=arguments;window.clearTimeout(o),o=window.setTimeout(function(){e.apply(n,i)},t)}},throttle:function(e,t){var o=!1,n=function(){o=!1};return function(){o||(e.apply(this,arguments),window.setTimeout(n,t),o=!0)}},getXPath:function(t){var o,n,i,a,p,s=[];return e.each(e(t).parents(),function(t,r){return o=e(r),n=o.attr("id")||"",i=o.attr("class")||"",a=o.get(0).tagName.toLowerCase(),p=o.parent().children(a).index(o),"body"!==a&&(i.length>0&&(i=i.split(" "),i=i[0]),void s.push(a+(n.length>0?"#"+n:i.length>0?"."+i.split(" ").join("."):":eq("+p+")")))}),s.reverse().join(" > ")},strtotime:function(e,t){function n(e,t,n){var i,a=c[t];a!==o&&(i=a-l.getDay(),0===i?i=7*n:i>0&&"last"===e?i-=7:i<0&&"next"===e&&(i+=7),l.setDate(l.getDate()+i))}function i(e){var t=e.split(" "),o=t[0],i=t[1].substring(0,3),a=/\d+/.test(o),p="ago"===t[2],s=("last"===o?-1:1)*(p?-1:1);if(a&&(s*=parseInt(o,10)),u.hasOwnProperty(i)&&!t[1].match(/^mon(day|\.)?$/i))return l["set"+u[i]](l["get"+u[i]]()+s);if("wee"===i)return l.setDate(l.getDate()+7*s);if("next"===o||"last"===o)n(o,i,s);else if(!a)return!1;return!0}var a,p,s,r,l,c,u,d,m,f,g,_=!1;if(!e)return _;if(e=e.replace(/^\s+|\s+$/g,"").replace(/\s{2,}/g," ").replace(/[\t\r\n]/g,"").toLowerCase(),p=e.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/),p&&p[2]===p[4])if(p[1]>1901)switch(p[2]){case"-":return p[3]>12||p[5]>31?_:new Date(p[1],parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case".":return _;case"/":return p[3]>12||p[5]>31?_:new Date(p[1],parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3}else if(p[5]>1901)switch(p[2]){case"-":return p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case".":return p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3;case"/":return p[1]>12||p[3]>31?_:new Date(p[5],parseInt(p[1],10)-1,p[3],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3}else switch(p[2]){case"-":return p[3]>12||p[5]>31||p[1]<70&&p[1]>38?_:(r=p[1]>=0&&p[1]<=38?+p[1]+2e3:p[1],new Date(r,parseInt(p[3],10)-1,p[5],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3);case".":return p[5]>=70?p[3]>12||p[1]>31?_:new Date(p[5],parseInt(p[3],10)-1,p[1],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3:p[5]<60&&!p[6]?p[1]>23||p[3]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),p[1]||0,p[3]||0,p[5]||0,p[9]||0)/1e3):_;case"/":return p[1]>12||p[3]>31||p[5]<70&&p[5]>38?_:(r=p[5]>=0&&p[5]<=38?+p[5]+2e3:p[5],new Date(r,parseInt(p[1],10)-1,p[3],p[6]||0,p[7]||0,p[8]||0,p[9]||0)/1e3);case":":return p[1]>23||p[3]>59||p[5]>59?_:(s=new Date,new Date(s.getFullYear(),s.getMonth(),s.getDate(),p[1]||0,p[3]||0,p[5]||0)/1e3)}if("now"===e)return null===t||isNaN(t)?(new Date).getTime()/1e3||0:t||0;if(a=Date.parse(e),!isNaN(a))return a/1e3||0;if(l=t?new Date(1e3*t):new Date,c={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},u={yea:"FullYear",mon:"Month",day:"Date",hou:"Hours",min:"Minutes",sec:"Seconds"},m="(years?|months?|weeks?|days?|hours?|minutes?|min|seconds?|sec|sunday|sun\\.?|monday|mon\\.?|tuesday|tue\\.?|wednesday|wed\\.?|thursday|thu\\.?|friday|fri\\.?|saturday|sat\\.?)",f="([+-]?\\d+\\s"+m+"|(last|next)\\s"+m+")(\\sago)?",p=e.match(new RegExp(f,"gi")),!p)return _;for(g=0,d=p.length;g<d;g+=1)if(!i(p[g]))return _;return l.getTime()/1e3},serializeObject:function(t){e.extend({},t);var o={},r=e.extend(!0,{include:[],exclude:[],includeByClass:""},t);return this.find(":input").each(function(){var t;!this.name||this.disabled||n(r.exclude,this.name)||r.include.length&&!n(r.include,this.name)||this.className.indexOf(r.includeByClass)===-1||(t=this.name.replace(s,"[$1").split("["),t[0]&&(this.checked||n(a,this.type)||n(p,this.nodeName.toLowerCase()))&&("checkbox"===this.type&&t.push(""),i(o,t,e(this).val())))}),o}},e.fn.pumSerializeObject=e.fn.popmake.utilities.serializeObject,e.fn.popmake.utilies=e.fn.popmake.utilities}(jQuery,document),function(e,t,o){"use strict";e.fn.popmake.version=1.4,e.fn.popmake.last_open_popup=null,e(t).ready(function(){e(".popmake").popmake()})}(jQuery);
|
includes/admin/popups/class-metabox-triggers.php
CHANGED
@@ -164,8 +164,8 @@ class PUM_Popup_Triggers_Metabox {
|
|
164 |
|
165 |
<?php ob_start(); ?>
|
166 |
|
167 |
-
<input type="hidden" name="type" class="type" value="<?php esc_attr_e( $id ); ?>"/>
|
168 |
-
<input type="hidden" name="index" class=index" value="{{data.index}}"/>
|
169 |
|
170 |
<div class="pum-tabs-container vertical-tabs tabbed-form">
|
171 |
|
164 |
|
165 |
<?php ob_start(); ?>
|
166 |
|
167 |
+
<input type="hidden" name="type" class="type" value="<?php esc_attr_e( $id ); ?>" />
|
168 |
+
<input type="hidden" name="index" class="index" value="{{data.index}}" />
|
169 |
|
170 |
<div class="pum-tabs-container vertical-tabs tabbed-form">
|
171 |
|
includes/class-pum-fields.php
CHANGED
@@ -731,7 +731,7 @@ class PUM_Fields extends Popmake_Fields {
|
|
731 |
|
732 |
<?php // TODO Replace these all with a single variable in JS like var value = data.<?php echo esc_attr( $args['templ_name'] ); ?/> || {}; ?>
|
733 |
|
734 |
-
<# var templ_name = '<?php echo esc_attr( $args['templ_name'] ); ?>';
|
735 |
|
736 |
<# if (!data[templ_name] || typeof data[templ_name] !== 'object') {
|
737 |
data[templ_name] = {};
|
731 |
|
732 |
<?php // TODO Replace these all with a single variable in JS like var value = data.<?php echo esc_attr( $args['templ_name'] ); ?/> || {}; ?>
|
733 |
|
734 |
+
<# var templ_name = '<?php echo esc_attr( $args['templ_name'] ); ?>'; #>
|
735 |
|
736 |
<# if (!data[templ_name] || typeof data[templ_name] !== 'object') {
|
737 |
data[templ_name] = {};
|
includes/class-pum.php
CHANGED
@@ -7,7 +7,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
7 |
|
8 |
class PUM {
|
9 |
|
10 |
-
const VER = '1.5.
|
11 |
|
12 |
const DB_VER = 6;
|
13 |
|
7 |
|
8 |
class PUM {
|
9 |
|
10 |
+
const VER = '1.5.3';
|
11 |
|
12 |
const DB_VER = 6;
|
13 |
|
includes/pum-sdk/freemius/assets/css/admin/checkout.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
@media screen and (max-width: 782px){#wpbody-content{padding-bottom:0 !important}}
|
includes/pum-sdk/freemius/assets/css/admin/common.css
CHANGED
@@ -1 +1,2 @@
|
|
|
|
1 |
.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}.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;box-shadow:0px 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)}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 500px){#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}
|
1 |
+
#iframe{line-height:0;font-size:0}.fs-full-size-wrapper{margin:0 0 -65px -20px}@media (max-width: 782px){.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}.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;box-shadow:0px 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)}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 500px){#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}
|
includes/pum-sdk/freemius/assets/css/admin/debug.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.switch{position:relative;display:inline-block;font-size:1.6em;font-weight:bold;color:#ccc;text-shadow:0px 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);border-radius:4px;background:#ececec;box-shadow:0px 0px 4px rgba(0,0,0,0.1),inset 0px 1px 3px 0px rgba(0,0,0,0.1);cursor:pointer}.switch span{display:inline-block;width:35px;text-transform:uppercase}.switch span.on{color:#6bc406}.switch .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:-moz-linear-gradient(top, #ececec 0%, #fff 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #fff));background:-webkit-linear-gradient(top, #ececec 0%, #fff 100%);background:-o-linear-gradient(top, #ececec 0%, #fff 100%);background:-ms-linear-gradient(top, #ececec 0%, #fff 100%);background:linear-gradient(top, #ececec 0%, #fff 100%);box-shadow:inset 0px 1px 0px 0px rgba(255,255,255,0.5);z-index:999;-moz-transition:all 0.15s ease-in-out;-o-transition:all 0.15s ease-in-out;-ms-transition:all 0.15s ease-in-out;-webkit-transition:all 0.15s ease-in-out;transition:all 0.15s ease-in-out}.switch.on .toggle{left:2%}.switch.off .toggle{left:54%}.switch.round{padding:0px 20px;border-radius:40px}.switch.round .toggle{border-radius:40px;width:14px;height:14px}.switch.round.on .toggle{left:3%;background:#6bc406}.switch.round.off .toggle{left:58%}.switch-label{font-size:20px;line-height:31px;margin:0 5px}
|
1 |
+
.switch{position:relative;display:inline-block;font-size:1.6em;font-weight:bold;color:#ccc;text-shadow:0px 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);border-radius:4px;background:#ececec;box-shadow:0px 0px 4px rgba(0,0,0,0.1),inset 0px 1px 3px 0px rgba(0,0,0,0.1);cursor:pointer}.switch span{display:inline-block;width:35px;text-transform:uppercase}.switch span.on{color:#6bc406}.switch .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:-moz-linear-gradient(top, #ececec 0%, #fff 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ececec), color-stop(100%, #fff));background:-webkit-linear-gradient(top, #ececec 0%, #fff 100%);background:-o-linear-gradient(top, #ececec 0%, #fff 100%);background:-ms-linear-gradient(top, #ececec 0%, #fff 100%);background:linear-gradient(top, #ececec 0%, #fff 100%);box-shadow:inset 0px 1px 0px 0px rgba(255,255,255,0.5);z-index:999;-moz-transition:all 0.15s ease-in-out;-o-transition:all 0.15s ease-in-out;-ms-transition:all 0.15s ease-in-out;-webkit-transition:all 0.15s ease-in-out;transition:all 0.15s ease-in-out}.switch.on .toggle{left:2%}.switch.off .toggle{left:54%}.switch.round{padding:0px 20px;border-radius:40px}.switch.round .toggle{border-radius:40px;width:14px;height:14px}.switch.round.on .toggle{left:3%;background:#6bc406}.switch.round.off .toggle{left:58%}.switch-label{font-size:20px;line-height:31px;margin:0 5px}#fs_log_book table{font-family:Consolas,Monaco,monospace;font-size:12px}#fs_log_book table th{color:#ccc}#fs_log_book table tr{background:#232525}#fs_log_book table tr.alternate{background:#2b2b2b}#fs_log_book table tr td.fs-col--logger{color:#5a7435}#fs_log_book table tr td.fs-col--type{color:#ffc861}#fs_log_book table tr td.fs-col--function{color:#a7b7b1;font-weight:bold}#fs_log_book table tr td.fs-col--message,#fs_log_book table tr td.fs-col--message a{color:#9a73ac !important}#fs_log_book table tr td.fs-col--file{color:#d07922}#fs_log_book table tr td.fs-col--timestamp{color:#6596be}
|
includes/pum-sdk/freemius/assets/css/admin/dialog-boxes.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .
|
2 |
.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}
|
1 |
+
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
|
2 |
.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}
|
includes/pum-sdk/freemius/assets/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/assets/scss/_load.scss
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
@import 'mixins';
|
2 |
-
@import "vars";
|
3 |
-
@import "functions";
|
4 |
-
@import "colors";
|
1 |
+
@import 'mixins';
|
2 |
+
@import "vars";
|
3 |
+
@import "functions";
|
4 |
+
@import "colors";
|
includes/pum-sdk/freemius/assets/scss/_start.scss
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
@import "vars";
|
2 |
-
@import "colors";
|
3 |
-
@import "mixins";
|
4 |
@import "functions";
|
1 |
+
@import "vars";
|
2 |
+
@import "colors";
|
3 |
+
@import "mixins";
|
4 |
@import "functions";
|
includes/pum-sdk/freemius/assets/scss/_vars.scss
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
-
$is_production: true;
|
2 |
-
|
3 |
-
$img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
|
4 |
-
|
5 |
-
$layout_width: 960px;
|
|
1 |
+
$is_production: true;
|
2 |
+
|
3 |
+
$img_common: if($is_production == true, '//img.freemius.com', 'http://img.freemius:8080');
|
4 |
+
|
5 |
+
$layout_width: 960px;
|
6 |
+
$admin_mobile_max_width: 782px;
|
includes/pum-sdk/freemius/assets/scss/admin/_license-key-resend.scss
CHANGED
@@ -1,44 +1,68 @@
|
|
1 |
-
.fs-modal.fs-modal-license-key-resend
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
}
|
22 |
|
23 |
.rtl
|
24 |
{
|
25 |
-
.fs-modal.fs-modal-license-key-resend
|
26 |
-
|
27 |
-
|
28 |
-
|
|
|
|
|
|
|
29 |
padding-right: 0;
|
30 |
}
|
31 |
|
32 |
-
.button-container
|
33 |
-
|
|
|
34 |
margin-right: 7px;
|
35 |
-
margin-left:
|
36 |
}
|
37 |
}
|
38 |
}
|
39 |
}
|
40 |
|
41 |
-
a.show-license-resend-modal
|
42 |
-
|
43 |
-
|
|
|
44 |
}
|
1 |
+
.fs-modal.fs-modal-license-key-resend
|
2 |
+
{
|
3 |
+
.email-address-container
|
4 |
+
{
|
5 |
+
overflow: hidden;
|
6 |
+
padding-right: 2px;
|
7 |
+
}
|
8 |
+
|
9 |
+
&.fs-freemium
|
10 |
+
{
|
11 |
+
input.email-address
|
12 |
+
{
|
13 |
+
width: 300px;
|
14 |
+
}
|
15 |
+
|
16 |
+
label
|
17 |
+
{
|
18 |
+
display: block;
|
19 |
+
margin-bottom: 10px;
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
&.fs-premium
|
24 |
+
{
|
25 |
+
input.email-address
|
26 |
+
{
|
27 |
+
width: 100%;
|
28 |
+
}
|
29 |
+
|
30 |
+
.button-container
|
31 |
+
{
|
32 |
+
float: right;
|
33 |
+
margin-left: 7px;
|
34 |
+
|
35 |
+
@media (max-width: 650px) {
|
36 |
+
margin-top: 2px;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
}
|
40 |
}
|
41 |
|
42 |
.rtl
|
43 |
{
|
44 |
+
.fs-modal.fs-modal-license-key-resend
|
45 |
+
{
|
46 |
+
.fs-modal-body
|
47 |
+
{
|
48 |
+
.input-container > .email-address-container
|
49 |
+
{
|
50 |
+
padding-left: 2px;
|
51 |
padding-right: 0;
|
52 |
}
|
53 |
|
54 |
+
.button-container
|
55 |
+
{
|
56 |
+
float: left;
|
57 |
margin-right: 7px;
|
58 |
+
margin-left: 0;
|
59 |
}
|
60 |
}
|
61 |
}
|
62 |
}
|
63 |
|
64 |
+
a.show-license-resend-modal
|
65 |
+
{
|
66 |
+
margin-top: 4px;
|
67 |
+
display: inline-block;
|
68 |
}
|
includes/pum-sdk/freemius/assets/scss/admin/checkout.scss
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@media screen and (max-width: 782px) {
|
2 |
+
#wpbody-content {
|
3 |
+
padding-bottom: 0 !important;
|
4 |
+
}
|
5 |
+
}
|
includes/pum-sdk/freemius/assets/scss/admin/common.scss
CHANGED
@@ -1,5 +1,18 @@
|
|
1 |
@import "../start";
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
.fs-notice
|
4 |
{
|
5 |
position: relative;
|
1 |
@import "../start";
|
2 |
|
3 |
+
#iframe {
|
4 |
+
line-height: 0;
|
5 |
+
font-size: 0;
|
6 |
+
}
|
7 |
+
|
8 |
+
.fs-full-size-wrapper {
|
9 |
+
margin: 0 0 -65px -20px;
|
10 |
+
|
11 |
+
@media (max-width: $admin_mobile_max_width) {
|
12 |
+
margin: 0 0 -65px -10px;
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
.fs-notice
|
17 |
{
|
18 |
position: relative;
|
includes/pum-sdk/freemius/assets/scss/admin/connect.scss
CHANGED
@@ -1,471 +1,471 @@
|
|
1 |
-
@import "../start";
|
2 |
-
|
3 |
-
$form_width: 480px;
|
4 |
-
|
5 |
-
#fs_connect
|
6 |
-
{
|
7 |
-
width: $form_width;
|
8 |
-
@include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
|
9 |
-
margin: 20px 0;
|
10 |
-
|
11 |
-
@media screen and (max-width: ($form_width - 1)) {
|
12 |
-
@include box-shadow(none);
|
13 |
-
width: auto;
|
14 |
-
margin: 0 0 0 -10px;
|
15 |
-
}
|
16 |
-
|
17 |
-
.fs-content
|
18 |
-
{
|
19 |
-
background: #fff;
|
20 |
-
padding: 15px 20px;
|
21 |
-
|
22 |
-
.fs-error {
|
23 |
-
background: snow;
|
24 |
-
color: $fs-logo-magenta-color;
|
25 |
-
border: 1px solid $fs-logo-magenta-color;
|
26 |
-
@include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
|
27 |
-
text-align: center;
|
28 |
-
padding: 5px;
|
29 |
-
margin-bottom: 10px;
|
30 |
-
}
|
31 |
-
|
32 |
-
p
|
33 |
-
{
|
34 |
-
margin: 0;
|
35 |
-
padding: 0;
|
36 |
-
font-size: 1.2em;
|
37 |
-
}
|
38 |
-
}
|
39 |
-
|
40 |
-
.fs-license-key-container {
|
41 |
-
position: relative;
|
42 |
-
width: 280px;
|
43 |
-
margin: 10px auto 0 auto;
|
44 |
-
|
45 |
-
input {
|
46 |
-
width: 100%;
|
47 |
-
}
|
48 |
-
|
49 |
-
.dashicons {
|
50 |
-
position: absolute;
|
51 |
-
top: 5px;
|
52 |
-
right: 5px;
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
.fs-actions
|
57 |
-
{
|
58 |
-
padding: 10px 20px;
|
59 |
-
background: #C0C7CA;
|
60 |
-
|
61 |
-
.button
|
62 |
-
{
|
63 |
-
padding: 0 10px 1px;
|
64 |
-
line-height: 35px;
|
65 |
-
height: 37px;
|
66 |
-
font-size: 16px;
|
67 |
-
margin-bottom: 0;
|
68 |
-
|
69 |
-
.dashicons
|
70 |
-
{
|
71 |
-
font-size: 37px;
|
72 |
-
margin-left: -8px;
|
73 |
-
margin-right: 12px;
|
74 |
-
}
|
75 |
-
|
76 |
-
&.button-primary
|
77 |
-
{
|
78 |
-
padding-right: 15px;
|
79 |
-
padding-left: 15px;
|
80 |
-
|
81 |
-
&:after
|
82 |
-
{
|
83 |
-
content: ' \279C';
|
84 |
-
}
|
85 |
-
|
86 |
-
&.fs-loading
|
87 |
-
{
|
88 |
-
&:after
|
89 |
-
{
|
90 |
-
content: '';
|
91 |
-
}
|
92 |
-
}
|
93 |
-
}
|
94 |
-
|
95 |
-
&.button-secondary
|
96 |
-
{
|
97 |
-
float: right;
|
98 |
-
}
|
99 |
-
}
|
100 |
-
|
101 |
-
// .fs-skip
|
102 |
-
// {
|
103 |
-
// line-height: 38px;
|
104 |
-
// vertical-align: middle;
|
105 |
-
// text-decoration: none;
|
106 |
-
// margin-left: 10px;
|
107 |
-
// }
|
108 |
-
}
|
109 |
-
|
110 |
-
&.fs-anonymous-disabled
|
111 |
-
{
|
112 |
-
.fs-actions
|
113 |
-
{
|
114 |
-
.button.button-primary
|
115 |
-
{
|
116 |
-
width: 100%;
|
117 |
-
}
|
118 |
-
}
|
119 |
-
}
|
120 |
-
|
121 |
-
.fs-permissions
|
122 |
-
{
|
123 |
-
padding: 10px 20px;
|
124 |
-
background: #FEFEFE;
|
125 |
-
// background: #F1F1F1;
|
126 |
-
@include transition(background 0.5s ease);
|
127 |
-
|
128 |
-
.fs-license-sync-disclaimer {
|
129 |
-
text-align: center;
|
130 |
-
margin-top: 0;
|
131 |
-
}
|
132 |
-
|
133 |
-
.fs-trigger
|
134 |
-
{
|
135 |
-
font-size: 0.9em;
|
136 |
-
text-decoration: none;
|
137 |
-
text-align: center;
|
138 |
-
display: block;
|
139 |
-
}
|
140 |
-
|
141 |
-
ul
|
142 |
-
{
|
143 |
-
height: 0;
|
144 |
-
overflow: hidden;
|
145 |
-
margin: 0;
|
146 |
-
|
147 |
-
li
|
148 |
-
{
|
149 |
-
margin-bottom: 12px;
|
150 |
-
|
151 |
-
&:last-child
|
152 |
-
{
|
153 |
-
margin-bottom: 0;
|
154 |
-
}
|
155 |
-
|
156 |
-
i.dashicons
|
157 |
-
{
|
158 |
-
float: left;
|
159 |
-
font-size: 40px;
|
160 |
-
width: 40px;
|
161 |
-
height: 40px;
|
162 |
-
}
|
163 |
-
|
164 |
-
div
|
165 |
-
{
|
166 |
-
margin-left: 55px;
|
167 |
-
|
168 |
-
span
|
169 |
-
{
|
170 |
-
font-weight: bold;
|
171 |
-
text-transform: uppercase;
|
172 |
-
color: #23282d;
|
173 |
-
}
|
174 |
-
|
175 |
-
p
|
176 |
-
{
|
177 |
-
margin: 2px 0 0 0;
|
178 |
-
}
|
179 |
-
}
|
180 |
-
}
|
181 |
-
}
|
182 |
-
|
183 |
-
&.fs-open
|
184 |
-
{
|
185 |
-
background: #fff;
|
186 |
-
|
187 |
-
ul
|
188 |
-
{
|
189 |
-
height: auto;
|
190 |
-
margin: 20px 20px 10px 20px;
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
@media screen and (max-width: ($form_width - 1)) {
|
195 |
-
background: #fff;
|
196 |
-
|
197 |
-
.fs-trigger
|
198 |
-
{
|
199 |
-
display: none;
|
200 |
-
}
|
201 |
-
|
202 |
-
ul
|
203 |
-
{
|
204 |
-
height: auto;
|
205 |
-
margin: 20px;
|
206 |
-
}
|
207 |
-
}
|
208 |
-
}
|
209 |
-
|
210 |
-
.fs-freemium-licensing {
|
211 |
-
padding: 8px;
|
212 |
-
// background: #0085BA;
|
213 |
-
background: #777;
|
214 |
-
color: #fff;
|
215 |
-
|
216 |
-
p {
|
217 |
-
text-align: center;
|
218 |
-
display: block;
|
219 |
-
margin: 0;
|
220 |
-
padding: 0;
|
221 |
-
}
|
222 |
-
|
223 |
-
a {
|
224 |
-
color: #C2EEFF;
|
225 |
-
text-decoration: underline;
|
226 |
-
}
|
227 |
-
}
|
228 |
-
|
229 |
-
$icon_size: 80px;
|
230 |
-
$wp_logo_padding: $icon_size / 10;
|
231 |
-
$icons_top: 10px;
|
232 |
-
|
233 |
-
.fs-visual
|
234 |
-
{
|
235 |
-
padding: 12px;
|
236 |
-
line-height: 0;
|
237 |
-
background: #fafafa;
|
238 |
-
height: $icon_size;
|
239 |
-
position: relative;
|
240 |
-
|
241 |
-
.fs-site-icon
|
242 |
-
{
|
243 |
-
position: absolute;
|
244 |
-
left: 20px;
|
245 |
-
top: $icons_top;
|
246 |
-
}
|
247 |
-
|
248 |
-
.fs-connect-logo
|
249 |
-
{
|
250 |
-
position: absolute;
|
251 |
-
right: 20px;
|
252 |
-
top: $icons_top;
|
253 |
-
}
|
254 |
-
|
255 |
-
.fs-plugin-icon
|
256 |
-
{
|
257 |
-
position: absolute;
|
258 |
-
top: $icons_top;
|
259 |
-
left: 50%;
|
260 |
-
margin-left: - ($icon_size / 2);
|
261 |
-
}
|
262 |
-
|
263 |
-
.fs-plugin-icon,
|
264 |
-
.fs-site-icon,
|
265 |
-
img,
|
266 |
-
object
|
267 |
-
{
|
268 |
-
width: $icon_size;
|
269 |
-
height: $icon_size;
|
270 |
-
}
|
271 |
-
|
272 |
-
.dashicons-wordpress
|
273 |
-
{
|
274 |
-
font-size: $icon_size - ($wp_logo_padding * 2);
|
275 |
-
background: $wordpress_color;
|
276 |
-
color: #fff;
|
277 |
-
width: $icon_size - ($wp_logo_padding * 2);
|
278 |
-
height: $icon_size - ($wp_logo_padding * 2);
|
279 |
-
padding: $wp_logo_padding;
|
280 |
-
}
|
281 |
-
|
282 |
-
.dashicons-plus
|
283 |
-
{
|
284 |
-
position: absolute;
|
285 |
-
top: 50%;
|
286 |
-
font-size: 30px;
|
287 |
-
margin-top: -10px;
|
288 |
-
color: #bbb;
|
289 |
-
|
290 |
-
&.fs-first
|
291 |
-
{
|
292 |
-
left: 28%;
|
293 |
-
}
|
294 |
-
&.fs-second
|
295 |
-
{
|
296 |
-
left: 65%;
|
297 |
-
}
|
298 |
-
}
|
299 |
-
|
300 |
-
.fs-plugin-icon,
|
301 |
-
.fs-connect-logo,
|
302 |
-
.fs-site-icon
|
303 |
-
{
|
304 |
-
border: 1px solid #ccc;
|
305 |
-
padding: 1px;
|
306 |
-
background: #fff;
|
307 |
-
}
|
308 |
-
}
|
309 |
-
|
310 |
-
.fs-terms
|
311 |
-
{
|
312 |
-
text-align: center;
|
313 |
-
font-size: 0.85em;
|
314 |
-
padding: 5px;
|
315 |
-
background: rgba(0, 0, 0, 0.05);
|
316 |
-
|
317 |
-
&, a
|
318 |
-
{
|
319 |
-
color: #999;
|
320 |
-
}
|
321 |
-
|
322 |
-
a
|
323 |
-
{
|
324 |
-
text-decoration: none;
|
325 |
-
}
|
326 |
-
}
|
327 |
-
}
|
328 |
-
|
329 |
-
.rtl
|
330 |
-
{
|
331 |
-
#fs_connect
|
332 |
-
{
|
333 |
-
.fs-actions
|
334 |
-
{
|
335 |
-
padding: 10px 20px;
|
336 |
-
background: #C0C7CA;
|
337 |
-
|
338 |
-
.button
|
339 |
-
{
|
340 |
-
.dashicons
|
341 |
-
{
|
342 |
-
font-size: 37px;
|
343 |
-
margin-left: -8px;
|
344 |
-
margin-right: 12px;
|
345 |
-
}
|
346 |
-
|
347 |
-
&.button-primary
|
348 |
-
{
|
349 |
-
&:after
|
350 |
-
{
|
351 |
-
content: ' \000bb';
|
352 |
-
}
|
353 |
-
|
354 |
-
&.fs-loading
|
355 |
-
{
|
356 |
-
&:after
|
357 |
-
{
|
358 |
-
content: '';
|
359 |
-
}
|
360 |
-
}
|
361 |
-
}
|
362 |
-
|
363 |
-
&.button-secondary
|
364 |
-
{
|
365 |
-
float: left;
|
366 |
-
}
|
367 |
-
}
|
368 |
-
}
|
369 |
-
|
370 |
-
.fs-permissions
|
371 |
-
{
|
372 |
-
ul
|
373 |
-
{
|
374 |
-
li
|
375 |
-
{
|
376 |
-
div
|
377 |
-
{
|
378 |
-
margin-right: 55px;
|
379 |
-
margin-left: 0;
|
380 |
-
}
|
381 |
-
|
382 |
-
i.dashicons
|
383 |
-
{
|
384 |
-
float: right;
|
385 |
-
}
|
386 |
-
|
387 |
-
}
|
388 |
-
}
|
389 |
-
}
|
390 |
-
|
391 |
-
.fs-visual
|
392 |
-
{
|
393 |
-
.fs-site-icon
|
394 |
-
{
|
395 |
-
right: 20px;
|
396 |
-
left: auto;
|
397 |
-
}
|
398 |
-
|
399 |
-
.fs-connect-logo
|
400 |
-
{
|
401 |
-
right: auto;
|
402 |
-
left: 20px;
|
403 |
-
}
|
404 |
-
}
|
405 |
-
}
|
406 |
-
}
|
407 |
-
|
408 |
-
.wp-pointer-content
|
409 |
-
{
|
410 |
-
#fs_connect
|
411 |
-
{
|
412 |
-
margin: 0;
|
413 |
-
@include box-shadow(none);
|
414 |
-
}
|
415 |
-
}
|
416 |
-
|
417 |
-
.fs-opt-in-pointer
|
418 |
-
{
|
419 |
-
.wp-pointer-content
|
420 |
-
{
|
421 |
-
padding: 0;
|
422 |
-
}
|
423 |
-
|
424 |
-
&.wp-pointer-top
|
425 |
-
{
|
426 |
-
.wp-pointer-arrow
|
427 |
-
{
|
428 |
-
border-bottom-color: #dfdfdf;
|
429 |
-
}
|
430 |
-
.wp-pointer-arrow-inner
|
431 |
-
{
|
432 |
-
border-bottom-color: #fafafa;
|
433 |
-
}
|
434 |
-
}
|
435 |
-
|
436 |
-
&.wp-pointer-bottom
|
437 |
-
{
|
438 |
-
.wp-pointer-arrow
|
439 |
-
{
|
440 |
-
border-top-color: #dfdfdf;
|
441 |
-
}
|
442 |
-
.wp-pointer-arrow-inner
|
443 |
-
{
|
444 |
-
border-top-color: #fafafa;
|
445 |
-
}
|
446 |
-
}
|
447 |
-
|
448 |
-
&.wp-pointer-left
|
449 |
-
{
|
450 |
-
.wp-pointer-arrow
|
451 |
-
{
|
452 |
-
border-right-color: #dfdfdf;
|
453 |
-
}
|
454 |
-
.wp-pointer-arrow-inner
|
455 |
-
{
|
456 |
-
border-right-color: #fafafa;
|
457 |
-
}
|
458 |
-
}
|
459 |
-
|
460 |
-
&.wp-pointer-right
|
461 |
-
{
|
462 |
-
.wp-pointer-arrow
|
463 |
-
{
|
464 |
-
border-left-color: #dfdfdf;
|
465 |
-
}
|
466 |
-
.wp-pointer-arrow-inner
|
467 |
-
{
|
468 |
-
border-left-color: #fafafa;
|
469 |
-
}
|
470 |
-
}
|
471 |
-
}
|
1 |
+
@import "../start";
|
2 |
+
|
3 |
+
$form_width: 480px;
|
4 |
+
|
5 |
+
#fs_connect
|
6 |
+
{
|
7 |
+
width: $form_width;
|
8 |
+
@include box-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));
|
9 |
+
margin: 20px 0;
|
10 |
+
|
11 |
+
@media screen and (max-width: ($form_width - 1)) {
|
12 |
+
@include box-shadow(none);
|
13 |
+
width: auto;
|
14 |
+
margin: 0 0 0 -10px;
|
15 |
+
}
|
16 |
+
|
17 |
+
.fs-content
|
18 |
+
{
|
19 |
+
background: #fff;
|
20 |
+
padding: 15px 20px;
|
21 |
+
|
22 |
+
.fs-error {
|
23 |
+
background: snow;
|
24 |
+
color: $fs-logo-magenta-color;
|
25 |
+
border: 1px solid $fs-logo-magenta-color;
|
26 |
+
@include box-shadow(0 1px 1px 0 rgba(0,0,0,.1));
|
27 |
+
text-align: center;
|
28 |
+
padding: 5px;
|
29 |
+
margin-bottom: 10px;
|
30 |
+
}
|
31 |
+
|
32 |
+
p
|
33 |
+
{
|
34 |
+
margin: 0;
|
35 |
+
padding: 0;
|
36 |
+
font-size: 1.2em;
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
.fs-license-key-container {
|
41 |
+
position: relative;
|
42 |
+
width: 280px;
|
43 |
+
margin: 10px auto 0 auto;
|
44 |
+
|
45 |
+
input {
|
46 |
+
width: 100%;
|
47 |
+
}
|
48 |
+
|
49 |
+
.dashicons {
|
50 |
+
position: absolute;
|
51 |
+
top: 5px;
|
52 |
+
right: 5px;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
.fs-actions
|
57 |
+
{
|
58 |
+
padding: 10px 20px;
|
59 |
+
background: #C0C7CA;
|
60 |
+
|
61 |
+
.button
|
62 |
+
{
|
63 |
+
padding: 0 10px 1px;
|
64 |
+
line-height: 35px;
|
65 |
+
height: 37px;
|
66 |
+
font-size: 16px;
|
67 |
+
margin-bottom: 0;
|
68 |
+
|
69 |
+
.dashicons
|
70 |
+
{
|
71 |
+
font-size: 37px;
|
72 |
+
margin-left: -8px;
|
73 |
+
margin-right: 12px;
|
74 |
+
}
|
75 |
+
|
76 |
+
&.button-primary
|
77 |
+
{
|
78 |
+
padding-right: 15px;
|
79 |
+
padding-left: 15px;
|
80 |
+
|
81 |
+
&:after
|
82 |
+
{
|
83 |
+
content: ' \279C';
|
84 |
+
}
|
85 |
+
|
86 |
+
&.fs-loading
|
87 |
+
{
|
88 |
+
&:after
|
89 |
+
{
|
90 |
+
content: '';
|
91 |
+
}
|
92 |
+
}
|
93 |
+
}
|
94 |
+
|
95 |
+
&.button-secondary
|
96 |
+
{
|
97 |
+
float: right;
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
// .fs-skip
|
102 |
+
// {
|
103 |
+
// line-height: 38px;
|
104 |
+
// vertical-align: middle;
|
105 |
+
// text-decoration: none;
|
106 |
+
// margin-left: 10px;
|
107 |
+
// }
|
108 |
+
}
|
109 |
+
|
110 |
+
&.fs-anonymous-disabled
|
111 |
+
{
|
112 |
+
.fs-actions
|
113 |
+
{
|
114 |
+
.button.button-primary
|
115 |
+
{
|
116 |
+
width: 100%;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
.fs-permissions
|
122 |
+
{
|
123 |
+
padding: 10px 20px;
|
124 |
+
background: #FEFEFE;
|
125 |
+
// background: #F1F1F1;
|
126 |
+
@include transition(background 0.5s ease);
|
127 |
+
|
128 |
+
.fs-license-sync-disclaimer {
|
129 |
+
text-align: center;
|
130 |
+
margin-top: 0;
|
131 |
+
}
|
132 |
+
|
133 |
+
.fs-trigger
|
134 |
+
{
|
135 |
+
font-size: 0.9em;
|
136 |
+
text-decoration: none;
|
137 |
+
text-align: center;
|
138 |
+
display: block;
|
139 |
+
}
|
140 |
+
|
141 |
+
ul
|
142 |
+
{
|
143 |
+
height: 0;
|
144 |
+
overflow: hidden;
|
145 |
+
margin: 0;
|
146 |
+
|
147 |
+
li
|
148 |
+
{
|
149 |
+
margin-bottom: 12px;
|
150 |
+
|
151 |
+
&:last-child
|
152 |
+
{
|
153 |
+
margin-bottom: 0;
|
154 |
+
}
|
155 |
+
|
156 |
+
i.dashicons
|
157 |
+
{
|
158 |
+
float: left;
|
159 |
+
font-size: 40px;
|
160 |
+
width: 40px;
|
161 |
+
height: 40px;
|
162 |
+
}
|
163 |
+
|
164 |
+
div
|
165 |
+
{
|
166 |
+
margin-left: 55px;
|
167 |
+
|
168 |
+
span
|
169 |
+
{
|
170 |
+
font-weight: bold;
|
171 |
+
text-transform: uppercase;
|
172 |
+
color: #23282d;
|
173 |
+
}
|
174 |
+
|
175 |
+
p
|
176 |
+
{
|
177 |
+
margin: 2px 0 0 0;
|
178 |
+
}
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
&.fs-open
|
184 |
+
{
|
185 |
+
background: #fff;
|
186 |
+
|
187 |
+
ul
|
188 |
+
{
|
189 |
+
height: auto;
|
190 |
+
margin: 20px 20px 10px 20px;
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
@media screen and (max-width: ($form_width - 1)) {
|
195 |
+
background: #fff;
|
196 |
+
|
197 |
+
.fs-trigger
|
198 |
+
{
|
199 |
+
display: none;
|
200 |
+
}
|
201 |
+
|
202 |
+
ul
|
203 |
+
{
|
204 |
+
height: auto;
|
205 |
+
margin: 20px;
|
206 |
+
}
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
.fs-freemium-licensing {
|
211 |
+
padding: 8px;
|
212 |
+
// background: #0085BA;
|
213 |
+
background: #777;
|
214 |
+
color: #fff;
|
215 |
+
|
216 |
+
p {
|
217 |
+
text-align: center;
|
218 |
+
display: block;
|
219 |
+
margin: 0;
|
220 |
+
padding: 0;
|
221 |
+
}
|
222 |
+
|
223 |
+
a {
|
224 |
+
color: #C2EEFF;
|
225 |
+
text-decoration: underline;
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
$icon_size: 80px;
|
230 |
+
$wp_logo_padding: $icon_size / 10;
|
231 |
+
$icons_top: 10px;
|
232 |
+
|
233 |
+
.fs-visual
|
234 |
+
{
|
235 |
+
padding: 12px;
|
236 |
+
line-height: 0;
|
237 |
+
background: #fafafa;
|
238 |
+
height: $icon_size;
|
239 |
+
position: relative;
|
240 |
+
|
241 |
+
.fs-site-icon
|
242 |
+
{
|
243 |
+
position: absolute;
|
244 |
+
left: 20px;
|
245 |
+
top: $icons_top;
|
246 |
+
}
|
247 |
+
|
248 |
+
.fs-connect-logo
|
249 |
+
{
|
250 |
+
position: absolute;
|
251 |
+
right: 20px;
|
252 |
+
top: $icons_top;
|
253 |
+
}
|
254 |
+
|
255 |
+
.fs-plugin-icon
|
256 |
+
{
|
257 |
+
position: absolute;
|
258 |
+
top: $icons_top;
|
259 |
+
left: 50%;
|
260 |
+
margin-left: - ($icon_size / 2);
|
261 |
+
}
|
262 |
+
|
263 |
+
.fs-plugin-icon,
|
264 |
+
.fs-site-icon,
|
265 |
+
img,
|
266 |
+
object
|
267 |
+
{
|
268 |
+
width: $icon_size;
|
269 |
+
height: $icon_size;
|
270 |
+
}
|
271 |
+
|
272 |
+
.dashicons-wordpress
|
273 |
+
{
|
274 |
+
font-size: $icon_size - ($wp_logo_padding * 2);
|
275 |
+
background: $wordpress_color;
|
276 |
+
color: #fff;
|
277 |
+
width: $icon_size - ($wp_logo_padding * 2);
|
278 |
+
height: $icon_size - ($wp_logo_padding * 2);
|
279 |
+
padding: $wp_logo_padding;
|
280 |
+
}
|
281 |
+
|
282 |
+
.dashicons-plus
|
283 |
+
{
|
284 |
+
position: absolute;
|
285 |
+
top: 50%;
|
286 |
+
font-size: 30px;
|
287 |
+
margin-top: -10px;
|
288 |
+
color: #bbb;
|
289 |
+
|
290 |
+
&.fs-first
|
291 |
+
{
|
292 |
+
left: 28%;
|
293 |
+
}
|
294 |
+
&.fs-second
|
295 |
+
{
|
296 |
+
left: 65%;
|
297 |
+
}
|
298 |
+
}
|
299 |
+
|
300 |
+
.fs-plugin-icon,
|
301 |
+
.fs-connect-logo,
|
302 |
+
.fs-site-icon
|
303 |
+
{
|
304 |
+
border: 1px solid #ccc;
|
305 |
+
padding: 1px;
|
306 |
+
background: #fff;
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
.fs-terms
|
311 |
+
{
|
312 |
+
text-align: center;
|
313 |
+
font-size: 0.85em;
|
314 |
+
padding: 5px;
|
315 |
+
background: rgba(0, 0, 0, 0.05);
|
316 |
+
|
317 |
+
&, a
|
318 |
+
{
|
319 |
+
color: #999;
|
320 |
+
}
|
321 |
+
|
322 |
+
a
|
323 |
+
{
|
324 |
+
text-decoration: none;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
.rtl
|
330 |
+
{
|
331 |
+
#fs_connect
|
332 |
+
{
|
333 |
+
.fs-actions
|
334 |
+
{
|
335 |
+
padding: 10px 20px;
|
336 |
+
background: #C0C7CA;
|
337 |
+
|
338 |
+
.button
|
339 |
+
{
|
340 |
+
.dashicons
|
341 |
+
{
|
342 |
+
font-size: 37px;
|
343 |
+
margin-left: -8px;
|
344 |
+
margin-right: 12px;
|
345 |
+
}
|
346 |
+
|
347 |
+
&.button-primary
|
348 |
+
{
|
349 |
+
&:after
|
350 |
+
{
|
351 |
+
content: ' \000bb';
|
352 |
+
}
|
353 |
+
|
354 |
+
&.fs-loading
|
355 |
+
{
|
356 |
+
&:after
|
357 |
+
{
|
358 |
+
content: '';
|
359 |
+
}
|
360 |
+
}
|
361 |
+
}
|
362 |
+
|
363 |
+
&.button-secondary
|
364 |
+
{
|
365 |
+
float: left;
|
366 |
+
}
|
367 |
+
}
|
368 |
+
}
|
369 |
+
|
370 |
+
.fs-permissions
|
371 |
+
{
|
372 |
+
ul
|
373 |
+
{
|
374 |
+
li
|
375 |
+
{
|
376 |
+
div
|
377 |
+
{
|
378 |
+
margin-right: 55px;
|
379 |
+
margin-left: 0;
|
380 |
+
}
|
381 |
+
|
382 |
+
i.dashicons
|
383 |
+
{
|
384 |
+
float: right;
|
385 |
+
}
|
386 |
+
|
387 |
+
}
|
388 |
+
}
|
389 |
+
}
|
390 |
+
|
391 |
+
.fs-visual
|
392 |
+
{
|
393 |
+
.fs-site-icon
|
394 |
+
{
|
395 |
+
right: 20px;
|
396 |
+
left: auto;
|
397 |
+
}
|
398 |
+
|
399 |
+
.fs-connect-logo
|
400 |
+
{
|
401 |
+
right: auto;
|
402 |
+
left: 20px;
|
403 |
+
}
|
404 |
+
}
|
405 |
+
}
|
406 |
+
}
|
407 |
+
|
408 |
+
.wp-pointer-content
|
409 |
+
{
|
410 |
+
#fs_connect
|
411 |
+
{
|
412 |
+
margin: 0;
|
413 |
+
@include box-shadow(none);
|
414 |
+
}
|
415 |
+
}
|
416 |
+
|
417 |
+
.fs-opt-in-pointer
|
418 |
+
{
|
419 |
+
.wp-pointer-content
|
420 |
+
{
|
421 |
+
padding: 0;
|
422 |
+
}
|
423 |
+
|
424 |
+
&.wp-pointer-top
|
425 |
+
{
|
426 |
+
.wp-pointer-arrow
|
427 |
+
{
|
428 |
+
border-bottom-color: #dfdfdf;
|
429 |
+
}
|
430 |
+
.wp-pointer-arrow-inner
|
431 |
+
{
|
432 |
+
border-bottom-color: #fafafa;
|
433 |
+
}
|
434 |
+
}
|
435 |
+
|
436 |
+
&.wp-pointer-bottom
|
437 |
+
{
|
438 |
+
.wp-pointer-arrow
|
439 |
+
{
|
440 |
+
border-top-color: #dfdfdf;
|
441 |
+
}
|
442 |
+
.wp-pointer-arrow-inner
|
443 |
+
{
|
444 |
+
border-top-color: #fafafa;
|
445 |
+
}
|
446 |
+
}
|
447 |
+
|
448 |
+
&.wp-pointer-left
|
449 |
+
{
|
450 |
+
.wp-pointer-arrow
|
451 |
+
{
|
452 |
+
border-right-color: #dfdfdf;
|
453 |
+
}
|
454 |
+
.wp-pointer-arrow-inner
|
455 |
+
{
|
456 |
+
border-right-color: #fafafa;
|
457 |
+
}
|
458 |
+
}
|
459 |
+
|
460 |
+
&.wp-pointer-right
|
461 |
+
{
|
462 |
+
.wp-pointer-arrow
|
463 |
+
{
|
464 |
+
border-left-color: #dfdfdf;
|
465 |
+
}
|
466 |
+
.wp-pointer-arrow-inner
|
467 |
+
{
|
468 |
+
border-left-color: #fafafa;
|
469 |
+
}
|
470 |
+
}
|
471 |
+
}
|
includes/pum-sdk/freemius/assets/scss/admin/debug.scss
CHANGED
@@ -88,4 +88,48 @@
|
|
88 |
font-size: 20px;
|
89 |
line-height: 31px;
|
90 |
margin: 0 5px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
}
|
88 |
font-size: 20px;
|
89 |
line-height: 31px;
|
90 |
margin: 0 5px;
|
91 |
+
}
|
92 |
+
|
93 |
+
#fs_log_book {
|
94 |
+
table {
|
95 |
+
font-family: Consolas,Monaco,monospace;
|
96 |
+
font-size: 12px;
|
97 |
+
|
98 |
+
th {
|
99 |
+
color: #ccc;
|
100 |
+
}
|
101 |
+
|
102 |
+
tr {
|
103 |
+
background: #232525;
|
104 |
+
|
105 |
+
&.alternate {
|
106 |
+
background: #2b2b2b;
|
107 |
+
}
|
108 |
+
|
109 |
+
td {
|
110 |
+
&.fs-col--logger {
|
111 |
+
color: #5a7435;
|
112 |
+
}
|
113 |
+
&.fs-col--type {
|
114 |
+
color: #ffc861;
|
115 |
+
}
|
116 |
+
&.fs-col--function {
|
117 |
+
color: #a7b7b1;
|
118 |
+
font-weight: bold;
|
119 |
+
}
|
120 |
+
&.fs-col--message {
|
121 |
+
&, a
|
122 |
+
{
|
123 |
+
color: #9a73ac !important;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
&.fs-col--file {
|
127 |
+
color: #d07922;
|
128 |
+
}
|
129 |
+
&.fs-col--timestamp {
|
130 |
+
color: #6596be;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
}
|
includes/pum-sdk/freemius/config.php
CHANGED
@@ -140,7 +140,7 @@
|
|
140 |
define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
|
141 |
}
|
142 |
|
143 |
-
|
144 |
#region HTTP
|
145 |
#--------------------------------------------------------------------------------
|
146 |
|
@@ -221,6 +221,24 @@
|
|
221 |
|
222 |
#endregion
|
223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
|
225 |
|
226 |
if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
|
140 |
define( 'WP_FS__TESTING_DOMAIN', 'fswp' );
|
141 |
}
|
142 |
|
143 |
+
#--------------------------------------------------------------------------------
|
144 |
#region HTTP
|
145 |
#--------------------------------------------------------------------------------
|
146 |
|
221 |
|
222 |
#endregion
|
223 |
|
224 |
+
#--------------------------------------------------------------------------------
|
225 |
+
#region Checkout
|
226 |
+
#--------------------------------------------------------------------------------
|
227 |
+
|
228 |
+
if ( ! defined( 'FS_CHECKOUT__ADDRESS_PRODUCTION' ) ) {
|
229 |
+
define( 'FS_CHECKOUT__ADDRESS_PRODUCTION', 'https://checkout.freemius.com' );
|
230 |
+
}
|
231 |
+
|
232 |
+
if ( ! defined( 'FS_CHECKOUT__ADDRESS_LOCALHOST' ) ) {
|
233 |
+
define( 'FS_CHECKOUT__ADDRESS_LOCALHOST', 'http://checkout.freemius:8080' );
|
234 |
+
}
|
235 |
+
|
236 |
+
if ( ! defined( 'FS_CHECKOUT__ADDRESS' ) ) {
|
237 |
+
define( 'FS_CHECKOUT__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? FS_CHECKOUT__ADDRESS_PRODUCTION : FS_CHECKOUT__ADDRESS_LOCALHOST ) );
|
238 |
+
}
|
239 |
+
|
240 |
+
#endregion
|
241 |
+
|
242 |
define( 'WP_FS___OPTION_PREFIX', 'fs' . ( WP_FS__IS_PRODUCTION_MODE ? '' : '_dbg' ) . '_' );
|
243 |
|
244 |
if ( ! defined( 'WP_FS__ACCOUNTS_OPTION_NAME' ) ) {
|
includes/pum-sdk/freemius/gulpfile.js
CHANGED
@@ -14,9 +14,25 @@ gulp.task('default', function () {
|
|
14 |
package: 'freemius',
|
15 |
bugReport: 'https://github.com/Freemius/wordpress-sdk/issues',
|
16 |
lastTranslator: 'Vova Feldman <vova@freemius.com>',
|
17 |
-
team: 'Freemius Team <admin@freemius.com>'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
} ))
|
19 |
-
.pipe(gulp.dest('languages/'));
|
20 |
|
21 |
// Create English PO out of the POT.
|
22 |
gulp.src('languages/freemius.pot')
|
@@ -24,7 +40,7 @@ gulp.task('default', function () {
|
|
24 |
items: function(item) {
|
25 |
// If msgstr is empty, use identity translation
|
26 |
if (!item.msgstr.length) {
|
27 |
-
|
28 |
}
|
29 |
if (!item.msgstr[0]) {
|
30 |
item.msgstr[0] = item.msgid;
|
14 |
package: 'freemius',
|
15 |
bugReport: 'https://github.com/Freemius/wordpress-sdk/issues',
|
16 |
lastTranslator: 'Vova Feldman <vova@freemius.com>',
|
17 |
+
team: 'Freemius Team <admin@freemius.com>',
|
18 |
+
gettextFunctions: [
|
19 |
+
{name: '_fs_text'},
|
20 |
+
{name: '_fs_echo'},
|
21 |
+
{name: '_fs_esc_attr'},
|
22 |
+
{name: '_fs_esc_attr_echo'},
|
23 |
+
{name: '_fs_esc_html'},
|
24 |
+
{name: '_fs_esc_html_echo'},
|
25 |
+
{name: '_fs_x', context: 2},
|
26 |
+
{name: '_fs_ex', context: 2},
|
27 |
+
{name: '_fs_esc_attr_x', context: 2},
|
28 |
+
{name: '_fs_esc_html_x', context: 2},
|
29 |
+
{name: '_fs_n', plural: 2},
|
30 |
+
{name: '_fs_n_noop', plural: 2},
|
31 |
+
{name: '_fs_nx', plural: 2, context: 4},
|
32 |
+
{name: '_fs_nx_noop', plural: 2, context: 3}
|
33 |
+
]
|
34 |
} ))
|
35 |
+
.pipe(gulp.dest('languages/freemius.pot'));
|
36 |
|
37 |
// Create English PO out of the POT.
|
38 |
gulp.src('languages/freemius.pot')
|
40 |
items: function(item) {
|
41 |
// If msgstr is empty, use identity translation
|
42 |
if (!item.msgstr.length) {
|
43 |
+
item.msgstr = [''];
|
44 |
}
|
45 |
if (!item.msgstr[0]) {
|
46 |
item.msgstr[0] = item.msgid;
|
includes/pum-sdk/freemius/includes/class-freemius-abstract.php
CHANGED
@@ -5,6 +5,7 @@
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.7
|
7 |
*/
|
|
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
10 |
}
|
@@ -227,7 +228,7 @@
|
|
227 |
*
|
228 |
* @since 1.0.9
|
229 |
*
|
230 |
-
* @param string $plan Plan name
|
231 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
232 |
*
|
233 |
* @return bool
|
@@ -243,7 +244,7 @@
|
|
243 |
*
|
244 |
* @since 1.0.9
|
245 |
*
|
246 |
-
* @param string $plan Plan name
|
247 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
248 |
*
|
249 |
* @return bool
|
@@ -335,7 +336,7 @@
|
|
335 |
/**
|
336 |
* @since 1.0.2
|
337 |
*
|
338 |
-
* @param string $plan Plan name
|
339 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
340 |
*
|
341 |
* @return bool
|
@@ -347,7 +348,7 @@
|
|
347 |
*
|
348 |
* @since 1.0.9
|
349 |
*
|
350 |
-
* @param string $plan Plan name
|
351 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
352 |
*
|
353 |
* @return bool
|
@@ -359,7 +360,7 @@
|
|
359 |
*
|
360 |
* @since 1.0.9
|
361 |
*
|
362 |
-
* @param string $plan Plan name
|
363 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
364 |
*
|
365 |
* @return bool
|
@@ -403,6 +404,31 @@
|
|
403 |
*/
|
404 |
abstract function is_only_premium();
|
405 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
406 |
/**
|
407 |
* Checks if it's a freemium plugin.
|
408 |
*
|
@@ -451,7 +477,7 @@
|
|
451 |
* @author Vova Feldman (@svovaf)
|
452 |
* @since 1.0.2
|
453 |
*
|
454 |
-
* @param string $period Billing cycle
|
455 |
*
|
456 |
* @return string
|
457 |
*/
|
@@ -524,4 +550,4 @@
|
|
524 |
abstract function is_business();
|
525 |
|
526 |
#endregion
|
527 |
-
}
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.7
|
7 |
*/
|
8 |
+
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
11 |
}
|
228 |
*
|
229 |
* @since 1.0.9
|
230 |
*
|
231 |
+
* @param string $plan Plan name.
|
232 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
233 |
*
|
234 |
* @return bool
|
244 |
*
|
245 |
* @since 1.0.9
|
246 |
*
|
247 |
+
* @param string $plan Plan name.
|
248 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
249 |
*
|
250 |
* @return bool
|
336 |
/**
|
337 |
* @since 1.0.2
|
338 |
*
|
339 |
+
* @param string $plan Plan name.
|
340 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
341 |
*
|
342 |
* @return bool
|
348 |
*
|
349 |
* @since 1.0.9
|
350 |
*
|
351 |
+
* @param string $plan Plan name.
|
352 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
353 |
*
|
354 |
* @return bool
|
360 |
*
|
361 |
* @since 1.0.9
|
362 |
*
|
363 |
+
* @param string $plan Plan name.
|
364 |
* @param bool $exact If true, looks for exact plan. If false, also check "higher" plans.
|
365 |
*
|
366 |
* @return bool
|
404 |
*/
|
405 |
abstract function is_only_premium();
|
406 |
|
407 |
+
/**
|
408 |
+
* Check if module has a premium code version.
|
409 |
+
*
|
410 |
+
* Serviceware module might be freemium without any
|
411 |
+
* premium code version, where the paid features
|
412 |
+
* are all part of the service.
|
413 |
+
*
|
414 |
+
* @author Vova Feldman (@svovaf)
|
415 |
+
* @since 1.2.1.6
|
416 |
+
*
|
417 |
+
* @return bool
|
418 |
+
*/
|
419 |
+
abstract function has_premium_version();
|
420 |
+
|
421 |
+
/**
|
422 |
+
* Check if module has any release on Freemius,
|
423 |
+
* or all plugin's code is on WordPress.org (Serviceware).
|
424 |
+
*
|
425 |
+
* @return bool
|
426 |
+
*/
|
427 |
+
function has_release_on_freemius() {
|
428 |
+
return ! $this->is_org_repo_compliant() ||
|
429 |
+
$this->has_premium_version();
|
430 |
+
}
|
431 |
+
|
432 |
/**
|
433 |
* Checks if it's a freemium plugin.
|
434 |
*
|
477 |
* @author Vova Feldman (@svovaf)
|
478 |
* @since 1.0.2
|
479 |
*
|
480 |
+
* @param string $period Billing cycle.
|
481 |
*
|
482 |
* @return string
|
483 |
*/
|
550 |
abstract function is_business();
|
551 |
|
552 |
#endregion
|
553 |
+
}
|
includes/pum-sdk/freemius/includes/class-freemius.php
CHANGED
@@ -108,6 +108,18 @@
|
|
108 |
*/
|
109 |
private $_is_premium_only;
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
/**
|
112 |
* @since 1.0.8
|
113 |
* @var bool Hints the SDK if the plugin has any paid plans.
|
@@ -498,7 +510,7 @@
|
|
498 |
}
|
499 |
}
|
500 |
|
501 |
-
if ( !
|
502 |
if ( ! $this->is_addon() ) {
|
503 |
add_action( 'init', array( &$this, '_add_default_submenu_items' ), WP_FS__LOWEST_PRIORITY );
|
504 |
add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
|
@@ -579,24 +591,28 @@
|
|
579 |
* @since 1.0.9
|
580 |
*/
|
581 |
private function _register_account_hooks() {
|
582 |
-
if ( is_admin() ) {
|
583 |
-
|
584 |
-
|
585 |
-
if ( ! $this->is_paying_or_trial() || $this->is_premium() ) {
|
586 |
-
$this->add_ajax_action(
|
587 |
-
'submit_uninstall_reason',
|
588 |
-
array( &$this, '_submit_uninstall_reason_action' )
|
589 |
-
);
|
590 |
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
595 |
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
|
|
|
|
|
|
600 |
}
|
601 |
}
|
602 |
}
|
@@ -1201,6 +1217,8 @@
|
|
1201 |
|
1202 |
add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
|
1203 |
|
|
|
|
|
1204 |
add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
|
1205 |
|
1206 |
self::$_statics_loaded = true;
|
@@ -1251,6 +1269,8 @@
|
|
1251 |
|
1252 |
$title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
|
1253 |
|
|
|
|
|
1254 |
if ( WP_FS__DEV_MODE ) {
|
1255 |
// Add top-level debug menu item.
|
1256 |
$hook = add_menu_page(
|
@@ -1261,18 +1281,22 @@
|
|
1261 |
array( 'Freemius', '_debug_page_render' )
|
1262 |
);
|
1263 |
} else {
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
|
|
|
|
1273 |
}
|
1274 |
|
1275 |
-
|
|
|
|
|
1276 |
}
|
1277 |
|
1278 |
/**
|
@@ -1280,13 +1304,30 @@
|
|
1280 |
* @since 1.1.7.3
|
1281 |
*/
|
1282 |
static function _toggle_debug_mode() {
|
1283 |
-
if ( in_array( $_POST['is_on'], array( 0, 1 ) ) ) {
|
1284 |
update_option( 'fs_debug_mode', $_POST['is_on'] );
|
|
|
|
|
|
|
1285 |
}
|
1286 |
|
1287 |
exit;
|
1288 |
}
|
1289 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1290 |
/**
|
1291 |
* @author Vova Feldman (@svovaf)
|
1292 |
* @since 1.0.8
|
@@ -1313,6 +1354,18 @@
|
|
1313 |
$fs->_storage->install_timestamp = ( time() - WP_FS__TIME_24_HOURS_IN_SEC );
|
1314 |
// Unset the trial shown timestamp.
|
1315 |
unset( $fs->_storage->trial_promotion_shown );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1316 |
}
|
1317 |
}
|
1318 |
|
@@ -1340,7 +1393,7 @@
|
|
1340 |
'licenses' => $licenses,
|
1341 |
);
|
1342 |
|
1343 |
-
fs_enqueue_local_style( '
|
1344 |
fs_require_once_template( 'debug.php', $vars );
|
1345 |
}
|
1346 |
|
@@ -1456,7 +1509,7 @@
|
|
1456 |
'version' => $version,
|
1457 |
'sdk' => $this->version,
|
1458 |
'is_admin' => json_encode( is_admin() ),
|
1459 |
-
'is_ajax' => json_encode(
|
1460 |
'is_cron' => json_encode( $this->is_cron() ),
|
1461 |
'is_http' => json_encode( WP_FS__IS_HTTP_REQUEST ),
|
1462 |
)
|
@@ -1638,7 +1691,7 @@
|
|
1638 |
}
|
1639 |
|
1640 |
if ( ! function_exists( 'wp_nonce_url' ) ) {
|
1641 |
-
require_once
|
1642 |
}
|
1643 |
|
1644 |
$current_user = self::_get_current_wp_user();
|
@@ -1864,35 +1917,18 @@
|
|
1864 |
|
1865 |
$custom_email_sections = array();
|
1866 |
|
1867 |
-
if ( 'squid' === $error_type ) {
|
1868 |
-
// Override the 'Site' email section.
|
1869 |
-
$custom_email_sections['site'] = array(
|
1870 |
-
'rows' => array(
|
1871 |
-
'hosting_company' => array( 'Hosting Company', fs_request_get( 'hosting_company' ) )
|
1872 |
-
)
|
1873 |
-
);
|
1874 |
-
}
|
1875 |
-
|
1876 |
// Add 'API Error' custom email section.
|
1877 |
$custom_email_sections['api_error'] = array(
|
1878 |
-
'title' =>
|
1879 |
'rows' => array(
|
1880 |
-
'ping' => array(
|
1881 |
-
|
1882 |
-
|
1883 |
-
|
1884 |
-
// Add PHP info for deeper investigation.
|
1885 |
-
ob_start();
|
1886 |
-
phpinfo();
|
1887 |
-
$php_info = ob_get_clean();
|
1888 |
-
$custom_email_sections['php_info'] = array(
|
1889 |
-
'title' => 'PHP Info',
|
1890 |
-
'rows' => array(
|
1891 |
-
'info' => array( $php_info )
|
1892 |
)
|
1893 |
);
|
1894 |
|
1895 |
-
// Send email with technical details to resolve
|
1896 |
$this->send_email(
|
1897 |
'api@freemius.com', // recipient
|
1898 |
$title . ' [' . $this->get_plugin_name() . ']', // subject
|
@@ -2004,7 +2040,7 @@
|
|
2004 |
$message = fs_get_template( 'email.php', $vars );
|
2005 |
|
2006 |
// Set the type of email to HTML.
|
2007 |
-
$headers[] = 'Content-type: text/html';
|
2008 |
|
2009 |
$header_string = implode( "\r\n", $headers );
|
2010 |
|
@@ -2046,38 +2082,57 @@
|
|
2046 |
|
2047 |
$server_ip = WP_FS__REMOTE_ADDR;
|
2048 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2049 |
// Generate the default email sections.
|
2050 |
$sections = array(
|
2051 |
-
'sdk'
|
2052 |
'title' => 'SDK',
|
2053 |
'rows' => array(
|
2054 |
'fs_version' => array( 'FS Version', $this->version ),
|
2055 |
'curl_version' => array( 'cURL Version', $curl_version_information['version'] )
|
2056 |
)
|
2057 |
),
|
2058 |
-
'plugin'
|
2059 |
'title' => 'Plugin',
|
2060 |
'rows' => array(
|
2061 |
'name' => array( 'Name', $this->get_plugin_name() ),
|
2062 |
'version' => array( 'Version', $this->get_plugin_version() )
|
2063 |
)
|
2064 |
),
|
2065 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2066 |
'title' => 'Site',
|
2067 |
'rows' => array(
|
2068 |
-
'unique_id' => array( '
|
2069 |
'address' => array( 'Address', site_url() ),
|
2070 |
'host' => array(
|
2071 |
'HTTP_HOST',
|
2072 |
( ! empty( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '' )
|
2073 |
),
|
|
|
|
|
|
|
|
|
|
|
2074 |
'server_addr' => array(
|
2075 |
'SERVER_ADDR',
|
2076 |
'<a href="http://www.projecthoneypot.org/ip_' . $server_ip . '">' . $server_ip . '</a>'
|
2077 |
)
|
2078 |
)
|
2079 |
),
|
2080 |
-
'user'
|
2081 |
'title' => 'User',
|
2082 |
'rows' => array(
|
2083 |
'email' => array( 'Email', $current_user->user_email ),
|
@@ -2085,12 +2140,18 @@
|
|
2085 |
'last' => array( 'Last', $current_user->user_lastname )
|
2086 |
)
|
2087 |
),
|
2088 |
-
'plugins'
|
2089 |
'title' => 'Plugins',
|
2090 |
'rows' => array(
|
2091 |
'active_plugins' => array( 'Active Plugins', $active_plugin_string )
|
2092 |
)
|
2093 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
2094 |
);
|
2095 |
|
2096 |
// Allow the sections to be modified by other code.
|
@@ -2290,10 +2351,6 @@
|
|
2290 |
}
|
2291 |
}
|
2292 |
|
2293 |
-
if ( $this->is_premium() ) {
|
2294 |
-
new FS_Plugin_Updater( $this );
|
2295 |
-
}
|
2296 |
-
|
2297 |
// if ( $this->is_registered() ||
|
2298 |
// $this->is_anonymous() ||
|
2299 |
// $this->is_pending_activation()
|
@@ -2302,6 +2359,21 @@
|
|
2302 |
// }
|
2303 |
}
|
2304 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2305 |
$this->do_action( 'initiated' );
|
2306 |
|
2307 |
if ( $this->_storage->prev_is_premium !== $this->_plugin->is_premium ) {
|
@@ -2350,12 +2422,12 @@
|
|
2350 |
$result = $this->stop_tracking();
|
2351 |
|
2352 |
if ( true === $result ) {
|
2353 |
-
|
2354 |
}
|
2355 |
|
2356 |
$this->_logger->api_error( $result );
|
2357 |
|
2358 |
-
|
2359 |
__fs( 'unexpected-api-error', $this->_slug ) .
|
2360 |
( $this->is_api_error( $result ) && isset( $result->error ) ?
|
2361 |
$result->error->message :
|
@@ -2371,12 +2443,12 @@
|
|
2371 |
$result = $this->allow_tracking();
|
2372 |
|
2373 |
if ( true === $result ) {
|
2374 |
-
|
2375 |
}
|
2376 |
|
2377 |
$this->_logger->api_error( $result );
|
2378 |
|
2379 |
-
|
2380 |
__fs( 'unexpected-api-error', $this->_slug ) .
|
2381 |
( $this->is_api_error( $result ) && isset( $result->error ) ?
|
2382 |
$result->error->message :
|
@@ -2581,10 +2653,12 @@
|
|
2581 |
$this->_menu = FS_Admin_Menu_Manager::instance( $this->_slug );
|
2582 |
$this->_menu->init( $plugin_info['menu'], $this->is_addon() );
|
2583 |
|
2584 |
-
$this->_has_addons
|
2585 |
-
$this->_has_paid_plans
|
2586 |
-
$this->
|
2587 |
-
$this->
|
|
|
|
|
2588 |
if ( $this->_is_premium_only ) {
|
2589 |
// If premium only plugin, disable anonymous mode.
|
2590 |
$this->_enable_anonymous = false;
|
@@ -2684,7 +2758,7 @@
|
|
2684 |
return true;
|
2685 |
}
|
2686 |
|
2687 |
-
if (
|
2688 |
! $this->_admin_notices->has_sticky( 'failed_connect_api_first' ) &&
|
2689 |
! $this->_admin_notices->has_sticky( 'failed_connect_api' )
|
2690 |
) {
|
@@ -3157,7 +3231,7 @@
|
|
3157 |
|
3158 |
if ( $this->is_paying() ) {
|
3159 |
// Check for premium plugin updates.
|
3160 |
-
$this->
|
3161 |
}
|
3162 |
} else {
|
3163 |
// Sync install (only if something changed locally).
|
@@ -3748,14 +3822,18 @@
|
|
3748 |
FS_Api::clear_cache();
|
3749 |
|
3750 |
if ( $this->is_registered() ) {
|
3751 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
3752 |
|
3753 |
// Schedule re-activation event and sync.
|
3754 |
// $this->sync_install( array(), true );
|
3755 |
$this->schedule_install_sync();
|
3756 |
|
3757 |
-
$is_premium_version_activation = ( current_filter() !== ( 'activate_' . $this->_free_plugin_basename ) );
|
3758 |
-
|
3759 |
// 1. If running in the activation of the FREE module, get the basename of the PREMIUM.
|
3760 |
// 2. If running in the activation of the PREMIUM module, get the basename of the FREE.
|
3761 |
$other_version_basename = $is_premium_version_activation ?
|
@@ -3772,7 +3850,7 @@
|
|
3772 |
deactivate_plugins( $other_version_basename );
|
3773 |
}
|
3774 |
|
3775 |
-
// If activating the premium module version, add an admin
|
3776 |
if ( $is_premium_version_activation ) {
|
3777 |
$this->_admin_notices->add(
|
3778 |
sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
|
@@ -4535,13 +4613,15 @@
|
|
4535 |
$params['reason_info'] = $uninstall_reason->info;
|
4536 |
}
|
4537 |
|
4538 |
-
if ( ! $this->is_registered()
|
4539 |
// Send anonymous uninstall event only if user submitted a feedback.
|
4540 |
-
if ( isset( $uninstall_reason
|
4541 |
-
$
|
4542 |
-
|
4543 |
-
|
4544 |
-
|
|
|
|
|
4545 |
}
|
4546 |
} else {
|
4547 |
// Send uninstall event.
|
@@ -4617,7 +4697,7 @@
|
|
4617 |
if ( ! function_exists( 'get_plugins' ) ) {
|
4618 |
self::$_static_logger->log( 'Including wp-admin/includes/plugin.php...' );
|
4619 |
|
4620 |
-
require_once
|
4621 |
}
|
4622 |
}
|
4623 |
|
@@ -4629,7 +4709,7 @@
|
|
4629 |
*/
|
4630 |
private static function require_pluggable_essentials() {
|
4631 |
if ( ! function_exists( 'wp_get_current_user' ) ) {
|
4632 |
-
require_once
|
4633 |
}
|
4634 |
}
|
4635 |
|
@@ -5027,7 +5107,7 @@
|
|
5027 |
return false;
|
5028 |
}
|
5029 |
|
5030 |
-
$addons = $this->
|
5031 |
|
5032 |
return ( ! is_array( $addons ) || empty( $addons ) ) ?
|
5033 |
false :
|
@@ -5835,7 +5915,7 @@
|
|
5835 |
|
5836 |
if ( ! current_user_can( 'activate_plugins' ) ) {
|
5837 |
// Only for admins.
|
5838 |
-
|
5839 |
}
|
5840 |
|
5841 |
$billing = fs_request_get( 'billing' );
|
@@ -5846,13 +5926,13 @@
|
|
5846 |
) ) );
|
5847 |
|
5848 |
if ( ! $this->is_api_result_entity( $result ) ) {
|
5849 |
-
|
5850 |
}
|
5851 |
|
5852 |
// Purge cached billing.
|
5853 |
$this->get_api_user_scope()->purge_cache( 'billing.json' );
|
5854 |
|
5855 |
-
|
5856 |
}
|
5857 |
|
5858 |
/**
|
@@ -5866,7 +5946,7 @@
|
|
5866 |
|
5867 |
if ( ! current_user_can( 'activate_plugins' ) ) {
|
5868 |
// Only for admins.
|
5869 |
-
|
5870 |
}
|
5871 |
|
5872 |
$trial_data = fs_request_get( 'trial' );
|
@@ -5881,14 +5961,14 @@
|
|
5881 |
);
|
5882 |
|
5883 |
if ( is_object( $next_page ) && $this->is_api_error( $next_page ) ) {
|
5884 |
-
|
5885 |
isset( $next_page->error ) ?
|
5886 |
$next_page->error->message :
|
5887 |
var_export( $next_page, true )
|
5888 |
);
|
5889 |
}
|
5890 |
|
5891 |
-
|
5892 |
'next_page' => $next_page,
|
5893 |
) );
|
5894 |
}
|
@@ -5912,8 +5992,8 @@
|
|
5912 |
$api = $this->get_api_plugin_scope();
|
5913 |
$result = $api->call( '/licenses/resend.json', 'post',
|
5914 |
array(
|
5915 |
-
'email'
|
5916 |
-
'
|
5917 |
)
|
5918 |
);
|
5919 |
|
@@ -6134,6 +6214,22 @@
|
|
6134 |
return $this->_is_premium_only;
|
6135 |
}
|
6136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6137 |
/**
|
6138 |
* Check if feature supported with current site's plan.
|
6139 |
*
|
@@ -6168,7 +6264,7 @@
|
|
6168 |
*
|
6169 |
* @link http://wordpress.stackexchange.com/questions/70676/how-to-check-if-i-am-in-admin-ajax
|
6170 |
*/
|
6171 |
-
function is_ajax() {
|
6172 |
return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
|
6173 |
}
|
6174 |
|
@@ -6184,7 +6280,7 @@
|
|
6184 |
*/
|
6185 |
function is_ajax_action( $actions ) {
|
6186 |
// Verify it's an ajax call.
|
6187 |
-
if ( !
|
6188 |
return false;
|
6189 |
}
|
6190 |
|
@@ -6211,6 +6307,48 @@
|
|
6211 |
return false;
|
6212 |
}
|
6213 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6214 |
/**
|
6215 |
* @author Vova Feldman (@svovaf)
|
6216 |
* @since 1.1.7
|
@@ -6230,7 +6368,7 @@
|
|
6230 |
* @return bool
|
6231 |
*/
|
6232 |
function is_user_in_admin() {
|
6233 |
-
return is_admin() && !
|
6234 |
}
|
6235 |
|
6236 |
/**
|
@@ -6263,7 +6401,7 @@
|
|
6263 |
}
|
6264 |
}
|
6265 |
|
6266 |
-
if ( ! $this->_menu->is_top_level() ) {
|
6267 |
$parent_slug = $this->_menu->get_parent_slug();
|
6268 |
$menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
|
6269 |
$parent_slug :
|
@@ -6287,8 +6425,18 @@
|
|
6287 |
return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) );
|
6288 |
}
|
6289 |
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6290 |
return add_query_arg( array_merge( $params, array(
|
6291 |
-
'page' => $
|
6292 |
) ), admin_url( 'admin.php', 'admin' ) );
|
6293 |
}
|
6294 |
}
|
@@ -6963,25 +7111,27 @@
|
|
6963 |
}
|
6964 |
}
|
6965 |
|
6966 |
-
if ( $this->is_paying_or_trial()
|
6967 |
-
if ( $this->
|
6968 |
-
$this->
|
6969 |
-
|
6970 |
-
|
6971 |
-
|
6972 |
-
|
6973 |
-
|
6974 |
-
|
6975 |
-
|
6976 |
-
|
6977 |
-
|
6978 |
-
|
6979 |
-
|
6980 |
-
|
6981 |
-
|
6982 |
-
|
6983 |
-
|
6984 |
-
|
|
|
|
|
6985 |
}
|
6986 |
|
6987 |
$this->_admin_notices->remove_sticky( array(
|
@@ -6999,7 +7149,13 @@
|
|
6999 |
$next_page = '';
|
7000 |
|
7001 |
if ( is_numeric( $plugin_id ) ) {
|
7002 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
7003 |
// Add-on was installed - sync license right after install.
|
7004 |
$next_page = $this->_get_sync_license_url( $plugin_id );
|
7005 |
}
|
@@ -7122,10 +7278,21 @@
|
|
7122 |
$license_key = false,
|
7123 |
$is_pending_trial = false
|
7124 |
) {
|
7125 |
-
|
7126 |
-
|
7127 |
-
|
7128 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7129 |
|
7130 |
if ( ! empty( $license_key ) ) {
|
7131 |
$this->_storage->pending_license_key = $license_key;
|
@@ -7397,7 +7564,17 @@
|
|
7397 |
|
7398 |
$hook = false;
|
7399 |
|
7400 |
-
if ( $this->_menu->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7401 |
$hook = $this->_menu->override_menu_item( array( &$this, '_connect_page_render' ) );
|
7402 |
|
7403 |
if ( false === $hook ) {
|
@@ -7880,7 +8057,20 @@
|
|
7880 |
* @return string
|
7881 |
*/
|
7882 |
public function get_action_tag( $tag ) {
|
7883 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7884 |
}
|
7885 |
|
7886 |
/**
|
@@ -7895,6 +8085,19 @@
|
|
7895 |
return 'wp_ajax_' . $this->get_action_tag( $tag );
|
7896 |
}
|
7897 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7898 |
/**
|
7899 |
* Do action, specific for the current context plugin.
|
7900 |
*
|
@@ -7946,22 +8149,61 @@
|
|
7946 |
* @param string $tag
|
7947 |
* @param callable $function_to_add
|
7948 |
* @param int $priority
|
7949 |
-
* @param int $accepted_args
|
7950 |
*
|
7951 |
* @uses add_action()
|
7952 |
*
|
7953 |
* @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
|
7954 |
*/
|
7955 |
-
function add_ajax_action(
|
|
|
|
|
|
|
|
|
7956 |
$this->_logger->entrance( $tag );
|
7957 |
|
7958 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7959 |
return false;
|
7960 |
}
|
7961 |
|
7962 |
-
add_action(
|
|
|
|
|
|
|
|
|
|
|
7963 |
|
7964 |
-
|
7965 |
|
7966 |
return true;
|
7967 |
}
|
@@ -7974,7 +8216,7 @@
|
|
7974 |
*
|
7975 |
* @param mixed $response
|
7976 |
*/
|
7977 |
-
function shoot_ajax_response( $response ) {
|
7978 |
wp_send_json( $response );
|
7979 |
}
|
7980 |
|
@@ -7986,7 +8228,7 @@
|
|
7986 |
*
|
7987 |
* @param mixed $data Data to encode as JSON, then print and exit.
|
7988 |
*/
|
7989 |
-
function shoot_ajax_success( $data = null ) {
|
7990 |
wp_send_json_success( $data );
|
7991 |
}
|
7992 |
|
@@ -7998,7 +8240,7 @@
|
|
7998 |
*
|
7999 |
* @param mixed $error Optional error message.
|
8000 |
*/
|
8001 |
-
function shoot_ajax_failure( $error = '' ) {
|
8002 |
$result = array( 'success' => false );
|
8003 |
if ( ! empty( $error ) ) {
|
8004 |
$result['error'] = $error;
|
@@ -8679,7 +8921,7 @@
|
|
8679 |
$plugin_id = $this->_plugin->id;
|
8680 |
}
|
8681 |
|
8682 |
-
$this->
|
8683 |
$updates = $this->get_all_updates();
|
8684 |
|
8685 |
return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
|
@@ -8829,7 +9071,7 @@
|
|
8829 |
sprintf(
|
8830 |
__fs( 'addon-successfully-upgraded-message', $this->_slug ),
|
8831 |
$addon->title
|
8832 |
-
) . ' ' . $this->
|
8833 |
__fs( 'download-latest-version', $this->_slug ),
|
8834 |
$addon_id
|
8835 |
)
|
@@ -8837,7 +9079,7 @@
|
|
8837 |
sprintf(
|
8838 |
__fs( 'addon-successfully-purchased-message', $this->_slug ),
|
8839 |
$addon->title
|
8840 |
-
) . ' ' . $this->
|
8841 |
__fs( 'download-latest-version', $this->_slug ),
|
8842 |
$addon_id
|
8843 |
),
|
@@ -9026,22 +9268,24 @@
|
|
9026 |
$this->_storage->trial_plan :
|
9027 |
$this->_site->plan;
|
9028 |
|
9029 |
-
$
|
9030 |
-
|
9031 |
-
|
9032 |
-
|
9033 |
-
|
9034 |
-
'
|
9035 |
-
|
9036 |
-
|
9037 |
-
|
9038 |
-
|
9039 |
-
|
|
|
|
|
|
|
9040 |
),
|
9041 |
-
__fs( '
|
9042 |
-
)
|
9043 |
-
|
9044 |
-
);
|
9045 |
}
|
9046 |
break;
|
9047 |
case 'upgraded':
|
@@ -9571,11 +9815,20 @@
|
|
9571 |
$is_premium = self::get_instance_by_id( $addon_id )->_can_download_premium();
|
9572 |
}
|
9573 |
|
9574 |
-
|
9575 |
-
|
9576 |
-
|
9577 |
-
|
9578 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9579 |
}
|
9580 |
|
9581 |
/**
|
@@ -9631,10 +9884,10 @@
|
|
9631 |
* @uses FS_Api
|
9632 |
* @uses wp_redirect()
|
9633 |
*/
|
9634 |
-
private function
|
9635 |
$this->_logger->entrance();
|
9636 |
|
9637 |
-
wp_redirect( $this->
|
9638 |
}
|
9639 |
|
9640 |
/**
|
@@ -9647,7 +9900,7 @@
|
|
9647 |
*
|
9648 |
* @return string
|
9649 |
*/
|
9650 |
-
private function
|
9651 |
$this->_logger->entrance();
|
9652 |
|
9653 |
return $this->get_api_site_scope()->get_signed_url(
|
@@ -9684,7 +9937,7 @@
|
|
9684 |
*
|
9685 |
* @return string
|
9686 |
*/
|
9687 |
-
private function
|
9688 |
return sprintf(
|
9689 |
'<a target="_blank" href="%s">%s</a>',
|
9690 |
$this->_get_latest_download_local_url( $plugin_id ),
|
@@ -9726,7 +9979,7 @@
|
|
9726 |
* @param bool|number $plugin_id
|
9727 |
* @param bool $flush Since 1.1.7.3
|
9728 |
*/
|
9729 |
-
private function
|
9730 |
$this->_logger->entrance();
|
9731 |
|
9732 |
// Check if there's a newer version for download.
|
@@ -9770,7 +10023,7 @@
|
|
9770 |
*
|
9771 |
* @uses FS_Api
|
9772 |
*/
|
9773 |
-
private function
|
9774 |
$this->_logger->entrance();
|
9775 |
|
9776 |
$api = $this->get_api_site_or_plugin_scope();
|
@@ -9814,7 +10067,7 @@
|
|
9814 |
*
|
9815 |
* @return object
|
9816 |
*/
|
9817 |
-
private function
|
9818 |
$this->_logger->entrance();
|
9819 |
|
9820 |
|
@@ -10156,7 +10409,7 @@
|
|
10156 |
|
10157 |
case 'check_updates':
|
10158 |
check_admin_referer( $action );
|
10159 |
-
$this->
|
10160 |
|
10161 |
return;
|
10162 |
|
@@ -10194,7 +10447,7 @@
|
|
10194 |
check_admin_referer( 'update_email' );
|
10195 |
|
10196 |
$new_email = fs_request_get( 'fs_email_' . $this->_slug, '' );
|
10197 |
-
$result = $this->
|
10198 |
|
10199 |
if ( isset( $result->error ) ) {
|
10200 |
switch ( $result->error->code ) {
|
@@ -10268,7 +10521,7 @@
|
|
10268 |
return;
|
10269 |
|
10270 |
case 'download_latest':
|
10271 |
-
$this->
|
10272 |
|
10273 |
return;
|
10274 |
|
@@ -10356,12 +10609,21 @@
|
|
10356 |
function _account_page_render() {
|
10357 |
$this->_logger->entrance();
|
10358 |
|
10359 |
-
$
|
10360 |
if ( 'billing' === fs_request_get( 'tab' ) ) {
|
10361 |
-
|
10362 |
-
} else {
|
10363 |
-
fs_require_once_template( 'account.php', $vars );
|
10364 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10365 |
}
|
10366 |
|
10367 |
/**
|
@@ -10374,7 +10636,15 @@
|
|
10374 |
$this->_logger->entrance();
|
10375 |
|
10376 |
$vars = array( 'slug' => $this->_slug );
|
10377 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10378 |
}
|
10379 |
|
10380 |
/**
|
@@ -10418,7 +10688,15 @@
|
|
10418 |
$this->_logger->entrance();
|
10419 |
|
10420 |
$vars = array( 'slug' => $this->_slug );
|
10421 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10422 |
}
|
10423 |
|
10424 |
/* Pricing & Upgrade
|
@@ -10887,7 +11165,7 @@
|
|
10887 |
return;
|
10888 |
}
|
10889 |
|
10890 |
-
if ( !
|
10891 |
// Inject license activation dialog UI and client side code.
|
10892 |
add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
|
10893 |
}
|
@@ -11130,7 +11408,7 @@
|
|
11130 |
* @return string
|
11131 |
*/
|
11132 |
private function get_complete_upgrade_instructions( $plan_title = '' ) {
|
11133 |
-
if ( $this->is_premium() ) {
|
11134 |
return '';
|
11135 |
}
|
11136 |
|
@@ -11146,7 +11424,7 @@
|
|
11146 |
return sprintf(
|
11147 |
' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
|
11148 |
__fs( 'follow-steps-to-complete-upgrade', $this->_slug ),
|
11149 |
-
$this->
|
11150 |
__fs( 'download-latest-x-version', $this->_slug ),
|
11151 |
$plan_title
|
11152 |
) ),
|
@@ -11341,4 +11619,4 @@
|
|
11341 |
}
|
11342 |
|
11343 |
#endregion
|
11344 |
-
}
|
108 |
*/
|
109 |
private $_is_premium_only;
|
110 |
|
111 |
+
/**
|
112 |
+
* @since 1.2.1.6
|
113 |
+
* @var bool Hints the SDK if plugin have premium code version at all.
|
114 |
+
*/
|
115 |
+
private $_has_premium_version;
|
116 |
+
|
117 |
+
/**
|
118 |
+
* @since 1.2.1.6
|
119 |
+
* @var bool Hints the SDK if plugin should ignore pending mode by simulating a skip.
|
120 |
+
*/
|
121 |
+
private $_ignore_pending_mode;
|
122 |
+
|
123 |
/**
|
124 |
* @since 1.0.8
|
125 |
* @var bool Hints the SDK if the plugin has any paid plans.
|
510 |
}
|
511 |
}
|
512 |
|
513 |
+
if ( ! self::is_ajax() ) {
|
514 |
if ( ! $this->is_addon() ) {
|
515 |
add_action( 'init', array( &$this, '_add_default_submenu_items' ), WP_FS__LOWEST_PRIORITY );
|
516 |
add_action( 'admin_menu', array( &$this, '_prepare_admin_menu' ), WP_FS__LOWEST_PRIORITY );
|
591 |
* @since 1.0.9
|
592 |
*/
|
593 |
private function _register_account_hooks() {
|
594 |
+
if ( ! is_admin() ) {
|
595 |
+
return;
|
596 |
+
}
|
|
|
|
|
|
|
|
|
|
|
597 |
|
598 |
+
/**
|
599 |
+
* Always show the deactivation feedback form since we added
|
600 |
+
* automatic free version deactivation upon premium code activation.
|
601 |
+
*
|
602 |
+
* @since 1.2.1.6
|
603 |
+
*/
|
604 |
+
$this->add_ajax_action(
|
605 |
+
'submit_uninstall_reason',
|
606 |
+
array( &$this, '_submit_uninstall_reason_action' )
|
607 |
+
);
|
608 |
|
609 |
+
if ( $this->is_plugins_page() ) {
|
610 |
+
add_action( 'admin_footer', array( &$this, '_add_deactivation_feedback_dialog_box' ) );
|
611 |
+
}
|
612 |
+
|
613 |
+
if ( ! $this->is_addon() ) {
|
614 |
+
if ( $this->is_registered() ) {
|
615 |
+
$this->add_filter( 'after_code_type_change', array( &$this, '_after_code_type_change' ) );
|
616 |
}
|
617 |
}
|
618 |
}
|
1217 |
|
1218 |
add_action( "wp_ajax_fs_toggle_debug_mode", array( 'Freemius', '_toggle_debug_mode' ) );
|
1219 |
|
1220 |
+
self::add_ajax_action_static( 'get_debug_log', array( 'Freemius', '_get_debug_log' ) );
|
1221 |
+
|
1222 |
add_action( 'plugins_loaded', array( 'Freemius', '_load_textdomain' ), 1 );
|
1223 |
|
1224 |
self::$_statics_loaded = true;
|
1269 |
|
1270 |
$title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
|
1271 |
|
1272 |
+
$hook = null;
|
1273 |
+
|
1274 |
if ( WP_FS__DEV_MODE ) {
|
1275 |
// Add top-level debug menu item.
|
1276 |
$hook = add_menu_page(
|
1281 |
array( 'Freemius', '_debug_page_render' )
|
1282 |
);
|
1283 |
} else {
|
1284 |
+
if ( 'freemius' === fs_request_get( 'page' ) ) {
|
1285 |
+
// Add hidden debug page.
|
1286 |
+
$hook = add_submenu_page(
|
1287 |
+
null,
|
1288 |
+
$title,
|
1289 |
+
$title,
|
1290 |
+
'manage_options',
|
1291 |
+
'freemius',
|
1292 |
+
array( 'Freemius', '_debug_page_render' )
|
1293 |
+
);
|
1294 |
+
}
|
1295 |
}
|
1296 |
|
1297 |
+
if ( ! empty( $hook ) ) {
|
1298 |
+
add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
|
1299 |
+
}
|
1300 |
}
|
1301 |
|
1302 |
/**
|
1304 |
* @since 1.1.7.3
|
1305 |
*/
|
1306 |
static function _toggle_debug_mode() {
|
1307 |
+
if ( fs_request_is_post() && in_array( $_POST['is_on'], array( 0, 1 ) ) ) {
|
1308 |
update_option( 'fs_debug_mode', $_POST['is_on'] );
|
1309 |
+
|
1310 |
+
// Turn on/off storage logging.
|
1311 |
+
FS_Logger::_set_storage_logging( ( 1 == $_POST['is_on'] ) );
|
1312 |
}
|
1313 |
|
1314 |
exit;
|
1315 |
}
|
1316 |
|
1317 |
+
/**
|
1318 |
+
* @author Vova Feldman (@svovaf)
|
1319 |
+
* @since 1.2.1.6
|
1320 |
+
*/
|
1321 |
+
static function _get_debug_log() {
|
1322 |
+
$logs = FS_Logger::load_db_logs(
|
1323 |
+
! empty( $_POST['filters'] ) ? $_POST['filters'] : false,
|
1324 |
+
! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200,
|
1325 |
+
! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0
|
1326 |
+
);
|
1327 |
+
|
1328 |
+
self::shoot_ajax_success( $logs );
|
1329 |
+
}
|
1330 |
+
|
1331 |
/**
|
1332 |
* @author Vova Feldman (@svovaf)
|
1333 |
* @since 1.0.8
|
1354 |
$fs->_storage->install_timestamp = ( time() - WP_FS__TIME_24_HOURS_IN_SEC );
|
1355 |
// Unset the trial shown timestamp.
|
1356 |
unset( $fs->_storage->trial_promotion_shown );
|
1357 |
+
} else if ( fs_request_is_action( 'download_logs' ) ) {
|
1358 |
+
check_admin_referer( 'download_logs' );
|
1359 |
+
|
1360 |
+
$download_url = FS_Logger::download_db_logs(
|
1361 |
+
! empty( $_POST['filters'] ) ? $_POST['filters'] : false
|
1362 |
+
);
|
1363 |
+
|
1364 |
+
if ( false === $download_url ) {
|
1365 |
+
wp_die( 'Oops... there was an error while generating the logs download file. Please try again and if it doesn\'t work contact support@freemius.com.' );
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
fs_redirect( $download_url );
|
1369 |
}
|
1370 |
}
|
1371 |
|
1393 |
'licenses' => $licenses,
|
1394 |
);
|
1395 |
|
1396 |
+
fs_enqueue_local_style( 'fs_debug', '/admin/debug.css' );
|
1397 |
fs_require_once_template( 'debug.php', $vars );
|
1398 |
}
|
1399 |
|
1509 |
'version' => $version,
|
1510 |
'sdk' => $this->version,
|
1511 |
'is_admin' => json_encode( is_admin() ),
|
1512 |
+
'is_ajax' => json_encode( self::is_ajax() ),
|
1513 |
'is_cron' => json_encode( $this->is_cron() ),
|
1514 |
'is_http' => json_encode( WP_FS__IS_HTTP_REQUEST ),
|
1515 |
)
|
1691 |
}
|
1692 |
|
1693 |
if ( ! function_exists( 'wp_nonce_url' ) ) {
|
1694 |
+
require_once ABSPATH . 'wp-includes/functions.php';
|
1695 |
}
|
1696 |
|
1697 |
$current_user = self::_get_current_wp_user();
|
1917 |
|
1918 |
$custom_email_sections = array();
|
1919 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1920 |
// Add 'API Error' custom email section.
|
1921 |
$custom_email_sections['api_error'] = array(
|
1922 |
+
'title' => "API Error",
|
1923 |
'rows' => array(
|
1924 |
+
'ping' => array(
|
1925 |
+
'API Error',
|
1926 |
+
is_string( $pong ) ? htmlentities( $pong ) : json_encode( $pong )
|
1927 |
+
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1928 |
)
|
1929 |
);
|
1930 |
|
1931 |
+
// Send email with technical details to resolve API connectivity issues.
|
1932 |
$this->send_email(
|
1933 |
'api@freemius.com', // recipient
|
1934 |
$title . ' [' . $this->get_plugin_name() . ']', // subject
|
2040 |
$message = fs_get_template( 'email.php', $vars );
|
2041 |
|
2042 |
// Set the type of email to HTML.
|
2043 |
+
$headers[] = 'Content-type: text/html; charset=UTF-8';
|
2044 |
|
2045 |
$header_string = implode( "\r\n", $headers );
|
2046 |
|
2082 |
|
2083 |
$server_ip = WP_FS__REMOTE_ADDR;
|
2084 |
|
2085 |
+
// Add PHP info for deeper investigation.
|
2086 |
+
ob_start();
|
2087 |
+
phpinfo();
|
2088 |
+
$php_info = ob_get_clean();
|
2089 |
+
|
2090 |
+
$api_domain = substr( FS_API__ADDRESS, strpos( FS_API__ADDRESS, ':' ) + 3 );
|
2091 |
+
|
2092 |
// Generate the default email sections.
|
2093 |
$sections = array(
|
2094 |
+
'sdk' => array(
|
2095 |
'title' => 'SDK',
|
2096 |
'rows' => array(
|
2097 |
'fs_version' => array( 'FS Version', $this->version ),
|
2098 |
'curl_version' => array( 'cURL Version', $curl_version_information['version'] )
|
2099 |
)
|
2100 |
),
|
2101 |
+
'plugin' => array(
|
2102 |
'title' => 'Plugin',
|
2103 |
'rows' => array(
|
2104 |
'name' => array( 'Name', $this->get_plugin_name() ),
|
2105 |
'version' => array( 'Version', $this->get_plugin_version() )
|
2106 |
)
|
2107 |
),
|
2108 |
+
'api' => array(
|
2109 |
+
'title' => 'API Subdomain',
|
2110 |
+
'rows' => array(
|
2111 |
+
'dns' => array( 'DNS_CNAME', var_export( @dns_get_record( $api_domain, DNS_CNAME ), true ) ),
|
2112 |
+
'ip' => array( 'IP', @gethostbyname( $api_domain ) ),
|
2113 |
+
),
|
2114 |
+
),
|
2115 |
+
'site' => array(
|
2116 |
'title' => 'Site',
|
2117 |
'rows' => array(
|
2118 |
+
'unique_id' => array( 'Unique ID', $this->get_anonymous_id() ),
|
2119 |
'address' => array( 'Address', site_url() ),
|
2120 |
'host' => array(
|
2121 |
'HTTP_HOST',
|
2122 |
( ! empty( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : '' )
|
2123 |
),
|
2124 |
+
'hosting' => array(
|
2125 |
+
'Hosting Company' => fs_request_has( 'hosting_company' ) ?
|
2126 |
+
fs_request_get( 'hosting_company' ) :
|
2127 |
+
'Unknown',
|
2128 |
+
),
|
2129 |
'server_addr' => array(
|
2130 |
'SERVER_ADDR',
|
2131 |
'<a href="http://www.projecthoneypot.org/ip_' . $server_ip . '">' . $server_ip . '</a>'
|
2132 |
)
|
2133 |
)
|
2134 |
),
|
2135 |
+
'user' => array(
|
2136 |
'title' => 'User',
|
2137 |
'rows' => array(
|
2138 |
'email' => array( 'Email', $current_user->user_email ),
|
2140 |
'last' => array( 'Last', $current_user->user_lastname )
|
2141 |
)
|
2142 |
),
|
2143 |
+
'plugins' => array(
|
2144 |
'title' => 'Plugins',
|
2145 |
'rows' => array(
|
2146 |
'active_plugins' => array( 'Active Plugins', $active_plugin_string )
|
2147 |
)
|
2148 |
),
|
2149 |
+
'php_info' => array(
|
2150 |
+
'title' => 'PHP Info',
|
2151 |
+
'rows' => array(
|
2152 |
+
'info' => array( $php_info )
|
2153 |
+
),
|
2154 |
+
)
|
2155 |
);
|
2156 |
|
2157 |
// Allow the sections to be modified by other code.
|
2351 |
}
|
2352 |
}
|
2353 |
|
|
|
|
|
|
|
|
|
2354 |
// if ( $this->is_registered() ||
|
2355 |
// $this->is_anonymous() ||
|
2356 |
// $this->is_pending_activation()
|
2359 |
// }
|
2360 |
}
|
2361 |
|
2362 |
+
/**
|
2363 |
+
* Should be called outside `$this->is_user_in_admin()` scope
|
2364 |
+
* because the updater has some logic that needs to be executed
|
2365 |
+
* during AJAX calls.
|
2366 |
+
*
|
2367 |
+
* Currently we need to hook to the `http_request_host_is_external` filter.
|
2368 |
+
* In the future, there might be additional logic added.
|
2369 |
+
*
|
2370 |
+
* @author Vova Feldman
|
2371 |
+
* @since 1.2.1.6
|
2372 |
+
*/
|
2373 |
+
if ( $this->is_premium() && $this->has_release_on_freemius() ) {
|
2374 |
+
new FS_Plugin_Updater( $this );
|
2375 |
+
}
|
2376 |
+
|
2377 |
$this->do_action( 'initiated' );
|
2378 |
|
2379 |
if ( $this->_storage->prev_is_premium !== $this->_plugin->is_premium ) {
|
2422 |
$result = $this->stop_tracking();
|
2423 |
|
2424 |
if ( true === $result ) {
|
2425 |
+
self::shoot_ajax_success();
|
2426 |
}
|
2427 |
|
2428 |
$this->_logger->api_error( $result );
|
2429 |
|
2430 |
+
self::shoot_ajax_failure(
|
2431 |
__fs( 'unexpected-api-error', $this->_slug ) .
|
2432 |
( $this->is_api_error( $result ) && isset( $result->error ) ?
|
2433 |
$result->error->message :
|
2443 |
$result = $this->allow_tracking();
|
2444 |
|
2445 |
if ( true === $result ) {
|
2446 |
+
self::shoot_ajax_success();
|
2447 |
}
|
2448 |
|
2449 |
$this->_logger->api_error( $result );
|
2450 |
|
2451 |
+
self::shoot_ajax_failure(
|
2452 |
__fs( 'unexpected-api-error', $this->_slug ) .
|
2453 |
( $this->is_api_error( $result ) && isset( $result->error ) ?
|
2454 |
$result->error->message :
|
2653 |
$this->_menu = FS_Admin_Menu_Manager::instance( $this->_slug );
|
2654 |
$this->_menu->init( $plugin_info['menu'], $this->is_addon() );
|
2655 |
|
2656 |
+
$this->_has_addons = $this->get_bool_option( $plugin_info, 'has_addons', false );
|
2657 |
+
$this->_has_paid_plans = $this->get_bool_option( $plugin_info, 'has_paid_plans', true );
|
2658 |
+
$this->_has_premium_version = $this->get_bool_option( $plugin_info, 'has_premium_version', $this->_has_paid_plans );
|
2659 |
+
$this->_ignore_pending_mode = $this->get_bool_option( $plugin_info, 'ignore_pending_mode', false );
|
2660 |
+
$this->_is_org_compliant = $this->get_bool_option( $plugin_info, 'is_org_compliant', true );
|
2661 |
+
$this->_is_premium_only = $this->get_bool_option( $plugin_info, 'is_premium_only', false );
|
2662 |
if ( $this->_is_premium_only ) {
|
2663 |
// If premium only plugin, disable anonymous mode.
|
2664 |
$this->_enable_anonymous = false;
|
2758 |
return true;
|
2759 |
}
|
2760 |
|
2761 |
+
if ( self::is_ajax() &&
|
2762 |
! $this->_admin_notices->has_sticky( 'failed_connect_api_first' ) &&
|
2763 |
! $this->_admin_notices->has_sticky( 'failed_connect_api' )
|
2764 |
) {
|
3231 |
|
3232 |
if ( $this->is_paying() ) {
|
3233 |
// Check for premium plugin updates.
|
3234 |
+
$this->check_updates( true );
|
3235 |
}
|
3236 |
} else {
|
3237 |
// Sync install (only if something changed locally).
|
3822 |
FS_Api::clear_cache();
|
3823 |
|
3824 |
if ( $this->is_registered() ) {
|
3825 |
+
$is_premium_version_activation = ( current_filter() !== ( 'activate_' . $this->_free_plugin_basename ) );
|
3826 |
+
|
3827 |
+
if ( $is_premium_version_activation ) {
|
3828 |
+
$this->reconnect_locally();
|
3829 |
+
}
|
3830 |
+
|
3831 |
+
$this->_logger->info( 'Activating ' . ( $is_premium_version_activation ? 'premium' : 'free' ) . ' plugin version.' );
|
3832 |
|
3833 |
// Schedule re-activation event and sync.
|
3834 |
// $this->sync_install( array(), true );
|
3835 |
$this->schedule_install_sync();
|
3836 |
|
|
|
|
|
3837 |
// 1. If running in the activation of the FREE module, get the basename of the PREMIUM.
|
3838 |
// 2. If running in the activation of the PREMIUM module, get the basename of the FREE.
|
3839 |
$other_version_basename = $is_premium_version_activation ?
|
3850 |
deactivate_plugins( $other_version_basename );
|
3851 |
}
|
3852 |
|
3853 |
+
// If activating the premium module version, add an admin notice to congratulate for an upgrade completion.
|
3854 |
if ( $is_premium_version_activation ) {
|
3855 |
$this->_admin_notices->add(
|
3856 |
sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
|
4613 |
$params['reason_info'] = $uninstall_reason->info;
|
4614 |
}
|
4615 |
|
4616 |
+
if ( ! $this->is_registered() ) {
|
4617 |
// Send anonymous uninstall event only if user submitted a feedback.
|
4618 |
+
if ( isset( $uninstall_reason ) ) {
|
4619 |
+
if ( isset( $uninstall_reason->is_anonymous ) && ! $uninstall_reason->is_anonymous ) {
|
4620 |
+
$this->opt_in( false, false, false, false, true );
|
4621 |
+
} else {
|
4622 |
+
$params['uid'] = $this->get_anonymous_id();
|
4623 |
+
$this->get_api_plugin_scope()->call( 'uninstall.json', 'put', $params );
|
4624 |
+
}
|
4625 |
}
|
4626 |
} else {
|
4627 |
// Send uninstall event.
|
4697 |
if ( ! function_exists( 'get_plugins' ) ) {
|
4698 |
self::$_static_logger->log( 'Including wp-admin/includes/plugin.php...' );
|
4699 |
|
4700 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
4701 |
}
|
4702 |
}
|
4703 |
|
4709 |
*/
|
4710 |
private static function require_pluggable_essentials() {
|
4711 |
if ( ! function_exists( 'wp_get_current_user' ) ) {
|
4712 |
+
require_once ABSPATH . 'wp-includes/pluggable.php';
|
4713 |
}
|
4714 |
}
|
4715 |
|
5107 |
return false;
|
5108 |
}
|
5109 |
|
5110 |
+
$addons = $this->sync_addons( $flush );
|
5111 |
|
5112 |
return ( ! is_array( $addons ) || empty( $addons ) ) ?
|
5113 |
false :
|
5915 |
|
5916 |
if ( ! current_user_can( 'activate_plugins' ) ) {
|
5917 |
// Only for admins.
|
5918 |
+
self::shoot_ajax_failure();
|
5919 |
}
|
5920 |
|
5921 |
$billing = fs_request_get( 'billing' );
|
5926 |
) ) );
|
5927 |
|
5928 |
if ( ! $this->is_api_result_entity( $result ) ) {
|
5929 |
+
self::shoot_ajax_failure();
|
5930 |
}
|
5931 |
|
5932 |
// Purge cached billing.
|
5933 |
$this->get_api_user_scope()->purge_cache( 'billing.json' );
|
5934 |
|
5935 |
+
self::shoot_ajax_success();
|
5936 |
}
|
5937 |
|
5938 |
/**
|
5946 |
|
5947 |
if ( ! current_user_can( 'activate_plugins' ) ) {
|
5948 |
// Only for admins.
|
5949 |
+
self::shoot_ajax_failure();
|
5950 |
}
|
5951 |
|
5952 |
$trial_data = fs_request_get( 'trial' );
|
5961 |
);
|
5962 |
|
5963 |
if ( is_object( $next_page ) && $this->is_api_error( $next_page ) ) {
|
5964 |
+
self::shoot_ajax_failure(
|
5965 |
isset( $next_page->error ) ?
|
5966 |
$next_page->error->message :
|
5967 |
var_export( $next_page, true )
|
5968 |
);
|
5969 |
}
|
5970 |
|
5971 |
+
self::shoot_ajax_success( array(
|
5972 |
'next_page' => $next_page,
|
5973 |
) );
|
5974 |
}
|
5992 |
$api = $this->get_api_plugin_scope();
|
5993 |
$result = $api->call( '/licenses/resend.json', 'post',
|
5994 |
array(
|
5995 |
+
'email' => $email_address,
|
5996 |
+
'url' => home_url(),
|
5997 |
)
|
5998 |
);
|
5999 |
|
6214 |
return $this->_is_premium_only;
|
6215 |
}
|
6216 |
|
6217 |
+
/**
|
6218 |
+
* Check if module has a premium code version.
|
6219 |
+
*
|
6220 |
+
* Serviceware module might be freemium without any
|
6221 |
+
* premium code version, where the paid features
|
6222 |
+
* are all part of the service.
|
6223 |
+
*
|
6224 |
+
* @author Vova Feldman (@svovaf)
|
6225 |
+
* @since 1.2.1.6
|
6226 |
+
*
|
6227 |
+
* @return bool
|
6228 |
+
*/
|
6229 |
+
function has_premium_version() {
|
6230 |
+
return $this->_has_premium_version;
|
6231 |
+
}
|
6232 |
+
|
6233 |
/**
|
6234 |
* Check if feature supported with current site's plan.
|
6235 |
*
|
6264 |
*
|
6265 |
* @link http://wordpress.stackexchange.com/questions/70676/how-to-check-if-i-am-in-admin-ajax
|
6266 |
*/
|
6267 |
+
static function is_ajax() {
|
6268 |
return ( defined( 'DOING_AJAX' ) && DOING_AJAX );
|
6269 |
}
|
6270 |
|
6280 |
*/
|
6281 |
function is_ajax_action( $actions ) {
|
6282 |
// Verify it's an ajax call.
|
6283 |
+
if ( ! self::is_ajax() ) {
|
6284 |
return false;
|
6285 |
}
|
6286 |
|
6307 |
return false;
|
6308 |
}
|
6309 |
|
6310 |
+
/**
|
6311 |
+
* Check if it's an AJAX call targeted for current request.
|
6312 |
+
*
|
6313 |
+
* @author Vova Feldman (@svovaf)
|
6314 |
+
* @since 1.2.0
|
6315 |
+
*
|
6316 |
+
* @param array|string $actions Collection of AJAX actions.
|
6317 |
+
* @param string $slug
|
6318 |
+
*
|
6319 |
+
* @return bool
|
6320 |
+
*/
|
6321 |
+
static function is_ajax_action_static( $actions, $slug = '' ) {
|
6322 |
+
// Verify it's an ajax call.
|
6323 |
+
if ( ! self::is_ajax() ) {
|
6324 |
+
return false;
|
6325 |
+
}
|
6326 |
+
|
6327 |
+
if ( ! empty( $slug ) ) {
|
6328 |
+
// Verify the call is relevant for the plugin.
|
6329 |
+
if ( $slug !== fs_request_get( 'slug' ) ) {
|
6330 |
+
return false;
|
6331 |
+
}
|
6332 |
+
}
|
6333 |
+
|
6334 |
+
// Verify it's one of the specified actions.
|
6335 |
+
if ( is_string( $actions ) ) {
|
6336 |
+
$actions = explode( ',', $actions );
|
6337 |
+
}
|
6338 |
+
|
6339 |
+
if ( is_array( $actions ) && 0 < count( $actions ) ) {
|
6340 |
+
$ajax_action = fs_request_get( 'action' );
|
6341 |
+
|
6342 |
+
foreach ( $actions as $action ) {
|
6343 |
+
if ( $ajax_action === self::get_action_tag_static( $action, $slug ) ) {
|
6344 |
+
return true;
|
6345 |
+
}
|
6346 |
+
}
|
6347 |
+
}
|
6348 |
+
|
6349 |
+
return false;
|
6350 |
+
}
|
6351 |
+
|
6352 |
/**
|
6353 |
* @author Vova Feldman (@svovaf)
|
6354 |
* @since 1.1.7
|
6368 |
* @return bool
|
6369 |
*/
|
6370 |
function is_user_in_admin() {
|
6371 |
+
return is_admin() && ! self::is_ajax() && ! $this->is_cron();
|
6372 |
}
|
6373 |
|
6374 |
/**
|
6401 |
}
|
6402 |
}
|
6403 |
|
6404 |
+
if ( $this->_menu->has_menu_slug() && ! $this->_menu->is_top_level() ) {
|
6405 |
$parent_slug = $this->_menu->get_parent_slug();
|
6406 |
$menu_file = ( false !== strpos( $parent_slug, '.php' ) ) ?
|
6407 |
$parent_slug :
|
6425 |
return add_query_arg( $params, admin_url( $this->_menu->get_raw_slug(), 'admin' ) );
|
6426 |
}
|
6427 |
} else {
|
6428 |
+
/**
|
6429 |
+
* @author Vova Feldman
|
6430 |
+
* @since 1.2.1.6
|
6431 |
+
*
|
6432 |
+
* If module doesn't have a settings page, create one for the opt-in screen.
|
6433 |
+
*/
|
6434 |
+
$menu_slug = $this->_menu->has_menu_slug() ?
|
6435 |
+
$this->_menu->get_slug( $page ) :
|
6436 |
+
$this->_slug;
|
6437 |
+
|
6438 |
return add_query_arg( array_merge( $params, array(
|
6439 |
+
'page' => $menu_slug,
|
6440 |
) ), admin_url( 'admin.php', 'admin' ) );
|
6441 |
}
|
6442 |
}
|
7111 |
}
|
7112 |
}
|
7113 |
|
7114 |
+
if ( $this->is_paying_or_trial() ) {
|
7115 |
+
if ( ! $this->is_premium() || ! $this->has_premium_version() ) {
|
7116 |
+
if ( $this->is_paying() ) {
|
7117 |
+
$this->_admin_notices->add_sticky(
|
7118 |
+
sprintf(
|
7119 |
+
__fs( 'activation-with-plan-x-message', $this->_slug ),
|
7120 |
+
$this->_site->plan->title
|
7121 |
+
) . $this->get_complete_upgrade_instructions(),
|
7122 |
+
'plan_upgraded',
|
7123 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
7124 |
+
);
|
7125 |
+
} else {
|
7126 |
+
$this->_admin_notices->add_sticky(
|
7127 |
+
sprintf(
|
7128 |
+
__fs( 'trial-started-message', $this->_slug ),
|
7129 |
+
'<i>' . $this->get_plugin_name() . '</i>'
|
7130 |
+
) . $this->get_complete_upgrade_instructions( $this->_storage->trial_plan->title ),
|
7131 |
+
'trial_started',
|
7132 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
7133 |
+
);
|
7134 |
+
}
|
7135 |
}
|
7136 |
|
7137 |
$this->_admin_notices->remove_sticky( array(
|
7149 |
$next_page = '';
|
7150 |
|
7151 |
if ( is_numeric( $plugin_id ) ) {
|
7152 |
+
/**
|
7153 |
+
* @author Leo Fajardo
|
7154 |
+
* @since 1.2.1.6
|
7155 |
+
*
|
7156 |
+
* Also sync the license after an anonymous user subscribes.
|
7157 |
+
*/
|
7158 |
+
if ( $this->is_anonymous() || $plugin_id != $this->_plugin->id ) {
|
7159 |
// Add-on was installed - sync license right after install.
|
7160 |
$next_page = $this->_get_sync_license_url( $plugin_id );
|
7161 |
}
|
7278 |
$license_key = false,
|
7279 |
$is_pending_trial = false
|
7280 |
) {
|
7281 |
+
if ( $this->_ignore_pending_mode ) {
|
7282 |
+
/**
|
7283 |
+
* If explicitly asked to ignore pending mode, set to anonymous mode
|
7284 |
+
* if require confirmation before finalizing the opt-in.
|
7285 |
+
*
|
7286 |
+
* @author Vova Feldman
|
7287 |
+
* @since 1.2.1.6
|
7288 |
+
*/
|
7289 |
+
$this->skip_connection();
|
7290 |
+
} else {
|
7291 |
+
// Install must be activated via email since
|
7292 |
+
// user with the same email already exist.
|
7293 |
+
$this->_storage->is_pending_activation = true;
|
7294 |
+
$this->_add_pending_activation_notice( $email, $is_pending_trial );
|
7295 |
+
}
|
7296 |
|
7297 |
if ( ! empty( $license_key ) ) {
|
7298 |
$this->_storage->pending_license_key = $license_key;
|
7564 |
|
7565 |
$hook = false;
|
7566 |
|
7567 |
+
if ( ! $this->_menu->has_menu_slug() ) {
|
7568 |
+
// Add the opt-in page without a menu item.
|
7569 |
+
$hook = add_submenu_page(
|
7570 |
+
null,
|
7571 |
+
$this->get_plugin_name(),
|
7572 |
+
$this->get_plugin_name(),
|
7573 |
+
'manage_options',
|
7574 |
+
$this->_slug,
|
7575 |
+
array( &$this, '_connect_page_render' )
|
7576 |
+
);
|
7577 |
+
} else if ( $this->_menu->is_top_level() ) {
|
7578 |
$hook = $this->_menu->override_menu_item( array( &$this, '_connect_page_render' ) );
|
7579 |
|
7580 |
if ( false === $hook ) {
|
8057 |
* @return string
|
8058 |
*/
|
8059 |
public function get_action_tag( $tag ) {
|
8060 |
+
return self::get_action_tag_static( $tag, $this->_slug );
|
8061 |
+
}
|
8062 |
+
|
8063 |
+
/**
|
8064 |
+
* @author Vova Feldman (@svovaf)
|
8065 |
+
* @since 1.2.1.6
|
8066 |
+
*
|
8067 |
+
* @param string $tag
|
8068 |
+
* @param string $slug
|
8069 |
+
*
|
8070 |
+
* @return string
|
8071 |
+
*/
|
8072 |
+
static function get_action_tag_static( $tag, $slug = '' ) {
|
8073 |
+
return "fs_{$tag}" . ( empty( $slug ) ? '' : "_{$slug}" );
|
8074 |
}
|
8075 |
|
8076 |
/**
|
8085 |
return 'wp_ajax_' . $this->get_action_tag( $tag );
|
8086 |
}
|
8087 |
|
8088 |
+
/**
|
8089 |
+
* @author Vova Feldman (@svovaf)
|
8090 |
+
* @since 1.2.1.6
|
8091 |
+
*
|
8092 |
+
* @param string $tag
|
8093 |
+
* @param string $slug
|
8094 |
+
*
|
8095 |
+
* @return string
|
8096 |
+
*/
|
8097 |
+
private static function get_ajax_action_tag_static( $tag, $slug = '' ) {
|
8098 |
+
return 'wp_ajax_' . self::get_action_tag_static( $tag, $slug );
|
8099 |
+
}
|
8100 |
+
|
8101 |
/**
|
8102 |
* Do action, specific for the current context plugin.
|
8103 |
*
|
8149 |
* @param string $tag
|
8150 |
* @param callable $function_to_add
|
8151 |
* @param int $priority
|
|
|
8152 |
*
|
8153 |
* @uses add_action()
|
8154 |
*
|
8155 |
* @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
|
8156 |
*/
|
8157 |
+
function add_ajax_action(
|
8158 |
+
$tag,
|
8159 |
+
$function_to_add,
|
8160 |
+
$priority = WP_FS__DEFAULT_PRIORITY
|
8161 |
+
) {
|
8162 |
$this->_logger->entrance( $tag );
|
8163 |
|
8164 |
+
return self::add_ajax_action_static(
|
8165 |
+
$tag,
|
8166 |
+
$function_to_add,
|
8167 |
+
$priority,
|
8168 |
+
$this->_slug
|
8169 |
+
);
|
8170 |
+
}
|
8171 |
+
|
8172 |
+
/**
|
8173 |
+
* Add AJAX action.
|
8174 |
+
*
|
8175 |
+
* @author Vova Feldman (@svovaf)
|
8176 |
+
* @since 1.2.1.6
|
8177 |
+
*
|
8178 |
+
* @param string $tag
|
8179 |
+
* @param callable $function_to_add
|
8180 |
+
* @param int $priority
|
8181 |
+
* @param string $slug
|
8182 |
+
*
|
8183 |
+
* @return bool True if action added, false if no need to add the action since the AJAX call isn't matching.
|
8184 |
+
* @uses add_action()
|
8185 |
+
*
|
8186 |
+
*/
|
8187 |
+
static function add_ajax_action_static(
|
8188 |
+
$tag,
|
8189 |
+
$function_to_add,
|
8190 |
+
$priority = WP_FS__DEFAULT_PRIORITY,
|
8191 |
+
$slug = ''
|
8192 |
+
) {
|
8193 |
+
self::$_static_logger->entrance( $tag );
|
8194 |
+
|
8195 |
+
if ( ! self::is_ajax_action_static( $tag, $slug ) ) {
|
8196 |
return false;
|
8197 |
}
|
8198 |
|
8199 |
+
add_action(
|
8200 |
+
self::get_ajax_action_tag_static( $tag, $slug ),
|
8201 |
+
$function_to_add,
|
8202 |
+
$priority,
|
8203 |
+
0
|
8204 |
+
);
|
8205 |
|
8206 |
+
self::$_static_logger->info( "$tag AJAX callback action added." );
|
8207 |
|
8208 |
return true;
|
8209 |
}
|
8216 |
*
|
8217 |
* @param mixed $response
|
8218 |
*/
|
8219 |
+
static function shoot_ajax_response( $response ) {
|
8220 |
wp_send_json( $response );
|
8221 |
}
|
8222 |
|
8228 |
*
|
8229 |
* @param mixed $data Data to encode as JSON, then print and exit.
|
8230 |
*/
|
8231 |
+
static function shoot_ajax_success( $data = null ) {
|
8232 |
wp_send_json_success( $data );
|
8233 |
}
|
8234 |
|
8240 |
*
|
8241 |
* @param mixed $error Optional error message.
|
8242 |
*/
|
8243 |
+
static function shoot_ajax_failure( $error = '' ) {
|
8244 |
$result = array( 'success' => false );
|
8245 |
if ( ! empty( $error ) ) {
|
8246 |
$result['error'] = $error;
|
8921 |
$plugin_id = $this->_plugin->id;
|
8922 |
}
|
8923 |
|
8924 |
+
$this->check_updates( true, $plugin_id, $flush );
|
8925 |
$updates = $this->get_all_updates();
|
8926 |
|
8927 |
return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
|
9071 |
sprintf(
|
9072 |
__fs( 'addon-successfully-upgraded-message', $this->_slug ),
|
9073 |
$addon->title
|
9074 |
+
) . ' ' . $this->get_latest_download_link(
|
9075 |
__fs( 'download-latest-version', $this->_slug ),
|
9076 |
$addon_id
|
9077 |
)
|
9079 |
sprintf(
|
9080 |
__fs( 'addon-successfully-purchased-message', $this->_slug ),
|
9081 |
$addon->title
|
9082 |
+
) . ' ' . $this->get_latest_download_link(
|
9083 |
__fs( 'download-latest-version', $this->_slug ),
|
9084 |
$addon_id
|
9085 |
),
|
9268 |
$this->_storage->trial_plan :
|
9269 |
$this->_site->plan;
|
9270 |
|
9271 |
+
if ( $plan->is_free() ) {
|
9272 |
+
$this->_admin_notices->add(
|
9273 |
+
sprintf(
|
9274 |
+
__fs( 'plan-did-not-change-message', $this->_slug ),
|
9275 |
+
'<i><b>' . $plan->title . ( $this->is_trial() ? ' ' . __fs( 'trial', $this->_slug ) : '' ) . '</b></i>'
|
9276 |
+
) . ' ' . sprintf(
|
9277 |
+
'<a href="%s">%s</a>',
|
9278 |
+
$this->contact_url(
|
9279 |
+
'bug',
|
9280 |
+
sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ),
|
9281 |
+
strtoupper( $plan->name )
|
9282 |
+
)
|
9283 |
+
),
|
9284 |
+
__fs( 'contact-us-here', $this->_slug )
|
9285 |
),
|
9286 |
+
__fs( 'hmm', $this->_slug ) . '...'
|
9287 |
+
);
|
9288 |
+
}
|
|
|
9289 |
}
|
9290 |
break;
|
9291 |
case 'upgraded':
|
9815 |
$is_premium = self::get_instance_by_id( $addon_id )->_can_download_premium();
|
9816 |
}
|
9817 |
|
9818 |
+
// If add-on, then append add-on ID.
|
9819 |
+
$endpoint = ( $is_addon ? "/addons/$addon_id" : '' ) .
|
9820 |
+
'/updates/latest.' . $type;
|
9821 |
+
|
9822 |
+
// If add-on and not yet activated, try to fetch based on server licensing.
|
9823 |
+
if ( is_bool( $is_premium ) ) {
|
9824 |
+
$endpoint = add_query_arg( 'is_premium', json_encode( $is_premium ), $endpoint );
|
9825 |
+
}
|
9826 |
+
|
9827 |
+
if ( $this->has_secret_key() ) {
|
9828 |
+
$endpoint = add_query_arg( 'type', 'all', $endpoint );
|
9829 |
+
}
|
9830 |
+
|
9831 |
+
return $endpoint;
|
9832 |
}
|
9833 |
|
9834 |
/**
|
9884 |
* @uses FS_Api
|
9885 |
* @uses wp_redirect()
|
9886 |
*/
|
9887 |
+
private function download_latest_directly( $plugin_id = false ) {
|
9888 |
$this->_logger->entrance();
|
9889 |
|
9890 |
+
wp_redirect( $this->get_latest_download_api_url( $plugin_id ) );
|
9891 |
}
|
9892 |
|
9893 |
/**
|
9900 |
*
|
9901 |
* @return string
|
9902 |
*/
|
9903 |
+
private function get_latest_download_api_url( $plugin_id = false ) {
|
9904 |
$this->_logger->entrance();
|
9905 |
|
9906 |
return $this->get_api_site_scope()->get_signed_url(
|
9937 |
*
|
9938 |
* @return string
|
9939 |
*/
|
9940 |
+
private function get_latest_download_link( $label, $plugin_id = false ) {
|
9941 |
return sprintf(
|
9942 |
'<a target="_blank" href="%s">%s</a>',
|
9943 |
$this->_get_latest_download_local_url( $plugin_id ),
|
9979 |
* @param bool|number $plugin_id
|
9980 |
* @param bool $flush Since 1.1.7.3
|
9981 |
*/
|
9982 |
+
private function check_updates( $background = false, $plugin_id = false, $flush = true ) {
|
9983 |
$this->_logger->entrance();
|
9984 |
|
9985 |
// Check if there's a newer version for download.
|
10023 |
*
|
10024 |
* @uses FS_Api
|
10025 |
*/
|
10026 |
+
private function sync_addons( $flush = false ) {
|
10027 |
$this->_logger->entrance();
|
10028 |
|
10029 |
$api = $this->get_api_site_or_plugin_scope();
|
10067 |
*
|
10068 |
* @return object
|
10069 |
*/
|
10070 |
+
private function update_email( $new_email ) {
|
10071 |
$this->_logger->entrance();
|
10072 |
|
10073 |
|
10409 |
|
10410 |
case 'check_updates':
|
10411 |
check_admin_referer( $action );
|
10412 |
+
$this->check_updates();
|
10413 |
|
10414 |
return;
|
10415 |
|
10447 |
check_admin_referer( 'update_email' );
|
10448 |
|
10449 |
$new_email = fs_request_get( 'fs_email_' . $this->_slug, '' );
|
10450 |
+
$result = $this->update_email( $new_email );
|
10451 |
|
10452 |
if ( isset( $result->error ) ) {
|
10453 |
switch ( $result->error->code ) {
|
10521 |
return;
|
10522 |
|
10523 |
case 'download_latest':
|
10524 |
+
$this->download_latest_directly( $plugin_id );
|
10525 |
|
10526 |
return;
|
10527 |
|
10609 |
function _account_page_render() {
|
10610 |
$this->_logger->entrance();
|
10611 |
|
10612 |
+
$template = 'account.php';
|
10613 |
if ( 'billing' === fs_request_get( 'tab' ) ) {
|
10614 |
+
$template = 'billing.php';
|
|
|
|
|
10615 |
}
|
10616 |
+
|
10617 |
+
$vars = array( 'slug' => $this->_slug );
|
10618 |
+
|
10619 |
+
/**
|
10620 |
+
* Added filter to the template to allow developers wrapping the template
|
10621 |
+
* in custom HTML (e.g. within a wizard/tabs).
|
10622 |
+
*
|
10623 |
+
* @author Vova Feldman (@svovaf)
|
10624 |
+
* @since 1.2.1.6
|
10625 |
+
*/
|
10626 |
+
echo $this->apply_filters( "templates/{$template}", fs_get_template( $template, $vars ) );
|
10627 |
}
|
10628 |
|
10629 |
/**
|
10636 |
$this->_logger->entrance();
|
10637 |
|
10638 |
$vars = array( 'slug' => $this->_slug );
|
10639 |
+
|
10640 |
+
/**
|
10641 |
+
* Added filter to the template to allow developers wrapping the template
|
10642 |
+
* in custom HTML (e.g. within a wizard/tabs).
|
10643 |
+
*
|
10644 |
+
* @author Vova Feldman (@svovaf)
|
10645 |
+
* @since 1.2.1.6
|
10646 |
+
*/
|
10647 |
+
echo $this->apply_filters( 'templates/connect.php', fs_get_template( 'connect.php', $vars ) );
|
10648 |
}
|
10649 |
|
10650 |
/**
|
10688 |
$this->_logger->entrance();
|
10689 |
|
10690 |
$vars = array( 'slug' => $this->_slug );
|
10691 |
+
|
10692 |
+
/**
|
10693 |
+
* Added filter to the template to allow developers wrapping the template
|
10694 |
+
* in custom HTML (e.g. within a wizard/tabs).
|
10695 |
+
*
|
10696 |
+
* @author Vova Feldman (@svovaf)
|
10697 |
+
* @since 1.2.1.6
|
10698 |
+
*/
|
10699 |
+
echo $this->apply_filters( 'templates/add-ons.php', fs_get_template( 'add-ons.php', $vars ) );
|
10700 |
}
|
10701 |
|
10702 |
/* Pricing & Upgrade
|
11165 |
return;
|
11166 |
}
|
11167 |
|
11168 |
+
if ( ! self::is_ajax() ) {
|
11169 |
// Inject license activation dialog UI and client side code.
|
11170 |
add_action( 'admin_footer', array( &$this, '_add_license_activation_dialog_box' ) );
|
11171 |
}
|
11408 |
* @return string
|
11409 |
*/
|
11410 |
private function get_complete_upgrade_instructions( $plan_title = '' ) {
|
11411 |
+
if ( ! $this->has_premium_version() || $this->is_premium() ) {
|
11412 |
return '';
|
11413 |
}
|
11414 |
|
11424 |
return sprintf(
|
11425 |
' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
|
11426 |
__fs( 'follow-steps-to-complete-upgrade', $this->_slug ),
|
11427 |
+
$this->get_latest_download_link( sprintf(
|
11428 |
__fs( 'download-latest-x-version', $this->_slug ),
|
11429 |
$plan_title
|
11430 |
) ),
|
11619 |
}
|
11620 |
|
11621 |
#endregion
|
11622 |
+
}
|
includes/pum-sdk/freemius/includes/class-fs-api.php
CHANGED
@@ -84,7 +84,7 @@
|
|
84 |
}
|
85 |
|
86 |
if ( ! class_exists( 'Freemius_Api' ) ) {
|
87 |
-
require_once
|
88 |
}
|
89 |
|
90 |
self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
|
84 |
}
|
85 |
|
86 |
if ( ! class_exists( 'Freemius_Api' ) ) {
|
87 |
+
require_once WP_FS__DIR_SDK . '/Freemius.php';
|
88 |
}
|
89 |
|
90 |
self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
|
includes/pum-sdk/freemius/includes/class-fs-logger.php
CHANGED
@@ -15,6 +15,22 @@
|
|
15 |
private $_on = false;
|
16 |
private $_echo = false;
|
17 |
private $_file_start = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
|
19 |
private static $LOGGERS = array();
|
20 |
private static $LOG = array();
|
@@ -27,7 +43,11 @@
|
|
27 |
$bt = debug_backtrace();
|
28 |
$caller = $bt[2];
|
29 |
|
30 |
-
|
|
|
|
|
|
|
|
|
31 |
|
32 |
if ( $on ) {
|
33 |
$this->on();
|
@@ -47,6 +67,10 @@
|
|
47 |
public static function get_logger( $id, $on = false, $echo = false ) {
|
48 |
$id = strtolower( $id );
|
49 |
|
|
|
|
|
|
|
|
|
50 |
if ( ! isset( self::$LOGGERS[ $id ] ) ) {
|
51 |
self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
|
52 |
}
|
@@ -54,7 +78,25 @@
|
|
54 |
return self::$LOGGERS[ $id ];
|
55 |
}
|
56 |
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
if ( self::$_HOOKED_FOOTER ) {
|
59 |
return;
|
60 |
}
|
@@ -73,7 +115,11 @@
|
|
73 |
function on() {
|
74 |
$this->_on = true;
|
75 |
|
76 |
-
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
|
79 |
function echo_on() {
|
@@ -107,14 +153,37 @@
|
|
107 |
|
108 |
$caller = $bt[ $depth ];
|
109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
$log = array_merge( $caller, array(
|
111 |
'cnt' => self::$CNT ++,
|
112 |
'logger' => $this,
|
113 |
-
'timestamp' => microtime(true),
|
114 |
-
'
|
115 |
'msg' => $message,
|
116 |
) );
|
117 |
|
|
|
|
|
|
|
|
|
118 |
self::$LOG[] = $log;
|
119 |
|
120 |
if ( $this->is_echo_on() ) {
|
@@ -176,30 +245,442 @@
|
|
176 |
$this->_log( $msg, 'log', $wrapper );
|
177 |
}
|
178 |
|
|
|
|
|
|
|
|
|
179 |
private static function format( $log, $show_type = true ) {
|
180 |
-
return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['
|
181 |
}
|
182 |
|
183 |
private static function format_html( $log ) {
|
184 |
-
return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['
|
185 |
}
|
186 |
|
|
|
|
|
187 |
static function dump() {
|
188 |
?>
|
189 |
<!-- BEGIN: Freemius PHP Console Log -->
|
190 |
<script type="text/javascript">
|
191 |
<?php
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
}
|
196 |
?>
|
197 |
</script>
|
198 |
<!-- END: Freemius PHP Console Log -->
|
199 |
-
|
200 |
}
|
201 |
|
202 |
static function get_log() {
|
203 |
return self::$LOG;
|
204 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
}
|
15 |
private $_on = false;
|
16 |
private $_echo = false;
|
17 |
private $_file_start = 0;
|
18 |
+
/**
|
19 |
+
* @var int PHP Process ID.
|
20 |
+
*/
|
21 |
+
private static $_processID;
|
22 |
+
/**
|
23 |
+
* @var string PHP Script user name.
|
24 |
+
*/
|
25 |
+
private static $_ownerName;
|
26 |
+
/**
|
27 |
+
* @var bool Is storage logging turned on.
|
28 |
+
*/
|
29 |
+
private static $_isStorageLoggingOn;
|
30 |
+
/**
|
31 |
+
* @var int ABSPATH length.
|
32 |
+
*/
|
33 |
+
private static $_abspathLength;
|
34 |
|
35 |
private static $LOGGERS = array();
|
36 |
private static $LOG = array();
|
43 |
$bt = debug_backtrace();
|
44 |
$caller = $bt[2];
|
45 |
|
46 |
+
if ( false !== strpos( $caller['file'], 'plugins' ) ) {
|
47 |
+
$this->_file_start = strpos( $caller['file'], 'plugins' ) + strlen( 'plugins/' );
|
48 |
+
} else {
|
49 |
+
$this->_file_start = strpos( $caller['file'], 'themes' ) + strlen( 'themes/' );
|
50 |
+
}
|
51 |
|
52 |
if ( $on ) {
|
53 |
$this->on();
|
67 |
public static function get_logger( $id, $on = false, $echo = false ) {
|
68 |
$id = strtolower( $id );
|
69 |
|
70 |
+
if ( ! isset( self::$_processID ) ) {
|
71 |
+
self::init();
|
72 |
+
}
|
73 |
+
|
74 |
if ( ! isset( self::$LOGGERS[ $id ] ) ) {
|
75 |
self::$LOGGERS[ $id ] = new FS_Logger( $id, $on, $echo );
|
76 |
}
|
78 |
return self::$LOGGERS[ $id ];
|
79 |
}
|
80 |
|
81 |
+
/**
|
82 |
+
* Initialize logging global info.
|
83 |
+
*
|
84 |
+
* @author Vova Feldman (@svovaf)
|
85 |
+
* @since 1.2.1.6
|
86 |
+
*/
|
87 |
+
private static function init() {
|
88 |
+
self::$_ownerName = get_current_user();
|
89 |
+
self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
|
90 |
+
self::$_abspathLength = strlen( ABSPATH );
|
91 |
+
self::$_processID = getmypid();
|
92 |
+
|
93 |
+
// Process ID may be `false` on errors.
|
94 |
+
if ( ! is_numeric( self::$_processID ) ) {
|
95 |
+
self::$_processID = 0;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
private static function hook_footer() {
|
100 |
if ( self::$_HOOKED_FOOTER ) {
|
101 |
return;
|
102 |
}
|
115 |
function on() {
|
116 |
$this->_on = true;
|
117 |
|
118 |
+
if ( ! function_exists( 'dbDelta' ) ) {
|
119 |
+
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
|
120 |
+
}
|
121 |
+
|
122 |
+
self::hook_footer();
|
123 |
}
|
124 |
|
125 |
function echo_on() {
|
153 |
|
154 |
$caller = $bt[ $depth ];
|
155 |
|
156 |
+
/**
|
157 |
+
* Retrieve the correct call file & line number from backtrace
|
158 |
+
* when logging from a wrapper method.
|
159 |
+
*
|
160 |
+
* @author Vova Feldman
|
161 |
+
* @since 1.2.1.6
|
162 |
+
*/
|
163 |
+
if ( empty( $caller['line'] ) ) {
|
164 |
+
$depth --;
|
165 |
+
|
166 |
+
while ( $depth >= 0 ) {
|
167 |
+
if ( ! empty( $bt[ $depth ]['line'] ) ) {
|
168 |
+
$caller['line'] = $bt[ $depth ]['line'];
|
169 |
+
$caller['file'] = $bt[ $depth ]['file'];
|
170 |
+
break;
|
171 |
+
}
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
$log = array_merge( $caller, array(
|
176 |
'cnt' => self::$CNT ++,
|
177 |
'logger' => $this,
|
178 |
+
'timestamp' => microtime( true ),
|
179 |
+
'log_type' => $type,
|
180 |
'msg' => $message,
|
181 |
) );
|
182 |
|
183 |
+
if ( self::$_isStorageLoggingOn ) {
|
184 |
+
$this->db_log( $type, $message, self::$CNT, $caller );
|
185 |
+
}
|
186 |
+
|
187 |
self::$LOG[] = $log;
|
188 |
|
189 |
if ( $this->is_echo_on() ) {
|
245 |
$this->_log( $msg, 'log', $wrapper );
|
246 |
}
|
247 |
|
248 |
+
#--------------------------------------------------------------------------------
|
249 |
+
#region Log Formatting
|
250 |
+
#--------------------------------------------------------------------------------
|
251 |
+
|
252 |
private static function format( $log, $show_type = true ) {
|
253 |
+
return '[' . str_pad( $log['cnt'], strlen( self::$CNT ), '0', STR_PAD_LEFT ) . '] [' . $log['logger']->_id . '] ' . ( $show_type ? '[' . $log['log_type'] . ']' : '' ) . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . ' >> ' . $log['msg'] . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ') ' : '' ) . ' [' . $log['timestamp'] . ']';
|
254 |
}
|
255 |
|
256 |
private static function format_html( $log ) {
|
257 |
+
return '<div style="font-size: 13px; font-family: monospace; color: #7da767; padding: 8px 3px; background: #000; border-bottom: 1px solid #555;">[' . $log['cnt'] . '] [' . $log['logger']->_id . '] [' . $log['log_type'] . '] <b><code style="color: #c4b1e0;">' . ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] . '</code> >> <b style="color: #f59330;">' . esc_html( $log['msg'] ) . '</b></b>' . ( isset( $log['file'] ) ? ' (' . substr( $log['file'], $log['logger']->_file_start ) . ' ' . $log['line'] . ')' : '' ) . ' [' . $log['timestamp'] . ']</div>';
|
258 |
}
|
259 |
|
260 |
+
#endregion
|
261 |
+
|
262 |
static function dump() {
|
263 |
?>
|
264 |
<!-- BEGIN: Freemius PHP Console Log -->
|
265 |
<script type="text/javascript">
|
266 |
<?php
|
267 |
+
foreach ( self::$LOG as $log ) {
|
268 |
+
echo 'console.' . $log['log_type'] . '(' . json_encode( self::format( $log, false ) ) . ')' . "\n";
|
269 |
+
}
|
|
|
270 |
?>
|
271 |
</script>
|
272 |
<!-- END: Freemius PHP Console Log -->
|
273 |
+
<?php
|
274 |
}
|
275 |
|
276 |
static function get_log() {
|
277 |
return self::$LOG;
|
278 |
}
|
279 |
+
|
280 |
+
#--------------------------------------------------------------------------------
|
281 |
+
#region Database Logging
|
282 |
+
#--------------------------------------------------------------------------------
|
283 |
+
|
284 |
+
/**
|
285 |
+
* @author Vova Feldman (@svovaf)
|
286 |
+
* @since 1.2.1.6
|
287 |
+
*
|
288 |
+
* @return bool
|
289 |
+
*/
|
290 |
+
public static function is_storage_logging_on() {
|
291 |
+
if ( ! isset( self::$_isStorageLoggingOn ) ) {
|
292 |
+
self::$_isStorageLoggingOn = ( 1 == get_option( 'fs_storage_logger', 0 ) );
|
293 |
+
}
|
294 |
+
|
295 |
+
return self::$_isStorageLoggingOn;
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Turns on/off database persistent debugging to capture
|
300 |
+
* multi-session logs to debug complex flows like
|
301 |
+
* plugin auto-deactivate on premium version activation.
|
302 |
+
*
|
303 |
+
* @todo Check if Theme Check has issues with DB tables for themes.
|
304 |
+
*
|
305 |
+
* @author Vova Feldman (@svovaf)
|
306 |
+
* @since 1.2.1.6
|
307 |
+
*
|
308 |
+
* @param bool $is_on
|
309 |
+
*
|
310 |
+
* @return bool
|
311 |
+
*/
|
312 |
+
public static function _set_storage_logging( $is_on = true ) {
|
313 |
+
global $wpdb;
|
314 |
+
|
315 |
+
$table = "{$wpdb->prefix}fs_logger";
|
316 |
+
|
317 |
+
if ( $is_on ) {
|
318 |
+
/**
|
319 |
+
* Create logging table.
|
320 |
+
*
|
321 |
+
* NOTE:
|
322 |
+
* dbDelta must use KEY and not INDEX for indexes.
|
323 |
+
*
|
324 |
+
* @link https://core.trac.wordpress.org/ticket/2695
|
325 |
+
*/
|
326 |
+
$result = $wpdb->query( "CREATE TABLE {$table} (
|
327 |
+
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
328 |
+
`process_id` INT UNSIGNED NOT NULL,
|
329 |
+
`user_name` VARCHAR(64) NOT NULL,
|
330 |
+
`logger` VARCHAR(128) NOT NULL,
|
331 |
+
`log_order` INT UNSIGNED NOT NULL,
|
332 |
+
`type` ENUM('log','info','warn','error') NOT NULL DEFAULT 'log',
|
333 |
+
`message` TEXT NOT NULL,
|
334 |
+
`file` VARCHAR(256) NOT NULL,
|
335 |
+
`line` INT UNSIGNED NOT NULL,
|
336 |
+
`function` VARCHAR(256) NOT NULL,
|
337 |
+
`request_type` ENUM('call','ajax','cron') NOT NULL DEFAULT 'call',
|
338 |
+
`request_url` VARCHAR(1024) NOT NULL,
|
339 |
+
`created` DECIMAL(16, 6) NOT NULL,
|
340 |
+
PRIMARY KEY (`id`),
|
341 |
+
KEY `process_id` (`process_id` ASC),
|
342 |
+
KEY `process_logger` (`process_id` ASC, `logger` ASC),
|
343 |
+
KEY `function` (`function` ASC),
|
344 |
+
KEY `type` (`type` ASC))" );
|
345 |
+
} else {
|
346 |
+
/**
|
347 |
+
* Drop logging table.
|
348 |
+
*/
|
349 |
+
$result = $wpdb->query( "DROP TABLE IF EXISTS $table;" );
|
350 |
+
}
|
351 |
+
|
352 |
+
if ( false !== $result ) {
|
353 |
+
update_option( 'fs_storage_logger', ( $is_on ? 1 : 0 ) );
|
354 |
+
}
|
355 |
+
|
356 |
+
return ( false !== $result );
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* @author Vova Feldman (@svovaf)
|
361 |
+
* @since 1.2.1.6
|
362 |
+
*
|
363 |
+
* @param string $type
|
364 |
+
* @param string $message
|
365 |
+
* @param int $log_order
|
366 |
+
* @param array $caller
|
367 |
+
*
|
368 |
+
* @return false|int
|
369 |
+
*/
|
370 |
+
private function db_log(
|
371 |
+
&$type,
|
372 |
+
&$message,
|
373 |
+
&$log_order,
|
374 |
+
&$caller
|
375 |
+
) {
|
376 |
+
global $wpdb;
|
377 |
+
|
378 |
+
$request_type = 'call';
|
379 |
+
if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
|
380 |
+
$request_type = 'cron';
|
381 |
+
} else if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
382 |
+
$request_type = 'ajax';
|
383 |
+
}
|
384 |
+
|
385 |
+
$request_url = WP_FS__IS_HTTP_REQUEST ?
|
386 |
+
$_SERVER['REQUEST_URI'] :
|
387 |
+
'';
|
388 |
+
|
389 |
+
return $wpdb->insert(
|
390 |
+
"{$wpdb->prefix}fs_logger",
|
391 |
+
array(
|
392 |
+
'process_id' => self::$_processID,
|
393 |
+
'user_name' => self::$_ownerName,
|
394 |
+
'logger' => $this->_id,
|
395 |
+
'log_order' => $log_order,
|
396 |
+
'type' => $type,
|
397 |
+
'request_type' => $request_type,
|
398 |
+
'request_url' => $request_url,
|
399 |
+
'message' => $message,
|
400 |
+
'file' => isset( $caller['file'] ) ?
|
401 |
+
substr( $caller['file'], self::$_abspathLength ) :
|
402 |
+
'',
|
403 |
+
'line' => $caller['line'],
|
404 |
+
'function' => ( ! empty( $caller['class'] ) ? $caller['class'] . $caller['type'] : '' ) . $caller['function'],
|
405 |
+
'created' => microtime( true ),
|
406 |
+
)
|
407 |
+
);
|
408 |
+
}
|
409 |
+
|
410 |
+
/**
|
411 |
+
* Persistent DB logger columns.
|
412 |
+
*
|
413 |
+
* @var array
|
414 |
+
*/
|
415 |
+
private static $_log_columns = array(
|
416 |
+
'id',
|
417 |
+
'process_id',
|
418 |
+
'user_name',
|
419 |
+
'logger',
|
420 |
+
'log_order',
|
421 |
+
'type',
|
422 |
+
'message',
|
423 |
+
'file',
|
424 |
+
'line',
|
425 |
+
'function',
|
426 |
+
'request_type',
|
427 |
+
'request_url',
|
428 |
+
'created',
|
429 |
+
);
|
430 |
+
|
431 |
+
/**
|
432 |
+
* Create DB logs query.
|
433 |
+
*
|
434 |
+
* @author Vova Feldman (@svovaf)
|
435 |
+
* @since 1.2.1.6
|
436 |
+
*
|
437 |
+
* @param bool $filters
|
438 |
+
* @param int $limit
|
439 |
+
* @param int $offset
|
440 |
+
* @param bool $order
|
441 |
+
* @param bool $escape_eol
|
442 |
+
*
|
443 |
+
* @return string
|
444 |
+
*/
|
445 |
+
private static function build_db_logs_query(
|
446 |
+
$filters = false,
|
447 |
+
$limit = 200,
|
448 |
+
$offset = 0,
|
449 |
+
$order = false,
|
450 |
+
$escape_eol = false
|
451 |
+
) {
|
452 |
+
global $wpdb;
|
453 |
+
|
454 |
+
$select = '*';
|
455 |
+
|
456 |
+
if ( $escape_eol ) {
|
457 |
+
$select = '';
|
458 |
+
for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
|
459 |
+
if ( $i > 0 ) {
|
460 |
+
$select .= ', ';
|
461 |
+
}
|
462 |
+
|
463 |
+
if ( 'message' !== self::$_log_columns[ $i ] ) {
|
464 |
+
$select .= self::$_log_columns[ $i ];
|
465 |
+
} else {
|
466 |
+
$select .= 'REPLACE(message , \'\n\', \' \') AS message';
|
467 |
+
}
|
468 |
+
}
|
469 |
+
}
|
470 |
+
|
471 |
+
$query = "SELECT {$select} FROM {$wpdb->prefix}fs_logger";
|
472 |
+
if ( is_array( $filters ) ) {
|
473 |
+
$criteria = array();
|
474 |
+
|
475 |
+
if ( ! empty( $filters['type'] ) && 'all' !== $filters['type'] ) {
|
476 |
+
$filters['type'] = strtolower( $filters['type'] );
|
477 |
+
|
478 |
+
switch ( $filters['type'] ) {
|
479 |
+
case 'warn_error':
|
480 |
+
$criteria[] = array( 'col' => 'type', 'val' => array( 'warn', 'error' ) );
|
481 |
+
break;
|
482 |
+
case 'error':
|
483 |
+
case 'warn':
|
484 |
+
$criteria[] = array( 'col' => 'type', 'val' => $filters['type'] );
|
485 |
+
break;
|
486 |
+
case 'info':
|
487 |
+
default:
|
488 |
+
$criteria[] = array( 'col' => 'type', 'val' => array( 'info', 'log' ) );
|
489 |
+
break;
|
490 |
+
}
|
491 |
+
}
|
492 |
+
|
493 |
+
if ( ! empty( $filters['request_type'] ) ) {
|
494 |
+
$filters['request_type'] = strtolower( $filters['request_type'] );
|
495 |
+
|
496 |
+
if ( in_array( $filters['request_type'], array( 'call', 'ajax', 'cron' ) ) ) {
|
497 |
+
$criteria[] = array( 'col' => 'request_type', 'val' => $filters['request_type'] );
|
498 |
+
}
|
499 |
+
}
|
500 |
+
|
501 |
+
if ( ! empty( $filters['file'] ) ) {
|
502 |
+
$criteria[] = array(
|
503 |
+
'col' => 'file',
|
504 |
+
'op' => 'LIKE',
|
505 |
+
'val' => '%' . esc_sql( $filters['file'] ),
|
506 |
+
);
|
507 |
+
}
|
508 |
+
|
509 |
+
if ( ! empty( $filters['function'] ) ) {
|
510 |
+
$criteria[] = array(
|
511 |
+
'col' => 'function',
|
512 |
+
'op' => 'LIKE',
|
513 |
+
'val' => '%' . esc_sql( $filters['function'] ),
|
514 |
+
);
|
515 |
+
}
|
516 |
+
|
517 |
+
if ( ! empty( $filters['process_id'] ) && is_numeric( $filters['process_id'] ) ) {
|
518 |
+
$criteria[] = array( 'col' => 'process_id', 'val' => $filters['process_id'] );
|
519 |
+
}
|
520 |
+
|
521 |
+
if ( ! empty( $filters['logger'] ) ) {
|
522 |
+
$criteria[] = array(
|
523 |
+
'col' => 'logger',
|
524 |
+
'op' => 'LIKE',
|
525 |
+
'val' => '%' . esc_sql( $filters['logger'] ) . '%',
|
526 |
+
);
|
527 |
+
}
|
528 |
+
|
529 |
+
if ( ! empty( $filters['message'] ) ) {
|
530 |
+
$criteria[] = array(
|
531 |
+
'col' => 'message',
|
532 |
+
'op' => 'LIKE',
|
533 |
+
'val' => '%' . esc_sql( $filters['message'] ) . '%',
|
534 |
+
);
|
535 |
+
}
|
536 |
+
|
537 |
+
if ( 0 < count( $criteria ) ) {
|
538 |
+
$query .= "\nWHERE\n";
|
539 |
+
|
540 |
+
$first = true;
|
541 |
+
foreach ( $criteria as $c ) {
|
542 |
+
if ( ! $first ) {
|
543 |
+
$query .= "AND\n";
|
544 |
+
}
|
545 |
+
|
546 |
+
if ( is_array( $c['val'] ) ) {
|
547 |
+
$operator = 'IN';
|
548 |
+
|
549 |
+
for ( $i = 0, $len = count( $c['val'] ); $i < $len; $i ++ ) {
|
550 |
+
$c['val'][ $i ] = "'" . esc_sql( $c['val'][ $i ] ) . "'";
|
551 |
+
}
|
552 |
+
|
553 |
+
$val = '(' . implode( ',', $c['val'] ) . ')';
|
554 |
+
} else {
|
555 |
+
$operator = ! empty( $c['op'] ) ? $c['op'] : '=';
|
556 |
+
$val = "'" . esc_sql( $c['val'] ) . "'";
|
557 |
+
}
|
558 |
+
|
559 |
+
$query .= "`{$c['col']}` {$operator} {$val}\n";
|
560 |
+
|
561 |
+
$first = false;
|
562 |
+
}
|
563 |
+
}
|
564 |
+
}
|
565 |
+
|
566 |
+
if ( ! is_array( $order ) ) {
|
567 |
+
$order = array(
|
568 |
+
'col' => 'id',
|
569 |
+
'order' => 'desc'
|
570 |
+
);
|
571 |
+
}
|
572 |
+
|
573 |
+
$query .= " ORDER BY {$order['col']} {$order['order']} LIMIT {$offset},{$limit}";
|
574 |
+
|
575 |
+
return $query;
|
576 |
+
}
|
577 |
+
|
578 |
+
/**
|
579 |
+
* Load logs from DB.
|
580 |
+
*
|
581 |
+
* @author Vova Feldman (@svovaf)
|
582 |
+
* @since 1.2.1.6
|
583 |
+
*
|
584 |
+
* @param bool $filters
|
585 |
+
* @param int $limit
|
586 |
+
* @param int $offset
|
587 |
+
* @param bool $order
|
588 |
+
*
|
589 |
+
* @return object[]|null
|
590 |
+
*/
|
591 |
+
public static function load_db_logs(
|
592 |
+
$filters = false,
|
593 |
+
$limit = 200,
|
594 |
+
$offset = 0,
|
595 |
+
$order = false
|
596 |
+
) {
|
597 |
+
global $wpdb;
|
598 |
+
|
599 |
+
$query = self::build_db_logs_query(
|
600 |
+
$filters,
|
601 |
+
$limit,
|
602 |
+
$offset,
|
603 |
+
$order
|
604 |
+
);
|
605 |
+
|
606 |
+
return $wpdb->get_results( $query );
|
607 |
+
}
|
608 |
+
|
609 |
+
/**
|
610 |
+
* Load logs from DB.
|
611 |
+
*
|
612 |
+
* @author Vova Feldman (@svovaf)
|
613 |
+
* @since 1.2.1.6
|
614 |
+
*
|
615 |
+
* @param bool $filters
|
616 |
+
* @param string $filename
|
617 |
+
* @param int $limit
|
618 |
+
* @param int $offset
|
619 |
+
* @param bool $order
|
620 |
+
*
|
621 |
+
* @return false|string File download URL or false on failure.
|
622 |
+
*/
|
623 |
+
public static function download_db_logs(
|
624 |
+
$filters = false,
|
625 |
+
$filename = '',
|
626 |
+
$limit = 10000,
|
627 |
+
$offset = 0,
|
628 |
+
$order = false
|
629 |
+
) {
|
630 |
+
global $wpdb;
|
631 |
+
|
632 |
+
$query = self::build_db_logs_query(
|
633 |
+
$filters,
|
634 |
+
$limit,
|
635 |
+
$offset,
|
636 |
+
$order,
|
637 |
+
true
|
638 |
+
);
|
639 |
+
|
640 |
+
$upload_dir = wp_upload_dir();
|
641 |
+
if ( empty( $filename ) ) {
|
642 |
+
$filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
|
643 |
+
}
|
644 |
+
$filepath = rtrim( $upload_dir['path'], '/' ) . "/{$filename}";
|
645 |
+
|
646 |
+
$query .= " INTO OUTFILE '{$filepath}' FIELDS TERMINATED BY '\t' ESCAPED BY '\\\\' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'";
|
647 |
+
|
648 |
+
$columns = '';
|
649 |
+
for ( $i = 0, $len = count( self::$_log_columns ); $i < $len; $i ++ ) {
|
650 |
+
if ( $i > 0 ) {
|
651 |
+
$columns .= ', ';
|
652 |
+
}
|
653 |
+
|
654 |
+
$columns .= "'" . self::$_log_columns[ $i ] . "'";
|
655 |
+
}
|
656 |
+
|
657 |
+
$query = "SELECT {$columns} UNION ALL " . $query;
|
658 |
+
|
659 |
+
$result = $wpdb->query( $query );
|
660 |
+
|
661 |
+
if ( false === $result ) {
|
662 |
+
return false;
|
663 |
+
}
|
664 |
+
|
665 |
+
return rtrim( $upload_dir['url'], '/' ) . '/' . $filename;
|
666 |
+
}
|
667 |
+
|
668 |
+
/**
|
669 |
+
* @author Vova Feldman (@svovaf)
|
670 |
+
* @since 1.2.1.6
|
671 |
+
*
|
672 |
+
* @param string $filename
|
673 |
+
*
|
674 |
+
* @return string
|
675 |
+
*/
|
676 |
+
public static function get_logs_download_url( $filename = '' ) {
|
677 |
+
$upload_dir = wp_upload_dir();
|
678 |
+
if ( empty( $filename ) ) {
|
679 |
+
$filename = 'fs-logs-' . date( 'Y-m-d_H-i-s', WP_FS__SCRIPT_START_TIME ) . '.csv';
|
680 |
+
}
|
681 |
+
|
682 |
+
return rtrim( $upload_dir['url'], '/' ) . $filename;
|
683 |
+
}
|
684 |
+
|
685 |
+
#endregion
|
686 |
}
|
includes/pum-sdk/freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -83,6 +83,10 @@
|
|
83 |
'http_request_host_is_external_filter'
|
84 |
), 10, 3 );
|
85 |
}
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
|
88 |
/**
|
@@ -102,7 +106,7 @@
|
|
102 |
* @since 1.1.6
|
103 |
*
|
104 |
* @param string $file
|
105 |
-
* @param array
|
106 |
*/
|
107 |
function edit_and_echo_plugin_update_row( $file, $plugin_data ) {
|
108 |
$plugin_update_row = ob_get_clean();
|
@@ -162,9 +166,9 @@
|
|
162 |
*
|
163 |
* @uses FS_Api
|
164 |
*
|
165 |
-
* @param
|
166 |
*
|
167 |
-
* @return
|
168 |
*/
|
169 |
function pre_set_site_transient_update_plugins_filter( $transient_data ) {
|
170 |
$this->_logger->entrance();
|
@@ -316,22 +320,96 @@ if ( !isset($info->error) ) {
|
|
316 |
// Get plugin's newest update.
|
317 |
$new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
|
318 |
|
319 |
-
if ( $
|
320 |
-
$data->
|
321 |
-
|
322 |
-
$
|
323 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
}
|
325 |
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
}
|
331 |
|
332 |
-
$
|
333 |
-
|
334 |
|
335 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
}
|
337 |
}
|
83 |
'http_request_host_is_external_filter'
|
84 |
), 10, 3 );
|
85 |
}
|
86 |
+
|
87 |
+
if ( $this->_fs->is_premium() && $this->is_correct_folder_name() ) {
|
88 |
+
add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
|
89 |
+
}
|
90 |
}
|
91 |
|
92 |
/**
|
106 |
* @since 1.1.6
|
107 |
*
|
108 |
* @param string $file
|
109 |
+
* @param array $plugin_data
|
110 |
*/
|
111 |
function edit_and_echo_plugin_update_row( $file, $plugin_data ) {
|
112 |
$plugin_update_row = ob_get_clean();
|
166 |
*
|
167 |
* @uses FS_Api
|
168 |
*
|
169 |
+
* @param object $transient_data Update array build by WordPress.
|
170 |
*
|
171 |
+
* @return object Modified update array with custom plugin data.
|
172 |
*/
|
173 |
function pre_set_site_transient_update_plugins_filter( $transient_data ) {
|
174 |
$this->_logger->entrance();
|
320 |
// Get plugin's newest update.
|
321 |
$new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
|
322 |
|
323 |
+
if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
|
324 |
+
$data->version = $this->_fs->get_plugin_version();
|
325 |
+
} else {
|
326 |
+
if ( $is_addon ) {
|
327 |
+
$data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() );
|
328 |
+
$data->slug = $addon->slug;
|
329 |
+
$data->url = WP_FS__ADDRESS;
|
330 |
+
$data->package = $new_version->url;
|
331 |
+
}
|
332 |
+
|
333 |
+
if ( ! $plugin_in_repo ) {
|
334 |
+
$data->last_updated = ! is_null( $new_version->updated ) ? $new_version->updated : $new_version->created;
|
335 |
+
$data->requires = $new_version->requires_platform_version;
|
336 |
+
$data->tested = $new_version->tested_up_to_version;
|
337 |
+
}
|
338 |
+
|
339 |
+
$data->version = $new_version->version;
|
340 |
+
$data->download_link = $new_version->url;
|
341 |
}
|
342 |
|
343 |
+
return $data;
|
344 |
+
}
|
345 |
+
|
346 |
+
/**
|
347 |
+
* Checks if a given basename has a matching folder name
|
348 |
+
* with the current context plugin.
|
349 |
+
*
|
350 |
+
* @author Vova Feldman (@svovaf)
|
351 |
+
* @since 1.2.1.6
|
352 |
+
*
|
353 |
+
* @param string $basename Current plugin's basename.
|
354 |
+
*
|
355 |
+
* @return bool
|
356 |
+
*/
|
357 |
+
private function is_correct_folder_name( $basename = '' ) {
|
358 |
+
if ( empty( $basename ) ) {
|
359 |
+
$basename = $this->_fs->get_plugin_basename();
|
360 |
}
|
361 |
|
362 |
+
return ( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) != trim( dirname( $basename ), '/\\' ) );
|
363 |
+
}
|
364 |
|
365 |
+
/**
|
366 |
+
* This is a special after upgrade handler for migrating modules
|
367 |
+
* that didn't use the '-premium' suffix folder structure before
|
368 |
+
* the migration.
|
369 |
+
*
|
370 |
+
* @author Vova Feldman (@svovaf)
|
371 |
+
* @since 1.2.1.6
|
372 |
+
*
|
373 |
+
* @param bool $response Install response.
|
374 |
+
* @param array $hook_extra Extra arguments passed to hooked filters.
|
375 |
+
* @param array $result Installation result data.
|
376 |
+
*
|
377 |
+
* @return bool
|
378 |
+
*/
|
379 |
+
function _maybe_update_folder_name( $response, $hook_extra, $result ) {
|
380 |
+
$basename = $this->_fs->get_plugin_basename();
|
381 |
+
|
382 |
+
if ( true !== $response ||
|
383 |
+
empty( $hook_extra ) ||
|
384 |
+
empty( $hook_extra['plugin'] ) ||
|
385 |
+
$basename !== $hook_extra['plugin']
|
386 |
+
) {
|
387 |
+
return $response;
|
388 |
+
}
|
389 |
+
|
390 |
+
$active_plugins_basenames = get_option( 'active_plugins' );
|
391 |
+
|
392 |
+
for ( $i = 0, $len = count( $active_plugins_basenames ); $i < $len; $i ++ ) {
|
393 |
+
if ( $basename === $active_plugins_basenames[ $i ] ) {
|
394 |
+
// Get filename including extension.
|
395 |
+
$filename = basename( $basename );
|
396 |
+
|
397 |
+
$new_basename = plugin_basename(
|
398 |
+
trailingslashit( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) ) .
|
399 |
+
$filename
|
400 |
+
);
|
401 |
+
|
402 |
+
// Verify that the expected correct path exists.
|
403 |
+
if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $new_basename ) ) ) {
|
404 |
+
// Override active plugin name.
|
405 |
+
$active_plugins_basenames[ $i ] = $new_basename;
|
406 |
+
update_option( 'active_plugins', $active_plugins_basenames );
|
407 |
+
}
|
408 |
+
|
409 |
+
break;
|
410 |
+
}
|
411 |
+
}
|
412 |
+
|
413 |
+
return $response;
|
414 |
}
|
415 |
}
|
includes/pum-sdk/freemius/includes/class-fs-security.php
CHANGED
@@ -12,6 +12,9 @@
|
|
12 |
|
13 |
define( 'WP_FS__SECURITY_PARAMS_PREFIX', 's_' );
|
14 |
|
|
|
|
|
|
|
15 |
class FS_Security {
|
16 |
/**
|
17 |
* @var FS_Security
|
@@ -24,6 +27,9 @@
|
|
24 |
*/
|
25 |
private static $_logger;
|
26 |
|
|
|
|
|
|
|
27 |
public static function instance() {
|
28 |
if ( ! isset( self::$_instance ) ) {
|
29 |
self::$_instance = new FS_Security();
|
@@ -76,4 +82,4 @@
|
|
76 |
's_ctx_secure' => $this->get_secure_token( $entity, $timestamp, $action ),
|
77 |
);
|
78 |
}
|
79 |
-
}
|
12 |
|
13 |
define( 'WP_FS__SECURITY_PARAMS_PREFIX', 's_' );
|
14 |
|
15 |
+
/**
|
16 |
+
* Class FS_Security
|
17 |
+
*/
|
18 |
class FS_Security {
|
19 |
/**
|
20 |
* @var FS_Security
|
27 |
*/
|
28 |
private static $_logger;
|
29 |
|
30 |
+
/**
|
31 |
+
* @return \FS_Security
|
32 |
+
*/
|
33 |
public static function instance() {
|
34 |
if ( ! isset( self::$_instance ) ) {
|
35 |
self::$_instance = new FS_Security();
|
82 |
's_ctx_secure' => $this->get_secure_token( $entity, $timestamp, $action ),
|
83 |
);
|
84 |
}
|
85 |
+
}
|
includes/pum-sdk/freemius/includes/debug/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/entities/class-fs-plugin-license.php
CHANGED
@@ -10,6 +10,9 @@
|
|
10 |
exit;
|
11 |
}
|
12 |
|
|
|
|
|
|
|
13 |
class FS_Plugin_License extends FS_Entity {
|
14 |
|
15 |
#region Properties
|
@@ -74,6 +77,11 @@
|
|
74 |
parent::__construct( $license );
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
77 |
static function get_type() {
|
78 |
return 'license';
|
79 |
}
|
@@ -213,4 +221,4 @@
|
|
213 |
function is_first_payment_pending() {
|
214 |
return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
|
215 |
}
|
216 |
-
}
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
+
/**
|
14 |
+
* Class FS_Plugin_License
|
15 |
+
*/
|
16 |
class FS_Plugin_License extends FS_Entity {
|
17 |
|
18 |
#region Properties
|
77 |
parent::__construct( $license );
|
78 |
}
|
79 |
|
80 |
+
/**
|
81 |
+
* Get entity type.
|
82 |
+
*
|
83 |
+
* @return string
|
84 |
+
*/
|
85 |
static function get_type() {
|
86 |
return 'license';
|
87 |
}
|
221 |
function is_first_payment_pending() {
|
222 |
return ( WP_FS__TIME_24_HOURS_IN_SEC >= strtotime( $this->expiration ) - strtotime( $this->created ) );
|
223 |
}
|
224 |
+
}
|
includes/pum-sdk/freemius/includes/entities/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/fs-core-functions.php
CHANGED
@@ -34,29 +34,29 @@
|
|
34 |
|
35 |
function fs_include_template( $path, &$params = null ) {
|
36 |
$VARS = &$params;
|
37 |
-
include
|
38 |
}
|
39 |
|
40 |
function fs_include_once_template( $path, &$params = null ) {
|
41 |
$VARS = &$params;
|
42 |
-
include_once
|
43 |
}
|
44 |
|
45 |
function fs_require_template( $path, &$params = null ) {
|
46 |
$VARS = &$params;
|
47 |
-
require
|
48 |
}
|
49 |
|
50 |
function fs_require_once_template( $path, &$params = null ) {
|
51 |
$VARS = &$params;
|
52 |
-
require_once
|
53 |
}
|
54 |
|
55 |
function fs_get_template( $path, &$params = null ) {
|
56 |
ob_start();
|
57 |
|
58 |
$VARS = &$params;
|
59 |
-
require
|
60 |
|
61 |
return ob_get_clean();
|
62 |
}
|
@@ -503,3 +503,92 @@
|
|
503 |
// If both have priority return the winner.
|
504 |
return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
|
505 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
35 |
function fs_include_template( $path, &$params = null ) {
|
36 |
$VARS = &$params;
|
37 |
+
include fs_get_template_path( $path );
|
38 |
}
|
39 |
|
40 |
function fs_include_once_template( $path, &$params = null ) {
|
41 |
$VARS = &$params;
|
42 |
+
include_once fs_get_template_path( $path );
|
43 |
}
|
44 |
|
45 |
function fs_require_template( $path, &$params = null ) {
|
46 |
$VARS = &$params;
|
47 |
+
require fs_get_template_path( $path );
|
48 |
}
|
49 |
|
50 |
function fs_require_once_template( $path, &$params = null ) {
|
51 |
$VARS = &$params;
|
52 |
+
require_once fs_get_template_path( $path );
|
53 |
}
|
54 |
|
55 |
function fs_get_template( $path, &$params = null ) {
|
56 |
ob_start();
|
57 |
|
58 |
$VARS = &$params;
|
59 |
+
require fs_get_template_path( $path );
|
60 |
|
61 |
return ob_get_clean();
|
62 |
}
|
503 |
// If both have priority return the winner.
|
504 |
return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
|
505 |
}
|
506 |
+
|
507 |
+
#--------------------------------------------------------------------------------
|
508 |
+
#region Localization
|
509 |
+
#--------------------------------------------------------------------------------
|
510 |
+
|
511 |
+
/**
|
512 |
+
* @author Vova Feldman
|
513 |
+
* @since 1.2.1.6
|
514 |
+
*
|
515 |
+
* @param string $key
|
516 |
+
* @param string $slug
|
517 |
+
*
|
518 |
+
* @return string
|
519 |
+
*/
|
520 |
+
function fs_esc_attr($key, $slug) {
|
521 |
+
return esc_attr( __fs( $key, $slug ) );
|
522 |
+
}
|
523 |
+
|
524 |
+
/**
|
525 |
+
* @author Vova Feldman
|
526 |
+
* @since 1.2.1.6
|
527 |
+
*
|
528 |
+
* @param string $key
|
529 |
+
* @param string $slug
|
530 |
+
*/
|
531 |
+
function fs_esc_attr_echo($key, $slug) {
|
532 |
+
echo esc_attr( __fs( $key, $slug ) );
|
533 |
+
}
|
534 |
+
|
535 |
+
/**
|
536 |
+
* @author Vova Feldman
|
537 |
+
* @since 1.2.1.6
|
538 |
+
*
|
539 |
+
* @param string $key
|
540 |
+
* @param string $slug
|
541 |
+
*
|
542 |
+
* @return string
|
543 |
+
*/
|
544 |
+
function fs_esc_js($key, $slug) {
|
545 |
+
return esc_js( __fs( $key, $slug ) );
|
546 |
+
}
|
547 |
+
|
548 |
+
/**
|
549 |
+
* @author Vova Feldman
|
550 |
+
* @since 1.2.1.6
|
551 |
+
*
|
552 |
+
* @param string $key
|
553 |
+
* @param string $slug
|
554 |
+
*/
|
555 |
+
function fs_esc_js_echo($key, $slug) {
|
556 |
+
echo esc_js( __fs( $key, $slug ) );
|
557 |
+
}
|
558 |
+
|
559 |
+
/**
|
560 |
+
* @author Vova Feldman
|
561 |
+
* @since 1.2.1.6
|
562 |
+
*
|
563 |
+
* @param string $key
|
564 |
+
* @param string $slug
|
565 |
+
*/
|
566 |
+
function fs_json_encode_echo($key, $slug) {
|
567 |
+
echo json_encode( __fs( $key, $slug ) );
|
568 |
+
}
|
569 |
+
|
570 |
+
/**
|
571 |
+
* @author Vova Feldman
|
572 |
+
* @since 1.2.1.6
|
573 |
+
*
|
574 |
+
* @param string $key
|
575 |
+
* @param string $slug
|
576 |
+
*
|
577 |
+
* @return string
|
578 |
+
*/
|
579 |
+
function fs_esc_html($key, $slug) {
|
580 |
+
return esc_html( __fs( $key, $slug ) );
|
581 |
+
}
|
582 |
+
|
583 |
+
/**
|
584 |
+
* @author Vova Feldman
|
585 |
+
* @since 1.2.1.6
|
586 |
+
*
|
587 |
+
* @param string $key
|
588 |
+
* @param string $slug
|
589 |
+
*/
|
590 |
+
function fs_esc_html_echo($key, $slug) {
|
591 |
+
echo esc_html( __fs( $key, $slug ) );
|
592 |
+
}
|
593 |
+
|
594 |
+
#endregion
|
includes/pum-sdk/freemius/includes/fs-essential-functions.php
CHANGED
@@ -163,11 +163,9 @@
|
|
163 |
* @global $fs_text , $fs_text_overrides
|
164 |
*/
|
165 |
function __fs( $key, $slug = 'freemius' ) {
|
166 |
-
global $fs_text,
|
167 |
-
|
168 |
-
|
169 |
-
require_once( ( defined( 'WP_FS__DIR_INCLUDES' ) ? WP_FS__DIR_INCLUDES : dirname( __FILE__ ) ) . '/i18n.php' );
|
170 |
-
}
|
171 |
|
172 |
if ( isset( $fs_text_overrides[ $slug ] ) ) {
|
173 |
if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
|
@@ -180,9 +178,23 @@
|
|
180 |
}
|
181 |
}
|
182 |
|
183 |
-
|
184 |
-
$
|
185 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
}
|
187 |
|
188 |
/**
|
@@ -267,7 +279,7 @@
|
|
267 |
* will catch it.
|
268 |
*/
|
269 |
if ( ! function_exists( 'get_plugins' ) ) {
|
270 |
-
require_once
|
271 |
}
|
272 |
|
273 |
$all_plugins = get_plugins();
|
163 |
* @global $fs_text , $fs_text_overrides
|
164 |
*/
|
165 |
function __fs( $key, $slug = 'freemius' ) {
|
166 |
+
global $fs_text,
|
167 |
+
$fs_module_info_text,
|
168 |
+
$fs_text_overrides;
|
|
|
|
|
169 |
|
170 |
if ( isset( $fs_text_overrides[ $slug ] ) ) {
|
171 |
if ( isset( $fs_text_overrides[ $slug ][ $key ] ) ) {
|
178 |
}
|
179 |
}
|
180 |
|
181 |
+
if ( ! isset( $fs_text ) ) {
|
182 |
+
$dir = defined( 'WP_FS__DIR_INCLUDES' ) ?
|
183 |
+
WP_FS__DIR_INCLUDES :
|
184 |
+
dirname( __FILE__ );
|
185 |
+
|
186 |
+
require_once $dir . '/i18n.php';
|
187 |
+
}
|
188 |
+
|
189 |
+
if ( isset( $fs_text[ $key ] ) ) {
|
190 |
+
return $fs_text[ $key ];
|
191 |
+
}
|
192 |
+
|
193 |
+
if ( isset( $fs_module_info_text[ $key ] ) ) {
|
194 |
+
return $fs_module_info_text[ $key ];
|
195 |
+
}
|
196 |
+
|
197 |
+
return $key;
|
198 |
}
|
199 |
|
200 |
/**
|
279 |
* will catch it.
|
280 |
*/
|
281 |
if ( ! function_exists( 'get_plugins' ) ) {
|
282 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
283 |
}
|
284 |
|
285 |
$all_plugins = get_plugins();
|
includes/pum-sdk/freemius/includes/fs-plugin-info-dialog.php
CHANGED
@@ -151,15 +151,15 @@
|
|
151 |
if ( $is_wordpress_org ) {
|
152 |
$repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
|
153 |
'plugin_information', (object) array(
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
|
164 |
if ( ! empty( $repo_data ) ) {
|
165 |
$data = $repo_data;
|
@@ -349,20 +349,20 @@
|
|
349 |
return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . __fs( 'download-latest', $api->slug ) . '</a>';
|
350 |
} else {
|
351 |
if ( $status['url'] ) {
|
352 |
-
return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' .
|
353 |
}
|
354 |
}
|
355 |
break;
|
356 |
case 'update_available':
|
357 |
if ( $status['url'] ) {
|
358 |
-
return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' .
|
359 |
}
|
360 |
break;
|
361 |
case 'newer_installed':
|
362 |
-
return '<a class="button button-primary right disabled">' . sprintf(
|
363 |
break;
|
364 |
case 'latest_installed':
|
365 |
-
return '<a class="button button-primary right disabled">' .
|
366 |
break;
|
367 |
}
|
368 |
|
@@ -475,13 +475,13 @@
|
|
475 |
);
|
476 |
|
477 |
$plugins_section_titles = array(
|
478 |
-
'description' =>
|
479 |
-
'installation' =>
|
480 |
-
'faq' =>
|
481 |
-
'screenshots' =>
|
482 |
-
'changelog' =>
|
483 |
-
'reviews' =>
|
484 |
-
'other_notes' =>
|
485 |
);
|
486 |
|
487 |
// Sanitize HTML
|
@@ -506,7 +506,7 @@
|
|
506 |
$section = array_shift( $section_titles );
|
507 |
}
|
508 |
|
509 |
-
iframe_header(
|
510 |
|
511 |
$_with_banner = '';
|
512 |
|
@@ -530,7 +530,7 @@
|
|
530 |
}
|
531 |
}
|
532 |
</style>
|
533 |
-
|
534 |
}
|
535 |
|
536 |
echo '<div id="plugin-information-scrollable">';
|
@@ -560,371 +560,383 @@
|
|
560 |
?>
|
561 |
<div id="<?php echo $_tab; ?>-content" class='<?php echo $_with_banner; ?>'>
|
562 |
<div class="fyi">
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
}
|
598 |
-
?>
|
599 |
-
<a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
|
600 |
-
data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
|
601 |
-
<?php if ( $is_featured ) : ?>
|
602 |
-
<label>★ <?php _efs( 'best', $api->slug ) ?> ★</label>
|
603 |
-
<?php endif ?>
|
604 |
-
<?php _efs( $cycle, $api->slug ) ?>
|
605 |
-
</a>
|
606 |
-
<?php endif ?>
|
607 |
-
<?php $i ++; endforeach ?>
|
608 |
-
<?php wp_enqueue_script( 'jquery' ) ?>
|
609 |
-
<script type="text/javascript">
|
610 |
-
(function ($, undef) {
|
611 |
-
var
|
612 |
-
_formatBillingFrequency = function (cycle) {
|
613 |
-
switch (cycle) {
|
614 |
-
case 'monthly':
|
615 |
-
return '<?php printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug)) ?>';
|
616 |
-
case 'annual':
|
617 |
-
return '<?php printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug)) ?>';
|
618 |
-
case 'lifetime':
|
619 |
-
return '<?php printf(__fs('billed-x', $api->slug), __fs('once', $api->slug)) ?>';
|
620 |
-
}
|
621 |
-
},
|
622 |
-
_formatLicensesTitle = function (pricing) {
|
623 |
-
switch (pricing.licenses) {
|
624 |
-
case 1:
|
625 |
-
return '<?php _efs( 'license-single-site', $api->slug ) ?>';
|
626 |
-
case null:
|
627 |
-
return '<?php _efs( 'license-unlimited', $api->slug ) ?>';
|
628 |
-
default:
|
629 |
-
return '<?php _efs( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
|
630 |
-
}
|
631 |
-
},
|
632 |
-
_formatPrice = function (pricing, cycle, multipleLicenses) {
|
633 |
-
if (undef === multipleLicenses)
|
634 |
-
multipleLicenses = true;
|
635 |
-
|
636 |
-
var priceCycle;
|
637 |
-
switch (cycle) {
|
638 |
-
case 'monthly':
|
639 |
-
priceCycle = ' / <?php _efs('mo', $api->slug) ?>';
|
640 |
-
break;
|
641 |
-
case 'lifetime':
|
642 |
-
priceCycle = '';
|
643 |
-
break;
|
644 |
-
case 'annual':
|
645 |
-
default:
|
646 |
-
priceCycle = ' / <?php _efs('year', $api->slug) ?>';
|
647 |
-
break;
|
648 |
-
}
|
649 |
-
|
650 |
-
if (!multipleLicenses && 1 == pricing.licenses) {
|
651 |
-
return '$' + pricing.price + priceCycle;
|
652 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
653 |
|
654 |
-
|
655 |
-
|
656 |
-
_checkoutUrl = function (plan, pricing, cycle) {
|
657 |
-
return '<?php echo esc_url_raw(remove_query_arg('billing_cycle', add_query_arg(array('plugin_id' => $plan->plugin_id), $api->checkout_link))) ?>' +
|
658 |
-
'&plan_id=' + plan +
|
659 |
-
'&pricing_id=' + pricing +
|
660 |
-
'&billing_cycle=' + cycle<?php if ($plan->has_trial()) { echo " + '&trial=true'"; }?>;
|
661 |
-
},
|
662 |
-
_updateCtaUrl = function (plan, pricing, cycle) {
|
663 |
-
$('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', _checkoutUrl(plan, pricing, cycle));
|
664 |
-
};
|
665 |
-
|
666 |
-
$(document).ready(function () {
|
667 |
-
var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
|
668 |
-
$plan.find('input[type=radio]').live('click', function () {
|
669 |
-
_updateCtaUrl(
|
670 |
-
$plan.attr('data-plan-id'),
|
671 |
-
$(this).val(),
|
672 |
-
$plan.find('.nav-tab-active').attr('data-billing-cycle')
|
673 |
-
);
|
674 |
-
|
675 |
-
$plan.find('.fs-trial-terms .fs-price').html(
|
676 |
-
$(this).parents('label').find('.fs-price').html()
|
677 |
-
);
|
678 |
-
});
|
679 |
-
|
680 |
-
$plan.find('.nav-tab').click(function () {
|
681 |
-
if ($(this).hasClass('nav-tab-active'))
|
682 |
-
return;
|
683 |
-
|
684 |
-
var $this = $(this),
|
685 |
-
billingCycle = $this.attr('data-billing-cycle'),
|
686 |
-
pricing = JSON.parse($this.attr('data-pricing')),
|
687 |
-
$pricesList = $this.parents('.fs-plan').find('.fs-pricing-body .fs-licenses'),
|
688 |
-
html = '';
|
689 |
-
|
690 |
-
// Un-select previously selected tab.
|
691 |
-
$plan.find('.nav-tab').removeClass('nav-tab-active');
|
692 |
-
|
693 |
-
// Select current tab.
|
694 |
-
$this.addClass('nav-tab-active');
|
695 |
-
|
696 |
-
// Render licenses prices.
|
697 |
-
if (1 == pricing.length) {
|
698 |
-
html = '<li><label><?php _efs( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
|
699 |
-
} else {
|
700 |
-
for (var i = 0; i < pricing.length; i++) {
|
701 |
-
html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
|
702 |
}
|
703 |
-
}
|
704 |
-
$pricesList.html(html);
|
705 |
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
_updateCtaUrl(
|
712 |
$plan.attr('data-plan-id'),
|
713 |
-
|
714 |
-
|
715 |
);
|
716 |
-
}
|
717 |
|
718 |
-
|
719 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
720 |
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
|
|
|
|
|
|
|
|
|
|
727 |
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
<div
|
750 |
-
|
751 |
-
<?php $
|
752 |
-
|
753 |
-
<
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
<i class="dashicons dashicons-yes"></i><?php printf( __fs( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
|
758 |
-
</li>
|
759 |
</ul>
|
760 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
761 |
</div>
|
762 |
-
|
763 |
-
|
764 |
-
<?php
|
765 |
<?php endif ?>
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
<?php
|
773 |
-
}
|
774 |
-
if ( ! empty( $api->author ) ) {
|
775 |
-
?>
|
776 |
-
<li>
|
777 |
-
<strong><?php _e( 'Author:' ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
|
778 |
-
</li>
|
779 |
-
<?php
|
780 |
}
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
786 |
</span></li>
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
841 |
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
|
|
|
|
|
|
|
|
848 |
<span class="counter-label"><a
|
849 |
href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
|
850 |
target="_blank"
|
851 |
-
title="<?php echo esc_attr( sprintf(
|
852 |
-
|
853 |
<span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
|
854 |
</span>
|
855 |
-
|
856 |
-
|
857 |
-
|
|
|
858 |
}
|
859 |
-
|
860 |
-
if ( ! empty( $api->contributors ) ) {
|
861 |
-
?>
|
862 |
-
<h3><?php _e( 'Contributors' ); ?></h3>
|
863 |
-
<ul class="contributors">
|
864 |
-
<?php
|
865 |
-
foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
|
866 |
-
if ( empty( $contrib_username ) && empty( $contrib_profile ) ) {
|
867 |
-
continue;
|
868 |
-
}
|
869 |
-
if ( empty( $contrib_username ) ) {
|
870 |
-
$contrib_username = preg_replace( '/^.+\/(.+)\/?$/', '\1', $contrib_profile );
|
871 |
-
}
|
872 |
-
$contrib_username = sanitize_user( $contrib_username );
|
873 |
-
if ( empty( $contrib_profile ) ) {
|
874 |
-
echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</li>";
|
875 |
-
} else {
|
876 |
-
echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</a></li>";
|
877 |
-
}
|
878 |
-
}
|
879 |
?>
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
884 |
<?php } ?>
|
885 |
-
<?php } ?>
|
886 |
</div>
|
887 |
<div id="section-holder" class="wrap">
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
|
899 |
-
|
900 |
|
901 |
-
|
902 |
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
|
|
|
|
|
|
|
|
913 |
}
|
914 |
-
echo "
|
915 |
-
echo
|
916 |
-
echo "
|
917 |
-
|
918 |
-
echo "</div>\n";
|
919 |
-
echo "</div>\n";
|
920 |
-
echo "</div>\n"; // #plugin-information-scrollable
|
921 |
-
echo "<div id='$tab-footer'>\n";
|
922 |
|
923 |
-
|
924 |
|
925 |
-
|
926 |
|
927 |
-
|
928 |
-
|
929 |
-
}
|
930 |
-
}
|
151 |
if ( $is_wordpress_org ) {
|
152 |
$repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
|
153 |
'plugin_information', (object) array(
|
154 |
+
'slug' => $selected_addon->slug,
|
155 |
+
'is_ssl' => is_ssl(),
|
156 |
+
'fields' => array(
|
157 |
+
'banners' => true,
|
158 |
+
'reviews' => true,
|
159 |
+
'downloaded' => false,
|
160 |
+
'active_installs' => true
|
161 |
+
)
|
162 |
+
) );
|
163 |
|
164 |
if ( ! empty( $repo_data ) ) {
|
165 |
$data = $repo_data;
|
349 |
return ' <a class="button button-primary right" href="' . esc_url( $api->download_link ) . '" target="_blank">' . __fs( 'download-latest', $api->slug ) . '</a>';
|
350 |
} else {
|
351 |
if ( $status['url'] ) {
|
352 |
+
return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-now', $api->slug ) . '</a>';
|
353 |
}
|
354 |
}
|
355 |
break;
|
356 |
case 'update_available':
|
357 |
if ( $status['url'] ) {
|
358 |
+
return '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __fs( 'install-update-now', $api->slug ) . '</a>';
|
359 |
}
|
360 |
break;
|
361 |
case 'newer_installed':
|
362 |
+
return '<a class="button button-primary right disabled">' . sprintf( __fs( 'newer-installed', $api->slug ), $status['version'] ) . '</a>';
|
363 |
break;
|
364 |
case 'latest_installed':
|
365 |
+
return '<a class="button button-primary right disabled">' . __fs( 'latest-installed', $api->slug ) . '</a>';
|
366 |
break;
|
367 |
}
|
368 |
|
475 |
);
|
476 |
|
477 |
$plugins_section_titles = array(
|
478 |
+
'description' => __fs( 'description', $api->slug ),
|
479 |
+
'installation' => __fs( 'installation', $api->slug ),
|
480 |
+
'faq' => __fs( 'faq', $api->slug ),
|
481 |
+
'screenshots' => __fs( 'screenshots', $api->slug ),
|
482 |
+
'changelog' => __fs( 'changelog', $api->slug ),
|
483 |
+
'reviews' => __fs( 'reviews', $api->slug ),
|
484 |
+
'other_notes' => __fs( 'other_notes', $api->slug ),
|
485 |
);
|
486 |
|
487 |
// Sanitize HTML
|
506 |
$section = array_shift( $section_titles );
|
507 |
}
|
508 |
|
509 |
+
iframe_header( __fs( 'plugin-install', $api->slug ) );
|
510 |
|
511 |
$_with_banner = '';
|
512 |
|
530 |
}
|
531 |
}
|
532 |
</style>
|
533 |
+
<?php
|
534 |
}
|
535 |
|
536 |
echo '<div id="plugin-information-scrollable">';
|
560 |
?>
|
561 |
<div id="<?php echo $_tab; ?>-content" class='<?php echo $_with_banner; ?>'>
|
562 |
<div class="fyi">
|
563 |
+
<?php if ( $api->is_paid ) : ?>
|
564 |
+
<?php if ( isset( $api->plans ) ) : ?>
|
565 |
+
<div class="plugin-information-pricing">
|
566 |
+
<?php foreach ( $api->plans as $plan ) : ?>
|
567 |
+
<?php
|
568 |
+
/**
|
569 |
+
* @var FS_Plugin_Plan $plan
|
570 |
+
*/
|
571 |
+
?>
|
572 |
+
<?php $first_pricing = $plan->pricing[0] ?>
|
573 |
+
<?php $is_multi_cycle = $first_pricing->is_multi_cycle() ?>
|
574 |
+
<div class="fs-plan<?php if ( ! $is_multi_cycle ) {
|
575 |
+
echo ' fs-single-cycle';
|
576 |
+
} ?>" data-plan-id="<?php echo $plan->id ?>">
|
577 |
+
<h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan', $api->slug ), $plan->title ) ?></h3>
|
578 |
+
<?php $has_annual = $first_pricing->has_annual() ?>
|
579 |
+
<?php $has_monthly = $first_pricing->has_monthly() ?>
|
580 |
+
<div class="nav-tab-wrapper">
|
581 |
+
<?php $billing_cycles = array( 'monthly', 'annual', 'lifetime' ) ?>
|
582 |
+
<?php $i = 0;
|
583 |
+
foreach ( $billing_cycles as $cycle ) : ?>
|
584 |
+
<?php $prop = "{$cycle}_price";
|
585 |
+
if ( isset( $first_pricing->{$prop} ) ) : ?>
|
586 |
+
<?php $is_featured = ( 'annual' === $cycle && $is_multi_cycle ) ?>
|
587 |
+
<?php
|
588 |
+
$prices = array();
|
589 |
+
foreach ( $plan->pricing as $pricing ) {
|
590 |
+
if ( isset( $pricing->{$prop} ) ) {
|
591 |
+
$prices[] = array(
|
592 |
+
'id' => $pricing->id,
|
593 |
+
'licenses' => $pricing->licenses,
|
594 |
+
'price' => $pricing->{$prop}
|
595 |
+
);
|
596 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
597 |
}
|
598 |
+
?>
|
599 |
+
<a class="nav-tab" data-billing-cycle="<?php echo $cycle ?>"
|
600 |
+
data-pricing="<?php echo esc_attr( json_encode( $prices ) ) ?>">
|
601 |
+
<?php if ( $is_featured ) : ?>
|
602 |
+
<label>★ <?php _efs( 'best', $api->slug ) ?> ★</label>
|
603 |
+
<?php endif ?>
|
604 |
+
<?php _efs( $cycle, $api->slug ) ?>
|
605 |
+
</a>
|
606 |
+
<?php endif ?>
|
607 |
+
<?php $i ++; endforeach ?>
|
608 |
+
<?php wp_enqueue_script( 'jquery' ) ?>
|
609 |
+
<script type="text/javascript">
|
610 |
+
(function ($, undef) {
|
611 |
+
var
|
612 |
+
_formatBillingFrequency = function (cycle) {
|
613 |
+
switch (cycle) {
|
614 |
+
case 'monthly':
|
615 |
+
return '<?php printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug)) ?>';
|
616 |
+
case 'annual':
|
617 |
+
return '<?php printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug)) ?>';
|
618 |
+
case 'lifetime':
|
619 |
+
return '<?php printf(__fs('billed-x', $api->slug), __fs('once', $api->slug)) ?>';
|
620 |
+
}
|
621 |
+
},
|
622 |
+
_formatLicensesTitle = function (pricing) {
|
623 |
+
switch (pricing.licenses) {
|
624 |
+
case 1:
|
625 |
+
return '<?php _efs( 'license-single-site', $api->slug ) ?>';
|
626 |
+
case null:
|
627 |
+
return '<?php _efs( 'license-unlimited', $api->slug ) ?>';
|
628 |
+
default:
|
629 |
+
return '<?php _efs( 'license-x-sites', $api->slug ) ?>'.replace('%s', pricing.licenses);
|
630 |
+
}
|
631 |
+
},
|
632 |
+
_formatPrice = function (pricing, cycle, multipleLicenses) {
|
633 |
+
if (undef === multipleLicenses)
|
634 |
+
multipleLicenses = true;
|
635 |
+
|
636 |
+
var priceCycle;
|
637 |
+
switch (cycle) {
|
638 |
+
case 'monthly':
|
639 |
+
priceCycle = ' / <?php _efs('mo', $api->slug) ?>';
|
640 |
+
break;
|
641 |
+
case 'lifetime':
|
642 |
+
priceCycle = '';
|
643 |
+
break;
|
644 |
+
case 'annual':
|
645 |
+
default:
|
646 |
+
priceCycle = ' / <?php _efs('year', $api->slug) ?>';
|
647 |
+
break;
|
648 |
+
}
|
649 |
|
650 |
+
if (!multipleLicenses && 1 == pricing.licenses) {
|
651 |
+
return '$' + pricing.price + priceCycle;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
652 |
}
|
|
|
|
|
653 |
|
654 |
+
return _formatLicensesTitle(pricing) + ' - <var class="fs-price">$' + pricing.price + priceCycle + '</var>';
|
655 |
+
},
|
656 |
+
_checkoutUrl = function (plan, pricing, cycle) {
|
657 |
+
return '<?php echo esc_url_raw(remove_query_arg('billing_cycle', add_query_arg(array('plugin_id' => $plan->plugin_id), $api->checkout_link))) ?>' +
|
658 |
+
'&plan_id=' + plan +
|
659 |
+
'&pricing_id=' + pricing +
|
660 |
+
'&billing_cycle=' + cycle<?php if ($plan->has_trial()) { echo " + '&trial=true'"; }?>;
|
661 |
+
},
|
662 |
+
_updateCtaUrl = function (plan, pricing, cycle) {
|
663 |
+
$('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', _checkoutUrl(plan, pricing, cycle));
|
664 |
+
};
|
665 |
+
|
666 |
+
$(document).ready(function () {
|
667 |
+
var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
|
668 |
+
$plan.find('input[type=radio]').live('click', function () {
|
669 |
_updateCtaUrl(
|
670 |
$plan.attr('data-plan-id'),
|
671 |
+
$(this).val(),
|
672 |
+
$plan.find('.nav-tab-active').attr('data-billing-cycle')
|
673 |
);
|
|
|
674 |
|
675 |
+
$plan.find('.fs-trial-terms .fs-price').html(
|
676 |
+
$(this).parents('label').find('.fs-price').html()
|
677 |
+
);
|
678 |
+
});
|
679 |
+
|
680 |
+
$plan.find('.nav-tab').click(function () {
|
681 |
+
if ($(this).hasClass('nav-tab-active'))
|
682 |
+
return;
|
683 |
+
|
684 |
+
var $this = $(this),
|
685 |
+
billingCycle = $this.attr('data-billing-cycle'),
|
686 |
+
pricing = JSON.parse($this.attr('data-pricing')),
|
687 |
+
$pricesList = $this.parents('.fs-plan').find('.fs-pricing-body .fs-licenses'),
|
688 |
+
html = '';
|
689 |
+
|
690 |
+
// Un-select previously selected tab.
|
691 |
+
$plan.find('.nav-tab').removeClass('nav-tab-active');
|
692 |
+
|
693 |
+
// Select current tab.
|
694 |
+
$this.addClass('nav-tab-active');
|
695 |
+
|
696 |
+
// Render licenses prices.
|
697 |
+
if (1 == pricing.length) {
|
698 |
+
html = '<li><label><?php _efs( 'price', $api->slug ) ?>: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
|
699 |
+
} else {
|
700 |
+
for (var i = 0; i < pricing.length; i++) {
|
701 |
+
html += '<li><label><input name="pricing-<?php echo $plan->id ?>" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
|
702 |
+
}
|
703 |
+
}
|
704 |
+
$pricesList.html(html);
|
705 |
|
706 |
+
if (1 < pricing.length) {
|
707 |
+
// Select first license option.
|
708 |
+
$pricesList.find('li:first input').click();
|
709 |
+
}
|
710 |
+
else {
|
711 |
+
_updateCtaUrl(
|
712 |
+
$plan.attr('data-plan-id'),
|
713 |
+
pricing[0].id,
|
714 |
+
billingCycle
|
715 |
+
);
|
716 |
+
}
|
717 |
|
718 |
+
// Update billing frequency.
|
719 |
+
$plan.find('.fs-billing-frequency').html(_formatBillingFrequency(billingCycle));
|
720 |
+
|
721 |
+
if ('annual' === billingCycle) {
|
722 |
+
$plan.find('.fs-annual-discount').show();
|
723 |
+
} else {
|
724 |
+
$plan.find('.fs-annual-discount').hide();
|
725 |
+
}
|
726 |
+
});
|
727 |
+
|
728 |
+
<?php if ( $has_annual ) : ?>
|
729 |
+
// Select annual by default.
|
730 |
+
$plan.find('.nav-tab[data-billing-cycle=annual]').click();
|
731 |
+
<?php else : ?>
|
732 |
+
// Select first tab.
|
733 |
+
$plan.find('.nav-tab:first').click();
|
734 |
+
<?php endif ?>
|
735 |
+
});
|
736 |
+
}(jQuery));
|
737 |
+
</script>
|
738 |
+
</div>
|
739 |
+
<div class="fs-pricing-body">
|
740 |
+
<span class="fs-billing-frequency"></span>
|
741 |
+
<?php $annual_discount = ( $has_annual && $has_monthly ) ? $plan->pricing[0]->annual_discount_percentage() : 0 ?>
|
742 |
+
<?php if ( $annual_discount > 0 ) : ?>
|
743 |
+
<span
|
744 |
+
class="fs-annual-discount"><?php printf( __fs( 'save-x', $api->slug ), $annual_discount . '%' ) ?></span>
|
745 |
+
<?php endif ?>
|
746 |
+
<ul class="fs-licenses">
|
|
|
|
|
747 |
</ul>
|
748 |
+
<?php echo $this->get_plugin_cta( $api, $plan ) ?>
|
749 |
+
<div style="clear:both"></div>
|
750 |
+
<?php if ( $plan->has_trial() ) : ?>
|
751 |
+
<?php $trial_period = $this->get_trial_period( $plan ) ?>
|
752 |
+
<ul class="fs-trial-terms">
|
753 |
+
<li>
|
754 |
+
<i class="dashicons dashicons-yes"></i><?php printf( __fs( 'no-commitment-x', $api->slug ), $trial_period ) ?>
|
755 |
+
</li>
|
756 |
+
<li>
|
757 |
+
<i class="dashicons dashicons-yes"></i><?php printf( __fs( 'after-x-pay-as-little-y', $api->slug ), $trial_period, '<var class="fs-price">' . $this->get_price_tag( $plan, $plan->pricing[0] ) . '</var>' ) ?>
|
758 |
+
</li>
|
759 |
+
</ul>
|
760 |
+
<?php endif ?>
|
761 |
+
</div>
|
762 |
</div>
|
763 |
+
</div>
|
764 |
+
<?php endforeach ?>
|
765 |
+
<?php endif ?>
|
766 |
<?php endif ?>
|
767 |
+
<div>
|
768 |
+
<h3><?php _efs( 'details', $api->slug ) ?></h3>
|
769 |
+
<ul>
|
770 |
+
<?php if ( ! empty( $api->version ) ) { ?>
|
771 |
+
<li><strong><?php _efs( 'version', $api->slug ); ?>:</strong> <?php echo $api->version; ?></li>
|
772 |
+
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
}
|
774 |
+
if ( ! empty( $api->author ) ) {
|
775 |
+
?>
|
776 |
+
<li>
|
777 |
+
<strong><?php _efs( 'author:', $api->slug ); ?></strong> <?php echo links_add_target( $api->author, '_blank' ); ?>
|
778 |
+
</li>
|
779 |
+
<?php
|
780 |
+
}
|
781 |
+
if ( ! empty( $api->last_updated ) ) {
|
782 |
+
?>
|
783 |
+
<li><strong><?php _efs( 'last-updated:', $api->slug ); ?></strong> <span
|
784 |
+
title="<?php echo $api->last_updated; ?>">
|
785 |
+
<?php printf( __fs( 'x-ago', $api->slug ), human_time_diff( strtotime( $api->last_updated ) ) ); ?>
|
786 |
</span></li>
|
787 |
+
<?php
|
788 |
+
}
|
789 |
+
if ( ! empty( $api->requires ) ) {
|
790 |
+
?>
|
791 |
+
<li>
|
792 |
+
<strong><?php _efs( 'requires-wordpress-version:', $api->slug ); ?></strong> <?php printf( __fs( 'x-or-higher', $api->slug ), $api->requires ); ?>
|
793 |
+
</li>
|
794 |
+
<?php
|
795 |
+
}
|
796 |
+
if ( ! empty( $api->tested ) ) {
|
797 |
+
?>
|
798 |
+
<li><strong><?php _efs( 'compatible-up-to:', $api->slug ); ?></strong> <?php echo $api->tested; ?>
|
799 |
+
</li>
|
800 |
+
<?php
|
801 |
+
}
|
802 |
+
if ( ! empty( $api->downloaded ) ) {
|
803 |
+
?>
|
804 |
+
<li>
|
805 |
+
<strong><?php _efs( 'downloaded:', $api->slug ); ?></strong> <?php printf(
|
806 |
+
__fs( ( 1 == $api->downloaded ) ? 'x-time' : 'x-times', $api->slug ),
|
807 |
+
number_format_i18n( $api->downloaded )
|
808 |
+
); ?>
|
809 |
+
</li>
|
810 |
+
<?php
|
811 |
+
}
|
812 |
+
if ( ! empty( $api->slug ) && empty( $api->external ) ) {
|
813 |
+
?>
|
814 |
+
<li><a target="_blank"
|
815 |
+
href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php _efs( 'wp-org-plugin-page', $api->slug ); ?> »</a>
|
816 |
+
</li>
|
817 |
+
<?php
|
818 |
+
}
|
819 |
+
if ( ! empty( $api->homepage ) ) {
|
820 |
+
?>
|
821 |
+
<li><a target="_blank"
|
822 |
+
href="<?php echo esc_url( $api->homepage ); ?>"><?php _efs( 'plugin-homepage', $api->slug ); ?> »</a>
|
823 |
+
</li>
|
824 |
+
<?php
|
825 |
+
}
|
826 |
+
if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
|
827 |
+
?>
|
828 |
+
<li><a target="_blank"
|
829 |
+
href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ); ?> »</a>
|
830 |
+
</li>
|
831 |
+
<?php } ?>
|
832 |
+
</ul>
|
833 |
+
</div>
|
834 |
+
<?php if ( ! empty( $api->rating ) ) { ?>
|
835 |
+
<h3><?php _efs( 'average-rating', $api->slug ); ?></h3>
|
836 |
+
<?php wp_star_rating( array(
|
837 |
+
'rating' => $api->rating,
|
838 |
+
'type' => 'percent',
|
839 |
+
'number' => $api->num_ratings
|
840 |
+
) ); ?>
|
841 |
+
<small>(<?php printf(
|
842 |
+
__fs( 'based-on-x', $api->slug ),
|
843 |
+
sprintf(
|
844 |
+
__fs( ( 1 == $api->num_ratings ) ? 'x-rating' : 'x-ratings', $api->slug ),
|
845 |
+
number_format_i18n( $api->num_ratings )
|
846 |
+
) ); ?>)</small>
|
847 |
+
<?php
|
848 |
+
}
|
849 |
|
850 |
+
if ( ! empty( $api->ratings ) && array_sum( (array) $api->ratings ) > 0 ) {
|
851 |
+
foreach ( $api->ratings as $key => $ratecount ) {
|
852 |
+
// Avoid div-by-zero.
|
853 |
+
$_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
|
854 |
+
$stars_label = sprintf(
|
855 |
+
__fs( ( 1 == $key ) ? 'x-star' : 'x-stars', $api->slug ),
|
856 |
+
number_format_i18n( $key )
|
857 |
+
);
|
858 |
+
?>
|
859 |
+
<div class="counter-container">
|
860 |
<span class="counter-label"><a
|
861 |
href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
|
862 |
target="_blank"
|
863 |
+
title="<?php echo esc_attr( sprintf( __fs('click-to-reviews', $api->slug), $stars_label) ) ?>"><?php echo $stars_label ?></a></span>
|
864 |
+
<span class="counter-back">
|
865 |
<span class="counter-bar" style="width: <?php echo 92 * $_rating; ?>px;"></span>
|
866 |
</span>
|
867 |
+
<span class="counter-count"><?php echo number_format_i18n( $ratecount ); ?></span>
|
868 |
+
</div>
|
869 |
+
<?php
|
870 |
+
}
|
871 |
}
|
872 |
+
if ( ! empty( $api->contributors ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
873 |
?>
|
874 |
+
<h3><?php _efs( 'contributors', $api->slug ); ?></h3>
|
875 |
+
<ul class="contributors">
|
876 |
+
<?php
|
877 |
+
foreach ( (array) $api->contributors as $contrib_username => $contrib_profile ) {
|
878 |
+
if ( empty( $contrib_username ) && empty( $contrib_profile ) ) {
|
879 |
+
continue;
|
880 |
+
}
|
881 |
+
if ( empty( $contrib_username ) ) {
|
882 |
+
$contrib_username = preg_replace( '/^.+\/(.+)\/?$/', '\1', $contrib_profile );
|
883 |
+
}
|
884 |
+
$contrib_username = sanitize_user( $contrib_username );
|
885 |
+
if ( empty( $contrib_profile ) ) {
|
886 |
+
echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</li>";
|
887 |
+
} else {
|
888 |
+
echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</a></li>";
|
889 |
+
}
|
890 |
+
}
|
891 |
+
?>
|
892 |
+
</ul>
|
893 |
+
<?php if ( ! empty( $api->donate_link ) ) { ?>
|
894 |
+
<a target="_blank"
|
895 |
+
href="<?php echo esc_url( $api->donate_link ); ?>"><?php _efs( 'donate-to-plugin', $api->slug ) ?> »</a>
|
896 |
+
<?php } ?>
|
897 |
<?php } ?>
|
|
|
898 |
</div>
|
899 |
<div id="section-holder" class="wrap">
|
900 |
+
<?php
|
901 |
+
if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
|
902 |
+
echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-tested-warning', $api->slug ) . '</p></div>';
|
903 |
+
} else if ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
|
904 |
+
echo '<div class="notice notice-warning"><p>' . '<strong>' . __fs( 'warning:', $api->slug ) . '</strong> ' . __fs( 'not-compatible-warning', $api->slug ) . '</p></div>';
|
905 |
+
}
|
906 |
|
907 |
+
foreach ( (array) $api->sections as $section_name => $content ) {
|
908 |
+
$content = links_add_base_url( $content, 'https://wordpress.org/plugins/' . $api->slug . '/' );
|
909 |
+
$content = links_add_target( $content, '_blank' );
|
910 |
|
911 |
+
$san_section = esc_attr( $section_name );
|
912 |
|
913 |
+
$display = ( $section_name === $section ) ? 'block' : 'none';
|
914 |
|
915 |
+
if ( 'description' === $section_name &&
|
916 |
+
( ( ! $api->external && $api->wp_org_missing ) ||
|
917 |
+
( $api->external && $api->fs_missing ) )
|
918 |
+
) {
|
919 |
+
$missing_notice = array(
|
920 |
+
'type' => 'error',
|
921 |
+
'id' => md5( microtime() ),
|
922 |
+
'message' => __fs( ( $api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed' ), $api->slug ),
|
923 |
+
);
|
924 |
+
fs_require_template( 'admin-notice.php', $missing_notice );
|
925 |
+
}
|
926 |
+
echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
|
927 |
+
echo $content;
|
928 |
+
echo "\t</div>\n";
|
929 |
}
|
930 |
+
echo "</div>\n";
|
931 |
+
echo "</div>\n";
|
932 |
+
echo "</div>\n"; // #plugin-information-scrollable
|
933 |
+
echo "<div id='$tab-footer'>\n";
|
|
|
|
|
|
|
|
|
934 |
|
935 |
+
echo $this->get_plugin_cta( $api );
|
936 |
|
937 |
+
echo "</div>\n";
|
938 |
|
939 |
+
iframe_footer();
|
940 |
+
exit;
|
941 |
+
}
|
942 |
+
}
|
includes/pum-sdk/freemius/includes/i18n.php
CHANGED
@@ -1,534 +1,518 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
-
* @since 1.1.4
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit;
|
11 |
-
}
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
*
|
17 |
-
*
|
18 |
-
*
|
19 |
-
*
|
20 |
-
*
|
21 |
-
*
|
22 |
-
*
|
23 |
-
*
|
24 |
-
*
|
25 |
-
*
|
26 |
-
*
|
27 |
-
*
|
28 |
-
*
|
29 |
-
*
|
30 |
-
*
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
$fs_text
|
35 |
-
|
36 |
-
|
37 |
-
'
|
38 |
-
'
|
39 |
-
'
|
40 |
-
'support'
|
41 |
-
'
|
42 |
-
'
|
43 |
-
'
|
44 |
-
'
|
45 |
-
'
|
46 |
-
'
|
47 |
-
'
|
48 |
-
'
|
49 |
-
'
|
50 |
-
'
|
51 |
-
'
|
52 |
-
'
|
53 |
-
'
|
54 |
-
'
|
55 |
-
'
|
56 |
-
'
|
57 |
-
'
|
58 |
-
'
|
59 |
-
'
|
60 |
-
'
|
61 |
-
'
|
62 |
-
'
|
63 |
-
'
|
64 |
-
'
|
65 |
-
'
|
66 |
-
'
|
67 |
-
'
|
68 |
-
'
|
69 |
-
'
|
70 |
-
'
|
71 |
-
'
|
72 |
-
|
73 |
-
'download-
|
74 |
-
'
|
75 |
-
|
76 |
-
'new' =>
|
77 |
-
'free' =>
|
78 |
-
'trial' =>
|
79 |
-
'start-trial' =>
|
80 |
-
'purchase' =>
|
81 |
-
'purchase-license' =>
|
82 |
-
'buy' =>
|
83 |
-
'buy-license' =>
|
84 |
-
'license-single-site' =>
|
85 |
-
'license-unlimited' =>
|
86 |
-
'license-x-sites' =>
|
87 |
-
'renew-license-now' =>
|
88 |
-
|
89 |
-
'
|
90 |
-
|
91 |
-
'x-
|
92 |
-
|
93 |
-
'
|
94 |
-
|
95 |
-
'
|
96 |
-
'
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
'
|
103 |
-
'
|
104 |
-
'
|
105 |
-
'
|
106 |
-
'
|
107 |
-
'
|
108 |
-
'
|
109 |
-
'
|
110 |
-
|
111 |
-
'
|
112 |
-
'
|
113 |
-
'
|
114 |
-
'
|
115 |
-
'email'
|
116 |
-
'
|
117 |
-
'
|
118 |
-
'
|
119 |
-
'
|
120 |
-
'
|
121 |
-
'
|
122 |
-
'
|
123 |
-
'
|
124 |
-
'
|
125 |
-
'
|
126 |
-
'
|
127 |
-
'
|
128 |
-
'
|
129 |
-
'
|
130 |
-
'
|
131 |
-
'
|
132 |
-
'
|
133 |
-
'
|
134 |
-
'
|
135 |
-
'
|
136 |
-
'
|
137 |
-
'
|
138 |
-
'
|
139 |
-
'
|
140 |
-
'
|
141 |
-
|
142 |
-
'
|
143 |
-
'
|
144 |
-
'
|
145 |
-
'
|
146 |
-
'
|
147 |
-
'deactivate'
|
148 |
-
'
|
149 |
-
'
|
150 |
-
'
|
151 |
-
'
|
152 |
-
'
|
153 |
-
'
|
154 |
-
'
|
155 |
-
'
|
156 |
-
'
|
157 |
-
'
|
158 |
-
'x
|
159 |
-
'
|
160 |
-
'
|
161 |
-
'
|
162 |
-
'
|
163 |
-
|
164 |
-
'
|
165 |
-
|
166 |
-
'delete-account-confirm'
|
167 |
-
|
168 |
-
'downgrade-x-confirm' =>
|
169 |
-
|
170 |
-
'
|
171 |
-
|
172 |
-
'
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
'
|
177 |
-
#
|
178 |
-
|
179 |
-
'
|
180 |
-
'
|
181 |
-
|
182 |
-
|
183 |
-
'
|
184 |
-
'
|
185 |
-
'
|
186 |
-
|
187 |
-
'
|
188 |
-
'
|
189 |
-
'
|
190 |
-
'reason-
|
191 |
-
'reason-
|
192 |
-
|
193 |
-
'
|
194 |
-
'
|
195 |
-
'
|
196 |
-
'reason-
|
197 |
-
|
198 |
-
'reason-
|
199 |
-
|
200 |
-
'
|
201 |
-
'placeholder-
|
202 |
-
'placeholder-
|
203 |
-
'
|
204 |
-
'
|
205 |
-
|
206 |
-
'reason-
|
207 |
-
'
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
'
|
213 |
-
'
|
214 |
-
'
|
215 |
-
'
|
216 |
-
'
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
'
|
222 |
-
'
|
223 |
-
'
|
224 |
-
|
225 |
-
'
|
226 |
-
|
227 |
-
'
|
228 |
-
'
|
229 |
-
'
|
230 |
-
'
|
231 |
-
|
232 |
-
'
|
233 |
-
|
234 |
-
'
|
235 |
-
'
|
236 |
-
'
|
237 |
-
'
|
238 |
-
'
|
239 |
-
|
240 |
-
'
|
241 |
-
'
|
242 |
-
'
|
243 |
-
'
|
244 |
-
'
|
245 |
-
'
|
246 |
-
'
|
247 |
-
'
|
248 |
-
'
|
249 |
-
'
|
250 |
-
'
|
251 |
-
|
252 |
-
'
|
253 |
-
'
|
254 |
-
'
|
255 |
-
'
|
256 |
-
'
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
'
|
261 |
-
'
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
'
|
266 |
-
|
267 |
-
'
|
268 |
-
'
|
269 |
-
'
|
270 |
-
|
271 |
-
'
|
272 |
-
'
|
273 |
-
'
|
274 |
-
|
275 |
-
'
|
276 |
-
|
277 |
-
'
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
'
|
283 |
-
'
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
'
|
288 |
-
'
|
289 |
-
'
|
290 |
-
'
|
291 |
-
'
|
292 |
-
'
|
293 |
-
'
|
294 |
-
'
|
295 |
-
'
|
296 |
-
'
|
297 |
-
|
298 |
-
'
|
299 |
-
'
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
'
|
304 |
-
'
|
305 |
-
'
|
306 |
-
'
|
307 |
-
|
308 |
-
'
|
309 |
-
'
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
'
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
'
|
320 |
-
'
|
321 |
-
|
322 |
-
'
|
323 |
-
'
|
324 |
-
'
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
'
|
330 |
-
'
|
331 |
-
'
|
332 |
-
|
333 |
-
'
|
334 |
-
|
335 |
-
'
|
336 |
-
|
337 |
-
'
|
338 |
-
'
|
339 |
-
'
|
340 |
-
|
341 |
-
|
342 |
-
'
|
343 |
-
|
344 |
-
'
|
345 |
-
'
|
346 |
-
|
347 |
-
'
|
348 |
-
'
|
349 |
-
|
350 |
-
'
|
351 |
-
'
|
352 |
-
|
353 |
-
'
|
354 |
-
'
|
355 |
-
'
|
356 |
-
'
|
357 |
-
'
|
358 |
-
'
|
359 |
-
|
360 |
-
'
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
'
|
365 |
-
'
|
366 |
-
'
|
367 |
-
|
368 |
-
'
|
369 |
-
|
370 |
-
'trial-
|
371 |
-
'
|
372 |
-
'no-
|
373 |
-
|
374 |
-
'
|
375 |
-
|
376 |
-
'
|
377 |
-
|
378 |
-
'
|
379 |
-
|
380 |
-
'
|
381 |
-
|
382 |
-
|
383 |
-
'
|
384 |
-
|
385 |
-
'
|
386 |
-
|
387 |
-
'
|
388 |
-
'
|
389 |
-
'
|
390 |
-
|
391 |
-
'
|
392 |
-
|
393 |
-
'
|
394 |
-
'
|
395 |
-
|
396 |
-
'
|
397 |
-
|
398 |
-
'
|
399 |
-
'
|
400 |
-
'
|
401 |
-
'
|
402 |
-
|
403 |
-
'
|
404 |
-
'
|
405 |
-
|
406 |
-
'
|
407 |
-
'
|
408 |
-
'
|
409 |
-
|
410 |
-
|
411 |
-
'
|
412 |
-
|
413 |
-
'
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
'
|
418 |
-
'
|
419 |
-
'
|
420 |
-
'
|
421 |
-
'
|
422 |
-
|
423 |
-
|
424 |
-
#region
|
425 |
-
|
426 |
-
|
427 |
-
'
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
'
|
434 |
-
|
435 |
-
'
|
436 |
-
|
437 |
-
'
|
438 |
-
'
|
439 |
-
|
440 |
-
'
|
441 |
-
'
|
442 |
-
|
443 |
-
'
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
'
|
448 |
-
|
449 |
-
'
|
450 |
-
|
451 |
-
'
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
'
|
458 |
-
|
459 |
-
'
|
460 |
-
'
|
461 |
-
|
462 |
-
'
|
463 |
-
|
464 |
-
'
|
465 |
-
|
466 |
-
'
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
'
|
483 |
-
|
484 |
-
'
|
485 |
-
|
486 |
-
'
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
'
|
491 |
-
|
492 |
-
'
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
'
|
499 |
-
|
500 |
-
'
|
501 |
-
'
|
502 |
-
'
|
503 |
-
'
|
504 |
-
'
|
505 |
-
'
|
506 |
-
'
|
507 |
-
'
|
508 |
-
|
509 |
-
'
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
'
|
514 |
-
|
515 |
-
'
|
516 |
-
|
517 |
-
'
|
518 |
-
|
519 |
-
#endregion
|
520 |
-
#--------------------------------------------------------------------------------
|
521 |
-
#region Billing Details
|
522 |
-
#--------------------------------------------------------------------------------
|
523 |
-
'business-name' => __( 'Business name', 'freemius' ),
|
524 |
-
'tax-vat-id' => __( 'Tax / VAT ID', 'freemius' ),
|
525 |
-
'address-line-n' => __( 'Address Line %d', 'freemius' ),
|
526 |
-
'country' => __( 'Country', 'freemius' ),
|
527 |
-
'select-country' => __( 'Select Country', 'freemius' ),
|
528 |
-
'city' => __( 'City', 'freemius' ),
|
529 |
-
'town' => __( 'Town', 'freemius' ),
|
530 |
-
'state' => __( 'State', 'freemius' ),
|
531 |
-
'province' => __( 'Province', 'freemius' ),
|
532 |
-
'zip-postal-code' => __( 'ZIP / Postal Code', 'freemius' ),
|
533 |
-
#endregion
|
534 |
-
);
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.1.4
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
require_once dirname( __FILE__ ) . '/l10n.php';
|
14 |
+
|
15 |
+
/**
|
16 |
+
* All strings can now be overridden.
|
17 |
+
*
|
18 |
+
* For example, if we want to override:
|
19 |
+
* 'you-are-step-away' => 'You are just one step away - %s',
|
20 |
+
*
|
21 |
+
* We can use the filter:
|
22 |
+
* fs_override_i18n( array(
|
23 |
+
* 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
|
24 |
+
* 'skip' => __( 'Not today', '{your-text_domain}' ),
|
25 |
+
* ), '{plugin_slug}' );
|
26 |
+
*
|
27 |
+
* Or with the Freemius instance:
|
28 |
+
*
|
29 |
+
* my_freemius->override_i18n( array(
|
30 |
+
* 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
|
31 |
+
* 'skip' => __( 'Not today', '{your-text_domain}' ),
|
32 |
+
* );
|
33 |
+
*/
|
34 |
+
global $fs_text;
|
35 |
+
|
36 |
+
$fs_text = array(
|
37 |
+
'account' => _fs_text( 'Account' ),
|
38 |
+
'addon' => _fs_text( 'Add On' ),
|
39 |
+
'contact-us' => _fs_text( 'Contact Us' ),
|
40 |
+
'contact-support' => _fs_text( 'Contact Support' ),
|
41 |
+
'change-ownership' => _fs_text( 'Change Ownership' ),
|
42 |
+
'support' => _fs_text( 'Support' ),
|
43 |
+
'support-forum' => _fs_text( 'Support Forum' ),
|
44 |
+
'add-ons' => _fs_text( 'Add Ons' ),
|
45 |
+
'upgrade' => _fs_x( 'Upgrade', 'verb' ),
|
46 |
+
'awesome' => _fs_text( 'Awesome' ),
|
47 |
+
'pricing' => _fs_x( 'Pricing', 'noun' ),
|
48 |
+
'price' => _fs_x( 'Price', 'noun' ),
|
49 |
+
'unlimited-updates' => _fs_text( 'Unlimited Updates' ),
|
50 |
+
'downgrade' => _fs_x( 'Downgrade', 'verb' ),
|
51 |
+
'cancel-trial' => _fs_text( 'Cancel Trial' ),
|
52 |
+
'free-trial' => _fs_text( 'Free Trial' ),
|
53 |
+
'start-free-x' => _fs_text( 'Start my free %s' ),
|
54 |
+
'no-commitment-x' => _fs_text( 'No commitment for %s - cancel anytime' ),
|
55 |
+
'after-x-pay-as-little-y' => _fs_text( 'After your free %s, pay as little as %s' ),
|
56 |
+
'details' => _fs_text( 'Details' ),
|
57 |
+
'account-details' => _fs_text( 'Account Details' ),
|
58 |
+
'delete' => _fs_x( 'Delete', 'verb' ),
|
59 |
+
'show' => _fs_x( 'Show', 'verb' ),
|
60 |
+
'hide' => _fs_x( 'Hide', 'verb' ),
|
61 |
+
'edit' => _fs_x( 'Edit', 'verb' ),
|
62 |
+
'update' => _fs_x( 'Update', 'verb' ),
|
63 |
+
'date' => _fs_text( 'Date' ),
|
64 |
+
'amount' => _fs_text( 'Amount' ),
|
65 |
+
'invoice' => _fs_text( 'Invoice' ),
|
66 |
+
'billing' => _fs_text( 'Billing' ),
|
67 |
+
'payments' => _fs_text( 'Payments' ),
|
68 |
+
'delete-account' => _fs_text( 'Delete Account' ),
|
69 |
+
'dismiss' => _fs_x( 'Dismiss', 'as close a window' ),
|
70 |
+
'plan' => _fs_x( 'Plan', 'as product pricing plan' ),
|
71 |
+
'change-plan' => _fs_text( 'Change Plan' ),
|
72 |
+
'download-x-version' => _fs_x( 'Download %s Version', 'as download professional version' ),
|
73 |
+
'download-x-version-now' => _fs_x( 'Download %s version now', 'as download professional version now' ),
|
74 |
+
'download-latest' => _fs_x( 'Download Latest', 'as download latest version' ),
|
75 |
+
'you-have-x-license' => _fs_x( 'You have a %s license.', 'E.g. you have a professional license.' ),
|
76 |
+
'new' => _fs_text( 'New' ),
|
77 |
+
'free' => _fs_text( 'Free' ),
|
78 |
+
'trial' => _fs_x( 'Trial', 'as trial plan' ),
|
79 |
+
'start-trial' => _fs_x( 'Start Trial', 'as starting a trial plan' ),
|
80 |
+
'purchase' => _fs_x( 'Purchase', 'verb' ),
|
81 |
+
'purchase-license' => _fs_text( 'Purchase License' ),
|
82 |
+
'buy' => _fs_x( 'Buy', 'verb' ),
|
83 |
+
'buy-license' => _fs_text( 'Buy License' ),
|
84 |
+
'license-single-site' => _fs_text( 'Single Site License' ),
|
85 |
+
'license-unlimited' => _fs_text( 'Unlimited Licenses' ),
|
86 |
+
'license-x-sites' => _fs_text( 'Up to %s Sites' ),
|
87 |
+
'renew-license-now' => _fs_text( '%sRenew your license now%s to access version %s features and support.' ),
|
88 |
+
'ask-for-upgrade-email-address' => _fs_text( "Enter the email address you've used for the upgrade below and we will resend you the license key." ),
|
89 |
+
'x-plan' => _fs_x( '%s Plan', 'e.g. Professional Plan' ),
|
90 |
+
'you-are-step-away' => _fs_text( 'You are just one step away - %s' ),
|
91 |
+
'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
|
92 |
+
'%s - plugin name. As complete "Jetpack" activation now' ),
|
93 |
+
'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the plugin, %s' ),
|
94 |
+
'optin-x-now' => _fs_text( 'Opt-in to make "%s" Better!' ),
|
95 |
+
'error' => _fs_text( 'Error' ),
|
96 |
+
'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
|
97 |
+
#region Account
|
98 |
+
|
99 |
+
'expiration' => _fs_x( 'Expiration', 'as expiration date' ),
|
100 |
+
'license' => _fs_x( 'License', 'as software license' ),
|
101 |
+
'not-verified' => _fs_text( 'not verified' ),
|
102 |
+
'verify-email' => _fs_text( 'Verify Email' ),
|
103 |
+
'expires-in' => _fs_x( 'Expires in %s', 'e.g. expires in 2 months' ),
|
104 |
+
'renews-in' => _fs_x( 'Auto renews in %s', 'e.g. auto renews in 2 months' ),
|
105 |
+
'no-expiration' => _fs_text( 'No expiration' ),
|
106 |
+
'expired' => _fs_text( 'Expired' ),
|
107 |
+
'cancelled' => _fs_text( 'Cancelled' ),
|
108 |
+
'in-x' => _fs_x( 'In %s', 'e.g. In 2 hours' ),
|
109 |
+
'x-ago' => _fs_x( '%s ago', 'e.g. 2 min ago' ),
|
110 |
+
/* translators: %s: Version number (e.g. 4.6 or higher) */
|
111 |
+
'x-or-higher' => _fs_text( '%s or higher' ),
|
112 |
+
'version' => _fs_x( 'Version', 'as plugin version' ),
|
113 |
+
'name' => _fs_text( 'Name' ),
|
114 |
+
'email' => _fs_text( 'Email' ),
|
115 |
+
'email-address' => _fs_text( 'Email address' ),
|
116 |
+
'verified' => _fs_text( 'Verified' ),
|
117 |
+
'module' => _fs_text( 'Module' ),
|
118 |
+
'module-type' => _fs_text( 'Module Type' ),
|
119 |
+
'plugin' => _fs_text( 'Plugin' ),
|
120 |
+
'plugins' => _fs_text( 'Plugins' ),
|
121 |
+
'theme' => _fs_text( 'Theme' ),
|
122 |
+
'themes' => _fs_text( 'Themes' ),
|
123 |
+
'path' => _fs_x( 'Path', 'as file/folder path' ),
|
124 |
+
'title' => _fs_text( 'Title' ),
|
125 |
+
'free-version' => _fs_text( 'Free version' ),
|
126 |
+
'premium-version' => _fs_text( 'Premium version' ),
|
127 |
+
'slug' => _fs_x( 'Slug', 'as WP plugin slug' ),
|
128 |
+
'id' => _fs_text( 'ID' ),
|
129 |
+
'users' => _fs_text( 'Users' ),
|
130 |
+
'plugin-installs' => _fs_text( 'Plugin Installs' ),
|
131 |
+
'module-installs' => _fs_text( '%s Installs' ),
|
132 |
+
'sites' => _fs_x( 'Sites', 'like websites' ),
|
133 |
+
'user-id' => _fs_text( 'User ID' ),
|
134 |
+
'site-id' => _fs_text( 'Site ID' ),
|
135 |
+
'public-key' => _fs_text( 'Public Key' ),
|
136 |
+
'secret-key' => _fs_text( 'Secret Key' ),
|
137 |
+
'no-secret' => _fs_x( 'No Secret', 'as secret encryption key missing' ),
|
138 |
+
'no-id' => _fs_text( 'No ID' ),
|
139 |
+
'sync-license' => _fs_x( 'Sync License', 'as synchronize license' ),
|
140 |
+
'sync' => _fs_x( 'Sync', 'as synchronize' ),
|
141 |
+
'activate-license' => _fs_text( 'Activate License' ),
|
142 |
+
'activate-free-version' => _fs_text( 'Activate Free Version' ),
|
143 |
+
'activate-license-message' => _fs_text( 'Please enter the license key that you received in the email right after the purchase:' ),
|
144 |
+
'activating-license' => _fs_text( 'Activating license...' ),
|
145 |
+
'change-license' => _fs_text( 'Change License' ),
|
146 |
+
'update-license' => _fs_text( 'Update License' ),
|
147 |
+
'deactivate-license' => _fs_text( 'Deactivate License' ),
|
148 |
+
'activate' => _fs_text( 'Activate' ),
|
149 |
+
'deactivate' => _fs_text( 'Deactivate' ),
|
150 |
+
'skip-deactivate' => _fs_text( 'Skip & Deactivate' ),
|
151 |
+
'skip-and-x' => _fs_text( 'Skip & %s' ),
|
152 |
+
'no-deactivate' => _fs_text( 'No - just deactivate' ),
|
153 |
+
'yes-do-your-thing' => _fs_text( 'Yes - do your thing' ),
|
154 |
+
'active' => _fs_x( 'Active', 'active mode' ),
|
155 |
+
'is-active' => _fs_x( 'Is Active', 'is active mode?' ),
|
156 |
+
'install-now' => _fs_text( 'Install Now' ),
|
157 |
+
'install-update-now' => _fs_text( 'Install Update Now' ),
|
158 |
+
'more-information-about-x' => _fs_text( 'More information about %s' ),
|
159 |
+
'localhost' => _fs_text( 'Localhost' ),
|
160 |
+
'activate-x-plan' => _fs_x( 'Activate %s Plan', 'as activate Professional plan' ),
|
161 |
+
'x-left' => _fs_x( '%s left', 'as 5 licenses left' ),
|
162 |
+
'last-license' => _fs_text( 'Last license' ),
|
163 |
+
'what-is-your-x' => _fs_text( 'What is your %s?' ),
|
164 |
+
'activate-this-addon' => _fs_text( 'Activate this add-on' ),
|
165 |
+
'deactivate-license-confirm' => _fs_text( 'Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?' ),
|
166 |
+
'delete-account-x-confirm' => _fs_text( '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?' ),
|
167 |
+
'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?' ),
|
168 |
+
'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
|
169 |
+
'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
|
170 |
+
'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to plugin updates and support.' ),
|
171 |
+
'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
|
172 |
+
'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
|
173 |
+
#endregion Account
|
174 |
+
|
175 |
+
'add-ons-for-x' => _fs_text( 'Add Ons for %s' ),
|
176 |
+
'add-ons-missing' => _fs_text( 'We could\'nt load the add-ons list. It\'s probably an issue on our side, please try to come back in few minutes.' ),
|
177 |
+
#region Plugin Deactivation
|
178 |
+
'anonymous-feedback' => _fs_text( 'Anonymous feedback' ),
|
179 |
+
'quick-feedback' => _fs_text( 'Quick feedback' ),
|
180 |
+
'deactivation-share-reason' => _fs_text( 'If you have a moment, please let us know why you are deactivating' ),
|
181 |
+
'deactivation-modal-button-confirm' => _fs_text( 'Yes - Deactivate' ),
|
182 |
+
'deactivation-modal-button-submit' => _fs_text( 'Submit & Deactivate' ),
|
183 |
+
'cancel' => _fs_text( 'Cancel' ),
|
184 |
+
'reason-no-longer-needed' => _fs_text( 'I no longer need the plugin' ),
|
185 |
+
'reason-found-a-better-plugin' => _fs_text( 'I found a better plugin' ),
|
186 |
+
'reason-needed-for-a-short-period' => _fs_text( 'I only needed the plugin for a short period' ),
|
187 |
+
'reason-broke-my-site' => _fs_text( 'The plugin broke my site' ),
|
188 |
+
'reason-suddenly-stopped-working' => _fs_text( 'The plugin suddenly stopped working' ),
|
189 |
+
'reason-cant-pay-anymore' => _fs_text( "I can't pay for it anymore" ),
|
190 |
+
'reason-temporary-deactivation' => _fs_text( "It's a temporary deactivation. I'm just debugging an issue." ),
|
191 |
+
'reason-other' => _fs_x( 'Other',
|
192 |
+
'the text of the "other" reason for deactivating the plugin that is shown in the modal box.' ),
|
193 |
+
'ask-for-reason-message' => _fs_text( 'Kindly tell us the reason so we can improve.' ),
|
194 |
+
'placeholder-plugin-name' => _fs_text( "What's the plugin's name?" ),
|
195 |
+
'placeholder-comfortable-price' => _fs_text( 'What price would you feel comfortable paying?' ),
|
196 |
+
'reason-couldnt-make-it-work' => _fs_text( "I couldn't understand how to make it work" ),
|
197 |
+
'reason-great-but-need-specific-feature' => _fs_text( "The plugin is great, but I need specific feature that you don't support" ),
|
198 |
+
'reason-not-working' => _fs_text( 'The plugin is not working' ),
|
199 |
+
'reason-not-what-i-was-looking-for' => _fs_text( "It's not what I was looking for" ),
|
200 |
+
'reason-didnt-work-as-expected' => _fs_text( "The plugin didn't work as expected" ),
|
201 |
+
'placeholder-feature' => _fs_text( 'What feature?' ),
|
202 |
+
'placeholder-share-what-didnt-work' => _fs_text( "Kindly share what didn't work so we can fix it for future users..." ),
|
203 |
+
'placeholder-what-youve-been-looking-for' => _fs_text( "What you've been looking for?" ),
|
204 |
+
'placeholder-what-did-you-expect' => _fs_text( "What did you expect?" ),
|
205 |
+
'reason-didnt-work' => _fs_text( "The plugin didn't work" ),
|
206 |
+
'reason-dont-like-to-share-my-information' => _fs_text( "I don't like to share my information with you" ),
|
207 |
+
'dont-have-to-share-any-data' => _fs_text( "You might have missed it, but you don't have to share any data and can just %s the opt-in." ),
|
208 |
+
#endregion Plugin Deactivation
|
209 |
+
|
210 |
+
#region Connect
|
211 |
+
'hey-x' => _fs_x( 'Hey %s,', 'greeting' ),
|
212 |
+
'thanks-x' => _fs_x( 'Thanks %s!', 'a greeting. E.g. Thanks John!' ),
|
213 |
+
'connect-message' => _fs_text( 'Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s.' ),
|
214 |
+
'connect-message_on-update' => _fs_text( 'Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that\'s okay! %1$s will still work just fine.' ),
|
215 |
+
'pending-activation-message' => _fs_text( '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.' ),
|
216 |
+
'complete-the-install' => _fs_text( 'complete the install' ),
|
217 |
+
'start-the-trial' => _fs_text( 'start the trial' ),
|
218 |
+
'thanks-for-purchasing' => _fs_text( 'Thanks for purchasing %s! To get started, please enter your license key:' ),
|
219 |
+
'license-sync-disclaimer' => _fs_text( 'The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license.' ),
|
220 |
+
'what-permissions' => _fs_text( 'What permissions are being granted?' ),
|
221 |
+
'permissions-profile' => _fs_text( 'Your Profile Overview' ),
|
222 |
+
'permissions-profile_desc' => _fs_text( 'Name and email address' ),
|
223 |
+
'permissions-site' => _fs_text( 'Your Site Overview' ),
|
224 |
+
'permissions-site_desc' => _fs_text( 'Site URL, WP version, PHP info, plugins & themes' ),
|
225 |
+
'permissions-events' => _fs_text( 'Current Plugin Events' ),
|
226 |
+
'permissions-events_desc' => _fs_text( 'Activation, deactivation and uninstall' ),
|
227 |
+
'permissions-plugins_themes' => _fs_text( 'Plugins & Themes' ),
|
228 |
+
'permissions-plugins_themes_desc' => _fs_text( 'Titles, versions and state.' ),
|
229 |
+
'permissions-admin-notices' => _fs_text( 'Admin Notices' ),
|
230 |
+
'permissions-newsletter' => _fs_text( 'Newsletter' ),
|
231 |
+
'permissions-newsletter_desc' => _fs_text( 'Updates, announcements, marketing, no spam' ),
|
232 |
+
'privacy-policy' => _fs_text( 'Privacy Policy' ),
|
233 |
+
'tos' => _fs_text( 'Terms of Service' ),
|
234 |
+
'activating' => _fs_x( 'Activating', 'as activating plugin' ),
|
235 |
+
'sending-email' => _fs_x( 'Sending email', 'as in the process of sending an email' ),
|
236 |
+
'opt-in-connect' => _fs_x( 'Allow & Continue', 'button label' ),
|
237 |
+
'agree-activate-license' => _fs_x( 'Agree & Activate License', 'button label' ),
|
238 |
+
'skip' => _fs_x( 'Skip', 'verb' ),
|
239 |
+
'click-here-to-use-plugin-anonymously' => _fs_text( 'Click here to use the plugin anonymously' ),
|
240 |
+
'resend-activation-email' => _fs_text( 'Re-send activation email' ),
|
241 |
+
'license-key' => _fs_text( 'License key' ),
|
242 |
+
'send-license-key' => _fs_text( 'Send License Key' ),
|
243 |
+
'sending-license-key' => _fs_text( 'Sending license key' ),
|
244 |
+
'have-license-key' => _fs_text( 'Have a license key?' ),
|
245 |
+
'dont-have-license-key' => _fs_text( 'Don\'t have a license key?' ),
|
246 |
+
'cant-find-license-key' => _fs_text( "Can't find your license key?" ),
|
247 |
+
'email-not-found' => _fs_text( "We couldn't find your email address in the system, are you sure it's the right address?" ),
|
248 |
+
'no-active-licenses' => _fs_text( "We can't see any active licenses associated with that email address, are you sure it's the right address?" ),
|
249 |
+
'opt-in' => _fs_text( 'Opt In' ),
|
250 |
+
'opt-out' => _fs_text( 'Opt Out' ),
|
251 |
+
'opt-out-cancel' => _fs_text( 'On second thought - I want to continue helping' ),
|
252 |
+
'opting-out' => _fs_text( 'Opting out...' ),
|
253 |
+
'opting-in' => _fs_text( 'Opting in...' ),
|
254 |
+
'opt-out-message-appreciation' => _fs_text( 'We appreciate your help in making the %s better by letting us track some usage data.' ),
|
255 |
+
'opt-out-message-usage-tracking' => _fs_text( "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." ),
|
256 |
+
'opt-out-message-clicking-opt-out' => _fs_text( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.' ),
|
257 |
+
#endregion Connect
|
258 |
+
|
259 |
+
#region Screenshots
|
260 |
+
'screenshots' => _fs_text( 'Screenshots' ),
|
261 |
+
'view-full-size-x' => _fs_text( 'Click to view full-size screenshot %d' ),
|
262 |
+
#endregion Screenshots
|
263 |
+
|
264 |
+
#region Debug
|
265 |
+
'freemius-debug' => _fs_text( 'Freemius Debug' ),
|
266 |
+
'on' => _fs_x( 'On', 'as turned on' ),
|
267 |
+
'off' => _fs_x( 'Off', 'as turned off' ),
|
268 |
+
'debugging' => _fs_x( 'Debugging', 'as code debugging' ),
|
269 |
+
'freemius-state' => _fs_text( 'Freemius State' ),
|
270 |
+
'connected' => _fs_x( 'Connected', 'as connection was successful' ),
|
271 |
+
'blocked' => _fs_x( 'Blocked', 'as connection blocked' ),
|
272 |
+
'api' => _fs_x( 'API', 'as application program interface' ),
|
273 |
+
'sdk' => _fs_x( 'SDK', 'as software development kit versions' ),
|
274 |
+
'sdk-versions' => _fs_x( 'SDK Versions', 'as software development kit versions' ),
|
275 |
+
'plugin-path' => _fs_x( 'Plugin Path', 'as plugin folder path' ),
|
276 |
+
'sdk-path' => _fs_x( 'SDK Path', 'as sdk path' ),
|
277 |
+
'addons-of-x' => _fs_text( 'Add Ons of Plugin %s' ),
|
278 |
+
'delete-all-confirm' => _fs_text( 'Are you sure you want to delete all Freemius data?' ),
|
279 |
+
'actions' => _fs_text( 'Actions' ),
|
280 |
+
'delete-all-accounts' => _fs_text( 'Delete All Accounts' ),
|
281 |
+
'start-fresh' => _fs_text( 'Start Fresh' ),
|
282 |
+
'clear-api-cache' => _fs_text( 'Clear API Cache' ),
|
283 |
+
'sync-data-from-server' => _fs_text( 'Sync Data From Server' ),
|
284 |
+
'scheduled-crons' => _fs_text( 'Scheduled Crons' ),
|
285 |
+
'cron-type' => _fs_text( 'Cron Type' ),
|
286 |
+
'plugins-themes-sync' => _fs_text( 'Plugins & Themes Sync' ),
|
287 |
+
'licenses' => _fs_text( 'Licenses' ),
|
288 |
+
'debug-log' => _fs_text( 'Debug Log' ),
|
289 |
+
'all' => _fs_text( 'All' ),
|
290 |
+
'file' => _fs_text( 'File' ),
|
291 |
+
'function' => _fs_text( 'Function' ),
|
292 |
+
'process-id' => _fs_text( 'Process ID' ),
|
293 |
+
'logger' => _fs_text( 'Logger' ),
|
294 |
+
'message' => _fs_text( 'Message' ),
|
295 |
+
'download' => _fs_text( 'Download' ),
|
296 |
+
'filter' => _fs_text( 'Filter' ),
|
297 |
+
'type' => _fs_text( 'Type' ),
|
298 |
+
'all-types' => _fs_text( 'All Types' ),
|
299 |
+
'all-requests' => _fs_text( 'All Requests' ),
|
300 |
+
#endregion Debug
|
301 |
+
|
302 |
+
#region Expressions
|
303 |
+
'congrats' => _fs_x( 'Congrats', 'as congratulations' ),
|
304 |
+
'oops' => _fs_x( 'Oops', 'exclamation' ),
|
305 |
+
'yee-haw' => _fs_x( 'Yee-haw', 'interjection expressing joy or exuberance' ),
|
306 |
+
'woot' => _fs_x( 'W00t',
|
307 |
+
'(especially in electronic communication) used to express elation, enthusiasm, or triumph.' ),
|
308 |
+
'right-on' => _fs_x( 'Right on', 'a positive response' ),
|
309 |
+
'hmm' => _fs_x( 'Hmm',
|
310 |
+
'something somebody says when they are thinking about what you have just said. ' ),
|
311 |
+
'ok' => _fs_text( 'O.K' ),
|
312 |
+
'hey' => _fs_x( 'Hey', 'exclamation' ),
|
313 |
+
'heads-up' => _fs_x( 'Heads up',
|
314 |
+
'advance notice of something that will need attention.' ),
|
315 |
+
#endregion Expressions
|
316 |
+
|
317 |
+
#region Admin Notices
|
318 |
+
'you-have-latest' => _fs_text( 'Seems like you got the latest release.' ),
|
319 |
+
'you-are-good' => _fs_text( 'You are all good!' ),
|
320 |
+
'user-exist-message' => _fs_text( 'Sorry, we could not complete the email update. Another user with the same email is already registered.' ),
|
321 |
+
'user-exist-message_ownership' => _fs_text( 'If you would like to give up the ownership of the plugin\'s account to %s click the Change Ownership button.' ),
|
322 |
+
'email-updated-message' => _fs_text( 'Your email was successfully updated. You should receive an email with confirmation instructions in few moments.' ),
|
323 |
+
'name-updated-message' => _fs_text( 'Your name was successfully updated.' ),
|
324 |
+
'x-updated' => _fs_text( 'You have successfully updated your %s.' ),
|
325 |
+
'name-update-failed-message' => _fs_text( 'Please provide your full name.' ),
|
326 |
+
'verification-email-sent-message' => _fs_text( 'Verification mail was just sent to %s. If you can\'t find it after 5 min, please check your spam box.' ),
|
327 |
+
'addons-info-external-message' => _fs_text( 'Just letting you know that the add-ons information of %s is being pulled from an external server.' ),
|
328 |
+
'no-cc-required' => _fs_text( 'No credit card required' ),
|
329 |
+
'premium-activated-message' => _fs_text( 'Premium plugin version was successfully activated.' ),
|
330 |
+
'successful-version-upgrade-message' => _fs_text( 'The upgrade of %s was successfully completed.' ),
|
331 |
+
'activation-with-plan-x-message' => _fs_text( 'Your account was successfully activated with the %s plan.' ),
|
332 |
+
'download-latest-x-version-now' => _fs_text( 'Download the latest %s version now' ),
|
333 |
+
'follow-steps-to-complete-upgrade' => _fs_text( 'Please follow these steps to complete the upgrade' ),
|
334 |
+
'download-latest-x-version' => _fs_text( 'Download the latest %s version' ),
|
335 |
+
'download-latest-version' => _fs_text( 'Download the latest version' ),
|
336 |
+
'deactivate-free-version' => _fs_text( 'Deactivate the free version' ),
|
337 |
+
'upload-and-activate' => _fs_text( 'Upload and activate the downloaded version' ),
|
338 |
+
'howto-upload-activate' => _fs_text( 'How to upload and activate?' ),
|
339 |
+
'addon-successfully-purchased-message' => _fs_x( '%s Add-on was successfully purchased.',
|
340 |
+
'%s - product name, e.g. Facebook add-on was successfully...' ),
|
341 |
+
'addon-successfully-upgraded-message' => _fs_text( 'Your %s Add-on plan was successfully upgraded.' ),
|
342 |
+
'email-verified-message' => _fs_text( 'Your email has been successfully verified - you are AWESOME!' ),
|
343 |
+
'plan-upgraded-message' => _fs_text( 'Your plan was successfully upgraded.' ),
|
344 |
+
'plan-changed-to-x-message' => _fs_text( 'Your plan was successfully changed to %s.' ),
|
345 |
+
'license-expired-blocking-message' => _fs_text( 'Your license has expired. You can still continue using the free plugin forever.' ),
|
346 |
+
'license-cancelled' => _fs_text( 'Your license has been cancelled. If you think it\'s a mistake, please contact support.' ),
|
347 |
+
'trial-started-message' => _fs_text( 'Your trial has been successfully started.' ),
|
348 |
+
'license-activated-message' => _fs_text( 'Your license was successfully activated.' ),
|
349 |
+
'no-active-license-message' => _fs_text( 'It looks like your site currently doesn\'t have an active license.' ),
|
350 |
+
'license-deactivation-message' => _fs_text( 'Your license was successfully deactivated, you are back to the %s plan.' ),
|
351 |
+
'license-deactivation-failed-message' => _fs_text( 'It looks like the license deactivation failed.' ),
|
352 |
+
'license-activation-failed-message' => _fs_text( 'It looks like the license could not be activated.' ),
|
353 |
+
'server-error-message' => _fs_text( 'Error received from the server:' ),
|
354 |
+
'trial-expired-message' => _fs_text( 'Your trial has expired. You can still continue using all our free features.' ),
|
355 |
+
'plan-x-downgraded-message' => _fs_text( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.' ),
|
356 |
+
'plan-downgraded-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.' ),
|
357 |
+
'trial-cancel-no-trial-message' => _fs_text( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)' ),
|
358 |
+
'trial-cancel-message' => _fs_text( 'Your %s free trial was successfully cancelled.' ),
|
359 |
+
'version-x-released' => _fs_x( 'Version %s was released.', '%s - numeric version number' ),
|
360 |
+
'please-download-x' => _fs_text( 'Please download %s.' ),
|
361 |
+
'latest-x-version' => _fs_x( 'the latest %s version here',
|
362 |
+
'%s - plan name, as the latest professional version here' ),
|
363 |
+
'trial-x-promotion-message' => _fs_text( 'How do you like %s so far? Test all our %s premium features with a %d-day free trial.' ),
|
364 |
+
'start-free-trial' => _fs_x( 'Start free trial', 'call to action' ),
|
365 |
+
'starting-trial' => _fs_text( 'Starting trial' ),
|
366 |
+
'please-wait' => _fs_text( 'Please wait' ),
|
367 |
+
'trial-cancel-failure-message' => _fs_text( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.' ),
|
368 |
+
'trial-utilized' => _fs_text( 'You already utilized a trial before.' ),
|
369 |
+
'in-trial-mode' => _fs_text( 'You are already running the plugin in a trial mode.' ),
|
370 |
+
'trial-plan-x-not-exist' => _fs_text( 'Plan %s do not exist, therefore, can\'t start a trial.' ),
|
371 |
+
'plan-x-no-trial' => _fs_text( 'Plan %s does not support a trial period.' ),
|
372 |
+
'no-trials' => _fs_text( 'None of the plugin\'s plans supports a trial period.' ),
|
373 |
+
'unexpected-api-error' => _fs_text( 'Unexpected API error. Please contact the plugin\'s author with the following error.' ),
|
374 |
+
'no-commitment-for-x-days' => _fs_text( 'No commitment for %s days - cancel anytime!' ),
|
375 |
+
'license-expired-non-blocking-message' => _fs_text( '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.' ),
|
376 |
+
'could-not-activate-x' => _fs_text( 'Couldn\'t activate %s.' ),
|
377 |
+
'contact-us-with-error-message' => _fs_text( 'Please contact us with the following message:' ),
|
378 |
+
'plan-did-not-change-message' => _fs_text( '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.' ),
|
379 |
+
'contact-us-here' => _fs_text( 'Please contact us here' ),
|
380 |
+
'plan-did-not-change-email-message' => _fs_text( 'I have upgraded my account but when I try to Sync the License, the plan remains %s.' ),
|
381 |
+
#endregion Admin Notices
|
382 |
+
#region Connectivity Issues
|
383 |
+
'connectivity-test-fails-message' => _fs_text( 'From unknown reason, the API connectivity test failed.' ),
|
384 |
+
'connectivity-test-maybe-temporary' => _fs_text( 'It\'s probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?' ),
|
385 |
+
'curl-missing-message' => _fs_text( 'We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server.' ),
|
386 |
+
'cloudflare-blocks-connection-message' => _fs_text( 'From unknown reason, CloudFlare, the firewall we use, blocks the connection.' ),
|
387 |
+
'x-requires-access-to-api' => _fs_x( '%s requires an access to our API.',
|
388 |
+
'as pluginX requires an access to our API' ),
|
389 |
+
'squid-blocks-connection-message' => _fs_text( 'It looks like your server is using Squid ACL (access control lists), which blocks the connection.' ),
|
390 |
+
'squid-no-clue-title' => _fs_text( 'I don\'t know what is Squid or ACL, help me!' ),
|
391 |
+
'squid-no-clue-desc' => _fs_text( '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.' ),
|
392 |
+
'sysadmin-title' => _fs_text( 'I\'m a system administrator' ),
|
393 |
+
'squid-sysadmin-desc' => _fs_text( 'Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again.' ),
|
394 |
+
'curl-missing-no-clue-title' => _fs_text( 'I don\'t know what is cURL or how to install it, help me!' ),
|
395 |
+
'curl-missing-no-clue-desc' => _fs_text( '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.' ),
|
396 |
+
'curl-missing-sysadmin-desc' => _fs_text( 'Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use \'phpinfo()\'. Once activated, deactivate the plugin and reactivate it back again.' ),
|
397 |
+
'happy-to-resolve-issue-asap' => _fs_text( 'We are sure it\'s an issue on our side and more than happy to resolve it for you ASAP if you give us a chance.' ),
|
398 |
+
'contact-support-before-deactivation' => _fs_text( 'Sorry for the inconvenience and we are here to help if you give us a chance.' ),
|
399 |
+
'fix-issue-title' => _fs_text( 'Yes - I\'m giving you a chance to fix it' ),
|
400 |
+
'fix-issue-desc' => _fs_text( 'We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update.' ),
|
401 |
+
'install-previous-title' => _fs_text( 'Let\'s try your previous version' ),
|
402 |
+
'install-previous-desc' => _fs_text( 'Uninstall this version and install the previous one.' ),
|
403 |
+
'deactivate-plugin-title' => _fs_text( 'That\'s exhausting, please deactivate' ),
|
404 |
+
'deactivate-plugin-desc' => _fs_text( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.' ),
|
405 |
+
'fix-request-sent-message' => _fs_text( '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.' ),
|
406 |
+
'server-blocking-access' => _fs_x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s',
|
407 |
+
'%1s - plugin title, %2s - API domain' ),
|
408 |
+
'wrong-authentication-param-message' => _fs_text( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.' ),
|
409 |
+
#endregion Connectivity Issues
|
410 |
+
#region Change Owner
|
411 |
+
'change-owner-request-sent-x' => _fs_text( '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.' ),
|
412 |
+
'change-owner-request_owner-confirmed' => _fs_text( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.' ),
|
413 |
+
'change-owner-request_candidate-confirmed' => _fs_text( '%s is the new owner of the account.' ),
|
414 |
+
#endregion Change Owner
|
415 |
+
'addon-x-cannot-run-without-y' => _fs_x( '%s cannot run without %s.',
|
416 |
+
'addonX cannot run without pluginY' ),
|
417 |
+
'addon-x-cannot-run-without-parent' => _fs_x( '%s cannot run without the plugin.', 'addonX cannot run...' ),
|
418 |
+
'plugin-x-activation-message' => _fs_x( '%s activation was successfully completed.',
|
419 |
+
'pluginX activation was successfully...' ),
|
420 |
+
'features-and-pricing' => _fs_x( 'Features & Pricing', 'Plugin installer section title' ),
|
421 |
+
'free-addon-not-deployed' => _fs_text( 'Add-on must be deployed to WordPress.org or Freemius.' ),
|
422 |
+
'paid-addon-not-deployed' => _fs_text( 'Paid add-on must be deployed to Freemius.' ),
|
423 |
+
#--------------------------------------------------------------------------------
|
424 |
+
#region Add-On Licensing
|
425 |
+
#--------------------------------------------------------------------------------
|
426 |
+
'addon-no-license-message' => _fs_text( '%s is a premium only add-on. You have to purchase a license first before activating the plugin.' ),
|
427 |
+
'addon-trial-cancelled-message' => _fs_text( '%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.' ),
|
428 |
+
#endregion
|
429 |
+
#--------------------------------------------------------------------------------
|
430 |
+
#region Billing Cycles
|
431 |
+
#--------------------------------------------------------------------------------
|
432 |
+
'monthly' => _fs_x( 'Monthly', 'as every month' ),
|
433 |
+
'mo' => _fs_x( 'mo', 'as monthly period' ),
|
434 |
+
'annual' => _fs_x( 'Annual', 'as once a year' ),
|
435 |
+
'annually' => _fs_x( 'Annually', 'as once a year' ),
|
436 |
+
'once' => _fs_x( 'Once', 'as once a year' ),
|
437 |
+
'year' => _fs_x( 'year', 'as annual period' ),
|
438 |
+
'lifetime' => _fs_text( 'Lifetime' ),
|
439 |
+
'best' => _fs_x( 'Best', 'e.g. the best product' ),
|
440 |
+
'billed-x' => _fs_x( 'Billed %s', 'e.g. billed monthly' ),
|
441 |
+
'save-x' => _fs_x( 'Save %s', 'as a discount of $5 or 10%' ),
|
442 |
+
#endregion Billing Cycles
|
443 |
+
'view-details' => _fs_text( 'View details' ),
|
444 |
+
#--------------------------------------------------------------------------------
|
445 |
+
#region Trial
|
446 |
+
#--------------------------------------------------------------------------------
|
447 |
+
'approve-start-trial' => _fs_x( 'Approve & Start Trial', 'button label' ),
|
448 |
+
/* translators: %1$s: Number of trial days; %2$s: Plan name; */
|
449 |
+
'start-trial-prompt-header' => _fs_text( 'You are 1-click away from starting your %1$s-day free trial of the %2$s plan.' ),
|
450 |
+
/* translators: %s: Link to freemius.com */
|
451 |
+
'start-trial-prompt-message' => _fs_text( 'For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial.' ),
|
452 |
+
|
453 |
+
#endregion
|
454 |
+
#--------------------------------------------------------------------------------
|
455 |
+
#region Billing Details
|
456 |
+
#--------------------------------------------------------------------------------
|
457 |
+
'business-name' => _fs_text( 'Business name' ),
|
458 |
+
'tax-vat-id' => _fs_text( 'Tax / VAT ID' ),
|
459 |
+
'address-line-n' => _fs_text( 'Address Line %d' ),
|
460 |
+
'country' => _fs_text( 'Country' ),
|
461 |
+
'select-country' => _fs_text( 'Select Country' ),
|
462 |
+
'city' => _fs_text( 'City' ),
|
463 |
+
'town' => _fs_text( 'Town' ),
|
464 |
+
'state' => _fs_text( 'State' ),
|
465 |
+
'province' => _fs_text( 'Province' ),
|
466 |
+
'zip-postal-code' => _fs_text( 'ZIP / Postal Code' ),
|
467 |
+
#endregion
|
468 |
+
);
|
469 |
+
|
470 |
+
/**
|
471 |
+
* Localization of the strings in the plugin/theme info dialog box.
|
472 |
+
*
|
473 |
+
* $fs_module_info_text should ONLY include strings that are not located in $fs_text.
|
474 |
+
*
|
475 |
+
* @author Vova Feldman (@svovaf)
|
476 |
+
* @since 1.2.2
|
477 |
+
*/
|
478 |
+
global $fs_module_info_text;
|
479 |
+
|
480 |
+
$fs_module_info_text = array(
|
481 |
+
'description' => _fs_x( 'Description', 'Plugin installer section title' ),
|
482 |
+
'installation' => _fs_x( 'Installation', 'Plugin installer section title' ),
|
483 |
+
'faq' => _fs_x( 'FAQ', 'Plugin installer section title' ),
|
484 |
+
'changelog' => _fs_x( 'Changelog', 'Plugin installer section title' ),
|
485 |
+
'reviews' => _fs_x( 'Reviews', 'Plugin installer section title' ),
|
486 |
+
'other_notes' => _fs_x( 'Other Notes', 'Plugin installer section title' ),
|
487 |
+
/* translators: %s: 1 or One */
|
488 |
+
'x-star' => _fs_text( '%s star' ),
|
489 |
+
/* translators: %s: Number larger than 1 */
|
490 |
+
'x-stars' => _fs_text( '%s stars' ),
|
491 |
+
/* translators: %s: 1 or One */
|
492 |
+
'x-rating' => _fs_text( '%s rating' ),
|
493 |
+
/* translators: %s: Number larger than 1 */
|
494 |
+
'x-ratings' => _fs_text( '%s ratings' ),
|
495 |
+
/* translators: %s: 1 or One (Number of times downloaded) */
|
496 |
+
'x-time' => _fs_text( '%s time' ),
|
497 |
+
/* translators: %s: Number of times downloaded */
|
498 |
+
'x-times' => _fs_text( '%s times' ),
|
499 |
+
/* translators: %s: # of stars (e.g. 5 stars) */
|
500 |
+
'click-to-reviews' => _fs_text( 'Click to see reviews that provided a rating of %s' ),
|
501 |
+
'last-updated:' => _fs_text( 'Last Updated' ),
|
502 |
+
'requires-wordpress-version:' => _fs_text( 'Requires WordPress Version:' ),
|
503 |
+
'author:' => _fs_x( 'Author:', 'as the plugin author' ),
|
504 |
+
'compatible-up-to:' => _fs_text( 'Compatible up to:' ),
|
505 |
+
'downloaded:' => _fs_text( 'Downloaded:' ),
|
506 |
+
'wp-org-plugin-page' => _fs_text( 'WordPress.org Plugin Page' ),
|
507 |
+
'plugin-homepage' => _fs_text( 'Plugin Homepage' ),
|
508 |
+
'donate-to-plugin' => _fs_text( 'Donate to this plugin' ),
|
509 |
+
'average-rating' => _fs_text( 'Average Rating' ),
|
510 |
+
'based-on-x' => _fs_text( 'based on %s' ),
|
511 |
+
'warning:' => _fs_text( 'Warning:' ),
|
512 |
+
'contributors' => _fs_text( 'Contributors' ),
|
513 |
+
'plugin-install' => _fs_text( 'Plugin Install' ),
|
514 |
+
'not-tested-warning' => _fs_text( 'This plugin has not been tested with your current version of WordPress.' ),
|
515 |
+
'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
|
516 |
+
'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
|
517 |
+
'latest-installed' => _fs_text( 'Latest Version Installed' ),
|
518 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pum-sdk/freemius/includes/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/l10n.php
ADDED
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.2.1.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Retrieve the translation of $text.
|
15 |
+
*
|
16 |
+
* @since 1.2.1.6
|
17 |
+
*
|
18 |
+
* @param string $text
|
19 |
+
*
|
20 |
+
* @return string
|
21 |
+
*/
|
22 |
+
function _fs_text( $text ) {
|
23 |
+
return translate( $text, 'freemius' );
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Retrieve the translation of $text and escapes it for safe use in an attribute.
|
28 |
+
*
|
29 |
+
* @since 1.2.1.6
|
30 |
+
*
|
31 |
+
* @param string $text
|
32 |
+
*
|
33 |
+
* @return string
|
34 |
+
*/
|
35 |
+
function _fs_esc_attr( $text ) {
|
36 |
+
return esc_attr( translate( $text, 'freemius' ) );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Retrieve the translation of $text and escapes it for safe use in HTML output.
|
41 |
+
*
|
42 |
+
* @since 1.2.1.6
|
43 |
+
*
|
44 |
+
* @param string $text
|
45 |
+
*
|
46 |
+
* @return string
|
47 |
+
*/
|
48 |
+
function _fs_esc_html( $text ) {
|
49 |
+
return esc_html( translate( $text, 'freemius' ) );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Display translated text.
|
54 |
+
*
|
55 |
+
* @since 1.2.0
|
56 |
+
*
|
57 |
+
* @param string $text
|
58 |
+
*/
|
59 |
+
function _fs_echo( $text ) {
|
60 |
+
echo translate( $text, 'freemius' );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Display translated text that has been escaped for safe use in an attribute.
|
65 |
+
*
|
66 |
+
* @since 1.2.1.6
|
67 |
+
*
|
68 |
+
* @param string $text
|
69 |
+
*/
|
70 |
+
function _fs_esc_attr_echo( $text ) {
|
71 |
+
echo esc_attr( translate( $text, 'freemius' ) );
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Display translated text that has been escaped for safe use in HTML output.
|
76 |
+
*
|
77 |
+
* @since 1.2.1.6
|
78 |
+
*
|
79 |
+
* @param string $text
|
80 |
+
*/
|
81 |
+
function _fs_esc_html_echo( $text ) {
|
82 |
+
echo esc_html( translate( $text, 'freemius' ) );
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Retrieve translated string with gettext context.
|
87 |
+
*
|
88 |
+
* Quite a few times, there will be collisions with similar translatable text
|
89 |
+
* found in more than two places, but with different translated context.
|
90 |
+
*
|
91 |
+
* By including the context in the pot file, translators can translate the two
|
92 |
+
* strings differently.
|
93 |
+
*
|
94 |
+
* @since 1.2.1.6
|
95 |
+
*
|
96 |
+
* @param string $text
|
97 |
+
* @param string $context
|
98 |
+
*
|
99 |
+
* @return string
|
100 |
+
*/
|
101 |
+
function _fs_x( $text, $context ) {
|
102 |
+
return translate_with_gettext_context( $text, $context, 'freemius' );
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Display translated string with gettext context.
|
107 |
+
*
|
108 |
+
* @since 1.2.1.6
|
109 |
+
*
|
110 |
+
* @param string $text
|
111 |
+
* @param string $context
|
112 |
+
*/
|
113 |
+
function _fs_ex( $text, $context ) {
|
114 |
+
// Avoid misleading Theme Check warning.
|
115 |
+
$fn = '_x';
|
116 |
+
echo $fn( $text, $context, 'freemius' );
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Translate string with gettext context, and escapes it for safe use in an attribute.
|
121 |
+
*
|
122 |
+
* @since 1.2.1.6
|
123 |
+
*
|
124 |
+
* @param string $text
|
125 |
+
* @param string $context
|
126 |
+
*
|
127 |
+
* @return string
|
128 |
+
*/
|
129 |
+
function _fs_esc_attr_x( $text, $context ) {
|
130 |
+
return esc_attr( translate_with_gettext_context( $text, $context, 'freemius' ) );
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Translate string with gettext context, and escapes it for safe use in HTML output.
|
135 |
+
*
|
136 |
+
* @since 2.9.0
|
137 |
+
*
|
138 |
+
* @param string $text
|
139 |
+
* @param string $context
|
140 |
+
*
|
141 |
+
* @return string
|
142 |
+
*/
|
143 |
+
function _fs_esc_html_x( $text, $context ) {
|
144 |
+
return esc_html( translate_with_gettext_context( $text, $context, 'freemius' ) );
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Translates and retrieves the singular or plural form based on the supplied number.
|
149 |
+
*
|
150 |
+
* @since 1.2.1.6
|
151 |
+
*
|
152 |
+
* @param string $single
|
153 |
+
* @param string $plural
|
154 |
+
* @param int $number
|
155 |
+
*
|
156 |
+
* @return string
|
157 |
+
*/
|
158 |
+
function _fs_n( $single, $plural, $number ) {
|
159 |
+
$translations = get_translations_for_domain( 'freemius' );
|
160 |
+
$translation = $translations->translate_plural( $single, $plural, $number );
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Filters the singular or plural form of a string.
|
164 |
+
*
|
165 |
+
* @since WP 2.2.0
|
166 |
+
*
|
167 |
+
* @param string $translation
|
168 |
+
* @param string $single
|
169 |
+
* @param string $plural
|
170 |
+
* @param string $number
|
171 |
+
* @param string $domain
|
172 |
+
*/
|
173 |
+
return apply_filters( 'ngettext', $translation, $single, $plural, $number, 'freemius' );
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Translates and retrieves the singular or plural form based on the supplied number, with gettext context.
|
178 |
+
*
|
179 |
+
* @since 1.2.1.6
|
180 |
+
*
|
181 |
+
* @param string $single
|
182 |
+
* @param string $plural
|
183 |
+
* @param int $number
|
184 |
+
* @param string $context
|
185 |
+
*
|
186 |
+
* @return string
|
187 |
+
*/
|
188 |
+
function _fs_nx($single, $plural, $number, $context ) {
|
189 |
+
$translations = get_translations_for_domain( 'freemius' );
|
190 |
+
$translation = $translations->translate_plural( $single, $plural, $number, $context );
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Filters the singular or plural form of a string with gettext context.
|
194 |
+
*
|
195 |
+
* @since WP 3.0
|
196 |
+
*
|
197 |
+
* @param string $translation
|
198 |
+
* @param string $single
|
199 |
+
* @param string $plural
|
200 |
+
* @param string $number
|
201 |
+
* @param string $context
|
202 |
+
* @param string $domain
|
203 |
+
*/
|
204 |
+
return apply_filters( 'ngettext_with_context', $translation, $single, $plural, $number, $context, 'freemius' );
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Registers plural strings in POT file, but does not translate them.
|
209 |
+
*
|
210 |
+
* Used when you want to keep structures with translatable plural
|
211 |
+
* strings and use them later when the number is known.
|
212 |
+
*
|
213 |
+
* @since 1.2.1.6
|
214 |
+
*
|
215 |
+
* @param string $singular
|
216 |
+
* @param string $plural
|
217 |
+
*
|
218 |
+
* @return array
|
219 |
+
*/
|
220 |
+
function _fs_n_noop( $singular, $plural ) {
|
221 |
+
return array(
|
222 |
+
'singular' => $singular,
|
223 |
+
'plural' => $plural,
|
224 |
+
'context' => null,
|
225 |
+
'domain' => 'freemius'
|
226 |
+
);
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* Registers plural strings with gettext context in POT file, but does not translate them.
|
231 |
+
*
|
232 |
+
* Used when you want to keep structures with translatable plural
|
233 |
+
* strings and use them later when the number is known.
|
234 |
+
*
|
235 |
+
* @since 1.2.1.6
|
236 |
+
*
|
237 |
+
* @param string $singular
|
238 |
+
* @param string $plural
|
239 |
+
* @param string $context
|
240 |
+
*
|
241 |
+
* @return array
|
242 |
+
*/
|
243 |
+
function _fs_nx_noop( $singular, $plural, $context ) {
|
244 |
+
return array(
|
245 |
+
'singular' => $singular,
|
246 |
+
'plural' => $plural,
|
247 |
+
'context' => $context,
|
248 |
+
'domain' => 'freemius'
|
249 |
+
);
|
250 |
+
}
|
includes/pum-sdk/freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
@@ -120,7 +120,7 @@
|
|
120 |
* @param bool $is_addon
|
121 |
*/
|
122 |
function init( $menu, $is_addon = false ) {
|
123 |
-
$this->_menu_slug = $menu['slug'];
|
124 |
|
125 |
$this->_default_submenu_items = array();
|
126 |
// @deprecated
|
@@ -219,16 +219,6 @@
|
|
219 |
return ! $this->_is_top_level && is_string( $this->_parent_slug );
|
220 |
}
|
221 |
|
222 |
-
/**
|
223 |
-
* @author Vova Feldman (@svovaf)
|
224 |
-
* @since 1.1.3
|
225 |
-
*
|
226 |
-
* @return string
|
227 |
-
*/
|
228 |
-
// function slug(){
|
229 |
-
// return $this->_menu_slug;
|
230 |
-
// }
|
231 |
-
|
232 |
/**
|
233 |
* @author Vova Feldman (@svovaf)
|
234 |
* @since 1.1.3
|
@@ -264,6 +254,18 @@
|
|
264 |
$this->_plugin_slug ) . ( empty( $page ) ? '' : ( '-' . $page ) );
|
265 |
}
|
266 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
267 |
/**
|
268 |
* @author Vova Feldman (@svovaf)
|
269 |
* @since 1.1.3
|
@@ -453,6 +455,49 @@
|
|
453 |
);
|
454 |
}
|
455 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
/**
|
457 |
* Remove all sub-menu items.
|
458 |
*
|
@@ -554,17 +599,36 @@
|
|
554 |
* @param string $class
|
555 |
*/
|
556 |
function add_counter_to_menu_item( $counter = 1, $class = '' ) {
|
557 |
-
global $menu;
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
564 |
}
|
565 |
-
|
566 |
-
// Override menu label.
|
567 |
-
$menu[ $found_menu['position'] ][0] = $found_menu['menu'][0] . ' <span class="update-plugins ' . $class . ' count-' . $counter . '"><span>' . $counter . '</span></span>';
|
568 |
}
|
569 |
|
570 |
#endregion Top level menu Override
|
120 |
* @param bool $is_addon
|
121 |
*/
|
122 |
function init( $menu, $is_addon = false ) {
|
123 |
+
$this->_menu_slug = ! empty( $menu['slug'] ) ? $menu['slug'] : null;
|
124 |
|
125 |
$this->_default_submenu_items = array();
|
126 |
// @deprecated
|
219 |
return ! $this->_is_top_level && is_string( $this->_parent_slug );
|
220 |
}
|
221 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
/**
|
223 |
* @author Vova Feldman (@svovaf)
|
224 |
* @since 1.1.3
|
254 |
$this->_plugin_slug ) . ( empty( $page ) ? '' : ( '-' . $page ) );
|
255 |
}
|
256 |
|
257 |
+
/**
|
258 |
+
* Check if module has a menu slug set.
|
259 |
+
*
|
260 |
+
* @author Vova Feldman (@svovaf)
|
261 |
+
* @since 1.2.1.6
|
262 |
+
*
|
263 |
+
* @return bool
|
264 |
+
*/
|
265 |
+
function has_menu_slug() {
|
266 |
+
return ! empty( $this->_menu_slug );
|
267 |
+
}
|
268 |
+
|
269 |
/**
|
270 |
* @author Vova Feldman (@svovaf)
|
271 |
* @since 1.1.3
|
455 |
);
|
456 |
}
|
457 |
|
458 |
+
/**
|
459 |
+
* Find plugin's admin dashboard main submenu item.
|
460 |
+
*
|
461 |
+
* @author Vova Feldman (@svovaf)
|
462 |
+
* @since 1.2.1.6
|
463 |
+
*
|
464 |
+
* @return array|false
|
465 |
+
*/
|
466 |
+
private function find_main_submenu() {
|
467 |
+
global $submenu;
|
468 |
+
|
469 |
+
$top_level_menu_slug = $this->get_top_level_menu_slug();
|
470 |
+
|
471 |
+
if ( ! isset( $submenu[ $top_level_menu_slug ] ) ) {
|
472 |
+
return false;
|
473 |
+
}
|
474 |
+
|
475 |
+
$submenu_slug = $this->get_raw_slug();
|
476 |
+
|
477 |
+
$position = - 1;
|
478 |
+
$found_submenu = false;
|
479 |
+
|
480 |
+
$hook_name = get_plugin_page_hookname( $submenu_slug, '' );
|
481 |
+
|
482 |
+
foreach ( $submenu[ $top_level_menu_slug ] as $pos => $sub ) {
|
483 |
+
if ( $submenu_slug === $sub[2] ) {
|
484 |
+
$position = $pos;
|
485 |
+
$found_submenu = $sub;
|
486 |
+
}
|
487 |
+
}
|
488 |
+
|
489 |
+
if ( false === $found_submenu ) {
|
490 |
+
return false;
|
491 |
+
}
|
492 |
+
|
493 |
+
return array(
|
494 |
+
'menu' => $found_submenu,
|
495 |
+
'parent_slug' => $top_level_menu_slug,
|
496 |
+
'position' => $position,
|
497 |
+
'hook_name' => $hook_name
|
498 |
+
);
|
499 |
+
}
|
500 |
+
|
501 |
/**
|
502 |
* Remove all sub-menu items.
|
503 |
*
|
599 |
* @param string $class
|
600 |
*/
|
601 |
function add_counter_to_menu_item( $counter = 1, $class = '' ) {
|
602 |
+
global $menu, $submenu;
|
603 |
+
|
604 |
+
$mask = '%s <span class="update-plugins %s count-%3$s" aria-hidden="true"><span>%3$s<span class="screen-reader-text">%3$s notifications</span></span></span>';
|
605 |
+
|
606 |
+
if ( $this->_is_top_level ) {
|
607 |
+
// Find main menu item.
|
608 |
+
$found_menu = $this->find_top_level_menu();
|
609 |
+
|
610 |
+
if ( false !== $found_menu ) {
|
611 |
+
// Override menu label.
|
612 |
+
$menu[ $found_menu['position'] ][0] = sprintf(
|
613 |
+
$mask,
|
614 |
+
$found_menu['menu'][0],
|
615 |
+
$class,
|
616 |
+
$counter
|
617 |
+
);
|
618 |
+
}
|
619 |
+
} else {
|
620 |
+
$found_submenu = $this->find_main_submenu();
|
621 |
+
|
622 |
+
if ( false !== $found_submenu ) {
|
623 |
+
// Override menu label.
|
624 |
+
$submenu[ $found_submenu['parent_slug'] ][ $found_submenu['position'] ][0] = sprintf(
|
625 |
+
$mask,
|
626 |
+
$found_submenu['menu'][0],
|
627 |
+
$class,
|
628 |
+
$counter
|
629 |
+
);
|
630 |
+
}
|
631 |
}
|
|
|
|
|
|
|
632 |
}
|
633 |
|
634 |
#endregion Top level menu Override
|
includes/pum-sdk/freemius/includes/managers/class-fs-admin-notice-manager.php
CHANGED
@@ -1,313 +1,313 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
-
* @since 1.0.7
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit;
|
11 |
-
}
|
12 |
-
|
13 |
-
class FS_Admin_Notice_Manager {
|
14 |
-
/**
|
15 |
-
* @var string
|
16 |
-
*/
|
17 |
-
protected $_slug;
|
18 |
-
/**
|
19 |
-
* @var string
|
20 |
-
*/
|
21 |
-
protected $_title;
|
22 |
-
/**
|
23 |
-
* @var array[]
|
24 |
-
*/
|
25 |
-
private $_admin_messages = array();
|
26 |
-
/**
|
27 |
-
* @var FS_Key_Value_Storage
|
28 |
-
*/
|
29 |
-
private $_sticky_storage;
|
30 |
-
/**
|
31 |
-
* @var FS_Plugin_Manager[]
|
32 |
-
*/
|
33 |
-
private static $_instances = array();
|
34 |
-
/**
|
35 |
-
* @var FS_Logger
|
36 |
-
*/
|
37 |
-
protected $_logger;
|
38 |
-
|
39 |
-
/**
|
40 |
-
* @param string $slug
|
41 |
-
* @param string $title
|
42 |
-
*
|
43 |
-
* @return FS_Admin_Notice_Manager
|
44 |
-
*/
|
45 |
-
static function instance( $slug, $title = '' ) {
|
46 |
-
if ( ! isset( self::$_instances[ $slug ] ) ) {
|
47 |
-
self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
|
48 |
-
}
|
49 |
-
|
50 |
-
return self::$_instances[ $slug ];
|
51 |
-
}
|
52 |
-
|
53 |
-
protected function __construct( $slug, $title = '' ) {
|
54 |
-
$this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
|
55 |
-
|
56 |
-
$this->_slug = $slug;
|
57 |
-
$this->_title = ! empty( $title ) ? $title : '';
|
58 |
-
$this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
|
59 |
-
|
60 |
-
if ( is_admin() ) {
|
61 |
-
if ( 0 < count( $this->_sticky_storage ) ) {
|
62 |
-
// If there are sticky notices for the current slug, add a callback
|
63 |
-
// to the AJAX action that handles message dismiss.
|
64 |
-
add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
|
65 |
-
&$this,
|
66 |
-
'dismiss_notice_ajax_callback'
|
67 |
-
) );
|
68 |
-
|
69 |
-
foreach ( $this->_sticky_storage as $id => $msg ) {
|
70 |
-
// Add admin notice.
|
71 |
-
$this->add(
|
72 |
-
$msg['message'],
|
73 |
-
$msg['title'],
|
74 |
-
$msg['type'],
|
75 |
-
true,
|
76 |
-
$msg['all'],
|
77 |
-
$msg['id'],
|
78 |
-
false
|
79 |
-
);
|
80 |
-
}
|
81 |
-
}
|
82 |
-
}
|
83 |
-
}
|
84 |
-
|
85 |
-
/**
|
86 |
-
* Remove sticky message by ID.
|
87 |
-
*
|
88 |
-
* @author Vova Feldman (@svovaf)
|
89 |
-
* @since 1.0.7
|
90 |
-
*
|
91 |
-
*/
|
92 |
-
function dismiss_notice_ajax_callback() {
|
93 |
-
$this->_sticky_storage->remove( $_POST['message_id'] );
|
94 |
-
wp_die();
|
95 |
-
}
|
96 |
-
|
97 |
-
/**
|
98 |
-
* Rendered sticky message dismiss JavaScript.
|
99 |
-
*
|
100 |
-
* @author Vova Feldman (@svovaf)
|
101 |
-
* @since 1.0.7
|
102 |
-
*/
|
103 |
-
static function _add_sticky_dismiss_javascript() {
|
104 |
-
$params = array();
|
105 |
-
fs_require_once_template( 'sticky-admin-notice-js.php', $params );
|
106 |
-
}
|
107 |
-
|
108 |
-
private static $_added_sticky_javascript = false;
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Hook to the admin_footer to add sticky message dismiss JavaScript handler.
|
112 |
-
*
|
113 |
-
* @author Vova Feldman (@svovaf)
|
114 |
-
* @since 1.0.7
|
115 |
-
*/
|
116 |
-
private static function has_sticky_messages() {
|
117 |
-
if ( ! self::$_added_sticky_javascript ) {
|
118 |
-
add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
|
119 |
-
}
|
120 |
-
}
|
121 |
-
|
122 |
-
/**
|
123 |
-
* Handle admin_notices by printing the admin messages stacked in the queue.
|
124 |
-
*
|
125 |
-
* @author Vova Feldman (@svovaf)
|
126 |
-
* @since 1.0.4
|
127 |
-
*
|
128 |
-
*/
|
129 |
-
function _admin_notices_hook() {
|
130 |
-
$notice_type = 'admin_notices';
|
131 |
-
|
132 |
-
if ( function_exists( 'current_user_can' ) &&
|
133 |
-
! current_user_can( 'manage_options' )
|
134 |
-
) {
|
135 |
-
// Only show messages to admins.
|
136 |
-
return;
|
137 |
-
}
|
138 |
-
|
139 |
-
if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
|
140 |
-
return;
|
141 |
-
}
|
142 |
-
|
143 |
-
foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
|
144 |
-
fs_require_template( 'admin-notice.php', $msg );
|
145 |
-
|
146 |
-
if ( $msg['sticky'] ) {
|
147 |
-
self::has_sticky_messages();
|
148 |
-
}
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Handle all_admin_notices by printing the admin messages stacked in the queue.
|
154 |
-
*
|
155 |
-
* @author Vova Feldman (@svovaf)
|
156 |
-
* @since 1.0.4
|
157 |
-
*
|
158 |
-
*/
|
159 |
-
function _all_admin_notices_hook() {
|
160 |
-
$notice_type = 'all_admin_notices';
|
161 |
-
|
162 |
-
if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
|
163 |
-
return;
|
164 |
-
}
|
165 |
-
|
166 |
-
foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
|
167 |
-
fs_require_template( 'all-admin-notice.php', $msg );
|
168 |
-
}
|
169 |
-
}
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Enqueue common stylesheet to style admin notice.
|
173 |
-
*
|
174 |
-
* @author Vova Feldman (@svovaf)
|
175 |
-
* @since 1.0.7
|
176 |
-
*/
|
177 |
-
function _enqueue_styles() {
|
178 |
-
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
179 |
-
}
|
180 |
-
|
181 |
-
/**
|
182 |
-
* Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
|
183 |
-
*
|
184 |
-
* @author Vova Feldman (@svovaf)
|
185 |
-
* @since 1.0.4
|
186 |
-
*
|
187 |
-
* @param string $message
|
188 |
-
* @param string $title
|
189 |
-
* @param string $type
|
190 |
-
* @param bool $is_sticky
|
191 |
-
* @param bool $all_admin
|
192 |
-
* @param string $id Message ID
|
193 |
-
* @param bool $store_if_sticky
|
194 |
-
*
|
195 |
-
* @uses add_action()
|
196 |
-
*/
|
197 |
-
function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
|
198 |
-
$key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
|
199 |
-
|
200 |
-
if ( ! isset( $this->_admin_messages[ $key ] ) ) {
|
201 |
-
$this->_admin_messages[ $key ] = array();
|
202 |
-
|
203 |
-
add_action( $key, array( &$this, "_{$key}_hook" ) );
|
204 |
-
add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
|
205 |
-
|
206 |
-
}
|
207 |
-
|
208 |
-
if ( '' === $id ) {
|
209 |
-
$id = md5( $title . ' ' . $message . ' ' . $type );
|
210 |
-
}
|
211 |
-
|
212 |
-
$message_object = array(
|
213 |
-
'message' => $message,
|
214 |
-
'title' => $title,
|
215 |
-
'type' => $type,
|
216 |
-
'sticky' => $is_sticky,
|
217 |
-
'id' => $id,
|
218 |
-
'all' => $all_admin,
|
219 |
-
'slug' => $this->_slug,
|
220 |
-
'plugin' => $this->_title,
|
221 |
-
);
|
222 |
-
|
223 |
-
if ( $is_sticky && $store_if_sticky ) {
|
224 |
-
$this->_sticky_storage->{$id} = $message_object;
|
225 |
-
}
|
226 |
-
|
227 |
-
$this->_admin_messages[ $key ][ $id ] = $message_object;
|
228 |
-
}
|
229 |
-
|
230 |
-
/**
|
231 |
-
* @author Vova Feldman (@svovaf)
|
232 |
-
* @since 1.0.7
|
233 |
-
*
|
234 |
-
* @param string|string[] $ids
|
235 |
-
*/
|
236 |
-
function remove_sticky( $ids ) {
|
237 |
-
if ( ! is_array( $ids ) ) {
|
238 |
-
$ids = array( $ids );
|
239 |
-
}
|
240 |
-
|
241 |
-
foreach ( $ids as $id ) {
|
242 |
-
// Remove from sticky storage.
|
243 |
-
$this->_sticky_storage->remove( $id );
|
244 |
-
|
245 |
-
// Remove from current admin messages.
|
246 |
-
if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
|
247 |
-
unset( $this->_admin_messages['all_admin_notices'][ $id ] );
|
248 |
-
}
|
249 |
-
if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
|
250 |
-
unset( $this->_admin_messages['admin_notices'][ $id ] );
|
251 |
-
}
|
252 |
-
}
|
253 |
-
}
|
254 |
-
|
255 |
-
/**
|
256 |
-
* Check if sticky message exists by id.
|
257 |
-
*
|
258 |
-
* @author Vova Feldman (@svovaf)
|
259 |
-
* @since 1.0.9
|
260 |
-
*
|
261 |
-
* @param $id
|
262 |
-
*
|
263 |
-
* @return bool
|
264 |
-
*/
|
265 |
-
function has_sticky( $id ) {
|
266 |
-
return isset( $this->_sticky_storage[ $id ] );
|
267 |
-
}
|
268 |
-
|
269 |
-
/**
|
270 |
-
* Adds sticky admin notification.
|
271 |
-
*
|
272 |
-
* @author Vova Feldman (@svovaf)
|
273 |
-
* @since 1.0.7
|
274 |
-
*
|
275 |
-
* @param string $message
|
276 |
-
* @param string $id Message ID
|
277 |
-
* @param string $title
|
278 |
-
* @param string $type
|
279 |
-
* @param bool $all_admin
|
280 |
-
*/
|
281 |
-
function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
|
282 |
-
$message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
|
283 |
-
$title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
|
284 |
-
|
285 |
-
$this->add( $message, $title, $type, true, $all_admin, $id );
|
286 |
-
}
|
287 |
-
|
288 |
-
/**
|
289 |
-
* Clear all sticky messages.
|
290 |
-
*
|
291 |
-
* @author Vova Feldman (@svovaf)
|
292 |
-
* @since 1.0.8
|
293 |
-
*/
|
294 |
-
function clear_all_sticky() {
|
295 |
-
$this->_sticky_storage->clear_all();
|
296 |
-
}
|
297 |
-
|
298 |
-
/**
|
299 |
-
* Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
|
300 |
-
*
|
301 |
-
* @author Vova Feldman (@svovaf)
|
302 |
-
* @since 1.0.4
|
303 |
-
*
|
304 |
-
* @param string $message
|
305 |
-
* @param string $title
|
306 |
-
* @param string $type
|
307 |
-
* @param bool $is_sticky
|
308 |
-
* @param string $id Message ID
|
309 |
-
*/
|
310 |
-
function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
|
311 |
-
$this->add( $message, $title, $type, $is_sticky, true, $id );
|
312 |
-
}
|
313 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.0.7
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
class FS_Admin_Notice_Manager {
|
14 |
+
/**
|
15 |
+
* @var string
|
16 |
+
*/
|
17 |
+
protected $_slug;
|
18 |
+
/**
|
19 |
+
* @var string
|
20 |
+
*/
|
21 |
+
protected $_title;
|
22 |
+
/**
|
23 |
+
* @var array[]
|
24 |
+
*/
|
25 |
+
private $_admin_messages = array();
|
26 |
+
/**
|
27 |
+
* @var FS_Key_Value_Storage
|
28 |
+
*/
|
29 |
+
private $_sticky_storage;
|
30 |
+
/**
|
31 |
+
* @var FS_Plugin_Manager[]
|
32 |
+
*/
|
33 |
+
private static $_instances = array();
|
34 |
+
/**
|
35 |
+
* @var FS_Logger
|
36 |
+
*/
|
37 |
+
protected $_logger;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @param string $slug
|
41 |
+
* @param string $title
|
42 |
+
*
|
43 |
+
* @return FS_Admin_Notice_Manager
|
44 |
+
*/
|
45 |
+
static function instance( $slug, $title = '' ) {
|
46 |
+
if ( ! isset( self::$_instances[ $slug ] ) ) {
|
47 |
+
self::$_instances[ $slug ] = new FS_Admin_Notice_Manager( $slug, $title );
|
48 |
+
}
|
49 |
+
|
50 |
+
return self::$_instances[ $slug ];
|
51 |
+
}
|
52 |
+
|
53 |
+
protected function __construct( $slug, $title = '' ) {
|
54 |
+
$this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_' . $slug . '_data', WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
|
55 |
+
|
56 |
+
$this->_slug = $slug;
|
57 |
+
$this->_title = ! empty( $title ) ? $title : '';
|
58 |
+
$this->_sticky_storage = FS_Key_Value_Storage::instance( 'admin_notices', $this->_slug );
|
59 |
+
|
60 |
+
if ( is_admin() ) {
|
61 |
+
if ( 0 < count( $this->_sticky_storage ) ) {
|
62 |
+
// If there are sticky notices for the current slug, add a callback
|
63 |
+
// to the AJAX action that handles message dismiss.
|
64 |
+
add_action( "wp_ajax_fs_dismiss_notice_action_{$slug}", array(
|
65 |
+
&$this,
|
66 |
+
'dismiss_notice_ajax_callback'
|
67 |
+
) );
|
68 |
+
|
69 |
+
foreach ( $this->_sticky_storage as $id => $msg ) {
|
70 |
+
// Add admin notice.
|
71 |
+
$this->add(
|
72 |
+
$msg['message'],
|
73 |
+
$msg['title'],
|
74 |
+
$msg['type'],
|
75 |
+
true,
|
76 |
+
$msg['all'],
|
77 |
+
$msg['id'],
|
78 |
+
false
|
79 |
+
);
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Remove sticky message by ID.
|
87 |
+
*
|
88 |
+
* @author Vova Feldman (@svovaf)
|
89 |
+
* @since 1.0.7
|
90 |
+
*
|
91 |
+
*/
|
92 |
+
function dismiss_notice_ajax_callback() {
|
93 |
+
$this->_sticky_storage->remove( $_POST['message_id'] );
|
94 |
+
wp_die();
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Rendered sticky message dismiss JavaScript.
|
99 |
+
*
|
100 |
+
* @author Vova Feldman (@svovaf)
|
101 |
+
* @since 1.0.7
|
102 |
+
*/
|
103 |
+
static function _add_sticky_dismiss_javascript() {
|
104 |
+
$params = array();
|
105 |
+
fs_require_once_template( 'sticky-admin-notice-js.php', $params );
|
106 |
+
}
|
107 |
+
|
108 |
+
private static $_added_sticky_javascript = false;
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Hook to the admin_footer to add sticky message dismiss JavaScript handler.
|
112 |
+
*
|
113 |
+
* @author Vova Feldman (@svovaf)
|
114 |
+
* @since 1.0.7
|
115 |
+
*/
|
116 |
+
private static function has_sticky_messages() {
|
117 |
+
if ( ! self::$_added_sticky_javascript ) {
|
118 |
+
add_action( 'admin_footer', array( 'FS_Admin_Notice_Manager', '_add_sticky_dismiss_javascript' ) );
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Handle admin_notices by printing the admin messages stacked in the queue.
|
124 |
+
*
|
125 |
+
* @author Vova Feldman (@svovaf)
|
126 |
+
* @since 1.0.4
|
127 |
+
*
|
128 |
+
*/
|
129 |
+
function _admin_notices_hook() {
|
130 |
+
$notice_type = 'admin_notices';
|
131 |
+
|
132 |
+
if ( function_exists( 'current_user_can' ) &&
|
133 |
+
! current_user_can( 'manage_options' )
|
134 |
+
) {
|
135 |
+
// Only show messages to admins.
|
136 |
+
return;
|
137 |
+
}
|
138 |
+
|
139 |
+
if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
|
140 |
+
return;
|
141 |
+
}
|
142 |
+
|
143 |
+
foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
|
144 |
+
fs_require_template( 'admin-notice.php', $msg );
|
145 |
+
|
146 |
+
if ( $msg['sticky'] ) {
|
147 |
+
self::has_sticky_messages();
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Handle all_admin_notices by printing the admin messages stacked in the queue.
|
154 |
+
*
|
155 |
+
* @author Vova Feldman (@svovaf)
|
156 |
+
* @since 1.0.4
|
157 |
+
*
|
158 |
+
*/
|
159 |
+
function _all_admin_notices_hook() {
|
160 |
+
$notice_type = 'all_admin_notices';
|
161 |
+
|
162 |
+
if ( ! isset( $this->_admin_messages[ $notice_type ] ) || ! is_array( $this->_admin_messages[ $notice_type ] ) ) {
|
163 |
+
return;
|
164 |
+
}
|
165 |
+
|
166 |
+
foreach ( $this->_admin_messages[ $notice_type ] as $id => $msg ) {
|
167 |
+
fs_require_template( 'all-admin-notice.php', $msg );
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Enqueue common stylesheet to style admin notice.
|
173 |
+
*
|
174 |
+
* @author Vova Feldman (@svovaf)
|
175 |
+
* @since 1.0.7
|
176 |
+
*/
|
177 |
+
function _enqueue_styles() {
|
178 |
+
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked.
|
183 |
+
*
|
184 |
+
* @author Vova Feldman (@svovaf)
|
185 |
+
* @since 1.0.4
|
186 |
+
*
|
187 |
+
* @param string $message
|
188 |
+
* @param string $title
|
189 |
+
* @param string $type
|
190 |
+
* @param bool $is_sticky
|
191 |
+
* @param bool $all_admin
|
192 |
+
* @param string $id Message ID
|
193 |
+
* @param bool $store_if_sticky
|
194 |
+
*
|
195 |
+
* @uses add_action()
|
196 |
+
*/
|
197 |
+
function add( $message, $title = '', $type = 'success', $is_sticky = false, $all_admin = false, $id = '', $store_if_sticky = true ) {
|
198 |
+
$key = ( $all_admin ? 'all_admin_notices' : 'admin_notices' );
|
199 |
+
|
200 |
+
if ( ! isset( $this->_admin_messages[ $key ] ) ) {
|
201 |
+
$this->_admin_messages[ $key ] = array();
|
202 |
+
|
203 |
+
add_action( $key, array( &$this, "_{$key}_hook" ) );
|
204 |
+
add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_styles' ) );
|
205 |
+
|
206 |
+
}
|
207 |
+
|
208 |
+
if ( '' === $id ) {
|
209 |
+
$id = md5( $title . ' ' . $message . ' ' . $type );
|
210 |
+
}
|
211 |
+
|
212 |
+
$message_object = array(
|
213 |
+
'message' => $message,
|
214 |
+
'title' => $title,
|
215 |
+
'type' => $type,
|
216 |
+
'sticky' => $is_sticky,
|
217 |
+
'id' => $id,
|
218 |
+
'all' => $all_admin,
|
219 |
+
'slug' => $this->_slug,
|
220 |
+
'plugin' => $this->_title,
|
221 |
+
);
|
222 |
+
|
223 |
+
if ( $is_sticky && $store_if_sticky ) {
|
224 |
+
$this->_sticky_storage->{$id} = $message_object;
|
225 |
+
}
|
226 |
+
|
227 |
+
$this->_admin_messages[ $key ][ $id ] = $message_object;
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* @author Vova Feldman (@svovaf)
|
232 |
+
* @since 1.0.7
|
233 |
+
*
|
234 |
+
* @param string|string[] $ids
|
235 |
+
*/
|
236 |
+
function remove_sticky( $ids ) {
|
237 |
+
if ( ! is_array( $ids ) ) {
|
238 |
+
$ids = array( $ids );
|
239 |
+
}
|
240 |
+
|
241 |
+
foreach ( $ids as $id ) {
|
242 |
+
// Remove from sticky storage.
|
243 |
+
$this->_sticky_storage->remove( $id );
|
244 |
+
|
245 |
+
// Remove from current admin messages.
|
246 |
+
if ( isset( $this->_admin_messages['all_admin_notices'] ) && isset( $this->_admin_messages['all_admin_notices'][ $id ] ) ) {
|
247 |
+
unset( $this->_admin_messages['all_admin_notices'][ $id ] );
|
248 |
+
}
|
249 |
+
if ( isset( $this->_admin_messages['admin_notices'] ) && isset( $this->_admin_messages['admin_notices'][ $id ] ) ) {
|
250 |
+
unset( $this->_admin_messages['admin_notices'][ $id ] );
|
251 |
+
}
|
252 |
+
}
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* Check if sticky message exists by id.
|
257 |
+
*
|
258 |
+
* @author Vova Feldman (@svovaf)
|
259 |
+
* @since 1.0.9
|
260 |
+
*
|
261 |
+
* @param $id
|
262 |
+
*
|
263 |
+
* @return bool
|
264 |
+
*/
|
265 |
+
function has_sticky( $id ) {
|
266 |
+
return isset( $this->_sticky_storage[ $id ] );
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* Adds sticky admin notification.
|
271 |
+
*
|
272 |
+
* @author Vova Feldman (@svovaf)
|
273 |
+
* @since 1.0.7
|
274 |
+
*
|
275 |
+
* @param string $message
|
276 |
+
* @param string $id Message ID
|
277 |
+
* @param string $title
|
278 |
+
* @param string $type
|
279 |
+
* @param bool $all_admin
|
280 |
+
*/
|
281 |
+
function add_sticky( $message, $id, $title = '', $type = 'success', $all_admin = false ) {
|
282 |
+
$message = fs_apply_filter( $this->_slug, "sticky_message_{$id}", $message );
|
283 |
+
$title = fs_apply_filter( $this->_slug, "sticky_title_{$id}", $title );
|
284 |
+
|
285 |
+
$this->add( $message, $title, $type, true, $all_admin, $id );
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* Clear all sticky messages.
|
290 |
+
*
|
291 |
+
* @author Vova Feldman (@svovaf)
|
292 |
+
* @since 1.0.8
|
293 |
+
*/
|
294 |
+
function clear_all_sticky() {
|
295 |
+
$this->_sticky_storage->clear_all();
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* Add admin message to all admin messages queue, and hook to all_admin_notices if not yet hooked.
|
300 |
+
*
|
301 |
+
* @author Vova Feldman (@svovaf)
|
302 |
+
* @since 1.0.4
|
303 |
+
*
|
304 |
+
* @param string $message
|
305 |
+
* @param string $title
|
306 |
+
* @param string $type
|
307 |
+
* @param bool $is_sticky
|
308 |
+
* @param string $id Message ID
|
309 |
+
*/
|
310 |
+
function add_all( $message, $title = '', $type = 'success', $is_sticky = false, $id = '' ) {
|
311 |
+
$this->add( $message, $title, $type, $is_sticky, true, $id );
|
312 |
+
}
|
313 |
}
|
includes/pum-sdk/freemius/includes/managers/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
-
exit;
|
4 |
-
}
|
5 |
-
|
6 |
-
if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
|
7 |
-
class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
|
8 |
-
}
|
9 |
}
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
|
7 |
+
class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
|
8 |
+
}
|
9 |
}
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/EmptyArgumentException.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
-
exit;
|
4 |
-
}
|
5 |
-
|
6 |
-
if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
|
7 |
-
class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
|
8 |
-
}
|
9 |
}
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
|
7 |
+
class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
|
8 |
+
}
|
9 |
}
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/Exception.php
CHANGED
@@ -1,74 +1,74 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
-
/**
|
4 |
-
* Thrown when an API call returns an exception.
|
5 |
-
*
|
6 |
-
*/
|
7 |
-
class Freemius_Exception extends Exception {
|
8 |
-
protected $_result;
|
9 |
-
protected $_type;
|
10 |
-
protected $_code;
|
11 |
-
|
12 |
-
/**
|
13 |
-
* Make a new API Exception with the given result.
|
14 |
-
*
|
15 |
-
* @param array $result The result from the API server.
|
16 |
-
*/
|
17 |
-
public function __construct( $result ) {
|
18 |
-
$this->_result = $result;
|
19 |
-
|
20 |
-
$code = 0;
|
21 |
-
$message = 'Unknown error, please check GetResult().';
|
22 |
-
$type = '';
|
23 |
-
|
24 |
-
if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
|
25 |
-
if ( isset( $result['error']['code'] ) ) {
|
26 |
-
$code = $result['error']['code'];
|
27 |
-
}
|
28 |
-
if ( isset( $result['error']['message'] ) ) {
|
29 |
-
$message = $result['error']['message'];
|
30 |
-
}
|
31 |
-
if ( isset( $result['error']['type'] ) ) {
|
32 |
-
$type = $result['error']['type'];
|
33 |
-
}
|
34 |
-
}
|
35 |
-
|
36 |
-
$this->_type = $type;
|
37 |
-
$this->_code = $code;
|
38 |
-
|
39 |
-
parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
|
40 |
-
}
|
41 |
-
|
42 |
-
/**
|
43 |
-
* Return the associated result object returned by the API server.
|
44 |
-
*
|
45 |
-
* @return array The result from the API server
|
46 |
-
*/
|
47 |
-
public function getResult() {
|
48 |
-
return $this->_result;
|
49 |
-
}
|
50 |
-
|
51 |
-
public function getStringCode() {
|
52 |
-
return $this->_code;
|
53 |
-
}
|
54 |
-
|
55 |
-
public function getType() {
|
56 |
-
return $this->_type;
|
57 |
-
}
|
58 |
-
|
59 |
-
/**
|
60 |
-
* To make debugging easier.
|
61 |
-
*
|
62 |
-
* @return string The string representation of the error
|
63 |
-
*/
|
64 |
-
public function __toString() {
|
65 |
-
$str = $this->getType() . ': ';
|
66 |
-
|
67 |
-
if ( $this->code != 0 ) {
|
68 |
-
$str .= $this->getStringCode() . ': ';
|
69 |
-
}
|
70 |
-
|
71 |
-
return $str . $this->getMessage();
|
72 |
-
}
|
73 |
-
}
|
74 |
}
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
+
/**
|
4 |
+
* Thrown when an API call returns an exception.
|
5 |
+
*
|
6 |
+
*/
|
7 |
+
class Freemius_Exception extends Exception {
|
8 |
+
protected $_result;
|
9 |
+
protected $_type;
|
10 |
+
protected $_code;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Make a new API Exception with the given result.
|
14 |
+
*
|
15 |
+
* @param array $result The result from the API server.
|
16 |
+
*/
|
17 |
+
public function __construct( $result ) {
|
18 |
+
$this->_result = $result;
|
19 |
+
|
20 |
+
$code = 0;
|
21 |
+
$message = 'Unknown error, please check GetResult().';
|
22 |
+
$type = '';
|
23 |
+
|
24 |
+
if ( isset( $result['error'] ) && is_array( $result['error'] ) ) {
|
25 |
+
if ( isset( $result['error']['code'] ) ) {
|
26 |
+
$code = $result['error']['code'];
|
27 |
+
}
|
28 |
+
if ( isset( $result['error']['message'] ) ) {
|
29 |
+
$message = $result['error']['message'];
|
30 |
+
}
|
31 |
+
if ( isset( $result['error']['type'] ) ) {
|
32 |
+
$type = $result['error']['type'];
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
$this->_type = $type;
|
37 |
+
$this->_code = $code;
|
38 |
+
|
39 |
+
parent::__construct( $message, is_numeric( $code ) ? $code : 0 );
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Return the associated result object returned by the API server.
|
44 |
+
*
|
45 |
+
* @return array The result from the API server
|
46 |
+
*/
|
47 |
+
public function getResult() {
|
48 |
+
return $this->_result;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function getStringCode() {
|
52 |
+
return $this->_code;
|
53 |
+
}
|
54 |
+
|
55 |
+
public function getType() {
|
56 |
+
return $this->_type;
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* To make debugging easier.
|
61 |
+
*
|
62 |
+
* @return string The string representation of the error
|
63 |
+
*/
|
64 |
+
public function __toString() {
|
65 |
+
$str = $this->getType() . ': ';
|
66 |
+
|
67 |
+
if ( $this->code != 0 ) {
|
68 |
+
$str .= $this->getStringCode() . ': ';
|
69 |
+
}
|
70 |
+
|
71 |
+
return $str . $this->getMessage();
|
72 |
+
}
|
73 |
+
}
|
74 |
}
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/InvalidArgumentException.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
-
exit;
|
4 |
-
}
|
5 |
-
|
6 |
-
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
7 |
-
class Freemius_InvalidArgumentException extends Freemius_Exception { }
|
8 |
}
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
7 |
+
class Freemius_InvalidArgumentException extends Freemius_Exception { }
|
8 |
}
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/OAuthException.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
-
exit;
|
4 |
-
}
|
5 |
-
|
6 |
-
if ( ! class_exists( 'Freemius_OAuthException' ) ) {
|
7 |
-
class Freemius_OAuthException extends Freemius_Exception {
|
8 |
-
public function __construct( $pResult ) {
|
9 |
-
parent::__construct( $pResult );
|
10 |
-
}
|
11 |
-
}
|
12 |
}
|
1 |
+
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
+
if ( ! class_exists( 'Freemius_OAuthException' ) ) {
|
7 |
+
class Freemius_OAuthException extends Freemius_Exception {
|
8 |
+
public function __construct( $pResult ) {
|
9 |
+
parent::__construct( $pResult );
|
10 |
+
}
|
11 |
+
}
|
12 |
}
|
includes/pum-sdk/freemius/includes/sdk/Exceptions/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/sdk/Freemius.php
CHANGED
@@ -1,583 +1,583 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Copyright 2014 Freemius, Inc.
|
4 |
-
*
|
5 |
-
* Licensed under the GPL v2 (the "License"); you may
|
6 |
-
* not use this file except in compliance with the License. You may obtain
|
7 |
-
* a copy of the License at
|
8 |
-
*
|
9 |
-
* http://choosealicense.com/licenses/gpl-v2/
|
10 |
-
*
|
11 |
-
* Unless required by applicable law or agreed to in writing, software
|
12 |
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
-
* License for the specific language governing permissions and limitations
|
15 |
-
* under the License.
|
16 |
-
*/
|
17 |
-
|
18 |
-
require_once
|
19 |
-
|
20 |
-
if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
|
21 |
-
define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
|
22 |
-
}
|
23 |
-
|
24 |
-
if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
|
25 |
-
define( 'FS_SDK__SIMULATE_NO_CURL', false );
|
26 |
-
}
|
27 |
-
|
28 |
-
if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
|
29 |
-
define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
|
30 |
-
}
|
31 |
-
|
32 |
-
if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
|
33 |
-
define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
|
34 |
-
}
|
35 |
-
|
36 |
-
if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
|
37 |
-
define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) );
|
38 |
-
}
|
39 |
-
|
40 |
-
if ( ! FS_SDK__HAS_CURL ) {
|
41 |
-
$curl_version = array( 'version' => '7.0.0' );
|
42 |
-
} else {
|
43 |
-
$curl_version = curl_version();
|
44 |
-
}
|
45 |
-
|
46 |
-
if ( ! defined( 'FS_API__PROTOCOL' ) ) {
|
47 |
-
define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
|
48 |
-
}
|
49 |
-
|
50 |
-
if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
|
51 |
-
define( 'FS_API__LOGGER_ON', false );
|
52 |
-
}
|
53 |
-
|
54 |
-
if ( ! defined( 'FS_API__ADDRESS' ) ) {
|
55 |
-
define( 'FS_API__ADDRESS', '://api.freemius.com' );
|
56 |
-
}
|
57 |
-
if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
|
58 |
-
define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
|
59 |
-
}
|
60 |
-
|
61 |
-
if ( class_exists( 'Freemius_Api' ) ) {
|
62 |
-
return;
|
63 |
-
}
|
64 |
-
|
65 |
-
class Freemius_Api extends Freemius_Api_Base {
|
66 |
-
private static $_logger = array();
|
67 |
-
|
68 |
-
/**
|
69 |
-
* @param string $pScope 'app', 'developer', 'user' or 'install'.
|
70 |
-
* @param number $pID Element's id.
|
71 |
-
* @param string $pPublic Public key.
|
72 |
-
* @param string|bool $pSecret Element's secret key.
|
73 |
-
* @param bool $pSandbox Whether or not to run API in sandbox mode.
|
74 |
-
*/
|
75 |
-
public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
|
76 |
-
// If secret key not provided, use public key encryption.
|
77 |
-
if ( is_bool( $pSecret ) ) {
|
78 |
-
$pSecret = $pPublic;
|
79 |
-
}
|
80 |
-
|
81 |
-
parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
|
82 |
-
}
|
83 |
-
|
84 |
-
public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
|
85 |
-
$address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
|
86 |
-
|
87 |
-
if ( ':' === $address[0] ) {
|
88 |
-
$address = self::$_protocol . $address;
|
89 |
-
}
|
90 |
-
|
91 |
-
return $address . $pCanonizedPath;
|
92 |
-
}
|
93 |
-
|
94 |
-
#region Servers Clock Diff ------------------------------------------------------
|
95 |
-
|
96 |
-
/**
|
97 |
-
* @var int Clock diff in seconds between current server to API server.
|
98 |
-
*/
|
99 |
-
private static $_clock_diff = 0;
|
100 |
-
|
101 |
-
/**
|
102 |
-
* Set clock diff for all API calls.
|
103 |
-
*
|
104 |
-
* @since 1.0.3
|
105 |
-
*
|
106 |
-
* @param $pSeconds
|
107 |
-
*/
|
108 |
-
public static function SetClockDiff( $pSeconds ) {
|
109 |
-
self::$_clock_diff = $pSeconds;
|
110 |
-
}
|
111 |
-
|
112 |
-
/**
|
113 |
-
* Find clock diff between current server to API server.
|
114 |
-
*
|
115 |
-
* @since 1.0.2
|
116 |
-
* @return int Clock diff in seconds.
|
117 |
-
*/
|
118 |
-
public static function FindClockDiff() {
|
119 |
-
$time = time();
|
120 |
-
$pong = self::Ping();
|
121 |
-
|
122 |
-
return ( $time - strtotime( $pong->timestamp ) );
|
123 |
-
}
|
124 |
-
|
125 |
-
#endregion Servers Clock Diff ------------------------------------------------------
|
126 |
-
|
127 |
-
/**
|
128 |
-
* @var string http or https
|
129 |
-
*/
|
130 |
-
private static $_protocol = FS_API__PROTOCOL;
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Set API connection protocol.
|
134 |
-
*
|
135 |
-
* @since 1.0.4
|
136 |
-
*/
|
137 |
-
public static function SetHttp() {
|
138 |
-
self::$_protocol = 'http';
|
139 |
-
}
|
140 |
-
|
141 |
-
/**
|
142 |
-
* @since 1.0.4
|
143 |
-
*
|
144 |
-
* @return bool
|
145 |
-
*/
|
146 |
-
public static function IsHttps() {
|
147 |
-
return ( 'https' === self::$_protocol );
|
148 |
-
}
|
149 |
-
|
150 |
-
/**
|
151 |
-
* Sign request with the following HTTP headers:
|
152 |
-
* Content-MD5: MD5(HTTP Request body)
|
153 |
-
* Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
|
154 |
-
* Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
|
155 |
-
* {scope_entity_secret_key}))
|
156 |
-
*
|
157 |
-
* @param string $pResourceUrl
|
158 |
-
* @param array $pCurlOptions
|
159 |
-
*
|
160 |
-
* @return array
|
161 |
-
*/
|
162 |
-
function SignRequest( $pResourceUrl, $pCurlOptions ) {
|
163 |
-
$eol = "\n";
|
164 |
-
$content_md5 = '';
|
165 |
-
$now = ( time() - self::$_clock_diff );
|
166 |
-
$date = date( 'r', $now );
|
167 |
-
$content_type = '';
|
168 |
-
|
169 |
-
if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
|
170 |
-
$content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
|
171 |
-
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
|
172 |
-
$content_type = 'application/json';
|
173 |
-
}
|
174 |
-
|
175 |
-
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
|
176 |
-
|
177 |
-
$string_to_sign = implode( $eol, array(
|
178 |
-
$pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
|
179 |
-
$content_md5,
|
180 |
-
$content_type,
|
181 |
-
$date,
|
182 |
-
$pResourceUrl
|
183 |
-
) );
|
184 |
-
|
185 |
-
// If secret and public keys are identical, it means that
|
186 |
-
// the signature uses public key hash encoding.
|
187 |
-
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
188 |
-
|
189 |
-
// Add authorization header.
|
190 |
-
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
|
191 |
-
$auth_type . ' ' .
|
192 |
-
$this->_id . ':' .
|
193 |
-
$this->_public . ':' .
|
194 |
-
self::Base64UrlEncode(
|
195 |
-
hash_hmac( 'sha256', $string_to_sign, $this->_secret )
|
196 |
-
);
|
197 |
-
|
198 |
-
return $pCurlOptions;
|
199 |
-
}
|
200 |
-
|
201 |
-
/**
|
202 |
-
* Get API request URL signed via query string.
|
203 |
-
*
|
204 |
-
* @param string $pPath
|
205 |
-
*
|
206 |
-
* @throws Freemius_Exception
|
207 |
-
*
|
208 |
-
* @return string
|
209 |
-
*/
|
210 |
-
function GetSignedUrl( $pPath ) {
|
211 |
-
$resource = explode( '?', $this->CanonizePath( $pPath ) );
|
212 |
-
$pResourceUrl = $resource[0];
|
213 |
-
|
214 |
-
$eol = "\n";
|
215 |
-
$content_md5 = '';
|
216 |
-
$content_type = '';
|
217 |
-
$now = ( time() - self::$_clock_diff );
|
218 |
-
$date = date( 'r', $now );
|
219 |
-
|
220 |
-
$string_to_sign = implode( $eol, array(
|
221 |
-
'GET',
|
222 |
-
$content_md5,
|
223 |
-
$content_type,
|
224 |
-
$date,
|
225 |
-
$pResourceUrl
|
226 |
-
) );
|
227 |
-
|
228 |
-
// If secret and public keys are identical, it means that
|
229 |
-
// the signature uses public key hash encoding.
|
230 |
-
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
231 |
-
|
232 |
-
return Freemius_Api::GetUrl(
|
233 |
-
$pResourceUrl . '?' .
|
234 |
-
( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
|
235 |
-
http_build_query( array(
|
236 |
-
'auth_date' => $date,
|
237 |
-
'authorization' => $auth_type . ' ' . $this->_id . ':' .
|
238 |
-
$this->_public . ':' .
|
239 |
-
self::Base64UrlEncode( hash_hmac(
|
240 |
-
'sha256', $string_to_sign, $this->_secret
|
241 |
-
) )
|
242 |
-
) ), $this->_isSandbox );
|
243 |
-
}
|
244 |
-
|
245 |
-
/**
|
246 |
-
* @param resource $pCurlHandler
|
247 |
-
* @param array $pCurlOptions
|
248 |
-
*
|
249 |
-
* @return mixed
|
250 |
-
*/
|
251 |
-
private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
|
252 |
-
$start = microtime( true );
|
253 |
-
|
254 |
-
$result = curl_exec( $pCurlHandler );
|
255 |
-
|
256 |
-
if ( FS_API__LOGGER_ON ) {
|
257 |
-
$end = microtime( true );
|
258 |
-
|
259 |
-
$has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
|
260 |
-
|
261 |
-
self::$_logger[] = array(
|
262 |
-
'id' => count( self::$_logger ),
|
263 |
-
'start' => $start,
|
264 |
-
'end' => $end,
|
265 |
-
'total' => ( $end - $start ),
|
266 |
-
'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
|
267 |
-
'path' => $pCurlOptions[ CURLOPT_URL ],
|
268 |
-
'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
|
269 |
-
'result' => $result,
|
270 |
-
'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
|
271 |
-
'backtrace' => debug_backtrace(),
|
272 |
-
);
|
273 |
-
}
|
274 |
-
|
275 |
-
return $result;
|
276 |
-
}
|
277 |
-
|
278 |
-
/**
|
279 |
-
* @return array
|
280 |
-
*/
|
281 |
-
static function GetLogger() {
|
282 |
-
return self::$_logger;
|
283 |
-
}
|
284 |
-
|
285 |
-
/**
|
286 |
-
* @param string $pCanonizedPath
|
287 |
-
* @param string $pMethod
|
288 |
-
* @param array $pParams
|
289 |
-
* @param null|resource $pCurlHandler
|
290 |
-
* @param bool $pIsSandbox
|
291 |
-
* @param null|callable $pBeforeExecutionFunction
|
292 |
-
*
|
293 |
-
* @return object[]|object|null
|
294 |
-
*
|
295 |
-
* @throws \Freemius_Exception
|
296 |
-
*/
|
297 |
-
private static function MakeStaticRequest(
|
298 |
-
$pCanonizedPath,
|
299 |
-
$pMethod = 'GET',
|
300 |
-
$pParams = array(),
|
301 |
-
$pCurlHandler = null,
|
302 |
-
$pIsSandbox = false,
|
303 |
-
$pBeforeExecutionFunction = null
|
304 |
-
) {
|
305 |
-
if ( ! FS_SDK__HAS_CURL ) {
|
306 |
-
self::ThrowNoCurlException();
|
307 |
-
}
|
308 |
-
|
309 |
-
// Connectivity errors simulation.
|
310 |
-
if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
|
311 |
-
self::ThrowCloudFlareDDoSException();
|
312 |
-
} else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
|
313 |
-
self::ThrowSquidAclException();
|
314 |
-
}
|
315 |
-
|
316 |
-
if ( ! $pCurlHandler ) {
|
317 |
-
$pCurlHandler = curl_init();
|
318 |
-
}
|
319 |
-
|
320 |
-
$opts = array(
|
321 |
-
CURLOPT_CONNECTTIMEOUT => 10,
|
322 |
-
CURLOPT_RETURNTRANSFER => true,
|
323 |
-
CURLOPT_TIMEOUT => 60,
|
324 |
-
CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
|
325 |
-
CURLOPT_HTTPHEADER => array(),
|
326 |
-
);
|
327 |
-
|
328 |
-
if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
|
329 |
-
if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
|
330 |
-
$opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
|
331 |
-
$opts[ CURLOPT_POST ] = count( $pParams );
|
332 |
-
$opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
|
333 |
-
}
|
334 |
-
|
335 |
-
$opts[ CURLOPT_RETURNTRANSFER ] = true;
|
336 |
-
}
|
337 |
-
|
338 |
-
$request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
|
339 |
-
|
340 |
-
$opts[ CURLOPT_URL ] = $request_url;
|
341 |
-
$opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
|
342 |
-
|
343 |
-
$resource = explode( '?', $pCanonizedPath );
|
344 |
-
|
345 |
-
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
346 |
-
// for 2 seconds if the server does not support this header.
|
347 |
-
$opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
|
348 |
-
|
349 |
-
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
350 |
-
$opts[ CURLOPT_SSL_VERIFYHOST ] = false;
|
351 |
-
$opts[ CURLOPT_SSL_VERIFYPEER ] = false;
|
352 |
-
}
|
353 |
-
|
354 |
-
if ( false !== $pBeforeExecutionFunction &&
|
355 |
-
is_callable( $pBeforeExecutionFunction )
|
356 |
-
) {
|
357 |
-
$opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
|
358 |
-
}
|
359 |
-
|
360 |
-
curl_setopt_array( $pCurlHandler, $opts );
|
361 |
-
$result = self::ExecuteRequest( $pCurlHandler, $opts );
|
362 |
-
|
363 |
-
/*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
|
364 |
-
{
|
365 |
-
self::errorLog('Invalid or no certificate authority found, using bundled information');
|
366 |
-
curl_setopt($ch, CURLOPT_CAINFO,
|
367 |
-
dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
|
368 |
-
$result = curl_exec($ch);
|
369 |
-
}*/
|
370 |
-
|
371 |
-
// With dual stacked DNS responses, it's possible for a server to
|
372 |
-
// have IPv6 enabled but not have IPv6 connectivity. If this is
|
373 |
-
// the case, curl will try IPv4 first and if that fails, then it will
|
374 |
-
// fall back to IPv6 and the error EHOSTUNREACH is returned by the
|
375 |
-
// operating system.
|
376 |
-
if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
|
377 |
-
$matches = array();
|
378 |
-
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
|
379 |
-
if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
|
380 |
-
if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
|
381 |
-
// self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
|
382 |
-
$opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
|
383 |
-
curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
|
384 |
-
$result = self::ExecuteRequest( $pCurlHandler, $opts );
|
385 |
-
}
|
386 |
-
}
|
387 |
-
}
|
388 |
-
|
389 |
-
if ( $result === false ) {
|
390 |
-
self::ThrowCurlException( $pCurlHandler );
|
391 |
-
}
|
392 |
-
|
393 |
-
curl_close( $pCurlHandler );
|
394 |
-
|
395 |
-
if ( empty( $result ) ) {
|
396 |
-
return null;
|
397 |
-
}
|
398 |
-
|
399 |
-
$decoded = json_decode( $result );
|
400 |
-
|
401 |
-
if ( is_null( $decoded ) ) {
|
402 |
-
if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
|
403 |
-
preg_match( '/text\/javascript/', $result )
|
404 |
-
) {
|
405 |
-
self::ThrowCloudFlareDDoSException( $result );
|
406 |
-
} else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
|
407 |
-
preg_match( '/squid/', $result )
|
408 |
-
) {
|
409 |
-
self::ThrowSquidAclException( $result );
|
410 |
-
} else {
|
411 |
-
$decoded = (object) array(
|
412 |
-
'error' => (object) array(
|
413 |
-
'type' => 'Unknown',
|
414 |
-
'message' => $result,
|
415 |
-
'code' => 'unknown',
|
416 |
-
'http' => 402
|
417 |
-
)
|
418 |
-
);
|
419 |
-
}
|
420 |
-
}
|
421 |
-
|
422 |
-
return $decoded;
|
423 |
-
}
|
424 |
-
|
425 |
-
|
426 |
-
/**
|
427 |
-
* Makes an HTTP request. This method can be overridden by subclasses if
|
428 |
-
* developers want to do fancier things or use something other than curl to
|
429 |
-
* make the request.
|
430 |
-
*
|
431 |
-
* @param string $pCanonizedPath The URL to make the request to
|
432 |
-
* @param string $pMethod HTTP method
|
433 |
-
* @param array $pParams The parameters to use for the POST body
|
434 |
-
* @param null|resource $pCurlHandler Initialized curl handle
|
435 |
-
*
|
436 |
-
* @return object[]|object|null
|
437 |
-
*
|
438 |
-
* @throws Freemius_Exception
|
439 |
-
*/
|
440 |
-
public function MakeRequest(
|
441 |
-
$pCanonizedPath,
|
442 |
-
$pMethod = 'GET',
|
443 |
-
$pParams = array(),
|
444 |
-
$pCurlHandler = null
|
445 |
-
) {
|
446 |
-
$resource = explode( '?', $pCanonizedPath );
|
447 |
-
|
448 |
-
// Only sign request if not ping.json connectivity test.
|
449 |
-
$sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
|
450 |
-
|
451 |
-
return self::MakeStaticRequest(
|
452 |
-
$pCanonizedPath,
|
453 |
-
$pMethod,
|
454 |
-
$pParams,
|
455 |
-
$pCurlHandler,
|
456 |
-
$this->_isSandbox,
|
457 |
-
$sign_request ? array( &$this, 'SignRequest' ) : null
|
458 |
-
);
|
459 |
-
}
|
460 |
-
|
461 |
-
#region Connectivity Test ------------------------------------------------------
|
462 |
-
|
463 |
-
/**
|
464 |
-
* If successful connectivity to the API endpoint using ping.json endpoint.
|
465 |
-
*
|
466 |
-
* - OR -
|
467 |
-
*
|
468 |
-
* Validate if ping result object is valid.
|
469 |
-
*
|
470 |
-
* @param mixed $pPong
|
471 |
-
*
|
472 |
-
* @return bool
|
473 |
-
*/
|
474 |
-
public static function Test( $pPong = null ) {
|
475 |
-
$pong = is_null( $pPong ) ?
|
476 |
-
self::Ping() :
|
477 |
-
$pPong;
|
478 |
-
|
479 |
-
return (
|
480 |
-
is_object( $pong ) &&
|
481 |
-
isset( $pong->api ) &&
|
482 |
-
'pong' === $pong->api
|
483 |
-
);
|
484 |
-
}
|
485 |
-
|
486 |
-
/**
|
487 |
-
* Ping API to test connectivity.
|
488 |
-
*
|
489 |
-
* @return object
|
490 |
-
*/
|
491 |
-
public static function Ping() {
|
492 |
-
try {
|
493 |
-
$result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
|
494 |
-
} catch ( Freemius_Exception $e ) {
|
495 |
-
// Map to error object.
|
496 |
-
$result = (object) $e->getResult();
|
497 |
-
} catch ( Exception $e ) {
|
498 |
-
// Map to error object.
|
499 |
-
$result = (object) array(
|
500 |
-
'error' => array(
|
501 |
-
'type' => 'Unknown',
|
502 |
-
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
503 |
-
'code' => 'unknown',
|
504 |
-
'http' => 402
|
505 |
-
)
|
506 |
-
);
|
507 |
-
}
|
508 |
-
|
509 |
-
return $result;
|
510 |
-
}
|
511 |
-
|
512 |
-
#endregion Connectivity Test ------------------------------------------------------
|
513 |
-
|
514 |
-
#region Connectivity Exceptions ------------------------------------------------------
|
515 |
-
|
516 |
-
/**
|
517 |
-
* @param resource $pCurlHandler
|
518 |
-
*
|
519 |
-
* @throws Freemius_Exception
|
520 |
-
*/
|
521 |
-
private static function ThrowCurlException( $pCurlHandler ) {
|
522 |
-
$e = new Freemius_Exception( array(
|
523 |
-
'error' => array(
|
524 |
-
'code' => curl_errno( $pCurlHandler ),
|
525 |
-
'message' => curl_error( $pCurlHandler ),
|
526 |
-
'type' => 'CurlException',
|
527 |
-
),
|
528 |
-
) );
|
529 |
-
|
530 |
-
curl_close( $pCurlHandler );
|
531 |
-
throw $e;
|
532 |
-
}
|
533 |
-
|
534 |
-
/**
|
535 |
-
* @param string $pResult
|
536 |
-
*
|
537 |
-
* @throws Freemius_Exception
|
538 |
-
*/
|
539 |
-
private static function ThrowNoCurlException( $pResult = '' ) {
|
540 |
-
throw new Freemius_Exception( array(
|
541 |
-
'error' => (object) array(
|
542 |
-
'type' => 'cUrlMissing',
|
543 |
-
'message' => $pResult,
|
544 |
-
'code' => 'curl_missing',
|
545 |
-
'http' => 402
|
546 |
-
)
|
547 |
-
) );
|
548 |
-
}
|
549 |
-
|
550 |
-
/**
|
551 |
-
* @param string $pResult
|
552 |
-
*
|
553 |
-
* @throws Freemius_Exception
|
554 |
-
*/
|
555 |
-
private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
|
556 |
-
throw new Freemius_Exception( array(
|
557 |
-
'error' => (object) array(
|
558 |
-
'type' => 'CloudFlareDDoSProtection',
|
559 |
-
'message' => $pResult,
|
560 |
-
'code' => 'cloudflare_ddos_protection',
|
561 |
-
'http' => 402
|
562 |
-
)
|
563 |
-
) );
|
564 |
-
}
|
565 |
-
|
566 |
-
/**
|
567 |
-
* @param string $pResult
|
568 |
-
*
|
569 |
-
* @throws Freemius_Exception
|
570 |
-
*/
|
571 |
-
private static function ThrowSquidAclException( $pResult = '' ) {
|
572 |
-
throw new Freemius_Exception( array(
|
573 |
-
'error' => (object) array(
|
574 |
-
'type' => 'SquidCacheBlock',
|
575 |
-
'message' => $pResult,
|
576 |
-
'code' => 'squid_cache_block',
|
577 |
-
'http' => 402
|
578 |
-
)
|
579 |
-
) );
|
580 |
-
}
|
581 |
-
|
582 |
-
#endregion Connectivity Exceptions ------------------------------------------------------
|
583 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2014 Freemius, Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the GPL v2 (the "License"); you may
|
6 |
+
* not use this file except in compliance with the License. You may obtain
|
7 |
+
* a copy of the License at
|
8 |
+
*
|
9 |
+
* http://choosealicense.com/licenses/gpl-v2/
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations
|
15 |
+
* under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once dirname( __FILE__ ) . '/FreemiusBase.php';
|
19 |
+
|
20 |
+
if ( ! defined( 'FS_SDK__USER_AGENT' ) ) {
|
21 |
+
define( 'FS_SDK__USER_AGENT', 'fs-php-' . Freemius_Api_Base::VERSION );
|
22 |
+
}
|
23 |
+
|
24 |
+
if ( ! defined( 'FS_SDK__SIMULATE_NO_CURL' ) ) {
|
25 |
+
define( 'FS_SDK__SIMULATE_NO_CURL', false );
|
26 |
+
}
|
27 |
+
|
28 |
+
if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE' ) ) {
|
29 |
+
define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE', false );
|
30 |
+
}
|
31 |
+
|
32 |
+
if ( ! defined( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL' ) ) {
|
33 |
+
define( 'FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL', false );
|
34 |
+
}
|
35 |
+
|
36 |
+
if ( ! defined( 'FS_SDK__HAS_CURL' ) ) {
|
37 |
+
define( 'FS_SDK__HAS_CURL', ! FS_SDK__SIMULATE_NO_CURL && function_exists( 'curl_version' ) );
|
38 |
+
}
|
39 |
+
|
40 |
+
if ( ! FS_SDK__HAS_CURL ) {
|
41 |
+
$curl_version = array( 'version' => '7.0.0' );
|
42 |
+
} else {
|
43 |
+
$curl_version = curl_version();
|
44 |
+
}
|
45 |
+
|
46 |
+
if ( ! defined( 'FS_API__PROTOCOL' ) ) {
|
47 |
+
define( 'FS_API__PROTOCOL', version_compare( $curl_version['version'], '7.37', '>=' ) ? 'https' : 'http' );
|
48 |
+
}
|
49 |
+
|
50 |
+
if ( ! defined( 'FS_API__LOGGER_ON' ) ) {
|
51 |
+
define( 'FS_API__LOGGER_ON', false );
|
52 |
+
}
|
53 |
+
|
54 |
+
if ( ! defined( 'FS_API__ADDRESS' ) ) {
|
55 |
+
define( 'FS_API__ADDRESS', '://api.freemius.com' );
|
56 |
+
}
|
57 |
+
if ( ! defined( 'FS_API__SANDBOX_ADDRESS' ) ) {
|
58 |
+
define( 'FS_API__SANDBOX_ADDRESS', '://sandbox-api.freemius.com' );
|
59 |
+
}
|
60 |
+
|
61 |
+
if ( class_exists( 'Freemius_Api' ) ) {
|
62 |
+
return;
|
63 |
+
}
|
64 |
+
|
65 |
+
class Freemius_Api extends Freemius_Api_Base {
|
66 |
+
private static $_logger = array();
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @param string $pScope 'app', 'developer', 'user' or 'install'.
|
70 |
+
* @param number $pID Element's id.
|
71 |
+
* @param string $pPublic Public key.
|
72 |
+
* @param string|bool $pSecret Element's secret key.
|
73 |
+
* @param bool $pSandbox Whether or not to run API in sandbox mode.
|
74 |
+
*/
|
75 |
+
public function __construct( $pScope, $pID, $pPublic, $pSecret = false, $pSandbox = false ) {
|
76 |
+
// If secret key not provided, use public key encryption.
|
77 |
+
if ( is_bool( $pSecret ) ) {
|
78 |
+
$pSecret = $pPublic;
|
79 |
+
}
|
80 |
+
|
81 |
+
parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
|
82 |
+
}
|
83 |
+
|
84 |
+
public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
|
85 |
+
$address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
|
86 |
+
|
87 |
+
if ( ':' === $address[0] ) {
|
88 |
+
$address = self::$_protocol . $address;
|
89 |
+
}
|
90 |
+
|
91 |
+
return $address . $pCanonizedPath;
|
92 |
+
}
|
93 |
+
|
94 |
+
#region Servers Clock Diff ------------------------------------------------------
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @var int Clock diff in seconds between current server to API server.
|
98 |
+
*/
|
99 |
+
private static $_clock_diff = 0;
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Set clock diff for all API calls.
|
103 |
+
*
|
104 |
+
* @since 1.0.3
|
105 |
+
*
|
106 |
+
* @param $pSeconds
|
107 |
+
*/
|
108 |
+
public static function SetClockDiff( $pSeconds ) {
|
109 |
+
self::$_clock_diff = $pSeconds;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Find clock diff between current server to API server.
|
114 |
+
*
|
115 |
+
* @since 1.0.2
|
116 |
+
* @return int Clock diff in seconds.
|
117 |
+
*/
|
118 |
+
public static function FindClockDiff() {
|
119 |
+
$time = time();
|
120 |
+
$pong = self::Ping();
|
121 |
+
|
122 |
+
return ( $time - strtotime( $pong->timestamp ) );
|
123 |
+
}
|
124 |
+
|
125 |
+
#endregion Servers Clock Diff ------------------------------------------------------
|
126 |
+
|
127 |
+
/**
|
128 |
+
* @var string http or https
|
129 |
+
*/
|
130 |
+
private static $_protocol = FS_API__PROTOCOL;
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Set API connection protocol.
|
134 |
+
*
|
135 |
+
* @since 1.0.4
|
136 |
+
*/
|
137 |
+
public static function SetHttp() {
|
138 |
+
self::$_protocol = 'http';
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @since 1.0.4
|
143 |
+
*
|
144 |
+
* @return bool
|
145 |
+
*/
|
146 |
+
public static function IsHttps() {
|
147 |
+
return ( 'https' === self::$_protocol );
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Sign request with the following HTTP headers:
|
152 |
+
* Content-MD5: MD5(HTTP Request body)
|
153 |
+
* Date: Current date (i.e Sat, 14 Feb 2015 20:24:46 +0000)
|
154 |
+
* Authorization: FS {scope_entity_id}:{scope_entity_public_key}:base64encode(sha256(string_to_sign,
|
155 |
+
* {scope_entity_secret_key}))
|
156 |
+
*
|
157 |
+
* @param string $pResourceUrl
|
158 |
+
* @param array $pCurlOptions
|
159 |
+
*
|
160 |
+
* @return array
|
161 |
+
*/
|
162 |
+
function SignRequest( $pResourceUrl, $pCurlOptions ) {
|
163 |
+
$eol = "\n";
|
164 |
+
$content_md5 = '';
|
165 |
+
$now = ( time() - self::$_clock_diff );
|
166 |
+
$date = date( 'r', $now );
|
167 |
+
$content_type = '';
|
168 |
+
|
169 |
+
if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
|
170 |
+
$content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
|
171 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
|
172 |
+
$content_type = 'application/json';
|
173 |
+
}
|
174 |
+
|
175 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
|
176 |
+
|
177 |
+
$string_to_sign = implode( $eol, array(
|
178 |
+
$pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
|
179 |
+
$content_md5,
|
180 |
+
$content_type,
|
181 |
+
$date,
|
182 |
+
$pResourceUrl
|
183 |
+
) );
|
184 |
+
|
185 |
+
// If secret and public keys are identical, it means that
|
186 |
+
// the signature uses public key hash encoding.
|
187 |
+
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
188 |
+
|
189 |
+
// Add authorization header.
|
190 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
|
191 |
+
$auth_type . ' ' .
|
192 |
+
$this->_id . ':' .
|
193 |
+
$this->_public . ':' .
|
194 |
+
self::Base64UrlEncode(
|
195 |
+
hash_hmac( 'sha256', $string_to_sign, $this->_secret )
|
196 |
+
);
|
197 |
+
|
198 |
+
return $pCurlOptions;
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Get API request URL signed via query string.
|
203 |
+
*
|
204 |
+
* @param string $pPath
|
205 |
+
*
|
206 |
+
* @throws Freemius_Exception
|
207 |
+
*
|
208 |
+
* @return string
|
209 |
+
*/
|
210 |
+
function GetSignedUrl( $pPath ) {
|
211 |
+
$resource = explode( '?', $this->CanonizePath( $pPath ) );
|
212 |
+
$pResourceUrl = $resource[0];
|
213 |
+
|
214 |
+
$eol = "\n";
|
215 |
+
$content_md5 = '';
|
216 |
+
$content_type = '';
|
217 |
+
$now = ( time() - self::$_clock_diff );
|
218 |
+
$date = date( 'r', $now );
|
219 |
+
|
220 |
+
$string_to_sign = implode( $eol, array(
|
221 |
+
'GET',
|
222 |
+
$content_md5,
|
223 |
+
$content_type,
|
224 |
+
$date,
|
225 |
+
$pResourceUrl
|
226 |
+
) );
|
227 |
+
|
228 |
+
// If secret and public keys are identical, it means that
|
229 |
+
// the signature uses public key hash encoding.
|
230 |
+
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
231 |
+
|
232 |
+
return Freemius_Api::GetUrl(
|
233 |
+
$pResourceUrl . '?' .
|
234 |
+
( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
|
235 |
+
http_build_query( array(
|
236 |
+
'auth_date' => $date,
|
237 |
+
'authorization' => $auth_type . ' ' . $this->_id . ':' .
|
238 |
+
$this->_public . ':' .
|
239 |
+
self::Base64UrlEncode( hash_hmac(
|
240 |
+
'sha256', $string_to_sign, $this->_secret
|
241 |
+
) )
|
242 |
+
) ), $this->_isSandbox );
|
243 |
+
}
|
244 |
+
|
245 |
+
/**
|
246 |
+
* @param resource $pCurlHandler
|
247 |
+
* @param array $pCurlOptions
|
248 |
+
*
|
249 |
+
* @return mixed
|
250 |
+
*/
|
251 |
+
private static function ExecuteRequest( &$pCurlHandler, &$pCurlOptions ) {
|
252 |
+
$start = microtime( true );
|
253 |
+
|
254 |
+
$result = curl_exec( $pCurlHandler );
|
255 |
+
|
256 |
+
if ( FS_API__LOGGER_ON ) {
|
257 |
+
$end = microtime( true );
|
258 |
+
|
259 |
+
$has_body = ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] );
|
260 |
+
|
261 |
+
self::$_logger[] = array(
|
262 |
+
'id' => count( self::$_logger ),
|
263 |
+
'start' => $start,
|
264 |
+
'end' => $end,
|
265 |
+
'total' => ( $end - $start ),
|
266 |
+
'method' => $pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
|
267 |
+
'path' => $pCurlOptions[ CURLOPT_URL ],
|
268 |
+
'body' => $has_body ? $pCurlOptions[ CURLOPT_POSTFIELDS ] : null,
|
269 |
+
'result' => $result,
|
270 |
+
'code' => curl_getinfo( $pCurlHandler, CURLINFO_HTTP_CODE ),
|
271 |
+
'backtrace' => debug_backtrace(),
|
272 |
+
);
|
273 |
+
}
|
274 |
+
|
275 |
+
return $result;
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* @return array
|
280 |
+
*/
|
281 |
+
static function GetLogger() {
|
282 |
+
return self::$_logger;
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* @param string $pCanonizedPath
|
287 |
+
* @param string $pMethod
|
288 |
+
* @param array $pParams
|
289 |
+
* @param null|resource $pCurlHandler
|
290 |
+
* @param bool $pIsSandbox
|
291 |
+
* @param null|callable $pBeforeExecutionFunction
|
292 |
+
*
|
293 |
+
* @return object[]|object|null
|
294 |
+
*
|
295 |
+
* @throws \Freemius_Exception
|
296 |
+
*/
|
297 |
+
private static function MakeStaticRequest(
|
298 |
+
$pCanonizedPath,
|
299 |
+
$pMethod = 'GET',
|
300 |
+
$pParams = array(),
|
301 |
+
$pCurlHandler = null,
|
302 |
+
$pIsSandbox = false,
|
303 |
+
$pBeforeExecutionFunction = null
|
304 |
+
) {
|
305 |
+
if ( ! FS_SDK__HAS_CURL ) {
|
306 |
+
self::ThrowNoCurlException();
|
307 |
+
}
|
308 |
+
|
309 |
+
// Connectivity errors simulation.
|
310 |
+
if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
|
311 |
+
self::ThrowCloudFlareDDoSException();
|
312 |
+
} else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
|
313 |
+
self::ThrowSquidAclException();
|
314 |
+
}
|
315 |
+
|
316 |
+
if ( ! $pCurlHandler ) {
|
317 |
+
$pCurlHandler = curl_init();
|
318 |
+
}
|
319 |
+
|
320 |
+
$opts = array(
|
321 |
+
CURLOPT_CONNECTTIMEOUT => 10,
|
322 |
+
CURLOPT_RETURNTRANSFER => true,
|
323 |
+
CURLOPT_TIMEOUT => 60,
|
324 |
+
CURLOPT_USERAGENT => FS_SDK__USER_AGENT,
|
325 |
+
CURLOPT_HTTPHEADER => array(),
|
326 |
+
);
|
327 |
+
|
328 |
+
if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
|
329 |
+
if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
|
330 |
+
$opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
|
331 |
+
$opts[ CURLOPT_POST ] = count( $pParams );
|
332 |
+
$opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
|
333 |
+
}
|
334 |
+
|
335 |
+
$opts[ CURLOPT_RETURNTRANSFER ] = true;
|
336 |
+
}
|
337 |
+
|
338 |
+
$request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
|
339 |
+
|
340 |
+
$opts[ CURLOPT_URL ] = $request_url;
|
341 |
+
$opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
|
342 |
+
|
343 |
+
$resource = explode( '?', $pCanonizedPath );
|
344 |
+
|
345 |
+
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
346 |
+
// for 2 seconds if the server does not support this header.
|
347 |
+
$opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
|
348 |
+
|
349 |
+
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
350 |
+
$opts[ CURLOPT_SSL_VERIFYHOST ] = false;
|
351 |
+
$opts[ CURLOPT_SSL_VERIFYPEER ] = false;
|
352 |
+
}
|
353 |
+
|
354 |
+
if ( false !== $pBeforeExecutionFunction &&
|
355 |
+
is_callable( $pBeforeExecutionFunction )
|
356 |
+
) {
|
357 |
+
$opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
|
358 |
+
}
|
359 |
+
|
360 |
+
curl_setopt_array( $pCurlHandler, $opts );
|
361 |
+
$result = self::ExecuteRequest( $pCurlHandler, $opts );
|
362 |
+
|
363 |
+
/*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
|
364 |
+
{
|
365 |
+
self::errorLog('Invalid or no certificate authority found, using bundled information');
|
366 |
+
curl_setopt($ch, CURLOPT_CAINFO,
|
367 |
+
dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
|
368 |
+
$result = curl_exec($ch);
|
369 |
+
}*/
|
370 |
+
|
371 |
+
// With dual stacked DNS responses, it's possible for a server to
|
372 |
+
// have IPv6 enabled but not have IPv6 connectivity. If this is
|
373 |
+
// the case, curl will try IPv4 first and if that fails, then it will
|
374 |
+
// fall back to IPv6 and the error EHOSTUNREACH is returned by the
|
375 |
+
// operating system.
|
376 |
+
if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
|
377 |
+
$matches = array();
|
378 |
+
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
|
379 |
+
if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
|
380 |
+
if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
|
381 |
+
// self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
|
382 |
+
$opts[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
|
383 |
+
curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
|
384 |
+
$result = self::ExecuteRequest( $pCurlHandler, $opts );
|
385 |
+
}
|
386 |
+
}
|
387 |
+
}
|
388 |
+
|
389 |
+
if ( $result === false ) {
|
390 |
+
self::ThrowCurlException( $pCurlHandler );
|
391 |
+
}
|
392 |
+
|
393 |
+
curl_close( $pCurlHandler );
|
394 |
+
|
395 |
+
if ( empty( $result ) ) {
|
396 |
+
return null;
|
397 |
+
}
|
398 |
+
|
399 |
+
$decoded = json_decode( $result );
|
400 |
+
|
401 |
+
if ( is_null( $decoded ) ) {
|
402 |
+
if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
|
403 |
+
preg_match( '/text\/javascript/', $result )
|
404 |
+
) {
|
405 |
+
self::ThrowCloudFlareDDoSException( $result );
|
406 |
+
} else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
|
407 |
+
preg_match( '/squid/', $result )
|
408 |
+
) {
|
409 |
+
self::ThrowSquidAclException( $result );
|
410 |
+
} else {
|
411 |
+
$decoded = (object) array(
|
412 |
+
'error' => (object) array(
|
413 |
+
'type' => 'Unknown',
|
414 |
+
'message' => $result,
|
415 |
+
'code' => 'unknown',
|
416 |
+
'http' => 402
|
417 |
+
)
|
418 |
+
);
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
return $decoded;
|
423 |
+
}
|
424 |
+
|
425 |
+
|
426 |
+
/**
|
427 |
+
* Makes an HTTP request. This method can be overridden by subclasses if
|
428 |
+
* developers want to do fancier things or use something other than curl to
|
429 |
+
* make the request.
|
430 |
+
*
|
431 |
+
* @param string $pCanonizedPath The URL to make the request to
|
432 |
+
* @param string $pMethod HTTP method
|
433 |
+
* @param array $pParams The parameters to use for the POST body
|
434 |
+
* @param null|resource $pCurlHandler Initialized curl handle
|
435 |
+
*
|
436 |
+
* @return object[]|object|null
|
437 |
+
*
|
438 |
+
* @throws Freemius_Exception
|
439 |
+
*/
|
440 |
+
public function MakeRequest(
|
441 |
+
$pCanonizedPath,
|
442 |
+
$pMethod = 'GET',
|
443 |
+
$pParams = array(),
|
444 |
+
$pCurlHandler = null
|
445 |
+
) {
|
446 |
+
$resource = explode( '?', $pCanonizedPath );
|
447 |
+
|
448 |
+
// Only sign request if not ping.json connectivity test.
|
449 |
+
$sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
|
450 |
+
|
451 |
+
return self::MakeStaticRequest(
|
452 |
+
$pCanonizedPath,
|
453 |
+
$pMethod,
|
454 |
+
$pParams,
|
455 |
+
$pCurlHandler,
|
456 |
+
$this->_isSandbox,
|
457 |
+
$sign_request ? array( &$this, 'SignRequest' ) : null
|
458 |
+
);
|
459 |
+
}
|
460 |
+
|
461 |
+
#region Connectivity Test ------------------------------------------------------
|
462 |
+
|
463 |
+
/**
|
464 |
+
* If successful connectivity to the API endpoint using ping.json endpoint.
|
465 |
+
*
|
466 |
+
* - OR -
|
467 |
+
*
|
468 |
+
* Validate if ping result object is valid.
|
469 |
+
*
|
470 |
+
* @param mixed $pPong
|
471 |
+
*
|
472 |
+
* @return bool
|
473 |
+
*/
|
474 |
+
public static function Test( $pPong = null ) {
|
475 |
+
$pong = is_null( $pPong ) ?
|
476 |
+
self::Ping() :
|
477 |
+
$pPong;
|
478 |
+
|
479 |
+
return (
|
480 |
+
is_object( $pong ) &&
|
481 |
+
isset( $pong->api ) &&
|
482 |
+
'pong' === $pong->api
|
483 |
+
);
|
484 |
+
}
|
485 |
+
|
486 |
+
/**
|
487 |
+
* Ping API to test connectivity.
|
488 |
+
*
|
489 |
+
* @return object
|
490 |
+
*/
|
491 |
+
public static function Ping() {
|
492 |
+
try {
|
493 |
+
$result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
|
494 |
+
} catch ( Freemius_Exception $e ) {
|
495 |
+
// Map to error object.
|
496 |
+
$result = (object) $e->getResult();
|
497 |
+
} catch ( Exception $e ) {
|
498 |
+
// Map to error object.
|
499 |
+
$result = (object) array(
|
500 |
+
'error' => array(
|
501 |
+
'type' => 'Unknown',
|
502 |
+
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
503 |
+
'code' => 'unknown',
|
504 |
+
'http' => 402
|
505 |
+
)
|
506 |
+
);
|
507 |
+
}
|
508 |
+
|
509 |
+
return $result;
|
510 |
+
}
|
511 |
+
|
512 |
+
#endregion Connectivity Test ------------------------------------------------------
|
513 |
+
|
514 |
+
#region Connectivity Exceptions ------------------------------------------------------
|
515 |
+
|
516 |
+
/**
|
517 |
+
* @param resource $pCurlHandler
|
518 |
+
*
|
519 |
+
* @throws Freemius_Exception
|
520 |
+
*/
|
521 |
+
private static function ThrowCurlException( $pCurlHandler ) {
|
522 |
+
$e = new Freemius_Exception( array(
|
523 |
+
'error' => array(
|
524 |
+
'code' => curl_errno( $pCurlHandler ),
|
525 |
+
'message' => curl_error( $pCurlHandler ),
|
526 |
+
'type' => 'CurlException',
|
527 |
+
),
|
528 |
+
) );
|
529 |
+
|
530 |
+
curl_close( $pCurlHandler );
|
531 |
+
throw $e;
|
532 |
+
}
|
533 |
+
|
534 |
+
/**
|
535 |
+
* @param string $pResult
|
536 |
+
*
|
537 |
+
* @throws Freemius_Exception
|
538 |
+
*/
|
539 |
+
private static function ThrowNoCurlException( $pResult = '' ) {
|
540 |
+
throw new Freemius_Exception( array(
|
541 |
+
'error' => (object) array(
|
542 |
+
'type' => 'cUrlMissing',
|
543 |
+
'message' => $pResult,
|
544 |
+
'code' => 'curl_missing',
|
545 |
+
'http' => 402
|
546 |
+
)
|
547 |
+
) );
|
548 |
+
}
|
549 |
+
|
550 |
+
/**
|
551 |
+
* @param string $pResult
|
552 |
+
*
|
553 |
+
* @throws Freemius_Exception
|
554 |
+
*/
|
555 |
+
private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
|
556 |
+
throw new Freemius_Exception( array(
|
557 |
+
'error' => (object) array(
|
558 |
+
'type' => 'CloudFlareDDoSProtection',
|
559 |
+
'message' => $pResult,
|
560 |
+
'code' => 'cloudflare_ddos_protection',
|
561 |
+
'http' => 402
|
562 |
+
)
|
563 |
+
) );
|
564 |
+
}
|
565 |
+
|
566 |
+
/**
|
567 |
+
* @param string $pResult
|
568 |
+
*
|
569 |
+
* @throws Freemius_Exception
|
570 |
+
*/
|
571 |
+
private static function ThrowSquidAclException( $pResult = '' ) {
|
572 |
+
throw new Freemius_Exception( array(
|
573 |
+
'error' => (object) array(
|
574 |
+
'type' => 'SquidCacheBlock',
|
575 |
+
'message' => $pResult,
|
576 |
+
'code' => 'squid_cache_block',
|
577 |
+
'http' => 402
|
578 |
+
)
|
579 |
+
) );
|
580 |
+
}
|
581 |
+
|
582 |
+
#endregion Connectivity Exceptions ------------------------------------------------------
|
583 |
}
|
includes/pum-sdk/freemius/includes/sdk/FreemiusBase.php
CHANGED
@@ -1,188 +1,188 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Copyright 2014 Freemius, Inc.
|
4 |
-
*
|
5 |
-
* Licensed under the GPL v2 (the "License"); you may
|
6 |
-
* not use this file except in compliance with the License. You may obtain
|
7 |
-
* a copy of the License at
|
8 |
-
*
|
9 |
-
* http://choosealicense.com/licenses/gpl-v2/
|
10 |
-
*
|
11 |
-
* Unless required by applicable law or agreed to in writing, software
|
12 |
-
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
-
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
-
* License for the specific language governing permissions and limitations
|
15 |
-
* under the License.
|
16 |
-
*/
|
17 |
-
|
18 |
-
if ( ! defined( 'FS_API__VERSION' ) ) {
|
19 |
-
define( 'FS_API__VERSION', '1' );
|
20 |
-
}
|
21 |
-
if ( ! defined( 'FS_SDK__PATH' ) ) {
|
22 |
-
define( 'FS_SDK__PATH', dirname( __FILE__ ) );
|
23 |
-
}
|
24 |
-
if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
|
25 |
-
define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
|
26 |
-
}
|
27 |
-
|
28 |
-
if ( ! function_exists( 'json_decode' ) ) {
|
29 |
-
throw new Exception( 'Freemius needs the JSON PHP extension.' );
|
30 |
-
}
|
31 |
-
|
32 |
-
// Include all exception files.
|
33 |
-
$exceptions = array(
|
34 |
-
'Exception',
|
35 |
-
'InvalidArgumentException',
|
36 |
-
'ArgumentNotExistException',
|
37 |
-
'EmptyArgumentException',
|
38 |
-
'OAuthException'
|
39 |
-
);
|
40 |
-
|
41 |
-
foreach ( $exceptions as $e ) {
|
42 |
-
require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
|
43 |
-
}
|
44 |
-
|
45 |
-
if ( class_exists( 'Freemius_Api_Base' ) ) {
|
46 |
-
return;
|
47 |
-
}
|
48 |
-
|
49 |
-
abstract class Freemius_Api_Base {
|
50 |
-
const VERSION = '1.0.4';
|
51 |
-
const FORMAT = 'json';
|
52 |
-
|
53 |
-
protected $_id;
|
54 |
-
protected $_public;
|
55 |
-
protected $_secret;
|
56 |
-
protected $_scope;
|
57 |
-
protected $_isSandbox;
|
58 |
-
|
59 |
-
/**
|
60 |
-
* @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
|
61 |
-
* @param number $pID Element's id.
|
62 |
-
* @param string $pPublic Public key.
|
63 |
-
* @param string $pSecret Element's secret key.
|
64 |
-
* @param bool $pIsSandbox Whether or not to run API in sandbox mode.
|
65 |
-
*/
|
66 |
-
public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
|
67 |
-
$this->_id = $pID;
|
68 |
-
$this->_public = $pPublic;
|
69 |
-
$this->_secret = $pSecret;
|
70 |
-
$this->_scope = $pScope;
|
71 |
-
$this->_isSandbox = $pIsSandbox;
|
72 |
-
}
|
73 |
-
|
74 |
-
public function IsSandbox() {
|
75 |
-
return $this->_isSandbox;
|
76 |
-
}
|
77 |
-
|
78 |
-
function CanonizePath( $pPath ) {
|
79 |
-
$pPath = trim( $pPath, '/' );
|
80 |
-
$query_pos = strpos( $pPath, '?' );
|
81 |
-
$query = '';
|
82 |
-
|
83 |
-
if ( false !== $query_pos ) {
|
84 |
-
$query = substr( $pPath, $query_pos );
|
85 |
-
$pPath = substr( $pPath, 0, $query_pos );
|
86 |
-
}
|
87 |
-
|
88 |
-
// Trim '.json' suffix.
|
89 |
-
$format_length = strlen( '.' . self::FORMAT );
|
90 |
-
$start = $format_length * ( - 1 ); //negative
|
91 |
-
if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
|
92 |
-
$pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
|
93 |
-
}
|
94 |
-
|
95 |
-
switch ( $this->_scope ) {
|
96 |
-
case 'app':
|
97 |
-
$base = '/apps/' . $this->_id;
|
98 |
-
break;
|
99 |
-
case 'developer':
|
100 |
-
$base = '/developers/' . $this->_id;
|
101 |
-
break;
|
102 |
-
case 'user':
|
103 |
-
$base = '/users/' . $this->_id;
|
104 |
-
break;
|
105 |
-
case 'plugin':
|
106 |
-
$base = '/plugins/' . $this->_id;
|
107 |
-
break;
|
108 |
-
case 'install':
|
109 |
-
$base = '/installs/' . $this->_id;
|
110 |
-
break;
|
111 |
-
default:
|
112 |
-
throw new Freemius_Exception( 'Scope not implemented.' );
|
113 |
-
}
|
114 |
-
|
115 |
-
return '/v' . FS_API__VERSION . $base .
|
116 |
-
( ! empty( $pPath ) ? '/' : '' ) . $pPath .
|
117 |
-
( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
|
118 |
-
}
|
119 |
-
|
120 |
-
abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
|
121 |
-
|
122 |
-
/**
|
123 |
-
* @param string $pPath
|
124 |
-
* @param string $pMethod
|
125 |
-
* @param array $pParams
|
126 |
-
*
|
127 |
-
* @return object[]|object|null
|
128 |
-
*/
|
129 |
-
private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
130 |
-
$pMethod = strtoupper( $pMethod );
|
131 |
-
|
132 |
-
try {
|
133 |
-
$result = $this->MakeRequest( $pPath, $pMethod, $pParams );
|
134 |
-
} catch ( Freemius_Exception $e ) {
|
135 |
-
// Map to error object.
|
136 |
-
$result = (object) $e->getResult();
|
137 |
-
} catch ( Exception $e ) {
|
138 |
-
// Map to error object.
|
139 |
-
$result = (object) array(
|
140 |
-
'error' => array(
|
141 |
-
'type' => 'Unknown',
|
142 |
-
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
143 |
-
'code' => 'unknown',
|
144 |
-
'http' => 402
|
145 |
-
)
|
146 |
-
);
|
147 |
-
}
|
148 |
-
|
149 |
-
return $result;
|
150 |
-
}
|
151 |
-
|
152 |
-
public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
153 |
-
return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* Base64 encoding that does not need to be urlencode()ed.
|
158 |
-
* Exactly the same as base64_encode except it uses
|
159 |
-
* - instead of +
|
160 |
-
* _ instead of /
|
161 |
-
* No padded =
|
162 |
-
*
|
163 |
-
* @param string $input base64UrlEncoded string
|
164 |
-
*
|
165 |
-
* @return string
|
166 |
-
*/
|
167 |
-
protected static function Base64UrlDecode( $input ) {
|
168 |
-
return base64_decode( strtr( $input, '-_', '+/' ) );
|
169 |
-
}
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Base64 encoding that does not need to be urlencode()ed.
|
173 |
-
* Exactly the same as base64_encode except it uses
|
174 |
-
* - instead of +
|
175 |
-
* _ instead of /
|
176 |
-
*
|
177 |
-
* @param string $input string
|
178 |
-
*
|
179 |
-
* @return string base64Url encoded string
|
180 |
-
*/
|
181 |
-
protected static function Base64UrlEncode( $input ) {
|
182 |
-
$str = strtr( base64_encode( $input ), '+/', '-_' );
|
183 |
-
$str = str_replace( '=', '', $str );
|
184 |
-
|
185 |
-
return $str;
|
186 |
-
}
|
187 |
-
|
188 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright 2014 Freemius, Inc.
|
4 |
+
*
|
5 |
+
* Licensed under the GPL v2 (the "License"); you may
|
6 |
+
* not use this file except in compliance with the License. You may obtain
|
7 |
+
* a copy of the License at
|
8 |
+
*
|
9 |
+
* http://choosealicense.com/licenses/gpl-v2/
|
10 |
+
*
|
11 |
+
* Unless required by applicable law or agreed to in writing, software
|
12 |
+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
13 |
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
14 |
+
* License for the specific language governing permissions and limitations
|
15 |
+
* under the License.
|
16 |
+
*/
|
17 |
+
|
18 |
+
if ( ! defined( 'FS_API__VERSION' ) ) {
|
19 |
+
define( 'FS_API__VERSION', '1' );
|
20 |
+
}
|
21 |
+
if ( ! defined( 'FS_SDK__PATH' ) ) {
|
22 |
+
define( 'FS_SDK__PATH', dirname( __FILE__ ) );
|
23 |
+
}
|
24 |
+
if ( ! defined( 'FS_SDK__EXCEPTIONS_PATH' ) ) {
|
25 |
+
define( 'FS_SDK__EXCEPTIONS_PATH', FS_SDK__PATH . '/Exceptions/' );
|
26 |
+
}
|
27 |
+
|
28 |
+
if ( ! function_exists( 'json_decode' ) ) {
|
29 |
+
throw new Exception( 'Freemius needs the JSON PHP extension.' );
|
30 |
+
}
|
31 |
+
|
32 |
+
// Include all exception files.
|
33 |
+
$exceptions = array(
|
34 |
+
'Exception',
|
35 |
+
'InvalidArgumentException',
|
36 |
+
'ArgumentNotExistException',
|
37 |
+
'EmptyArgumentException',
|
38 |
+
'OAuthException'
|
39 |
+
);
|
40 |
+
|
41 |
+
foreach ( $exceptions as $e ) {
|
42 |
+
require_once FS_SDK__EXCEPTIONS_PATH . $e . '.php';
|
43 |
+
}
|
44 |
+
|
45 |
+
if ( class_exists( 'Freemius_Api_Base' ) ) {
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
abstract class Freemius_Api_Base {
|
50 |
+
const VERSION = '1.0.4';
|
51 |
+
const FORMAT = 'json';
|
52 |
+
|
53 |
+
protected $_id;
|
54 |
+
protected $_public;
|
55 |
+
protected $_secret;
|
56 |
+
protected $_scope;
|
57 |
+
protected $_isSandbox;
|
58 |
+
|
59 |
+
/**
|
60 |
+
* @param string $pScope 'app', 'developer', 'plugin', 'user' or 'install'.
|
61 |
+
* @param number $pID Element's id.
|
62 |
+
* @param string $pPublic Public key.
|
63 |
+
* @param string $pSecret Element's secret key.
|
64 |
+
* @param bool $pIsSandbox Whether or not to run API in sandbox mode.
|
65 |
+
*/
|
66 |
+
public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
|
67 |
+
$this->_id = $pID;
|
68 |
+
$this->_public = $pPublic;
|
69 |
+
$this->_secret = $pSecret;
|
70 |
+
$this->_scope = $pScope;
|
71 |
+
$this->_isSandbox = $pIsSandbox;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function IsSandbox() {
|
75 |
+
return $this->_isSandbox;
|
76 |
+
}
|
77 |
+
|
78 |
+
function CanonizePath( $pPath ) {
|
79 |
+
$pPath = trim( $pPath, '/' );
|
80 |
+
$query_pos = strpos( $pPath, '?' );
|
81 |
+
$query = '';
|
82 |
+
|
83 |
+
if ( false !== $query_pos ) {
|
84 |
+
$query = substr( $pPath, $query_pos );
|
85 |
+
$pPath = substr( $pPath, 0, $query_pos );
|
86 |
+
}
|
87 |
+
|
88 |
+
// Trim '.json' suffix.
|
89 |
+
$format_length = strlen( '.' . self::FORMAT );
|
90 |
+
$start = $format_length * ( - 1 ); //negative
|
91 |
+
if ( substr( strtolower( $pPath ), $start ) === ( '.' . self::FORMAT ) ) {
|
92 |
+
$pPath = substr( $pPath, 0, strlen( $pPath ) - $format_length );
|
93 |
+
}
|
94 |
+
|
95 |
+
switch ( $this->_scope ) {
|
96 |
+
case 'app':
|
97 |
+
$base = '/apps/' . $this->_id;
|
98 |
+
break;
|
99 |
+
case 'developer':
|
100 |
+
$base = '/developers/' . $this->_id;
|
101 |
+
break;
|
102 |
+
case 'user':
|
103 |
+
$base = '/users/' . $this->_id;
|
104 |
+
break;
|
105 |
+
case 'plugin':
|
106 |
+
$base = '/plugins/' . $this->_id;
|
107 |
+
break;
|
108 |
+
case 'install':
|
109 |
+
$base = '/installs/' . $this->_id;
|
110 |
+
break;
|
111 |
+
default:
|
112 |
+
throw new Freemius_Exception( 'Scope not implemented.' );
|
113 |
+
}
|
114 |
+
|
115 |
+
return '/v' . FS_API__VERSION . $base .
|
116 |
+
( ! empty( $pPath ) ? '/' : '' ) . $pPath .
|
117 |
+
( ( false === strpos( $pPath, '.' ) ) ? '.' . self::FORMAT : '' ) . $query;
|
118 |
+
}
|
119 |
+
|
120 |
+
abstract function MakeRequest( $pCanonizedPath, $pMethod = 'GET', $pParams = array() );
|
121 |
+
|
122 |
+
/**
|
123 |
+
* @param string $pPath
|
124 |
+
* @param string $pMethod
|
125 |
+
* @param array $pParams
|
126 |
+
*
|
127 |
+
* @return object[]|object|null
|
128 |
+
*/
|
129 |
+
private function _Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
130 |
+
$pMethod = strtoupper( $pMethod );
|
131 |
+
|
132 |
+
try {
|
133 |
+
$result = $this->MakeRequest( $pPath, $pMethod, $pParams );
|
134 |
+
} catch ( Freemius_Exception $e ) {
|
135 |
+
// Map to error object.
|
136 |
+
$result = (object) $e->getResult();
|
137 |
+
} catch ( Exception $e ) {
|
138 |
+
// Map to error object.
|
139 |
+
$result = (object) array(
|
140 |
+
'error' => array(
|
141 |
+
'type' => 'Unknown',
|
142 |
+
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
143 |
+
'code' => 'unknown',
|
144 |
+
'http' => 402
|
145 |
+
)
|
146 |
+
);
|
147 |
+
}
|
148 |
+
|
149 |
+
return $result;
|
150 |
+
}
|
151 |
+
|
152 |
+
public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
153 |
+
return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Base64 encoding that does not need to be urlencode()ed.
|
158 |
+
* Exactly the same as base64_encode except it uses
|
159 |
+
* - instead of +
|
160 |
+
* _ instead of /
|
161 |
+
* No padded =
|
162 |
+
*
|
163 |
+
* @param string $input base64UrlEncoded string
|
164 |
+
*
|
165 |
+
* @return string
|
166 |
+
*/
|
167 |
+
protected static function Base64UrlDecode( $input ) {
|
168 |
+
return base64_decode( strtr( $input, '-_', '+/' ) );
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Base64 encoding that does not need to be urlencode()ed.
|
173 |
+
* Exactly the same as base64_encode except it uses
|
174 |
+
* - instead of +
|
175 |
+
* _ instead of /
|
176 |
+
*
|
177 |
+
* @param string $input string
|
178 |
+
*
|
179 |
+
* @return string base64Url encoded string
|
180 |
+
*/
|
181 |
+
protected static function Base64UrlEncode( $input ) {
|
182 |
+
$str = strtr( base64_encode( $input ), '+/', '-_' );
|
183 |
+
$str = str_replace( '=', '', $str );
|
184 |
+
|
185 |
+
return $str;
|
186 |
+
}
|
187 |
+
|
188 |
+
}
|
includes/pum-sdk/freemius/includes/sdk/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
CHANGED
@@ -27,7 +27,7 @@
|
|
27 |
* will catch it.
|
28 |
*/
|
29 |
if ( ! function_exists( 'get_plugins' ) ) {
|
30 |
-
require_once
|
31 |
}
|
32 |
|
33 |
$all_plugins = get_plugins();
|
27 |
* will catch it.
|
28 |
*/
|
29 |
if ( ! function_exists( 'get_plugins' ) ) {
|
30 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
31 |
}
|
32 |
|
33 |
$all_plugins = get_plugins();
|
includes/pum-sdk/freemius/includes/supplements/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/languages/freemius-en.mo
CHANGED
Binary file
|
includes/pum-sdk/freemius/languages/freemius-en.po
CHANGED
@@ -1,1522 +1,1727 @@
|
|
|
|
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: \n"
|
4 |
-
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: \n"
|
6 |
"PO-Revision-Date: \n"
|
7 |
-
"Last-Translator:
|
8 |
"Language: \n"
|
9 |
-
"Language-Team:
|
10 |
-
"Content-Type: \n"
|
11 |
-
"Content-Transfer-Encoding: \n"
|
12 |
-
"Plural-Forms:
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
#: includes/i18n.php:
|
21 |
-
msgid "Not today"
|
22 |
-
msgstr "Not today"
|
23 |
-
|
24 |
-
#: includes/i18n.php:69
|
25 |
msgid "Account"
|
26 |
msgstr "Account"
|
27 |
|
28 |
-
#: includes/i18n.php:
|
29 |
msgid "Add On"
|
30 |
msgstr "Add On"
|
31 |
|
32 |
-
#: includes/i18n.php:
|
33 |
msgid "Contact Us"
|
34 |
msgstr "Contact Us"
|
35 |
|
36 |
-
#: includes/i18n.php:
|
37 |
msgid "Contact Support"
|
38 |
msgstr "Contact Support"
|
39 |
|
40 |
-
#: includes/i18n.php:
|
41 |
msgid "Change Ownership"
|
42 |
msgstr "Change Ownership"
|
43 |
|
44 |
-
#: includes/i18n.php:
|
45 |
msgid "Support"
|
46 |
msgstr "Support"
|
47 |
|
48 |
-
#: includes/i18n.php:
|
49 |
msgid "Support Forum"
|
50 |
msgstr "Support Forum"
|
51 |
|
52 |
-
#: includes/i18n.php:
|
53 |
msgid "Add Ons"
|
54 |
msgstr "Add Ons"
|
55 |
|
56 |
-
#: includes/i18n.php:
|
57 |
msgctxt "verb"
|
58 |
msgid "Upgrade"
|
59 |
msgstr "Upgrade"
|
60 |
|
61 |
-
#: includes/i18n.php:
|
62 |
msgid "Awesome"
|
63 |
msgstr "Awesome"
|
64 |
|
65 |
-
#: includes/i18n.php:
|
66 |
msgctxt "noun"
|
67 |
msgid "Pricing"
|
68 |
msgstr "Pricing"
|
69 |
|
70 |
-
#: includes/i18n.php:
|
71 |
msgctxt "noun"
|
72 |
msgid "Price"
|
73 |
msgstr "Price"
|
74 |
|
75 |
-
#: includes/i18n.php:
|
76 |
msgid "Unlimited Updates"
|
77 |
msgstr "Unlimited Updates"
|
78 |
|
79 |
-
#: includes/i18n.php:
|
80 |
msgctxt "verb"
|
81 |
msgid "Downgrade"
|
82 |
msgstr "Downgrade"
|
83 |
|
84 |
-
#: includes/i18n.php:
|
85 |
msgid "Cancel Trial"
|
86 |
msgstr "Cancel Trial"
|
87 |
|
88 |
-
#: includes/i18n.php:
|
89 |
msgid "Free Trial"
|
90 |
msgstr "Free Trial"
|
91 |
|
92 |
-
#: includes/i18n.php:
|
93 |
msgid "Start my free %s"
|
94 |
msgstr "Start my free %s"
|
95 |
|
96 |
-
#: includes/i18n.php:
|
97 |
msgid "No commitment for %s - cancel anytime"
|
98 |
msgstr "No commitment for %s - cancel anytime"
|
99 |
|
100 |
-
#: includes/i18n.php:
|
101 |
msgid "After your free %s, pay as little as %s"
|
102 |
msgstr "After your free %s, pay as little as %s"
|
103 |
|
104 |
-
#: includes/i18n.php:
|
105 |
msgid "Details"
|
106 |
msgstr "Details"
|
107 |
|
108 |
-
#: includes/i18n.php:
|
109 |
msgid "Account Details"
|
110 |
msgstr "Account Details"
|
111 |
|
112 |
-
#: includes/i18n.php:
|
113 |
msgctxt "verb"
|
114 |
msgid "Delete"
|
115 |
msgstr "Delete"
|
116 |
|
117 |
-
#: includes/i18n.php:
|
118 |
msgctxt "verb"
|
119 |
msgid "Show"
|
120 |
msgstr "Show"
|
121 |
|
122 |
-
#: includes/i18n.php:
|
123 |
msgctxt "verb"
|
124 |
msgid "Hide"
|
125 |
msgstr "Hide"
|
126 |
|
127 |
-
#: includes/i18n.php:
|
128 |
msgctxt "verb"
|
129 |
msgid "Edit"
|
130 |
msgstr "Edit"
|
131 |
|
132 |
-
#: includes/i18n.php:
|
133 |
msgctxt "verb"
|
134 |
msgid "Update"
|
135 |
msgstr "Update"
|
136 |
|
137 |
-
#: includes/i18n.php:
|
138 |
msgid "Date"
|
139 |
msgstr "Date"
|
140 |
|
141 |
-
#: includes/i18n.php:
|
142 |
msgid "Amount"
|
143 |
msgstr "Amount"
|
144 |
|
145 |
-
#: includes/i18n.php:
|
146 |
msgid "Invoice"
|
147 |
msgstr "Invoice"
|
148 |
|
149 |
-
#: includes/i18n.php:
|
150 |
msgid "Billing"
|
151 |
msgstr "Billing"
|
152 |
|
153 |
-
#: includes/i18n.php:
|
154 |
msgid "Payments"
|
155 |
msgstr "Payments"
|
156 |
|
157 |
-
#: includes/i18n.php:
|
158 |
msgid "Delete Account"
|
159 |
msgstr "Delete Account"
|
160 |
|
161 |
-
#: includes/i18n.php:
|
162 |
msgctxt "as close a window"
|
163 |
msgid "Dismiss"
|
164 |
msgstr "Dismiss"
|
165 |
|
166 |
-
#: includes/i18n.php:
|
167 |
msgctxt "as product pricing plan"
|
168 |
msgid "Plan"
|
169 |
msgstr "Plan"
|
170 |
|
171 |
-
#: includes/i18n.php:
|
172 |
msgid "Change Plan"
|
173 |
msgstr "Change Plan"
|
174 |
|
175 |
-
#: includes/i18n.php:
|
176 |
msgctxt "as download professional version"
|
177 |
msgid "Download %s Version"
|
178 |
msgstr "Download %s Version"
|
179 |
|
180 |
-
#: includes/i18n.php:
|
181 |
msgctxt "as download professional version now"
|
182 |
msgid "Download %s version now"
|
183 |
msgstr "Download %s version now"
|
184 |
|
185 |
-
#: includes/i18n.php:
|
186 |
msgctxt "as download latest version"
|
187 |
msgid "Download Latest"
|
188 |
msgstr "Download Latest"
|
189 |
|
190 |
-
#: includes/i18n.php:
|
191 |
msgctxt "E.g. you have a professional license."
|
192 |
msgid "You have a %s license."
|
193 |
msgstr "You have a %s license."
|
194 |
|
195 |
-
#: includes/i18n.php:
|
196 |
msgid "New"
|
197 |
msgstr "New"
|
198 |
|
199 |
-
#: includes/i18n.php:
|
200 |
msgid "Free"
|
201 |
msgstr "Free"
|
202 |
|
203 |
-
#: includes/i18n.php:
|
204 |
msgctxt "as trial plan"
|
205 |
msgid "Trial"
|
206 |
msgstr "Trial"
|
207 |
|
208 |
-
#: includes/i18n.php:
|
209 |
msgctxt "as starting a trial plan"
|
210 |
msgid "Start Trial"
|
211 |
msgstr "Start Trial"
|
212 |
|
213 |
-
#: includes/i18n.php:
|
214 |
msgctxt "verb"
|
215 |
msgid "Purchase"
|
216 |
msgstr "Purchase"
|
217 |
|
218 |
-
#: includes/i18n.php:
|
219 |
msgid "Purchase License"
|
220 |
msgstr "Purchase License"
|
221 |
|
222 |
-
#: includes/i18n.php:
|
223 |
msgctxt "verb"
|
224 |
msgid "Buy"
|
225 |
msgstr "Buy"
|
226 |
|
227 |
-
#: includes/i18n.php:
|
228 |
msgid "Buy License"
|
229 |
msgstr "Buy License"
|
230 |
|
231 |
-
#: includes/i18n.php:
|
232 |
msgid "Single Site License"
|
233 |
msgstr "Single Site License"
|
234 |
|
235 |
-
#: includes/i18n.php:
|
236 |
msgid "Unlimited Licenses"
|
237 |
msgstr "Unlimited Licenses"
|
238 |
|
239 |
-
#: includes/i18n.php:
|
240 |
msgid "Up to %s Sites"
|
241 |
msgstr "Up to %s Sites"
|
242 |
|
243 |
-
#: includes/i18n.php:
|
244 |
msgid "%sRenew your license now%s to access version %s features and support."
|
245 |
msgstr "%sRenew your license now%s to access version %s features and support."
|
246 |
|
247 |
-
#: includes/i18n.php:
|
248 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
249 |
msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
250 |
|
251 |
-
#: includes/i18n.php:
|
252 |
msgctxt "e.g. Professional Plan"
|
253 |
msgid "%s Plan"
|
254 |
msgstr "%s Plan"
|
255 |
|
256 |
-
#: includes/i18n.php:
|
257 |
msgid "You are just one step away - %s"
|
258 |
msgstr "You are just one step away - %s"
|
259 |
|
260 |
-
#: includes/i18n.php:
|
261 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
262 |
msgid "Complete \"%s\" Activation Now"
|
263 |
msgstr "Complete \"%s\" Activation Now"
|
264 |
|
265 |
-
#: includes/i18n.php:
|
266 |
msgid "We made a few tweaks to the plugin, %s"
|
267 |
msgstr "We made a few tweaks to the plugin, %s"
|
268 |
|
269 |
-
#: includes/i18n.php:
|
270 |
msgid "Opt-in to make \"%s\" Better!"
|
271 |
msgstr "Opt-in to make \"%s\" Better!"
|
272 |
|
273 |
-
#: includes/i18n.php:
|
274 |
msgid "Error"
|
275 |
msgstr "Error"
|
276 |
|
277 |
-
#: includes/i18n.php:
|
278 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
279 |
msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
280 |
|
281 |
-
#: includes/i18n.php:
|
282 |
msgctxt "as expiration date"
|
283 |
msgid "Expiration"
|
284 |
msgstr "Expiration"
|
285 |
|
286 |
-
#: includes/i18n.php:
|
287 |
msgctxt "as software license"
|
288 |
msgid "License"
|
289 |
msgstr "License"
|
290 |
|
291 |
-
#: includes/i18n.php:
|
292 |
msgid "not verified"
|
293 |
msgstr "not verified"
|
294 |
|
295 |
-
#: includes/i18n.php:
|
296 |
msgid "Verify Email"
|
297 |
msgstr "Verify Email"
|
298 |
|
299 |
-
#: includes/i18n.php:
|
300 |
msgctxt "e.g. expires in 2 months"
|
301 |
msgid "Expires in %s"
|
302 |
msgstr "Expires in %s"
|
303 |
|
304 |
-
#: includes/i18n.php:
|
305 |
msgctxt "e.g. auto renews in 2 months"
|
306 |
msgid "Auto renews in %s"
|
307 |
msgstr "Auto renews in %s"
|
308 |
|
309 |
-
#: includes/i18n.php:
|
310 |
msgid "No expiration"
|
311 |
msgstr "No expiration"
|
312 |
|
313 |
-
#: includes/i18n.php:
|
314 |
msgid "Expired"
|
315 |
msgstr "Expired"
|
316 |
|
317 |
-
#: includes/i18n.php:
|
318 |
msgid "Cancelled"
|
319 |
msgstr "Cancelled"
|
320 |
|
321 |
-
#: includes/i18n.php:
|
322 |
msgctxt "e.g. In 2 hours"
|
323 |
msgid "In %s"
|
324 |
msgstr "In %s"
|
325 |
|
326 |
-
#: includes/i18n.php:
|
327 |
msgctxt "e.g. 2 min ago"
|
328 |
msgid "%s ago"
|
329 |
msgstr "%s ago"
|
330 |
|
331 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
332 |
msgctxt "as plugin version"
|
333 |
msgid "Version"
|
334 |
msgstr "Version"
|
335 |
|
336 |
-
#: includes/i18n.php:
|
337 |
msgid "Name"
|
338 |
msgstr "Name"
|
339 |
|
340 |
-
#: includes/i18n.php:
|
341 |
msgid "Email"
|
342 |
msgstr "Email"
|
343 |
|
344 |
-
#: includes/i18n.php:
|
345 |
msgid "Email address"
|
346 |
msgstr "Email address"
|
347 |
|
348 |
-
#: includes/i18n.php:
|
349 |
msgid "Verified"
|
350 |
msgstr "Verified"
|
351 |
|
352 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
msgid "Plugin"
|
354 |
msgstr "Plugin"
|
355 |
|
356 |
-
#: includes/i18n.php:
|
357 |
msgid "Plugins"
|
358 |
msgstr "Plugins"
|
359 |
|
360 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
361 |
msgid "Themes"
|
362 |
msgstr "Themes"
|
363 |
|
364 |
-
#: includes/i18n.php:
|
365 |
msgctxt "as file/folder path"
|
366 |
msgid "Path"
|
367 |
msgstr "Path"
|
368 |
|
369 |
-
#: includes/i18n.php:
|
370 |
msgid "Title"
|
371 |
msgstr "Title"
|
372 |
|
373 |
-
#: includes/i18n.php:
|
374 |
msgid "Free version"
|
375 |
msgstr "Free version"
|
376 |
|
377 |
-
#: includes/i18n.php:
|
378 |
msgid "Premium version"
|
379 |
msgstr "Premium version"
|
380 |
|
381 |
-
#: includes/i18n.php:
|
382 |
msgctxt "as WP plugin slug"
|
383 |
msgid "Slug"
|
384 |
msgstr "Slug"
|
385 |
|
386 |
-
#: includes/i18n.php:
|
387 |
msgid "ID"
|
388 |
msgstr "ID"
|
389 |
|
390 |
-
#: includes/i18n.php:
|
391 |
msgid "Users"
|
392 |
msgstr "Users"
|
393 |
|
394 |
-
#: includes/i18n.php:
|
395 |
msgid "Plugin Installs"
|
396 |
msgstr "Plugin Installs"
|
397 |
|
398 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
399 |
msgctxt "like websites"
|
400 |
msgid "Sites"
|
401 |
msgstr "Sites"
|
402 |
|
403 |
-
#: includes/i18n.php:
|
404 |
msgid "User ID"
|
405 |
msgstr "User ID"
|
406 |
|
407 |
-
#: includes/i18n.php:
|
408 |
msgid "Site ID"
|
409 |
msgstr "Site ID"
|
410 |
|
411 |
-
#: includes/i18n.php:
|
412 |
msgid "Public Key"
|
413 |
msgstr "Public Key"
|
414 |
|
415 |
-
#: includes/i18n.php:
|
416 |
msgid "Secret Key"
|
417 |
msgstr "Secret Key"
|
418 |
|
419 |
-
#: includes/i18n.php:
|
420 |
msgctxt "as secret encryption key missing"
|
421 |
msgid "No Secret"
|
422 |
msgstr "No Secret"
|
423 |
|
424 |
-
#: includes/i18n.php:
|
425 |
msgid "No ID"
|
426 |
msgstr "No ID"
|
427 |
|
428 |
-
#: includes/i18n.php:
|
429 |
msgctxt "as synchronize license"
|
430 |
msgid "Sync License"
|
431 |
msgstr "Sync License"
|
432 |
|
433 |
-
#: includes/i18n.php:
|
434 |
msgctxt "as synchronize"
|
435 |
msgid "Sync"
|
436 |
msgstr "Sync"
|
437 |
|
438 |
-
#: includes/i18n.php:
|
439 |
msgid "Activate License"
|
440 |
msgstr "Activate License"
|
441 |
|
442 |
-
#: includes/i18n.php:
|
443 |
msgid "Activate Free Version"
|
444 |
msgstr "Activate Free Version"
|
445 |
|
446 |
-
#: includes/i18n.php:
|
447 |
msgid "Please enter the license key that you received in the email right after the purchase:"
|
448 |
msgstr "Please enter the license key that you received in the email right after the purchase:"
|
449 |
|
450 |
-
#: includes/i18n.php:
|
451 |
msgid "Activating license..."
|
452 |
msgstr "Activating license..."
|
453 |
|
454 |
-
#: includes/i18n.php:
|
455 |
msgid "Change License"
|
456 |
msgstr "Change License"
|
457 |
|
458 |
-
#: includes/i18n.php:
|
459 |
msgid "Update License"
|
460 |
msgstr "Update License"
|
461 |
|
462 |
-
#: includes/i18n.php:
|
463 |
msgid "Deactivate License"
|
464 |
msgstr "Deactivate License"
|
465 |
|
466 |
-
#: includes/i18n.php:
|
467 |
msgid "Activate"
|
468 |
msgstr "Activate"
|
469 |
|
470 |
-
#: includes/i18n.php:
|
471 |
msgid "Deactivate"
|
472 |
msgstr "Deactivate"
|
473 |
|
474 |
-
#: includes/i18n.php:
|
475 |
msgid "Skip & Deactivate"
|
476 |
msgstr "Skip & Deactivate"
|
477 |
|
478 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
479 |
msgid "No - just deactivate"
|
480 |
msgstr "No - just deactivate"
|
481 |
|
482 |
-
#: includes/i18n.php:
|
483 |
msgid "Yes - do your thing"
|
484 |
msgstr "Yes - do your thing"
|
485 |
|
486 |
-
#: includes/i18n.php:
|
487 |
msgctxt "active mode"
|
488 |
msgid "Active"
|
489 |
msgstr "Active"
|
490 |
|
491 |
-
#: includes/i18n.php:
|
492 |
msgctxt "is active mode?"
|
493 |
msgid "Is Active"
|
494 |
msgstr "Is Active"
|
495 |
|
496 |
-
#: includes/i18n.php:
|
497 |
msgid "Install Now"
|
498 |
msgstr "Install Now"
|
499 |
|
500 |
-
#: includes/i18n.php:
|
501 |
msgid "Install Update Now"
|
502 |
msgstr "Install Update Now"
|
503 |
|
504 |
-
#: includes/i18n.php:
|
505 |
msgid "More information about %s"
|
506 |
msgstr "More information about %s"
|
507 |
|
508 |
-
#: includes/i18n.php:
|
509 |
msgid "Localhost"
|
510 |
msgstr "Localhost"
|
511 |
|
512 |
-
#: includes/i18n.php:
|
513 |
msgctxt "as activate Professional plan"
|
514 |
msgid "Activate %s Plan"
|
515 |
msgstr "Activate %s Plan"
|
516 |
|
517 |
-
#: includes/i18n.php:
|
518 |
msgctxt "as 5 licenses left"
|
519 |
msgid "%s left"
|
520 |
msgstr "%s left"
|
521 |
|
522 |
-
#: includes/i18n.php:
|
523 |
msgid "Last license"
|
524 |
msgstr "Last license"
|
525 |
|
526 |
-
#: includes/i18n.php:
|
527 |
msgid "What is your %s?"
|
528 |
msgstr "What is your %s?"
|
529 |
|
530 |
-
#: includes/i18n.php:
|
531 |
msgid "Activate this add-on"
|
532 |
msgstr "Activate this add-on"
|
533 |
|
534 |
-
#: includes/i18n.php:
|
535 |
msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
536 |
msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
537 |
|
538 |
-
#: includes/i18n.php:
|
539 |
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?"
|
540 |
msgstr "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?"
|
541 |
|
542 |
-
#: includes/i18n.php:
|
543 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
544 |
msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
545 |
|
546 |
-
#: includes/i18n.php:
|
547 |
msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
548 |
msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
549 |
|
550 |
-
#: includes/i18n.php:
|
551 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
552 |
msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
553 |
|
554 |
-
#: includes/i18n.php:
|
555 |
msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
556 |
msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
557 |
|
558 |
-
#: includes/i18n.php:
|
559 |
-
msgid "Once your license
|
560 |
-
msgstr "Once your license
|
561 |
|
562 |
-
#: includes/i18n.php:
|
563 |
msgid "Are you sure you want to proceed?"
|
564 |
msgstr "Are you sure you want to proceed?"
|
565 |
|
566 |
-
#: includes/i18n.php:
|
567 |
msgid "Add Ons for %s"
|
568 |
msgstr "Add Ons for %s"
|
569 |
|
570 |
-
#: includes/i18n.php:
|
571 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
572 |
msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
573 |
|
574 |
-
#: includes/i18n.php:
|
575 |
msgid "Anonymous feedback"
|
576 |
msgstr "Anonymous feedback"
|
577 |
|
578 |
-
#: includes/i18n.php:
|
579 |
msgid "Quick feedback"
|
580 |
msgstr "Quick feedback"
|
581 |
|
582 |
-
#: includes/i18n.php:
|
583 |
msgid "If you have a moment, please let us know why you are deactivating"
|
584 |
msgstr "If you have a moment, please let us know why you are deactivating"
|
585 |
|
586 |
-
#: includes/i18n.php:
|
587 |
msgid "Yes - Deactivate"
|
588 |
msgstr "Yes - Deactivate"
|
589 |
|
590 |
-
#: includes/i18n.php:
|
591 |
msgid "Submit & Deactivate"
|
592 |
msgstr "Submit & Deactivate"
|
593 |
|
594 |
-
#: includes/i18n.php:
|
595 |
msgid "Cancel"
|
596 |
msgstr "Cancel"
|
597 |
|
598 |
-
#: includes/i18n.php:
|
599 |
msgid "I no longer need the plugin"
|
600 |
msgstr "I no longer need the plugin"
|
601 |
|
602 |
-
#: includes/i18n.php:
|
603 |
msgid "I found a better plugin"
|
604 |
msgstr "I found a better plugin"
|
605 |
|
606 |
-
#: includes/i18n.php:
|
607 |
msgid "I only needed the plugin for a short period"
|
608 |
msgstr "I only needed the plugin for a short period"
|
609 |
|
610 |
-
#: includes/i18n.php:
|
611 |
msgid "The plugin broke my site"
|
612 |
msgstr "The plugin broke my site"
|
613 |
|
614 |
-
#: includes/i18n.php:
|
615 |
msgid "The plugin suddenly stopped working"
|
616 |
msgstr "The plugin suddenly stopped working"
|
617 |
|
618 |
-
#: includes/i18n.php:
|
619 |
msgid "I can't pay for it anymore"
|
620 |
msgstr "I can't pay for it anymore"
|
621 |
|
622 |
-
#: includes/i18n.php:
|
623 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
624 |
msgstr "It's a temporary deactivation. I'm just debugging an issue."
|
625 |
|
626 |
-
#: includes/i18n.php:
|
627 |
msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
|
628 |
msgid "Other"
|
629 |
msgstr "Other"
|
630 |
|
631 |
-
#: includes/i18n.php:
|
632 |
msgid "Kindly tell us the reason so we can improve."
|
633 |
msgstr "Kindly tell us the reason so we can improve."
|
634 |
|
635 |
-
#: includes/i18n.php:
|
636 |
msgid "What's the plugin's name?"
|
637 |
msgstr "What's the plugin's name?"
|
638 |
|
639 |
-
#: includes/i18n.php:
|
640 |
msgid "What price would you feel comfortable paying?"
|
641 |
msgstr "What price would you feel comfortable paying?"
|
642 |
|
643 |
-
#: includes/i18n.php:
|
644 |
msgid "I couldn't understand how to make it work"
|
645 |
msgstr "I couldn't understand how to make it work"
|
646 |
|
647 |
-
#: includes/i18n.php:
|
648 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
649 |
msgstr "The plugin is great, but I need specific feature that you don't support"
|
650 |
|
651 |
-
#: includes/i18n.php:
|
652 |
msgid "The plugin is not working"
|
653 |
msgstr "The plugin is not working"
|
654 |
|
655 |
-
#: includes/i18n.php:
|
656 |
msgid "It's not what I was looking for"
|
657 |
msgstr "It's not what I was looking for"
|
658 |
|
659 |
-
#: includes/i18n.php:
|
660 |
msgid "The plugin didn't work as expected"
|
661 |
msgstr "The plugin didn't work as expected"
|
662 |
|
663 |
-
#: includes/i18n.php:
|
664 |
msgid "What feature?"
|
665 |
msgstr "What feature?"
|
666 |
|
667 |
-
#: includes/i18n.php:
|
668 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
669 |
msgstr "Kindly share what didn't work so we can fix it for future users..."
|
670 |
|
671 |
-
#: includes/i18n.php:
|
672 |
msgid "What you've been looking for?"
|
673 |
msgstr "What you've been looking for?"
|
674 |
|
675 |
-
#: includes/i18n.php:
|
676 |
msgid "What did you expect?"
|
677 |
msgstr "What did you expect?"
|
678 |
|
679 |
-
#: includes/i18n.php:
|
680 |
msgid "The plugin didn't work"
|
681 |
msgstr "The plugin didn't work"
|
682 |
|
683 |
-
#: includes/i18n.php:
|
684 |
msgid "I don't like to share my information with you"
|
685 |
msgstr "I don't like to share my information with you"
|
686 |
|
687 |
-
#: includes/i18n.php:
|
688 |
msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
689 |
msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
690 |
|
691 |
-
#: includes/i18n.php:
|
692 |
msgctxt "greeting"
|
693 |
msgid "Hey %s,"
|
694 |
msgstr "Hey %s,"
|
695 |
|
696 |
-
#: includes/i18n.php:
|
697 |
msgctxt "a greeting. E.g. Thanks John!"
|
698 |
msgid "Thanks %s!"
|
699 |
msgstr "Thanks %s!"
|
700 |
|
701 |
-
#: includes/i18n.php:
|
702 |
msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
703 |
msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
704 |
|
705 |
-
#: includes/i18n.php:
|
706 |
msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
707 |
msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
708 |
|
709 |
-
#: includes/i18n.php:
|
710 |
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."
|
711 |
msgstr "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."
|
712 |
|
713 |
-
#: includes/i18n.php:
|
714 |
msgid "complete the install"
|
715 |
msgstr "complete the install"
|
716 |
|
717 |
-
#: includes/i18n.php:
|
718 |
msgid "start the trial"
|
719 |
msgstr "start the trial"
|
720 |
|
721 |
-
#: includes/i18n.php:
|
722 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
723 |
msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
|
724 |
|
725 |
-
#: includes/i18n.php:
|
726 |
msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
727 |
msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
728 |
|
729 |
-
#: includes/i18n.php:
|
730 |
msgid "What permissions are being granted?"
|
731 |
msgstr "What permissions are being granted?"
|
732 |
|
733 |
-
#: includes/i18n.php:
|
734 |
msgid "Your Profile Overview"
|
735 |
msgstr "Your Profile Overview"
|
736 |
|
737 |
-
#: includes/i18n.php:
|
738 |
msgid "Name and email address"
|
739 |
msgstr "Name and email address"
|
740 |
|
741 |
-
#: includes/i18n.php:
|
742 |
msgid "Your Site Overview"
|
743 |
msgstr "Your Site Overview"
|
744 |
|
745 |
-
#: includes/i18n.php:
|
746 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
747 |
msgstr "Site URL, WP version, PHP info, plugins & themes"
|
748 |
|
749 |
-
#: includes/i18n.php:
|
750 |
msgid "Current Plugin Events"
|
751 |
msgstr "Current Plugin Events"
|
752 |
|
753 |
-
#: includes/i18n.php:
|
754 |
msgid "Activation, deactivation and uninstall"
|
755 |
msgstr "Activation, deactivation and uninstall"
|
756 |
|
757 |
-
#: includes/i18n.php:
|
758 |
msgid "Plugins & Themes"
|
759 |
msgstr "Plugins & Themes"
|
760 |
|
761 |
-
#: includes/i18n.php:
|
762 |
msgid "Titles, versions and state."
|
763 |
msgstr "Titles, versions and state."
|
764 |
|
765 |
-
#: includes/i18n.php:
|
766 |
msgid "Admin Notices"
|
767 |
msgstr "Admin Notices"
|
768 |
|
769 |
-
#: includes/i18n.php:
|
770 |
msgid "Newsletter"
|
771 |
msgstr "Newsletter"
|
772 |
|
773 |
-
#: includes/i18n.php:
|
774 |
msgid "Updates, announcements, marketing, no spam"
|
775 |
msgstr "Updates, announcements, marketing, no spam"
|
776 |
|
777 |
-
#: includes/i18n.php:
|
778 |
msgid "Privacy Policy"
|
779 |
msgstr "Privacy Policy"
|
780 |
|
781 |
-
#: includes/i18n.php:
|
782 |
msgid "Terms of Service"
|
783 |
msgstr "Terms of Service"
|
784 |
|
785 |
-
#: includes/i18n.php:
|
786 |
msgctxt "as activating plugin"
|
787 |
msgid "Activating"
|
788 |
msgstr "Activating"
|
789 |
|
790 |
-
#: includes/i18n.php:
|
791 |
msgctxt "as in the process of sending an email"
|
792 |
msgid "Sending email"
|
793 |
msgstr "Sending email"
|
794 |
|
795 |
-
#: includes/i18n.php:
|
796 |
msgctxt "button label"
|
797 |
msgid "Allow & Continue"
|
798 |
msgstr "Allow & Continue"
|
799 |
|
800 |
-
#: includes/i18n.php:
|
801 |
msgctxt "button label"
|
802 |
msgid "Agree & Activate License"
|
803 |
msgstr "Agree & Activate License"
|
804 |
|
805 |
-
#: includes/i18n.php:
|
806 |
msgctxt "verb"
|
807 |
msgid "Skip"
|
808 |
msgstr "Skip"
|
809 |
|
810 |
-
#: includes/i18n.php:
|
811 |
msgid "Click here to use the plugin anonymously"
|
812 |
msgstr "Click here to use the plugin anonymously"
|
813 |
|
814 |
-
#: includes/i18n.php:
|
815 |
msgid "Re-send activation email"
|
816 |
msgstr "Re-send activation email"
|
817 |
|
818 |
-
#: includes/i18n.php:
|
819 |
msgid "License key"
|
820 |
msgstr "License key"
|
821 |
|
822 |
-
#: includes/i18n.php:
|
823 |
msgid "Send License Key"
|
824 |
msgstr "Send License Key"
|
825 |
|
826 |
-
#: includes/i18n.php:
|
827 |
msgid "Sending license key"
|
828 |
msgstr "Sending license key"
|
829 |
|
830 |
-
#: includes/i18n.php:
|
831 |
msgid "Have a license key?"
|
832 |
msgstr "Have a license key?"
|
833 |
|
834 |
-
#: includes/i18n.php:
|
835 |
msgid "Don't have a license key?"
|
836 |
msgstr "Don't have a license key?"
|
837 |
|
838 |
-
#: includes/i18n.php:
|
839 |
msgid "Can't find your license key?"
|
840 |
msgstr "Can't find your license key?"
|
841 |
|
842 |
-
#: includes/i18n.php:
|
843 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
844 |
msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
|
845 |
|
846 |
-
#: includes/i18n.php:
|
847 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
848 |
msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
849 |
|
850 |
-
#: includes/i18n.php:
|
851 |
msgid "Opt In"
|
852 |
msgstr "Opt In"
|
853 |
|
854 |
-
#: includes/i18n.php:
|
855 |
msgid "Opt Out"
|
856 |
msgstr "Opt Out"
|
857 |
|
858 |
-
#: includes/i18n.php:
|
859 |
msgid "On second thought - I want to continue helping"
|
860 |
msgstr "On second thought - I want to continue helping"
|
861 |
|
862 |
-
#: includes/i18n.php:
|
863 |
msgid "Opting out..."
|
864 |
msgstr "Opting out..."
|
865 |
|
866 |
-
#: includes/i18n.php:
|
867 |
msgid "Opting in..."
|
868 |
msgstr "Opting in..."
|
869 |
|
870 |
-
#: includes/i18n.php:
|
871 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
872 |
msgstr "We appreciate your help in making the %s better by letting us track some usage data."
|
873 |
|
874 |
-
#: includes/i18n.php:
|
875 |
msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
876 |
msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
877 |
|
878 |
-
#: includes/i18n.php:
|
879 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
880 |
msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
881 |
|
882 |
-
#: includes/i18n.php:
|
883 |
msgid "Screenshots"
|
884 |
msgstr "Screenshots"
|
885 |
|
886 |
-
#: includes/i18n.php:
|
887 |
msgid "Click to view full-size screenshot %d"
|
888 |
msgstr "Click to view full-size screenshot %d"
|
889 |
|
890 |
-
#: includes/i18n.php:
|
891 |
msgid "Freemius Debug"
|
892 |
msgstr "Freemius Debug"
|
893 |
|
894 |
-
#: includes/i18n.php:
|
895 |
msgctxt "as turned on"
|
896 |
msgid "On"
|
897 |
msgstr "On"
|
898 |
|
899 |
-
#: includes/i18n.php:
|
900 |
msgctxt "as turned off"
|
901 |
msgid "Off"
|
902 |
msgstr "Off"
|
903 |
|
904 |
-
#: includes/i18n.php:
|
905 |
msgctxt "as code debugging"
|
906 |
msgid "Debugging"
|
907 |
msgstr "Debugging"
|
908 |
|
909 |
-
#: includes/i18n.php:
|
910 |
msgid "Freemius State"
|
911 |
msgstr "Freemius State"
|
912 |
|
913 |
-
#: includes/i18n.php:
|
914 |
msgctxt "as connection was successful"
|
915 |
msgid "Connected"
|
916 |
msgstr "Connected"
|
917 |
|
918 |
-
#: includes/i18n.php:
|
919 |
msgctxt "as connection blocked"
|
920 |
msgid "Blocked"
|
921 |
msgstr "Blocked"
|
922 |
|
923 |
-
#: includes/i18n.php:
|
924 |
msgctxt "as application program interface"
|
925 |
msgid "API"
|
926 |
msgstr "API"
|
927 |
|
928 |
-
#: includes/i18n.php:
|
929 |
msgctxt "as software development kit versions"
|
930 |
msgid "SDK"
|
931 |
msgstr "SDK"
|
932 |
|
933 |
-
#: includes/i18n.php:
|
934 |
msgctxt "as software development kit versions"
|
935 |
msgid "SDK Versions"
|
936 |
msgstr "SDK Versions"
|
937 |
|
938 |
-
#: includes/i18n.php:
|
939 |
msgctxt "as plugin folder path"
|
940 |
msgid "Plugin Path"
|
941 |
msgstr "Plugin Path"
|
942 |
|
943 |
-
#: includes/i18n.php:
|
944 |
msgctxt "as sdk path"
|
945 |
msgid "SDK Path"
|
946 |
msgstr "SDK Path"
|
947 |
|
948 |
-
#: includes/i18n.php:
|
949 |
msgid "Add Ons of Plugin %s"
|
950 |
msgstr "Add Ons of Plugin %s"
|
951 |
|
952 |
-
#: includes/i18n.php:
|
953 |
msgid "Are you sure you want to delete all Freemius data?"
|
954 |
msgstr "Are you sure you want to delete all Freemius data?"
|
955 |
|
956 |
-
#: includes/i18n.php:
|
957 |
msgid "Actions"
|
958 |
msgstr "Actions"
|
959 |
|
960 |
-
#: includes/i18n.php:
|
961 |
msgid "Delete All Accounts"
|
962 |
msgstr "Delete All Accounts"
|
963 |
|
964 |
-
#: includes/i18n.php:
|
965 |
msgid "Start Fresh"
|
966 |
msgstr "Start Fresh"
|
967 |
|
968 |
-
#: includes/i18n.php:
|
969 |
msgid "Clear API Cache"
|
970 |
msgstr "Clear API Cache"
|
971 |
|
972 |
-
#: includes/i18n.php:
|
973 |
msgid "Sync Data From Server"
|
974 |
msgstr "Sync Data From Server"
|
975 |
|
976 |
-
#: includes/i18n.php:
|
977 |
msgid "Scheduled Crons"
|
978 |
msgstr "Scheduled Crons"
|
979 |
|
980 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
981 |
msgid "Plugins & Themes Sync"
|
982 |
msgstr "Plugins & Themes Sync"
|
983 |
|
984 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
985 |
msgctxt "as congratulations"
|
986 |
msgid "Congrats"
|
987 |
msgstr "Congrats"
|
988 |
|
989 |
-
#: includes/i18n.php:
|
990 |
msgctxt "exclamation"
|
991 |
msgid "Oops"
|
992 |
msgstr "Oops"
|
993 |
|
994 |
-
#: includes/i18n.php:
|
995 |
msgctxt "interjection expressing joy or exuberance"
|
996 |
msgid "Yee-haw"
|
997 |
msgstr "Yee-haw"
|
998 |
|
999 |
-
#: includes/i18n.php:
|
1000 |
msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
|
1001 |
msgid "W00t"
|
1002 |
msgstr "W00t"
|
1003 |
|
1004 |
-
#: includes/i18n.php:
|
1005 |
msgctxt "a positive response"
|
1006 |
msgid "Right on"
|
1007 |
msgstr "Right on"
|
1008 |
|
1009 |
-
#: includes/i18n.php:
|
1010 |
msgctxt "something somebody says when they are thinking about what you have just said. "
|
1011 |
msgid "Hmm"
|
1012 |
msgstr "Hmm"
|
1013 |
|
1014 |
-
#: includes/i18n.php:
|
1015 |
msgid "O.K"
|
1016 |
msgstr "O.K"
|
1017 |
|
1018 |
-
#: includes/i18n.php:
|
1019 |
msgctxt "exclamation"
|
1020 |
msgid "Hey"
|
1021 |
msgstr "Hey"
|
1022 |
|
1023 |
-
#: includes/i18n.php:
|
1024 |
msgctxt "advance notice of something that will need attention."
|
1025 |
msgid "Heads up"
|
1026 |
msgstr "Heads up"
|
1027 |
|
1028 |
-
#: includes/i18n.php:
|
1029 |
msgid "Seems like you got the latest release."
|
1030 |
msgstr "Seems like you got the latest release."
|
1031 |
|
1032 |
-
#: includes/i18n.php:
|
1033 |
msgid "You are all good!"
|
1034 |
msgstr "You are all good!"
|
1035 |
|
1036 |
-
#: includes/i18n.php:
|
1037 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1038 |
msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1039 |
|
1040 |
-
#: includes/i18n.php:
|
1041 |
msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1042 |
msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1043 |
|
1044 |
-
#: includes/i18n.php:
|
1045 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1046 |
msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1047 |
|
1048 |
-
#: includes/i18n.php:
|
1049 |
msgid "Your name was successfully updated."
|
1050 |
msgstr "Your name was successfully updated."
|
1051 |
|
1052 |
-
#: includes/i18n.php:
|
1053 |
msgid "You have successfully updated your %s."
|
1054 |
msgstr "You have successfully updated your %s."
|
1055 |
|
1056 |
-
#: includes/i18n.php:
|
1057 |
msgid "Please provide your full name."
|
1058 |
msgstr "Please provide your full name."
|
1059 |
|
1060 |
-
#: includes/i18n.php:
|
1061 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1062 |
msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1063 |
|
1064 |
-
#: includes/i18n.php:
|
1065 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1066 |
msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1067 |
|
1068 |
-
#: includes/i18n.php:
|
1069 |
msgid "No credit card required"
|
1070 |
msgstr "No credit card required"
|
1071 |
|
1072 |
-
#: includes/i18n.php:
|
1073 |
msgid "Premium plugin version was successfully activated."
|
1074 |
msgstr "Premium plugin version was successfully activated."
|
1075 |
|
1076 |
-
#: includes/i18n.php:
|
1077 |
msgid "The upgrade of %s was successfully completed."
|
1078 |
msgstr "The upgrade of %s was successfully completed."
|
1079 |
|
1080 |
-
#: includes/i18n.php:
|
1081 |
msgid "Your account was successfully activated with the %s plan."
|
1082 |
msgstr "Your account was successfully activated with the %s plan."
|
1083 |
|
1084 |
-
#: includes/i18n.php:
|
1085 |
msgid "Download the latest %s version now"
|
1086 |
msgstr "Download the latest %s version now"
|
1087 |
|
1088 |
-
#: includes/i18n.php:
|
1089 |
msgid "Please follow these steps to complete the upgrade"
|
1090 |
msgstr "Please follow these steps to complete the upgrade"
|
1091 |
|
1092 |
-
#: includes/i18n.php:
|
1093 |
msgid "Download the latest %s version"
|
1094 |
msgstr "Download the latest %s version"
|
1095 |
|
1096 |
-
#: includes/i18n.php:
|
1097 |
msgid "Download the latest version"
|
1098 |
msgstr "Download the latest version"
|
1099 |
|
1100 |
-
#: includes/i18n.php:
|
1101 |
msgid "Deactivate the free version"
|
1102 |
msgstr "Deactivate the free version"
|
1103 |
|
1104 |
-
#: includes/i18n.php:
|
1105 |
msgid "Upload and activate the downloaded version"
|
1106 |
msgstr "Upload and activate the downloaded version"
|
1107 |
|
1108 |
-
#: includes/i18n.php:
|
1109 |
msgid "How to upload and activate?"
|
1110 |
msgstr "How to upload and activate?"
|
1111 |
|
1112 |
-
#: includes/i18n.php:
|
1113 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1114 |
msgid "%s Add-on was successfully purchased."
|
1115 |
msgstr "%s Add-on was successfully purchased."
|
1116 |
|
1117 |
-
#: includes/i18n.php:
|
1118 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1119 |
msgstr "Your %s Add-on plan was successfully upgraded."
|
1120 |
|
1121 |
-
#: includes/i18n.php:
|
1122 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1123 |
msgstr "Your email has been successfully verified - you are AWESOME!"
|
1124 |
|
1125 |
-
#: includes/i18n.php:
|
1126 |
msgid "Your plan was successfully upgraded."
|
1127 |
msgstr "Your plan was successfully upgraded."
|
1128 |
|
1129 |
-
#: includes/i18n.php:
|
1130 |
msgid "Your plan was successfully changed to %s."
|
1131 |
msgstr "Your plan was successfully changed to %s."
|
1132 |
|
1133 |
-
#: includes/i18n.php:
|
1134 |
msgid "Your license has expired. You can still continue using the free plugin forever."
|
1135 |
msgstr "Your license has expired. You can still continue using the free plugin forever."
|
1136 |
|
1137 |
-
#: includes/i18n.php:
|
1138 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1139 |
msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1140 |
|
1141 |
-
#: includes/i18n.php:
|
1142 |
msgid "Your trial has been successfully started."
|
1143 |
msgstr "Your trial has been successfully started."
|
1144 |
|
1145 |
-
#: includes/i18n.php:
|
1146 |
msgid "Your license was successfully activated."
|
1147 |
msgstr "Your license was successfully activated."
|
1148 |
|
1149 |
-
#: includes/i18n.php:
|
1150 |
msgid "It looks like your site currently doesn't have an active license."
|
1151 |
msgstr "It looks like your site currently doesn't have an active license."
|
1152 |
|
1153 |
-
#: includes/i18n.php:
|
1154 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1155 |
msgstr "Your license was successfully deactivated, you are back to the %s plan."
|
1156 |
|
1157 |
-
#: includes/i18n.php:
|
1158 |
msgid "It looks like the license deactivation failed."
|
1159 |
msgstr "It looks like the license deactivation failed."
|
1160 |
|
1161 |
-
#: includes/i18n.php:
|
1162 |
msgid "It looks like the license could not be activated."
|
1163 |
msgstr "It looks like the license could not be activated."
|
1164 |
|
1165 |
-
#: includes/i18n.php:
|
1166 |
msgid "Error received from the server:"
|
1167 |
msgstr "Error received from the server:"
|
1168 |
|
1169 |
-
#: includes/i18n.php:
|
1170 |
msgid "Your trial has expired. You can still continue using all our free features."
|
1171 |
msgstr "Your trial has expired. You can still continue using all our free features."
|
1172 |
|
1173 |
-
#: includes/i18n.php:
|
1174 |
msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1175 |
msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1176 |
|
1177 |
-
#: includes/i18n.php:
|
1178 |
msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1179 |
msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1180 |
|
1181 |
-
#: includes/i18n.php:
|
1182 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1183 |
msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1184 |
|
1185 |
-
#: includes/i18n.php:
|
1186 |
msgid "Your %s free trial was successfully cancelled."
|
1187 |
msgstr "Your %s free trial was successfully cancelled."
|
1188 |
|
1189 |
-
#: includes/i18n.php:
|
1190 |
msgctxt "%s - numeric version number"
|
1191 |
msgid "Version %s was released."
|
1192 |
msgstr "Version %s was released."
|
1193 |
|
1194 |
-
#: includes/i18n.php:
|
1195 |
msgid "Please download %s."
|
1196 |
msgstr "Please download %s."
|
1197 |
|
1198 |
-
#: includes/i18n.php:
|
1199 |
msgctxt "%s - plan name, as the latest professional version here"
|
1200 |
msgid "the latest %s version here"
|
1201 |
msgstr "the latest %s version here"
|
1202 |
|
1203 |
-
#: includes/i18n.php:
|
1204 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1205 |
msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1206 |
|
1207 |
-
#: includes/i18n.php:
|
1208 |
msgctxt "call to action"
|
1209 |
msgid "Start free trial"
|
1210 |
msgstr "Start free trial"
|
1211 |
|
1212 |
-
#: includes/i18n.php:
|
1213 |
msgid "Starting trial"
|
1214 |
msgstr "Starting trial"
|
1215 |
|
1216 |
-
#: includes/i18n.php:
|
1217 |
msgid "Please wait"
|
1218 |
msgstr "Please wait"
|
1219 |
|
1220 |
-
#: includes/i18n.php:
|
1221 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1222 |
msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1223 |
|
1224 |
-
#: includes/i18n.php:
|
1225 |
msgid "You already utilized a trial before."
|
1226 |
msgstr "You already utilized a trial before."
|
1227 |
|
1228 |
-
#: includes/i18n.php:
|
1229 |
msgid "You are already running the plugin in a trial mode."
|
1230 |
msgstr "You are already running the plugin in a trial mode."
|
1231 |
|
1232 |
-
#: includes/i18n.php:
|
1233 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1234 |
msgstr "Plan %s do not exist, therefore, can't start a trial."
|
1235 |
|
1236 |
-
#: includes/i18n.php:
|
1237 |
msgid "Plan %s does not support a trial period."
|
1238 |
msgstr "Plan %s does not support a trial period."
|
1239 |
|
1240 |
-
#: includes/i18n.php:
|
1241 |
msgid "None of the plugin's plans supports a trial period."
|
1242 |
msgstr "None of the plugin's plans supports a trial period."
|
1243 |
|
1244 |
-
#: includes/i18n.php:
|
1245 |
msgid "Unexpected API error. Please contact the plugin's author with the following error."
|
1246 |
msgstr "Unexpected API error. Please contact the plugin's author with the following error."
|
1247 |
|
1248 |
-
#: includes/i18n.php:
|
1249 |
msgid "No commitment for %s days - cancel anytime!"
|
1250 |
msgstr "No commitment for %s days - cancel anytime!"
|
1251 |
|
1252 |
-
#: includes/i18n.php:
|
1253 |
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."
|
1254 |
msgstr "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."
|
1255 |
|
1256 |
-
#: includes/i18n.php:
|
1257 |
msgid "Couldn't activate %s."
|
1258 |
msgstr "Couldn't activate %s."
|
1259 |
|
1260 |
-
#: includes/i18n.php:
|
1261 |
msgid "Please contact us with the following message:"
|
1262 |
msgstr "Please contact us with the following message:"
|
1263 |
|
1264 |
-
#: includes/i18n.php:
|
1265 |
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."
|
1266 |
msgstr "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."
|
1267 |
|
1268 |
-
#: includes/i18n.php:
|
1269 |
msgid "Please contact us here"
|
1270 |
msgstr "Please contact us here"
|
1271 |
|
1272 |
-
#: includes/i18n.php:
|
1273 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1274 |
msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1275 |
|
1276 |
-
#: includes/i18n.php:
|
1277 |
msgid "From unknown reason, the API connectivity test failed."
|
1278 |
msgstr "From unknown reason, the API connectivity test failed."
|
1279 |
|
1280 |
-
#: includes/i18n.php:
|
1281 |
msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1282 |
msgstr "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1283 |
|
1284 |
-
#: includes/i18n.php:
|
1285 |
msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1286 |
msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1287 |
|
1288 |
-
#: includes/i18n.php:
|
1289 |
msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1290 |
msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1291 |
|
1292 |
-
#: includes/i18n.php:
|
1293 |
msgctxt "as pluginX requires an access to our API"
|
1294 |
msgid "%s requires an access to our API."
|
1295 |
msgstr "%s requires an access to our API."
|
1296 |
|
1297 |
-
#: includes/i18n.php:
|
1298 |
msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1299 |
msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1300 |
|
1301 |
-
#: includes/i18n.php:
|
1302 |
msgid "I don't know what is Squid or ACL, help me!"
|
1303 |
msgstr "I don't know what is Squid or ACL, help me!"
|
1304 |
|
1305 |
-
#: includes/i18n.php:
|
1306 |
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."
|
1307 |
msgstr "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."
|
1308 |
|
1309 |
-
#: includes/i18n.php:
|
1310 |
msgid "I'm a system administrator"
|
1311 |
msgstr "I'm a system administrator"
|
1312 |
|
1313 |
-
#: includes/i18n.php:
|
1314 |
-
msgid "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
|
1315 |
-
msgstr "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
|
1316 |
|
1317 |
-
#: includes/i18n.php:
|
1318 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1319 |
msgstr "I don't know what is cURL or how to install it, help me!"
|
1320 |
|
1321 |
-
#: includes/i18n.php:
|
1322 |
msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1323 |
msgstr "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1324 |
|
1325 |
-
#: includes/i18n.php:
|
1326 |
msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1327 |
msgstr "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1328 |
|
1329 |
-
#: includes/i18n.php:
|
1330 |
msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1331 |
msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1332 |
|
1333 |
-
#: includes/i18n.php:
|
1334 |
msgid "Yes - I'm giving you a chance to fix it"
|
1335 |
msgstr "Yes - I'm giving you a chance to fix it"
|
1336 |
|
1337 |
-
#: includes/i18n.php:
|
1338 |
msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1339 |
msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1340 |
|
1341 |
-
#: includes/i18n.php:
|
1342 |
msgid "Let's try your previous version"
|
1343 |
msgstr "Let's try your previous version"
|
1344 |
|
1345 |
-
#: includes/i18n.php:
|
1346 |
msgid "Uninstall this version and install the previous one."
|
1347 |
msgstr "Uninstall this version and install the previous one."
|
1348 |
|
1349 |
-
#: includes/i18n.php:
|
1350 |
msgid "That's exhausting, please deactivate"
|
1351 |
msgstr "That's exhausting, please deactivate"
|
1352 |
|
1353 |
-
#: includes/i18n.php:
|
1354 |
msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1355 |
msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1356 |
|
1357 |
-
#: includes/i18n.php:
|
1358 |
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."
|
1359 |
msgstr "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."
|
1360 |
|
1361 |
-
#: includes/i18n.php:
|
1362 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1363 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1364 |
msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1365 |
|
1366 |
-
#: includes/i18n.php:
|
1367 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1368 |
msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1369 |
|
1370 |
-
#: includes/i18n.php:
|
1371 |
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."
|
1372 |
msgstr "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."
|
1373 |
|
1374 |
-
#: includes/i18n.php:
|
1375 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1376 |
msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1377 |
|
1378 |
-
#: includes/i18n.php:
|
1379 |
msgid "%s is the new owner of the account."
|
1380 |
msgstr "%s is the new owner of the account."
|
1381 |
|
1382 |
-
#: includes/i18n.php:
|
1383 |
msgctxt "addonX cannot run without pluginY"
|
1384 |
msgid "%s cannot run without %s."
|
1385 |
msgstr "%s cannot run without %s."
|
1386 |
|
1387 |
-
#: includes/i18n.php:
|
1388 |
msgctxt "addonX cannot run..."
|
1389 |
msgid "%s cannot run without the plugin."
|
1390 |
msgstr "%s cannot run without the plugin."
|
1391 |
|
1392 |
-
#: includes/i18n.php:
|
1393 |
msgctxt "pluginX activation was successfully..."
|
1394 |
msgid "%s activation was successfully completed."
|
1395 |
msgstr "%s activation was successfully completed."
|
1396 |
|
1397 |
-
#: includes/i18n.php:
|
1398 |
msgctxt "Plugin installer section title"
|
1399 |
msgid "Features & Pricing"
|
1400 |
msgstr "Features & Pricing"
|
1401 |
|
1402 |
-
#: includes/i18n.php:
|
1403 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1404 |
msgstr "Add-on must be deployed to WordPress.org or Freemius."
|
1405 |
|
1406 |
-
#: includes/i18n.php:
|
1407 |
msgid "Paid add-on must be deployed to Freemius."
|
1408 |
msgstr "Paid add-on must be deployed to Freemius."
|
1409 |
|
1410 |
-
#: includes/i18n.php:
|
1411 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1412 |
msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1413 |
|
1414 |
-
#: includes/i18n.php:
|
1415 |
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."
|
1416 |
msgstr "%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."
|
1417 |
|
1418 |
-
#: includes/i18n.php:
|
1419 |
msgctxt "as every month"
|
1420 |
msgid "Monthly"
|
1421 |
msgstr "Monthly"
|
1422 |
|
1423 |
-
#: includes/i18n.php:
|
1424 |
msgctxt "as monthly period"
|
1425 |
msgid "mo"
|
1426 |
msgstr "mo"
|
1427 |
|
1428 |
-
#: includes/i18n.php:
|
1429 |
msgctxt "as once a year"
|
1430 |
msgid "Annual"
|
1431 |
msgstr "Annual"
|
1432 |
|
1433 |
-
#: includes/i18n.php:
|
1434 |
msgctxt "as once a year"
|
1435 |
msgid "Annually"
|
1436 |
msgstr "Annually"
|
1437 |
|
1438 |
-
#: includes/i18n.php:
|
1439 |
msgctxt "as once a year"
|
1440 |
msgid "Once"
|
1441 |
msgstr "Once"
|
1442 |
|
1443 |
-
#: includes/i18n.php:
|
1444 |
msgctxt "as annual period"
|
1445 |
msgid "year"
|
1446 |
msgstr "year"
|
1447 |
|
1448 |
-
#: includes/i18n.php:
|
1449 |
msgid "Lifetime"
|
1450 |
msgstr "Lifetime"
|
1451 |
|
1452 |
-
#: includes/i18n.php:
|
1453 |
msgctxt "e.g. the best product"
|
1454 |
msgid "Best"
|
1455 |
msgstr "Best"
|
1456 |
|
1457 |
-
#: includes/i18n.php:
|
1458 |
msgctxt "e.g. billed monthly"
|
1459 |
msgid "Billed %s"
|
1460 |
msgstr "Billed %s"
|
1461 |
|
1462 |
-
#: includes/i18n.php:
|
1463 |
msgctxt "as a discount of $5 or 10%"
|
1464 |
msgid "Save %s"
|
1465 |
msgstr "Save %s"
|
1466 |
|
1467 |
-
#: includes/i18n.php:
|
1468 |
msgid "View details"
|
1469 |
msgstr "View details"
|
1470 |
|
1471 |
-
#: includes/i18n.php:
|
1472 |
msgctxt "button label"
|
1473 |
msgid "Approve & Start Trial"
|
1474 |
msgstr "Approve & Start Trial"
|
1475 |
|
1476 |
-
#: includes/i18n.php:
|
1477 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1478 |
msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1479 |
|
1480 |
-
#: includes/i18n.php:
|
1481 |
msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1482 |
msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1483 |
|
1484 |
-
#: includes/i18n.php:
|
1485 |
msgid "Business name"
|
1486 |
msgstr "Business name"
|
1487 |
|
1488 |
-
#: includes/i18n.php:
|
1489 |
msgid "Tax / VAT ID"
|
1490 |
msgstr "Tax / VAT ID"
|
1491 |
|
1492 |
-
#: includes/i18n.php:
|
1493 |
msgid "Address Line %d"
|
1494 |
msgstr "Address Line %d"
|
1495 |
|
1496 |
-
#: includes/i18n.php:
|
1497 |
msgid "Country"
|
1498 |
msgstr "Country"
|
1499 |
|
1500 |
-
#: includes/i18n.php:
|
1501 |
msgid "Select Country"
|
1502 |
msgstr "Select Country"
|
1503 |
|
1504 |
-
#: includes/i18n.php:
|
1505 |
msgid "City"
|
1506 |
msgstr "City"
|
1507 |
|
1508 |
-
#: includes/i18n.php:
|
1509 |
msgid "Town"
|
1510 |
msgstr "Town"
|
1511 |
|
1512 |
-
#: includes/i18n.php:
|
1513 |
msgid "State"
|
1514 |
msgstr "State"
|
1515 |
|
1516 |
-
#: includes/i18n.php:
|
1517 |
msgid "Province"
|
1518 |
msgstr "Province"
|
1519 |
|
1520 |
-
#: includes/i18n.php:
|
1521 |
msgid "ZIP / Postal Code"
|
1522 |
msgstr "ZIP / Postal Code"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2017 freemius
|
2 |
+
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: freemius\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
7 |
"POT-Creation-Date: \n"
|
8 |
"PO-Revision-Date: \n"
|
9 |
+
"Last-Translator: Vova Feldman <vova@freemius.com>\n"
|
10 |
"Language: \n"
|
11 |
+
"Language-Team: Freemius Team <admin@freemius.com>\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
+
"MIME-Version: 1.0\n"
|
16 |
+
"X-Poedit-Basepath: ..\n"
|
17 |
+
"X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
|
18 |
+
"X-Poedit-SearchPath-0: .\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
20 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
21 |
+
|
22 |
+
#: includes/i18n.php:37
|
|
|
|
|
|
|
|
|
23 |
msgid "Account"
|
24 |
msgstr "Account"
|
25 |
|
26 |
+
#: includes/i18n.php:38
|
27 |
msgid "Add On"
|
28 |
msgstr "Add On"
|
29 |
|
30 |
+
#: includes/i18n.php:39
|
31 |
msgid "Contact Us"
|
32 |
msgstr "Contact Us"
|
33 |
|
34 |
+
#: includes/i18n.php:40
|
35 |
msgid "Contact Support"
|
36 |
msgstr "Contact Support"
|
37 |
|
38 |
+
#: includes/i18n.php:41
|
39 |
msgid "Change Ownership"
|
40 |
msgstr "Change Ownership"
|
41 |
|
42 |
+
#: includes/i18n.php:42
|
43 |
msgid "Support"
|
44 |
msgstr "Support"
|
45 |
|
46 |
+
#: includes/i18n.php:43
|
47 |
msgid "Support Forum"
|
48 |
msgstr "Support Forum"
|
49 |
|
50 |
+
#: includes/i18n.php:44
|
51 |
msgid "Add Ons"
|
52 |
msgstr "Add Ons"
|
53 |
|
54 |
+
#: includes/i18n.php:45
|
55 |
msgctxt "verb"
|
56 |
msgid "Upgrade"
|
57 |
msgstr "Upgrade"
|
58 |
|
59 |
+
#: includes/i18n.php:46
|
60 |
msgid "Awesome"
|
61 |
msgstr "Awesome"
|
62 |
|
63 |
+
#: includes/i18n.php:47
|
64 |
msgctxt "noun"
|
65 |
msgid "Pricing"
|
66 |
msgstr "Pricing"
|
67 |
|
68 |
+
#: includes/i18n.php:48
|
69 |
msgctxt "noun"
|
70 |
msgid "Price"
|
71 |
msgstr "Price"
|
72 |
|
73 |
+
#: includes/i18n.php:49
|
74 |
msgid "Unlimited Updates"
|
75 |
msgstr "Unlimited Updates"
|
76 |
|
77 |
+
#: includes/i18n.php:50
|
78 |
msgctxt "verb"
|
79 |
msgid "Downgrade"
|
80 |
msgstr "Downgrade"
|
81 |
|
82 |
+
#: includes/i18n.php:51
|
83 |
msgid "Cancel Trial"
|
84 |
msgstr "Cancel Trial"
|
85 |
|
86 |
+
#: includes/i18n.php:52
|
87 |
msgid "Free Trial"
|
88 |
msgstr "Free Trial"
|
89 |
|
90 |
+
#: includes/i18n.php:53
|
91 |
msgid "Start my free %s"
|
92 |
msgstr "Start my free %s"
|
93 |
|
94 |
+
#: includes/i18n.php:54
|
95 |
msgid "No commitment for %s - cancel anytime"
|
96 |
msgstr "No commitment for %s - cancel anytime"
|
97 |
|
98 |
+
#: includes/i18n.php:55
|
99 |
msgid "After your free %s, pay as little as %s"
|
100 |
msgstr "After your free %s, pay as little as %s"
|
101 |
|
102 |
+
#: includes/i18n.php:56
|
103 |
msgid "Details"
|
104 |
msgstr "Details"
|
105 |
|
106 |
+
#: includes/i18n.php:57
|
107 |
msgid "Account Details"
|
108 |
msgstr "Account Details"
|
109 |
|
110 |
+
#: includes/i18n.php:58
|
111 |
msgctxt "verb"
|
112 |
msgid "Delete"
|
113 |
msgstr "Delete"
|
114 |
|
115 |
+
#: includes/i18n.php:59
|
116 |
msgctxt "verb"
|
117 |
msgid "Show"
|
118 |
msgstr "Show"
|
119 |
|
120 |
+
#: includes/i18n.php:60
|
121 |
msgctxt "verb"
|
122 |
msgid "Hide"
|
123 |
msgstr "Hide"
|
124 |
|
125 |
+
#: includes/i18n.php:61
|
126 |
msgctxt "verb"
|
127 |
msgid "Edit"
|
128 |
msgstr "Edit"
|
129 |
|
130 |
+
#: includes/i18n.php:62
|
131 |
msgctxt "verb"
|
132 |
msgid "Update"
|
133 |
msgstr "Update"
|
134 |
|
135 |
+
#: includes/i18n.php:63
|
136 |
msgid "Date"
|
137 |
msgstr "Date"
|
138 |
|
139 |
+
#: includes/i18n.php:64
|
140 |
msgid "Amount"
|
141 |
msgstr "Amount"
|
142 |
|
143 |
+
#: includes/i18n.php:65
|
144 |
msgid "Invoice"
|
145 |
msgstr "Invoice"
|
146 |
|
147 |
+
#: includes/i18n.php:66
|
148 |
msgid "Billing"
|
149 |
msgstr "Billing"
|
150 |
|
151 |
+
#: includes/i18n.php:67
|
152 |
msgid "Payments"
|
153 |
msgstr "Payments"
|
154 |
|
155 |
+
#: includes/i18n.php:68
|
156 |
msgid "Delete Account"
|
157 |
msgstr "Delete Account"
|
158 |
|
159 |
+
#: includes/i18n.php:69
|
160 |
msgctxt "as close a window"
|
161 |
msgid "Dismiss"
|
162 |
msgstr "Dismiss"
|
163 |
|
164 |
+
#: includes/i18n.php:70
|
165 |
msgctxt "as product pricing plan"
|
166 |
msgid "Plan"
|
167 |
msgstr "Plan"
|
168 |
|
169 |
+
#: includes/i18n.php:71
|
170 |
msgid "Change Plan"
|
171 |
msgstr "Change Plan"
|
172 |
|
173 |
+
#: includes/i18n.php:72
|
174 |
msgctxt "as download professional version"
|
175 |
msgid "Download %s Version"
|
176 |
msgstr "Download %s Version"
|
177 |
|
178 |
+
#: includes/i18n.php:73
|
179 |
msgctxt "as download professional version now"
|
180 |
msgid "Download %s version now"
|
181 |
msgstr "Download %s version now"
|
182 |
|
183 |
+
#: includes/i18n.php:74
|
184 |
msgctxt "as download latest version"
|
185 |
msgid "Download Latest"
|
186 |
msgstr "Download Latest"
|
187 |
|
188 |
+
#: includes/i18n.php:75
|
189 |
msgctxt "E.g. you have a professional license."
|
190 |
msgid "You have a %s license."
|
191 |
msgstr "You have a %s license."
|
192 |
|
193 |
+
#: includes/i18n.php:76
|
194 |
msgid "New"
|
195 |
msgstr "New"
|
196 |
|
197 |
+
#: includes/i18n.php:77
|
198 |
msgid "Free"
|
199 |
msgstr "Free"
|
200 |
|
201 |
+
#: includes/i18n.php:78
|
202 |
msgctxt "as trial plan"
|
203 |
msgid "Trial"
|
204 |
msgstr "Trial"
|
205 |
|
206 |
+
#: includes/i18n.php:79
|
207 |
msgctxt "as starting a trial plan"
|
208 |
msgid "Start Trial"
|
209 |
msgstr "Start Trial"
|
210 |
|
211 |
+
#: includes/i18n.php:80
|
212 |
msgctxt "verb"
|
213 |
msgid "Purchase"
|
214 |
msgstr "Purchase"
|
215 |
|
216 |
+
#: includes/i18n.php:81
|
217 |
msgid "Purchase License"
|
218 |
msgstr "Purchase License"
|
219 |
|
220 |
+
#: includes/i18n.php:82
|
221 |
msgctxt "verb"
|
222 |
msgid "Buy"
|
223 |
msgstr "Buy"
|
224 |
|
225 |
+
#: includes/i18n.php:83
|
226 |
msgid "Buy License"
|
227 |
msgstr "Buy License"
|
228 |
|
229 |
+
#: includes/i18n.php:84
|
230 |
msgid "Single Site License"
|
231 |
msgstr "Single Site License"
|
232 |
|
233 |
+
#: includes/i18n.php:85
|
234 |
msgid "Unlimited Licenses"
|
235 |
msgstr "Unlimited Licenses"
|
236 |
|
237 |
+
#: includes/i18n.php:86
|
238 |
msgid "Up to %s Sites"
|
239 |
msgstr "Up to %s Sites"
|
240 |
|
241 |
+
#: includes/i18n.php:87
|
242 |
msgid "%sRenew your license now%s to access version %s features and support."
|
243 |
msgstr "%sRenew your license now%s to access version %s features and support."
|
244 |
|
245 |
+
#: includes/i18n.php:88
|
246 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
247 |
msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
248 |
|
249 |
+
#: includes/i18n.php:89
|
250 |
msgctxt "e.g. Professional Plan"
|
251 |
msgid "%s Plan"
|
252 |
msgstr "%s Plan"
|
253 |
|
254 |
+
#: includes/i18n.php:90
|
255 |
msgid "You are just one step away - %s"
|
256 |
msgstr "You are just one step away - %s"
|
257 |
|
258 |
+
#: includes/i18n.php:91
|
259 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
260 |
msgid "Complete \"%s\" Activation Now"
|
261 |
msgstr "Complete \"%s\" Activation Now"
|
262 |
|
263 |
+
#: includes/i18n.php:93
|
264 |
msgid "We made a few tweaks to the plugin, %s"
|
265 |
msgstr "We made a few tweaks to the plugin, %s"
|
266 |
|
267 |
+
#: includes/i18n.php:94
|
268 |
msgid "Opt-in to make \"%s\" Better!"
|
269 |
msgstr "Opt-in to make \"%s\" Better!"
|
270 |
|
271 |
+
#: includes/i18n.php:95
|
272 |
msgid "Error"
|
273 |
msgstr "Error"
|
274 |
|
275 |
+
#: includes/i18n.php:96
|
276 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
277 |
msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
278 |
|
279 |
+
#: includes/i18n.php:99
|
280 |
msgctxt "as expiration date"
|
281 |
msgid "Expiration"
|
282 |
msgstr "Expiration"
|
283 |
|
284 |
+
#: includes/i18n.php:100
|
285 |
msgctxt "as software license"
|
286 |
msgid "License"
|
287 |
msgstr "License"
|
288 |
|
289 |
+
#: includes/i18n.php:101
|
290 |
msgid "not verified"
|
291 |
msgstr "not verified"
|
292 |
|
293 |
+
#: includes/i18n.php:102
|
294 |
msgid "Verify Email"
|
295 |
msgstr "Verify Email"
|
296 |
|
297 |
+
#: includes/i18n.php:103
|
298 |
msgctxt "e.g. expires in 2 months"
|
299 |
msgid "Expires in %s"
|
300 |
msgstr "Expires in %s"
|
301 |
|
302 |
+
#: includes/i18n.php:104
|
303 |
msgctxt "e.g. auto renews in 2 months"
|
304 |
msgid "Auto renews in %s"
|
305 |
msgstr "Auto renews in %s"
|
306 |
|
307 |
+
#: includes/i18n.php:105
|
308 |
msgid "No expiration"
|
309 |
msgstr "No expiration"
|
310 |
|
311 |
+
#: includes/i18n.php:106
|
312 |
msgid "Expired"
|
313 |
msgstr "Expired"
|
314 |
|
315 |
+
#: includes/i18n.php:107
|
316 |
msgid "Cancelled"
|
317 |
msgstr "Cancelled"
|
318 |
|
319 |
+
#: includes/i18n.php:108
|
320 |
msgctxt "e.g. In 2 hours"
|
321 |
msgid "In %s"
|
322 |
msgstr "In %s"
|
323 |
|
324 |
+
#: includes/i18n.php:109
|
325 |
msgctxt "e.g. 2 min ago"
|
326 |
msgid "%s ago"
|
327 |
msgstr "%s ago"
|
328 |
|
329 |
+
#: includes/i18n.php:111
|
330 |
+
msgid "%s or higher"
|
331 |
+
msgstr "%s or higher"
|
332 |
+
|
333 |
+
#: includes/i18n.php:112
|
334 |
msgctxt "as plugin version"
|
335 |
msgid "Version"
|
336 |
msgstr "Version"
|
337 |
|
338 |
+
#: includes/i18n.php:113
|
339 |
msgid "Name"
|
340 |
msgstr "Name"
|
341 |
|
342 |
+
#: includes/i18n.php:114
|
343 |
msgid "Email"
|
344 |
msgstr "Email"
|
345 |
|
346 |
+
#: includes/i18n.php:115
|
347 |
msgid "Email address"
|
348 |
msgstr "Email address"
|
349 |
|
350 |
+
#: includes/i18n.php:116
|
351 |
msgid "Verified"
|
352 |
msgstr "Verified"
|
353 |
|
354 |
+
#: includes/i18n.php:117
|
355 |
+
msgid "Module"
|
356 |
+
msgstr "Module"
|
357 |
+
|
358 |
+
#: includes/i18n.php:118
|
359 |
+
msgid "Module Type"
|
360 |
+
msgstr "Module Type"
|
361 |
+
|
362 |
+
#: includes/i18n.php:119
|
363 |
msgid "Plugin"
|
364 |
msgstr "Plugin"
|
365 |
|
366 |
+
#: includes/i18n.php:120
|
367 |
msgid "Plugins"
|
368 |
msgstr "Plugins"
|
369 |
|
370 |
+
#: includes/i18n.php:121
|
371 |
+
msgid "Theme"
|
372 |
+
msgstr "Theme"
|
373 |
+
|
374 |
+
#: includes/i18n.php:122
|
375 |
msgid "Themes"
|
376 |
msgstr "Themes"
|
377 |
|
378 |
+
#: includes/i18n.php:123
|
379 |
msgctxt "as file/folder path"
|
380 |
msgid "Path"
|
381 |
msgstr "Path"
|
382 |
|
383 |
+
#: includes/i18n.php:124
|
384 |
msgid "Title"
|
385 |
msgstr "Title"
|
386 |
|
387 |
+
#: includes/i18n.php:125
|
388 |
msgid "Free version"
|
389 |
msgstr "Free version"
|
390 |
|
391 |
+
#: includes/i18n.php:126
|
392 |
msgid "Premium version"
|
393 |
msgstr "Premium version"
|
394 |
|
395 |
+
#: includes/i18n.php:127
|
396 |
msgctxt "as WP plugin slug"
|
397 |
msgid "Slug"
|
398 |
msgstr "Slug"
|
399 |
|
400 |
+
#: includes/i18n.php:128
|
401 |
msgid "ID"
|
402 |
msgstr "ID"
|
403 |
|
404 |
+
#: includes/i18n.php:129
|
405 |
msgid "Users"
|
406 |
msgstr "Users"
|
407 |
|
408 |
+
#: includes/i18n.php:130
|
409 |
msgid "Plugin Installs"
|
410 |
msgstr "Plugin Installs"
|
411 |
|
412 |
+
#: includes/i18n.php:131
|
413 |
+
msgid "%s Installs"
|
414 |
+
msgstr "%s Installs"
|
415 |
+
|
416 |
+
#: includes/i18n.php:132
|
417 |
msgctxt "like websites"
|
418 |
msgid "Sites"
|
419 |
msgstr "Sites"
|
420 |
|
421 |
+
#: includes/i18n.php:133
|
422 |
msgid "User ID"
|
423 |
msgstr "User ID"
|
424 |
|
425 |
+
#: includes/i18n.php:134
|
426 |
msgid "Site ID"
|
427 |
msgstr "Site ID"
|
428 |
|
429 |
+
#: includes/i18n.php:135
|
430 |
msgid "Public Key"
|
431 |
msgstr "Public Key"
|
432 |
|
433 |
+
#: includes/i18n.php:136
|
434 |
msgid "Secret Key"
|
435 |
msgstr "Secret Key"
|
436 |
|
437 |
+
#: includes/i18n.php:137
|
438 |
msgctxt "as secret encryption key missing"
|
439 |
msgid "No Secret"
|
440 |
msgstr "No Secret"
|
441 |
|
442 |
+
#: includes/i18n.php:138
|
443 |
msgid "No ID"
|
444 |
msgstr "No ID"
|
445 |
|
446 |
+
#: includes/i18n.php:139
|
447 |
msgctxt "as synchronize license"
|
448 |
msgid "Sync License"
|
449 |
msgstr "Sync License"
|
450 |
|
451 |
+
#: includes/i18n.php:140
|
452 |
msgctxt "as synchronize"
|
453 |
msgid "Sync"
|
454 |
msgstr "Sync"
|
455 |
|
456 |
+
#: includes/i18n.php:141
|
457 |
msgid "Activate License"
|
458 |
msgstr "Activate License"
|
459 |
|
460 |
+
#: includes/i18n.php:142
|
461 |
msgid "Activate Free Version"
|
462 |
msgstr "Activate Free Version"
|
463 |
|
464 |
+
#: includes/i18n.php:143
|
465 |
msgid "Please enter the license key that you received in the email right after the purchase:"
|
466 |
msgstr "Please enter the license key that you received in the email right after the purchase:"
|
467 |
|
468 |
+
#: includes/i18n.php:144
|
469 |
msgid "Activating license..."
|
470 |
msgstr "Activating license..."
|
471 |
|
472 |
+
#: includes/i18n.php:145
|
473 |
msgid "Change License"
|
474 |
msgstr "Change License"
|
475 |
|
476 |
+
#: includes/i18n.php:146
|
477 |
msgid "Update License"
|
478 |
msgstr "Update License"
|
479 |
|
480 |
+
#: includes/i18n.php:147
|
481 |
msgid "Deactivate License"
|
482 |
msgstr "Deactivate License"
|
483 |
|
484 |
+
#: includes/i18n.php:148
|
485 |
msgid "Activate"
|
486 |
msgstr "Activate"
|
487 |
|
488 |
+
#: includes/i18n.php:149
|
489 |
msgid "Deactivate"
|
490 |
msgstr "Deactivate"
|
491 |
|
492 |
+
#: includes/i18n.php:150
|
493 |
msgid "Skip & Deactivate"
|
494 |
msgstr "Skip & Deactivate"
|
495 |
|
496 |
+
#: includes/i18n.php:151
|
497 |
+
msgid "Skip & %s"
|
498 |
+
msgstr "Skip & %s"
|
499 |
+
|
500 |
+
#: includes/i18n.php:152
|
501 |
msgid "No - just deactivate"
|
502 |
msgstr "No - just deactivate"
|
503 |
|
504 |
+
#: includes/i18n.php:153
|
505 |
msgid "Yes - do your thing"
|
506 |
msgstr "Yes - do your thing"
|
507 |
|
508 |
+
#: includes/i18n.php:154
|
509 |
msgctxt "active mode"
|
510 |
msgid "Active"
|
511 |
msgstr "Active"
|
512 |
|
513 |
+
#: includes/i18n.php:155
|
514 |
msgctxt "is active mode?"
|
515 |
msgid "Is Active"
|
516 |
msgstr "Is Active"
|
517 |
|
518 |
+
#: includes/i18n.php:156
|
519 |
msgid "Install Now"
|
520 |
msgstr "Install Now"
|
521 |
|
522 |
+
#: includes/i18n.php:157
|
523 |
msgid "Install Update Now"
|
524 |
msgstr "Install Update Now"
|
525 |
|
526 |
+
#: includes/i18n.php:158
|
527 |
msgid "More information about %s"
|
528 |
msgstr "More information about %s"
|
529 |
|
530 |
+
#: includes/i18n.php:159
|
531 |
msgid "Localhost"
|
532 |
msgstr "Localhost"
|
533 |
|
534 |
+
#: includes/i18n.php:160
|
535 |
msgctxt "as activate Professional plan"
|
536 |
msgid "Activate %s Plan"
|
537 |
msgstr "Activate %s Plan"
|
538 |
|
539 |
+
#: includes/i18n.php:161
|
540 |
msgctxt "as 5 licenses left"
|
541 |
msgid "%s left"
|
542 |
msgstr "%s left"
|
543 |
|
544 |
+
#: includes/i18n.php:162
|
545 |
msgid "Last license"
|
546 |
msgstr "Last license"
|
547 |
|
548 |
+
#: includes/i18n.php:163
|
549 |
msgid "What is your %s?"
|
550 |
msgstr "What is your %s?"
|
551 |
|
552 |
+
#: includes/i18n.php:164
|
553 |
msgid "Activate this add-on"
|
554 |
msgstr "Activate this add-on"
|
555 |
|
556 |
+
#: includes/i18n.php:165
|
557 |
msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
558 |
msgstr "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
559 |
|
560 |
+
#: includes/i18n.php:166
|
561 |
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?"
|
562 |
msgstr "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?"
|
563 |
|
564 |
+
#: includes/i18n.php:167
|
565 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
566 |
msgstr "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
567 |
|
568 |
+
#: includes/i18n.php:168
|
569 |
msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
570 |
msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
571 |
|
572 |
+
#: includes/i18n.php:169
|
573 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
574 |
msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
575 |
|
576 |
+
#: includes/i18n.php:170
|
577 |
msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
578 |
msgstr "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
579 |
|
580 |
+
#: includes/i18n.php:171
|
581 |
+
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
582 |
+
msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
583 |
|
584 |
+
#: includes/i18n.php:172
|
585 |
msgid "Are you sure you want to proceed?"
|
586 |
msgstr "Are you sure you want to proceed?"
|
587 |
|
588 |
+
#: includes/i18n.php:175
|
589 |
msgid "Add Ons for %s"
|
590 |
msgstr "Add Ons for %s"
|
591 |
|
592 |
+
#: includes/i18n.php:176
|
593 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
594 |
msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
595 |
|
596 |
+
#: includes/i18n.php:178
|
597 |
msgid "Anonymous feedback"
|
598 |
msgstr "Anonymous feedback"
|
599 |
|
600 |
+
#: includes/i18n.php:179
|
601 |
msgid "Quick feedback"
|
602 |
msgstr "Quick feedback"
|
603 |
|
604 |
+
#: includes/i18n.php:180
|
605 |
msgid "If you have a moment, please let us know why you are deactivating"
|
606 |
msgstr "If you have a moment, please let us know why you are deactivating"
|
607 |
|
608 |
+
#: includes/i18n.php:181
|
609 |
msgid "Yes - Deactivate"
|
610 |
msgstr "Yes - Deactivate"
|
611 |
|
612 |
+
#: includes/i18n.php:182
|
613 |
msgid "Submit & Deactivate"
|
614 |
msgstr "Submit & Deactivate"
|
615 |
|
616 |
+
#: includes/i18n.php:183
|
617 |
msgid "Cancel"
|
618 |
msgstr "Cancel"
|
619 |
|
620 |
+
#: includes/i18n.php:184
|
621 |
msgid "I no longer need the plugin"
|
622 |
msgstr "I no longer need the plugin"
|
623 |
|
624 |
+
#: includes/i18n.php:185
|
625 |
msgid "I found a better plugin"
|
626 |
msgstr "I found a better plugin"
|
627 |
|
628 |
+
#: includes/i18n.php:186
|
629 |
msgid "I only needed the plugin for a short period"
|
630 |
msgstr "I only needed the plugin for a short period"
|
631 |
|
632 |
+
#: includes/i18n.php:187
|
633 |
msgid "The plugin broke my site"
|
634 |
msgstr "The plugin broke my site"
|
635 |
|
636 |
+
#: includes/i18n.php:188
|
637 |
msgid "The plugin suddenly stopped working"
|
638 |
msgstr "The plugin suddenly stopped working"
|
639 |
|
640 |
+
#: includes/i18n.php:189
|
641 |
msgid "I can't pay for it anymore"
|
642 |
msgstr "I can't pay for it anymore"
|
643 |
|
644 |
+
#: includes/i18n.php:190
|
645 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
646 |
msgstr "It's a temporary deactivation. I'm just debugging an issue."
|
647 |
|
648 |
+
#: includes/i18n.php:191
|
649 |
msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
|
650 |
msgid "Other"
|
651 |
msgstr "Other"
|
652 |
|
653 |
+
#: includes/i18n.php:193
|
654 |
msgid "Kindly tell us the reason so we can improve."
|
655 |
msgstr "Kindly tell us the reason so we can improve."
|
656 |
|
657 |
+
#: includes/i18n.php:194
|
658 |
msgid "What's the plugin's name?"
|
659 |
msgstr "What's the plugin's name?"
|
660 |
|
661 |
+
#: includes/i18n.php:195
|
662 |
msgid "What price would you feel comfortable paying?"
|
663 |
msgstr "What price would you feel comfortable paying?"
|
664 |
|
665 |
+
#: includes/i18n.php:196
|
666 |
msgid "I couldn't understand how to make it work"
|
667 |
msgstr "I couldn't understand how to make it work"
|
668 |
|
669 |
+
#: includes/i18n.php:197
|
670 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
671 |
msgstr "The plugin is great, but I need specific feature that you don't support"
|
672 |
|
673 |
+
#: includes/i18n.php:198
|
674 |
msgid "The plugin is not working"
|
675 |
msgstr "The plugin is not working"
|
676 |
|
677 |
+
#: includes/i18n.php:199
|
678 |
msgid "It's not what I was looking for"
|
679 |
msgstr "It's not what I was looking for"
|
680 |
|
681 |
+
#: includes/i18n.php:200
|
682 |
msgid "The plugin didn't work as expected"
|
683 |
msgstr "The plugin didn't work as expected"
|
684 |
|
685 |
+
#: includes/i18n.php:201
|
686 |
msgid "What feature?"
|
687 |
msgstr "What feature?"
|
688 |
|
689 |
+
#: includes/i18n.php:202
|
690 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
691 |
msgstr "Kindly share what didn't work so we can fix it for future users..."
|
692 |
|
693 |
+
#: includes/i18n.php:203
|
694 |
msgid "What you've been looking for?"
|
695 |
msgstr "What you've been looking for?"
|
696 |
|
697 |
+
#: includes/i18n.php:204
|
698 |
msgid "What did you expect?"
|
699 |
msgstr "What did you expect?"
|
700 |
|
701 |
+
#: includes/i18n.php:205
|
702 |
msgid "The plugin didn't work"
|
703 |
msgstr "The plugin didn't work"
|
704 |
|
705 |
+
#: includes/i18n.php:206
|
706 |
msgid "I don't like to share my information with you"
|
707 |
msgstr "I don't like to share my information with you"
|
708 |
|
709 |
+
#: includes/i18n.php:207
|
710 |
msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
711 |
msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
712 |
|
713 |
+
#: includes/i18n.php:211
|
714 |
msgctxt "greeting"
|
715 |
msgid "Hey %s,"
|
716 |
msgstr "Hey %s,"
|
717 |
|
718 |
+
#: includes/i18n.php:212
|
719 |
msgctxt "a greeting. E.g. Thanks John!"
|
720 |
msgid "Thanks %s!"
|
721 |
msgstr "Thanks %s!"
|
722 |
|
723 |
+
#: includes/i18n.php:213
|
724 |
msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
725 |
msgstr "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
726 |
|
727 |
+
#: includes/i18n.php:214
|
728 |
msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
729 |
msgstr "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
730 |
|
731 |
+
#: includes/i18n.php:215
|
732 |
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."
|
733 |
msgstr "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."
|
734 |
|
735 |
+
#: includes/i18n.php:216
|
736 |
msgid "complete the install"
|
737 |
msgstr "complete the install"
|
738 |
|
739 |
+
#: includes/i18n.php:217
|
740 |
msgid "start the trial"
|
741 |
msgstr "start the trial"
|
742 |
|
743 |
+
#: includes/i18n.php:218
|
744 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
745 |
msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
|
746 |
|
747 |
+
#: includes/i18n.php:219
|
748 |
msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
749 |
msgstr "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
750 |
|
751 |
+
#: includes/i18n.php:220
|
752 |
msgid "What permissions are being granted?"
|
753 |
msgstr "What permissions are being granted?"
|
754 |
|
755 |
+
#: includes/i18n.php:221
|
756 |
msgid "Your Profile Overview"
|
757 |
msgstr "Your Profile Overview"
|
758 |
|
759 |
+
#: includes/i18n.php:222
|
760 |
msgid "Name and email address"
|
761 |
msgstr "Name and email address"
|
762 |
|
763 |
+
#: includes/i18n.php:223
|
764 |
msgid "Your Site Overview"
|
765 |
msgstr "Your Site Overview"
|
766 |
|
767 |
+
#: includes/i18n.php:224
|
768 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
769 |
msgstr "Site URL, WP version, PHP info, plugins & themes"
|
770 |
|
771 |
+
#: includes/i18n.php:225
|
772 |
msgid "Current Plugin Events"
|
773 |
msgstr "Current Plugin Events"
|
774 |
|
775 |
+
#: includes/i18n.php:226
|
776 |
msgid "Activation, deactivation and uninstall"
|
777 |
msgstr "Activation, deactivation and uninstall"
|
778 |
|
779 |
+
#: includes/i18n.php:227
|
780 |
msgid "Plugins & Themes"
|
781 |
msgstr "Plugins & Themes"
|
782 |
|
783 |
+
#: includes/i18n.php:228
|
784 |
msgid "Titles, versions and state."
|
785 |
msgstr "Titles, versions and state."
|
786 |
|
787 |
+
#: includes/i18n.php:229
|
788 |
msgid "Admin Notices"
|
789 |
msgstr "Admin Notices"
|
790 |
|
791 |
+
#: includes/i18n.php:230
|
792 |
msgid "Newsletter"
|
793 |
msgstr "Newsletter"
|
794 |
|
795 |
+
#: includes/i18n.php:231
|
796 |
msgid "Updates, announcements, marketing, no spam"
|
797 |
msgstr "Updates, announcements, marketing, no spam"
|
798 |
|
799 |
+
#: includes/i18n.php:232
|
800 |
msgid "Privacy Policy"
|
801 |
msgstr "Privacy Policy"
|
802 |
|
803 |
+
#: includes/i18n.php:233
|
804 |
msgid "Terms of Service"
|
805 |
msgstr "Terms of Service"
|
806 |
|
807 |
+
#: includes/i18n.php:234
|
808 |
msgctxt "as activating plugin"
|
809 |
msgid "Activating"
|
810 |
msgstr "Activating"
|
811 |
|
812 |
+
#: includes/i18n.php:235
|
813 |
msgctxt "as in the process of sending an email"
|
814 |
msgid "Sending email"
|
815 |
msgstr "Sending email"
|
816 |
|
817 |
+
#: includes/i18n.php:236
|
818 |
msgctxt "button label"
|
819 |
msgid "Allow & Continue"
|
820 |
msgstr "Allow & Continue"
|
821 |
|
822 |
+
#: includes/i18n.php:237
|
823 |
msgctxt "button label"
|
824 |
msgid "Agree & Activate License"
|
825 |
msgstr "Agree & Activate License"
|
826 |
|
827 |
+
#: includes/i18n.php:238
|
828 |
msgctxt "verb"
|
829 |
msgid "Skip"
|
830 |
msgstr "Skip"
|
831 |
|
832 |
+
#: includes/i18n.php:239
|
833 |
msgid "Click here to use the plugin anonymously"
|
834 |
msgstr "Click here to use the plugin anonymously"
|
835 |
|
836 |
+
#: includes/i18n.php:240
|
837 |
msgid "Re-send activation email"
|
838 |
msgstr "Re-send activation email"
|
839 |
|
840 |
+
#: includes/i18n.php:241
|
841 |
msgid "License key"
|
842 |
msgstr "License key"
|
843 |
|
844 |
+
#: includes/i18n.php:242
|
845 |
msgid "Send License Key"
|
846 |
msgstr "Send License Key"
|
847 |
|
848 |
+
#: includes/i18n.php:243
|
849 |
msgid "Sending license key"
|
850 |
msgstr "Sending license key"
|
851 |
|
852 |
+
#: includes/i18n.php:244
|
853 |
msgid "Have a license key?"
|
854 |
msgstr "Have a license key?"
|
855 |
|
856 |
+
#: includes/i18n.php:245
|
857 |
msgid "Don't have a license key?"
|
858 |
msgstr "Don't have a license key?"
|
859 |
|
860 |
+
#: includes/i18n.php:246
|
861 |
msgid "Can't find your license key?"
|
862 |
msgstr "Can't find your license key?"
|
863 |
|
864 |
+
#: includes/i18n.php:247
|
865 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
866 |
msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
|
867 |
|
868 |
+
#: includes/i18n.php:248
|
869 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
870 |
msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
871 |
|
872 |
+
#: includes/i18n.php:249
|
873 |
msgid "Opt In"
|
874 |
msgstr "Opt In"
|
875 |
|
876 |
+
#: includes/i18n.php:250
|
877 |
msgid "Opt Out"
|
878 |
msgstr "Opt Out"
|
879 |
|
880 |
+
#: includes/i18n.php:251
|
881 |
msgid "On second thought - I want to continue helping"
|
882 |
msgstr "On second thought - I want to continue helping"
|
883 |
|
884 |
+
#: includes/i18n.php:252
|
885 |
msgid "Opting out..."
|
886 |
msgstr "Opting out..."
|
887 |
|
888 |
+
#: includes/i18n.php:253
|
889 |
msgid "Opting in..."
|
890 |
msgstr "Opting in..."
|
891 |
|
892 |
+
#: includes/i18n.php:254
|
893 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
894 |
msgstr "We appreciate your help in making the %s better by letting us track some usage data."
|
895 |
|
896 |
+
#: includes/i18n.php:255
|
897 |
msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
898 |
msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
899 |
|
900 |
+
#: includes/i18n.php:256
|
901 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
902 |
msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
903 |
|
904 |
+
#: includes/i18n.php:260
|
905 |
msgid "Screenshots"
|
906 |
msgstr "Screenshots"
|
907 |
|
908 |
+
#: includes/i18n.php:261
|
909 |
msgid "Click to view full-size screenshot %d"
|
910 |
msgstr "Click to view full-size screenshot %d"
|
911 |
|
912 |
+
#: includes/i18n.php:265
|
913 |
msgid "Freemius Debug"
|
914 |
msgstr "Freemius Debug"
|
915 |
|
916 |
+
#: includes/i18n.php:266
|
917 |
msgctxt "as turned on"
|
918 |
msgid "On"
|
919 |
msgstr "On"
|
920 |
|
921 |
+
#: includes/i18n.php:267
|
922 |
msgctxt "as turned off"
|
923 |
msgid "Off"
|
924 |
msgstr "Off"
|
925 |
|
926 |
+
#: includes/i18n.php:268
|
927 |
msgctxt "as code debugging"
|
928 |
msgid "Debugging"
|
929 |
msgstr "Debugging"
|
930 |
|
931 |
+
#: includes/i18n.php:269
|
932 |
msgid "Freemius State"
|
933 |
msgstr "Freemius State"
|
934 |
|
935 |
+
#: includes/i18n.php:270
|
936 |
msgctxt "as connection was successful"
|
937 |
msgid "Connected"
|
938 |
msgstr "Connected"
|
939 |
|
940 |
+
#: includes/i18n.php:271
|
941 |
msgctxt "as connection blocked"
|
942 |
msgid "Blocked"
|
943 |
msgstr "Blocked"
|
944 |
|
945 |
+
#: includes/i18n.php:272
|
946 |
msgctxt "as application program interface"
|
947 |
msgid "API"
|
948 |
msgstr "API"
|
949 |
|
950 |
+
#: includes/i18n.php:273
|
951 |
msgctxt "as software development kit versions"
|
952 |
msgid "SDK"
|
953 |
msgstr "SDK"
|
954 |
|
955 |
+
#: includes/i18n.php:274
|
956 |
msgctxt "as software development kit versions"
|
957 |
msgid "SDK Versions"
|
958 |
msgstr "SDK Versions"
|
959 |
|
960 |
+
#: includes/i18n.php:275
|
961 |
msgctxt "as plugin folder path"
|
962 |
msgid "Plugin Path"
|
963 |
msgstr "Plugin Path"
|
964 |
|
965 |
+
#: includes/i18n.php:276
|
966 |
msgctxt "as sdk path"
|
967 |
msgid "SDK Path"
|
968 |
msgstr "SDK Path"
|
969 |
|
970 |
+
#: includes/i18n.php:277
|
971 |
msgid "Add Ons of Plugin %s"
|
972 |
msgstr "Add Ons of Plugin %s"
|
973 |
|
974 |
+
#: includes/i18n.php:278
|
975 |
msgid "Are you sure you want to delete all Freemius data?"
|
976 |
msgstr "Are you sure you want to delete all Freemius data?"
|
977 |
|
978 |
+
#: includes/i18n.php:279
|
979 |
msgid "Actions"
|
980 |
msgstr "Actions"
|
981 |
|
982 |
+
#: includes/i18n.php:280
|
983 |
msgid "Delete All Accounts"
|
984 |
msgstr "Delete All Accounts"
|
985 |
|
986 |
+
#: includes/i18n.php:281
|
987 |
msgid "Start Fresh"
|
988 |
msgstr "Start Fresh"
|
989 |
|
990 |
+
#: includes/i18n.php:282
|
991 |
msgid "Clear API Cache"
|
992 |
msgstr "Clear API Cache"
|
993 |
|
994 |
+
#: includes/i18n.php:283
|
995 |
msgid "Sync Data From Server"
|
996 |
msgstr "Sync Data From Server"
|
997 |
|
998 |
+
#: includes/i18n.php:284
|
999 |
msgid "Scheduled Crons"
|
1000 |
msgstr "Scheduled Crons"
|
1001 |
|
1002 |
+
#: includes/i18n.php:285
|
1003 |
+
msgid "Cron Type"
|
1004 |
+
msgstr "Cron Type"
|
1005 |
+
|
1006 |
+
#: includes/i18n.php:286
|
1007 |
msgid "Plugins & Themes Sync"
|
1008 |
msgstr "Plugins & Themes Sync"
|
1009 |
|
1010 |
+
#: includes/i18n.php:287
|
1011 |
+
msgid "Licenses"
|
1012 |
+
msgstr "Licenses"
|
1013 |
+
|
1014 |
+
#: includes/i18n.php:288
|
1015 |
+
msgid "Debug Log"
|
1016 |
+
msgstr "Debug Log"
|
1017 |
+
|
1018 |
+
#: includes/i18n.php:289
|
1019 |
+
msgid "All"
|
1020 |
+
msgstr "All"
|
1021 |
+
|
1022 |
+
#: includes/i18n.php:290
|
1023 |
+
msgid "File"
|
1024 |
+
msgstr "File"
|
1025 |
+
|
1026 |
+
#: includes/i18n.php:291
|
1027 |
+
msgid "Function"
|
1028 |
+
msgstr "Function"
|
1029 |
+
|
1030 |
+
#: includes/i18n.php:292
|
1031 |
+
msgid "Process ID"
|
1032 |
+
msgstr "Process ID"
|
1033 |
+
|
1034 |
+
#: includes/i18n.php:293
|
1035 |
+
msgid "Logger"
|
1036 |
+
msgstr "Logger"
|
1037 |
+
|
1038 |
+
#: includes/i18n.php:294
|
1039 |
+
msgid "Message"
|
1040 |
+
msgstr "Message"
|
1041 |
+
|
1042 |
+
#: includes/i18n.php:295
|
1043 |
+
msgid "Download"
|
1044 |
+
msgstr "Download"
|
1045 |
+
|
1046 |
+
#: includes/i18n.php:296
|
1047 |
+
msgid "Filter"
|
1048 |
+
msgstr "Filter"
|
1049 |
+
|
1050 |
+
#: includes/i18n.php:297
|
1051 |
+
msgid "Type"
|
1052 |
+
msgstr "Type"
|
1053 |
+
|
1054 |
+
#: includes/i18n.php:298
|
1055 |
+
msgid "All Types"
|
1056 |
+
msgstr "All Types"
|
1057 |
+
|
1058 |
+
#: includes/i18n.php:299
|
1059 |
+
msgid "All Requests"
|
1060 |
+
msgstr "All Requests"
|
1061 |
+
|
1062 |
+
#: includes/i18n.php:303
|
1063 |
msgctxt "as congratulations"
|
1064 |
msgid "Congrats"
|
1065 |
msgstr "Congrats"
|
1066 |
|
1067 |
+
#: includes/i18n.php:304
|
1068 |
msgctxt "exclamation"
|
1069 |
msgid "Oops"
|
1070 |
msgstr "Oops"
|
1071 |
|
1072 |
+
#: includes/i18n.php:305
|
1073 |
msgctxt "interjection expressing joy or exuberance"
|
1074 |
msgid "Yee-haw"
|
1075 |
msgstr "Yee-haw"
|
1076 |
|
1077 |
+
#: includes/i18n.php:306
|
1078 |
msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
|
1079 |
msgid "W00t"
|
1080 |
msgstr "W00t"
|
1081 |
|
1082 |
+
#: includes/i18n.php:308
|
1083 |
msgctxt "a positive response"
|
1084 |
msgid "Right on"
|
1085 |
msgstr "Right on"
|
1086 |
|
1087 |
+
#: includes/i18n.php:309
|
1088 |
msgctxt "something somebody says when they are thinking about what you have just said. "
|
1089 |
msgid "Hmm"
|
1090 |
msgstr "Hmm"
|
1091 |
|
1092 |
+
#: includes/i18n.php:311
|
1093 |
msgid "O.K"
|
1094 |
msgstr "O.K"
|
1095 |
|
1096 |
+
#: includes/i18n.php:312
|
1097 |
msgctxt "exclamation"
|
1098 |
msgid "Hey"
|
1099 |
msgstr "Hey"
|
1100 |
|
1101 |
+
#: includes/i18n.php:313
|
1102 |
msgctxt "advance notice of something that will need attention."
|
1103 |
msgid "Heads up"
|
1104 |
msgstr "Heads up"
|
1105 |
|
1106 |
+
#: includes/i18n.php:318
|
1107 |
msgid "Seems like you got the latest release."
|
1108 |
msgstr "Seems like you got the latest release."
|
1109 |
|
1110 |
+
#: includes/i18n.php:319
|
1111 |
msgid "You are all good!"
|
1112 |
msgstr "You are all good!"
|
1113 |
|
1114 |
+
#: includes/i18n.php:320
|
1115 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1116 |
msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1117 |
|
1118 |
+
#: includes/i18n.php:321
|
1119 |
msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1120 |
msgstr "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1121 |
|
1122 |
+
#: includes/i18n.php:322
|
1123 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1124 |
msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1125 |
|
1126 |
+
#: includes/i18n.php:323
|
1127 |
msgid "Your name was successfully updated."
|
1128 |
msgstr "Your name was successfully updated."
|
1129 |
|
1130 |
+
#: includes/i18n.php:324
|
1131 |
msgid "You have successfully updated your %s."
|
1132 |
msgstr "You have successfully updated your %s."
|
1133 |
|
1134 |
+
#: includes/i18n.php:325
|
1135 |
msgid "Please provide your full name."
|
1136 |
msgstr "Please provide your full name."
|
1137 |
|
1138 |
+
#: includes/i18n.php:326
|
1139 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1140 |
msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1141 |
|
1142 |
+
#: includes/i18n.php:327
|
1143 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1144 |
msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1145 |
|
1146 |
+
#: includes/i18n.php:328
|
1147 |
msgid "No credit card required"
|
1148 |
msgstr "No credit card required"
|
1149 |
|
1150 |
+
#: includes/i18n.php:329
|
1151 |
msgid "Premium plugin version was successfully activated."
|
1152 |
msgstr "Premium plugin version was successfully activated."
|
1153 |
|
1154 |
+
#: includes/i18n.php:330
|
1155 |
msgid "The upgrade of %s was successfully completed."
|
1156 |
msgstr "The upgrade of %s was successfully completed."
|
1157 |
|
1158 |
+
#: includes/i18n.php:331
|
1159 |
msgid "Your account was successfully activated with the %s plan."
|
1160 |
msgstr "Your account was successfully activated with the %s plan."
|
1161 |
|
1162 |
+
#: includes/i18n.php:332
|
1163 |
msgid "Download the latest %s version now"
|
1164 |
msgstr "Download the latest %s version now"
|
1165 |
|
1166 |
+
#: includes/i18n.php:333
|
1167 |
msgid "Please follow these steps to complete the upgrade"
|
1168 |
msgstr "Please follow these steps to complete the upgrade"
|
1169 |
|
1170 |
+
#: includes/i18n.php:334
|
1171 |
msgid "Download the latest %s version"
|
1172 |
msgstr "Download the latest %s version"
|
1173 |
|
1174 |
+
#: includes/i18n.php:335
|
1175 |
msgid "Download the latest version"
|
1176 |
msgstr "Download the latest version"
|
1177 |
|
1178 |
+
#: includes/i18n.php:336
|
1179 |
msgid "Deactivate the free version"
|
1180 |
msgstr "Deactivate the free version"
|
1181 |
|
1182 |
+
#: includes/i18n.php:337
|
1183 |
msgid "Upload and activate the downloaded version"
|
1184 |
msgstr "Upload and activate the downloaded version"
|
1185 |
|
1186 |
+
#: includes/i18n.php:338
|
1187 |
msgid "How to upload and activate?"
|
1188 |
msgstr "How to upload and activate?"
|
1189 |
|
1190 |
+
#: includes/i18n.php:339
|
1191 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1192 |
msgid "%s Add-on was successfully purchased."
|
1193 |
msgstr "%s Add-on was successfully purchased."
|
1194 |
|
1195 |
+
#: includes/i18n.php:341
|
1196 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1197 |
msgstr "Your %s Add-on plan was successfully upgraded."
|
1198 |
|
1199 |
+
#: includes/i18n.php:342
|
1200 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1201 |
msgstr "Your email has been successfully verified - you are AWESOME!"
|
1202 |
|
1203 |
+
#: includes/i18n.php:343
|
1204 |
msgid "Your plan was successfully upgraded."
|
1205 |
msgstr "Your plan was successfully upgraded."
|
1206 |
|
1207 |
+
#: includes/i18n.php:344
|
1208 |
msgid "Your plan was successfully changed to %s."
|
1209 |
msgstr "Your plan was successfully changed to %s."
|
1210 |
|
1211 |
+
#: includes/i18n.php:345
|
1212 |
msgid "Your license has expired. You can still continue using the free plugin forever."
|
1213 |
msgstr "Your license has expired. You can still continue using the free plugin forever."
|
1214 |
|
1215 |
+
#: includes/i18n.php:346
|
1216 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1217 |
msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1218 |
|
1219 |
+
#: includes/i18n.php:347
|
1220 |
msgid "Your trial has been successfully started."
|
1221 |
msgstr "Your trial has been successfully started."
|
1222 |
|
1223 |
+
#: includes/i18n.php:348
|
1224 |
msgid "Your license was successfully activated."
|
1225 |
msgstr "Your license was successfully activated."
|
1226 |
|
1227 |
+
#: includes/i18n.php:349
|
1228 |
msgid "It looks like your site currently doesn't have an active license."
|
1229 |
msgstr "It looks like your site currently doesn't have an active license."
|
1230 |
|
1231 |
+
#: includes/i18n.php:350
|
1232 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1233 |
msgstr "Your license was successfully deactivated, you are back to the %s plan."
|
1234 |
|
1235 |
+
#: includes/i18n.php:351
|
1236 |
msgid "It looks like the license deactivation failed."
|
1237 |
msgstr "It looks like the license deactivation failed."
|
1238 |
|
1239 |
+
#: includes/i18n.php:352
|
1240 |
msgid "It looks like the license could not be activated."
|
1241 |
msgstr "It looks like the license could not be activated."
|
1242 |
|
1243 |
+
#: includes/i18n.php:353
|
1244 |
msgid "Error received from the server:"
|
1245 |
msgstr "Error received from the server:"
|
1246 |
|
1247 |
+
#: includes/i18n.php:354
|
1248 |
msgid "Your trial has expired. You can still continue using all our free features."
|
1249 |
msgstr "Your trial has expired. You can still continue using all our free features."
|
1250 |
|
1251 |
+
#: includes/i18n.php:355
|
1252 |
msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1253 |
msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1254 |
|
1255 |
+
#: includes/i18n.php:356
|
1256 |
msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1257 |
msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1258 |
|
1259 |
+
#: includes/i18n.php:357
|
1260 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1261 |
msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1262 |
|
1263 |
+
#: includes/i18n.php:358
|
1264 |
msgid "Your %s free trial was successfully cancelled."
|
1265 |
msgstr "Your %s free trial was successfully cancelled."
|
1266 |
|
1267 |
+
#: includes/i18n.php:359
|
1268 |
msgctxt "%s - numeric version number"
|
1269 |
msgid "Version %s was released."
|
1270 |
msgstr "Version %s was released."
|
1271 |
|
1272 |
+
#: includes/i18n.php:360
|
1273 |
msgid "Please download %s."
|
1274 |
msgstr "Please download %s."
|
1275 |
|
1276 |
+
#: includes/i18n.php:361
|
1277 |
msgctxt "%s - plan name, as the latest professional version here"
|
1278 |
msgid "the latest %s version here"
|
1279 |
msgstr "the latest %s version here"
|
1280 |
|
1281 |
+
#: includes/i18n.php:363
|
1282 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1283 |
msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1284 |
|
1285 |
+
#: includes/i18n.php:364
|
1286 |
msgctxt "call to action"
|
1287 |
msgid "Start free trial"
|
1288 |
msgstr "Start free trial"
|
1289 |
|
1290 |
+
#: includes/i18n.php:365
|
1291 |
msgid "Starting trial"
|
1292 |
msgstr "Starting trial"
|
1293 |
|
1294 |
+
#: includes/i18n.php:366
|
1295 |
msgid "Please wait"
|
1296 |
msgstr "Please wait"
|
1297 |
|
1298 |
+
#: includes/i18n.php:367
|
1299 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1300 |
msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1301 |
|
1302 |
+
#: includes/i18n.php:368
|
1303 |
msgid "You already utilized a trial before."
|
1304 |
msgstr "You already utilized a trial before."
|
1305 |
|
1306 |
+
#: includes/i18n.php:369
|
1307 |
msgid "You are already running the plugin in a trial mode."
|
1308 |
msgstr "You are already running the plugin in a trial mode."
|
1309 |
|
1310 |
+
#: includes/i18n.php:370
|
1311 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1312 |
msgstr "Plan %s do not exist, therefore, can't start a trial."
|
1313 |
|
1314 |
+
#: includes/i18n.php:371
|
1315 |
msgid "Plan %s does not support a trial period."
|
1316 |
msgstr "Plan %s does not support a trial period."
|
1317 |
|
1318 |
+
#: includes/i18n.php:372
|
1319 |
msgid "None of the plugin's plans supports a trial period."
|
1320 |
msgstr "None of the plugin's plans supports a trial period."
|
1321 |
|
1322 |
+
#: includes/i18n.php:373
|
1323 |
msgid "Unexpected API error. Please contact the plugin's author with the following error."
|
1324 |
msgstr "Unexpected API error. Please contact the plugin's author with the following error."
|
1325 |
|
1326 |
+
#: includes/i18n.php:374
|
1327 |
msgid "No commitment for %s days - cancel anytime!"
|
1328 |
msgstr "No commitment for %s days - cancel anytime!"
|
1329 |
|
1330 |
+
#: includes/i18n.php:375
|
1331 |
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."
|
1332 |
msgstr "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."
|
1333 |
|
1334 |
+
#: includes/i18n.php:376
|
1335 |
msgid "Couldn't activate %s."
|
1336 |
msgstr "Couldn't activate %s."
|
1337 |
|
1338 |
+
#: includes/i18n.php:377
|
1339 |
msgid "Please contact us with the following message:"
|
1340 |
msgstr "Please contact us with the following message:"
|
1341 |
|
1342 |
+
#: includes/i18n.php:378
|
1343 |
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."
|
1344 |
msgstr "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."
|
1345 |
|
1346 |
+
#: includes/i18n.php:379
|
1347 |
msgid "Please contact us here"
|
1348 |
msgstr "Please contact us here"
|
1349 |
|
1350 |
+
#: includes/i18n.php:380
|
1351 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1352 |
msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1353 |
|
1354 |
+
#: includes/i18n.php:383
|
1355 |
msgid "From unknown reason, the API connectivity test failed."
|
1356 |
msgstr "From unknown reason, the API connectivity test failed."
|
1357 |
|
1358 |
+
#: includes/i18n.php:384
|
1359 |
msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1360 |
msgstr "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1361 |
|
1362 |
+
#: includes/i18n.php:385
|
1363 |
msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1364 |
msgstr "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1365 |
|
1366 |
+
#: includes/i18n.php:386
|
1367 |
msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1368 |
msgstr "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1369 |
|
1370 |
+
#: includes/i18n.php:387
|
1371 |
msgctxt "as pluginX requires an access to our API"
|
1372 |
msgid "%s requires an access to our API."
|
1373 |
msgstr "%s requires an access to our API."
|
1374 |
|
1375 |
+
#: includes/i18n.php:389
|
1376 |
msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1377 |
msgstr "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1378 |
|
1379 |
+
#: includes/i18n.php:390
|
1380 |
msgid "I don't know what is Squid or ACL, help me!"
|
1381 |
msgstr "I don't know what is Squid or ACL, help me!"
|
1382 |
|
1383 |
+
#: includes/i18n.php:391, includes/i18n.php:395
|
1384 |
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."
|
1385 |
msgstr "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."
|
1386 |
|
1387 |
+
#: includes/i18n.php:392
|
1388 |
msgid "I'm a system administrator"
|
1389 |
msgstr "I'm a system administrator"
|
1390 |
|
1391 |
+
#: includes/i18n.php:393
|
1392 |
+
msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
|
1393 |
+
msgstr "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
|
1394 |
|
1395 |
+
#: includes/i18n.php:394
|
1396 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1397 |
msgstr "I don't know what is cURL or how to install it, help me!"
|
1398 |
|
1399 |
+
#: includes/i18n.php:396
|
1400 |
msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1401 |
msgstr "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1402 |
|
1403 |
+
#: includes/i18n.php:397
|
1404 |
msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1405 |
msgstr "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1406 |
|
1407 |
+
#: includes/i18n.php:398
|
1408 |
msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1409 |
msgstr "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1410 |
|
1411 |
+
#: includes/i18n.php:399
|
1412 |
msgid "Yes - I'm giving you a chance to fix it"
|
1413 |
msgstr "Yes - I'm giving you a chance to fix it"
|
1414 |
|
1415 |
+
#: includes/i18n.php:400
|
1416 |
msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1417 |
msgstr "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1418 |
|
1419 |
+
#: includes/i18n.php:401
|
1420 |
msgid "Let's try your previous version"
|
1421 |
msgstr "Let's try your previous version"
|
1422 |
|
1423 |
+
#: includes/i18n.php:402
|
1424 |
msgid "Uninstall this version and install the previous one."
|
1425 |
msgstr "Uninstall this version and install the previous one."
|
1426 |
|
1427 |
+
#: includes/i18n.php:403
|
1428 |
msgid "That's exhausting, please deactivate"
|
1429 |
msgstr "That's exhausting, please deactivate"
|
1430 |
|
1431 |
+
#: includes/i18n.php:404
|
1432 |
msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1433 |
msgstr "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1434 |
|
1435 |
+
#: includes/i18n.php:405
|
1436 |
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."
|
1437 |
msgstr "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."
|
1438 |
|
1439 |
+
#: includes/i18n.php:406
|
1440 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1441 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1442 |
msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1443 |
|
1444 |
+
#: includes/i18n.php:408
|
1445 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1446 |
msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1447 |
|
1448 |
+
#: includes/i18n.php:411
|
1449 |
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."
|
1450 |
msgstr "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."
|
1451 |
|
1452 |
+
#: includes/i18n.php:412
|
1453 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1454 |
msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1455 |
|
1456 |
+
#: includes/i18n.php:413
|
1457 |
msgid "%s is the new owner of the account."
|
1458 |
msgstr "%s is the new owner of the account."
|
1459 |
|
1460 |
+
#: includes/i18n.php:415
|
1461 |
msgctxt "addonX cannot run without pluginY"
|
1462 |
msgid "%s cannot run without %s."
|
1463 |
msgstr "%s cannot run without %s."
|
1464 |
|
1465 |
+
#: includes/i18n.php:417
|
1466 |
msgctxt "addonX cannot run..."
|
1467 |
msgid "%s cannot run without the plugin."
|
1468 |
msgstr "%s cannot run without the plugin."
|
1469 |
|
1470 |
+
#: includes/i18n.php:418
|
1471 |
msgctxt "pluginX activation was successfully..."
|
1472 |
msgid "%s activation was successfully completed."
|
1473 |
msgstr "%s activation was successfully completed."
|
1474 |
|
1475 |
+
#: includes/i18n.php:420
|
1476 |
msgctxt "Plugin installer section title"
|
1477 |
msgid "Features & Pricing"
|
1478 |
msgstr "Features & Pricing"
|
1479 |
|
1480 |
+
#: includes/i18n.php:421
|
1481 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1482 |
msgstr "Add-on must be deployed to WordPress.org or Freemius."
|
1483 |
|
1484 |
+
#: includes/i18n.php:422
|
1485 |
msgid "Paid add-on must be deployed to Freemius."
|
1486 |
msgstr "Paid add-on must be deployed to Freemius."
|
1487 |
|
1488 |
+
#: includes/i18n.php:426
|
1489 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1490 |
msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1491 |
|
1492 |
+
#: includes/i18n.php:427
|
1493 |
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."
|
1494 |
msgstr "%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."
|
1495 |
|
1496 |
+
#: includes/i18n.php:432
|
1497 |
msgctxt "as every month"
|
1498 |
msgid "Monthly"
|
1499 |
msgstr "Monthly"
|
1500 |
|
1501 |
+
#: includes/i18n.php:433
|
1502 |
msgctxt "as monthly period"
|
1503 |
msgid "mo"
|
1504 |
msgstr "mo"
|
1505 |
|
1506 |
+
#: includes/i18n.php:434
|
1507 |
msgctxt "as once a year"
|
1508 |
msgid "Annual"
|
1509 |
msgstr "Annual"
|
1510 |
|
1511 |
+
#: includes/i18n.php:435
|
1512 |
msgctxt "as once a year"
|
1513 |
msgid "Annually"
|
1514 |
msgstr "Annually"
|
1515 |
|
1516 |
+
#: includes/i18n.php:436
|
1517 |
msgctxt "as once a year"
|
1518 |
msgid "Once"
|
1519 |
msgstr "Once"
|
1520 |
|
1521 |
+
#: includes/i18n.php:437
|
1522 |
msgctxt "as annual period"
|
1523 |
msgid "year"
|
1524 |
msgstr "year"
|
1525 |
|
1526 |
+
#: includes/i18n.php:438
|
1527 |
msgid "Lifetime"
|
1528 |
msgstr "Lifetime"
|
1529 |
|
1530 |
+
#: includes/i18n.php:439
|
1531 |
msgctxt "e.g. the best product"
|
1532 |
msgid "Best"
|
1533 |
msgstr "Best"
|
1534 |
|
1535 |
+
#: includes/i18n.php:440
|
1536 |
msgctxt "e.g. billed monthly"
|
1537 |
msgid "Billed %s"
|
1538 |
msgstr "Billed %s"
|
1539 |
|
1540 |
+
#: includes/i18n.php:441
|
1541 |
msgctxt "as a discount of $5 or 10%"
|
1542 |
msgid "Save %s"
|
1543 |
msgstr "Save %s"
|
1544 |
|
1545 |
+
#: includes/i18n.php:443
|
1546 |
msgid "View details"
|
1547 |
msgstr "View details"
|
1548 |
|
1549 |
+
#: includes/i18n.php:447
|
1550 |
msgctxt "button label"
|
1551 |
msgid "Approve & Start Trial"
|
1552 |
msgstr "Approve & Start Trial"
|
1553 |
|
1554 |
+
#: includes/i18n.php:449
|
1555 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1556 |
msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1557 |
|
1558 |
+
#: includes/i18n.php:451
|
1559 |
msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1560 |
msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1561 |
|
1562 |
+
#: includes/i18n.php:457
|
1563 |
msgid "Business name"
|
1564 |
msgstr "Business name"
|
1565 |
|
1566 |
+
#: includes/i18n.php:458
|
1567 |
msgid "Tax / VAT ID"
|
1568 |
msgstr "Tax / VAT ID"
|
1569 |
|
1570 |
+
#: includes/i18n.php:459
|
1571 |
msgid "Address Line %d"
|
1572 |
msgstr "Address Line %d"
|
1573 |
|
1574 |
+
#: includes/i18n.php:460
|
1575 |
msgid "Country"
|
1576 |
msgstr "Country"
|
1577 |
|
1578 |
+
#: includes/i18n.php:461
|
1579 |
msgid "Select Country"
|
1580 |
msgstr "Select Country"
|
1581 |
|
1582 |
+
#: includes/i18n.php:462
|
1583 |
msgid "City"
|
1584 |
msgstr "City"
|
1585 |
|
1586 |
+
#: includes/i18n.php:463
|
1587 |
msgid "Town"
|
1588 |
msgstr "Town"
|
1589 |
|
1590 |
+
#: includes/i18n.php:464
|
1591 |
msgid "State"
|
1592 |
msgstr "State"
|
1593 |
|
1594 |
+
#: includes/i18n.php:465
|
1595 |
msgid "Province"
|
1596 |
msgstr "Province"
|
1597 |
|
1598 |
+
#: includes/i18n.php:466
|
1599 |
msgid "ZIP / Postal Code"
|
1600 |
msgstr "ZIP / Postal Code"
|
1601 |
+
|
1602 |
+
#: includes/i18n.php:481
|
1603 |
+
msgctxt "Plugin installer section title"
|
1604 |
+
msgid "Description"
|
1605 |
+
msgstr "Description"
|
1606 |
+
|
1607 |
+
#: includes/i18n.php:482
|
1608 |
+
msgctxt "Plugin installer section title"
|
1609 |
+
msgid "Installation"
|
1610 |
+
msgstr "Installation"
|
1611 |
+
|
1612 |
+
#: includes/i18n.php:483
|
1613 |
+
msgctxt "Plugin installer section title"
|
1614 |
+
msgid "FAQ"
|
1615 |
+
msgstr "FAQ"
|
1616 |
+
|
1617 |
+
#: includes/i18n.php:484
|
1618 |
+
msgctxt "Plugin installer section title"
|
1619 |
+
msgid "Changelog"
|
1620 |
+
msgstr "Changelog"
|
1621 |
+
|
1622 |
+
#: includes/i18n.php:485
|
1623 |
+
msgctxt "Plugin installer section title"
|
1624 |
+
msgid "Reviews"
|
1625 |
+
msgstr "Reviews"
|
1626 |
+
|
1627 |
+
#: includes/i18n.php:486
|
1628 |
+
msgctxt "Plugin installer section title"
|
1629 |
+
msgid "Other Notes"
|
1630 |
+
msgstr "Other Notes"
|
1631 |
+
|
1632 |
+
#: includes/i18n.php:488
|
1633 |
+
msgid "%s star"
|
1634 |
+
msgstr "%s star"
|
1635 |
+
|
1636 |
+
#: includes/i18n.php:490
|
1637 |
+
msgid "%s stars"
|
1638 |
+
msgstr "%s stars"
|
1639 |
+
|
1640 |
+
#: includes/i18n.php:492
|
1641 |
+
msgid "%s rating"
|
1642 |
+
msgstr "%s rating"
|
1643 |
+
|
1644 |
+
#: includes/i18n.php:494
|
1645 |
+
msgid "%s ratings"
|
1646 |
+
msgstr "%s ratings"
|
1647 |
+
|
1648 |
+
#: includes/i18n.php:496
|
1649 |
+
msgid "%s time"
|
1650 |
+
msgstr "%s time"
|
1651 |
+
|
1652 |
+
#: includes/i18n.php:498
|
1653 |
+
msgid "%s times"
|
1654 |
+
msgstr "%s times"
|
1655 |
+
|
1656 |
+
#: includes/i18n.php:500
|
1657 |
+
msgid "Click to see reviews that provided a rating of %s"
|
1658 |
+
msgstr "Click to see reviews that provided a rating of %s"
|
1659 |
+
|
1660 |
+
#: includes/i18n.php:501
|
1661 |
+
msgid "Last Updated"
|
1662 |
+
msgstr "Last Updated"
|
1663 |
+
|
1664 |
+
#: includes/i18n.php:502
|
1665 |
+
msgid "Requires WordPress Version:"
|
1666 |
+
msgstr "Requires WordPress Version:"
|
1667 |
+
|
1668 |
+
#: includes/i18n.php:503
|
1669 |
+
msgctxt "as the plugin author"
|
1670 |
+
msgid "Author:"
|
1671 |
+
msgstr "Author:"
|
1672 |
+
|
1673 |
+
#: includes/i18n.php:504
|
1674 |
+
msgid "Compatible up to:"
|
1675 |
+
msgstr "Compatible up to:"
|
1676 |
+
|
1677 |
+
#: includes/i18n.php:505
|
1678 |
+
msgid "Downloaded:"
|
1679 |
+
msgstr "Downloaded:"
|
1680 |
+
|
1681 |
+
#: includes/i18n.php:506
|
1682 |
+
msgid "WordPress.org Plugin Page"
|
1683 |
+
msgstr "WordPress.org Plugin Page"
|
1684 |
+
|
1685 |
+
#: includes/i18n.php:507
|
1686 |
+
msgid "Plugin Homepage"
|
1687 |
+
msgstr "Plugin Homepage"
|
1688 |
+
|
1689 |
+
#: includes/i18n.php:508
|
1690 |
+
msgid "Donate to this plugin"
|
1691 |
+
msgstr "Donate to this plugin"
|
1692 |
+
|
1693 |
+
#: includes/i18n.php:509
|
1694 |
+
msgid "Average Rating"
|
1695 |
+
msgstr "Average Rating"
|
1696 |
+
|
1697 |
+
#: includes/i18n.php:510
|
1698 |
+
msgid "based on %s"
|
1699 |
+
msgstr "based on %s"
|
1700 |
+
|
1701 |
+
#: includes/i18n.php:511
|
1702 |
+
msgid "Warning:"
|
1703 |
+
msgstr "Warning:"
|
1704 |
+
|
1705 |
+
#: includes/i18n.php:512
|
1706 |
+
msgid "Contributors"
|
1707 |
+
msgstr "Contributors"
|
1708 |
+
|
1709 |
+
#: includes/i18n.php:513
|
1710 |
+
msgid "Plugin Install"
|
1711 |
+
msgstr "Plugin Install"
|
1712 |
+
|
1713 |
+
#: includes/i18n.php:514
|
1714 |
+
msgid "This plugin has not been tested with your current version of WordPress."
|
1715 |
+
msgstr "This plugin has not been tested with your current version of WordPress."
|
1716 |
+
|
1717 |
+
#: includes/i18n.php:515
|
1718 |
+
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1719 |
+
msgstr "This plugin has not been marked as compatible with your version of WordPress."
|
1720 |
+
|
1721 |
+
#: includes/i18n.php:516
|
1722 |
+
msgid "Newer Version (%s) Installed"
|
1723 |
+
msgstr "Newer Version (%s) Installed"
|
1724 |
+
|
1725 |
+
#: includes/i18n.php:517
|
1726 |
+
msgid "Latest Version Installed"
|
1727 |
+
msgstr "Latest Version Installed"
|
includes/pum-sdk/freemius/languages/freemius-it_IT.mo
CHANGED
Binary file
|
includes/pum-sdk/freemius/languages/freemius-it_IT.po
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
# Translators:
|
4 |
# Pelly Benassi <plasmax@gmail.com>, 2016
|
5 |
-
# Daniele Scasciafratte Mte90 <mte90net@gmail.com>, 2015
|
6 |
-
# Pelly Benassi <plasmax@gmail.com>, 2016
|
7 |
# Vova Feldman <vova@freemius.com>, 2015-2016
|
8 |
msgid ""
|
9 |
msgstr ""
|
10 |
"Project-Id-Version: WordPress SDK\n"
|
11 |
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
12 |
-
"
|
13 |
-
"
|
|
|
14 |
"Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
|
15 |
"MIME-Version: 1.0\n"
|
16 |
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -18,543 +19,559 @@ msgstr ""
|
|
18 |
"Language: it_IT\n"
|
19 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
20 |
"X-Poedit-Basepath: ..\n"
|
21 |
-
"X-Poedit-KeywordsList:
|
22 |
"X-Poedit-SearchPath-0: .\n"
|
23 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
24 |
"X-Poedit-SourceCharset: UTF-8\n"
|
25 |
|
26 |
-
#: includes/i18n.
|
27 |
-
msgid "Yes - I'm in!"
|
28 |
-
msgstr "Sì, ci sto!"
|
29 |
-
|
30 |
-
#: includes/i18n.php43, includes/i18n.php:57
|
31 |
-
msgid "Not today"
|
32 |
-
msgstr "Non oggi"
|
33 |
-
|
34 |
-
#: includes/i18n.php:69
|
35 |
msgid "Account"
|
36 |
msgstr "Account"
|
37 |
|
38 |
-
#: includes/i18n.php:
|
39 |
msgid "Add On"
|
40 |
msgstr "Add-on"
|
41 |
|
42 |
-
#: includes/i18n.php:
|
43 |
msgid "Contact Us"
|
44 |
msgstr "Contattaci"
|
45 |
|
46 |
-
#: includes/i18n.php:
|
47 |
msgid "Contact Support"
|
48 |
msgstr "Contatta il supporto"
|
49 |
|
50 |
-
#: includes/i18n.php:
|
51 |
msgid "Change Ownership"
|
52 |
msgstr "Cambia Proprietario"
|
53 |
|
54 |
-
#: includes/i18n.php:
|
55 |
msgid "Support"
|
56 |
msgstr "Supporto"
|
57 |
|
58 |
-
#: includes/i18n.php:
|
59 |
msgid "Support Forum"
|
60 |
msgstr "Forum di supporto"
|
61 |
|
62 |
-
#: includes/i18n.php:
|
63 |
msgid "Add Ons"
|
64 |
msgstr "Add-on"
|
65 |
|
66 |
-
#: includes/i18n.php:
|
67 |
msgctxt "verb"
|
68 |
msgid "Upgrade"
|
69 |
msgstr "Aggiornamento"
|
70 |
|
71 |
-
#: includes/i18n.php:
|
72 |
msgid "Awesome"
|
73 |
msgstr "Fantastico"
|
74 |
|
75 |
-
#: includes/i18n.php:
|
76 |
msgctxt "noun"
|
77 |
msgid "Pricing"
|
78 |
msgstr "Prezzi"
|
79 |
|
80 |
-
#: includes/i18n.php:
|
81 |
msgctxt "noun"
|
82 |
msgid "Price"
|
83 |
msgstr "Prezzo"
|
84 |
|
85 |
-
#: includes/i18n.php:
|
86 |
msgid "Unlimited Updates"
|
87 |
msgstr "Aggiornamenti Illimitati"
|
88 |
|
89 |
-
#: includes/i18n.php:
|
90 |
msgctxt "verb"
|
91 |
msgid "Downgrade"
|
92 |
msgstr "Downgrade"
|
93 |
|
94 |
-
#: includes/i18n.php:
|
95 |
msgid "Cancel Trial"
|
96 |
msgstr "Annulla prova gratuita"
|
97 |
|
98 |
-
#: includes/i18n.php:
|
99 |
msgid "Free Trial"
|
100 |
msgstr "Prova gratuita"
|
101 |
|
102 |
-
#: includes/i18n.php:
|
103 |
msgid "Start my free %s"
|
104 |
msgstr "Inizia la mia %s"
|
105 |
|
106 |
-
#: includes/i18n.php:
|
107 |
msgid "No commitment for %s - cancel anytime"
|
108 |
msgstr "Nessun impegno con %s - cancella quando vuoi"
|
109 |
|
110 |
-
#: includes/i18n.php:
|
111 |
msgid "After your free %s, pay as little as %s"
|
112 |
msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
|
113 |
|
114 |
-
#: includes/i18n.php:
|
115 |
msgid "Details"
|
116 |
msgstr "Dettagli"
|
117 |
|
118 |
-
#: includes/i18n.php:
|
119 |
msgid "Account Details"
|
120 |
msgstr "Dettagli dell'account"
|
121 |
|
122 |
-
#: includes/i18n.php:
|
123 |
msgctxt "verb"
|
124 |
msgid "Delete"
|
125 |
msgstr "Elimina"
|
126 |
|
127 |
-
#: includes/i18n.php:
|
128 |
msgctxt "verb"
|
129 |
msgid "Show"
|
130 |
msgstr "Mostra"
|
131 |
|
132 |
-
#: includes/i18n.php:
|
133 |
msgctxt "verb"
|
134 |
msgid "Hide"
|
135 |
msgstr "Nascondi"
|
136 |
|
137 |
-
#: includes/i18n.php:
|
138 |
msgctxt "verb"
|
139 |
msgid "Edit"
|
140 |
msgstr "Modifica"
|
141 |
|
142 |
-
#: includes/i18n.php:
|
143 |
msgctxt "verb"
|
144 |
msgid "Update"
|
145 |
msgstr "Aggiorna"
|
146 |
|
147 |
-
#: includes/i18n.php:
|
148 |
msgid "Date"
|
149 |
msgstr "Data"
|
150 |
|
151 |
-
#: includes/i18n.php:
|
152 |
msgid "Amount"
|
153 |
msgstr "Importo"
|
154 |
|
155 |
-
#: includes/i18n.php:
|
156 |
msgid "Invoice"
|
157 |
msgstr "Fattura"
|
158 |
|
159 |
-
#: includes/i18n.php:
|
160 |
msgid "Billing"
|
161 |
msgstr "Fatturazione"
|
162 |
|
163 |
-
#: includes/i18n.php:
|
164 |
msgid "Payments"
|
165 |
msgstr "Pagamenti"
|
166 |
|
167 |
-
#: includes/i18n.php:
|
168 |
msgid "Delete Account"
|
169 |
msgstr "Elimina Account"
|
170 |
|
171 |
-
#: includes/i18n.php:
|
172 |
msgctxt "as close a window"
|
173 |
msgid "Dismiss"
|
174 |
msgstr "Chiudi"
|
175 |
|
176 |
-
#: includes/i18n.php:
|
177 |
msgctxt "as product pricing plan"
|
178 |
msgid "Plan"
|
179 |
msgstr "Piano"
|
180 |
|
181 |
-
#: includes/i18n.php:
|
182 |
msgid "Change Plan"
|
183 |
msgstr "Cambia piano"
|
184 |
|
185 |
-
#: includes/i18n.php:
|
186 |
msgctxt "as download professional version"
|
187 |
msgid "Download %s Version"
|
188 |
msgstr "Scarica la versione %s"
|
189 |
|
190 |
-
#: includes/i18n.php:
|
191 |
msgctxt "as download professional version now"
|
192 |
msgid "Download %s version now"
|
193 |
msgstr "Scarica la versione %s ora"
|
194 |
|
195 |
-
#: includes/i18n.php:
|
196 |
msgctxt "as download latest version"
|
197 |
msgid "Download Latest"
|
198 |
msgstr "Scarica l'ultima versione"
|
199 |
|
200 |
-
#: includes/i18n.php:
|
201 |
msgctxt "E.g. you have a professional license."
|
202 |
msgid "You have a %s license."
|
203 |
msgstr "Hai la licenza %s."
|
204 |
|
205 |
-
#: includes/i18n.php:
|
206 |
msgid "New"
|
207 |
msgstr "Nuovo"
|
208 |
|
209 |
-
#: includes/i18n.php:
|
210 |
msgid "Free"
|
211 |
msgstr "Gratuito"
|
212 |
|
213 |
-
#: includes/i18n.php:
|
214 |
msgctxt "as trial plan"
|
215 |
msgid "Trial"
|
216 |
msgstr "Prova gratuita"
|
217 |
|
218 |
-
#: includes/i18n.php:
|
219 |
msgctxt "as starting a trial plan"
|
220 |
msgid "Start Trial"
|
221 |
msgstr "Inizia il periodo di prova gratuito"
|
222 |
|
223 |
-
#: includes/i18n.php:
|
224 |
msgctxt "verb"
|
225 |
msgid "Purchase"
|
226 |
msgstr "Acquisto"
|
227 |
|
228 |
-
#: includes/i18n.php:
|
229 |
msgid "Purchase License"
|
230 |
msgstr "Acquista licenza"
|
231 |
|
232 |
-
#: includes/i18n.php:
|
233 |
msgctxt "verb"
|
234 |
msgid "Buy"
|
235 |
msgstr "Compra"
|
236 |
|
237 |
-
#: includes/i18n.php:
|
238 |
msgid "Buy License"
|
239 |
msgstr "Compra licenza"
|
240 |
|
241 |
-
#: includes/i18n.php:
|
242 |
msgid "Single Site License"
|
243 |
msgstr "Licenza per sito singolo"
|
244 |
|
245 |
-
#: includes/i18n.php:
|
246 |
msgid "Unlimited Licenses"
|
247 |
msgstr "Licenze illimitate"
|
248 |
|
249 |
-
#: includes/i18n.php:
|
250 |
msgid "Up to %s Sites"
|
251 |
msgstr "Fino a %s siti"
|
252 |
|
253 |
-
#: includes/i18n.php:
|
254 |
msgid "%sRenew your license now%s to access version %s features and support."
|
255 |
msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
|
256 |
|
257 |
-
#: includes/i18n.php:
|
258 |
msgid ""
|
259 |
"Enter the email address you've used for the upgrade below and we will resend"
|
260 |
" you the license key."
|
261 |
msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
|
262 |
|
263 |
-
#: includes/i18n.php:
|
264 |
msgctxt "e.g. Professional Plan"
|
265 |
msgid "%s Plan"
|
266 |
msgstr "Piano %s"
|
267 |
|
268 |
-
#: includes/i18n.php:
|
269 |
msgid "You are just one step away - %s"
|
270 |
msgstr "Sei a un passo dalla fine - %s"
|
271 |
|
272 |
-
#: includes/i18n.php:
|
273 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
274 |
msgid "Complete \"%s\" Activation Now"
|
275 |
msgstr "Completa l'attivazione di \"%s\" ora"
|
276 |
|
277 |
-
#: includes/i18n.php:
|
278 |
msgid "We made a few tweaks to the plugin, %s"
|
279 |
msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
|
280 |
|
281 |
-
#: includes/i18n.php:
|
282 |
msgid "Opt-in to make \"%s\" Better!"
|
283 |
msgstr "Contribuisci a rendere \"%s\" migliore!"
|
284 |
|
285 |
-
#: includes/i18n.php:
|
286 |
msgid "Error"
|
287 |
msgstr "Errore"
|
288 |
|
289 |
-
#: includes/i18n.php:
|
290 |
msgid ""
|
291 |
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
292 |
"sdk@freemius.com with the current error."
|
293 |
msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
|
294 |
|
295 |
-
#: includes/i18n.php:
|
296 |
msgctxt "as expiration date"
|
297 |
msgid "Expiration"
|
298 |
msgstr "Scadenza"
|
299 |
|
300 |
-
#: includes/i18n.php:
|
301 |
msgctxt "as software license"
|
302 |
msgid "License"
|
303 |
msgstr "Licenza"
|
304 |
|
305 |
-
#: includes/i18n.php:
|
306 |
msgid "not verified"
|
307 |
msgstr "non verificato"
|
308 |
|
309 |
-
#: includes/i18n.php:
|
310 |
msgid "Verify Email"
|
311 |
msgstr "Verifica email"
|
312 |
|
313 |
-
#: includes/i18n.php:
|
314 |
msgctxt "e.g. expires in 2 months"
|
315 |
msgid "Expires in %s"
|
316 |
msgstr "Scade in %s"
|
317 |
|
318 |
-
#: includes/i18n.php:
|
319 |
msgctxt "e.g. auto renews in 2 months"
|
320 |
msgid "Auto renews in %s"
|
321 |
msgstr "Rinnovo automatico in %s"
|
322 |
|
323 |
-
#: includes/i18n.php:
|
324 |
msgid "No expiration"
|
325 |
msgstr "Nessuna scadenza"
|
326 |
|
327 |
-
#: includes/i18n.php:
|
328 |
msgid "Expired"
|
329 |
msgstr "Scaduto"
|
330 |
|
331 |
-
#: includes/i18n.php:
|
332 |
msgid "Cancelled"
|
333 |
msgstr "Annullato"
|
334 |
|
335 |
-
#: includes/i18n.php:
|
336 |
msgctxt "e.g. In 2 hours"
|
337 |
msgid "In %s"
|
338 |
msgstr "In %s"
|
339 |
|
340 |
-
#: includes/i18n.php:
|
341 |
msgctxt "e.g. 2 min ago"
|
342 |
msgid "%s ago"
|
343 |
msgstr "%s fa"
|
344 |
|
345 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
346 |
msgctxt "as plugin version"
|
347 |
msgid "Version"
|
348 |
msgstr "Versione"
|
349 |
|
350 |
-
#: includes/i18n.php:
|
351 |
msgid "Name"
|
352 |
msgstr "Nome"
|
353 |
|
354 |
-
#: includes/i18n.php:
|
355 |
msgid "Email"
|
356 |
msgstr "Email"
|
357 |
|
358 |
-
#: includes/i18n.php:
|
359 |
msgid "Email address"
|
360 |
msgstr "Indirizzo email"
|
361 |
|
362 |
-
#: includes/i18n.php:
|
363 |
msgid "Verified"
|
364 |
msgstr "Verificato"
|
365 |
|
366 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
msgid "Plugin"
|
368 |
msgstr "Plugin"
|
369 |
|
370 |
-
#: includes/i18n.php:
|
371 |
msgid "Plugins"
|
372 |
msgstr "Plugin"
|
373 |
|
374 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
375 |
msgid "Themes"
|
376 |
msgstr "Temi"
|
377 |
|
378 |
-
#: includes/i18n.php:
|
379 |
msgctxt "as file/folder path"
|
380 |
msgid "Path"
|
381 |
msgstr "Percorso"
|
382 |
|
383 |
-
#: includes/i18n.php:
|
384 |
msgid "Title"
|
385 |
msgstr "Titolo"
|
386 |
|
387 |
-
#: includes/i18n.php:
|
388 |
msgid "Free version"
|
389 |
msgstr "Versione gratuita"
|
390 |
|
391 |
-
#: includes/i18n.php:
|
392 |
msgid "Premium version"
|
393 |
msgstr "Versione premium"
|
394 |
|
395 |
-
#: includes/i18n.php:
|
396 |
msgctxt "as WP plugin slug"
|
397 |
msgid "Slug"
|
398 |
msgstr "Slug"
|
399 |
|
400 |
-
#: includes/i18n.php:
|
401 |
msgid "ID"
|
402 |
msgstr "ID"
|
403 |
|
404 |
-
#: includes/i18n.php:
|
405 |
msgid "Users"
|
406 |
msgstr "Utenti"
|
407 |
|
408 |
-
#: includes/i18n.php:
|
409 |
msgid "Plugin Installs"
|
410 |
msgstr "Installazioni Plugin"
|
411 |
|
412 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
413 |
msgctxt "like websites"
|
414 |
msgid "Sites"
|
415 |
msgstr "Siti"
|
416 |
|
417 |
-
#: includes/i18n.php:
|
418 |
msgid "User ID"
|
419 |
msgstr "ID utente"
|
420 |
|
421 |
-
#: includes/i18n.php:
|
422 |
msgid "Site ID"
|
423 |
msgstr "ID del sito"
|
424 |
|
425 |
-
#: includes/i18n.php:
|
426 |
msgid "Public Key"
|
427 |
msgstr "Chiave pubblica"
|
428 |
|
429 |
-
#: includes/i18n.php:
|
430 |
msgid "Secret Key"
|
431 |
msgstr "Chiave segreta"
|
432 |
|
433 |
-
#: includes/i18n.php:
|
434 |
msgctxt "as secret encryption key missing"
|
435 |
msgid "No Secret"
|
436 |
msgstr "Nessuna chiave"
|
437 |
|
438 |
-
#: includes/i18n.php:
|
439 |
msgid "No ID"
|
440 |
msgstr "Nessun ID"
|
441 |
|
442 |
-
#: includes/i18n.php:
|
443 |
msgctxt "as synchronize license"
|
444 |
msgid "Sync License"
|
445 |
msgstr "Sincronizza la licenza"
|
446 |
|
447 |
-
#: includes/i18n.php:
|
448 |
msgctxt "as synchronize"
|
449 |
msgid "Sync"
|
450 |
msgstr "Sincronizza"
|
451 |
|
452 |
-
#: includes/i18n.php:
|
453 |
msgid "Activate License"
|
454 |
msgstr "Attiva licenza"
|
455 |
|
456 |
-
#: includes/i18n.php:
|
457 |
msgid "Activate Free Version"
|
458 |
msgstr "Attiva versione gratuita"
|
459 |
|
460 |
-
#: includes/i18n.php:
|
461 |
msgid ""
|
462 |
"Please enter the license key that you received in the email right after the "
|
463 |
"purchase:"
|
464 |
msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
|
465 |
|
466 |
-
#: includes/i18n.php:
|
467 |
msgid "Activating license..."
|
468 |
msgstr "Sto attivando la licenza..."
|
469 |
|
470 |
-
#: includes/i18n.php:
|
471 |
msgid "Change License"
|
472 |
msgstr "Cambia licenza"
|
473 |
|
474 |
-
#: includes/i18n.php:
|
475 |
msgid "Update License"
|
476 |
msgstr "Aggiorna licenza"
|
477 |
|
478 |
-
#: includes/i18n.php:
|
479 |
msgid "Deactivate License"
|
480 |
msgstr "Disattiva licenza"
|
481 |
|
482 |
-
#: includes/i18n.php:
|
483 |
msgid "Activate"
|
484 |
msgstr "Attiva"
|
485 |
|
486 |
-
#: includes/i18n.php:
|
487 |
msgid "Deactivate"
|
488 |
msgstr "Disattiva"
|
489 |
|
490 |
-
#: includes/i18n.php:
|
491 |
msgid "Skip & Deactivate"
|
492 |
msgstr "Salta e disattiva"
|
493 |
|
494 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
495 |
msgid "No - just deactivate"
|
496 |
msgstr "No - disattiva e basta"
|
497 |
|
498 |
-
#: includes/i18n.php:
|
499 |
msgid "Yes - do your thing"
|
500 |
msgstr "Sì - fai pure"
|
501 |
|
502 |
-
#: includes/i18n.php:
|
503 |
msgctxt "active mode"
|
504 |
msgid "Active"
|
505 |
msgstr "Attiva"
|
506 |
|
507 |
-
#: includes/i18n.php:
|
508 |
msgctxt "is active mode?"
|
509 |
msgid "Is Active"
|
510 |
msgstr "è attiva"
|
511 |
|
512 |
-
#: includes/i18n.php:
|
513 |
msgid "Install Now"
|
514 |
msgstr "Installa ora"
|
515 |
|
516 |
-
#: includes/i18n.php:
|
517 |
msgid "Install Update Now"
|
518 |
msgstr "Installa l'aggiornamento ora"
|
519 |
|
520 |
-
#: includes/i18n.php:
|
521 |
msgid "More information about %s"
|
522 |
msgstr "Ulteriori informazioni su %s"
|
523 |
|
524 |
-
#: includes/i18n.php:
|
525 |
msgid "Localhost"
|
526 |
msgstr "Localhost"
|
527 |
|
528 |
-
#: includes/i18n.php:
|
529 |
msgctxt "as activate Professional plan"
|
530 |
msgid "Activate %s Plan"
|
531 |
msgstr "Attivare il piano %s"
|
532 |
|
533 |
-
#: includes/i18n.php:
|
534 |
msgctxt "as 5 licenses left"
|
535 |
msgid "%s left"
|
536 |
msgstr "%s rimanenti"
|
537 |
|
538 |
-
#: includes/i18n.php:
|
539 |
msgid "Last license"
|
540 |
msgstr "Ultima licenza"
|
541 |
|
542 |
-
#: includes/i18n.php:
|
543 |
msgid "What is your %s?"
|
544 |
msgstr "Qual è il tuo %s?"
|
545 |
|
546 |
-
#: includes/i18n.php:
|
547 |
msgid "Activate this add-on"
|
548 |
msgstr "Attivare questo addon"
|
549 |
|
550 |
-
#: includes/i18n.php:
|
551 |
msgid ""
|
552 |
"Deactivating your license will block all premium features, but will enable "
|
553 |
"you to activate the license on another site. Are you sure you want to "
|
554 |
"proceed?"
|
555 |
msgstr "La disattivazione della licenza bloccherà tutte le funzionalità premium, ma vi permetterà di attivare la licenza su un altro sito. Sei sicuro di voler procedere?"
|
556 |
|
557 |
-
#: includes/i18n.php:
|
558 |
msgid ""
|
559 |
"Deleting the account will automatically deactivate your %s plan license so "
|
560 |
"you can use it on other sites. If you want to terminate the recurring "
|
@@ -562,941 +579,997 @@ msgid ""
|
|
562 |
"account. Are you sure you would like to continue with the deletion?"
|
563 |
msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?"
|
564 |
|
565 |
-
#: includes/i18n.php:
|
566 |
msgid ""
|
567 |
"Deletion is not temporary. Only delete if you no longer want to use this "
|
568 |
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
569 |
msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
|
570 |
|
571 |
-
#: includes/i18n.php:
|
572 |
msgid ""
|
573 |
"Downgrading your plan will immediately stop all future recurring payments "
|
574 |
"and your %s plan license will expire in %s."
|
575 |
msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
|
576 |
|
577 |
-
#: includes/i18n.php:
|
578 |
msgid ""
|
579 |
"Cancelling the trial will immediately block access to all premium features. "
|
580 |
"Are you sure?"
|
581 |
msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
|
582 |
|
583 |
-
#: includes/i18n.php:
|
584 |
msgid ""
|
585 |
"You can still enjoy all %s features but you will not have access to plugin "
|
586 |
"updates and support."
|
587 |
msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
|
588 |
|
589 |
-
#: includes/i18n.php:
|
590 |
msgid ""
|
591 |
-
"Once your license
|
592 |
-
" have access to the %s features."
|
593 |
-
msgstr "
|
594 |
|
595 |
-
#: includes/i18n.php:
|
596 |
msgid "Are you sure you want to proceed?"
|
597 |
msgstr "Sei sicuro di voler procedere?"
|
598 |
|
599 |
-
#: includes/i18n.php:
|
600 |
msgid "Add Ons for %s"
|
601 |
msgstr "Add-on per %s"
|
602 |
|
603 |
-
#: includes/i18n.php:
|
604 |
msgid ""
|
605 |
"We could'nt load the add-ons list. It's probably an issue on our side, "
|
606 |
"please try to come back in few minutes."
|
607 |
msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto."
|
608 |
|
609 |
-
#: includes/i18n.php:
|
610 |
msgid "Anonymous feedback"
|
611 |
msgstr "Feedback anonimo"
|
612 |
|
613 |
-
#: includes/i18n.php:
|
614 |
msgid "Quick feedback"
|
615 |
msgstr "Feedback veloce"
|
616 |
|
617 |
-
#: includes/i18n.php:
|
618 |
msgid "If you have a moment, please let us know why you are deactivating"
|
619 |
msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
|
620 |
|
621 |
-
#: includes/i18n.php:
|
622 |
msgid "Yes - Deactivate"
|
623 |
msgstr "Si - Disattiva"
|
624 |
|
625 |
-
#: includes/i18n.php:
|
626 |
msgid "Submit & Deactivate"
|
627 |
msgstr "Invia & Disattiva"
|
628 |
|
629 |
-
#: includes/i18n.php:
|
630 |
msgid "Cancel"
|
631 |
msgstr "Annulla"
|
632 |
|
633 |
-
#: includes/i18n.php:
|
634 |
msgid "I no longer need the plugin"
|
635 |
msgstr "Non ho piú bisogno di questo plugin"
|
636 |
|
637 |
-
#: includes/i18n.php:
|
638 |
msgid "I found a better plugin"
|
639 |
msgstr "Ho trovato un plugin migliore"
|
640 |
|
641 |
-
#: includes/i18n.php:
|
642 |
msgid "I only needed the plugin for a short period"
|
643 |
msgstr "Avevo bisogno del plugin solo per un breve periodo"
|
644 |
|
645 |
-
#: includes/i18n.php:
|
646 |
msgid "The plugin broke my site"
|
647 |
msgstr "Il plugin ha causato problemi al mio sito"
|
648 |
|
649 |
-
#: includes/i18n.php:
|
650 |
msgid "The plugin suddenly stopped working"
|
651 |
msgstr "Il plugin ha smesso di funzionare"
|
652 |
|
653 |
-
#: includes/i18n.php:
|
654 |
msgid "I can't pay for it anymore"
|
655 |
msgstr "Non posso piú pagarlo"
|
656 |
|
657 |
-
#: includes/i18n.php:
|
658 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
659 |
msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
|
660 |
|
661 |
-
#: includes/i18n.php:
|
662 |
msgctxt ""
|
663 |
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
664 |
"in the modal box."
|
665 |
msgid "Other"
|
666 |
msgstr "Altro"
|
667 |
|
668 |
-
#: includes/i18n.php:
|
669 |
msgid "Kindly tell us the reason so we can improve."
|
670 |
msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
|
671 |
|
672 |
-
#: includes/i18n.php:
|
673 |
msgid "What's the plugin's name?"
|
674 |
msgstr "Qual è il nome del plugin?"
|
675 |
|
676 |
-
#: includes/i18n.php:
|
677 |
msgid "What price would you feel comfortable paying?"
|
678 |
msgstr "Che prezzo ritieni opportuno pagare?"
|
679 |
|
680 |
-
#: includes/i18n.php:
|
681 |
msgid "I couldn't understand how to make it work"
|
682 |
msgstr "Non capisco come farlo funzionare"
|
683 |
|
684 |
-
#: includes/i18n.php:
|
685 |
msgid ""
|
686 |
"The plugin is great, but I need specific feature that you don't support"
|
687 |
msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
|
688 |
|
689 |
-
#: includes/i18n.php:
|
690 |
msgid "The plugin is not working"
|
691 |
msgstr "Il plugin non funziona"
|
692 |
|
693 |
-
#: includes/i18n.php:
|
694 |
msgid "It's not what I was looking for"
|
695 |
msgstr "Non é quello che stavo cercando"
|
696 |
|
697 |
-
#: includes/i18n.php:
|
698 |
msgid "The plugin didn't work as expected"
|
699 |
msgstr "Il plugin non funziona come mi aspettavo"
|
700 |
|
701 |
-
#: includes/i18n.php:
|
702 |
msgid "What feature?"
|
703 |
msgstr "Quale funzionalitá?"
|
704 |
|
705 |
-
#: includes/i18n.php:
|
706 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
707 |
msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
|
708 |
|
709 |
-
#: includes/i18n.php:
|
710 |
msgid "What you've been looking for?"
|
711 |
msgstr "Che cosa stai cercando?"
|
712 |
|
713 |
-
#: includes/i18n.php:
|
714 |
msgid "What did you expect?"
|
715 |
msgstr "Che cosa ti aspettavi?"
|
716 |
|
717 |
-
#: includes/i18n.php:
|
718 |
msgid "The plugin didn't work"
|
719 |
msgstr "Il plugin non funziona"
|
720 |
|
721 |
-
#: includes/i18n.php:
|
722 |
msgid "I don't like to share my information with you"
|
723 |
msgstr "Non voglio condividere i miei dati con te"
|
724 |
|
725 |
-
#: includes/i18n.php:
|
726 |
msgid ""
|
727 |
"You might have missed it, but you don't have to share any data and can just "
|
728 |
"%s the opt-in."
|
729 |
msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
|
730 |
|
731 |
-
#: includes/i18n.php:
|
732 |
msgctxt "greeting"
|
733 |
msgid "Hey %s,"
|
734 |
msgstr "Hey %s,"
|
735 |
|
736 |
-
#: includes/i18n.php:
|
737 |
msgctxt "a greeting. E.g. Thanks John!"
|
738 |
msgid "Thanks %s!"
|
739 |
msgstr "Grazie %s!"
|
740 |
|
741 |
-
#: includes/i18n.php:
|
742 |
msgid ""
|
743 |
"Never miss an important update - opt-in to our security and feature updates "
|
744 |
"notifications, and non-sensitive diagnostic tracking with %4$s."
|
745 |
msgstr "Non perdere nessun aggiornamento importante - iscriviti per ricevere notifiche su aggiornamenti relativi alla sicurezza e nuove versioni, oltre al tracciamento di diagnostica non sensibile con %4$s."
|
746 |
|
747 |
-
#: includes/i18n.php:
|
748 |
msgid ""
|
749 |
"Please help us improve %1$s! If you opt-in, some data about your usage of "
|
750 |
"%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
|
751 |
"work just fine."
|
752 |
msgstr "Aiutaci a migliorare %1$s! Se ti iscrivi, alcuni dati riguardanti il tuo utilizzo di %1$s verranno inviati a %4$s. Se salti questo passaggio, non c'è problema! %1$s funzionerà ugualmente."
|
753 |
|
754 |
-
#: includes/i18n.php:
|
755 |
msgid ""
|
756 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
757 |
"make sure you click the activation button in that email to %s."
|
758 |
-
msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per
|
759 |
|
760 |
-
#: includes/i18n.php:
|
761 |
msgid "complete the install"
|
762 |
msgstr "completa l'installazione"
|
763 |
|
764 |
-
#: includes/i18n.php:
|
765 |
msgid "start the trial"
|
766 |
msgstr "Inizia il periodo di prova gratuito"
|
767 |
|
768 |
-
#: includes/i18n.php:
|
769 |
msgid ""
|
770 |
"Thanks for purchasing %s! To get started, please enter your license key:"
|
771 |
msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
|
772 |
|
773 |
-
#: includes/i18n.php:
|
774 |
msgid ""
|
775 |
"The plugin will be periodically sending data to %s to check for plugin "
|
776 |
"updates and verify the validity of your license."
|
777 |
msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
|
778 |
|
779 |
-
#: includes/i18n.php:
|
780 |
msgid "What permissions are being granted?"
|
781 |
msgstr "Quali autorizzazioni vengono concesse?"
|
782 |
|
783 |
-
#: includes/i18n.php:
|
784 |
msgid "Your Profile Overview"
|
785 |
msgstr "Panoramica del tuo profilo"
|
786 |
|
787 |
-
#: includes/i18n.php:
|
788 |
msgid "Name and email address"
|
789 |
msgstr "Nome ed indirizzo email"
|
790 |
|
791 |
-
#: includes/i18n.php:
|
792 |
msgid "Your Site Overview"
|
793 |
msgstr "Panoramica del tuo sito"
|
794 |
|
795 |
-
#: includes/i18n.php:
|
796 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
797 |
msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
|
798 |
|
799 |
-
#: includes/i18n.php:
|
800 |
msgid "Current Plugin Events"
|
801 |
msgstr "Eventi correnti del plugin"
|
802 |
|
803 |
-
#: includes/i18n.php:
|
804 |
msgid "Activation, deactivation and uninstall"
|
805 |
msgstr "Attiva, disattivazione e disinstallazione"
|
806 |
|
807 |
-
#: includes/i18n.php:
|
808 |
msgid "Plugins & Themes"
|
809 |
msgstr "Plugin e temi"
|
810 |
|
811 |
-
#: includes/i18n.php:
|
812 |
msgid "Titles, versions and state."
|
813 |
msgstr "Titoli, versioni e stato."
|
814 |
|
815 |
-
#: includes/i18n.php:
|
816 |
msgid "Admin Notices"
|
817 |
msgstr "Avvisi amministratore"
|
818 |
|
819 |
-
#: includes/i18n.php:
|
820 |
msgid "Newsletter"
|
821 |
msgstr "Newsletter"
|
822 |
|
823 |
-
#: includes/i18n.php:
|
824 |
msgid "Updates, announcements, marketing, no spam"
|
825 |
msgstr "Aggiornamenti, annunci, marketing, no spam"
|
826 |
|
827 |
-
#: includes/i18n.php:
|
828 |
msgid "Privacy Policy"
|
829 |
msgstr "Politica sulla privacy"
|
830 |
|
831 |
-
#: includes/i18n.php:
|
832 |
msgid "Terms of Service"
|
833 |
msgstr "Termini del Servizio"
|
834 |
|
835 |
-
#: includes/i18n.php:
|
836 |
msgctxt "as activating plugin"
|
837 |
msgid "Activating"
|
838 |
msgstr "Attivazione"
|
839 |
|
840 |
-
#: includes/i18n.php:
|
841 |
msgctxt "as in the process of sending an email"
|
842 |
msgid "Sending email"
|
843 |
msgstr "Invio email"
|
844 |
|
845 |
-
#: includes/i18n.php:
|
846 |
msgctxt "button label"
|
847 |
msgid "Allow & Continue"
|
848 |
msgstr "Consenti & Continua"
|
849 |
|
850 |
-
#: includes/i18n.php:
|
851 |
msgctxt "button label"
|
852 |
msgid "Agree & Activate License"
|
853 |
msgstr "Accetta e attiva la licenza"
|
854 |
|
855 |
-
#: includes/i18n.php:
|
856 |
msgctxt "verb"
|
857 |
msgid "Skip"
|
858 |
msgstr "Salta"
|
859 |
|
860 |
-
#: includes/i18n.php:
|
861 |
msgid "Click here to use the plugin anonymously"
|
862 |
msgstr "Fai clic qui per usare il plugin anonimamente"
|
863 |
|
864 |
-
#: includes/i18n.php:
|
865 |
msgid "Re-send activation email"
|
866 |
msgstr "Invia nuovamente l'email di attivazione"
|
867 |
|
868 |
-
#: includes/i18n.php:
|
869 |
msgid "License key"
|
870 |
msgstr "Chiave di licenza"
|
871 |
|
872 |
-
#: includes/i18n.php:
|
873 |
msgid "Send License Key"
|
874 |
msgstr "Invia chiave di licenza"
|
875 |
|
876 |
-
#: includes/i18n.php:
|
877 |
msgid "Sending license key"
|
878 |
msgstr "Invio chiave di licenza"
|
879 |
|
880 |
-
#: includes/i18n.php:
|
881 |
msgid "Have a license key?"
|
882 |
msgstr "Hai una chiave di licenza?"
|
883 |
|
884 |
-
#: includes/i18n.php:
|
885 |
msgid "Don't have a license key?"
|
886 |
msgstr "Non hai una chiave di licenza?"
|
887 |
|
888 |
-
#: includes/i18n.php:
|
889 |
msgid "Can't find your license key?"
|
890 |
msgstr "Non trovi la tua chiave di licenza?"
|
891 |
|
892 |
-
#: includes/i18n.php:
|
893 |
msgid ""
|
894 |
"We couldn't find your email address in the system, are you sure it's the "
|
895 |
"right address?"
|
896 |
msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
|
897 |
|
898 |
-
#: includes/i18n.php:
|
899 |
msgid ""
|
900 |
"We can't see any active licenses associated with that email address, are you"
|
901 |
" sure it's the right address?"
|
902 |
msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
|
903 |
|
904 |
-
#: includes/i18n.php:
|
905 |
msgid "Opt In"
|
906 |
msgstr "Iscriviti"
|
907 |
|
908 |
-
#: includes/i18n.php:
|
909 |
msgid "Opt Out"
|
910 |
msgstr "Cancella iscrizione"
|
911 |
|
912 |
-
#: includes/i18n.php:
|
913 |
msgid "On second thought - I want to continue helping"
|
914 |
msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
|
915 |
|
916 |
-
#: includes/i18n.php:
|
917 |
msgid "Opting out..."
|
918 |
msgstr "Cancellamento dell'iscrizione..."
|
919 |
|
920 |
-
#: includes/i18n.php:
|
921 |
msgid "Opting in..."
|
922 |
msgstr "Iscrizione in corso..."
|
923 |
|
924 |
-
#: includes/i18n.php:
|
925 |
msgid ""
|
926 |
"We appreciate your help in making the %s better by letting us track some "
|
927 |
"usage data."
|
928 |
msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
|
929 |
|
930 |
-
#: includes/i18n.php:
|
931 |
msgid ""
|
932 |
"Usage tracking is done in the name of making %s better. Making a better user"
|
933 |
" experience, prioritizing new features, and more good things. We'd really "
|
934 |
"appreciate if you'll reconsider letting us continue with the tracking."
|
935 |
msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una migliore esperienza utente e dando priorità a nuove funzionalità, oltre a molte altre buone cose. Saremmo veramente felici di vederti cambiare idea e lasciarci continuare con il tracciamento."
|
936 |
|
937 |
-
#: includes/i18n.php:
|
938 |
msgid ""
|
939 |
"By clicking \"Opt Out\", we will no longer be sending any data from %s to "
|
940 |
"%s."
|
941 |
msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
|
942 |
|
943 |
-
#: includes/i18n.php:
|
944 |
msgid "Screenshots"
|
945 |
msgstr "Screenshots"
|
946 |
|
947 |
-
#: includes/i18n.php:
|
948 |
msgid "Click to view full-size screenshot %d"
|
949 |
msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
|
950 |
|
951 |
-
#: includes/i18n.php:
|
952 |
msgid "Freemius Debug"
|
953 |
msgstr "Debug Freemius"
|
954 |
|
955 |
-
#: includes/i18n.php:
|
956 |
msgctxt "as turned on"
|
957 |
msgid "On"
|
958 |
msgstr "Attivo"
|
959 |
|
960 |
-
#: includes/i18n.php:
|
961 |
msgctxt "as turned off"
|
962 |
msgid "Off"
|
963 |
msgstr "Non attivo"
|
964 |
|
965 |
-
#: includes/i18n.php:
|
966 |
msgctxt "as code debugging"
|
967 |
msgid "Debugging"
|
968 |
msgstr "Debugging"
|
969 |
|
970 |
-
#: includes/i18n.php:
|
971 |
msgid "Freemius State"
|
972 |
msgstr "Stato di Freemius"
|
973 |
|
974 |
-
#: includes/i18n.php:
|
975 |
msgctxt "as connection was successful"
|
976 |
msgid "Connected"
|
977 |
msgstr "Connesso"
|
978 |
|
979 |
-
#: includes/i18n.php:
|
980 |
msgctxt "as connection blocked"
|
981 |
msgid "Blocked"
|
982 |
msgstr "Bloccato"
|
983 |
|
984 |
-
#: includes/i18n.php:
|
985 |
msgctxt "as application program interface"
|
986 |
msgid "API"
|
987 |
msgstr "API"
|
988 |
|
989 |
-
#: includes/i18n.php:
|
990 |
msgctxt "as software development kit versions"
|
991 |
msgid "SDK"
|
992 |
msgstr "SDK"
|
993 |
|
994 |
-
#: includes/i18n.php:
|
995 |
msgctxt "as software development kit versions"
|
996 |
msgid "SDK Versions"
|
997 |
msgstr "Versioni SDK"
|
998 |
|
999 |
-
#: includes/i18n.php:
|
1000 |
msgctxt "as plugin folder path"
|
1001 |
msgid "Plugin Path"
|
1002 |
msgstr "Percorso del plugin"
|
1003 |
|
1004 |
-
#: includes/i18n.php:
|
1005 |
msgctxt "as sdk path"
|
1006 |
msgid "SDK Path"
|
1007 |
msgstr "Percorso SDK"
|
1008 |
|
1009 |
-
#: includes/i18n.php:
|
1010 |
msgid "Add Ons of Plugin %s"
|
1011 |
msgstr "Add-on del Plugin %s"
|
1012 |
|
1013 |
-
#: includes/i18n.php:
|
1014 |
msgid "Are you sure you want to delete all Freemius data?"
|
1015 |
msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
|
1016 |
|
1017 |
-
#: includes/i18n.php:
|
1018 |
msgid "Actions"
|
1019 |
msgstr "Azioni"
|
1020 |
|
1021 |
-
#: includes/i18n.php:
|
1022 |
msgid "Delete All Accounts"
|
1023 |
msgstr "Eliminare tutti gli account"
|
1024 |
|
1025 |
-
#: includes/i18n.php:
|
1026 |
msgid "Start Fresh"
|
1027 |
msgstr "Inizia da capo"
|
1028 |
|
1029 |
-
#: includes/i18n.php:
|
1030 |
msgid "Clear API Cache"
|
1031 |
msgstr "Elimina cache API"
|
1032 |
|
1033 |
-
#: includes/i18n.php:
|
1034 |
msgid "Sync Data From Server"
|
1035 |
msgstr "Sincronizza i dati dal server"
|
1036 |
|
1037 |
-
#: includes/i18n.php:
|
1038 |
msgid "Scheduled Crons"
|
1039 |
msgstr "Azioni programmate"
|
1040 |
|
1041 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
1042 |
msgid "Plugins & Themes Sync"
|
1043 |
msgstr "Sincronizzazione plugin e temi"
|
1044 |
|
1045 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1046 |
msgctxt "as congratulations"
|
1047 |
msgid "Congrats"
|
1048 |
msgstr "Congratulazioni"
|
1049 |
|
1050 |
-
#: includes/i18n.php:
|
1051 |
msgctxt "exclamation"
|
1052 |
msgid "Oops"
|
1053 |
msgstr "Ops"
|
1054 |
|
1055 |
-
#: includes/i18n.php:
|
1056 |
msgctxt "interjection expressing joy or exuberance"
|
1057 |
msgid "Yee-haw"
|
1058 |
msgstr "Evvai"
|
1059 |
|
1060 |
-
#: includes/i18n.php:
|
1061 |
msgctxt ""
|
1062 |
"(especially in electronic communication) used to express elation, "
|
1063 |
"enthusiasm, or triumph."
|
1064 |
msgid "W00t"
|
1065 |
msgstr "Forte"
|
1066 |
|
1067 |
-
#: includes/i18n.php:
|
1068 |
msgctxt "a positive response"
|
1069 |
msgid "Right on"
|
1070 |
msgstr "Sì"
|
1071 |
|
1072 |
-
#: includes/i18n.php:
|
1073 |
msgctxt ""
|
1074 |
"something somebody says when they are thinking about what you have just "
|
1075 |
"said. "
|
1076 |
msgid "Hmm"
|
1077 |
msgstr "Uhm"
|
1078 |
|
1079 |
-
#: includes/i18n.php:
|
1080 |
msgid "O.K"
|
1081 |
msgstr "OK"
|
1082 |
|
1083 |
-
#: includes/i18n.php:
|
1084 |
msgctxt "exclamation"
|
1085 |
msgid "Hey"
|
1086 |
msgstr "Hey"
|
1087 |
|
1088 |
-
#: includes/i18n.php:
|
1089 |
msgctxt "advance notice of something that will need attention."
|
1090 |
msgid "Heads up"
|
1091 |
msgstr "Attenzione"
|
1092 |
|
1093 |
-
#: includes/i18n.php:
|
1094 |
msgid "Seems like you got the latest release."
|
1095 |
msgstr "Sembra che tu abbia la versione più recente."
|
1096 |
|
1097 |
-
#: includes/i18n.php:
|
1098 |
msgid "You are all good!"
|
1099 |
msgstr "Sei fantastico!"
|
1100 |
|
1101 |
-
#: includes/i18n.php:
|
1102 |
msgid ""
|
1103 |
"Sorry, we could not complete the email update. Another user with the same "
|
1104 |
"email is already registered."
|
1105 |
msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
|
1106 |
|
1107 |
-
#: includes/i18n.php:
|
1108 |
msgid ""
|
1109 |
"If you would like to give up the ownership of the plugin's account to %s "
|
1110 |
"click the Change Ownership button."
|
1111 |
msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
|
1112 |
|
1113 |
-
#: includes/i18n.php:
|
1114 |
msgid ""
|
1115 |
"Your email was successfully updated. You should receive an email with "
|
1116 |
"confirmation instructions in few moments."
|
1117 |
msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
|
1118 |
|
1119 |
-
#: includes/i18n.php:
|
1120 |
msgid "Your name was successfully updated."
|
1121 |
msgstr "Il tuo nome è stato aggiornato correttamente."
|
1122 |
|
1123 |
-
#: includes/i18n.php:
|
1124 |
msgid "You have successfully updated your %s."
|
1125 |
msgstr "Hai aggiornato con successo il tuo %s."
|
1126 |
|
1127 |
-
#: includes/i18n.php:
|
1128 |
msgid "Please provide your full name."
|
1129 |
msgstr "Per favore inserisci il tuo nome completo."
|
1130 |
|
1131 |
-
#: includes/i18n.php:
|
1132 |
msgid ""
|
1133 |
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1134 |
"please check your spam box."
|
1135 |
msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata."
|
1136 |
|
1137 |
-
#: includes/i18n.php:
|
1138 |
msgid ""
|
1139 |
"Just letting you know that the add-ons information of %s is being pulled "
|
1140 |
"from an external server."
|
1141 |
msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
|
1142 |
|
1143 |
-
#: includes/i18n.php:
|
1144 |
msgid "No credit card required"
|
1145 |
msgstr "Nessuna carta di credito richiesta"
|
1146 |
|
1147 |
-
#: includes/i18n.php:
|
1148 |
msgid "Premium plugin version was successfully activated."
|
1149 |
msgstr "La versione Premium del plugin è stata attivata correttamente."
|
1150 |
|
1151 |
-
#: includes/i18n.php:
|
1152 |
msgid "The upgrade of %s was successfully completed."
|
1153 |
msgstr "L'aggiornamento di %s è stato completato con successo."
|
1154 |
|
1155 |
-
#: includes/i18n.php:
|
1156 |
msgid "Your account was successfully activated with the %s plan."
|
1157 |
msgstr "Il tuo account è stato attivato correttamente con il piano %s."
|
1158 |
|
1159 |
-
#: includes/i18n.php:
|
1160 |
msgid "Download the latest %s version now"
|
1161 |
msgstr "Scarica l'ultima versione di %s"
|
1162 |
|
1163 |
-
#: includes/i18n.php:
|
1164 |
msgid "Please follow these steps to complete the upgrade"
|
1165 |
msgstr "Segui i passi seguenti per completare l'aggiornamento"
|
1166 |
|
1167 |
-
#: includes/i18n.php:
|
1168 |
msgid "Download the latest %s version"
|
1169 |
msgstr "Scarica l'ultima versione di %s"
|
1170 |
|
1171 |
-
#: includes/i18n.php:
|
1172 |
msgid "Download the latest version"
|
1173 |
msgstr "Scarica l'ultima versione"
|
1174 |
|
1175 |
-
#: includes/i18n.php:
|
1176 |
msgid "Deactivate the free version"
|
1177 |
msgstr "Disattiva la versione gratuita"
|
1178 |
|
1179 |
-
#: includes/i18n.php:
|
1180 |
msgid "Upload and activate the downloaded version"
|
1181 |
msgstr "Carica e attiva la versione scaricata"
|
1182 |
|
1183 |
-
#: includes/i18n.php:
|
1184 |
msgid "How to upload and activate?"
|
1185 |
msgstr "Come faccio a caricare ed attivare?"
|
1186 |
|
1187 |
-
#: includes/i18n.php:
|
1188 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1189 |
msgid "%s Add-on was successfully purchased."
|
1190 |
msgstr "L' add-on %s è stato acquistato con successo."
|
1191 |
|
1192 |
-
#: includes/i18n.php:
|
1193 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1194 |
msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
|
1195 |
|
1196 |
-
#: includes/i18n.php:
|
1197 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1198 |
msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
|
1199 |
|
1200 |
-
#: includes/i18n.php:
|
1201 |
msgid "Your plan was successfully upgraded."
|
1202 |
msgstr "Il piano è stato aggiornato con successo."
|
1203 |
|
1204 |
-
#: includes/i18n.php:
|
1205 |
msgid "Your plan was successfully changed to %s."
|
1206 |
msgstr "Il piano è stato cambiato con successo a %s."
|
1207 |
|
1208 |
-
#: includes/i18n.php:
|
1209 |
msgid ""
|
1210 |
"Your license has expired. You can still continue using the free plugin "
|
1211 |
"forever."
|
1212 |
msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
|
1213 |
|
1214 |
-
#: includes/i18n.php:
|
1215 |
msgid ""
|
1216 |
"Your license has been cancelled. If you think it's a mistake, please contact"
|
1217 |
" support."
|
1218 |
msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
|
1219 |
|
1220 |
-
#: includes/i18n.php:
|
1221 |
msgid "Your trial has been successfully started."
|
1222 |
msgstr "La versione di prova è stata avviata correttamente."
|
1223 |
|
1224 |
-
#: includes/i18n.php:
|
1225 |
msgid "Your license was successfully activated."
|
1226 |
msgstr "La tua licenza è stata attivata correttamente."
|
1227 |
|
1228 |
-
#: includes/i18n.php:
|
1229 |
msgid "It looks like your site currently doesn't have an active license."
|
1230 |
msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
|
1231 |
|
1232 |
-
#: includes/i18n.php:
|
1233 |
msgid ""
|
1234 |
"Your license was successfully deactivated, you are back to the %s plan."
|
1235 |
msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
|
1236 |
|
1237 |
-
#: includes/i18n.php:
|
1238 |
msgid "It looks like the license deactivation failed."
|
1239 |
msgstr "Sembra che la disattivazione della licenza non sia riuscita."
|
1240 |
|
1241 |
-
#: includes/i18n.php:
|
1242 |
msgid "It looks like the license could not be activated."
|
1243 |
msgstr "Sembra che la licenza non possa essere attivata."
|
1244 |
|
1245 |
-
#: includes/i18n.php:
|
1246 |
msgid "Error received from the server:"
|
1247 |
msgstr "Errore ricevuto dal server:"
|
1248 |
|
1249 |
-
#: includes/i18n.php:
|
1250 |
msgid ""
|
1251 |
"Your trial has expired. You can still continue using all our free features."
|
1252 |
msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
|
1253 |
|
1254 |
-
#: includes/i18n.php:
|
1255 |
msgid ""
|
1256 |
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1257 |
"%s."
|
1258 |
msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
|
1259 |
|
1260 |
-
#: includes/i18n.php:
|
1261 |
msgid ""
|
1262 |
"Seems like we are having some temporary issue with your plan downgrade. "
|
1263 |
"Please try again in few minutes."
|
1264 |
msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
|
1265 |
|
1266 |
-
#: includes/i18n.php:
|
1267 |
msgid ""
|
1268 |
"It looks like you are not in trial mode anymore so there's nothing to cancel"
|
1269 |
" :)"
|
1270 |
msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
|
1271 |
|
1272 |
-
#: includes/i18n.php:
|
1273 |
msgid "Your %s free trial was successfully cancelled."
|
1274 |
msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
|
1275 |
|
1276 |
-
#: includes/i18n.php:
|
1277 |
msgctxt "%s - numeric version number"
|
1278 |
msgid "Version %s was released."
|
1279 |
msgstr "La versione %s é stata rilasciata."
|
1280 |
|
1281 |
-
#: includes/i18n.php:
|
1282 |
msgid "Please download %s."
|
1283 |
msgstr "Scarica %s."
|
1284 |
|
1285 |
-
#: includes/i18n.php:
|
1286 |
msgctxt "%s - plan name, as the latest professional version here"
|
1287 |
msgid "the latest %s version here"
|
1288 |
msgstr "l'ultima versione %s é quì"
|
1289 |
|
1290 |
-
#: includes/i18n.php:
|
1291 |
msgid ""
|
1292 |
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1293 |
"free trial."
|
1294 |
msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
|
1295 |
|
1296 |
-
#: includes/i18n.php:
|
1297 |
msgctxt "call to action"
|
1298 |
msgid "Start free trial"
|
1299 |
msgstr "Inizia il periodo di prova gratuito"
|
1300 |
|
1301 |
-
#: includes/i18n.php:
|
1302 |
msgid "Starting trial"
|
1303 |
msgstr "Inizio del periodo di prova gratuito"
|
1304 |
|
1305 |
-
#: includes/i18n.php:
|
1306 |
msgid "Please wait"
|
1307 |
msgstr "Attendere"
|
1308 |
|
1309 |
-
#: includes/i18n.php:
|
1310 |
msgid ""
|
1311 |
"Seems like we are having some temporary issue with your trial cancellation. "
|
1312 |
"Please try again in few minutes."
|
1313 |
msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
|
1314 |
|
1315 |
-
#: includes/i18n.php:
|
1316 |
msgid "You already utilized a trial before."
|
1317 |
msgstr "Hai già utilizzato una prova gratuita in passato."
|
1318 |
|
1319 |
-
#: includes/i18n.php:
|
1320 |
msgid "You are already running the plugin in a trial mode."
|
1321 |
msgstr "Stai già usando il plugin in modalità di prova gratuita."
|
1322 |
|
1323 |
-
#: includes/i18n.php:
|
1324 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1325 |
msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
|
1326 |
|
1327 |
-
#: includes/i18n.php:
|
1328 |
msgid "Plan %s does not support a trial period."
|
1329 |
msgstr "Il piano %s non supporta il periodo di prova."
|
1330 |
|
1331 |
-
#: includes/i18n.php:
|
1332 |
msgid "None of the plugin's plans supports a trial period."
|
1333 |
msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
|
1334 |
|
1335 |
-
#: includes/i18n.php:
|
1336 |
msgid ""
|
1337 |
"Unexpected API error. Please contact the plugin's author with the following "
|
1338 |
"error."
|
1339 |
msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
|
1340 |
|
1341 |
-
#: includes/i18n.php:
|
1342 |
msgid "No commitment for %s days - cancel anytime!"
|
1343 |
msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
|
1344 |
|
1345 |
-
#: includes/i18n.php:
|
1346 |
msgid ""
|
1347 |
"Your license has expired. You can still continue using all the %s features, "
|
1348 |
"but you'll need to renew your license to continue getting updates and "
|
1349 |
"support."
|
1350 |
msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto."
|
1351 |
|
1352 |
-
#: includes/i18n.php:
|
1353 |
msgid "Couldn't activate %s."
|
1354 |
msgstr "Non é stato possibile attivare %s."
|
1355 |
|
1356 |
-
#: includes/i18n.php:
|
1357 |
msgid "Please contact us with the following message:"
|
1358 |
msgstr "Contattaci con il seguente messaggio:"
|
1359 |
|
1360 |
-
#: includes/i18n.php:
|
1361 |
msgid ""
|
1362 |
"It looks like you are still on the %s plan. If you did upgrade or change "
|
1363 |
"your plan, it's probably an issue on our side - sorry."
|
1364 |
msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi."
|
1365 |
|
1366 |
-
#: includes/i18n.php:
|
1367 |
msgid "Please contact us here"
|
1368 |
msgstr "Contattaci qui"
|
1369 |
|
1370 |
-
#: includes/i18n.php:
|
1371 |
msgid ""
|
1372 |
"I have upgraded my account but when I try to Sync the License, the plan "
|
1373 |
"remains %s."
|
1374 |
msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
|
1375 |
|
1376 |
-
#: includes/i18n.php:
|
1377 |
msgid "From unknown reason, the API connectivity test failed."
|
1378 |
msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
|
1379 |
|
1380 |
-
#: includes/i18n.php:
|
1381 |
msgid ""
|
1382 |
"It's probably a temporary issue on our end. Just to be sure, with your "
|
1383 |
"permission, would it be o.k to run another connectivity test?"
|
1384 |
msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
|
1385 |
|
1386 |
-
#: includes/i18n.php:
|
1387 |
msgid ""
|
1388 |
"We use PHP cURL library for the API calls, which is a very common library "
|
1389 |
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1390 |
"on your server."
|
1391 |
msgstr "Utilizziamo la libreria PHP cURL per le chiamate alla nostra API. Questa libreria è molto comune ed è installata di base. Sfortunatamente cURL non è presente nel tuo server."
|
1392 |
|
1393 |
-
#: includes/i18n.php:
|
1394 |
msgid ""
|
1395 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1396 |
msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
|
1397 |
|
1398 |
-
#: includes/i18n.php:
|
1399 |
msgctxt "as pluginX requires an access to our API"
|
1400 |
msgid "%s requires an access to our API."
|
1401 |
msgstr "%s richiede un accesso alla nostra API."
|
1402 |
|
1403 |
-
#: includes/i18n.php:
|
1404 |
msgid ""
|
1405 |
"It looks like your server is using Squid ACL (access control lists), which "
|
1406 |
"blocks the connection."
|
1407 |
msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
|
1408 |
|
1409 |
-
#: includes/i18n.php:
|
1410 |
msgid "I don't know what is Squid or ACL, help me!"
|
1411 |
msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
|
1412 |
|
1413 |
-
#: includes/i18n.
|
1414 |
msgid ""
|
1415 |
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1416 |
"will get a follow-up email to %s once we have an update."
|
1417 |
msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
|
1418 |
|
1419 |
-
#: includes/i18n.php:
|
1420 |
msgid "I'm a system administrator"
|
1421 |
msgstr "Sono un sistemista"
|
1422 |
|
1423 |
-
#: includes/i18n.php:
|
1424 |
msgid ""
|
1425 |
-
"Great, please whitelist the following domains: %s. Once you done,
|
1426 |
-
" the plugin and activate it again."
|
1427 |
-
msgstr "Perfetto, aggiungi alla whitelist i seguenti domini: %s.
|
1428 |
|
1429 |
-
#: includes/i18n.php:
|
1430 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1431 |
msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
|
1432 |
|
1433 |
-
#: includes/i18n.php:
|
1434 |
msgid ""
|
1435 |
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1436 |
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1437 |
"the plugin and reactivate it back again."
|
1438 |
msgstr "Perfetto, installa cURL ed attivalo nel tuo file php.ini. Per essere sicuro di averlo attivato con successo, usa \"phpinfo()\". Una volta attivato disattva il plugin e attivalo di nuovo."
|
1439 |
|
1440 |
-
#: includes/i18n.php:
|
1441 |
msgid ""
|
1442 |
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1443 |
"you ASAP if you give us a chance."
|
1444 |
msgstr "Siamo sicuri che sia un nostro problema e siamo più che felici di risolverlo per te al più presto. Per poter procedere abbiamo bisogno del tuo consenso."
|
1445 |
|
1446 |
-
#: includes/i18n.php:
|
1447 |
msgid ""
|
1448 |
"Sorry for the inconvenience and we are here to help if you give us a chance."
|
1449 |
msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
|
1450 |
|
1451 |
-
#: includes/i18n.php:
|
1452 |
msgid "Yes - I'm giving you a chance to fix it"
|
1453 |
msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
|
1454 |
|
1455 |
-
#: includes/i18n.php:
|
1456 |
msgid ""
|
1457 |
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1458 |
"You will get a follow-up email to %s once we have an update."
|
1459 |
msgstr "Faremo del nostro meglio per mettere il server in whitelist e risolvere il problema il prima possibile. Avrai un aggiornamento dello stato tramite email all'indirizzo %s."
|
1460 |
|
1461 |
-
#: includes/i18n.php:
|
1462 |
msgid "Let's try your previous version"
|
1463 |
msgstr "Proviamo con la versione precedente"
|
1464 |
|
1465 |
-
#: includes/i18n.php:
|
1466 |
msgid "Uninstall this version and install the previous one."
|
1467 |
msgstr "Disinstalla questa versione e installa quella precedente."
|
1468 |
|
1469 |
-
#: includes/i18n.php:
|
1470 |
msgid "That's exhausting, please deactivate"
|
1471 |
msgstr "È estenuante, disattivalo"
|
1472 |
|
1473 |
-
#: includes/i18n.php:
|
1474 |
msgid ""
|
1475 |
"We feel your frustration and sincerely apologize for the inconvenience. Hope"
|
1476 |
" to see you again in the future."
|
1477 |
msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
|
1478 |
|
1479 |
-
#: includes/i18n.php:
|
1480 |
msgid ""
|
1481 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
1482 |
"technical staff. We will get back to you as soon as we have an update to %s."
|
1483 |
" Appreciate your patience."
|
1484 |
msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza."
|
1485 |
|
1486 |
-
#: includes/i18n.php:
|
1487 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1488 |
msgid ""
|
1489 |
"Your server is blocking the access to Freemius' API, which is crucial for "
|
1490 |
"%1s synchronization. Please contact your host to whitelist %2s"
|
1491 |
msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist."
|
1492 |
|
1493 |
-
#: includes/i18n.php:
|
1494 |
msgid ""
|
1495 |
"It seems like one of the authentication parameters is wrong. Update your "
|
1496 |
"Public Key, Secret Key & User ID, and try again."
|
1497 |
msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
|
1498 |
|
1499 |
-
#: includes/i18n.php:
|
1500 |
msgid ""
|
1501 |
"Please check your mailbox, you should receive an email via %s to confirm the"
|
1502 |
" ownership change. From security reasons, you must confirm the change within"
|
@@ -1504,122 +1577,122 @@ msgid ""
|
|
1504 |
"folder."
|
1505 |
msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata."
|
1506 |
|
1507 |
-
#: includes/i18n.php:
|
1508 |
msgid ""
|
1509 |
"Thanks for confirming the ownership change. An email was just sent to %s for"
|
1510 |
" final approval."
|
1511 |
msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
|
1512 |
|
1513 |
-
#: includes/i18n.php:
|
1514 |
msgid "%s is the new owner of the account."
|
1515 |
msgstr "%s è il nuovo proprietario dell'account."
|
1516 |
|
1517 |
-
#: includes/i18n.php:
|
1518 |
msgctxt "addonX cannot run without pluginY"
|
1519 |
msgid "%s cannot run without %s."
|
1520 |
msgstr "%s non può funzionare senza %s."
|
1521 |
|
1522 |
-
#: includes/i18n.php:
|
1523 |
msgctxt "addonX cannot run..."
|
1524 |
msgid "%s cannot run without the plugin."
|
1525 |
msgstr "%s non può funzionare senza il plugin."
|
1526 |
|
1527 |
-
#: includes/i18n.php:
|
1528 |
msgctxt "pluginX activation was successfully..."
|
1529 |
msgid "%s activation was successfully completed."
|
1530 |
msgstr "%s è stato attivato con successo."
|
1531 |
|
1532 |
-
#: includes/i18n.php:
|
1533 |
msgctxt "Plugin installer section title"
|
1534 |
msgid "Features & Pricing"
|
1535 |
msgstr "Caratteristiche & prezzi"
|
1536 |
|
1537 |
-
#: includes/i18n.php:
|
1538 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1539 |
msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
|
1540 |
|
1541 |
-
#: includes/i18n.php:
|
1542 |
msgid "Paid add-on must be deployed to Freemius."
|
1543 |
msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
|
1544 |
|
1545 |
-
#: includes/i18n.php:
|
1546 |
msgid ""
|
1547 |
"%s is a premium only add-on. You have to purchase a license first before "
|
1548 |
"activating the plugin."
|
1549 |
msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
|
1550 |
|
1551 |
-
#: includes/i18n.php:
|
1552 |
msgid ""
|
1553 |
"%s free trial was successfully cancelled. Since the add-on is premium only "
|
1554 |
"it was automatically deactivated. If you like to use it in the future, "
|
1555 |
"you'll have to purchase a license."
|
1556 |
msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza."
|
1557 |
|
1558 |
-
#: includes/i18n.php:
|
1559 |
msgctxt "as every month"
|
1560 |
msgid "Monthly"
|
1561 |
msgstr "Mensilmente"
|
1562 |
|
1563 |
-
#: includes/i18n.php:
|
1564 |
msgctxt "as monthly period"
|
1565 |
msgid "mo"
|
1566 |
msgstr "mese"
|
1567 |
|
1568 |
-
#: includes/i18n.php:
|
1569 |
msgctxt "as once a year"
|
1570 |
msgid "Annual"
|
1571 |
msgstr "Annuale"
|
1572 |
|
1573 |
-
#: includes/i18n.php:
|
1574 |
msgctxt "as once a year"
|
1575 |
msgid "Annually"
|
1576 |
msgstr "Annualmente"
|
1577 |
|
1578 |
-
#: includes/i18n.php:
|
1579 |
msgctxt "as once a year"
|
1580 |
msgid "Once"
|
1581 |
msgstr "Una volta"
|
1582 |
|
1583 |
-
#: includes/i18n.php:
|
1584 |
msgctxt "as annual period"
|
1585 |
msgid "year"
|
1586 |
msgstr "anno"
|
1587 |
|
1588 |
-
#: includes/i18n.php:
|
1589 |
msgid "Lifetime"
|
1590 |
msgstr "Tutta la vita"
|
1591 |
|
1592 |
-
#: includes/i18n.php:
|
1593 |
msgctxt "e.g. the best product"
|
1594 |
msgid "Best"
|
1595 |
msgstr "Migliore"
|
1596 |
|
1597 |
-
#: includes/i18n.php:
|
1598 |
msgctxt "e.g. billed monthly"
|
1599 |
msgid "Billed %s"
|
1600 |
msgstr "Fatturato %s"
|
1601 |
|
1602 |
-
#: includes/i18n.php:
|
1603 |
msgctxt "as a discount of $5 or 10%"
|
1604 |
msgid "Save %s"
|
1605 |
msgstr "Risparmia %s"
|
1606 |
|
1607 |
-
#: includes/i18n.php:
|
1608 |
msgid "View details"
|
1609 |
msgstr "Visualizza dettagli"
|
1610 |
|
1611 |
-
#: includes/i18n.php:
|
1612 |
msgctxt "button label"
|
1613 |
msgid "Approve & Start Trial"
|
1614 |
msgstr "Approva e inizia il periodo di prova gratuito"
|
1615 |
|
1616 |
-
#: includes/i18n.php:
|
1617 |
msgid ""
|
1618 |
"You are 1-click away from starting your %1$s-day free trial of the %2$s "
|
1619 |
"plan."
|
1620 |
msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
|
1621 |
|
1622 |
-
#: includes/i18n.php:
|
1623 |
msgid ""
|
1624 |
"For compliance with the WordPress.org guidelines, before we start the trial "
|
1625 |
"we ask that you opt-in with your user and non-sensitive site information, "
|
@@ -1627,42 +1700,172 @@ msgid ""
|
|
1627 |
"updates and to validate your trial."
|
1628 |
msgstr "Per seguire le linee guida di WordPress, prima di iniziare il periodo di prova ti chiediamo di iscriverti con il tuo utente e i dati non sensibili inerenti al tuo sito, così da permettere periodicamente al plugin di inviare dati a %s per poter controllare la presenza di nuove versioni e convalidare il tuo periodo di prova gratuito."
|
1629 |
|
1630 |
-
#: includes/i18n.php:
|
1631 |
msgid "Business name"
|
1632 |
msgstr "Nome della compagnia"
|
1633 |
|
1634 |
-
#: includes/i18n.php:
|
1635 |
msgid "Tax / VAT ID"
|
1636 |
msgstr "Numero Partita Iva o VAT"
|
1637 |
|
1638 |
-
#: includes/i18n.php:
|
1639 |
msgid "Address Line %d"
|
1640 |
msgstr "Riga indirizzo %d"
|
1641 |
|
1642 |
-
#: includes/i18n.php:
|
1643 |
msgid "Country"
|
1644 |
msgstr "Nazione"
|
1645 |
|
1646 |
-
#: includes/i18n.php:
|
1647 |
msgid "Select Country"
|
1648 |
msgstr "Seleziona Nazione"
|
1649 |
|
1650 |
-
#: includes/i18n.php:
|
1651 |
msgid "City"
|
1652 |
msgstr "Città"
|
1653 |
|
1654 |
-
#: includes/i18n.php:
|
1655 |
msgid "Town"
|
1656 |
msgstr "Cittadina"
|
1657 |
|
1658 |
-
#: includes/i18n.php:
|
1659 |
msgid "State"
|
1660 |
msgstr "Stato"
|
1661 |
|
1662 |
-
#: includes/i18n.php:
|
1663 |
msgid "Province"
|
1664 |
msgstr "Provincia"
|
1665 |
|
1666 |
-
#: includes/i18n.php:
|
1667 |
msgid "ZIP / Postal Code"
|
1668 |
msgstr "CAP"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2017 freemius
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
# Translators:
|
4 |
# Pelly Benassi <plasmax@gmail.com>, 2016
|
5 |
+
# Daniele Scasciafratte Mte90 <mte90net@gmail.com>, 2015-2017
|
6 |
+
# Pelly Benassi <plasmax@gmail.com>, 2016-2017
|
7 |
# Vova Feldman <vova@freemius.com>, 2015-2016
|
8 |
msgid ""
|
9 |
msgstr ""
|
10 |
"Project-Id-Version: WordPress SDK\n"
|
11 |
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
12 |
+
"POT-Creation-Date: \n"
|
13 |
+
"PO-Revision-Date: 2017-03-09 20:58+0000\n"
|
14 |
+
"Last-Translator: Pelly Benassi <plasmax@gmail.com>\n"
|
15 |
"Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n"
|
16 |
"MIME-Version: 1.0\n"
|
17 |
"Content-Type: text/plain; charset=UTF-8\n"
|
19 |
"Language: it_IT\n"
|
20 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
21 |
"X-Poedit-Basepath: ..\n"
|
22 |
+
"X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
|
23 |
"X-Poedit-SearchPath-0: .\n"
|
24 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
25 |
"X-Poedit-SourceCharset: UTF-8\n"
|
26 |
|
27 |
+
#: includes/i18n.php:35
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
msgid "Account"
|
29 |
msgstr "Account"
|
30 |
|
31 |
+
#: includes/i18n.php:36
|
32 |
msgid "Add On"
|
33 |
msgstr "Add-on"
|
34 |
|
35 |
+
#: includes/i18n.php:37
|
36 |
msgid "Contact Us"
|
37 |
msgstr "Contattaci"
|
38 |
|
39 |
+
#: includes/i18n.php:38
|
40 |
msgid "Contact Support"
|
41 |
msgstr "Contatta il supporto"
|
42 |
|
43 |
+
#: includes/i18n.php:39
|
44 |
msgid "Change Ownership"
|
45 |
msgstr "Cambia Proprietario"
|
46 |
|
47 |
+
#: includes/i18n.php:40
|
48 |
msgid "Support"
|
49 |
msgstr "Supporto"
|
50 |
|
51 |
+
#: includes/i18n.php:41
|
52 |
msgid "Support Forum"
|
53 |
msgstr "Forum di supporto"
|
54 |
|
55 |
+
#: includes/i18n.php:42
|
56 |
msgid "Add Ons"
|
57 |
msgstr "Add-on"
|
58 |
|
59 |
+
#: includes/i18n.php:43
|
60 |
msgctxt "verb"
|
61 |
msgid "Upgrade"
|
62 |
msgstr "Aggiornamento"
|
63 |
|
64 |
+
#: includes/i18n.php:44
|
65 |
msgid "Awesome"
|
66 |
msgstr "Fantastico"
|
67 |
|
68 |
+
#: includes/i18n.php:45
|
69 |
msgctxt "noun"
|
70 |
msgid "Pricing"
|
71 |
msgstr "Prezzi"
|
72 |
|
73 |
+
#: includes/i18n.php:46
|
74 |
msgctxt "noun"
|
75 |
msgid "Price"
|
76 |
msgstr "Prezzo"
|
77 |
|
78 |
+
#: includes/i18n.php:47
|
79 |
msgid "Unlimited Updates"
|
80 |
msgstr "Aggiornamenti Illimitati"
|
81 |
|
82 |
+
#: includes/i18n.php:48
|
83 |
msgctxt "verb"
|
84 |
msgid "Downgrade"
|
85 |
msgstr "Downgrade"
|
86 |
|
87 |
+
#: includes/i18n.php:49
|
88 |
msgid "Cancel Trial"
|
89 |
msgstr "Annulla prova gratuita"
|
90 |
|
91 |
+
#: includes/i18n.php:50
|
92 |
msgid "Free Trial"
|
93 |
msgstr "Prova gratuita"
|
94 |
|
95 |
+
#: includes/i18n.php:51
|
96 |
msgid "Start my free %s"
|
97 |
msgstr "Inizia la mia %s"
|
98 |
|
99 |
+
#: includes/i18n.php:52
|
100 |
msgid "No commitment for %s - cancel anytime"
|
101 |
msgstr "Nessun impegno con %s - cancella quando vuoi"
|
102 |
|
103 |
+
#: includes/i18n.php:53
|
104 |
msgid "After your free %s, pay as little as %s"
|
105 |
msgstr "Dopo il tuo %s gratuito, paghi solamente %s"
|
106 |
|
107 |
+
#: includes/i18n.php:54
|
108 |
msgid "Details"
|
109 |
msgstr "Dettagli"
|
110 |
|
111 |
+
#: includes/i18n.php:55
|
112 |
msgid "Account Details"
|
113 |
msgstr "Dettagli dell'account"
|
114 |
|
115 |
+
#: includes/i18n.php:56
|
116 |
msgctxt "verb"
|
117 |
msgid "Delete"
|
118 |
msgstr "Elimina"
|
119 |
|
120 |
+
#: includes/i18n.php:57
|
121 |
msgctxt "verb"
|
122 |
msgid "Show"
|
123 |
msgstr "Mostra"
|
124 |
|
125 |
+
#: includes/i18n.php:58
|
126 |
msgctxt "verb"
|
127 |
msgid "Hide"
|
128 |
msgstr "Nascondi"
|
129 |
|
130 |
+
#: includes/i18n.php:59
|
131 |
msgctxt "verb"
|
132 |
msgid "Edit"
|
133 |
msgstr "Modifica"
|
134 |
|
135 |
+
#: includes/i18n.php:60
|
136 |
msgctxt "verb"
|
137 |
msgid "Update"
|
138 |
msgstr "Aggiorna"
|
139 |
|
140 |
+
#: includes/i18n.php:61
|
141 |
msgid "Date"
|
142 |
msgstr "Data"
|
143 |
|
144 |
+
#: includes/i18n.php:62
|
145 |
msgid "Amount"
|
146 |
msgstr "Importo"
|
147 |
|
148 |
+
#: includes/i18n.php:63
|
149 |
msgid "Invoice"
|
150 |
msgstr "Fattura"
|
151 |
|
152 |
+
#: includes/i18n.php:64
|
153 |
msgid "Billing"
|
154 |
msgstr "Fatturazione"
|
155 |
|
156 |
+
#: includes/i18n.php:65
|
157 |
msgid "Payments"
|
158 |
msgstr "Pagamenti"
|
159 |
|
160 |
+
#: includes/i18n.php:66
|
161 |
msgid "Delete Account"
|
162 |
msgstr "Elimina Account"
|
163 |
|
164 |
+
#: includes/i18n.php:67
|
165 |
msgctxt "as close a window"
|
166 |
msgid "Dismiss"
|
167 |
msgstr "Chiudi"
|
168 |
|
169 |
+
#: includes/i18n.php:68
|
170 |
msgctxt "as product pricing plan"
|
171 |
msgid "Plan"
|
172 |
msgstr "Piano"
|
173 |
|
174 |
+
#: includes/i18n.php:69
|
175 |
msgid "Change Plan"
|
176 |
msgstr "Cambia piano"
|
177 |
|
178 |
+
#: includes/i18n.php:70
|
179 |
msgctxt "as download professional version"
|
180 |
msgid "Download %s Version"
|
181 |
msgstr "Scarica la versione %s"
|
182 |
|
183 |
+
#: includes/i18n.php:71
|
184 |
msgctxt "as download professional version now"
|
185 |
msgid "Download %s version now"
|
186 |
msgstr "Scarica la versione %s ora"
|
187 |
|
188 |
+
#: includes/i18n.php:72
|
189 |
msgctxt "as download latest version"
|
190 |
msgid "Download Latest"
|
191 |
msgstr "Scarica l'ultima versione"
|
192 |
|
193 |
+
#: includes/i18n.php:73
|
194 |
msgctxt "E.g. you have a professional license."
|
195 |
msgid "You have a %s license."
|
196 |
msgstr "Hai la licenza %s."
|
197 |
|
198 |
+
#: includes/i18n.php:74
|
199 |
msgid "New"
|
200 |
msgstr "Nuovo"
|
201 |
|
202 |
+
#: includes/i18n.php:75
|
203 |
msgid "Free"
|
204 |
msgstr "Gratuito"
|
205 |
|
206 |
+
#: includes/i18n.php:76
|
207 |
msgctxt "as trial plan"
|
208 |
msgid "Trial"
|
209 |
msgstr "Prova gratuita"
|
210 |
|
211 |
+
#: includes/i18n.php:77
|
212 |
msgctxt "as starting a trial plan"
|
213 |
msgid "Start Trial"
|
214 |
msgstr "Inizia il periodo di prova gratuito"
|
215 |
|
216 |
+
#: includes/i18n.php:78
|
217 |
msgctxt "verb"
|
218 |
msgid "Purchase"
|
219 |
msgstr "Acquisto"
|
220 |
|
221 |
+
#: includes/i18n.php:79
|
222 |
msgid "Purchase License"
|
223 |
msgstr "Acquista licenza"
|
224 |
|
225 |
+
#: includes/i18n.php:80
|
226 |
msgctxt "verb"
|
227 |
msgid "Buy"
|
228 |
msgstr "Compra"
|
229 |
|
230 |
+
#: includes/i18n.php:81
|
231 |
msgid "Buy License"
|
232 |
msgstr "Compra licenza"
|
233 |
|
234 |
+
#: includes/i18n.php:82
|
235 |
msgid "Single Site License"
|
236 |
msgstr "Licenza per sito singolo"
|
237 |
|
238 |
+
#: includes/i18n.php:83
|
239 |
msgid "Unlimited Licenses"
|
240 |
msgstr "Licenze illimitate"
|
241 |
|
242 |
+
#: includes/i18n.php:84
|
243 |
msgid "Up to %s Sites"
|
244 |
msgstr "Fino a %s siti"
|
245 |
|
246 |
+
#: includes/i18n.php:85
|
247 |
msgid "%sRenew your license now%s to access version %s features and support."
|
248 |
msgstr "%sRinnova la tua licenza ora%s per accedere a funzionalità e supporto della versione %s."
|
249 |
|
250 |
+
#: includes/i18n.php:86
|
251 |
msgid ""
|
252 |
"Enter the email address you've used for the upgrade below and we will resend"
|
253 |
" you the license key."
|
254 |
msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza."
|
255 |
|
256 |
+
#: includes/i18n.php:87
|
257 |
msgctxt "e.g. Professional Plan"
|
258 |
msgid "%s Plan"
|
259 |
msgstr "Piano %s"
|
260 |
|
261 |
+
#: includes/i18n.php:88
|
262 |
msgid "You are just one step away - %s"
|
263 |
msgstr "Sei a un passo dalla fine - %s"
|
264 |
|
265 |
+
#: includes/i18n.php:89
|
266 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
267 |
msgid "Complete \"%s\" Activation Now"
|
268 |
msgstr "Completa l'attivazione di \"%s\" ora"
|
269 |
|
270 |
+
#: includes/i18n.php:91
|
271 |
msgid "We made a few tweaks to the plugin, %s"
|
272 |
msgstr "Abbiamo apportato alcune modifiche al plugin, %s"
|
273 |
|
274 |
+
#: includes/i18n.php:92
|
275 |
msgid "Opt-in to make \"%s\" Better!"
|
276 |
msgstr "Contribuisci a rendere \"%s\" migliore!"
|
277 |
|
278 |
+
#: includes/i18n.php:93
|
279 |
msgid "Error"
|
280 |
msgstr "Errore"
|
281 |
|
282 |
+
#: includes/i18n.php:94
|
283 |
msgid ""
|
284 |
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
285 |
"sdk@freemius.com with the current error."
|
286 |
msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore."
|
287 |
|
288 |
+
#: includes/i18n.php:97
|
289 |
msgctxt "as expiration date"
|
290 |
msgid "Expiration"
|
291 |
msgstr "Scadenza"
|
292 |
|
293 |
+
#: includes/i18n.php:98
|
294 |
msgctxt "as software license"
|
295 |
msgid "License"
|
296 |
msgstr "Licenza"
|
297 |
|
298 |
+
#: includes/i18n.php:99
|
299 |
msgid "not verified"
|
300 |
msgstr "non verificato"
|
301 |
|
302 |
+
#: includes/i18n.php:100
|
303 |
msgid "Verify Email"
|
304 |
msgstr "Verifica email"
|
305 |
|
306 |
+
#: includes/i18n.php:101
|
307 |
msgctxt "e.g. expires in 2 months"
|
308 |
msgid "Expires in %s"
|
309 |
msgstr "Scade in %s"
|
310 |
|
311 |
+
#: includes/i18n.php:102
|
312 |
msgctxt "e.g. auto renews in 2 months"
|
313 |
msgid "Auto renews in %s"
|
314 |
msgstr "Rinnovo automatico in %s"
|
315 |
|
316 |
+
#: includes/i18n.php:103
|
317 |
msgid "No expiration"
|
318 |
msgstr "Nessuna scadenza"
|
319 |
|
320 |
+
#: includes/i18n.php:104
|
321 |
msgid "Expired"
|
322 |
msgstr "Scaduto"
|
323 |
|
324 |
+
#: includes/i18n.php:105
|
325 |
msgid "Cancelled"
|
326 |
msgstr "Annullato"
|
327 |
|
328 |
+
#: includes/i18n.php:106
|
329 |
msgctxt "e.g. In 2 hours"
|
330 |
msgid "In %s"
|
331 |
msgstr "In %s"
|
332 |
|
333 |
+
#: includes/i18n.php:107
|
334 |
msgctxt "e.g. 2 min ago"
|
335 |
msgid "%s ago"
|
336 |
msgstr "%s fa"
|
337 |
|
338 |
+
#: includes/i18n.php:109
|
339 |
+
msgid "%s or higher"
|
340 |
+
msgstr "%s o superiore"
|
341 |
+
|
342 |
+
#: includes/i18n.php:110
|
343 |
msgctxt "as plugin version"
|
344 |
msgid "Version"
|
345 |
msgstr "Versione"
|
346 |
|
347 |
+
#: includes/i18n.php:111
|
348 |
msgid "Name"
|
349 |
msgstr "Nome"
|
350 |
|
351 |
+
#: includes/i18n.php:112
|
352 |
msgid "Email"
|
353 |
msgstr "Email"
|
354 |
|
355 |
+
#: includes/i18n.php:113
|
356 |
msgid "Email address"
|
357 |
msgstr "Indirizzo email"
|
358 |
|
359 |
+
#: includes/i18n.php:114
|
360 |
msgid "Verified"
|
361 |
msgstr "Verificato"
|
362 |
|
363 |
+
#: includes/i18n.php:115
|
364 |
+
msgid "Module"
|
365 |
+
msgstr "Modulo"
|
366 |
+
|
367 |
+
#: includes/i18n.php:116
|
368 |
+
msgid "Module Type"
|
369 |
+
msgstr "Tipo di modulo"
|
370 |
+
|
371 |
+
#: includes/i18n.php:117
|
372 |
msgid "Plugin"
|
373 |
msgstr "Plugin"
|
374 |
|
375 |
+
#: includes/i18n.php:118
|
376 |
msgid "Plugins"
|
377 |
msgstr "Plugin"
|
378 |
|
379 |
+
#: includes/i18n.php:119
|
380 |
+
msgid "Theme"
|
381 |
+
msgstr "Tema"
|
382 |
+
|
383 |
+
#: includes/i18n.php:120
|
384 |
msgid "Themes"
|
385 |
msgstr "Temi"
|
386 |
|
387 |
+
#: includes/i18n.php:121
|
388 |
msgctxt "as file/folder path"
|
389 |
msgid "Path"
|
390 |
msgstr "Percorso"
|
391 |
|
392 |
+
#: includes/i18n.php:122
|
393 |
msgid "Title"
|
394 |
msgstr "Titolo"
|
395 |
|
396 |
+
#: includes/i18n.php:123
|
397 |
msgid "Free version"
|
398 |
msgstr "Versione gratuita"
|
399 |
|
400 |
+
#: includes/i18n.php:124
|
401 |
msgid "Premium version"
|
402 |
msgstr "Versione premium"
|
403 |
|
404 |
+
#: includes/i18n.php:125
|
405 |
msgctxt "as WP plugin slug"
|
406 |
msgid "Slug"
|
407 |
msgstr "Slug"
|
408 |
|
409 |
+
#: includes/i18n.php:126
|
410 |
msgid "ID"
|
411 |
msgstr "ID"
|
412 |
|
413 |
+
#: includes/i18n.php:127
|
414 |
msgid "Users"
|
415 |
msgstr "Utenti"
|
416 |
|
417 |
+
#: includes/i18n.php:128
|
418 |
msgid "Plugin Installs"
|
419 |
msgstr "Installazioni Plugin"
|
420 |
|
421 |
+
#: includes/i18n.php:129
|
422 |
+
msgid "%s Installs"
|
423 |
+
msgstr "%s Installazioni"
|
424 |
+
|
425 |
+
#: includes/i18n.php:130
|
426 |
msgctxt "like websites"
|
427 |
msgid "Sites"
|
428 |
msgstr "Siti"
|
429 |
|
430 |
+
#: includes/i18n.php:131
|
431 |
msgid "User ID"
|
432 |
msgstr "ID utente"
|
433 |
|
434 |
+
#: includes/i18n.php:132
|
435 |
msgid "Site ID"
|
436 |
msgstr "ID del sito"
|
437 |
|
438 |
+
#: includes/i18n.php:133
|
439 |
msgid "Public Key"
|
440 |
msgstr "Chiave pubblica"
|
441 |
|
442 |
+
#: includes/i18n.php:134
|
443 |
msgid "Secret Key"
|
444 |
msgstr "Chiave segreta"
|
445 |
|
446 |
+
#: includes/i18n.php:135
|
447 |
msgctxt "as secret encryption key missing"
|
448 |
msgid "No Secret"
|
449 |
msgstr "Nessuna chiave"
|
450 |
|
451 |
+
#: includes/i18n.php:136
|
452 |
msgid "No ID"
|
453 |
msgstr "Nessun ID"
|
454 |
|
455 |
+
#: includes/i18n.php:137
|
456 |
msgctxt "as synchronize license"
|
457 |
msgid "Sync License"
|
458 |
msgstr "Sincronizza la licenza"
|
459 |
|
460 |
+
#: includes/i18n.php:138
|
461 |
msgctxt "as synchronize"
|
462 |
msgid "Sync"
|
463 |
msgstr "Sincronizza"
|
464 |
|
465 |
+
#: includes/i18n.php:139
|
466 |
msgid "Activate License"
|
467 |
msgstr "Attiva licenza"
|
468 |
|
469 |
+
#: includes/i18n.php:140
|
470 |
msgid "Activate Free Version"
|
471 |
msgstr "Attiva versione gratuita"
|
472 |
|
473 |
+
#: includes/i18n.php:141
|
474 |
msgid ""
|
475 |
"Please enter the license key that you received in the email right after the "
|
476 |
"purchase:"
|
477 |
msgstr "Per favore inserisci la chiave di licenza che hai ricevuto via mail subito dopo l'acquisto:"
|
478 |
|
479 |
+
#: includes/i18n.php:142
|
480 |
msgid "Activating license..."
|
481 |
msgstr "Sto attivando la licenza..."
|
482 |
|
483 |
+
#: includes/i18n.php:143
|
484 |
msgid "Change License"
|
485 |
msgstr "Cambia licenza"
|
486 |
|
487 |
+
#: includes/i18n.php:144
|
488 |
msgid "Update License"
|
489 |
msgstr "Aggiorna licenza"
|
490 |
|
491 |
+
#: includes/i18n.php:145
|
492 |
msgid "Deactivate License"
|
493 |
msgstr "Disattiva licenza"
|
494 |
|
495 |
+
#: includes/i18n.php:146
|
496 |
msgid "Activate"
|
497 |
msgstr "Attiva"
|
498 |
|
499 |
+
#: includes/i18n.php:147
|
500 |
msgid "Deactivate"
|
501 |
msgstr "Disattiva"
|
502 |
|
503 |
+
#: includes/i18n.php:148
|
504 |
msgid "Skip & Deactivate"
|
505 |
msgstr "Salta e disattiva"
|
506 |
|
507 |
+
#: includes/i18n.php:149
|
508 |
+
msgid "Skip & %s"
|
509 |
+
msgstr "Salta & %s"
|
510 |
+
|
511 |
+
#: includes/i18n.php:150
|
512 |
msgid "No - just deactivate"
|
513 |
msgstr "No - disattiva e basta"
|
514 |
|
515 |
+
#: includes/i18n.php:151
|
516 |
msgid "Yes - do your thing"
|
517 |
msgstr "Sì - fai pure"
|
518 |
|
519 |
+
#: includes/i18n.php:152
|
520 |
msgctxt "active mode"
|
521 |
msgid "Active"
|
522 |
msgstr "Attiva"
|
523 |
|
524 |
+
#: includes/i18n.php:153
|
525 |
msgctxt "is active mode?"
|
526 |
msgid "Is Active"
|
527 |
msgstr "è attiva"
|
528 |
|
529 |
+
#: includes/i18n.php:154
|
530 |
msgid "Install Now"
|
531 |
msgstr "Installa ora"
|
532 |
|
533 |
+
#: includes/i18n.php:155
|
534 |
msgid "Install Update Now"
|
535 |
msgstr "Installa l'aggiornamento ora"
|
536 |
|
537 |
+
#: includes/i18n.php:156
|
538 |
msgid "More information about %s"
|
539 |
msgstr "Ulteriori informazioni su %s"
|
540 |
|
541 |
+
#: includes/i18n.php:157
|
542 |
msgid "Localhost"
|
543 |
msgstr "Localhost"
|
544 |
|
545 |
+
#: includes/i18n.php:158
|
546 |
msgctxt "as activate Professional plan"
|
547 |
msgid "Activate %s Plan"
|
548 |
msgstr "Attivare il piano %s"
|
549 |
|
550 |
+
#: includes/i18n.php:159
|
551 |
msgctxt "as 5 licenses left"
|
552 |
msgid "%s left"
|
553 |
msgstr "%s rimanenti"
|
554 |
|
555 |
+
#: includes/i18n.php:160
|
556 |
msgid "Last license"
|
557 |
msgstr "Ultima licenza"
|
558 |
|
559 |
+
#: includes/i18n.php:161
|
560 |
msgid "What is your %s?"
|
561 |
msgstr "Qual è il tuo %s?"
|
562 |
|
563 |
+
#: includes/i18n.php:162
|
564 |
msgid "Activate this add-on"
|
565 |
msgstr "Attivare questo addon"
|
566 |
|
567 |
+
#: includes/i18n.php:163
|
568 |
msgid ""
|
569 |
"Deactivating your license will block all premium features, but will enable "
|
570 |
"you to activate the license on another site. Are you sure you want to "
|
571 |
"proceed?"
|
572 |
msgstr "La disattivazione della licenza bloccherà tutte le funzionalità premium, ma vi permetterà di attivare la licenza su un altro sito. Sei sicuro di voler procedere?"
|
573 |
|
574 |
+
#: includes/i18n.php:164
|
575 |
msgid ""
|
576 |
"Deleting the account will automatically deactivate your %s plan license so "
|
577 |
"you can use it on other sites. If you want to terminate the recurring "
|
579 |
"account. Are you sure you would like to continue with the deletion?"
|
580 |
msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?"
|
581 |
|
582 |
+
#: includes/i18n.php:165
|
583 |
msgid ""
|
584 |
"Deletion is not temporary. Only delete if you no longer want to use this "
|
585 |
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
586 |
msgstr "L'eliminazione non è temporanea. Cancella solo se non si desidera più utilizzare questo plugin. Sei sicuro di voler continuare con l'eliminazione?"
|
587 |
|
588 |
+
#: includes/i18n.php:166
|
589 |
msgid ""
|
590 |
"Downgrading your plan will immediately stop all future recurring payments "
|
591 |
"and your %s plan license will expire in %s."
|
592 |
msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s."
|
593 |
|
594 |
+
#: includes/i18n.php:167
|
595 |
msgid ""
|
596 |
"Cancelling the trial will immediately block access to all premium features. "
|
597 |
"Are you sure?"
|
598 |
msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?"
|
599 |
|
600 |
+
#: includes/i18n.php:168
|
601 |
msgid ""
|
602 |
"You can still enjoy all %s features but you will not have access to plugin "
|
603 |
"updates and support."
|
604 |
msgstr "Puoi ancora sfruttare tutte le funzionalità di %s, ma non avrai accesso al supporto ed agli aggiornamenti del plugin."
|
605 |
|
606 |
+
#: includes/i18n.php:169
|
607 |
msgid ""
|
608 |
+
"Once your license expires you can still use the Free version but you will "
|
609 |
+
"NOT have access to the %s features."
|
610 |
+
msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s."
|
611 |
|
612 |
+
#: includes/i18n.php:170
|
613 |
msgid "Are you sure you want to proceed?"
|
614 |
msgstr "Sei sicuro di voler procedere?"
|
615 |
|
616 |
+
#: includes/i18n.php:173
|
617 |
msgid "Add Ons for %s"
|
618 |
msgstr "Add-on per %s"
|
619 |
|
620 |
+
#: includes/i18n.php:174
|
621 |
msgid ""
|
622 |
"We could'nt load the add-ons list. It's probably an issue on our side, "
|
623 |
"please try to come back in few minutes."
|
624 |
msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto."
|
625 |
|
626 |
+
#: includes/i18n.php:176
|
627 |
msgid "Anonymous feedback"
|
628 |
msgstr "Feedback anonimo"
|
629 |
|
630 |
+
#: includes/i18n.php:177
|
631 |
msgid "Quick feedback"
|
632 |
msgstr "Feedback veloce"
|
633 |
|
634 |
+
#: includes/i18n.php:178
|
635 |
msgid "If you have a moment, please let us know why you are deactivating"
|
636 |
msgstr "Se hai un momento, potresti dirci perché lo hai disattivato?"
|
637 |
|
638 |
+
#: includes/i18n.php:179
|
639 |
msgid "Yes - Deactivate"
|
640 |
msgstr "Si - Disattiva"
|
641 |
|
642 |
+
#: includes/i18n.php:180
|
643 |
msgid "Submit & Deactivate"
|
644 |
msgstr "Invia & Disattiva"
|
645 |
|
646 |
+
#: includes/i18n.php:181
|
647 |
msgid "Cancel"
|
648 |
msgstr "Annulla"
|
649 |
|
650 |
+
#: includes/i18n.php:182
|
651 |
msgid "I no longer need the plugin"
|
652 |
msgstr "Non ho piú bisogno di questo plugin"
|
653 |
|
654 |
+
#: includes/i18n.php:183
|
655 |
msgid "I found a better plugin"
|
656 |
msgstr "Ho trovato un plugin migliore"
|
657 |
|
658 |
+
#: includes/i18n.php:184
|
659 |
msgid "I only needed the plugin for a short period"
|
660 |
msgstr "Avevo bisogno del plugin solo per un breve periodo"
|
661 |
|
662 |
+
#: includes/i18n.php:185
|
663 |
msgid "The plugin broke my site"
|
664 |
msgstr "Il plugin ha causato problemi al mio sito"
|
665 |
|
666 |
+
#: includes/i18n.php:186
|
667 |
msgid "The plugin suddenly stopped working"
|
668 |
msgstr "Il plugin ha smesso di funzionare"
|
669 |
|
670 |
+
#: includes/i18n.php:187
|
671 |
msgid "I can't pay for it anymore"
|
672 |
msgstr "Non posso piú pagarlo"
|
673 |
|
674 |
+
#: includes/i18n.php:188
|
675 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
676 |
msgstr "È una disattivazione temporanea. Sto solo cercando di risolvere un problema."
|
677 |
|
678 |
+
#: includes/i18n.php:189
|
679 |
msgctxt ""
|
680 |
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
681 |
"in the modal box."
|
682 |
msgid "Other"
|
683 |
msgstr "Altro"
|
684 |
|
685 |
+
#: includes/i18n.php:191
|
686 |
msgid "Kindly tell us the reason so we can improve."
|
687 |
msgstr "Spiegandoci il motivo ci aiuterai a migliorare."
|
688 |
|
689 |
+
#: includes/i18n.php:192
|
690 |
msgid "What's the plugin's name?"
|
691 |
msgstr "Qual è il nome del plugin?"
|
692 |
|
693 |
+
#: includes/i18n.php:193
|
694 |
msgid "What price would you feel comfortable paying?"
|
695 |
msgstr "Che prezzo ritieni opportuno pagare?"
|
696 |
|
697 |
+
#: includes/i18n.php:194
|
698 |
msgid "I couldn't understand how to make it work"
|
699 |
msgstr "Non capisco come farlo funzionare"
|
700 |
|
701 |
+
#: includes/i18n.php:195
|
702 |
msgid ""
|
703 |
"The plugin is great, but I need specific feature that you don't support"
|
704 |
msgstr "Il plugin é ottimo ma ho bisogno di una funzionalitá specifica che non é supportata"
|
705 |
|
706 |
+
#: includes/i18n.php:196
|
707 |
msgid "The plugin is not working"
|
708 |
msgstr "Il plugin non funziona"
|
709 |
|
710 |
+
#: includes/i18n.php:197
|
711 |
msgid "It's not what I was looking for"
|
712 |
msgstr "Non é quello che stavo cercando"
|
713 |
|
714 |
+
#: includes/i18n.php:198
|
715 |
msgid "The plugin didn't work as expected"
|
716 |
msgstr "Il plugin non funziona come mi aspettavo"
|
717 |
|
718 |
+
#: includes/i18n.php:199
|
719 |
msgid "What feature?"
|
720 |
msgstr "Quale funzionalitá?"
|
721 |
|
722 |
+
#: includes/i18n.php:200
|
723 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
724 |
msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..."
|
725 |
|
726 |
+
#: includes/i18n.php:201
|
727 |
msgid "What you've been looking for?"
|
728 |
msgstr "Che cosa stai cercando?"
|
729 |
|
730 |
+
#: includes/i18n.php:202
|
731 |
msgid "What did you expect?"
|
732 |
msgstr "Che cosa ti aspettavi?"
|
733 |
|
734 |
+
#: includes/i18n.php:203
|
735 |
msgid "The plugin didn't work"
|
736 |
msgstr "Il plugin non funziona"
|
737 |
|
738 |
+
#: includes/i18n.php:204
|
739 |
msgid "I don't like to share my information with you"
|
740 |
msgstr "Non voglio condividere i miei dati con te"
|
741 |
|
742 |
+
#: includes/i18n.php:205
|
743 |
msgid ""
|
744 |
"You might have missed it, but you don't have to share any data and can just "
|
745 |
"%s the opt-in."
|
746 |
msgstr "Potresti non averci fatto caso, ma non sei obbligato a condividere i tuoi dati e puoi semplicemente %s la tua partecipazione."
|
747 |
|
748 |
+
#: includes/i18n.php:209
|
749 |
msgctxt "greeting"
|
750 |
msgid "Hey %s,"
|
751 |
msgstr "Hey %s,"
|
752 |
|
753 |
+
#: includes/i18n.php:210
|
754 |
msgctxt "a greeting. E.g. Thanks John!"
|
755 |
msgid "Thanks %s!"
|
756 |
msgstr "Grazie %s!"
|
757 |
|
758 |
+
#: includes/i18n.php:211
|
759 |
msgid ""
|
760 |
"Never miss an important update - opt-in to our security and feature updates "
|
761 |
"notifications, and non-sensitive diagnostic tracking with %4$s."
|
762 |
msgstr "Non perdere nessun aggiornamento importante - iscriviti per ricevere notifiche su aggiornamenti relativi alla sicurezza e nuove versioni, oltre al tracciamento di diagnostica non sensibile con %4$s."
|
763 |
|
764 |
+
#: includes/i18n.php:212
|
765 |
msgid ""
|
766 |
"Please help us improve %1$s! If you opt-in, some data about your usage of "
|
767 |
"%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
|
768 |
"work just fine."
|
769 |
msgstr "Aiutaci a migliorare %1$s! Se ti iscrivi, alcuni dati riguardanti il tuo utilizzo di %1$s verranno inviati a %4$s. Se salti questo passaggio, non c'è problema! %1$s funzionerà ugualmente."
|
770 |
|
771 |
+
#: includes/i18n.php:213
|
772 |
msgid ""
|
773 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
774 |
"make sure you click the activation button in that email to %s."
|
775 |
+
msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s."
|
776 |
|
777 |
+
#: includes/i18n.php:214
|
778 |
msgid "complete the install"
|
779 |
msgstr "completa l'installazione"
|
780 |
|
781 |
+
#: includes/i18n.php:215
|
782 |
msgid "start the trial"
|
783 |
msgstr "Inizia il periodo di prova gratuito"
|
784 |
|
785 |
+
#: includes/i18n.php:216
|
786 |
msgid ""
|
787 |
"Thanks for purchasing %s! To get started, please enter your license key:"
|
788 |
msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:"
|
789 |
|
790 |
+
#: includes/i18n.php:217
|
791 |
msgid ""
|
792 |
"The plugin will be periodically sending data to %s to check for plugin "
|
793 |
"updates and verify the validity of your license."
|
794 |
msgstr "Il plugin invierà dati periodicamente a %s per controllare l'esistenza di aggiornamenti e verificare la validità della tua licenza."
|
795 |
|
796 |
+
#: includes/i18n.php:218
|
797 |
msgid "What permissions are being granted?"
|
798 |
msgstr "Quali autorizzazioni vengono concesse?"
|
799 |
|
800 |
+
#: includes/i18n.php:219
|
801 |
msgid "Your Profile Overview"
|
802 |
msgstr "Panoramica del tuo profilo"
|
803 |
|
804 |
+
#: includes/i18n.php:220
|
805 |
msgid "Name and email address"
|
806 |
msgstr "Nome ed indirizzo email"
|
807 |
|
808 |
+
#: includes/i18n.php:221
|
809 |
msgid "Your Site Overview"
|
810 |
msgstr "Panoramica del tuo sito"
|
811 |
|
812 |
+
#: includes/i18n.php:222
|
813 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
814 |
msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi"
|
815 |
|
816 |
+
#: includes/i18n.php:223
|
817 |
msgid "Current Plugin Events"
|
818 |
msgstr "Eventi correnti del plugin"
|
819 |
|
820 |
+
#: includes/i18n.php:224
|
821 |
msgid "Activation, deactivation and uninstall"
|
822 |
msgstr "Attiva, disattivazione e disinstallazione"
|
823 |
|
824 |
+
#: includes/i18n.php:225
|
825 |
msgid "Plugins & Themes"
|
826 |
msgstr "Plugin e temi"
|
827 |
|
828 |
+
#: includes/i18n.php:226
|
829 |
msgid "Titles, versions and state."
|
830 |
msgstr "Titoli, versioni e stato."
|
831 |
|
832 |
+
#: includes/i18n.php:227
|
833 |
msgid "Admin Notices"
|
834 |
msgstr "Avvisi amministratore"
|
835 |
|
836 |
+
#: includes/i18n.php:228
|
837 |
msgid "Newsletter"
|
838 |
msgstr "Newsletter"
|
839 |
|
840 |
+
#: includes/i18n.php:229
|
841 |
msgid "Updates, announcements, marketing, no spam"
|
842 |
msgstr "Aggiornamenti, annunci, marketing, no spam"
|
843 |
|
844 |
+
#: includes/i18n.php:230
|
845 |
msgid "Privacy Policy"
|
846 |
msgstr "Politica sulla privacy"
|
847 |
|
848 |
+
#: includes/i18n.php:231
|
849 |
msgid "Terms of Service"
|
850 |
msgstr "Termini del Servizio"
|
851 |
|
852 |
+
#: includes/i18n.php:232
|
853 |
msgctxt "as activating plugin"
|
854 |
msgid "Activating"
|
855 |
msgstr "Attivazione"
|
856 |
|
857 |
+
#: includes/i18n.php:233
|
858 |
msgctxt "as in the process of sending an email"
|
859 |
msgid "Sending email"
|
860 |
msgstr "Invio email"
|
861 |
|
862 |
+
#: includes/i18n.php:234
|
863 |
msgctxt "button label"
|
864 |
msgid "Allow & Continue"
|
865 |
msgstr "Consenti & Continua"
|
866 |
|
867 |
+
#: includes/i18n.php:235
|
868 |
msgctxt "button label"
|
869 |
msgid "Agree & Activate License"
|
870 |
msgstr "Accetta e attiva la licenza"
|
871 |
|
872 |
+
#: includes/i18n.php:236
|
873 |
msgctxt "verb"
|
874 |
msgid "Skip"
|
875 |
msgstr "Salta"
|
876 |
|
877 |
+
#: includes/i18n.php:237
|
878 |
msgid "Click here to use the plugin anonymously"
|
879 |
msgstr "Fai clic qui per usare il plugin anonimamente"
|
880 |
|
881 |
+
#: includes/i18n.php:238
|
882 |
msgid "Re-send activation email"
|
883 |
msgstr "Invia nuovamente l'email di attivazione"
|
884 |
|
885 |
+
#: includes/i18n.php:239
|
886 |
msgid "License key"
|
887 |
msgstr "Chiave di licenza"
|
888 |
|
889 |
+
#: includes/i18n.php:240
|
890 |
msgid "Send License Key"
|
891 |
msgstr "Invia chiave di licenza"
|
892 |
|
893 |
+
#: includes/i18n.php:241
|
894 |
msgid "Sending license key"
|
895 |
msgstr "Invio chiave di licenza"
|
896 |
|
897 |
+
#: includes/i18n.php:242
|
898 |
msgid "Have a license key?"
|
899 |
msgstr "Hai una chiave di licenza?"
|
900 |
|
901 |
+
#: includes/i18n.php:243
|
902 |
msgid "Don't have a license key?"
|
903 |
msgstr "Non hai una chiave di licenza?"
|
904 |
|
905 |
+
#: includes/i18n.php:244
|
906 |
msgid "Can't find your license key?"
|
907 |
msgstr "Non trovi la tua chiave di licenza?"
|
908 |
|
909 |
+
#: includes/i18n.php:245
|
910 |
msgid ""
|
911 |
"We couldn't find your email address in the system, are you sure it's the "
|
912 |
"right address?"
|
913 |
msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?"
|
914 |
|
915 |
+
#: includes/i18n.php:246
|
916 |
msgid ""
|
917 |
"We can't see any active licenses associated with that email address, are you"
|
918 |
" sure it's the right address?"
|
919 |
msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?"
|
920 |
|
921 |
+
#: includes/i18n.php:247
|
922 |
msgid "Opt In"
|
923 |
msgstr "Iscriviti"
|
924 |
|
925 |
+
#: includes/i18n.php:248
|
926 |
msgid "Opt Out"
|
927 |
msgstr "Cancella iscrizione"
|
928 |
|
929 |
+
#: includes/i18n.php:249
|
930 |
msgid "On second thought - I want to continue helping"
|
931 |
msgstr "Ci ho ripensato, voglio continuare a fornire il mio aiuto"
|
932 |
|
933 |
+
#: includes/i18n.php:250
|
934 |
msgid "Opting out..."
|
935 |
msgstr "Cancellamento dell'iscrizione..."
|
936 |
|
937 |
+
#: includes/i18n.php:251
|
938 |
msgid "Opting in..."
|
939 |
msgstr "Iscrizione in corso..."
|
940 |
|
941 |
+
#: includes/i18n.php:252
|
942 |
msgid ""
|
943 |
"We appreciate your help in making the %s better by letting us track some "
|
944 |
"usage data."
|
945 |
msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s"
|
946 |
|
947 |
+
#: includes/i18n.php:253
|
948 |
msgid ""
|
949 |
"Usage tracking is done in the name of making %s better. Making a better user"
|
950 |
" experience, prioritizing new features, and more good things. We'd really "
|
951 |
"appreciate if you'll reconsider letting us continue with the tracking."
|
952 |
msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una migliore esperienza utente e dando priorità a nuove funzionalità, oltre a molte altre buone cose. Saremmo veramente felici di vederti cambiare idea e lasciarci continuare con il tracciamento."
|
953 |
|
954 |
+
#: includes/i18n.php:254
|
955 |
msgid ""
|
956 |
"By clicking \"Opt Out\", we will no longer be sending any data from %s to "
|
957 |
"%s."
|
958 |
msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s."
|
959 |
|
960 |
+
#: includes/i18n.php:258
|
961 |
msgid "Screenshots"
|
962 |
msgstr "Screenshots"
|
963 |
|
964 |
+
#: includes/i18n.php:259
|
965 |
msgid "Click to view full-size screenshot %d"
|
966 |
msgstr "Fare clic per visualizzare lo screenshot in grandi dimensioni %d"
|
967 |
|
968 |
+
#: includes/i18n.php:263
|
969 |
msgid "Freemius Debug"
|
970 |
msgstr "Debug Freemius"
|
971 |
|
972 |
+
#: includes/i18n.php:264
|
973 |
msgctxt "as turned on"
|
974 |
msgid "On"
|
975 |
msgstr "Attivo"
|
976 |
|
977 |
+
#: includes/i18n.php:265
|
978 |
msgctxt "as turned off"
|
979 |
msgid "Off"
|
980 |
msgstr "Non attivo"
|
981 |
|
982 |
+
#: includes/i18n.php:266
|
983 |
msgctxt "as code debugging"
|
984 |
msgid "Debugging"
|
985 |
msgstr "Debugging"
|
986 |
|
987 |
+
#: includes/i18n.php:267
|
988 |
msgid "Freemius State"
|
989 |
msgstr "Stato di Freemius"
|
990 |
|
991 |
+
#: includes/i18n.php:268
|
992 |
msgctxt "as connection was successful"
|
993 |
msgid "Connected"
|
994 |
msgstr "Connesso"
|
995 |
|
996 |
+
#: includes/i18n.php:269
|
997 |
msgctxt "as connection blocked"
|
998 |
msgid "Blocked"
|
999 |
msgstr "Bloccato"
|
1000 |
|
1001 |
+
#: includes/i18n.php:270
|
1002 |
msgctxt "as application program interface"
|
1003 |
msgid "API"
|
1004 |
msgstr "API"
|
1005 |
|
1006 |
+
#: includes/i18n.php:271
|
1007 |
msgctxt "as software development kit versions"
|
1008 |
msgid "SDK"
|
1009 |
msgstr "SDK"
|
1010 |
|
1011 |
+
#: includes/i18n.php:272
|
1012 |
msgctxt "as software development kit versions"
|
1013 |
msgid "SDK Versions"
|
1014 |
msgstr "Versioni SDK"
|
1015 |
|
1016 |
+
#: includes/i18n.php:273
|
1017 |
msgctxt "as plugin folder path"
|
1018 |
msgid "Plugin Path"
|
1019 |
msgstr "Percorso del plugin"
|
1020 |
|
1021 |
+
#: includes/i18n.php:274
|
1022 |
msgctxt "as sdk path"
|
1023 |
msgid "SDK Path"
|
1024 |
msgstr "Percorso SDK"
|
1025 |
|
1026 |
+
#: includes/i18n.php:275
|
1027 |
msgid "Add Ons of Plugin %s"
|
1028 |
msgstr "Add-on del Plugin %s"
|
1029 |
|
1030 |
+
#: includes/i18n.php:276
|
1031 |
msgid "Are you sure you want to delete all Freemius data?"
|
1032 |
msgstr "Sei sicuro di voler eliminare tutti i dati di Freemius?"
|
1033 |
|
1034 |
+
#: includes/i18n.php:277
|
1035 |
msgid "Actions"
|
1036 |
msgstr "Azioni"
|
1037 |
|
1038 |
+
#: includes/i18n.php:278
|
1039 |
msgid "Delete All Accounts"
|
1040 |
msgstr "Eliminare tutti gli account"
|
1041 |
|
1042 |
+
#: includes/i18n.php:279
|
1043 |
msgid "Start Fresh"
|
1044 |
msgstr "Inizia da capo"
|
1045 |
|
1046 |
+
#: includes/i18n.php:280
|
1047 |
msgid "Clear API Cache"
|
1048 |
msgstr "Elimina cache API"
|
1049 |
|
1050 |
+
#: includes/i18n.php:281
|
1051 |
msgid "Sync Data From Server"
|
1052 |
msgstr "Sincronizza i dati dal server"
|
1053 |
|
1054 |
+
#: includes/i18n.php:282
|
1055 |
msgid "Scheduled Crons"
|
1056 |
msgstr "Azioni programmate"
|
1057 |
|
1058 |
+
#: includes/i18n.php:283
|
1059 |
+
msgid "Cron Type"
|
1060 |
+
msgstr "Tipo di Cron"
|
1061 |
+
|
1062 |
+
#: includes/i18n.php:284
|
1063 |
msgid "Plugins & Themes Sync"
|
1064 |
msgstr "Sincronizzazione plugin e temi"
|
1065 |
|
1066 |
+
#: includes/i18n.php:285
|
1067 |
+
msgid "Licenses"
|
1068 |
+
msgstr "Licenze"
|
1069 |
+
|
1070 |
+
#: includes/i18n.php:286
|
1071 |
+
msgid "Debug Log"
|
1072 |
+
msgstr "Debug Log"
|
1073 |
+
|
1074 |
+
#: includes/i18n.php:287
|
1075 |
+
msgid "All"
|
1076 |
+
msgstr "Tutto"
|
1077 |
+
|
1078 |
+
#: includes/i18n.php:288
|
1079 |
+
msgid "File"
|
1080 |
+
msgstr "File"
|
1081 |
+
|
1082 |
+
#: includes/i18n.php:289
|
1083 |
+
msgid "Function"
|
1084 |
+
msgstr "Funzione"
|
1085 |
+
|
1086 |
+
#: includes/i18n.php:290
|
1087 |
+
msgid "Process ID"
|
1088 |
+
msgstr "ID processo"
|
1089 |
+
|
1090 |
+
#: includes/i18n.php:291
|
1091 |
+
msgid "Logger"
|
1092 |
+
msgstr "Logger"
|
1093 |
+
|
1094 |
+
#: includes/i18n.php:292
|
1095 |
+
msgid "Message"
|
1096 |
+
msgstr "Messaggio"
|
1097 |
+
|
1098 |
+
#: includes/i18n.php:293
|
1099 |
+
msgid "Download"
|
1100 |
+
msgstr "Download"
|
1101 |
+
|
1102 |
+
#: includes/i18n.php:294
|
1103 |
+
msgid "Filter"
|
1104 |
+
msgstr "Filtro"
|
1105 |
+
|
1106 |
+
#: includes/i18n.php:295
|
1107 |
+
msgid "Type"
|
1108 |
+
msgstr "Tipo"
|
1109 |
+
|
1110 |
+
#: includes/i18n.php:296
|
1111 |
+
msgid "All Types"
|
1112 |
+
msgstr "Tutti i tipi"
|
1113 |
+
|
1114 |
+
#: includes/i18n.php:297
|
1115 |
+
msgid "All Requests"
|
1116 |
+
msgstr "Tutte le richieste"
|
1117 |
+
|
1118 |
+
#: includes/i18n.php:301
|
1119 |
msgctxt "as congratulations"
|
1120 |
msgid "Congrats"
|
1121 |
msgstr "Congratulazioni"
|
1122 |
|
1123 |
+
#: includes/i18n.php:302
|
1124 |
msgctxt "exclamation"
|
1125 |
msgid "Oops"
|
1126 |
msgstr "Ops"
|
1127 |
|
1128 |
+
#: includes/i18n.php:303
|
1129 |
msgctxt "interjection expressing joy or exuberance"
|
1130 |
msgid "Yee-haw"
|
1131 |
msgstr "Evvai"
|
1132 |
|
1133 |
+
#: includes/i18n.php:304
|
1134 |
msgctxt ""
|
1135 |
"(especially in electronic communication) used to express elation, "
|
1136 |
"enthusiasm, or triumph."
|
1137 |
msgid "W00t"
|
1138 |
msgstr "Forte"
|
1139 |
|
1140 |
+
#: includes/i18n.php:306
|
1141 |
msgctxt "a positive response"
|
1142 |
msgid "Right on"
|
1143 |
msgstr "Sì"
|
1144 |
|
1145 |
+
#: includes/i18n.php:307
|
1146 |
msgctxt ""
|
1147 |
"something somebody says when they are thinking about what you have just "
|
1148 |
"said. "
|
1149 |
msgid "Hmm"
|
1150 |
msgstr "Uhm"
|
1151 |
|
1152 |
+
#: includes/i18n.php:309
|
1153 |
msgid "O.K"
|
1154 |
msgstr "OK"
|
1155 |
|
1156 |
+
#: includes/i18n.php:310
|
1157 |
msgctxt "exclamation"
|
1158 |
msgid "Hey"
|
1159 |
msgstr "Hey"
|
1160 |
|
1161 |
+
#: includes/i18n.php:311
|
1162 |
msgctxt "advance notice of something that will need attention."
|
1163 |
msgid "Heads up"
|
1164 |
msgstr "Attenzione"
|
1165 |
|
1166 |
+
#: includes/i18n.php:316
|
1167 |
msgid "Seems like you got the latest release."
|
1168 |
msgstr "Sembra che tu abbia la versione più recente."
|
1169 |
|
1170 |
+
#: includes/i18n.php:317
|
1171 |
msgid "You are all good!"
|
1172 |
msgstr "Sei fantastico!"
|
1173 |
|
1174 |
+
#: includes/i18n.php:318
|
1175 |
msgid ""
|
1176 |
"Sorry, we could not complete the email update. Another user with the same "
|
1177 |
"email is already registered."
|
1178 |
msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato."
|
1179 |
|
1180 |
+
#: includes/i18n.php:319
|
1181 |
msgid ""
|
1182 |
"If you would like to give up the ownership of the plugin's account to %s "
|
1183 |
"click the Change Ownership button."
|
1184 |
msgstr "Se vuoi cedere la proprietá dell'account del plugin a %s clicca su Cambia Proprietà."
|
1185 |
|
1186 |
+
#: includes/i18n.php:320
|
1187 |
msgid ""
|
1188 |
"Your email was successfully updated. You should receive an email with "
|
1189 |
"confirmation instructions in few moments."
|
1190 |
msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti."
|
1191 |
|
1192 |
+
#: includes/i18n.php:321
|
1193 |
msgid "Your name was successfully updated."
|
1194 |
msgstr "Il tuo nome è stato aggiornato correttamente."
|
1195 |
|
1196 |
+
#: includes/i18n.php:322
|
1197 |
msgid "You have successfully updated your %s."
|
1198 |
msgstr "Hai aggiornato con successo il tuo %s."
|
1199 |
|
1200 |
+
#: includes/i18n.php:323
|
1201 |
msgid "Please provide your full name."
|
1202 |
msgstr "Per favore inserisci il tuo nome completo."
|
1203 |
|
1204 |
+
#: includes/i18n.php:324
|
1205 |
msgid ""
|
1206 |
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1207 |
"please check your spam box."
|
1208 |
msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata."
|
1209 |
|
1210 |
+
#: includes/i18n.php:325
|
1211 |
msgid ""
|
1212 |
"Just letting you know that the add-ons information of %s is being pulled "
|
1213 |
"from an external server."
|
1214 |
msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno."
|
1215 |
|
1216 |
+
#: includes/i18n.php:326
|
1217 |
msgid "No credit card required"
|
1218 |
msgstr "Nessuna carta di credito richiesta"
|
1219 |
|
1220 |
+
#: includes/i18n.php:327
|
1221 |
msgid "Premium plugin version was successfully activated."
|
1222 |
msgstr "La versione Premium del plugin è stata attivata correttamente."
|
1223 |
|
1224 |
+
#: includes/i18n.php:328
|
1225 |
msgid "The upgrade of %s was successfully completed."
|
1226 |
msgstr "L'aggiornamento di %s è stato completato con successo."
|
1227 |
|
1228 |
+
#: includes/i18n.php:329
|
1229 |
msgid "Your account was successfully activated with the %s plan."
|
1230 |
msgstr "Il tuo account è stato attivato correttamente con il piano %s."
|
1231 |
|
1232 |
+
#: includes/i18n.php:330
|
1233 |
msgid "Download the latest %s version now"
|
1234 |
msgstr "Scarica l'ultima versione di %s"
|
1235 |
|
1236 |
+
#: includes/i18n.php:331
|
1237 |
msgid "Please follow these steps to complete the upgrade"
|
1238 |
msgstr "Segui i passi seguenti per completare l'aggiornamento"
|
1239 |
|
1240 |
+
#: includes/i18n.php:332
|
1241 |
msgid "Download the latest %s version"
|
1242 |
msgstr "Scarica l'ultima versione di %s"
|
1243 |
|
1244 |
+
#: includes/i18n.php:333
|
1245 |
msgid "Download the latest version"
|
1246 |
msgstr "Scarica l'ultima versione"
|
1247 |
|
1248 |
+
#: includes/i18n.php:334
|
1249 |
msgid "Deactivate the free version"
|
1250 |
msgstr "Disattiva la versione gratuita"
|
1251 |
|
1252 |
+
#: includes/i18n.php:335
|
1253 |
msgid "Upload and activate the downloaded version"
|
1254 |
msgstr "Carica e attiva la versione scaricata"
|
1255 |
|
1256 |
+
#: includes/i18n.php:336
|
1257 |
msgid "How to upload and activate?"
|
1258 |
msgstr "Come faccio a caricare ed attivare?"
|
1259 |
|
1260 |
+
#: includes/i18n.php:337
|
1261 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1262 |
msgid "%s Add-on was successfully purchased."
|
1263 |
msgstr "L' add-on %s è stato acquistato con successo."
|
1264 |
|
1265 |
+
#: includes/i18n.php:339
|
1266 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1267 |
msgstr "Il piano del tuo add-on %s è stato aggiornato con successo."
|
1268 |
|
1269 |
+
#: includes/i18n.php:340
|
1270 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1271 |
msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!"
|
1272 |
|
1273 |
+
#: includes/i18n.php:341
|
1274 |
msgid "Your plan was successfully upgraded."
|
1275 |
msgstr "Il piano è stato aggiornato con successo."
|
1276 |
|
1277 |
+
#: includes/i18n.php:342
|
1278 |
msgid "Your plan was successfully changed to %s."
|
1279 |
msgstr "Il piano è stato cambiato con successo a %s."
|
1280 |
|
1281 |
+
#: includes/i18n.php:343
|
1282 |
msgid ""
|
1283 |
"Your license has expired. You can still continue using the free plugin "
|
1284 |
"forever."
|
1285 |
msgstr "La licenza è scaduta. È comunque possibile continuare ad utilizzare il plugin gratuito per sempre."
|
1286 |
|
1287 |
+
#: includes/i18n.php:344
|
1288 |
msgid ""
|
1289 |
"Your license has been cancelled. If you think it's a mistake, please contact"
|
1290 |
" support."
|
1291 |
msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto."
|
1292 |
|
1293 |
+
#: includes/i18n.php:345
|
1294 |
msgid "Your trial has been successfully started."
|
1295 |
msgstr "La versione di prova è stata avviata correttamente."
|
1296 |
|
1297 |
+
#: includes/i18n.php:346
|
1298 |
msgid "Your license was successfully activated."
|
1299 |
msgstr "La tua licenza è stata attivata correttamente."
|
1300 |
|
1301 |
+
#: includes/i18n.php:347
|
1302 |
msgid "It looks like your site currently doesn't have an active license."
|
1303 |
msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva."
|
1304 |
|
1305 |
+
#: includes/i18n.php:348
|
1306 |
msgid ""
|
1307 |
"Your license was successfully deactivated, you are back to the %s plan."
|
1308 |
msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s."
|
1309 |
|
1310 |
+
#: includes/i18n.php:349
|
1311 |
msgid "It looks like the license deactivation failed."
|
1312 |
msgstr "Sembra che la disattivazione della licenza non sia riuscita."
|
1313 |
|
1314 |
+
#: includes/i18n.php:350
|
1315 |
msgid "It looks like the license could not be activated."
|
1316 |
msgstr "Sembra che la licenza non possa essere attivata."
|
1317 |
|
1318 |
+
#: includes/i18n.php:351
|
1319 |
msgid "Error received from the server:"
|
1320 |
msgstr "Errore ricevuto dal server:"
|
1321 |
|
1322 |
+
#: includes/i18n.php:352
|
1323 |
msgid ""
|
1324 |
"Your trial has expired. You can still continue using all our free features."
|
1325 |
msgstr "La versione di prova è scaduta. Si può comunque continuare a utilizzare tutte le nostre funzioni gratuite."
|
1326 |
|
1327 |
+
#: includes/i18n.php:353
|
1328 |
msgid ""
|
1329 |
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1330 |
"%s."
|
1331 |
msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s."
|
1332 |
|
1333 |
+
#: includes/i18n.php:354
|
1334 |
msgid ""
|
1335 |
"Seems like we are having some temporary issue with your plan downgrade. "
|
1336 |
"Please try again in few minutes."
|
1337 |
msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto."
|
1338 |
|
1339 |
+
#: includes/i18n.php:355
|
1340 |
msgid ""
|
1341 |
"It looks like you are not in trial mode anymore so there's nothing to cancel"
|
1342 |
" :)"
|
1343 |
msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)"
|
1344 |
|
1345 |
+
#: includes/i18n.php:356
|
1346 |
msgid "Your %s free trial was successfully cancelled."
|
1347 |
msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo."
|
1348 |
|
1349 |
+
#: includes/i18n.php:357
|
1350 |
msgctxt "%s - numeric version number"
|
1351 |
msgid "Version %s was released."
|
1352 |
msgstr "La versione %s é stata rilasciata."
|
1353 |
|
1354 |
+
#: includes/i18n.php:358
|
1355 |
msgid "Please download %s."
|
1356 |
msgstr "Scarica %s."
|
1357 |
|
1358 |
+
#: includes/i18n.php:359
|
1359 |
msgctxt "%s - plan name, as the latest professional version here"
|
1360 |
msgid "the latest %s version here"
|
1361 |
msgstr "l'ultima versione %s é quì"
|
1362 |
|
1363 |
+
#: includes/i18n.php:361
|
1364 |
msgid ""
|
1365 |
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1366 |
"free trial."
|
1367 |
msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni."
|
1368 |
|
1369 |
+
#: includes/i18n.php:362
|
1370 |
msgctxt "call to action"
|
1371 |
msgid "Start free trial"
|
1372 |
msgstr "Inizia il periodo di prova gratuito"
|
1373 |
|
1374 |
+
#: includes/i18n.php:363
|
1375 |
msgid "Starting trial"
|
1376 |
msgstr "Inizio del periodo di prova gratuito"
|
1377 |
|
1378 |
+
#: includes/i18n.php:364
|
1379 |
msgid "Please wait"
|
1380 |
msgstr "Attendere"
|
1381 |
|
1382 |
+
#: includes/i18n.php:365
|
1383 |
msgid ""
|
1384 |
"Seems like we are having some temporary issue with your trial cancellation. "
|
1385 |
"Please try again in few minutes."
|
1386 |
msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto."
|
1387 |
|
1388 |
+
#: includes/i18n.php:366
|
1389 |
msgid "You already utilized a trial before."
|
1390 |
msgstr "Hai già utilizzato una prova gratuita in passato."
|
1391 |
|
1392 |
+
#: includes/i18n.php:367
|
1393 |
msgid "You are already running the plugin in a trial mode."
|
1394 |
msgstr "Stai già usando il plugin in modalità di prova gratuita."
|
1395 |
|
1396 |
+
#: includes/i18n.php:368
|
1397 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1398 |
msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova."
|
1399 |
|
1400 |
+
#: includes/i18n.php:369
|
1401 |
msgid "Plan %s does not support a trial period."
|
1402 |
msgstr "Il piano %s non supporta il periodo di prova."
|
1403 |
|
1404 |
+
#: includes/i18n.php:370
|
1405 |
msgid "None of the plugin's plans supports a trial period."
|
1406 |
msgstr "Non esiste alcun piano del plugin che offra il periodo di prova."
|
1407 |
|
1408 |
+
#: includes/i18n.php:371
|
1409 |
msgid ""
|
1410 |
"Unexpected API error. Please contact the plugin's author with the following "
|
1411 |
"error."
|
1412 |
msgstr "Errore inaspettato dell'API. Per favore contatta l'autore del plugin riportando il seguente errore."
|
1413 |
|
1414 |
+
#: includes/i18n.php:372
|
1415 |
msgid "No commitment for %s days - cancel anytime!"
|
1416 |
msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!"
|
1417 |
|
1418 |
+
#: includes/i18n.php:373
|
1419 |
msgid ""
|
1420 |
"Your license has expired. You can still continue using all the %s features, "
|
1421 |
"but you'll need to renew your license to continue getting updates and "
|
1422 |
"support."
|
1423 |
msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto."
|
1424 |
|
1425 |
+
#: includes/i18n.php:374
|
1426 |
msgid "Couldn't activate %s."
|
1427 |
msgstr "Non é stato possibile attivare %s."
|
1428 |
|
1429 |
+
#: includes/i18n.php:375
|
1430 |
msgid "Please contact us with the following message:"
|
1431 |
msgstr "Contattaci con il seguente messaggio:"
|
1432 |
|
1433 |
+
#: includes/i18n.php:376
|
1434 |
msgid ""
|
1435 |
"It looks like you are still on the %s plan. If you did upgrade or change "
|
1436 |
"your plan, it's probably an issue on our side - sorry."
|
1437 |
msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi."
|
1438 |
|
1439 |
+
#: includes/i18n.php:377
|
1440 |
msgid "Please contact us here"
|
1441 |
msgstr "Contattaci qui"
|
1442 |
|
1443 |
+
#: includes/i18n.php:378
|
1444 |
msgid ""
|
1445 |
"I have upgraded my account but when I try to Sync the License, the plan "
|
1446 |
"remains %s."
|
1447 |
msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s."
|
1448 |
|
1449 |
+
#: includes/i18n.php:381
|
1450 |
msgid "From unknown reason, the API connectivity test failed."
|
1451 |
msgstr "Il test di connettività dell'API ha fallito per motivi sconosciuti."
|
1452 |
|
1453 |
+
#: includes/i18n.php:382
|
1454 |
msgid ""
|
1455 |
"It's probably a temporary issue on our end. Just to be sure, with your "
|
1456 |
"permission, would it be o.k to run another connectivity test?"
|
1457 |
msgstr "Si tratta probabilmente di un problema nei nostri sistemi. Per esserne sicuri, potresti darci il permesso di effettuare un ulteriore test della connettività? "
|
1458 |
|
1459 |
+
#: includes/i18n.php:383
|
1460 |
msgid ""
|
1461 |
"We use PHP cURL library for the API calls, which is a very common library "
|
1462 |
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1463 |
"on your server."
|
1464 |
msgstr "Utilizziamo la libreria PHP cURL per le chiamate alla nostra API. Questa libreria è molto comune ed è installata di base. Sfortunatamente cURL non è presente nel tuo server."
|
1465 |
|
1466 |
+
#: includes/i18n.php:384
|
1467 |
msgid ""
|
1468 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1469 |
msgstr "Per un motivo sconosciuto, CloudFlare, il firewall che utilizziamo, blocca la connessione."
|
1470 |
|
1471 |
+
#: includes/i18n.php:385
|
1472 |
msgctxt "as pluginX requires an access to our API"
|
1473 |
msgid "%s requires an access to our API."
|
1474 |
msgstr "%s richiede un accesso alla nostra API."
|
1475 |
|
1476 |
+
#: includes/i18n.php:387
|
1477 |
msgid ""
|
1478 |
"It looks like your server is using Squid ACL (access control lists), which "
|
1479 |
"blocks the connection."
|
1480 |
msgstr "Sembra che il tuo server stia usando Squid ACL (lista per il controllo degli accessi) il quale blocca la connessione."
|
1481 |
|
1482 |
+
#: includes/i18n.php:388
|
1483 |
msgid "I don't know what is Squid or ACL, help me!"
|
1484 |
msgstr "Non ho idea di cosa sia Squid o ACL, aiutami!"
|
1485 |
|
1486 |
+
#: includes/i18n.php389, includes/i18n.php:393
|
1487 |
msgid ""
|
1488 |
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1489 |
"will get a follow-up email to %s once we have an update."
|
1490 |
msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti."
|
1491 |
|
1492 |
+
#: includes/i18n.php:390
|
1493 |
msgid "I'm a system administrator"
|
1494 |
msgstr "Sono un sistemista"
|
1495 |
|
1496 |
+
#: includes/i18n.php:391
|
1497 |
msgid ""
|
1498 |
+
"Great, please whitelist the following domains: %s. Once you are done, "
|
1499 |
+
"deactivate the plugin and activate it again."
|
1500 |
+
msgstr "Perfetto, ora per favore aggiungi alla whitelist i seguenti domini: %s. Quando hai fatto, disattiva il plugin e riattivalo di nuovo."
|
1501 |
|
1502 |
+
#: includes/i18n.php:392
|
1503 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1504 |
msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!"
|
1505 |
|
1506 |
+
#: includes/i18n.php:394
|
1507 |
msgid ""
|
1508 |
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1509 |
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1510 |
"the plugin and reactivate it back again."
|
1511 |
msgstr "Perfetto, installa cURL ed attivalo nel tuo file php.ini. Per essere sicuro di averlo attivato con successo, usa \"phpinfo()\". Una volta attivato disattva il plugin e attivalo di nuovo."
|
1512 |
|
1513 |
+
#: includes/i18n.php:395
|
1514 |
msgid ""
|
1515 |
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1516 |
"you ASAP if you give us a chance."
|
1517 |
msgstr "Siamo sicuri che sia un nostro problema e siamo più che felici di risolverlo per te al più presto. Per poter procedere abbiamo bisogno del tuo consenso."
|
1518 |
|
1519 |
+
#: includes/i18n.php:396
|
1520 |
msgid ""
|
1521 |
"Sorry for the inconvenience and we are here to help if you give us a chance."
|
1522 |
msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo permesso."
|
1523 |
|
1524 |
+
#: includes/i18n.php:397
|
1525 |
msgid "Yes - I'm giving you a chance to fix it"
|
1526 |
msgstr "Sì - sto dandovi la possibilità di risolvere il problema"
|
1527 |
|
1528 |
+
#: includes/i18n.php:398
|
1529 |
msgid ""
|
1530 |
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1531 |
"You will get a follow-up email to %s once we have an update."
|
1532 |
msgstr "Faremo del nostro meglio per mettere il server in whitelist e risolvere il problema il prima possibile. Avrai un aggiornamento dello stato tramite email all'indirizzo %s."
|
1533 |
|
1534 |
+
#: includes/i18n.php:399
|
1535 |
msgid "Let's try your previous version"
|
1536 |
msgstr "Proviamo con la versione precedente"
|
1537 |
|
1538 |
+
#: includes/i18n.php:400
|
1539 |
msgid "Uninstall this version and install the previous one."
|
1540 |
msgstr "Disinstalla questa versione e installa quella precedente."
|
1541 |
|
1542 |
+
#: includes/i18n.php:401
|
1543 |
msgid "That's exhausting, please deactivate"
|
1544 |
msgstr "È estenuante, disattivalo"
|
1545 |
|
1546 |
+
#: includes/i18n.php:402
|
1547 |
msgid ""
|
1548 |
"We feel your frustration and sincerely apologize for the inconvenience. Hope"
|
1549 |
" to see you again in the future."
|
1550 |
msgstr "Capiamo la tua frustrazione e ci scusiamo per l'inconveniente. Speriamo di rivederti nuovamente in futuro."
|
1551 |
|
1552 |
+
#: includes/i18n.php:403
|
1553 |
msgid ""
|
1554 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
1555 |
"technical staff. We will get back to you as soon as we have an update to %s."
|
1556 |
" Appreciate your patience."
|
1557 |
msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza."
|
1558 |
|
1559 |
+
#: includes/i18n.php:404
|
1560 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1561 |
msgid ""
|
1562 |
"Your server is blocking the access to Freemius' API, which is crucial for "
|
1563 |
"%1s synchronization. Please contact your host to whitelist %2s"
|
1564 |
msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist."
|
1565 |
|
1566 |
+
#: includes/i18n.php:406
|
1567 |
msgid ""
|
1568 |
"It seems like one of the authentication parameters is wrong. Update your "
|
1569 |
"Public Key, Secret Key & User ID, and try again."
|
1570 |
msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova."
|
1571 |
|
1572 |
+
#: includes/i18n.php:409
|
1573 |
msgid ""
|
1574 |
"Please check your mailbox, you should receive an email via %s to confirm the"
|
1575 |
" ownership change. From security reasons, you must confirm the change within"
|
1577 |
"folder."
|
1578 |
msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata."
|
1579 |
|
1580 |
+
#: includes/i18n.php:410
|
1581 |
msgid ""
|
1582 |
"Thanks for confirming the ownership change. An email was just sent to %s for"
|
1583 |
" final approval."
|
1584 |
msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale."
|
1585 |
|
1586 |
+
#: includes/i18n.php:411
|
1587 |
msgid "%s is the new owner of the account."
|
1588 |
msgstr "%s è il nuovo proprietario dell'account."
|
1589 |
|
1590 |
+
#: includes/i18n.php:413
|
1591 |
msgctxt "addonX cannot run without pluginY"
|
1592 |
msgid "%s cannot run without %s."
|
1593 |
msgstr "%s non può funzionare senza %s."
|
1594 |
|
1595 |
+
#: includes/i18n.php:415
|
1596 |
msgctxt "addonX cannot run..."
|
1597 |
msgid "%s cannot run without the plugin."
|
1598 |
msgstr "%s non può funzionare senza il plugin."
|
1599 |
|
1600 |
+
#: includes/i18n.php:416
|
1601 |
msgctxt "pluginX activation was successfully..."
|
1602 |
msgid "%s activation was successfully completed."
|
1603 |
msgstr "%s è stato attivato con successo."
|
1604 |
|
1605 |
+
#: includes/i18n.php:418
|
1606 |
msgctxt "Plugin installer section title"
|
1607 |
msgid "Features & Pricing"
|
1608 |
msgstr "Caratteristiche & prezzi"
|
1609 |
|
1610 |
+
#: includes/i18n.php:419
|
1611 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1612 |
msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius."
|
1613 |
|
1614 |
+
#: includes/i18n.php:420
|
1615 |
msgid "Paid add-on must be deployed to Freemius."
|
1616 |
msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius."
|
1617 |
|
1618 |
+
#: includes/i18n.php:424
|
1619 |
msgid ""
|
1620 |
"%s is a premium only add-on. You have to purchase a license first before "
|
1621 |
"activating the plugin."
|
1622 |
msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin."
|
1623 |
|
1624 |
+
#: includes/i18n.php:425
|
1625 |
msgid ""
|
1626 |
"%s free trial was successfully cancelled. Since the add-on is premium only "
|
1627 |
"it was automatically deactivated. If you like to use it in the future, "
|
1628 |
"you'll have to purchase a license."
|
1629 |
msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza."
|
1630 |
|
1631 |
+
#: includes/i18n.php:430
|
1632 |
msgctxt "as every month"
|
1633 |
msgid "Monthly"
|
1634 |
msgstr "Mensilmente"
|
1635 |
|
1636 |
+
#: includes/i18n.php:431
|
1637 |
msgctxt "as monthly period"
|
1638 |
msgid "mo"
|
1639 |
msgstr "mese"
|
1640 |
|
1641 |
+
#: includes/i18n.php:432
|
1642 |
msgctxt "as once a year"
|
1643 |
msgid "Annual"
|
1644 |
msgstr "Annuale"
|
1645 |
|
1646 |
+
#: includes/i18n.php:433
|
1647 |
msgctxt "as once a year"
|
1648 |
msgid "Annually"
|
1649 |
msgstr "Annualmente"
|
1650 |
|
1651 |
+
#: includes/i18n.php:434
|
1652 |
msgctxt "as once a year"
|
1653 |
msgid "Once"
|
1654 |
msgstr "Una volta"
|
1655 |
|
1656 |
+
#: includes/i18n.php:435
|
1657 |
msgctxt "as annual period"
|
1658 |
msgid "year"
|
1659 |
msgstr "anno"
|
1660 |
|
1661 |
+
#: includes/i18n.php:436
|
1662 |
msgid "Lifetime"
|
1663 |
msgstr "Tutta la vita"
|
1664 |
|
1665 |
+
#: includes/i18n.php:437
|
1666 |
msgctxt "e.g. the best product"
|
1667 |
msgid "Best"
|
1668 |
msgstr "Migliore"
|
1669 |
|
1670 |
+
#: includes/i18n.php:438
|
1671 |
msgctxt "e.g. billed monthly"
|
1672 |
msgid "Billed %s"
|
1673 |
msgstr "Fatturato %s"
|
1674 |
|
1675 |
+
#: includes/i18n.php:439
|
1676 |
msgctxt "as a discount of $5 or 10%"
|
1677 |
msgid "Save %s"
|
1678 |
msgstr "Risparmia %s"
|
1679 |
|
1680 |
+
#: includes/i18n.php:441
|
1681 |
msgid "View details"
|
1682 |
msgstr "Visualizza dettagli"
|
1683 |
|
1684 |
+
#: includes/i18n.php:445
|
1685 |
msgctxt "button label"
|
1686 |
msgid "Approve & Start Trial"
|
1687 |
msgstr "Approva e inizia il periodo di prova gratuito"
|
1688 |
|
1689 |
+
#: includes/i18n.php:447
|
1690 |
msgid ""
|
1691 |
"You are 1-click away from starting your %1$s-day free trial of the %2$s "
|
1692 |
"plan."
|
1693 |
msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s."
|
1694 |
|
1695 |
+
#: includes/i18n.php:449
|
1696 |
msgid ""
|
1697 |
"For compliance with the WordPress.org guidelines, before we start the trial "
|
1698 |
"we ask that you opt-in with your user and non-sensitive site information, "
|
1700 |
"updates and to validate your trial."
|
1701 |
msgstr "Per seguire le linee guida di WordPress, prima di iniziare il periodo di prova ti chiediamo di iscriverti con il tuo utente e i dati non sensibili inerenti al tuo sito, così da permettere periodicamente al plugin di inviare dati a %s per poter controllare la presenza di nuove versioni e convalidare il tuo periodo di prova gratuito."
|
1702 |
|
1703 |
+
#: includes/i18n.php:455
|
1704 |
msgid "Business name"
|
1705 |
msgstr "Nome della compagnia"
|
1706 |
|
1707 |
+
#: includes/i18n.php:456
|
1708 |
msgid "Tax / VAT ID"
|
1709 |
msgstr "Numero Partita Iva o VAT"
|
1710 |
|
1711 |
+
#: includes/i18n.php:457
|
1712 |
msgid "Address Line %d"
|
1713 |
msgstr "Riga indirizzo %d"
|
1714 |
|
1715 |
+
#: includes/i18n.php:458
|
1716 |
msgid "Country"
|
1717 |
msgstr "Nazione"
|
1718 |
|
1719 |
+
#: includes/i18n.php:459
|
1720 |
msgid "Select Country"
|
1721 |
msgstr "Seleziona Nazione"
|
1722 |
|
1723 |
+
#: includes/i18n.php:460
|
1724 |
msgid "City"
|
1725 |
msgstr "Città"
|
1726 |
|
1727 |
+
#: includes/i18n.php:461
|
1728 |
msgid "Town"
|
1729 |
msgstr "Cittadina"
|
1730 |
|
1731 |
+
#: includes/i18n.php:462
|
1732 |
msgid "State"
|
1733 |
msgstr "Stato"
|
1734 |
|
1735 |
+
#: includes/i18n.php:463
|
1736 |
msgid "Province"
|
1737 |
msgstr "Provincia"
|
1738 |
|
1739 |
+
#: includes/i18n.php:464
|
1740 |
msgid "ZIP / Postal Code"
|
1741 |
msgstr "CAP"
|
1742 |
+
|
1743 |
+
#: includes/i18n.php:479
|
1744 |
+
msgctxt "Plugin installer section title"
|
1745 |
+
msgid "Description"
|
1746 |
+
msgstr "Descrizione"
|
1747 |
+
|
1748 |
+
#: includes/i18n.php:480
|
1749 |
+
msgctxt "Plugin installer section title"
|
1750 |
+
msgid "Installation"
|
1751 |
+
msgstr "Installazione"
|
1752 |
+
|
1753 |
+
#: includes/i18n.php:481
|
1754 |
+
msgctxt "Plugin installer section title"
|
1755 |
+
msgid "FAQ"
|
1756 |
+
msgstr "FAQ"
|
1757 |
+
|
1758 |
+
#: includes/i18n.php:482
|
1759 |
+
msgctxt "Plugin installer section title"
|
1760 |
+
msgid "Changelog"
|
1761 |
+
msgstr "Changelog"
|
1762 |
+
|
1763 |
+
#: includes/i18n.php:483
|
1764 |
+
msgctxt "Plugin installer section title"
|
1765 |
+
msgid "Reviews"
|
1766 |
+
msgstr "Recensioni"
|
1767 |
+
|
1768 |
+
#: includes/i18n.php:484
|
1769 |
+
msgctxt "Plugin installer section title"
|
1770 |
+
msgid "Other Notes"
|
1771 |
+
msgstr "Altre note"
|
1772 |
+
|
1773 |
+
#: includes/i18n.php:486
|
1774 |
+
msgid "%s star"
|
1775 |
+
msgstr "%s stella"
|
1776 |
+
|
1777 |
+
#: includes/i18n.php:488
|
1778 |
+
msgid "%s stars"
|
1779 |
+
msgstr "%s stelle"
|
1780 |
+
|
1781 |
+
#: includes/i18n.php:490
|
1782 |
+
msgid "%s rating"
|
1783 |
+
msgstr "%s valutazione"
|
1784 |
+
|
1785 |
+
#: includes/i18n.php:492
|
1786 |
+
msgid "%s ratings"
|
1787 |
+
msgstr "%s valutazioni"
|
1788 |
+
|
1789 |
+
#: includes/i18n.php:494
|
1790 |
+
msgid "%s time"
|
1791 |
+
msgstr "% volta"
|
1792 |
+
|
1793 |
+
#: includes/i18n.php:496
|
1794 |
+
msgid "%s times"
|
1795 |
+
msgstr "%s volte"
|
1796 |
+
|
1797 |
+
#: includes/i18n.php:498
|
1798 |
+
msgid "Click to see reviews that provided a rating of %s"
|
1799 |
+
msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s"
|
1800 |
+
|
1801 |
+
#: includes/i18n.php:499
|
1802 |
+
msgid "Last Updated"
|
1803 |
+
msgstr "Ultimo aggiornamento"
|
1804 |
+
|
1805 |
+
#: includes/i18n.php:500
|
1806 |
+
msgid "Requires WordPress Version:"
|
1807 |
+
msgstr "Richiede la versione di WordPress:"
|
1808 |
+
|
1809 |
+
#: includes/i18n.php:501
|
1810 |
+
msgctxt "as the plugin author"
|
1811 |
+
msgid "Author:"
|
1812 |
+
msgstr "Autore:"
|
1813 |
+
|
1814 |
+
#: includes/i18n.php:502
|
1815 |
+
msgid "Compatible up to:"
|
1816 |
+
msgstr "Compatibile fino a:"
|
1817 |
+
|
1818 |
+
#: includes/i18n.php:503
|
1819 |
+
msgid "Downloaded:"
|
1820 |
+
msgstr "Scaricato:"
|
1821 |
+
|
1822 |
+
#: includes/i18n.php:504
|
1823 |
+
msgid "WordPress.org Plugin Page"
|
1824 |
+
msgstr "Pagina dei plugin di WordPress.org"
|
1825 |
+
|
1826 |
+
#: includes/i18n.php:505
|
1827 |
+
msgid "Plugin Homepage"
|
1828 |
+
msgstr "Homepage del plugin"
|
1829 |
+
|
1830 |
+
#: includes/i18n.php:506
|
1831 |
+
msgid "Donate to this plugin"
|
1832 |
+
msgstr "Fai una donazione a questo plugin"
|
1833 |
+
|
1834 |
+
#: includes/i18n.php:507
|
1835 |
+
msgid "Average Rating"
|
1836 |
+
msgstr "Valutazione media"
|
1837 |
+
|
1838 |
+
#: includes/i18n.php:508
|
1839 |
+
msgid "based on %s"
|
1840 |
+
msgstr "basato su %s"
|
1841 |
+
|
1842 |
+
#: includes/i18n.php:509
|
1843 |
+
msgid "Warning:"
|
1844 |
+
msgstr "Avviso:"
|
1845 |
+
|
1846 |
+
#: includes/i18n.php:510
|
1847 |
+
msgid "Contributors"
|
1848 |
+
msgstr "Contributori"
|
1849 |
+
|
1850 |
+
#: includes/i18n.php:511
|
1851 |
+
msgid "Plugin Install"
|
1852 |
+
msgstr "Installazione del plugin"
|
1853 |
+
|
1854 |
+
#: includes/i18n.php:512
|
1855 |
+
msgid ""
|
1856 |
+
"This plugin has not been tested with your current version of WordPress."
|
1857 |
+
msgstr "Questo plugin non è stato testato con la versione corrente di WordPress."
|
1858 |
+
|
1859 |
+
#: includes/i18n.php:513
|
1860 |
+
msgid ""
|
1861 |
+
"This plugin has not been marked as compatible with your version of "
|
1862 |
+
"WordPress."
|
1863 |
+
msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress."
|
1864 |
+
|
1865 |
+
#: includes/i18n.php:514
|
1866 |
+
msgid "Newer Version (%s) Installed"
|
1867 |
+
msgstr "Versione più recente (%s) installata"
|
1868 |
+
|
1869 |
+
#: includes/i18n.php:515
|
1870 |
+
msgid "Latest Version Installed"
|
1871 |
+
msgstr "Versione più recente installata"
|
includes/pum-sdk/freemius/languages/freemius-ja_JP.mo
ADDED
Binary file
|
includes/pum-sdk/freemius/languages/freemius-ja_JP.po
ADDED
@@ -0,0 +1,1662 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#
|
2 |
+
# Translators:
|
3 |
+
# Odyssey <8bitodyssey+github@gmail.com>, 2016
|
4 |
+
# Takayuki Miyauchi <miya0001@users.noreply.github.com>, 2016
|
5 |
+
msgid ""
|
6 |
+
msgstr ""
|
7 |
+
"Project-Id-Version: WordPress SDK\n"
|
8 |
+
"Report-Msgid-Bugs-To: \n"
|
9 |
+
"POT-Creation-Date: \n"
|
10 |
+
"PO-Revision-Date: 2017-02-28 03:42+0000\n"
|
11 |
+
"Last-Translator: Vova Feldman <vova@freemius.com>\n"
|
12 |
+
"Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: \n"
|
15 |
+
"Language: ja_JP\n"
|
16 |
+
"Plural-Forms: nplurals=1; plural=0;\n"
|
17 |
+
|
18 |
+
# Copyright (C) 2017 freemius
|
19 |
+
# This file is distributed under the same license as the freemius package.
|
20 |
+
#: includes/i18n.php41, includes/i18n.php:55
|
21 |
+
msgid "Yes - I'm in!"
|
22 |
+
msgstr "加入します"
|
23 |
+
|
24 |
+
#: includes/i18n.php43, includes/i18n.php:57
|
25 |
+
msgid "Not today"
|
26 |
+
msgstr "今日はやめておく"
|
27 |
+
|
28 |
+
#: includes/i18n.php:69
|
29 |
+
msgid "Account"
|
30 |
+
msgstr "アカウント"
|
31 |
+
|
32 |
+
#: includes/i18n.php:71
|
33 |
+
msgid "Add On"
|
34 |
+
msgstr "アドオン"
|
35 |
+
|
36 |
+
#: includes/i18n.php:73
|
37 |
+
msgid "Contact Us"
|
38 |
+
msgstr "連絡"
|
39 |
+
|
40 |
+
#: includes/i18n.php:75
|
41 |
+
msgid "Contact Support"
|
42 |
+
msgstr "サポートに連絡"
|
43 |
+
|
44 |
+
#: includes/i18n.php:77
|
45 |
+
msgid "Change Ownership"
|
46 |
+
msgstr "オーナーを変更"
|
47 |
+
|
48 |
+
#: includes/i18n.php:79
|
49 |
+
msgid "Support"
|
50 |
+
msgstr "サポート"
|
51 |
+
|
52 |
+
#: includes/i18n.php:81
|
53 |
+
msgid "Support Forum"
|
54 |
+
msgstr "サポートフォーラム"
|
55 |
+
|
56 |
+
#: includes/i18n.php:83
|
57 |
+
msgid "Add Ons"
|
58 |
+
msgstr "アドオン"
|
59 |
+
|
60 |
+
#: includes/i18n.php:85
|
61 |
+
msgctxt "verb"
|
62 |
+
msgid "Upgrade"
|
63 |
+
msgstr "アップグレード"
|
64 |
+
|
65 |
+
#: includes/i18n.php:87
|
66 |
+
msgid "Awesome"
|
67 |
+
msgstr "すごい!"
|
68 |
+
|
69 |
+
#: includes/i18n.php:89
|
70 |
+
msgctxt "noun"
|
71 |
+
msgid "Pricing"
|
72 |
+
msgstr "料金表"
|
73 |
+
|
74 |
+
#: includes/i18n.php:91
|
75 |
+
msgctxt "noun"
|
76 |
+
msgid "Price"
|
77 |
+
msgstr "料金"
|
78 |
+
|
79 |
+
#: includes/i18n.php:93
|
80 |
+
msgid "Unlimited Updates"
|
81 |
+
msgstr "無制限のアップデート"
|
82 |
+
|
83 |
+
#: includes/i18n.php:95
|
84 |
+
msgctxt "verb"
|
85 |
+
msgid "Downgrade"
|
86 |
+
msgstr "ダウングレード"
|
87 |
+
|
88 |
+
#: includes/i18n.php:97
|
89 |
+
msgid "Cancel Trial"
|
90 |
+
msgstr "トライアルをキャンセル"
|
91 |
+
|
92 |
+
#: includes/i18n.php:99
|
93 |
+
msgid "Free Trial"
|
94 |
+
msgstr "フリートライアル"
|
95 |
+
|
96 |
+
#: includes/i18n.php:101
|
97 |
+
msgid "Start my free %s"
|
98 |
+
msgstr "無料の %s を開始"
|
99 |
+
|
100 |
+
#: includes/i18n.php:103
|
101 |
+
msgid "No commitment for %s - cancel anytime"
|
102 |
+
msgstr "%s の拘束はありません。いつでもキャンセルできます。"
|
103 |
+
|
104 |
+
#: includes/i18n.php:105
|
105 |
+
msgid "After your free %s, pay as little as %s"
|
106 |
+
msgstr "無料の %s の後は、わずか %s だけお支払ください。"
|
107 |
+
|
108 |
+
#: includes/i18n.php:107
|
109 |
+
msgid "Details"
|
110 |
+
msgstr "詳細"
|
111 |
+
|
112 |
+
#: includes/i18n.php:109
|
113 |
+
msgid "Account Details"
|
114 |
+
msgstr "アカウント詳細"
|
115 |
+
|
116 |
+
#: includes/i18n.php:111
|
117 |
+
msgctxt "verb"
|
118 |
+
msgid "Delete"
|
119 |
+
msgstr "削除"
|
120 |
+
|
121 |
+
#: includes/i18n.php:113
|
122 |
+
msgctxt "verb"
|
123 |
+
msgid "Show"
|
124 |
+
msgstr "表示"
|
125 |
+
|
126 |
+
#: includes/i18n.php:115
|
127 |
+
msgctxt "verb"
|
128 |
+
msgid "Hide"
|
129 |
+
msgstr "非表示"
|
130 |
+
|
131 |
+
#: includes/i18n.php:117
|
132 |
+
msgctxt "verb"
|
133 |
+
msgid "Edit"
|
134 |
+
msgstr "編集"
|
135 |
+
|
136 |
+
#: includes/i18n.php:119
|
137 |
+
msgctxt "verb"
|
138 |
+
msgid "Update"
|
139 |
+
msgstr "更新"
|
140 |
+
|
141 |
+
#: includes/i18n.php:121
|
142 |
+
msgid "Date"
|
143 |
+
msgstr "日付"
|
144 |
+
|
145 |
+
#: includes/i18n.php:123
|
146 |
+
msgid "Amount"
|
147 |
+
msgstr "総額"
|
148 |
+
|
149 |
+
#: includes/i18n.php:125
|
150 |
+
msgid "Invoice"
|
151 |
+
msgstr "請求書"
|
152 |
+
|
153 |
+
#: includes/i18n.php:127
|
154 |
+
msgid "Billing"
|
155 |
+
msgstr "請求書"
|
156 |
+
|
157 |
+
#: includes/i18n.php:129
|
158 |
+
msgid "Payments"
|
159 |
+
msgstr "支払い"
|
160 |
+
|
161 |
+
#: includes/i18n.php:131
|
162 |
+
msgid "Delete Account"
|
163 |
+
msgstr "アカウントを削除"
|
164 |
+
|
165 |
+
#: includes/i18n.php:133
|
166 |
+
msgctxt "as close a window"
|
167 |
+
msgid "Dismiss"
|
168 |
+
msgstr "却下"
|
169 |
+
|
170 |
+
#: includes/i18n.php:135
|
171 |
+
msgctxt "as product pricing plan"
|
172 |
+
msgid "Plan"
|
173 |
+
msgstr "プラン"
|
174 |
+
|
175 |
+
#: includes/i18n.php:137
|
176 |
+
msgid "Change Plan"
|
177 |
+
msgstr "プラン変更"
|
178 |
+
|
179 |
+
#: includes/i18n.php:139
|
180 |
+
msgctxt "as download professional version"
|
181 |
+
msgid "Download %s Version"
|
182 |
+
msgstr "%s バージョンをダウンロード"
|
183 |
+
|
184 |
+
#: includes/i18n.php:141
|
185 |
+
msgctxt "as download professional version now"
|
186 |
+
msgid "Download %s version now"
|
187 |
+
msgstr "%s バージョンを今すぐダウンロード"
|
188 |
+
|
189 |
+
#: includes/i18n.php:145
|
190 |
+
msgctxt "as download latest version"
|
191 |
+
msgid "Download Latest"
|
192 |
+
msgstr "最新版をダウンロード"
|
193 |
+
|
194 |
+
#: includes/i18n.php:147
|
195 |
+
msgctxt "E.g. you have a professional license."
|
196 |
+
msgid "You have a %s license."
|
197 |
+
msgstr "%s ライセンスを持っています。"
|
198 |
+
|
199 |
+
#: includes/i18n.php:151
|
200 |
+
msgid "New"
|
201 |
+
msgstr "新規"
|
202 |
+
|
203 |
+
#: includes/i18n.php:153
|
204 |
+
msgid "Free"
|
205 |
+
msgstr "無料"
|
206 |
+
|
207 |
+
#: includes/i18n.php:155
|
208 |
+
msgctxt "as trial plan"
|
209 |
+
msgid "Trial"
|
210 |
+
msgstr "トライアル"
|
211 |
+
|
212 |
+
#: includes/i18n.php:157
|
213 |
+
msgctxt "as starting a trial plan"
|
214 |
+
msgid "Start Trial"
|
215 |
+
msgstr "トライアルを開始"
|
216 |
+
|
217 |
+
#: includes/i18n.php:159
|
218 |
+
msgctxt "verb"
|
219 |
+
msgid "Purchase"
|
220 |
+
msgstr "購入"
|
221 |
+
|
222 |
+
#: includes/i18n.php:161
|
223 |
+
msgid "Purchase License"
|
224 |
+
msgstr "ライセンスを購入"
|
225 |
+
|
226 |
+
#: includes/i18n.php:163
|
227 |
+
msgctxt "verb"
|
228 |
+
msgid "Buy"
|
229 |
+
msgstr "買う"
|
230 |
+
|
231 |
+
#: includes/i18n.php:165
|
232 |
+
msgid "Buy License"
|
233 |
+
msgstr "ライセンスを買う"
|
234 |
+
|
235 |
+
#: includes/i18n.php:167
|
236 |
+
msgid "Single Site License"
|
237 |
+
msgstr "シングルサイトライセンス"
|
238 |
+
|
239 |
+
#: includes/i18n.php:169
|
240 |
+
msgid "Unlimited Licenses"
|
241 |
+
msgstr "無制限ライセンス"
|
242 |
+
|
243 |
+
#: includes/i18n.php:171
|
244 |
+
msgid "Up to %s Sites"
|
245 |
+
msgstr "%sサイトまで"
|
246 |
+
|
247 |
+
#: includes/i18n.php:173
|
248 |
+
msgid "%sRenew your license now%s to access version %s features and support."
|
249 |
+
msgstr "%sいますぐライセンスを更新して%s バージョン %s の機能とサポートにアクセスする"
|
250 |
+
|
251 |
+
#: includes/i18n.php:177
|
252 |
+
msgid ""
|
253 |
+
"Enter the email address you've used for the upgrade below and we will resend"
|
254 |
+
" you the license key."
|
255 |
+
msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。"
|
256 |
+
|
257 |
+
#: includes/i18n.php:181
|
258 |
+
msgctxt "e.g. Professional Plan"
|
259 |
+
msgid "%s Plan"
|
260 |
+
msgstr "%s プラン"
|
261 |
+
|
262 |
+
#: includes/i18n.php:183
|
263 |
+
msgid "You are just one step away - %s"
|
264 |
+
msgstr "もうあとわずかです - %s"
|
265 |
+
|
266 |
+
#: includes/i18n.php:185
|
267 |
+
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
268 |
+
msgid "Complete \"%s\" Activation Now"
|
269 |
+
msgstr "すぐに \"%s\" 有効化を完了してください"
|
270 |
+
|
271 |
+
#: includes/i18n.php:189
|
272 |
+
msgid "We made a few tweaks to the plugin, %s"
|
273 |
+
msgstr "プラグインを微調整します, %s"
|
274 |
+
|
275 |
+
#: includes/i18n.php:191
|
276 |
+
msgid "Opt-in to make \"%s\" Better!"
|
277 |
+
msgstr "\"%s\" をより良くするためにオプトインしてください!"
|
278 |
+
|
279 |
+
#: includes/i18n.php:193
|
280 |
+
msgid "Error"
|
281 |
+
msgstr "エラー"
|
282 |
+
|
283 |
+
#: includes/i18n.php:195
|
284 |
+
msgid ""
|
285 |
+
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
286 |
+
"sdk@freemius.com with the current error."
|
287 |
+
msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。"
|
288 |
+
|
289 |
+
#: includes/i18n.php:203
|
290 |
+
msgctxt "as expiration date"
|
291 |
+
msgid "Expiration"
|
292 |
+
msgstr "期限切れ"
|
293 |
+
|
294 |
+
#: includes/i18n.php:205
|
295 |
+
msgctxt "as software license"
|
296 |
+
msgid "License"
|
297 |
+
msgstr "ライセンス"
|
298 |
+
|
299 |
+
#: includes/i18n.php:207
|
300 |
+
msgid "not verified"
|
301 |
+
msgstr "未認証"
|
302 |
+
|
303 |
+
#: includes/i18n.php:209
|
304 |
+
msgid "Verify Email"
|
305 |
+
msgstr "認証メール"
|
306 |
+
|
307 |
+
#: includes/i18n.php:211
|
308 |
+
msgctxt "e.g. expires in 2 months"
|
309 |
+
msgid "Expires in %s"
|
310 |
+
msgstr "%s で期間終了"
|
311 |
+
|
312 |
+
#: includes/i18n.php:213
|
313 |
+
msgctxt "e.g. auto renews in 2 months"
|
314 |
+
msgid "Auto renews in %s"
|
315 |
+
msgstr "%s に自動更新"
|
316 |
+
|
317 |
+
#: includes/i18n.php:215
|
318 |
+
msgid "No expiration"
|
319 |
+
msgstr "有効期限なし"
|
320 |
+
|
321 |
+
#: includes/i18n.php:217
|
322 |
+
msgid "Expired"
|
323 |
+
msgstr "期限切れ"
|
324 |
+
|
325 |
+
#: includes/i18n.php:219
|
326 |
+
msgid "Cancelled"
|
327 |
+
msgstr "キャンセル"
|
328 |
+
|
329 |
+
#: includes/i18n.php:221
|
330 |
+
msgctxt "e.g. In 2 hours"
|
331 |
+
msgid "In %s"
|
332 |
+
msgstr "%s 内"
|
333 |
+
|
334 |
+
#: includes/i18n.php:223
|
335 |
+
msgctxt "e.g. 2 min ago"
|
336 |
+
msgid "%s ago"
|
337 |
+
msgstr "%s 前"
|
338 |
+
|
339 |
+
#: includes/i18n.php:225
|
340 |
+
msgctxt "as plugin version"
|
341 |
+
msgid "Version"
|
342 |
+
msgstr "バージョン"
|
343 |
+
|
344 |
+
#: includes/i18n.php:227
|
345 |
+
msgid "Name"
|
346 |
+
msgstr "名前"
|
347 |
+
|
348 |
+
#: includes/i18n.php:229
|
349 |
+
msgid "Email"
|
350 |
+
msgstr "Email"
|
351 |
+
|
352 |
+
#: includes/i18n.php:231
|
353 |
+
msgid "Email address"
|
354 |
+
msgstr "メールアドレス"
|
355 |
+
|
356 |
+
#: includes/i18n.php:233
|
357 |
+
msgid "Verified"
|
358 |
+
msgstr "認証済み"
|
359 |
+
|
360 |
+
#: includes/i18n.php:235
|
361 |
+
msgid "Plugin"
|
362 |
+
msgstr "プラグイン"
|
363 |
+
|
364 |
+
#: includes/i18n.php:237
|
365 |
+
msgid "Plugins"
|
366 |
+
msgstr "プラグイン"
|
367 |
+
|
368 |
+
#: includes/i18n.php:239
|
369 |
+
msgid "Themes"
|
370 |
+
msgstr "テーマ"
|
371 |
+
|
372 |
+
#: includes/i18n.php:241
|
373 |
+
msgctxt "as file/folder path"
|
374 |
+
msgid "Path"
|
375 |
+
msgstr "パス"
|
376 |
+
|
377 |
+
#: includes/i18n.php:243
|
378 |
+
msgid "Title"
|
379 |
+
msgstr "タイトル"
|
380 |
+
|
381 |
+
#: includes/i18n.php:245
|
382 |
+
msgid "Free version"
|
383 |
+
msgstr "フリーバージョン"
|
384 |
+
|
385 |
+
#: includes/i18n.php:247
|
386 |
+
msgid "Premium version"
|
387 |
+
msgstr "プレミアムバージョン"
|
388 |
+
|
389 |
+
#: includes/i18n.php:249
|
390 |
+
msgctxt "as WP plugin slug"
|
391 |
+
msgid "Slug"
|
392 |
+
msgstr "スラッグ"
|
393 |
+
|
394 |
+
#: includes/i18n.php:251
|
395 |
+
msgid "ID"
|
396 |
+
msgstr "ID"
|
397 |
+
|
398 |
+
#: includes/i18n.php:253
|
399 |
+
msgid "Users"
|
400 |
+
msgstr "ユーザー"
|
401 |
+
|
402 |
+
#: includes/i18n.php:255
|
403 |
+
msgid "Plugin Installs"
|
404 |
+
msgstr "プラグインインストール数"
|
405 |
+
|
406 |
+
#: includes/i18n.php:257
|
407 |
+
msgctxt "like websites"
|
408 |
+
msgid "Sites"
|
409 |
+
msgstr "サイト数"
|
410 |
+
|
411 |
+
#: includes/i18n.php:259
|
412 |
+
msgid "User ID"
|
413 |
+
msgstr "ユーザー ID"
|
414 |
+
|
415 |
+
#: includes/i18n.php:261
|
416 |
+
msgid "Site ID"
|
417 |
+
msgstr "サイト ID"
|
418 |
+
|
419 |
+
#: includes/i18n.php:263
|
420 |
+
msgid "Public Key"
|
421 |
+
msgstr "公開鍵"
|
422 |
+
|
423 |
+
#: includes/i18n.php:265
|
424 |
+
msgid "Secret Key"
|
425 |
+
msgstr "秘密鍵"
|
426 |
+
|
427 |
+
#: includes/i18n.php:267
|
428 |
+
msgctxt "as secret encryption key missing"
|
429 |
+
msgid "No Secret"
|
430 |
+
msgstr "秘密鍵がありません"
|
431 |
+
|
432 |
+
#: includes/i18n.php:269
|
433 |
+
msgid "No ID"
|
434 |
+
msgstr "ID がありません"
|
435 |
+
|
436 |
+
#: includes/i18n.php:271
|
437 |
+
msgctxt "as synchronize license"
|
438 |
+
msgid "Sync License"
|
439 |
+
msgstr "ライセンスを同期"
|
440 |
+
|
441 |
+
#: includes/i18n.php:273
|
442 |
+
msgctxt "as synchronize"
|
443 |
+
msgid "Sync"
|
444 |
+
msgstr "同期"
|
445 |
+
|
446 |
+
#: includes/i18n.php:275
|
447 |
+
msgid "Activate License"
|
448 |
+
msgstr "ライセンスを有効化"
|
449 |
+
|
450 |
+
#: includes/i18n.php:277
|
451 |
+
msgid "Activate Free Version"
|
452 |
+
msgstr "フリーバージョンを有効化"
|
453 |
+
|
454 |
+
#: includes/i18n.php:279
|
455 |
+
msgid ""
|
456 |
+
"Please enter the license key that you received in the email right after the "
|
457 |
+
"purchase:"
|
458 |
+
msgstr "購入後すぐにメールで受け取ったライセンスキーを入力してください:"
|
459 |
+
|
460 |
+
#: includes/i18n.php:283
|
461 |
+
msgid "Activating license..."
|
462 |
+
msgstr "ライセンスを有効化中…"
|
463 |
+
|
464 |
+
#: includes/i18n.php:285
|
465 |
+
msgid "Change License"
|
466 |
+
msgstr "ライセンスを変更"
|
467 |
+
|
468 |
+
#: includes/i18n.php:287
|
469 |
+
msgid "Update License"
|
470 |
+
msgstr "ライセンスを更新"
|
471 |
+
|
472 |
+
#: includes/i18n.php:289
|
473 |
+
msgid "Deactivate License"
|
474 |
+
msgstr "ライセンスを無効化"
|
475 |
+
|
476 |
+
#: includes/i18n.php:291
|
477 |
+
msgid "Activate"
|
478 |
+
msgstr "有効化"
|
479 |
+
|
480 |
+
#: includes/i18n.php:293
|
481 |
+
msgid "Deactivate"
|
482 |
+
msgstr "無効化"
|
483 |
+
|
484 |
+
#: includes/i18n.php:295
|
485 |
+
msgid "Skip & Deactivate"
|
486 |
+
msgstr "スキップし、無効化"
|
487 |
+
|
488 |
+
#: includes/i18n.php:297
|
489 |
+
msgid "No - just deactivate"
|
490 |
+
msgstr "いいえ - すぐに無効化"
|
491 |
+
|
492 |
+
#: includes/i18n.php:299
|
493 |
+
msgid "Yes - do your thing"
|
494 |
+
msgstr "はい - お構いなく"
|
495 |
+
|
496 |
+
#: includes/i18n.php:301
|
497 |
+
msgctxt "active mode"
|
498 |
+
msgid "Active"
|
499 |
+
msgstr "有効"
|
500 |
+
|
501 |
+
#: includes/i18n.php:303
|
502 |
+
msgctxt "is active mode?"
|
503 |
+
msgid "Is Active"
|
504 |
+
msgstr "有効"
|
505 |
+
|
506 |
+
#: includes/i18n.php:305
|
507 |
+
msgid "Install Now"
|
508 |
+
msgstr "今すぐインストール"
|
509 |
+
|
510 |
+
#: includes/i18n.php:307
|
511 |
+
msgid "Install Update Now"
|
512 |
+
msgstr "今すぐ更新をインストール"
|
513 |
+
|
514 |
+
#: includes/i18n.php:309
|
515 |
+
msgid "More information about %s"
|
516 |
+
msgstr "%s に関する詳細情報"
|
517 |
+
|
518 |
+
#: includes/i18n.php:311
|
519 |
+
msgid "Localhost"
|
520 |
+
msgstr "localhost"
|
521 |
+
|
522 |
+
#: includes/i18n.php:313
|
523 |
+
msgctxt "as activate Professional plan"
|
524 |
+
msgid "Activate %s Plan"
|
525 |
+
msgstr "%s プランを有効化"
|
526 |
+
|
527 |
+
#: includes/i18n.php:315
|
528 |
+
msgctxt "as 5 licenses left"
|
529 |
+
msgid "%s left"
|
530 |
+
msgstr "あと %s"
|
531 |
+
|
532 |
+
#: includes/i18n.php:317
|
533 |
+
msgid "Last license"
|
534 |
+
msgstr "最新のライセンス"
|
535 |
+
|
536 |
+
#: includes/i18n.php:319
|
537 |
+
msgid "What is your %s?"
|
538 |
+
msgstr "自分の %s はなんですか?"
|
539 |
+
|
540 |
+
#: includes/i18n.php:321
|
541 |
+
msgid "Activate this add-on"
|
542 |
+
msgstr "このアドオンを有効化"
|
543 |
+
|
544 |
+
#: includes/i18n.php:323
|
545 |
+
msgid ""
|
546 |
+
"Deactivating your license will block all premium features, but will enable "
|
547 |
+
"you to activate the license on another site. Are you sure you want to "
|
548 |
+
"proceed?"
|
549 |
+
msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?"
|
550 |
+
|
551 |
+
#: includes/i18n.php:327
|
552 |
+
msgid ""
|
553 |
+
"Deleting the account will automatically deactivate your %s plan license so "
|
554 |
+
"you can use it on other sites. If you want to terminate the recurring "
|
555 |
+
"payments as well, click the \"Cancel\" button, and first \"Downgrade\" your "
|
556 |
+
"account. Are you sure you would like to continue with the deletion?"
|
557 |
+
msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?"
|
558 |
+
|
559 |
+
#: includes/i18n.php:331
|
560 |
+
msgid ""
|
561 |
+
"Deletion is not temporary. Only delete if you no longer want to use this "
|
562 |
+
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
563 |
+
msgstr "削除は一時的なものではありません。このプラグインを今後使いたくない場合にだけ削除してください。本当に削除を続行してもいいですか?"
|
564 |
+
|
565 |
+
#: includes/i18n.php:335
|
566 |
+
msgid ""
|
567 |
+
"Downgrading your plan will immediately stop all future recurring payments "
|
568 |
+
"and your %s plan license will expire in %s."
|
569 |
+
msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。"
|
570 |
+
|
571 |
+
#: includes/i18n.php:339
|
572 |
+
msgid ""
|
573 |
+
"Cancelling the trial will immediately block access to all premium features. "
|
574 |
+
"Are you sure?"
|
575 |
+
msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?"
|
576 |
+
|
577 |
+
#: includes/i18n.php:343
|
578 |
+
msgid ""
|
579 |
+
"You can still enjoy all %s features but you will not have access to plugin "
|
580 |
+
"updates and support."
|
581 |
+
msgstr "すべての %s 機能をまだ楽しむことができますが、プラグインの更新とサポートにアクセスすることはできなくなります。"
|
582 |
+
|
583 |
+
#: includes/i18n.php:347
|
584 |
+
msgid ""
|
585 |
+
"Once your license expire you can still use the Free version but you will NOT"
|
586 |
+
" have access to the %s features."
|
587 |
+
msgstr "ライセンスが期限切れになるとフリーバージョンを使うことはできますが、%s 機能にアクセスすることはできなくなります。"
|
588 |
+
|
589 |
+
#: includes/i18n.php:351
|
590 |
+
msgid "Are you sure you want to proceed?"
|
591 |
+
msgstr "本当に続行していいですか?"
|
592 |
+
|
593 |
+
#: includes/i18n.php:357
|
594 |
+
msgid "Add Ons for %s"
|
595 |
+
msgstr "%s のアドオン"
|
596 |
+
|
597 |
+
#: includes/i18n.php:359
|
598 |
+
msgid ""
|
599 |
+
"We could'nt load the add-ons list. It's probably an issue on our side, "
|
600 |
+
"please try to come back in few minutes."
|
601 |
+
msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。"
|
602 |
+
|
603 |
+
#: includes/i18n.php:365
|
604 |
+
msgid "Anonymous feedback"
|
605 |
+
msgstr "匿名のフィードバック"
|
606 |
+
|
607 |
+
#: includes/i18n.php:367
|
608 |
+
msgid "Quick feedback"
|
609 |
+
msgstr "クイックフィードバック"
|
610 |
+
|
611 |
+
#: includes/i18n.php:369
|
612 |
+
msgid "If you have a moment, please let us know why you are deactivating"
|
613 |
+
msgstr "お時間があれば、なぜ無効化するのか理由を教えてください。"
|
614 |
+
|
615 |
+
#: includes/i18n.php:373
|
616 |
+
msgid "Yes - Deactivate"
|
617 |
+
msgstr "はい - 無効化します"
|
618 |
+
|
619 |
+
#: includes/i18n.php:375
|
620 |
+
msgid "Submit & Deactivate"
|
621 |
+
msgstr "送信し無効化"
|
622 |
+
|
623 |
+
#: includes/i18n.php:377
|
624 |
+
msgid "Cancel"
|
625 |
+
msgstr "キャンセル"
|
626 |
+
|
627 |
+
#: includes/i18n.php:379
|
628 |
+
msgid "I no longer need the plugin"
|
629 |
+
msgstr "もうプラグインを必要としていません"
|
630 |
+
|
631 |
+
#: includes/i18n.php:381
|
632 |
+
msgid "I found a better plugin"
|
633 |
+
msgstr "もっと良いプラグインを見つけました"
|
634 |
+
|
635 |
+
#: includes/i18n.php:383
|
636 |
+
msgid "I only needed the plugin for a short period"
|
637 |
+
msgstr "短期間プラグインを必要としていただけです"
|
638 |
+
|
639 |
+
#: includes/i18n.php:385
|
640 |
+
msgid "The plugin broke my site"
|
641 |
+
msgstr "プラグインのせいでサイトが壊れました"
|
642 |
+
|
643 |
+
#: includes/i18n.php:387
|
644 |
+
msgid "The plugin suddenly stopped working"
|
645 |
+
msgstr "プラグインはすぐに動かなくなりました"
|
646 |
+
|
647 |
+
#: includes/i18n.php:389
|
648 |
+
msgid "I can't pay for it anymore"
|
649 |
+
msgstr "もう払うことができません"
|
650 |
+
|
651 |
+
#: includes/i18n.php:391
|
652 |
+
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
653 |
+
msgstr "一時的な無効化です。問題をデバッグしているだけです。"
|
654 |
+
|
655 |
+
#: includes/i18n.php:395
|
656 |
+
msgctxt ""
|
657 |
+
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
658 |
+
"in the modal box."
|
659 |
+
msgid "Other"
|
660 |
+
msgstr "その他"
|
661 |
+
|
662 |
+
#: includes/i18n.php:399
|
663 |
+
msgid "Kindly tell us the reason so we can improve."
|
664 |
+
msgstr "改善できるよう、どうか理由を教えてください。"
|
665 |
+
|
666 |
+
#: includes/i18n.php:401
|
667 |
+
msgid "What's the plugin's name?"
|
668 |
+
msgstr "プラグイン名は何ですか?"
|
669 |
+
|
670 |
+
#: includes/i18n.php:403
|
671 |
+
msgid "What price would you feel comfortable paying?"
|
672 |
+
msgstr " 支払ってもよいと思う価格はいくらですか?"
|
673 |
+
|
674 |
+
#: includes/i18n.php:405
|
675 |
+
msgid "I couldn't understand how to make it work"
|
676 |
+
msgstr "どうしたら動作するか分かりませんでした。"
|
677 |
+
|
678 |
+
#: includes/i18n.php:407
|
679 |
+
msgid ""
|
680 |
+
"The plugin is great, but I need specific feature that you don't support"
|
681 |
+
msgstr "プラグインは素晴らしいけれど、サポートしていないある機能を必要としています"
|
682 |
+
|
683 |
+
#: includes/i18n.php:411
|
684 |
+
msgid "The plugin is not working"
|
685 |
+
msgstr "プラグインが動いていません"
|
686 |
+
|
687 |
+
#: includes/i18n.php:413
|
688 |
+
msgid "It's not what I was looking for"
|
689 |
+
msgstr "探していたものではありません"
|
690 |
+
|
691 |
+
#: includes/i18n.php:415
|
692 |
+
msgid "The plugin didn't work as expected"
|
693 |
+
msgstr "プラグインは期待通りには動きませんでした"
|
694 |
+
|
695 |
+
#: includes/i18n.php:417
|
696 |
+
msgid "What feature?"
|
697 |
+
msgstr "何の機能ですか?"
|
698 |
+
|
699 |
+
#: includes/i18n.php:419
|
700 |
+
msgid "Kindly share what didn't work so we can fix it for future users..."
|
701 |
+
msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…"
|
702 |
+
|
703 |
+
#: includes/i18n.php:423
|
704 |
+
msgid "What you've been looking for?"
|
705 |
+
msgstr "探していたのは何ですか?"
|
706 |
+
|
707 |
+
#: includes/i18n.php:425
|
708 |
+
msgid "What did you expect?"
|
709 |
+
msgstr "何を期待していましたか?"
|
710 |
+
|
711 |
+
#: includes/i18n.php:427
|
712 |
+
msgid "The plugin didn't work"
|
713 |
+
msgstr "プラグインが動作しませんでした"
|
714 |
+
|
715 |
+
#: includes/i18n.php:429
|
716 |
+
msgid "I don't like to share my information with you"
|
717 |
+
msgstr "自分の情報を共有したくありません"
|
718 |
+
|
719 |
+
#: includes/i18n.php:431
|
720 |
+
msgid ""
|
721 |
+
"You might have missed it, but you don't have to share any data and can just "
|
722 |
+
"%s the opt-in."
|
723 |
+
msgstr "見逃していたかもしれませんが、どんな情報も共有する必要はなく、オプトインを $s することができます。 "
|
724 |
+
|
725 |
+
#: includes/i18n.php:441
|
726 |
+
msgctxt "greeting"
|
727 |
+
msgid "Hey %s,"
|
728 |
+
msgstr "おおい %s さん、"
|
729 |
+
|
730 |
+
#: includes/i18n.php:443
|
731 |
+
msgctxt "a greeting. E.g. Thanks John!"
|
732 |
+
msgid "Thanks %s!"
|
733 |
+
msgstr "ありがとう $s さん!"
|
734 |
+
|
735 |
+
#: includes/i18n.php:445
|
736 |
+
msgid ""
|
737 |
+
"Never miss an important update - opt-in to our security and feature updates "
|
738 |
+
"notifications, and non-sensitive diagnostic tracking with %4$s."
|
739 |
+
msgstr "重要な更新を逃さないように - セキュリティとおすすめの更新通知、%4$s とセンシティブではない診断トラッキングをオプトイン"
|
740 |
+
|
741 |
+
#: includes/i18n.php:449
|
742 |
+
msgid ""
|
743 |
+
"Please help us improve %1$s! If you opt-in, some data about your usage of "
|
744 |
+
"%1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still "
|
745 |
+
"work just fine."
|
746 |
+
msgstr "%1$s を改善するのを手伝ってください。オプトインすれば、あなたの %1$s の使用に関するデータが %4$s へと送られます。これをスキップしても大丈夫です! %1$s は今でも素晴らしいでしょう。"
|
747 |
+
|
748 |
+
#: includes/i18n.php:453
|
749 |
+
msgid ""
|
750 |
+
"You should receive an activation email for %s to your mailbox at %s. Please "
|
751 |
+
"make sure you click the activation button in that email to %s."
|
752 |
+
msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。"
|
753 |
+
|
754 |
+
#: includes/i18n.php:455
|
755 |
+
msgid "complete the install"
|
756 |
+
msgstr "インストールを完了"
|
757 |
+
|
758 |
+
#: includes/i18n.php:457
|
759 |
+
msgid "start the trial"
|
760 |
+
msgstr "トライアルを開始"
|
761 |
+
|
762 |
+
#: includes/i18n.php:459
|
763 |
+
msgid ""
|
764 |
+
"Thanks for purchasing %s! To get started, please enter your license key:"
|
765 |
+
msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:"
|
766 |
+
|
767 |
+
#: includes/i18n.php:463
|
768 |
+
msgid ""
|
769 |
+
"The plugin will be periodically sending data to %s to check for plugin "
|
770 |
+
"updates and verify the validity of your license."
|
771 |
+
msgstr "プラグインはプラグインの更新をチェックし、ライセンスが有効か確認するために、%s に周期的にデータを送信します。"
|
772 |
+
|
773 |
+
#: includes/i18n.php:467
|
774 |
+
msgid "What permissions are being granted?"
|
775 |
+
msgstr "付与されているパーミッションは何ですか?"
|
776 |
+
|
777 |
+
#: includes/i18n.php:469
|
778 |
+
msgid "Your Profile Overview"
|
779 |
+
msgstr "プロフィール概要"
|
780 |
+
|
781 |
+
#: includes/i18n.php:471
|
782 |
+
msgid "Name and email address"
|
783 |
+
msgstr "名前とメールアドレス"
|
784 |
+
|
785 |
+
#: includes/i18n.php:473
|
786 |
+
msgid "Your Site Overview"
|
787 |
+
msgstr "サイト概要"
|
788 |
+
|
789 |
+
#: includes/i18n.php:475
|
790 |
+
msgid "Site URL, WP version, PHP info, plugins & themes"
|
791 |
+
msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ"
|
792 |
+
|
793 |
+
#: includes/i18n.php:479
|
794 |
+
msgid "Current Plugin Events"
|
795 |
+
msgstr "現在のプラグインイベント"
|
796 |
+
|
797 |
+
#: includes/i18n.php:481
|
798 |
+
msgid "Activation, deactivation and uninstall"
|
799 |
+
msgstr "有効化、無効化、アンインストール"
|
800 |
+
|
801 |
+
#: includes/i18n.php:483
|
802 |
+
msgid "Plugins & Themes"
|
803 |
+
msgstr "プラグインとテーマ"
|
804 |
+
|
805 |
+
#: includes/i18n.php:485
|
806 |
+
msgid "Titles, versions and state."
|
807 |
+
msgstr "タイトル、バージョン、状態"
|
808 |
+
|
809 |
+
#: includes/i18n.php:487
|
810 |
+
msgid "Admin Notices"
|
811 |
+
msgstr "管理者通知"
|
812 |
+
|
813 |
+
#: includes/i18n.php:489
|
814 |
+
msgid "Newsletter"
|
815 |
+
msgstr "ニュースレター"
|
816 |
+
|
817 |
+
#: includes/i18n.php:491
|
818 |
+
msgid "Updates, announcements, marketing, no spam"
|
819 |
+
msgstr "更新、発表、マーケティング、スパムなし"
|
820 |
+
|
821 |
+
#: includes/i18n.php:493
|
822 |
+
msgid "Privacy Policy"
|
823 |
+
msgstr "プライバシーポリシー"
|
824 |
+
|
825 |
+
#: includes/i18n.php:495
|
826 |
+
msgid "Terms of Service"
|
827 |
+
msgstr "利用規約"
|
828 |
+
|
829 |
+
#: includes/i18n.php:497
|
830 |
+
msgctxt "as activating plugin"
|
831 |
+
msgid "Activating"
|
832 |
+
msgstr "有効化中"
|
833 |
+
|
834 |
+
#: includes/i18n.php:499
|
835 |
+
msgctxt "as in the process of sending an email"
|
836 |
+
msgid "Sending email"
|
837 |
+
msgstr "メール送信中"
|
838 |
+
|
839 |
+
#: includes/i18n.php:503
|
840 |
+
msgctxt "button label"
|
841 |
+
msgid "Allow & Continue"
|
842 |
+
msgstr "許可して続ける"
|
843 |
+
|
844 |
+
#: includes/i18n.php:505
|
845 |
+
msgctxt "button label"
|
846 |
+
msgid "Agree & Activate License"
|
847 |
+
msgstr "同意してライセンスを有効化"
|
848 |
+
|
849 |
+
#: includes/i18n.php:507
|
850 |
+
msgctxt "verb"
|
851 |
+
msgid "Skip"
|
852 |
+
msgstr "スキップ"
|
853 |
+
|
854 |
+
#: includes/i18n.php:509
|
855 |
+
msgid "Click here to use the plugin anonymously"
|
856 |
+
msgstr "匿名でプラグインを使用するにはこちらをクリック"
|
857 |
+
|
858 |
+
#: includes/i18n.php:511
|
859 |
+
msgid "Re-send activation email"
|
860 |
+
msgstr "有効化メールを再送信"
|
861 |
+
|
862 |
+
#: includes/i18n.php:513
|
863 |
+
msgid "License key"
|
864 |
+
msgstr "ライセンスキー"
|
865 |
+
|
866 |
+
#: includes/i18n.php:515
|
867 |
+
msgid "Send License Key"
|
868 |
+
msgstr "ライセンスキーを送信"
|
869 |
+
|
870 |
+
#: includes/i18n.php:517
|
871 |
+
msgid "Sending license key"
|
872 |
+
msgstr "ライセンスキーを送信中"
|
873 |
+
|
874 |
+
#: includes/i18n.php:519
|
875 |
+
msgid "Have a license key?"
|
876 |
+
msgstr "ライセンスキーはお持ちですか?"
|
877 |
+
|
878 |
+
#: includes/i18n.php:521
|
879 |
+
msgid "Don't have a license key?"
|
880 |
+
msgstr "ライセンスキーをお持ちではありませんか?"
|
881 |
+
|
882 |
+
#: includes/i18n.php:523
|
883 |
+
msgid "Can't find your license key?"
|
884 |
+
msgstr "ライセンスキーは見つかりませんか?"
|
885 |
+
|
886 |
+
#: includes/i18n.php:525
|
887 |
+
msgid ""
|
888 |
+
"We couldn't find your email address in the system, are you sure it's the "
|
889 |
+
"right address?"
|
890 |
+
msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。"
|
891 |
+
|
892 |
+
#: includes/i18n.php:529
|
893 |
+
msgid ""
|
894 |
+
"We can't see any active licenses associated with that email address, are you"
|
895 |
+
" sure it's the right address?"
|
896 |
+
msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。"
|
897 |
+
|
898 |
+
#: includes/i18n.php:533
|
899 |
+
msgid "Opt In"
|
900 |
+
msgstr "オプトイン"
|
901 |
+
|
902 |
+
#: includes/i18n.php:535
|
903 |
+
msgid "Opt Out"
|
904 |
+
msgstr "オプトアウト"
|
905 |
+
|
906 |
+
#: includes/i18n.php:537
|
907 |
+
msgid "On second thought - I want to continue helping"
|
908 |
+
msgstr "第二の考えで - 手伝い続けたいです"
|
909 |
+
|
910 |
+
#: includes/i18n.php:541
|
911 |
+
msgid "Opting out..."
|
912 |
+
msgstr "オプトアウト中…"
|
913 |
+
|
914 |
+
#: includes/i18n.php:543
|
915 |
+
msgid "Opting in..."
|
916 |
+
msgstr "オプトイン中…"
|
917 |
+
|
918 |
+
#: includes/i18n.php:545
|
919 |
+
msgid ""
|
920 |
+
"We appreciate your help in making the %s better by letting us track some "
|
921 |
+
"usage data."
|
922 |
+
msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。"
|
923 |
+
|
924 |
+
#: includes/i18n.php:549
|
925 |
+
msgid ""
|
926 |
+
"Usage tracking is done in the name of making %s better. Making a better user"
|
927 |
+
" experience, prioritizing new features, and more good things. We'd really "
|
928 |
+
"appreciate if you'll reconsider letting us continue with the tracking."
|
929 |
+
msgstr "使用の追跡は %s をより良くする名目の下に行われています。ユーザー体験をより良くし、新機能に優先順位をつけるためなどに使います。追跡を続けてもよいと再考してくれるなら本当に感謝致します。"
|
930 |
+
|
931 |
+
#: includes/i18n.php:553
|
932 |
+
msgid ""
|
933 |
+
"By clicking \"Opt Out\", we will no longer be sending any data from %s to "
|
934 |
+
"%s."
|
935 |
+
msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。"
|
936 |
+
|
937 |
+
#: includes/i18n.php:563
|
938 |
+
msgid "Screenshots"
|
939 |
+
msgstr "スクリーンショット"
|
940 |
+
|
941 |
+
#: includes/i18n.php:565
|
942 |
+
msgid "Click to view full-size screenshot %d"
|
943 |
+
msgstr "クリックしてフルサイズのスクリーンショットを見る %d"
|
944 |
+
|
945 |
+
#: includes/i18n.php:573
|
946 |
+
msgid "Freemius Debug"
|
947 |
+
msgstr "Freemius デバッグ"
|
948 |
+
|
949 |
+
#: includes/i18n.php:575
|
950 |
+
msgctxt "as turned on"
|
951 |
+
msgid "On"
|
952 |
+
msgstr "オン"
|
953 |
+
|
954 |
+
#: includes/i18n.php:577
|
955 |
+
msgctxt "as turned off"
|
956 |
+
msgid "Off"
|
957 |
+
msgstr "オフ"
|
958 |
+
|
959 |
+
#: includes/i18n.php:579
|
960 |
+
msgctxt "as code debugging"
|
961 |
+
msgid "Debugging"
|
962 |
+
msgstr "デバッグ"
|
963 |
+
|
964 |
+
#: includes/i18n.php:581
|
965 |
+
msgid "Freemius State"
|
966 |
+
msgstr "Freemius ステータス"
|
967 |
+
|
968 |
+
#: includes/i18n.php:583
|
969 |
+
msgctxt "as connection was successful"
|
970 |
+
msgid "Connected"
|
971 |
+
msgstr "接続"
|
972 |
+
|
973 |
+
#: includes/i18n.php:585
|
974 |
+
msgctxt "as connection blocked"
|
975 |
+
msgid "Blocked"
|
976 |
+
msgstr "ブロック"
|
977 |
+
|
978 |
+
#: includes/i18n.php:587
|
979 |
+
msgctxt "as application program interface"
|
980 |
+
msgid "API"
|
981 |
+
msgstr "API"
|
982 |
+
|
983 |
+
#: includes/i18n.php:589
|
984 |
+
msgctxt "as software development kit versions"
|
985 |
+
msgid "SDK"
|
986 |
+
msgstr "SDK"
|
987 |
+
|
988 |
+
#: includes/i18n.php:591
|
989 |
+
msgctxt "as software development kit versions"
|
990 |
+
msgid "SDK Versions"
|
991 |
+
msgstr "SDK バージョン"
|
992 |
+
|
993 |
+
#: includes/i18n.php:595
|
994 |
+
msgctxt "as plugin folder path"
|
995 |
+
msgid "Plugin Path"
|
996 |
+
msgstr "プラグインのパス"
|
997 |
+
|
998 |
+
#: includes/i18n.php:597
|
999 |
+
msgctxt "as sdk path"
|
1000 |
+
msgid "SDK Path"
|
1001 |
+
msgstr "SDK のパス"
|
1002 |
+
|
1003 |
+
#: includes/i18n.php:599
|
1004 |
+
msgid "Add Ons of Plugin %s"
|
1005 |
+
msgstr "プラグインのアドオン %s"
|
1006 |
+
|
1007 |
+
#: includes/i18n.php:601
|
1008 |
+
msgid "Are you sure you want to delete all Freemius data?"
|
1009 |
+
msgstr "ほんとうに全ての Freemius データを削除しますか?"
|
1010 |
+
|
1011 |
+
#: includes/i18n.php:605
|
1012 |
+
msgid "Actions"
|
1013 |
+
msgstr "アクション"
|
1014 |
+
|
1015 |
+
#: includes/i18n.php:607
|
1016 |
+
msgid "Delete All Accounts"
|
1017 |
+
msgstr "全てのアカウントを削除"
|
1018 |
+
|
1019 |
+
#: includes/i18n.php:609
|
1020 |
+
msgid "Start Fresh"
|
1021 |
+
msgstr "初期化を開始"
|
1022 |
+
|
1023 |
+
#: includes/i18n.php:611
|
1024 |
+
msgid "Clear API Cache"
|
1025 |
+
msgstr "API キャッシュをクリア"
|
1026 |
+
|
1027 |
+
#: includes/i18n.php:613
|
1028 |
+
msgid "Sync Data From Server"
|
1029 |
+
msgstr "サーバーからのデータを同期"
|
1030 |
+
|
1031 |
+
#: includes/i18n.php:615
|
1032 |
+
msgid "Scheduled Crons"
|
1033 |
+
msgstr "スケジュール Cron"
|
1034 |
+
|
1035 |
+
#: includes/i18n.php:617
|
1036 |
+
msgid "Plugins & Themes Sync"
|
1037 |
+
msgstr "プラグインとテーマを同期"
|
1038 |
+
|
1039 |
+
#: includes/i18n.php:625
|
1040 |
+
msgctxt "as congratulations"
|
1041 |
+
msgid "Congrats"
|
1042 |
+
msgstr "おめでとう"
|
1043 |
+
|
1044 |
+
#: includes/i18n.php:627
|
1045 |
+
msgctxt "exclamation"
|
1046 |
+
msgid "Oops"
|
1047 |
+
msgstr "おっと"
|
1048 |
+
|
1049 |
+
#: includes/i18n.php:629
|
1050 |
+
msgctxt "interjection expressing joy or exuberance"
|
1051 |
+
msgid "Yee-haw"
|
1052 |
+
msgstr "ヤッホー"
|
1053 |
+
|
1054 |
+
#: includes/i18n.php:633
|
1055 |
+
msgctxt ""
|
1056 |
+
"(especially in electronic communication) used to express elation, "
|
1057 |
+
"enthusiasm, or triumph."
|
1058 |
+
msgid "W00t"
|
1059 |
+
msgstr "やったー"
|
1060 |
+
|
1061 |
+
#: includes/i18n.php:637
|
1062 |
+
msgctxt "a positive response"
|
1063 |
+
msgid "Right on"
|
1064 |
+
msgstr "そうだ"
|
1065 |
+
|
1066 |
+
#: includes/i18n.php:639
|
1067 |
+
msgctxt ""
|
1068 |
+
"something somebody says when they are thinking about what you have just "
|
1069 |
+
"said. "
|
1070 |
+
msgid "Hmm"
|
1071 |
+
msgstr "ふむ"
|
1072 |
+
|
1073 |
+
#: includes/i18n.php:643
|
1074 |
+
msgid "O.K"
|
1075 |
+
msgstr "O.K"
|
1076 |
+
|
1077 |
+
#: includes/i18n.php:645
|
1078 |
+
msgctxt "exclamation"
|
1079 |
+
msgid "Hey"
|
1080 |
+
msgstr "ヘイ"
|
1081 |
+
|
1082 |
+
#: includes/i18n.php:647
|
1083 |
+
msgctxt "advance notice of something that will need attention."
|
1084 |
+
msgid "Heads up"
|
1085 |
+
msgstr "警告"
|
1086 |
+
|
1087 |
+
#: includes/i18n.php:657
|
1088 |
+
msgid "Seems like you got the latest release."
|
1089 |
+
msgstr "最新版を取得できました。"
|
1090 |
+
|
1091 |
+
#: includes/i18n.php:659
|
1092 |
+
msgid "You are all good!"
|
1093 |
+
msgstr "すべて完璧です!"
|
1094 |
+
|
1095 |
+
#: includes/i18n.php:661
|
1096 |
+
msgid ""
|
1097 |
+
"Sorry, we could not complete the email update. Another user with the same "
|
1098 |
+
"email is already registered."
|
1099 |
+
msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。"
|
1100 |
+
|
1101 |
+
#: includes/i18n.php:665
|
1102 |
+
msgid ""
|
1103 |
+
"If you would like to give up the ownership of the plugin's account to %s "
|
1104 |
+
"click the Change Ownership button."
|
1105 |
+
msgstr "もし%s にプラグインの所有権を譲りたいなら、所有権を変更ボタンをクリックしてください。"
|
1106 |
+
|
1107 |
+
#: includes/i18n.php:669
|
1108 |
+
msgid ""
|
1109 |
+
"Your email was successfully updated. You should receive an email with "
|
1110 |
+
"confirmation instructions in few moments."
|
1111 |
+
msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。"
|
1112 |
+
|
1113 |
+
#: includes/i18n.php:673
|
1114 |
+
msgid "Your name was successfully updated."
|
1115 |
+
msgstr "名前のアップデートが成功しました。"
|
1116 |
+
|
1117 |
+
#: includes/i18n.php:675
|
1118 |
+
msgid "You have successfully updated your %s."
|
1119 |
+
msgstr "%s のアップデートが成功しました。"
|
1120 |
+
|
1121 |
+
#: includes/i18n.php:677
|
1122 |
+
msgid "Please provide your full name."
|
1123 |
+
msgstr "フルネームを入力してください。"
|
1124 |
+
|
1125 |
+
#: includes/i18n.php:679
|
1126 |
+
msgid ""
|
1127 |
+
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1128 |
+
"please check your spam box."
|
1129 |
+
msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。"
|
1130 |
+
|
1131 |
+
#: includes/i18n.php:683
|
1132 |
+
msgid ""
|
1133 |
+
"Just letting you know that the add-ons information of %s is being pulled "
|
1134 |
+
"from an external server."
|
1135 |
+
msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。"
|
1136 |
+
|
1137 |
+
#: includes/i18n.php:687
|
1138 |
+
msgid "No credit card required"
|
1139 |
+
msgstr "クレジットカードは必要ありません。"
|
1140 |
+
|
1141 |
+
#: includes/i18n.php:689
|
1142 |
+
msgid "Premium plugin version was successfully activated."
|
1143 |
+
msgstr "プレミアムプラグインのバージョンの有効化に成功しました。"
|
1144 |
+
|
1145 |
+
#: includes/i18n.php:693
|
1146 |
+
msgid "The upgrade of %s was successfully completed."
|
1147 |
+
msgstr "%s のアップグレードが完了しました。"
|
1148 |
+
|
1149 |
+
#: includes/i18n.php:695
|
1150 |
+
msgid "Your account was successfully activated with the %s plan."
|
1151 |
+
msgstr "アカウントが %s プランで有効化できました。"
|
1152 |
+
|
1153 |
+
#: includes/i18n.php:699
|
1154 |
+
msgid "Download the latest %s version now"
|
1155 |
+
msgstr "%s の最新版をダウンロードする"
|
1156 |
+
|
1157 |
+
#: includes/i18n.php:701
|
1158 |
+
msgid "Please follow these steps to complete the upgrade"
|
1159 |
+
msgstr "アップグレードを完了するには以下の手順を完了させてください。"
|
1160 |
+
|
1161 |
+
#: includes/i18n.php:705
|
1162 |
+
msgid "Download the latest %s version"
|
1163 |
+
msgstr "最新の %s をダウンロード"
|
1164 |
+
|
1165 |
+
#: includes/i18n.php:707
|
1166 |
+
msgid "Download the latest version"
|
1167 |
+
msgstr "最新版をダウンロード"
|
1168 |
+
|
1169 |
+
#: includes/i18n.php:709
|
1170 |
+
msgid "Deactivate the free version"
|
1171 |
+
msgstr "無料バージョンを無効化"
|
1172 |
+
|
1173 |
+
#: includes/i18n.php:711
|
1174 |
+
msgid "Upload and activate the downloaded version"
|
1175 |
+
msgstr "ダウンロードしたバージョンをアップロードして有効化"
|
1176 |
+
|
1177 |
+
#: includes/i18n.php:713
|
1178 |
+
msgid "How to upload and activate?"
|
1179 |
+
msgstr "アップロードと有効化の方法"
|
1180 |
+
|
1181 |
+
#: includes/i18n.php:715
|
1182 |
+
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1183 |
+
msgid "%s Add-on was successfully purchased."
|
1184 |
+
msgstr "%s のアドオンの支払いが完了しました。"
|
1185 |
+
|
1186 |
+
#: includes/i18n.php:719
|
1187 |
+
msgid "Your %s Add-on plan was successfully upgraded."
|
1188 |
+
msgstr "%s のアドオンのプランのアップグレードが完了しました。"
|
1189 |
+
|
1190 |
+
#: includes/i18n.php:723
|
1191 |
+
msgid "Your email has been successfully verified - you are AWESOME!"
|
1192 |
+
msgstr "あなたのメールアドレスの承認が完了しました。すごい!"
|
1193 |
+
|
1194 |
+
#: includes/i18n.php:727
|
1195 |
+
msgid "Your plan was successfully upgraded."
|
1196 |
+
msgstr "プランのアップグレードが成功しました。"
|
1197 |
+
|
1198 |
+
#: includes/i18n.php:729
|
1199 |
+
msgid "Your plan was successfully changed to %s."
|
1200 |
+
msgstr "プランの %s への変更が成功しました。"
|
1201 |
+
|
1202 |
+
#: includes/i18n.php:731
|
1203 |
+
msgid ""
|
1204 |
+
"Your license has expired. You can still continue using the free plugin "
|
1205 |
+
"forever."
|
1206 |
+
msgstr "ライセンスの有効期限が切れました。無料バージョンの利用を継続することができます。"
|
1207 |
+
|
1208 |
+
#: includes/i18n.php:735
|
1209 |
+
msgid ""
|
1210 |
+
"Your license has been cancelled. If you think it's a mistake, please contact"
|
1211 |
+
" support."
|
1212 |
+
msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。"
|
1213 |
+
|
1214 |
+
#: includes/i18n.php:739
|
1215 |
+
msgid "Your trial has been successfully started."
|
1216 |
+
msgstr "トライアル版の利用を開始しました。"
|
1217 |
+
|
1218 |
+
#: includes/i18n.php:741
|
1219 |
+
msgid "Your license was successfully activated."
|
1220 |
+
msgstr "ライセンスの有効化が成功しました。"
|
1221 |
+
|
1222 |
+
#: includes/i18n.php:743
|
1223 |
+
msgid "It looks like your site currently doesn't have an active license."
|
1224 |
+
msgstr "サイトは有効なライセンスを持っていないようです。"
|
1225 |
+
|
1226 |
+
#: includes/i18n.php:747
|
1227 |
+
msgid ""
|
1228 |
+
"Your license was successfully deactivated, you are back to the %s plan."
|
1229 |
+
msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。"
|
1230 |
+
|
1231 |
+
#: includes/i18n.php:751
|
1232 |
+
msgid "It looks like the license deactivation failed."
|
1233 |
+
msgstr "ライセンスの無効化ができませんでした。"
|
1234 |
+
|
1235 |
+
#: includes/i18n.php:755
|
1236 |
+
msgid "It looks like the license could not be activated."
|
1237 |
+
msgstr "ライセンスの有効化ができませんでした。"
|
1238 |
+
|
1239 |
+
#: includes/i18n.php:759
|
1240 |
+
msgid "Error received from the server:"
|
1241 |
+
msgstr "サーバーからエラーを受信しました。"
|
1242 |
+
|
1243 |
+
#: includes/i18n.php:761
|
1244 |
+
msgid ""
|
1245 |
+
"Your trial has expired. You can still continue using all our free features."
|
1246 |
+
msgstr "トライアルの有効期限が切れました。引き続き無料の機能の利用を続けることができます。"
|
1247 |
+
|
1248 |
+
#: includes/i18n.php:765
|
1249 |
+
msgid ""
|
1250 |
+
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1251 |
+
"%s."
|
1252 |
+
msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。"
|
1253 |
+
|
1254 |
+
#: includes/i18n.php:769
|
1255 |
+
msgid ""
|
1256 |
+
"Seems like we are having some temporary issue with your plan downgrade. "
|
1257 |
+
"Please try again in few minutes."
|
1258 |
+
msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。"
|
1259 |
+
|
1260 |
+
#: includes/i18n.php:773
|
1261 |
+
msgid ""
|
1262 |
+
"It looks like you are not in trial mode anymore so there's nothing to cancel"
|
1263 |
+
" :)"
|
1264 |
+
msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)"
|
1265 |
+
|
1266 |
+
#: includes/i18n.php:777
|
1267 |
+
msgid "Your %s free trial was successfully cancelled."
|
1268 |
+
msgstr "%s のフリートライアルはキャンセルされました。"
|
1269 |
+
|
1270 |
+
#: includes/i18n.php:781
|
1271 |
+
msgctxt "%s - numeric version number"
|
1272 |
+
msgid "Version %s was released."
|
1273 |
+
msgstr "バージョン %s をリリースしました。"
|
1274 |
+
|
1275 |
+
#: includes/i18n.php:785
|
1276 |
+
msgid "Please download %s."
|
1277 |
+
msgstr "%s をダウンロードしてください。"
|
1278 |
+
|
1279 |
+
#: includes/i18n.php:787
|
1280 |
+
msgctxt "%s - plan name, as the latest professional version here"
|
1281 |
+
msgid "the latest %s version here"
|
1282 |
+
msgstr "最新の %s バージョンはこちらです。"
|
1283 |
+
|
1284 |
+
#: includes/i18n.php:791
|
1285 |
+
msgid ""
|
1286 |
+
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1287 |
+
"free trial."
|
1288 |
+
msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。"
|
1289 |
+
|
1290 |
+
#: includes/i18n.php:795
|
1291 |
+
msgctxt "call to action"
|
1292 |
+
msgid "Start free trial"
|
1293 |
+
msgstr "フリートライアルを開始"
|
1294 |
+
|
1295 |
+
#: includes/i18n.php:797
|
1296 |
+
msgid "Starting trial"
|
1297 |
+
msgstr "トライアルを開始"
|
1298 |
+
|
1299 |
+
#: includes/i18n.php:799
|
1300 |
+
msgid "Please wait"
|
1301 |
+
msgstr "お待ちください"
|
1302 |
+
|
1303 |
+
#: includes/i18n.php:801
|
1304 |
+
msgid ""
|
1305 |
+
"Seems like we are having some temporary issue with your trial cancellation. "
|
1306 |
+
"Please try again in few minutes."
|
1307 |
+
msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。"
|
1308 |
+
|
1309 |
+
#: includes/i18n.php:805
|
1310 |
+
msgid "You already utilized a trial before."
|
1311 |
+
msgstr "以前すでに試用版を利用しました。"
|
1312 |
+
|
1313 |
+
#: includes/i18n.php:807
|
1314 |
+
msgid "You are already running the plugin in a trial mode."
|
1315 |
+
msgstr "すでにトライアル版のプラグインを利用しています。"
|
1316 |
+
|
1317 |
+
#: includes/i18n.php:811
|
1318 |
+
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1319 |
+
msgstr "%s プランは存在しないため、試用を開始できません。"
|
1320 |
+
|
1321 |
+
#: includes/i18n.php:815
|
1322 |
+
msgid "Plan %s does not support a trial period."
|
1323 |
+
msgstr "%s プランにはトライアル期間はありません。"
|
1324 |
+
|
1325 |
+
#: includes/i18n.php:817
|
1326 |
+
msgid "None of the plugin's plans supports a trial period."
|
1327 |
+
msgstr "トライアル期間をサポートしているプランのプラグインはありません。"
|
1328 |
+
|
1329 |
+
#: includes/i18n.php:821
|
1330 |
+
msgid ""
|
1331 |
+
"Unexpected API error. Please contact the plugin's author with the following "
|
1332 |
+
"error."
|
1333 |
+
msgstr "予期しない API のエラー。プラグイン開発者に連絡をとってください。"
|
1334 |
+
|
1335 |
+
#: includes/i18n.php:825
|
1336 |
+
msgid "No commitment for %s days - cancel anytime!"
|
1337 |
+
msgstr "%s 日以内であればいつでもキャンセルできます。"
|
1338 |
+
|
1339 |
+
#: includes/i18n.php:827
|
1340 |
+
msgid ""
|
1341 |
+
"Your license has expired. You can still continue using all the %s features, "
|
1342 |
+
"but you'll need to renew your license to continue getting updates and "
|
1343 |
+
"support."
|
1344 |
+
msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。"
|
1345 |
+
|
1346 |
+
#: includes/i18n.php:831
|
1347 |
+
msgid "Couldn't activate %s."
|
1348 |
+
msgstr "%s を有効化できません。"
|
1349 |
+
|
1350 |
+
#: includes/i18n.php:833
|
1351 |
+
msgid "Please contact us with the following message:"
|
1352 |
+
msgstr "以下のメッセージとともに私たちに連絡をください。"
|
1353 |
+
|
1354 |
+
#: includes/i18n.php:835
|
1355 |
+
msgid ""
|
1356 |
+
"It looks like you are still on the %s plan. If you did upgrade or change "
|
1357 |
+
"your plan, it's probably an issue on our side - sorry."
|
1358 |
+
msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。"
|
1359 |
+
|
1360 |
+
#: includes/i18n.php:839
|
1361 |
+
msgid "Please contact us here"
|
1362 |
+
msgstr "こちらで私たちに連絡をとってください。"
|
1363 |
+
|
1364 |
+
#: includes/i18n.php:841
|
1365 |
+
msgid ""
|
1366 |
+
"I have upgraded my account but when I try to Sync the License, the plan "
|
1367 |
+
"remains %s."
|
1368 |
+
msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。"
|
1369 |
+
|
1370 |
+
#: includes/i18n.php:849
|
1371 |
+
msgid "From unknown reason, the API connectivity test failed."
|
1372 |
+
msgstr "不明のエラーにより、API 接続ができませんでした。"
|
1373 |
+
|
1374 |
+
#: includes/i18n.php:853
|
1375 |
+
msgid ""
|
1376 |
+
"It's probably a temporary issue on our end. Just to be sure, with your "
|
1377 |
+
"permission, would it be o.k to run another connectivity test?"
|
1378 |
+
msgstr "それは私たちの一時的な問題のようです。もし許可していただけるなら他の接続テストをしてもよいですか?"
|
1379 |
+
|
1380 |
+
#: includes/i18n.php:857
|
1381 |
+
msgid ""
|
1382 |
+
"We use PHP cURL library for the API calls, which is a very common library "
|
1383 |
+
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1384 |
+
"on your server."
|
1385 |
+
msgstr "私たちは、API コールに PHP の cURL ライブラリを使用しています。これは一般的なライブラリで多くの場合インストールされていますが、あなたのサーバーにはインストールされていないようです。"
|
1386 |
+
|
1387 |
+
#: includes/i18n.php:861
|
1388 |
+
msgid ""
|
1389 |
+
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1390 |
+
msgstr "不明のエラーにより私たちが使用している CloudFlare のファイヤーウォールが接続を拒否したようです。"
|
1391 |
+
|
1392 |
+
#: includes/i18n.php:865
|
1393 |
+
msgctxt "as pluginX requires an access to our API"
|
1394 |
+
msgid "%s requires an access to our API."
|
1395 |
+
msgstr "%s は、私たちの API への接続が必要です。"
|
1396 |
+
|
1397 |
+
#: includes/i18n.php:869
|
1398 |
+
msgid ""
|
1399 |
+
"It looks like your server is using Squid ACL (access control lists), which "
|
1400 |
+
"blocks the connection."
|
1401 |
+
msgstr "サーバーは Squid ACL(Access control lists) を使用しているらしく、それが接続をブロックしています。"
|
1402 |
+
|
1403 |
+
#: includes/i18n.php:873
|
1404 |
+
msgid "I don't know what is Squid or ACL, help me!"
|
1405 |
+
msgstr "Squid ACL について知りません。助けてください!"
|
1406 |
+
|
1407 |
+
#: includes/i18n.php875, includes/i18n.php:889
|
1408 |
+
msgid ""
|
1409 |
+
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1410 |
+
"will get a follow-up email to %s once we have an update."
|
1411 |
+
msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。"
|
1412 |
+
|
1413 |
+
#: includes/i18n.php:879
|
1414 |
+
msgid "I'm a system administrator"
|
1415 |
+
msgstr "私はシステム管理者です"
|
1416 |
+
|
1417 |
+
#: includes/i18n.php:881
|
1418 |
+
msgid ""
|
1419 |
+
"Great, please whitelist the following domains: %s. Once you done, deactivate"
|
1420 |
+
" the plugin and activate it again."
|
1421 |
+
msgstr "以下のドメインを許可してください: %s 。それが完了したらそのプラグインを無効化して有効化してください。"
|
1422 |
+
|
1423 |
+
#: includes/i18n.php:885
|
1424 |
+
msgid "I don't know what is cURL or how to install it, help me!"
|
1425 |
+
msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。"
|
1426 |
+
|
1427 |
+
#: includes/i18n.php:893
|
1428 |
+
msgid ""
|
1429 |
+
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1430 |
+
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1431 |
+
"the plugin and reactivate it back again."
|
1432 |
+
msgstr "cURLをインストールし、php.iniファイルで有効にしてください。 正常に起動されたことを確認するには、 'phpinfo()' を使用してください。 プラグインを有効化したら、プラグインを無効化して再度有効化し直してください。"
|
1433 |
+
|
1434 |
+
#: includes/i18n.php:897
|
1435 |
+
msgid ""
|
1436 |
+
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1437 |
+
"you ASAP if you give us a chance."
|
1438 |
+
msgstr "それは私たちの側の問題だと確信しています。もし機会をくれるなら私たちはそれを一刻でも早く修正します。"
|
1439 |
+
|
1440 |
+
#: includes/i18n.php:901
|
1441 |
+
msgid ""
|
1442 |
+
"Sorry for the inconvenience and we are here to help if you give us a chance."
|
1443 |
+
msgstr "ご迷惑をおかけしてすいません。もし機会をいただけたらお手伝いをします。"
|
1444 |
+
|
1445 |
+
#: includes/i18n.php:905
|
1446 |
+
msgid "Yes - I'm giving you a chance to fix it"
|
1447 |
+
msgstr "はい、修正をお願いします。"
|
1448 |
+
|
1449 |
+
#: includes/i18n.php:907
|
1450 |
+
msgid ""
|
1451 |
+
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1452 |
+
"You will get a follow-up email to %s once we have an update."
|
1453 |
+
msgstr "私たちは、少しでも早くサーバーをホワイトリストに登録して問題を修正します。アップデートを行ったら、%s あてに報告を送信します。"
|
1454 |
+
|
1455 |
+
#: includes/i18n.php:911
|
1456 |
+
msgid "Let's try your previous version"
|
1457 |
+
msgstr "以前のバージョンでお試しください。"
|
1458 |
+
|
1459 |
+
#: includes/i18n.php:913
|
1460 |
+
msgid "Uninstall this version and install the previous one."
|
1461 |
+
msgstr "このバージョンをアンインストールして、以前のバージョンをインストールする。"
|
1462 |
+
|
1463 |
+
#: includes/i18n.php:917
|
1464 |
+
msgid "That's exhausting, please deactivate"
|
1465 |
+
msgstr "それは、使用できません。無効化してください。"
|
1466 |
+
|
1467 |
+
#: includes/i18n.php:919
|
1468 |
+
msgid ""
|
1469 |
+
"We feel your frustration and sincerely apologize for the inconvenience. Hope"
|
1470 |
+
" to see you again in the future."
|
1471 |
+
msgstr "ご迷惑をおかけして心からお詫び申し上げます。将来ふたたびお会いできることを楽しみにしています。"
|
1472 |
+
|
1473 |
+
#: includes/i18n.php:923
|
1474 |
+
msgid ""
|
1475 |
+
"Thank for giving us the chance to fix it! A message was just sent to our "
|
1476 |
+
"technical staff. We will get back to you as soon as we have an update to %s."
|
1477 |
+
" Appreciate your patience."
|
1478 |
+
msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。"
|
1479 |
+
|
1480 |
+
#: includes/i18n.php:927
|
1481 |
+
msgctxt "%1s - plugin title, %2s - API domain"
|
1482 |
+
msgid ""
|
1483 |
+
"Your server is blocking the access to Freemius' API, which is crucial for "
|
1484 |
+
"%1s synchronization. Please contact your host to whitelist %2s"
|
1485 |
+
msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。"
|
1486 |
+
|
1487 |
+
#: includes/i18n.php:931
|
1488 |
+
msgid ""
|
1489 |
+
"It seems like one of the authentication parameters is wrong. Update your "
|
1490 |
+
"Public Key, Secret Key & User ID, and try again."
|
1491 |
+
msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。"
|
1492 |
+
|
1493 |
+
#: includes/i18n.php:939
|
1494 |
+
msgid ""
|
1495 |
+
"Please check your mailbox, you should receive an email via %s to confirm the"
|
1496 |
+
" ownership change. From security reasons, you must confirm the change within"
|
1497 |
+
" the next 15 min. If you cannot find the email, please check your spam "
|
1498 |
+
"folder."
|
1499 |
+
msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。"
|
1500 |
+
|
1501 |
+
#: includes/i18n.php:943
|
1502 |
+
msgid ""
|
1503 |
+
"Thanks for confirming the ownership change. An email was just sent to %s for"
|
1504 |
+
" final approval."
|
1505 |
+
msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。"
|
1506 |
+
|
1507 |
+
#: includes/i18n.php:947
|
1508 |
+
msgid "%s is the new owner of the account."
|
1509 |
+
msgstr "%s は新しいオーナーです。"
|
1510 |
+
|
1511 |
+
#: includes/i18n.php:951
|
1512 |
+
msgctxt "addonX cannot run without pluginY"
|
1513 |
+
msgid "%s cannot run without %s."
|
1514 |
+
msgstr "%s は、%s が無いと実行することができません。"
|
1515 |
+
|
1516 |
+
#: includes/i18n.php:955
|
1517 |
+
msgctxt "addonX cannot run..."
|
1518 |
+
msgid "%s cannot run without the plugin."
|
1519 |
+
msgstr "%s は、プラグインが無いと実行することができません。"
|
1520 |
+
|
1521 |
+
#: includes/i18n.php:959
|
1522 |
+
msgctxt "pluginX activation was successfully..."
|
1523 |
+
msgid "%s activation was successfully completed."
|
1524 |
+
msgstr "%s の有効化が成功しました。"
|
1525 |
+
|
1526 |
+
#: includes/i18n.php:963
|
1527 |
+
msgctxt "Plugin installer section title"
|
1528 |
+
msgid "Features & Pricing"
|
1529 |
+
msgstr "機能 & 料金"
|
1530 |
+
|
1531 |
+
#: includes/i18n.php:967
|
1532 |
+
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1533 |
+
msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。"
|
1534 |
+
|
1535 |
+
#: includes/i18n.php:971
|
1536 |
+
msgid "Paid add-on must be deployed to Freemius."
|
1537 |
+
msgstr "有料アドオンは Freemius にデプロイされている必要があります。"
|
1538 |
+
|
1539 |
+
#: includes/i18n.php:979
|
1540 |
+
msgid ""
|
1541 |
+
"%s is a premium only add-on. You have to purchase a license first before "
|
1542 |
+
"activating the plugin."
|
1543 |
+
msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。"
|
1544 |
+
|
1545 |
+
#: includes/i18n.php:983
|
1546 |
+
msgid ""
|
1547 |
+
"%s free trial was successfully cancelled. Since the add-on is premium only "
|
1548 |
+
"it was automatically deactivated. If you like to use it in the future, "
|
1549 |
+
"you'll have to purchase a license."
|
1550 |
+
msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。"
|
1551 |
+
|
1552 |
+
#: includes/i18n.php:995
|
1553 |
+
msgctxt "as every month"
|
1554 |
+
msgid "Monthly"
|
1555 |
+
msgstr "月"
|
1556 |
+
|
1557 |
+
#: includes/i18n.php:997
|
1558 |
+
msgctxt "as monthly period"
|
1559 |
+
msgid "mo"
|
1560 |
+
msgstr "月"
|
1561 |
+
|
1562 |
+
#: includes/i18n.php:999
|
1563 |
+
msgctxt "as once a year"
|
1564 |
+
msgid "Annual"
|
1565 |
+
msgstr "年次"
|
1566 |
+
|
1567 |
+
#: includes/i18n.php:1001
|
1568 |
+
msgctxt "as once a year"
|
1569 |
+
msgid "Annually"
|
1570 |
+
msgstr "毎年"
|
1571 |
+
|
1572 |
+
#: includes/i18n.php:1003
|
1573 |
+
msgctxt "as once a year"
|
1574 |
+
msgid "Once"
|
1575 |
+
msgstr "一度"
|
1576 |
+
|
1577 |
+
#: includes/i18n.php:1005
|
1578 |
+
msgctxt "as annual period"
|
1579 |
+
msgid "year"
|
1580 |
+
msgstr "年"
|
1581 |
+
|
1582 |
+
#: includes/i18n.php:1007
|
1583 |
+
msgid "Lifetime"
|
1584 |
+
msgstr "ライフタイム"
|
1585 |
+
|
1586 |
+
#: includes/i18n.php:1009
|
1587 |
+
msgctxt "e.g. the best product"
|
1588 |
+
msgid "Best"
|
1589 |
+
msgstr "ベスト"
|
1590 |
+
|
1591 |
+
#: includes/i18n.php:1011
|
1592 |
+
msgctxt "e.g. billed monthly"
|
1593 |
+
msgid "Billed %s"
|
1594 |
+
msgstr "%s への請求"
|
1595 |
+
|
1596 |
+
#: includes/i18n.php:1013
|
1597 |
+
msgctxt "as a discount of $5 or 10%"
|
1598 |
+
msgid "Save %s"
|
1599 |
+
msgstr "%s を保存"
|
1600 |
+
|
1601 |
+
#: includes/i18n.php:1017
|
1602 |
+
msgid "View details"
|
1603 |
+
msgstr "詳細を表示"
|
1604 |
+
|
1605 |
+
#: includes/i18n.php:1025
|
1606 |
+
msgctxt "button label"
|
1607 |
+
msgid "Approve & Start Trial"
|
1608 |
+
msgstr "気に入ったのでトライアルを開始"
|
1609 |
+
|
1610 |
+
#: includes/i18n.php:1029
|
1611 |
+
msgid ""
|
1612 |
+
"You are 1-click away from starting your %1$s-day free trial of the %2$s "
|
1613 |
+
"plan."
|
1614 |
+
msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。"
|
1615 |
+
|
1616 |
+
#: includes/i18n.php:1033
|
1617 |
+
msgid ""
|
1618 |
+
"For compliance with the WordPress.org guidelines, before we start the trial "
|
1619 |
+
"we ask that you opt-in with your user and non-sensitive site information, "
|
1620 |
+
"allowing the plugin to periodically send data to %s to check for version "
|
1621 |
+
"updates and to validate your trial."
|
1622 |
+
msgstr "WordPress.org ガイドラインの遵守のため、ユーザーとセンシティブでないサイト情報をオプトインすること、バージョンの更新確認のために %s へとプラグインが一時的にデータを送信することの許可、トライアルを有効にすることの3つについて、トライアルの開始前にお尋ねします。"
|
1623 |
+
|
1624 |
+
#: includes/i18n.php:1045
|
1625 |
+
msgid "Business name"
|
1626 |
+
msgstr "商号"
|
1627 |
+
|
1628 |
+
#: includes/i18n.php:1047
|
1629 |
+
msgid "Tax / VAT ID"
|
1630 |
+
msgstr "税金 / VAT ID"
|
1631 |
+
|
1632 |
+
#: includes/i18n.php:1049
|
1633 |
+
msgid "Address Line %d"
|
1634 |
+
msgstr "住所欄 %d"
|
1635 |
+
|
1636 |
+
#: includes/i18n.php:1051
|
1637 |
+
msgid "Country"
|
1638 |
+
msgstr "国"
|
1639 |
+
|
1640 |
+
#: includes/i18n.php:1053
|
1641 |
+
msgid "Select Country"
|
1642 |
+
msgstr "国を選択"
|
1643 |
+
|
1644 |
+
#: includes/i18n.php:1055
|
1645 |
+
msgid "City"
|
1646 |
+
msgstr "市"
|
1647 |
+
|
1648 |
+
#: includes/i18n.php:1057
|
1649 |
+
msgid "Town"
|
1650 |
+
msgstr "町"
|
1651 |
+
|
1652 |
+
#: includes/i18n.php:1059
|
1653 |
+
msgid "State"
|
1654 |
+
msgstr "州"
|
1655 |
+
|
1656 |
+
#: includes/i18n.php:1061
|
1657 |
+
msgid "Province"
|
1658 |
+
msgstr "県・州・省"
|
1659 |
+
|
1660 |
+
#: includes/i18n.php:1063
|
1661 |
+
msgid "ZIP / Postal Code"
|
1662 |
+
msgstr "ZIP / 郵便番号"
|
includes/pum-sdk/freemius/languages/freemius.pot
CHANGED
@@ -1,1525 +1,1724 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: freemius\n"
|
6 |
-
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
7 |
"MIME-Version: 1.0\n"
|
8 |
"Content-Type: text/plain; charset=UTF-8\n"
|
9 |
"Content-Transfer-Encoding: 8bit\n"
|
10 |
-
"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
|
11 |
-
"Last-Translator: Vova Feldman <vova@freemius.com>\n"
|
12 |
"Language-Team: Freemius Team <admin@freemius.com>\n"
|
|
|
|
|
13 |
"X-Poedit-Basepath: ..\n"
|
14 |
-
"X-Poedit-
|
15 |
-
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
16 |
"X-Poedit-SearchPath-0: .\n"
|
17 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
|
|
18 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
19 |
-
#: includes/i18n.php:41, includes/i18n.php:55
|
20 |
-
msgid "Yes - I'm in!"
|
21 |
-
msgstr ""
|
22 |
|
23 |
-
#: includes/i18n.php:
|
24 |
-
msgid "Not today"
|
25 |
-
msgstr ""
|
26 |
-
|
27 |
-
#: includes/i18n.php:69
|
28 |
msgid "Account"
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/i18n.php:
|
32 |
msgid "Add On"
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: includes/i18n.php:
|
36 |
msgid "Contact Us"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: includes/i18n.php:
|
40 |
msgid "Contact Support"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/i18n.php:
|
44 |
msgid "Change Ownership"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/i18n.php:
|
48 |
msgid "Support"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/i18n.php:
|
52 |
msgid "Support Forum"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: includes/i18n.php:
|
56 |
msgid "Add Ons"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/i18n.php:
|
60 |
msgctxt "verb"
|
61 |
msgid "Upgrade"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: includes/i18n.php:
|
65 |
msgid "Awesome"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: includes/i18n.php:
|
69 |
msgctxt "noun"
|
70 |
msgid "Pricing"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: includes/i18n.php:
|
74 |
msgctxt "noun"
|
75 |
msgid "Price"
|
76 |
msgstr ""
|
77 |
|
78 |
-
#: includes/i18n.php:
|
79 |
msgid "Unlimited Updates"
|
80 |
msgstr ""
|
81 |
|
82 |
-
#: includes/i18n.php:
|
83 |
msgctxt "verb"
|
84 |
msgid "Downgrade"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/i18n.php:
|
88 |
msgid "Cancel Trial"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/i18n.php:
|
92 |
msgid "Free Trial"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/i18n.php:
|
96 |
msgid "Start my free %s"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/i18n.php:
|
100 |
msgid "No commitment for %s - cancel anytime"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/i18n.php:
|
104 |
msgid "After your free %s, pay as little as %s"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/i18n.php:
|
108 |
msgid "Details"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/i18n.php:
|
112 |
msgid "Account Details"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: includes/i18n.php:
|
116 |
msgctxt "verb"
|
117 |
msgid "Delete"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: includes/i18n.php:
|
121 |
msgctxt "verb"
|
122 |
msgid "Show"
|
123 |
msgstr ""
|
124 |
|
125 |
-
#: includes/i18n.php:
|
126 |
msgctxt "verb"
|
127 |
msgid "Hide"
|
128 |
msgstr ""
|
129 |
|
130 |
-
#: includes/i18n.php:
|
131 |
msgctxt "verb"
|
132 |
msgid "Edit"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/i18n.php:
|
136 |
msgctxt "verb"
|
137 |
msgid "Update"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: includes/i18n.php:
|
141 |
msgid "Date"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: includes/i18n.php:
|
145 |
msgid "Amount"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: includes/i18n.php:
|
149 |
msgid "Invoice"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: includes/i18n.php:
|
153 |
msgid "Billing"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: includes/i18n.php:
|
157 |
msgid "Payments"
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: includes/i18n.php:
|
161 |
msgid "Delete Account"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: includes/i18n.php:
|
165 |
msgctxt "as close a window"
|
166 |
msgid "Dismiss"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: includes/i18n.php:
|
170 |
msgctxt "as product pricing plan"
|
171 |
msgid "Plan"
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/i18n.php:
|
175 |
msgid "Change Plan"
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/i18n.php:
|
179 |
msgctxt "as download professional version"
|
180 |
msgid "Download %s Version"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: includes/i18n.php:
|
184 |
msgctxt "as download professional version now"
|
185 |
msgid "Download %s version now"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: includes/i18n.php:
|
189 |
msgctxt "as download latest version"
|
190 |
msgid "Download Latest"
|
191 |
msgstr ""
|
192 |
|
193 |
-
#: includes/i18n.php:
|
194 |
msgctxt "E.g. you have a professional license."
|
195 |
msgid "You have a %s license."
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: includes/i18n.php:
|
199 |
msgid "New"
|
200 |
msgstr ""
|
201 |
|
202 |
-
#: includes/i18n.php:
|
203 |
msgid "Free"
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: includes/i18n.php:
|
207 |
msgctxt "as trial plan"
|
208 |
msgid "Trial"
|
209 |
msgstr ""
|
210 |
|
211 |
-
#: includes/i18n.php:
|
212 |
msgctxt "as starting a trial plan"
|
213 |
msgid "Start Trial"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/i18n.php:
|
217 |
msgctxt "verb"
|
218 |
msgid "Purchase"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: includes/i18n.php:
|
222 |
msgid "Purchase License"
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: includes/i18n.php:
|
226 |
msgctxt "verb"
|
227 |
msgid "Buy"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: includes/i18n.php:
|
231 |
msgid "Buy License"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: includes/i18n.php:
|
235 |
msgid "Single Site License"
|
236 |
msgstr ""
|
237 |
|
238 |
-
#: includes/i18n.php:
|
239 |
msgid "Unlimited Licenses"
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: includes/i18n.php:
|
243 |
msgid "Up to %s Sites"
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: includes/i18n.php:
|
247 |
msgid "%sRenew your license now%s to access version %s features and support."
|
248 |
msgstr ""
|
249 |
|
250 |
-
#: includes/i18n.php:
|
251 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
252 |
msgstr ""
|
253 |
|
254 |
-
#: includes/i18n.php:
|
255 |
msgctxt "e.g. Professional Plan"
|
256 |
msgid "%s Plan"
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: includes/i18n.php:
|
260 |
msgid "You are just one step away - %s"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: includes/i18n.php:
|
264 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
265 |
msgid "Complete \"%s\" Activation Now"
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: includes/i18n.php:
|
269 |
msgid "We made a few tweaks to the plugin, %s"
|
270 |
msgstr ""
|
271 |
|
272 |
-
#: includes/i18n.php:
|
273 |
msgid "Opt-in to make \"%s\" Better!"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: includes/i18n.php:
|
277 |
msgid "Error"
|
278 |
msgstr ""
|
279 |
|
280 |
-
#: includes/i18n.php:
|
281 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: includes/i18n.php:
|
285 |
msgctxt "as expiration date"
|
286 |
msgid "Expiration"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/i18n.php:
|
290 |
msgctxt "as software license"
|
291 |
msgid "License"
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: includes/i18n.php:
|
295 |
msgid "not verified"
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: includes/i18n.php:
|
299 |
msgid "Verify Email"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: includes/i18n.php:
|
303 |
msgctxt "e.g. expires in 2 months"
|
304 |
msgid "Expires in %s"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: includes/i18n.php:
|
308 |
msgctxt "e.g. auto renews in 2 months"
|
309 |
msgid "Auto renews in %s"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: includes/i18n.php:
|
313 |
msgid "No expiration"
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: includes/i18n.php:
|
317 |
msgid "Expired"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: includes/i18n.php:
|
321 |
msgid "Cancelled"
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: includes/i18n.php:
|
325 |
msgctxt "e.g. In 2 hours"
|
326 |
msgid "In %s"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/i18n.php:
|
330 |
msgctxt "e.g. 2 min ago"
|
331 |
msgid "%s ago"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
335 |
msgctxt "as plugin version"
|
336 |
msgid "Version"
|
337 |
msgstr ""
|
338 |
|
339 |
-
#: includes/i18n.php:
|
340 |
msgid "Name"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: includes/i18n.php:
|
344 |
msgid "Email"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/i18n.php:
|
348 |
msgid "Email address"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: includes/i18n.php:
|
352 |
msgid "Verified"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
msgid "Plugin"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: includes/i18n.php:
|
360 |
msgid "Plugins"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
364 |
msgid "Themes"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: includes/i18n.php:
|
368 |
msgctxt "as file/folder path"
|
369 |
msgid "Path"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: includes/i18n.php:
|
373 |
msgid "Title"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: includes/i18n.php:
|
377 |
msgid "Free version"
|
378 |
msgstr ""
|
379 |
|
380 |
-
#: includes/i18n.php:
|
381 |
msgid "Premium version"
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: includes/i18n.php:
|
385 |
msgctxt "as WP plugin slug"
|
386 |
msgid "Slug"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/i18n.php:
|
390 |
msgid "ID"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: includes/i18n.php:
|
394 |
msgid "Users"
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/i18n.php:
|
398 |
msgid "Plugin Installs"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
402 |
msgctxt "like websites"
|
403 |
msgid "Sites"
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: includes/i18n.php:
|
407 |
msgid "User ID"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: includes/i18n.php:
|
411 |
msgid "Site ID"
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: includes/i18n.php:
|
415 |
msgid "Public Key"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: includes/i18n.php:
|
419 |
msgid "Secret Key"
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: includes/i18n.php:
|
423 |
msgctxt "as secret encryption key missing"
|
424 |
msgid "No Secret"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: includes/i18n.php:
|
428 |
msgid "No ID"
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: includes/i18n.php:
|
432 |
msgctxt "as synchronize license"
|
433 |
msgid "Sync License"
|
434 |
msgstr ""
|
435 |
|
436 |
-
#: includes/i18n.php:
|
437 |
msgctxt "as synchronize"
|
438 |
msgid "Sync"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: includes/i18n.php:
|
442 |
msgid "Activate License"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: includes/i18n.php:
|
446 |
msgid "Activate Free Version"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: includes/i18n.php:
|
450 |
msgid "Please enter the license key that you received in the email right after the purchase:"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: includes/i18n.php:
|
454 |
msgid "Activating license..."
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: includes/i18n.php:
|
458 |
msgid "Change License"
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: includes/i18n.php:
|
462 |
msgid "Update License"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: includes/i18n.php:
|
466 |
msgid "Deactivate License"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: includes/i18n.php:
|
470 |
msgid "Activate"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: includes/i18n.php:
|
474 |
msgid "Deactivate"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: includes/i18n.php:
|
478 |
msgid "Skip & Deactivate"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
482 |
msgid "No - just deactivate"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: includes/i18n.php:
|
486 |
msgid "Yes - do your thing"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: includes/i18n.php:
|
490 |
msgctxt "active mode"
|
491 |
msgid "Active"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: includes/i18n.php:
|
495 |
msgctxt "is active mode?"
|
496 |
msgid "Is Active"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/i18n.php:
|
500 |
msgid "Install Now"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/i18n.php:
|
504 |
msgid "Install Update Now"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/i18n.php:
|
508 |
msgid "More information about %s"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/i18n.php:
|
512 |
msgid "Localhost"
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/i18n.php:
|
516 |
msgctxt "as activate Professional plan"
|
517 |
msgid "Activate %s Plan"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: includes/i18n.php:
|
521 |
msgctxt "as 5 licenses left"
|
522 |
msgid "%s left"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: includes/i18n.php:
|
526 |
msgid "Last license"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: includes/i18n.php:
|
530 |
msgid "What is your %s?"
|
531 |
msgstr ""
|
532 |
|
533 |
-
#: includes/i18n.php:
|
534 |
msgid "Activate this add-on"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: includes/i18n.php:
|
538 |
msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
539 |
msgstr ""
|
540 |
|
541 |
-
#: includes/i18n.php:
|
542 |
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?"
|
543 |
msgstr ""
|
544 |
|
545 |
-
#: includes/i18n.php:
|
546 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: includes/i18n.php:
|
550 |
msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/i18n.php:
|
554 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: includes/i18n.php:
|
558 |
msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: includes/i18n.php:
|
562 |
-
msgid "Once your license
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: includes/i18n.php:
|
566 |
msgid "Are you sure you want to proceed?"
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: includes/i18n.php:
|
570 |
msgid "Add Ons for %s"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: includes/i18n.php:
|
574 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: includes/i18n.php:
|
578 |
msgid "Anonymous feedback"
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: includes/i18n.php:
|
582 |
msgid "Quick feedback"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: includes/i18n.php:
|
586 |
msgid "If you have a moment, please let us know why you are deactivating"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: includes/i18n.php:
|
590 |
msgid "Yes - Deactivate"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: includes/i18n.php:
|
594 |
msgid "Submit & Deactivate"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: includes/i18n.php:
|
598 |
msgid "Cancel"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: includes/i18n.php:
|
602 |
msgid "I no longer need the plugin"
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: includes/i18n.php:
|
606 |
msgid "I found a better plugin"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: includes/i18n.php:
|
610 |
msgid "I only needed the plugin for a short period"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: includes/i18n.php:
|
614 |
msgid "The plugin broke my site"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: includes/i18n.php:
|
618 |
msgid "The plugin suddenly stopped working"
|
619 |
msgstr ""
|
620 |
|
621 |
-
#: includes/i18n.php:
|
622 |
msgid "I can't pay for it anymore"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: includes/i18n.php:
|
626 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: includes/i18n.php:
|
630 |
msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
|
631 |
msgid "Other"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: includes/i18n.php:
|
635 |
msgid "Kindly tell us the reason so we can improve."
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: includes/i18n.php:
|
639 |
msgid "What's the plugin's name?"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: includes/i18n.php:
|
643 |
msgid "What price would you feel comfortable paying?"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: includes/i18n.php:
|
647 |
msgid "I couldn't understand how to make it work"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: includes/i18n.php:
|
651 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
652 |
msgstr ""
|
653 |
|
654 |
-
#: includes/i18n.php:
|
655 |
msgid "The plugin is not working"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: includes/i18n.php:
|
659 |
msgid "It's not what I was looking for"
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: includes/i18n.php:
|
663 |
msgid "The plugin didn't work as expected"
|
664 |
msgstr ""
|
665 |
|
666 |
-
#: includes/i18n.php:
|
667 |
msgid "What feature?"
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: includes/i18n.php:
|
671 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: includes/i18n.php:
|
675 |
msgid "What you've been looking for?"
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: includes/i18n.php:
|
679 |
msgid "What did you expect?"
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: includes/i18n.php:
|
683 |
msgid "The plugin didn't work"
|
684 |
msgstr ""
|
685 |
|
686 |
-
#: includes/i18n.php:
|
687 |
msgid "I don't like to share my information with you"
|
688 |
msgstr ""
|
689 |
|
690 |
-
#: includes/i18n.php:
|
691 |
msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
692 |
msgstr ""
|
693 |
|
694 |
-
#: includes/i18n.php:
|
695 |
msgctxt "greeting"
|
696 |
msgid "Hey %s,"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/i18n.php:
|
700 |
msgctxt "a greeting. E.g. Thanks John!"
|
701 |
msgid "Thanks %s!"
|
702 |
msgstr ""
|
703 |
|
704 |
-
#: includes/i18n.php:
|
705 |
msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
706 |
msgstr ""
|
707 |
|
708 |
-
#: includes/i18n.php:
|
709 |
msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
710 |
msgstr ""
|
711 |
|
712 |
-
#: includes/i18n.php:
|
713 |
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."
|
714 |
msgstr ""
|
715 |
|
716 |
-
#: includes/i18n.php:
|
717 |
msgid "complete the install"
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: includes/i18n.php:
|
721 |
msgid "start the trial"
|
722 |
msgstr ""
|
723 |
|
724 |
-
#: includes/i18n.php:
|
725 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: includes/i18n.php:
|
729 |
msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
730 |
msgstr ""
|
731 |
|
732 |
-
#: includes/i18n.php:
|
733 |
msgid "What permissions are being granted?"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: includes/i18n.php:
|
737 |
msgid "Your Profile Overview"
|
738 |
msgstr ""
|
739 |
|
740 |
-
#: includes/i18n.php:
|
741 |
msgid "Name and email address"
|
742 |
msgstr ""
|
743 |
|
744 |
-
#: includes/i18n.php:
|
745 |
msgid "Your Site Overview"
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: includes/i18n.php:
|
749 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
750 |
msgstr ""
|
751 |
|
752 |
-
#: includes/i18n.php:
|
753 |
msgid "Current Plugin Events"
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: includes/i18n.php:
|
757 |
msgid "Activation, deactivation and uninstall"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: includes/i18n.php:
|
761 |
msgid "Plugins & Themes"
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: includes/i18n.php:
|
765 |
msgid "Titles, versions and state."
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: includes/i18n.php:
|
769 |
msgid "Admin Notices"
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: includes/i18n.php:
|
773 |
msgid "Newsletter"
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: includes/i18n.php:
|
777 |
msgid "Updates, announcements, marketing, no spam"
|
778 |
msgstr ""
|
779 |
|
780 |
-
#: includes/i18n.php:
|
781 |
msgid "Privacy Policy"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: includes/i18n.php:
|
785 |
msgid "Terms of Service"
|
786 |
msgstr ""
|
787 |
|
788 |
-
#: includes/i18n.php:
|
789 |
msgctxt "as activating plugin"
|
790 |
msgid "Activating"
|
791 |
msgstr ""
|
792 |
|
793 |
-
#: includes/i18n.php:
|
794 |
msgctxt "as in the process of sending an email"
|
795 |
msgid "Sending email"
|
796 |
msgstr ""
|
797 |
|
798 |
-
#: includes/i18n.php:
|
799 |
msgctxt "button label"
|
800 |
msgid "Allow & Continue"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/i18n.php:
|
804 |
msgctxt "button label"
|
805 |
msgid "Agree & Activate License"
|
806 |
msgstr ""
|
807 |
|
808 |
-
#: includes/i18n.php:
|
809 |
msgctxt "verb"
|
810 |
msgid "Skip"
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: includes/i18n.php:
|
814 |
msgid "Click here to use the plugin anonymously"
|
815 |
msgstr ""
|
816 |
|
817 |
-
#: includes/i18n.php:
|
818 |
msgid "Re-send activation email"
|
819 |
msgstr ""
|
820 |
|
821 |
-
#: includes/i18n.php:
|
822 |
msgid "License key"
|
823 |
msgstr ""
|
824 |
|
825 |
-
#: includes/i18n.php:
|
826 |
msgid "Send License Key"
|
827 |
msgstr ""
|
828 |
|
829 |
-
#: includes/i18n.php:
|
830 |
msgid "Sending license key"
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: includes/i18n.php:
|
834 |
msgid "Have a license key?"
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: includes/i18n.php:
|
838 |
msgid "Don't have a license key?"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: includes/i18n.php:
|
842 |
msgid "Can't find your license key?"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: includes/i18n.php:
|
846 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: includes/i18n.php:
|
850 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
851 |
msgstr ""
|
852 |
|
853 |
-
#: includes/i18n.php:
|
854 |
msgid "Opt In"
|
855 |
msgstr ""
|
856 |
|
857 |
-
#: includes/i18n.php:
|
858 |
msgid "Opt Out"
|
859 |
msgstr ""
|
860 |
|
861 |
-
#: includes/i18n.php:
|
862 |
msgid "On second thought - I want to continue helping"
|
863 |
msgstr ""
|
864 |
|
865 |
-
#: includes/i18n.php:
|
866 |
msgid "Opting out..."
|
867 |
msgstr ""
|
868 |
|
869 |
-
#: includes/i18n.php:
|
870 |
msgid "Opting in..."
|
871 |
msgstr ""
|
872 |
|
873 |
-
#: includes/i18n.php:
|
874 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
875 |
msgstr ""
|
876 |
|
877 |
-
#: includes/i18n.php:
|
878 |
msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
879 |
msgstr ""
|
880 |
|
881 |
-
#: includes/i18n.php:
|
882 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
883 |
msgstr ""
|
884 |
|
885 |
-
#: includes/i18n.php:
|
886 |
msgid "Screenshots"
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: includes/i18n.php:
|
890 |
msgid "Click to view full-size screenshot %d"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: includes/i18n.php:
|
894 |
msgid "Freemius Debug"
|
895 |
msgstr ""
|
896 |
|
897 |
-
#: includes/i18n.php:
|
898 |
msgctxt "as turned on"
|
899 |
msgid "On"
|
900 |
msgstr ""
|
901 |
|
902 |
-
#: includes/i18n.php:
|
903 |
msgctxt "as turned off"
|
904 |
msgid "Off"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: includes/i18n.php:
|
908 |
msgctxt "as code debugging"
|
909 |
msgid "Debugging"
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: includes/i18n.php:
|
913 |
msgid "Freemius State"
|
914 |
msgstr ""
|
915 |
|
916 |
-
#: includes/i18n.php:
|
917 |
msgctxt "as connection was successful"
|
918 |
msgid "Connected"
|
919 |
msgstr ""
|
920 |
|
921 |
-
#: includes/i18n.php:
|
922 |
msgctxt "as connection blocked"
|
923 |
msgid "Blocked"
|
924 |
msgstr ""
|
925 |
|
926 |
-
#: includes/i18n.php:
|
927 |
msgctxt "as application program interface"
|
928 |
msgid "API"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/i18n.php:
|
932 |
msgctxt "as software development kit versions"
|
933 |
msgid "SDK"
|
934 |
msgstr ""
|
935 |
|
936 |
-
#: includes/i18n.php:
|
937 |
msgctxt "as software development kit versions"
|
938 |
msgid "SDK Versions"
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: includes/i18n.php:
|
942 |
msgctxt "as plugin folder path"
|
943 |
msgid "Plugin Path"
|
944 |
msgstr ""
|
945 |
|
946 |
-
#: includes/i18n.php:
|
947 |
msgctxt "as sdk path"
|
948 |
msgid "SDK Path"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: includes/i18n.php:
|
952 |
msgid "Add Ons of Plugin %s"
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: includes/i18n.php:
|
956 |
msgid "Are you sure you want to delete all Freemius data?"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: includes/i18n.php:
|
960 |
msgid "Actions"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: includes/i18n.php:
|
964 |
msgid "Delete All Accounts"
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: includes/i18n.php:
|
968 |
msgid "Start Fresh"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: includes/i18n.php:
|
972 |
msgid "Clear API Cache"
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: includes/i18n.php:
|
976 |
msgid "Sync Data From Server"
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: includes/i18n.php:
|
980 |
msgid "Scheduled Crons"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
984 |
msgid "Plugins & Themes Sync"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
988 |
msgctxt "as congratulations"
|
989 |
msgid "Congrats"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#: includes/i18n.php:
|
993 |
msgctxt "exclamation"
|
994 |
msgid "Oops"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: includes/i18n.php:
|
998 |
msgctxt "interjection expressing joy or exuberance"
|
999 |
msgid "Yee-haw"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
-
#: includes/i18n.php:
|
1003 |
msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
|
1004 |
msgid "W00t"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: includes/i18n.php:
|
1008 |
msgctxt "a positive response"
|
1009 |
msgid "Right on"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: includes/i18n.php:
|
1013 |
msgctxt "something somebody says when they are thinking about what you have just said. "
|
1014 |
msgid "Hmm"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: includes/i18n.php:
|
1018 |
msgid "O.K"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: includes/i18n.php:
|
1022 |
msgctxt "exclamation"
|
1023 |
msgid "Hey"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: includes/i18n.php:
|
1027 |
msgctxt "advance notice of something that will need attention."
|
1028 |
msgid "Heads up"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: includes/i18n.php:
|
1032 |
msgid "Seems like you got the latest release."
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: includes/i18n.php:
|
1036 |
msgid "You are all good!"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
-
#: includes/i18n.php:
|
1040 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: includes/i18n.php:
|
1044 |
msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: includes/i18n.php:
|
1048 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1049 |
msgstr ""
|
1050 |
|
1051 |
-
#: includes/i18n.php:
|
1052 |
msgid "Your name was successfully updated."
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: includes/i18n.php:
|
1056 |
msgid "You have successfully updated your %s."
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: includes/i18n.php:
|
1060 |
msgid "Please provide your full name."
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: includes/i18n.php:
|
1064 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1065 |
msgstr ""
|
1066 |
|
1067 |
-
#: includes/i18n.php:
|
1068 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: includes/i18n.php:
|
1072 |
msgid "No credit card required"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
-
#: includes/i18n.php:
|
1076 |
msgid "Premium plugin version was successfully activated."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: includes/i18n.php:
|
1080 |
msgid "The upgrade of %s was successfully completed."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: includes/i18n.php:
|
1084 |
msgid "Your account was successfully activated with the %s plan."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: includes/i18n.php:
|
1088 |
msgid "Download the latest %s version now"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: includes/i18n.php:
|
1092 |
msgid "Please follow these steps to complete the upgrade"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: includes/i18n.php:
|
1096 |
msgid "Download the latest %s version"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: includes/i18n.php:
|
1100 |
msgid "Download the latest version"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: includes/i18n.php:
|
1104 |
msgid "Deactivate the free version"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
-
#: includes/i18n.php:
|
1108 |
msgid "Upload and activate the downloaded version"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
-
#: includes/i18n.php:
|
1112 |
msgid "How to upload and activate?"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
-
#: includes/i18n.php:
|
1116 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1117 |
msgid "%s Add-on was successfully purchased."
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#: includes/i18n.php:
|
1121 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1122 |
msgstr ""
|
1123 |
|
1124 |
-
#: includes/i18n.php:
|
1125 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1126 |
msgstr ""
|
1127 |
|
1128 |
-
#: includes/i18n.php:
|
1129 |
msgid "Your plan was successfully upgraded."
|
1130 |
msgstr ""
|
1131 |
|
1132 |
-
#: includes/i18n.php:
|
1133 |
msgid "Your plan was successfully changed to %s."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: includes/i18n.php:
|
1137 |
msgid "Your license has expired. You can still continue using the free plugin forever."
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: includes/i18n.php:
|
1141 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: includes/i18n.php:
|
1145 |
msgid "Your trial has been successfully started."
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: includes/i18n.php:
|
1149 |
msgid "Your license was successfully activated."
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: includes/i18n.php:
|
1153 |
msgid "It looks like your site currently doesn't have an active license."
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: includes/i18n.php:
|
1157 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: includes/i18n.php:
|
1161 |
msgid "It looks like the license deactivation failed."
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: includes/i18n.php:
|
1165 |
msgid "It looks like the license could not be activated."
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: includes/i18n.php:
|
1169 |
msgid "Error received from the server:"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: includes/i18n.php:
|
1173 |
msgid "Your trial has expired. You can still continue using all our free features."
|
1174 |
msgstr ""
|
1175 |
|
1176 |
-
#: includes/i18n.php:
|
1177 |
msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1178 |
msgstr ""
|
1179 |
|
1180 |
-
#: includes/i18n.php:
|
1181 |
msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1182 |
msgstr ""
|
1183 |
|
1184 |
-
#: includes/i18n.php:
|
1185 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#: includes/i18n.php:
|
1189 |
msgid "Your %s free trial was successfully cancelled."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: includes/i18n.php:
|
1193 |
msgctxt "%s - numeric version number"
|
1194 |
msgid "Version %s was released."
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: includes/i18n.php:
|
1198 |
msgid "Please download %s."
|
1199 |
msgstr ""
|
1200 |
|
1201 |
-
#: includes/i18n.php:
|
1202 |
msgctxt "%s - plan name, as the latest professional version here"
|
1203 |
msgid "the latest %s version here"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
-
#: includes/i18n.php:
|
1207 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1208 |
msgstr ""
|
1209 |
|
1210 |
-
#: includes/i18n.php:
|
1211 |
msgctxt "call to action"
|
1212 |
msgid "Start free trial"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: includes/i18n.php:
|
1216 |
msgid "Starting trial"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: includes/i18n.php:
|
1220 |
msgid "Please wait"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: includes/i18n.php:
|
1224 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: includes/i18n.php:
|
1228 |
msgid "You already utilized a trial before."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: includes/i18n.php:
|
1232 |
msgid "You are already running the plugin in a trial mode."
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: includes/i18n.php:
|
1236 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: includes/i18n.php:
|
1240 |
msgid "Plan %s does not support a trial period."
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: includes/i18n.php:
|
1244 |
msgid "None of the plugin's plans supports a trial period."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: includes/i18n.php:
|
1248 |
msgid "Unexpected API error. Please contact the plugin's author with the following error."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: includes/i18n.php:
|
1252 |
msgid "No commitment for %s days - cancel anytime!"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: includes/i18n.php:
|
1256 |
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."
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: includes/i18n.php:
|
1260 |
msgid "Couldn't activate %s."
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: includes/i18n.php:
|
1264 |
msgid "Please contact us with the following message:"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: includes/i18n.php:
|
1268 |
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."
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: includes/i18n.php:
|
1272 |
msgid "Please contact us here"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: includes/i18n.php:
|
1276 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: includes/i18n.php:
|
1280 |
msgid "From unknown reason, the API connectivity test failed."
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: includes/i18n.php:
|
1284 |
msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: includes/i18n.php:
|
1288 |
msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1289 |
msgstr ""
|
1290 |
|
1291 |
-
#: includes/i18n.php:
|
1292 |
msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1293 |
msgstr ""
|
1294 |
|
1295 |
-
#: includes/i18n.php:
|
1296 |
msgctxt "as pluginX requires an access to our API"
|
1297 |
msgid "%s requires an access to our API."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: includes/i18n.php:
|
1301 |
msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: includes/i18n.php:
|
1305 |
msgid "I don't know what is Squid or ACL, help me!"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: includes/i18n.php:
|
1309 |
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."
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: includes/i18n.php:
|
1313 |
msgid "I'm a system administrator"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#: includes/i18n.php:
|
1317 |
-
msgid "Great, please whitelist the following domains: %s. Once you done, deactivate the plugin and activate it again."
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#: includes/i18n.php:
|
1321 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: includes/i18n.php:
|
1325 |
msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: includes/i18n.php:
|
1329 |
msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: includes/i18n.php:
|
1333 |
msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1334 |
msgstr ""
|
1335 |
|
1336 |
-
#: includes/i18n.php:
|
1337 |
msgid "Yes - I'm giving you a chance to fix it"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#: includes/i18n.php:
|
1341 |
msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: includes/i18n.php:
|
1345 |
msgid "Let's try your previous version"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#: includes/i18n.php:
|
1349 |
msgid "Uninstall this version and install the previous one."
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#: includes/i18n.php:
|
1353 |
msgid "That's exhausting, please deactivate"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: includes/i18n.php:
|
1357 |
msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: includes/i18n.php:
|
1361 |
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."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: includes/i18n.php:
|
1365 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1366 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: includes/i18n.php:
|
1370 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1371 |
msgstr ""
|
1372 |
|
1373 |
-
#: includes/i18n.php:
|
1374 |
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."
|
1375 |
msgstr ""
|
1376 |
|
1377 |
-
#: includes/i18n.php:
|
1378 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: includes/i18n.php:
|
1382 |
msgid "%s is the new owner of the account."
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: includes/i18n.php:
|
1386 |
msgctxt "addonX cannot run without pluginY"
|
1387 |
msgid "%s cannot run without %s."
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: includes/i18n.php:
|
1391 |
msgctxt "addonX cannot run..."
|
1392 |
msgid "%s cannot run without the plugin."
|
1393 |
msgstr ""
|
1394 |
|
1395 |
-
#: includes/i18n.php:
|
1396 |
msgctxt "pluginX activation was successfully..."
|
1397 |
msgid "%s activation was successfully completed."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: includes/i18n.php:
|
1401 |
msgctxt "Plugin installer section title"
|
1402 |
msgid "Features & Pricing"
|
1403 |
msgstr ""
|
1404 |
|
1405 |
-
#: includes/i18n.php:
|
1406 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1407 |
msgstr ""
|
1408 |
|
1409 |
-
#: includes/i18n.php:
|
1410 |
msgid "Paid add-on must be deployed to Freemius."
|
1411 |
msgstr ""
|
1412 |
|
1413 |
-
#: includes/i18n.php:
|
1414 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1415 |
msgstr ""
|
1416 |
|
1417 |
-
#: includes/i18n.php:
|
1418 |
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."
|
1419 |
msgstr ""
|
1420 |
|
1421 |
-
#: includes/i18n.php:
|
1422 |
msgctxt "as every month"
|
1423 |
msgid "Monthly"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: includes/i18n.php:
|
1427 |
msgctxt "as monthly period"
|
1428 |
msgid "mo"
|
1429 |
msgstr ""
|
1430 |
|
1431 |
-
#: includes/i18n.php:
|
1432 |
msgctxt "as once a year"
|
1433 |
msgid "Annual"
|
1434 |
msgstr ""
|
1435 |
|
1436 |
-
#: includes/i18n.php:
|
1437 |
msgctxt "as once a year"
|
1438 |
msgid "Annually"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: includes/i18n.php:
|
1442 |
msgctxt "as once a year"
|
1443 |
msgid "Once"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
-
#: includes/i18n.php:
|
1447 |
msgctxt "as annual period"
|
1448 |
msgid "year"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#: includes/i18n.php:
|
1452 |
msgid "Lifetime"
|
1453 |
msgstr ""
|
1454 |
|
1455 |
-
#: includes/i18n.php:
|
1456 |
msgctxt "e.g. the best product"
|
1457 |
msgid "Best"
|
1458 |
msgstr ""
|
1459 |
|
1460 |
-
#: includes/i18n.php:
|
1461 |
msgctxt "e.g. billed monthly"
|
1462 |
msgid "Billed %s"
|
1463 |
msgstr ""
|
1464 |
|
1465 |
-
#: includes/i18n.php:
|
1466 |
msgctxt "as a discount of $5 or 10%"
|
1467 |
msgid "Save %s"
|
1468 |
msgstr ""
|
1469 |
|
1470 |
-
#: includes/i18n.php:
|
1471 |
msgid "View details"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
-
#: includes/i18n.php:
|
1475 |
msgctxt "button label"
|
1476 |
msgid "Approve & Start Trial"
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: includes/i18n.php:
|
1480 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1481 |
msgstr ""
|
1482 |
|
1483 |
-
#: includes/i18n.php:
|
1484 |
msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1485 |
msgstr ""
|
1486 |
|
1487 |
-
#: includes/i18n.php:
|
1488 |
msgid "Business name"
|
1489 |
msgstr ""
|
1490 |
|
1491 |
-
#: includes/i18n.php:
|
1492 |
msgid "Tax / VAT ID"
|
1493 |
msgstr ""
|
1494 |
|
1495 |
-
#: includes/i18n.php:
|
1496 |
msgid "Address Line %d"
|
1497 |
msgstr ""
|
1498 |
|
1499 |
-
#: includes/i18n.php:
|
1500 |
msgid "Country"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
-
#: includes/i18n.php:
|
1504 |
msgid "Select Country"
|
1505 |
msgstr ""
|
1506 |
|
1507 |
-
#: includes/i18n.php:
|
1508 |
msgid "City"
|
1509 |
msgstr ""
|
1510 |
|
1511 |
-
#: includes/i18n.php:
|
1512 |
msgid "Town"
|
1513 |
msgstr ""
|
1514 |
|
1515 |
-
#: includes/i18n.php:
|
1516 |
msgid "State"
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#: includes/i18n.php:
|
1520 |
msgid "Province"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#: includes/i18n.php:
|
1524 |
msgid "ZIP / Postal Code"
|
1525 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2017 freemius
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: freemius\n"
|
|
|
6 |
"MIME-Version: 1.0\n"
|
7 |
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
9 |
"Language-Team: Freemius Team <admin@freemius.com>\n"
|
10 |
+
"Last-Translator: Vova Feldman <vova@freemius.com>\n"
|
11 |
+
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
12 |
"X-Poedit-Basepath: ..\n"
|
13 |
+
"X-Poedit-KeywordsList: _fs_text;_fs_echo;_fs_esc_attr;_fs_esc_attr_echo;_fs_esc_html;_fs_esc_html_echo;_fs_x:1,2c;_fs_ex:1,2c;_fs_esc_attr_x:1,2c;_fs_esc_html_x:1,2c;_fs_n:1,2;_fs_n_noop:1,2;_fs_nx:1,2,4c;_fs_nx_noop:1,2,3c\n"
|
|
|
14 |
"X-Poedit-SearchPath-0: .\n"
|
15 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
16 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
|
|
|
|
|
18 |
|
19 |
+
#: includes/i18n.php:37
|
|
|
|
|
|
|
|
|
20 |
msgid "Account"
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/i18n.php:38
|
24 |
msgid "Add On"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/i18n.php:39
|
28 |
msgid "Contact Us"
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/i18n.php:40
|
32 |
msgid "Contact Support"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/i18n.php:41
|
36 |
msgid "Change Ownership"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/i18n.php:42
|
40 |
msgid "Support"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: includes/i18n.php:43
|
44 |
msgid "Support Forum"
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: includes/i18n.php:44
|
48 |
msgid "Add Ons"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/i18n.php:45
|
52 |
msgctxt "verb"
|
53 |
msgid "Upgrade"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: includes/i18n.php:46
|
57 |
msgid "Awesome"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: includes/i18n.php:47
|
61 |
msgctxt "noun"
|
62 |
msgid "Pricing"
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: includes/i18n.php:48
|
66 |
msgctxt "noun"
|
67 |
msgid "Price"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: includes/i18n.php:49
|
71 |
msgid "Unlimited Updates"
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: includes/i18n.php:50
|
75 |
msgctxt "verb"
|
76 |
msgid "Downgrade"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/i18n.php:51
|
80 |
msgid "Cancel Trial"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/i18n.php:52
|
84 |
msgid "Free Trial"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/i18n.php:53
|
88 |
msgid "Start my free %s"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/i18n.php:54
|
92 |
msgid "No commitment for %s - cancel anytime"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/i18n.php:55
|
96 |
msgid "After your free %s, pay as little as %s"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/i18n.php:56
|
100 |
msgid "Details"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/i18n.php:57
|
104 |
msgid "Account Details"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/i18n.php:58
|
108 |
msgctxt "verb"
|
109 |
msgid "Delete"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: includes/i18n.php:59
|
113 |
msgctxt "verb"
|
114 |
msgid "Show"
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: includes/i18n.php:60
|
118 |
msgctxt "verb"
|
119 |
msgid "Hide"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: includes/i18n.php:61
|
123 |
msgctxt "verb"
|
124 |
msgid "Edit"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/i18n.php:62
|
128 |
msgctxt "verb"
|
129 |
msgid "Update"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: includes/i18n.php:63
|
133 |
msgid "Date"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: includes/i18n.php:64
|
137 |
msgid "Amount"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: includes/i18n.php:65
|
141 |
msgid "Invoice"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: includes/i18n.php:66
|
145 |
msgid "Billing"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: includes/i18n.php:67
|
149 |
msgid "Payments"
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: includes/i18n.php:68
|
153 |
msgid "Delete Account"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: includes/i18n.php:69
|
157 |
msgctxt "as close a window"
|
158 |
msgid "Dismiss"
|
159 |
msgstr ""
|
160 |
|
161 |
+
#: includes/i18n.php:70
|
162 |
msgctxt "as product pricing plan"
|
163 |
msgid "Plan"
|
164 |
msgstr ""
|
165 |
|
166 |
+
#: includes/i18n.php:71
|
167 |
msgid "Change Plan"
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/i18n.php:72
|
171 |
msgctxt "as download professional version"
|
172 |
msgid "Download %s Version"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: includes/i18n.php:73
|
176 |
msgctxt "as download professional version now"
|
177 |
msgid "Download %s version now"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: includes/i18n.php:74
|
181 |
msgctxt "as download latest version"
|
182 |
msgid "Download Latest"
|
183 |
msgstr ""
|
184 |
|
185 |
+
#: includes/i18n.php:75
|
186 |
msgctxt "E.g. you have a professional license."
|
187 |
msgid "You have a %s license."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: includes/i18n.php:76
|
191 |
msgid "New"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: includes/i18n.php:77
|
195 |
msgid "Free"
|
196 |
msgstr ""
|
197 |
|
198 |
+
#: includes/i18n.php:78
|
199 |
msgctxt "as trial plan"
|
200 |
msgid "Trial"
|
201 |
msgstr ""
|
202 |
|
203 |
+
#: includes/i18n.php:79
|
204 |
msgctxt "as starting a trial plan"
|
205 |
msgid "Start Trial"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/i18n.php:80
|
209 |
msgctxt "verb"
|
210 |
msgid "Purchase"
|
211 |
msgstr ""
|
212 |
|
213 |
+
#: includes/i18n.php:81
|
214 |
msgid "Purchase License"
|
215 |
msgstr ""
|
216 |
|
217 |
+
#: includes/i18n.php:82
|
218 |
msgctxt "verb"
|
219 |
msgid "Buy"
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: includes/i18n.php:83
|
223 |
msgid "Buy License"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: includes/i18n.php:84
|
227 |
msgid "Single Site License"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: includes/i18n.php:85
|
231 |
msgid "Unlimited Licenses"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: includes/i18n.php:86
|
235 |
msgid "Up to %s Sites"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: includes/i18n.php:87
|
239 |
msgid "%sRenew your license now%s to access version %s features and support."
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: includes/i18n.php:88
|
243 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
244 |
msgstr ""
|
245 |
|
246 |
+
#: includes/i18n.php:89
|
247 |
msgctxt "e.g. Professional Plan"
|
248 |
msgid "%s Plan"
|
249 |
msgstr ""
|
250 |
|
251 |
+
#: includes/i18n.php:90
|
252 |
msgid "You are just one step away - %s"
|
253 |
msgstr ""
|
254 |
|
255 |
+
#: includes/i18n.php:91
|
256 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
257 |
msgid "Complete \"%s\" Activation Now"
|
258 |
msgstr ""
|
259 |
|
260 |
+
#: includes/i18n.php:93
|
261 |
msgid "We made a few tweaks to the plugin, %s"
|
262 |
msgstr ""
|
263 |
|
264 |
+
#: includes/i18n.php:94
|
265 |
msgid "Opt-in to make \"%s\" Better!"
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: includes/i18n.php:95
|
269 |
msgid "Error"
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: includes/i18n.php:96
|
273 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: includes/i18n.php:99
|
277 |
msgctxt "as expiration date"
|
278 |
msgid "Expiration"
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/i18n.php:100
|
282 |
msgctxt "as software license"
|
283 |
msgid "License"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: includes/i18n.php:101
|
287 |
msgid "not verified"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: includes/i18n.php:102
|
291 |
msgid "Verify Email"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: includes/i18n.php:103
|
295 |
msgctxt "e.g. expires in 2 months"
|
296 |
msgid "Expires in %s"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: includes/i18n.php:104
|
300 |
msgctxt "e.g. auto renews in 2 months"
|
301 |
msgid "Auto renews in %s"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: includes/i18n.php:105
|
305 |
msgid "No expiration"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: includes/i18n.php:106
|
309 |
msgid "Expired"
|
310 |
msgstr ""
|
311 |
|
312 |
+
#: includes/i18n.php:107
|
313 |
msgid "Cancelled"
|
314 |
msgstr ""
|
315 |
|
316 |
+
#: includes/i18n.php:108
|
317 |
msgctxt "e.g. In 2 hours"
|
318 |
msgid "In %s"
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/i18n.php:109
|
322 |
msgctxt "e.g. 2 min ago"
|
323 |
msgid "%s ago"
|
324 |
msgstr ""
|
325 |
|
326 |
+
#: includes/i18n.php:111
|
327 |
+
msgid "%s or higher"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: includes/i18n.php:112
|
331 |
msgctxt "as plugin version"
|
332 |
msgid "Version"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: includes/i18n.php:113
|
336 |
msgid "Name"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: includes/i18n.php:114
|
340 |
msgid "Email"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: includes/i18n.php:115
|
344 |
msgid "Email address"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: includes/i18n.php:116
|
348 |
msgid "Verified"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: includes/i18n.php:117
|
352 |
+
msgid "Module"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: includes/i18n.php:118
|
356 |
+
msgid "Module Type"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: includes/i18n.php:119
|
360 |
msgid "Plugin"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: includes/i18n.php:120
|
364 |
msgid "Plugins"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: includes/i18n.php:121
|
368 |
+
msgid "Theme"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: includes/i18n.php:122
|
372 |
msgid "Themes"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: includes/i18n.php:123
|
376 |
msgctxt "as file/folder path"
|
377 |
msgid "Path"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: includes/i18n.php:124
|
381 |
msgid "Title"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/i18n.php:125
|
385 |
msgid "Free version"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/i18n.php:126
|
389 |
msgid "Premium version"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: includes/i18n.php:127
|
393 |
msgctxt "as WP plugin slug"
|
394 |
msgid "Slug"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/i18n.php:128
|
398 |
msgid "ID"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/i18n.php:129
|
402 |
msgid "Users"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/i18n.php:130
|
406 |
msgid "Plugin Installs"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/i18n.php:131
|
410 |
+
msgid "%s Installs"
|
411 |
+
msgstr ""
|
412 |
+
|
413 |
+
#: includes/i18n.php:132
|
414 |
msgctxt "like websites"
|
415 |
msgid "Sites"
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: includes/i18n.php:133
|
419 |
msgid "User ID"
|
420 |
msgstr ""
|
421 |
|
422 |
+
#: includes/i18n.php:134
|
423 |
msgid "Site ID"
|
424 |
msgstr ""
|
425 |
|
426 |
+
#: includes/i18n.php:135
|
427 |
msgid "Public Key"
|
428 |
msgstr ""
|
429 |
|
430 |
+
#: includes/i18n.php:136
|
431 |
msgid "Secret Key"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/i18n.php:137
|
435 |
msgctxt "as secret encryption key missing"
|
436 |
msgid "No Secret"
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: includes/i18n.php:138
|
440 |
msgid "No ID"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/i18n.php:139
|
444 |
msgctxt "as synchronize license"
|
445 |
msgid "Sync License"
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: includes/i18n.php:140
|
449 |
msgctxt "as synchronize"
|
450 |
msgid "Sync"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: includes/i18n.php:141
|
454 |
msgid "Activate License"
|
455 |
msgstr ""
|
456 |
|
457 |
+
#: includes/i18n.php:142
|
458 |
msgid "Activate Free Version"
|
459 |
msgstr ""
|
460 |
|
461 |
+
#: includes/i18n.php:143
|
462 |
msgid "Please enter the license key that you received in the email right after the purchase:"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: includes/i18n.php:144
|
466 |
msgid "Activating license..."
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: includes/i18n.php:145
|
470 |
msgid "Change License"
|
471 |
msgstr ""
|
472 |
|
473 |
+
#: includes/i18n.php:146
|
474 |
msgid "Update License"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: includes/i18n.php:147
|
478 |
msgid "Deactivate License"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: includes/i18n.php:148
|
482 |
msgid "Activate"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: includes/i18n.php:149
|
486 |
msgid "Deactivate"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: includes/i18n.php:150
|
490 |
msgid "Skip & Deactivate"
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: includes/i18n.php:151
|
494 |
+
msgid "Skip & %s"
|
495 |
+
msgstr ""
|
496 |
+
|
497 |
+
#: includes/i18n.php:152
|
498 |
msgid "No - just deactivate"
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: includes/i18n.php:153
|
502 |
msgid "Yes - do your thing"
|
503 |
msgstr ""
|
504 |
|
505 |
+
#: includes/i18n.php:154
|
506 |
msgctxt "active mode"
|
507 |
msgid "Active"
|
508 |
msgstr ""
|
509 |
|
510 |
+
#: includes/i18n.php:155
|
511 |
msgctxt "is active mode?"
|
512 |
msgid "Is Active"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/i18n.php:156
|
516 |
msgid "Install Now"
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: includes/i18n.php:157
|
520 |
msgid "Install Update Now"
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: includes/i18n.php:158
|
524 |
msgid "More information about %s"
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: includes/i18n.php:159
|
528 |
msgid "Localhost"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: includes/i18n.php:160
|
532 |
msgctxt "as activate Professional plan"
|
533 |
msgid "Activate %s Plan"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: includes/i18n.php:161
|
537 |
msgctxt "as 5 licenses left"
|
538 |
msgid "%s left"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: includes/i18n.php:162
|
542 |
msgid "Last license"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: includes/i18n.php:163
|
546 |
msgid "What is your %s?"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: includes/i18n.php:164
|
550 |
msgid "Activate this add-on"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: includes/i18n.php:165
|
554 |
msgid "Deactivating your license will block all premium features, but will enable you to activate the license on another site. Are you sure you want to proceed?"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: includes/i18n.php:166
|
558 |
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?"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: includes/i18n.php:167
|
562 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this plugin anymore. Are you sure you would like to continue with the deletion?"
|
563 |
msgstr ""
|
564 |
|
565 |
+
#: includes/i18n.php:168
|
566 |
msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
567 |
msgstr ""
|
568 |
|
569 |
+
#: includes/i18n.php:169
|
570 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: includes/i18n.php:170
|
574 |
msgid "You can still enjoy all %s features but you will not have access to plugin updates and support."
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: includes/i18n.php:171
|
578 |
+
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
579 |
msgstr ""
|
580 |
|
581 |
+
#: includes/i18n.php:172
|
582 |
msgid "Are you sure you want to proceed?"
|
583 |
msgstr ""
|
584 |
|
585 |
+
#: includes/i18n.php:175
|
586 |
msgid "Add Ons for %s"
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: includes/i18n.php:176
|
590 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: includes/i18n.php:178
|
594 |
msgid "Anonymous feedback"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: includes/i18n.php:179
|
598 |
msgid "Quick feedback"
|
599 |
msgstr ""
|
600 |
|
601 |
+
#: includes/i18n.php:180
|
602 |
msgid "If you have a moment, please let us know why you are deactivating"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: includes/i18n.php:181
|
606 |
msgid "Yes - Deactivate"
|
607 |
msgstr ""
|
608 |
|
609 |
+
#: includes/i18n.php:182
|
610 |
msgid "Submit & Deactivate"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: includes/i18n.php:183
|
614 |
msgid "Cancel"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: includes/i18n.php:184
|
618 |
msgid "I no longer need the plugin"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: includes/i18n.php:185
|
622 |
msgid "I found a better plugin"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: includes/i18n.php:186
|
626 |
msgid "I only needed the plugin for a short period"
|
627 |
msgstr ""
|
628 |
|
629 |
+
#: includes/i18n.php:187
|
630 |
msgid "The plugin broke my site"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: includes/i18n.php:188
|
634 |
msgid "The plugin suddenly stopped working"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: includes/i18n.php:189
|
638 |
msgid "I can't pay for it anymore"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: includes/i18n.php:190
|
642 |
msgid "It's a temporary deactivation. I'm just debugging an issue."
|
643 |
msgstr ""
|
644 |
|
645 |
+
#: includes/i18n.php:191
|
646 |
msgctxt "the text of the \"other\" reason for deactivating the plugin that is shown in the modal box."
|
647 |
msgid "Other"
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: includes/i18n.php:193
|
651 |
msgid "Kindly tell us the reason so we can improve."
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: includes/i18n.php:194
|
655 |
msgid "What's the plugin's name?"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: includes/i18n.php:195
|
659 |
msgid "What price would you feel comfortable paying?"
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: includes/i18n.php:196
|
663 |
msgid "I couldn't understand how to make it work"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: includes/i18n.php:197
|
667 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: includes/i18n.php:198
|
671 |
msgid "The plugin is not working"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: includes/i18n.php:199
|
675 |
msgid "It's not what I was looking for"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: includes/i18n.php:200
|
679 |
msgid "The plugin didn't work as expected"
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: includes/i18n.php:201
|
683 |
msgid "What feature?"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: includes/i18n.php:202
|
687 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: includes/i18n.php:203
|
691 |
msgid "What you've been looking for?"
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: includes/i18n.php:204
|
695 |
msgid "What did you expect?"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: includes/i18n.php:205
|
699 |
msgid "The plugin didn't work"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: includes/i18n.php:206
|
703 |
msgid "I don't like to share my information with you"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: includes/i18n.php:207
|
707 |
msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: includes/i18n.php:211
|
711 |
msgctxt "greeting"
|
712 |
msgid "Hey %s,"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/i18n.php:212
|
716 |
msgctxt "a greeting. E.g. Thanks John!"
|
717 |
msgid "Thanks %s!"
|
718 |
msgstr ""
|
719 |
|
720 |
+
#: includes/i18n.php:213
|
721 |
msgid "Never miss an important update - opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: includes/i18n.php:214
|
725 |
msgid "Please help us improve %1$s! If you opt-in, some data about your usage of %1$s will be sent to %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: includes/i18n.php:215
|
729 |
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."
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: includes/i18n.php:216
|
733 |
msgid "complete the install"
|
734 |
msgstr ""
|
735 |
|
736 |
+
#: includes/i18n.php:217
|
737 |
msgid "start the trial"
|
738 |
msgstr ""
|
739 |
|
740 |
+
#: includes/i18n.php:218
|
741 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: includes/i18n.php:219
|
745 |
msgid "The plugin will be periodically sending data to %s to check for plugin updates and verify the validity of your license."
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: includes/i18n.php:220
|
749 |
msgid "What permissions are being granted?"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: includes/i18n.php:221
|
753 |
msgid "Your Profile Overview"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: includes/i18n.php:222
|
757 |
msgid "Name and email address"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: includes/i18n.php:223
|
761 |
msgid "Your Site Overview"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: includes/i18n.php:224
|
765 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: includes/i18n.php:225
|
769 |
msgid "Current Plugin Events"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: includes/i18n.php:226
|
773 |
msgid "Activation, deactivation and uninstall"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: includes/i18n.php:227
|
777 |
msgid "Plugins & Themes"
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: includes/i18n.php:228
|
781 |
msgid "Titles, versions and state."
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: includes/i18n.php:229
|
785 |
msgid "Admin Notices"
|
786 |
msgstr ""
|
787 |
|
788 |
+
#: includes/i18n.php:230
|
789 |
msgid "Newsletter"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: includes/i18n.php:231
|
793 |
msgid "Updates, announcements, marketing, no spam"
|
794 |
msgstr ""
|
795 |
|
796 |
+
#: includes/i18n.php:232
|
797 |
msgid "Privacy Policy"
|
798 |
msgstr ""
|
799 |
|
800 |
+
#: includes/i18n.php:233
|
801 |
msgid "Terms of Service"
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: includes/i18n.php:234
|
805 |
msgctxt "as activating plugin"
|
806 |
msgid "Activating"
|
807 |
msgstr ""
|
808 |
|
809 |
+
#: includes/i18n.php:235
|
810 |
msgctxt "as in the process of sending an email"
|
811 |
msgid "Sending email"
|
812 |
msgstr ""
|
813 |
|
814 |
+
#: includes/i18n.php:236
|
815 |
msgctxt "button label"
|
816 |
msgid "Allow & Continue"
|
817 |
msgstr ""
|
818 |
|
819 |
+
#: includes/i18n.php:237
|
820 |
msgctxt "button label"
|
821 |
msgid "Agree & Activate License"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: includes/i18n.php:238
|
825 |
msgctxt "verb"
|
826 |
msgid "Skip"
|
827 |
msgstr ""
|
828 |
|
829 |
+
#: includes/i18n.php:239
|
830 |
msgid "Click here to use the plugin anonymously"
|
831 |
msgstr ""
|
832 |
|
833 |
+
#: includes/i18n.php:240
|
834 |
msgid "Re-send activation email"
|
835 |
msgstr ""
|
836 |
|
837 |
+
#: includes/i18n.php:241
|
838 |
msgid "License key"
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: includes/i18n.php:242
|
842 |
msgid "Send License Key"
|
843 |
msgstr ""
|
844 |
|
845 |
+
#: includes/i18n.php:243
|
846 |
msgid "Sending license key"
|
847 |
msgstr ""
|
848 |
|
849 |
+
#: includes/i18n.php:244
|
850 |
msgid "Have a license key?"
|
851 |
msgstr ""
|
852 |
|
853 |
+
#: includes/i18n.php:245
|
854 |
msgid "Don't have a license key?"
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: includes/i18n.php:246
|
858 |
msgid "Can't find your license key?"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: includes/i18n.php:247
|
862 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
863 |
msgstr ""
|
864 |
|
865 |
+
#: includes/i18n.php:248
|
866 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: includes/i18n.php:249
|
870 |
msgid "Opt In"
|
871 |
msgstr ""
|
872 |
|
873 |
+
#: includes/i18n.php:250
|
874 |
msgid "Opt Out"
|
875 |
msgstr ""
|
876 |
|
877 |
+
#: includes/i18n.php:251
|
878 |
msgid "On second thought - I want to continue helping"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: includes/i18n.php:252
|
882 |
msgid "Opting out..."
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: includes/i18n.php:253
|
886 |
msgid "Opting in..."
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: includes/i18n.php:254
|
890 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: includes/i18n.php:255
|
894 |
msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: includes/i18n.php:256
|
898 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: includes/i18n.php:260
|
902 |
msgid "Screenshots"
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: includes/i18n.php:261
|
906 |
msgid "Click to view full-size screenshot %d"
|
907 |
msgstr ""
|
908 |
|
909 |
+
#: includes/i18n.php:265
|
910 |
msgid "Freemius Debug"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: includes/i18n.php:266
|
914 |
msgctxt "as turned on"
|
915 |
msgid "On"
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: includes/i18n.php:267
|
919 |
msgctxt "as turned off"
|
920 |
msgid "Off"
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: includes/i18n.php:268
|
924 |
msgctxt "as code debugging"
|
925 |
msgid "Debugging"
|
926 |
msgstr ""
|
927 |
|
928 |
+
#: includes/i18n.php:269
|
929 |
msgid "Freemius State"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/i18n.php:270
|
933 |
msgctxt "as connection was successful"
|
934 |
msgid "Connected"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: includes/i18n.php:271
|
938 |
msgctxt "as connection blocked"
|
939 |
msgid "Blocked"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: includes/i18n.php:272
|
943 |
msgctxt "as application program interface"
|
944 |
msgid "API"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: includes/i18n.php:273
|
948 |
msgctxt "as software development kit versions"
|
949 |
msgid "SDK"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: includes/i18n.php:274
|
953 |
msgctxt "as software development kit versions"
|
954 |
msgid "SDK Versions"
|
955 |
msgstr ""
|
956 |
|
957 |
+
#: includes/i18n.php:275
|
958 |
msgctxt "as plugin folder path"
|
959 |
msgid "Plugin Path"
|
960 |
msgstr ""
|
961 |
|
962 |
+
#: includes/i18n.php:276
|
963 |
msgctxt "as sdk path"
|
964 |
msgid "SDK Path"
|
965 |
msgstr ""
|
966 |
|
967 |
+
#: includes/i18n.php:277
|
968 |
msgid "Add Ons of Plugin %s"
|
969 |
msgstr ""
|
970 |
|
971 |
+
#: includes/i18n.php:278
|
972 |
msgid "Are you sure you want to delete all Freemius data?"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: includes/i18n.php:279
|
976 |
msgid "Actions"
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: includes/i18n.php:280
|
980 |
msgid "Delete All Accounts"
|
981 |
msgstr ""
|
982 |
|
983 |
+
#: includes/i18n.php:281
|
984 |
msgid "Start Fresh"
|
985 |
msgstr ""
|
986 |
|
987 |
+
#: includes/i18n.php:282
|
988 |
msgid "Clear API Cache"
|
989 |
msgstr ""
|
990 |
|
991 |
+
#: includes/i18n.php:283
|
992 |
msgid "Sync Data From Server"
|
993 |
msgstr ""
|
994 |
|
995 |
+
#: includes/i18n.php:284
|
996 |
msgid "Scheduled Crons"
|
997 |
msgstr ""
|
998 |
|
999 |
+
#: includes/i18n.php:285
|
1000 |
+
msgid "Cron Type"
|
1001 |
+
msgstr ""
|
1002 |
+
|
1003 |
+
#: includes/i18n.php:286
|
1004 |
msgid "Plugins & Themes Sync"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: includes/i18n.php:287
|
1008 |
+
msgid "Licenses"
|
1009 |
+
msgstr ""
|
1010 |
+
|
1011 |
+
#: includes/i18n.php:288
|
1012 |
+
msgid "Debug Log"
|
1013 |
+
msgstr ""
|
1014 |
+
|
1015 |
+
#: includes/i18n.php:289
|
1016 |
+
msgid "All"
|
1017 |
+
msgstr ""
|
1018 |
+
|
1019 |
+
#: includes/i18n.php:290
|
1020 |
+
msgid "File"
|
1021 |
+
msgstr ""
|
1022 |
+
|
1023 |
+
#: includes/i18n.php:291
|
1024 |
+
msgid "Function"
|
1025 |
+
msgstr ""
|
1026 |
+
|
1027 |
+
#: includes/i18n.php:292
|
1028 |
+
msgid "Process ID"
|
1029 |
+
msgstr ""
|
1030 |
+
|
1031 |
+
#: includes/i18n.php:293
|
1032 |
+
msgid "Logger"
|
1033 |
+
msgstr ""
|
1034 |
+
|
1035 |
+
#: includes/i18n.php:294
|
1036 |
+
msgid "Message"
|
1037 |
+
msgstr ""
|
1038 |
+
|
1039 |
+
#: includes/i18n.php:295
|
1040 |
+
msgid "Download"
|
1041 |
+
msgstr ""
|
1042 |
+
|
1043 |
+
#: includes/i18n.php:296
|
1044 |
+
msgid "Filter"
|
1045 |
+
msgstr ""
|
1046 |
+
|
1047 |
+
#: includes/i18n.php:297
|
1048 |
+
msgid "Type"
|
1049 |
+
msgstr ""
|
1050 |
+
|
1051 |
+
#: includes/i18n.php:298
|
1052 |
+
msgid "All Types"
|
1053 |
+
msgstr ""
|
1054 |
+
|
1055 |
+
#: includes/i18n.php:299
|
1056 |
+
msgid "All Requests"
|
1057 |
+
msgstr ""
|
1058 |
+
|
1059 |
+
#: includes/i18n.php:303
|
1060 |
msgctxt "as congratulations"
|
1061 |
msgid "Congrats"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: includes/i18n.php:304
|
1065 |
msgctxt "exclamation"
|
1066 |
msgid "Oops"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
+
#: includes/i18n.php:305
|
1070 |
msgctxt "interjection expressing joy or exuberance"
|
1071 |
msgid "Yee-haw"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/i18n.php:306
|
1075 |
msgctxt "(especially in electronic communication) used to express elation, enthusiasm, or triumph."
|
1076 |
msgid "W00t"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: includes/i18n.php:308
|
1080 |
msgctxt "a positive response"
|
1081 |
msgid "Right on"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: includes/i18n.php:309
|
1085 |
msgctxt "something somebody says when they are thinking about what you have just said. "
|
1086 |
msgid "Hmm"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: includes/i18n.php:311
|
1090 |
msgid "O.K"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: includes/i18n.php:312
|
1094 |
msgctxt "exclamation"
|
1095 |
msgid "Hey"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: includes/i18n.php:313
|
1099 |
msgctxt "advance notice of something that will need attention."
|
1100 |
msgid "Heads up"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: includes/i18n.php:318
|
1104 |
msgid "Seems like you got the latest release."
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: includes/i18n.php:319
|
1108 |
msgid "You are all good!"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: includes/i18n.php:320
|
1112 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: includes/i18n.php:321
|
1116 |
msgid "If you would like to give up the ownership of the plugin's account to %s click the Change Ownership button."
|
1117 |
msgstr ""
|
1118 |
|
1119 |
+
#: includes/i18n.php:322
|
1120 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: includes/i18n.php:323
|
1124 |
msgid "Your name was successfully updated."
|
1125 |
msgstr ""
|
1126 |
|
1127 |
+
#: includes/i18n.php:324
|
1128 |
msgid "You have successfully updated your %s."
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: includes/i18n.php:325
|
1132 |
msgid "Please provide your full name."
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: includes/i18n.php:326
|
1136 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
1137 |
msgstr ""
|
1138 |
|
1139 |
+
#: includes/i18n.php:327
|
1140 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: includes/i18n.php:328
|
1144 |
msgid "No credit card required"
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: includes/i18n.php:329
|
1148 |
msgid "Premium plugin version was successfully activated."
|
1149 |
msgstr ""
|
1150 |
|
1151 |
+
#: includes/i18n.php:330
|
1152 |
msgid "The upgrade of %s was successfully completed."
|
1153 |
msgstr ""
|
1154 |
|
1155 |
+
#: includes/i18n.php:331
|
1156 |
msgid "Your account was successfully activated with the %s plan."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: includes/i18n.php:332
|
1160 |
msgid "Download the latest %s version now"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
+
#: includes/i18n.php:333
|
1164 |
msgid "Please follow these steps to complete the upgrade"
|
1165 |
msgstr ""
|
1166 |
|
1167 |
+
#: includes/i18n.php:334
|
1168 |
msgid "Download the latest %s version"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: includes/i18n.php:335
|
1172 |
msgid "Download the latest version"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: includes/i18n.php:336
|
1176 |
msgid "Deactivate the free version"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
+
#: includes/i18n.php:337
|
1180 |
msgid "Upload and activate the downloaded version"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: includes/i18n.php:338
|
1184 |
msgid "How to upload and activate?"
|
1185 |
msgstr ""
|
1186 |
|
1187 |
+
#: includes/i18n.php:339
|
1188 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1189 |
msgid "%s Add-on was successfully purchased."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: includes/i18n.php:341
|
1193 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: includes/i18n.php:342
|
1197 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: includes/i18n.php:343
|
1201 |
msgid "Your plan was successfully upgraded."
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: includes/i18n.php:344
|
1205 |
msgid "Your plan was successfully changed to %s."
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: includes/i18n.php:345
|
1209 |
msgid "Your license has expired. You can still continue using the free plugin forever."
|
1210 |
msgstr ""
|
1211 |
|
1212 |
+
#: includes/i18n.php:346
|
1213 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: includes/i18n.php:347
|
1217 |
msgid "Your trial has been successfully started."
|
1218 |
msgstr ""
|
1219 |
|
1220 |
+
#: includes/i18n.php:348
|
1221 |
msgid "Your license was successfully activated."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: includes/i18n.php:349
|
1225 |
msgid "It looks like your site currently doesn't have an active license."
|
1226 |
msgstr ""
|
1227 |
|
1228 |
+
#: includes/i18n.php:350
|
1229 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1230 |
msgstr ""
|
1231 |
|
1232 |
+
#: includes/i18n.php:351
|
1233 |
msgid "It looks like the license deactivation failed."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: includes/i18n.php:352
|
1237 |
msgid "It looks like the license could not be activated."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: includes/i18n.php:353
|
1241 |
msgid "Error received from the server:"
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: includes/i18n.php:354
|
1245 |
msgid "Your trial has expired. You can still continue using all our free features."
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: includes/i18n.php:355
|
1249 |
msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s."
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: includes/i18n.php:356
|
1253 |
msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes."
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: includes/i18n.php:357
|
1257 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: includes/i18n.php:358
|
1261 |
msgid "Your %s free trial was successfully cancelled."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: includes/i18n.php:359
|
1265 |
msgctxt "%s - numeric version number"
|
1266 |
msgid "Version %s was released."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: includes/i18n.php:360
|
1270 |
msgid "Please download %s."
|
1271 |
msgstr ""
|
1272 |
|
1273 |
+
#: includes/i18n.php:361
|
1274 |
msgctxt "%s - plan name, as the latest professional version here"
|
1275 |
msgid "the latest %s version here"
|
1276 |
msgstr ""
|
1277 |
|
1278 |
+
#: includes/i18n.php:363
|
1279 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
+
#: includes/i18n.php:364
|
1283 |
msgctxt "call to action"
|
1284 |
msgid "Start free trial"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: includes/i18n.php:365
|
1288 |
msgid "Starting trial"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: includes/i18n.php:366
|
1292 |
msgid "Please wait"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: includes/i18n.php:367
|
1296 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: includes/i18n.php:368
|
1300 |
msgid "You already utilized a trial before."
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: includes/i18n.php:369
|
1304 |
msgid "You are already running the plugin in a trial mode."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: includes/i18n.php:370
|
1308 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: includes/i18n.php:371
|
1312 |
msgid "Plan %s does not support a trial period."
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: includes/i18n.php:372
|
1316 |
msgid "None of the plugin's plans supports a trial period."
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: includes/i18n.php:373
|
1320 |
msgid "Unexpected API error. Please contact the plugin's author with the following error."
|
1321 |
msgstr ""
|
1322 |
|
1323 |
+
#: includes/i18n.php:374
|
1324 |
msgid "No commitment for %s days - cancel anytime!"
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: includes/i18n.php:375
|
1328 |
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."
|
1329 |
msgstr ""
|
1330 |
|
1331 |
+
#: includes/i18n.php:376
|
1332 |
msgid "Couldn't activate %s."
|
1333 |
msgstr ""
|
1334 |
|
1335 |
+
#: includes/i18n.php:377
|
1336 |
msgid "Please contact us with the following message:"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
+
#: includes/i18n.php:378
|
1340 |
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."
|
1341 |
msgstr ""
|
1342 |
|
1343 |
+
#: includes/i18n.php:379
|
1344 |
msgid "Please contact us here"
|
1345 |
msgstr ""
|
1346 |
|
1347 |
+
#: includes/i18n.php:380
|
1348 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
1349 |
msgstr ""
|
1350 |
|
1351 |
+
#: includes/i18n.php:383
|
1352 |
msgid "From unknown reason, the API connectivity test failed."
|
1353 |
msgstr ""
|
1354 |
|
1355 |
+
#: includes/i18n.php:384
|
1356 |
msgid "It's probably a temporary issue on our end. Just to be sure, with your permission, would it be o.k to run another connectivity test?"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
+
#: includes/i18n.php:385
|
1360 |
msgid "We use PHP cURL library for the API calls, which is a very common library and usually installed out of the box. Unfortunately, cURL is not installed on your server."
|
1361 |
msgstr ""
|
1362 |
|
1363 |
+
#: includes/i18n.php:386
|
1364 |
msgid "From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1365 |
msgstr ""
|
1366 |
|
1367 |
+
#: includes/i18n.php:387
|
1368 |
msgctxt "as pluginX requires an access to our API"
|
1369 |
msgid "%s requires an access to our API."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: includes/i18n.php:389
|
1373 |
msgid "It looks like your server is using Squid ACL (access control lists), which blocks the connection."
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: includes/i18n.php:390
|
1377 |
msgid "I don't know what is Squid or ACL, help me!"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
+
#: includes/i18n.php:391, includes/i18n.php:395
|
1381 |
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."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: includes/i18n.php:392
|
1385 |
msgid "I'm a system administrator"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
+
#: includes/i18n.php:393
|
1389 |
+
msgid "Great, please whitelist the following domains: %s. Once you are done, deactivate the plugin and activate it again."
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: includes/i18n.php:394
|
1393 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: includes/i18n.php:396
|
1397 |
msgid "Great, please install cURL and enable it in your php.ini file. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the plugin and reactivate it back again."
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: includes/i18n.php:397
|
1401 |
msgid "We are sure it's an issue on our side and more than happy to resolve it for you ASAP if you give us a chance."
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: includes/i18n.php:398
|
1405 |
msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
#: includes/i18n.php:399
|
1409 |
msgid "Yes - I'm giving you a chance to fix it"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: includes/i18n.php:400
|
1413 |
msgid "We will do our best to whitelist your server and resolve this issue ASAP. You will get a follow-up email to %s once we have an update."
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: includes/i18n.php:401
|
1417 |
msgid "Let's try your previous version"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: includes/i18n.php:402
|
1421 |
msgid "Uninstall this version and install the previous one."
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: includes/i18n.php:403
|
1425 |
msgid "That's exhausting, please deactivate"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: includes/i18n.php:404
|
1429 |
msgid "We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future."
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: includes/i18n.php:405
|
1433 |
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."
|
1434 |
msgstr ""
|
1435 |
|
1436 |
+
#: includes/i18n.php:406
|
1437 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1438 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
1439 |
msgstr ""
|
1440 |
|
1441 |
+
#: includes/i18n.php:408
|
1442 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
1443 |
msgstr ""
|
1444 |
|
1445 |
+
#: includes/i18n.php:411
|
1446 |
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."
|
1447 |
msgstr ""
|
1448 |
|
1449 |
+
#: includes/i18n.php:412
|
1450 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
1451 |
msgstr ""
|
1452 |
|
1453 |
+
#: includes/i18n.php:413
|
1454 |
msgid "%s is the new owner of the account."
|
1455 |
msgstr ""
|
1456 |
|
1457 |
+
#: includes/i18n.php:415
|
1458 |
msgctxt "addonX cannot run without pluginY"
|
1459 |
msgid "%s cannot run without %s."
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: includes/i18n.php:417
|
1463 |
msgctxt "addonX cannot run..."
|
1464 |
msgid "%s cannot run without the plugin."
|
1465 |
msgstr ""
|
1466 |
|
1467 |
+
#: includes/i18n.php:418
|
1468 |
msgctxt "pluginX activation was successfully..."
|
1469 |
msgid "%s activation was successfully completed."
|
1470 |
msgstr ""
|
1471 |
|
1472 |
+
#: includes/i18n.php:420
|
1473 |
msgctxt "Plugin installer section title"
|
1474 |
msgid "Features & Pricing"
|
1475 |
msgstr ""
|
1476 |
|
1477 |
+
#: includes/i18n.php:421
|
1478 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
#: includes/i18n.php:422
|
1482 |
msgid "Paid add-on must be deployed to Freemius."
|
1483 |
msgstr ""
|
1484 |
|
1485 |
+
#: includes/i18n.php:426
|
1486 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: includes/i18n.php:427
|
1490 |
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."
|
1491 |
msgstr ""
|
1492 |
|
1493 |
+
#: includes/i18n.php:432
|
1494 |
msgctxt "as every month"
|
1495 |
msgid "Monthly"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: includes/i18n.php:433
|
1499 |
msgctxt "as monthly period"
|
1500 |
msgid "mo"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: includes/i18n.php:434
|
1504 |
msgctxt "as once a year"
|
1505 |
msgid "Annual"
|
1506 |
msgstr ""
|
1507 |
|
1508 |
+
#: includes/i18n.php:435
|
1509 |
msgctxt "as once a year"
|
1510 |
msgid "Annually"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: includes/i18n.php:436
|
1514 |
msgctxt "as once a year"
|
1515 |
msgid "Once"
|
1516 |
msgstr ""
|
1517 |
|
1518 |
+
#: includes/i18n.php:437
|
1519 |
msgctxt "as annual period"
|
1520 |
msgid "year"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: includes/i18n.php:438
|
1524 |
msgid "Lifetime"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
+
#: includes/i18n.php:439
|
1528 |
msgctxt "e.g. the best product"
|
1529 |
msgid "Best"
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: includes/i18n.php:440
|
1533 |
msgctxt "e.g. billed monthly"
|
1534 |
msgid "Billed %s"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: includes/i18n.php:441
|
1538 |
msgctxt "as a discount of $5 or 10%"
|
1539 |
msgid "Save %s"
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: includes/i18n.php:443
|
1543 |
msgid "View details"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: includes/i18n.php:447
|
1547 |
msgctxt "button label"
|
1548 |
msgid "Approve & Start Trial"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
+
#: includes/i18n.php:449
|
1552 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
1553 |
msgstr ""
|
1554 |
|
1555 |
+
#: includes/i18n.php:451
|
1556 |
msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt-in with your user and non-sensitive site information, allowing the plugin to periodically send data to %s to check for version updates and to validate your trial."
|
1557 |
msgstr ""
|
1558 |
|
1559 |
+
#: includes/i18n.php:457
|
1560 |
msgid "Business name"
|
1561 |
msgstr ""
|
1562 |
|
1563 |
+
#: includes/i18n.php:458
|
1564 |
msgid "Tax / VAT ID"
|
1565 |
msgstr ""
|
1566 |
|
1567 |
+
#: includes/i18n.php:459
|
1568 |
msgid "Address Line %d"
|
1569 |
msgstr ""
|
1570 |
|
1571 |
+
#: includes/i18n.php:460
|
1572 |
msgid "Country"
|
1573 |
msgstr ""
|
1574 |
|
1575 |
+
#: includes/i18n.php:461
|
1576 |
msgid "Select Country"
|
1577 |
msgstr ""
|
1578 |
|
1579 |
+
#: includes/i18n.php:462
|
1580 |
msgid "City"
|
1581 |
msgstr ""
|
1582 |
|
1583 |
+
#: includes/i18n.php:463
|
1584 |
msgid "Town"
|
1585 |
msgstr ""
|
1586 |
|
1587 |
+
#: includes/i18n.php:464
|
1588 |
msgid "State"
|
1589 |
msgstr ""
|
1590 |
|
1591 |
+
#: includes/i18n.php:465
|
1592 |
msgid "Province"
|
1593 |
msgstr ""
|
1594 |
|
1595 |
+
#: includes/i18n.php:466
|
1596 |
msgid "ZIP / Postal Code"
|
1597 |
msgstr ""
|
1598 |
+
|
1599 |
+
#: includes/i18n.php:481
|
1600 |
+
msgctxt "Plugin installer section title"
|
1601 |
+
msgid "Description"
|
1602 |
+
msgstr ""
|
1603 |
+
|
1604 |
+
#: includes/i18n.php:482
|
1605 |
+
msgctxt "Plugin installer section title"
|
1606 |
+
msgid "Installation"
|
1607 |
+
msgstr ""
|
1608 |
+
|
1609 |
+
#: includes/i18n.php:483
|
1610 |
+
msgctxt "Plugin installer section title"
|
1611 |
+
msgid "FAQ"
|
1612 |
+
msgstr ""
|
1613 |
+
|
1614 |
+
#: includes/i18n.php:484
|
1615 |
+
msgctxt "Plugin installer section title"
|
1616 |
+
msgid "Changelog"
|
1617 |
+
msgstr ""
|
1618 |
+
|
1619 |
+
#: includes/i18n.php:485
|
1620 |
+
msgctxt "Plugin installer section title"
|
1621 |
+
msgid "Reviews"
|
1622 |
+
msgstr ""
|
1623 |
+
|
1624 |
+
#: includes/i18n.php:486
|
1625 |
+
msgctxt "Plugin installer section title"
|
1626 |
+
msgid "Other Notes"
|
1627 |
+
msgstr ""
|
1628 |
+
|
1629 |
+
#: includes/i18n.php:488
|
1630 |
+
msgid "%s star"
|
1631 |
+
msgstr ""
|
1632 |
+
|
1633 |
+
#: includes/i18n.php:490
|
1634 |
+
msgid "%s stars"
|
1635 |
+
msgstr ""
|
1636 |
+
|
1637 |
+
#: includes/i18n.php:492
|
1638 |
+
msgid "%s rating"
|
1639 |
+
msgstr ""
|
1640 |
+
|
1641 |
+
#: includes/i18n.php:494
|
1642 |
+
msgid "%s ratings"
|
1643 |
+
msgstr ""
|
1644 |
+
|
1645 |
+
#: includes/i18n.php:496
|
1646 |
+
msgid "%s time"
|
1647 |
+
msgstr ""
|
1648 |
+
|
1649 |
+
#: includes/i18n.php:498
|
1650 |
+
msgid "%s times"
|
1651 |
+
msgstr ""
|
1652 |
+
|
1653 |
+
#: includes/i18n.php:500
|
1654 |
+
msgid "Click to see reviews that provided a rating of %s"
|
1655 |
+
msgstr ""
|
1656 |
+
|
1657 |
+
#: includes/i18n.php:501
|
1658 |
+
msgid "Last Updated"
|
1659 |
+
msgstr ""
|
1660 |
+
|
1661 |
+
#: includes/i18n.php:502
|
1662 |
+
msgid "Requires WordPress Version:"
|
1663 |
+
msgstr ""
|
1664 |
+
|
1665 |
+
#: includes/i18n.php:503
|
1666 |
+
msgctxt "as the plugin author"
|
1667 |
+
msgid "Author:"
|
1668 |
+
msgstr ""
|
1669 |
+
|
1670 |
+
#: includes/i18n.php:504
|
1671 |
+
msgid "Compatible up to:"
|
1672 |
+
msgstr ""
|
1673 |
+
|
1674 |
+
#: includes/i18n.php:505
|
1675 |
+
msgid "Downloaded:"
|
1676 |
+
msgstr ""
|
1677 |
+
|
1678 |
+
#: includes/i18n.php:506
|
1679 |
+
msgid "WordPress.org Plugin Page"
|
1680 |
+
msgstr ""
|
1681 |
+
|
1682 |
+
#: includes/i18n.php:507
|
1683 |
+
msgid "Plugin Homepage"
|
1684 |
+
msgstr ""
|
1685 |
+
|
1686 |
+
#: includes/i18n.php:508
|
1687 |
+
msgid "Donate to this plugin"
|
1688 |
+
msgstr ""
|
1689 |
+
|
1690 |
+
#: includes/i18n.php:509
|
1691 |
+
msgid "Average Rating"
|
1692 |
+
msgstr ""
|
1693 |
+
|
1694 |
+
#: includes/i18n.php:510
|
1695 |
+
msgid "based on %s"
|
1696 |
+
msgstr ""
|
1697 |
+
|
1698 |
+
#: includes/i18n.php:511
|
1699 |
+
msgid "Warning:"
|
1700 |
+
msgstr ""
|
1701 |
+
|
1702 |
+
#: includes/i18n.php:512
|
1703 |
+
msgid "Contributors"
|
1704 |
+
msgstr ""
|
1705 |
+
|
1706 |
+
#: includes/i18n.php:513
|
1707 |
+
msgid "Plugin Install"
|
1708 |
+
msgstr ""
|
1709 |
+
|
1710 |
+
#: includes/i18n.php:514
|
1711 |
+
msgid "This plugin has not been tested with your current version of WordPress."
|
1712 |
+
msgstr ""
|
1713 |
+
|
1714 |
+
#: includes/i18n.php:515
|
1715 |
+
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1716 |
+
msgstr ""
|
1717 |
+
|
1718 |
+
#: includes/i18n.php:516
|
1719 |
+
msgid "Newer Version (%s) Installed"
|
1720 |
+
msgstr ""
|
1721 |
+
|
1722 |
+
#: includes/i18n.php:517
|
1723 |
+
msgid "Latest Version Installed"
|
1724 |
+
msgstr ""
|
includes/pum-sdk/freemius/languages/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/package.json
CHANGED
@@ -9,7 +9,7 @@
|
|
9 |
"gulp-pofill": "^1.0.0",
|
10 |
"gulp-rename": "^1.2.2",
|
11 |
"gulp-sort": "^2.0.0",
|
12 |
-
"gulp-wp-pot": "^
|
13 |
},
|
14 |
"scripts": {
|
15 |
"test": "echo \"Error: no test specified\" && exit 1"
|
@@ -27,6 +27,6 @@
|
|
27 |
"gulp-pofill": "^1.0.0",
|
28 |
"gulp-rename": "^1.2.2",
|
29 |
"gulp-sort": "^2.0.0",
|
30 |
-
"gulp-wp-pot": "^
|
31 |
}
|
32 |
}
|
9 |
"gulp-pofill": "^1.0.0",
|
10 |
"gulp-rename": "^1.2.2",
|
11 |
"gulp-sort": "^2.0.0",
|
12 |
+
"gulp-wp-pot": "^2.0.4"
|
13 |
},
|
14 |
"scripts": {
|
15 |
"test": "echo \"Error: no test specified\" && exit 1"
|
27 |
"gulp-pofill": "^1.0.0",
|
28 |
"gulp-rename": "^1.2.2",
|
29 |
"gulp-sort": "^2.0.0",
|
30 |
+
"gulp-wp-pot": "^2.0.4"
|
31 |
}
|
32 |
}
|
includes/pum-sdk/freemius/start.php
CHANGED
@@ -1,308 +1,308 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
-
* @since 1.0.3
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit;
|
11 |
-
}
|
12 |
-
|
13 |
-
/**
|
14 |
-
* Freemius SDK Version.
|
15 |
-
*
|
16 |
-
* @var string
|
17 |
-
*/
|
18 |
-
$this_sdk_version = '1.2.1.
|
19 |
-
|
20 |
-
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Special logic added on 1.1.6 to make sure that every Freemius powered plugin
|
24 |
-
* will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
|
25 |
-
*
|
26 |
-
* Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
|
27 |
-
* plugins will run correctly.
|
28 |
-
*
|
29 |
-
* @since 1.1.6
|
30 |
-
*/
|
31 |
-
|
32 |
-
global $fs_active_plugins;
|
33 |
-
|
34 |
-
$this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) );
|
35 |
-
|
36 |
-
if ( ! isset( $fs_active_plugins ) ) {
|
37 |
-
// Require SDK essentials.
|
38 |
-
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
|
39 |
-
|
40 |
-
// Load all Freemius powered active plugins.
|
41 |
-
$fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
|
42 |
-
|
43 |
-
if ( ! isset( $fs_active_plugins->plugins ) ) {
|
44 |
-
$fs_active_plugins->plugins = array();
|
45 |
-
}
|
46 |
-
}
|
47 |
-
|
48 |
-
if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
|
49 |
-
require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
|
50 |
-
}
|
51 |
-
|
52 |
-
// Update current SDK info based on the SDK path.
|
53 |
-
if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
|
54 |
-
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
|
55 |
-
) {
|
56 |
-
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
57 |
-
'version' => $this_sdk_version,
|
58 |
-
'timestamp' => time(),
|
59 |
-
'plugin_path' => plugin_basename( fs_find_direct_caller_plugin_file( __FILE__ ) ),
|
60 |
-
);
|
61 |
-
}
|
62 |
-
|
63 |
-
$is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
|
64 |
-
|
65 |
-
if ( ! isset( $fs_active_plugins->newest ) ) {
|
66 |
-
/**
|
67 |
-
* This will be executed only once, for the first time a Freemius powered plugin is activated.
|
68 |
-
*/
|
69 |
-
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
70 |
-
|
71 |
-
$is_current_sdk_newest = true;
|
72 |
-
} else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
|
73 |
-
/**
|
74 |
-
* Current SDK is newer than the newest stored SDK.
|
75 |
-
*/
|
76 |
-
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
77 |
-
|
78 |
-
if ( class_exists( 'Freemius' ) ) {
|
79 |
-
// Older SDK version was already loaded.
|
80 |
-
|
81 |
-
if ( ! $fs_active_plugins->newest->in_activation ) {
|
82 |
-
// Re-order plugins to load this plugin first.
|
83 |
-
fs_newest_sdk_plugin_first();
|
84 |
-
}
|
85 |
-
|
86 |
-
// Refresh page.
|
87 |
-
fs_redirect( $_SERVER['REQUEST_URI'] );
|
88 |
-
}
|
89 |
-
} else {
|
90 |
-
if ( ! function_exists( 'get_plugins' ) ) {
|
91 |
-
require_once
|
92 |
-
}
|
93 |
-
|
94 |
-
$is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path );
|
95 |
-
|
96 |
-
if ( $is_current_sdk_newest &&
|
97 |
-
! $is_newest_sdk_plugin_activate &&
|
98 |
-
! $fs_active_plugins->newest->in_activation
|
99 |
-
) {
|
100 |
-
// If current SDK is the newest and the plugin is NOT active, it means
|
101 |
-
// that the current plugin in activation mode.
|
102 |
-
$fs_active_plugins->newest->in_activation = true;
|
103 |
-
update_option( 'fs_active_plugins', $fs_active_plugins );
|
104 |
-
}
|
105 |
-
|
106 |
-
$is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) );
|
107 |
-
|
108 |
-
if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
|
109 |
-
// Plugin with newest SDK is no longer active, or SDK was moved to a different location.
|
110 |
-
unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
|
111 |
-
}
|
112 |
-
|
113 |
-
if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) ||
|
114 |
-
! $is_newest_sdk_path_valid ||
|
115 |
-
// Is newest SDK downgraded.
|
116 |
-
( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
117 |
-
version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
|
118 |
-
) {
|
119 |
-
/**
|
120 |
-
* Plugin with newest SDK is no longer active.
|
121 |
-
* OR
|
122 |
-
* The newest SDK was in the current plugin. BUT, seems like the version of
|
123 |
-
* the SDK was downgraded to a lower SDK.
|
124 |
-
*/
|
125 |
-
// Find the active plugin with the newest SDK version and update the newest reference.
|
126 |
-
fs_fallback_to_newest_active_sdk();
|
127 |
-
} else {
|
128 |
-
if ( $is_newest_sdk_plugin_activate &&
|
129 |
-
$this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
130 |
-
( $fs_active_plugins->newest->in_activation ||
|
131 |
-
( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
|
132 |
-
)
|
133 |
-
|
134 |
-
) {
|
135 |
-
if ( $fs_active_plugins->newest->in_activation ) {
|
136 |
-
// Plugin no more in activation.
|
137 |
-
$fs_active_plugins->newest->in_activation = false;
|
138 |
-
update_option( 'fs_active_plugins', $fs_active_plugins );
|
139 |
-
}
|
140 |
-
|
141 |
-
// Reorder plugins to load plugin with newest SDK first.
|
142 |
-
if ( fs_newest_sdk_plugin_first() ) {
|
143 |
-
// Refresh page after re-order to make sure activated plugin loads newest SDK.
|
144 |
-
if ( class_exists( 'Freemius' ) ) {
|
145 |
-
fs_redirect( $_SERVER['REQUEST_URI'] );
|
146 |
-
}
|
147 |
-
}
|
148 |
-
}
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
if ( class_exists( 'Freemius' ) ) {
|
153 |
-
// SDK was already loaded.
|
154 |
-
return;
|
155 |
-
}
|
156 |
-
|
157 |
-
if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
|
158 |
-
$newest_sdk_starter = fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs_active_plugins->newest->sdk_path . '/start.php' );
|
159 |
-
|
160 |
-
if ( file_exists( $newest_sdk_starter ) ) {
|
161 |
-
// Reorder plugins to load plugin with newest SDK first.
|
162 |
-
fs_newest_sdk_plugin_first();
|
163 |
-
|
164 |
-
// There's a newer SDK version, load it instead of the current one!
|
165 |
-
require_once $newest_sdk_starter;
|
166 |
-
|
167 |
-
return;
|
168 |
-
}
|
169 |
-
}
|
170 |
-
|
171 |
-
#endregion SDK Selection Logic --------------------------------------------------------------------
|
172 |
-
|
173 |
-
#region Hooks & Filters Collection --------------------------------------------------------------------
|
174 |
-
|
175 |
-
/**
|
176 |
-
* Freemius hooks (actions & filters) tags structure:
|
177 |
-
*
|
178 |
-
* fs_{filter/action_name}_{plugin_slug}
|
179 |
-
*
|
180 |
-
* --------------------------------------------------------
|
181 |
-
*
|
182 |
-
* Usage with WordPress' add_action() / add_filter():
|
183 |
-
*
|
184 |
-
* add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
|
185 |
-
*
|
186 |
-
* --------------------------------------------------------
|
187 |
-
*
|
188 |
-
* Usage with Freemius' instance add_action() / add_filter():
|
189 |
-
*
|
190 |
-
* // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
|
191 |
-
* my_freemius()->add_action('{action_name}', $callable);
|
192 |
-
*
|
193 |
-
* --------------------------------------------------------
|
194 |
-
*
|
195 |
-
* Freemius filters collection:
|
196 |
-
*
|
197 |
-
* fs_connect_url_{plugin_slug}
|
198 |
-
* fs_trial_promotion_message_{plugin_slug}
|
199 |
-
* fs_is_long_term_user_{plugin_slug}
|
200 |
-
* fs_uninstall_reasons_{plugin_slug}
|
201 |
-
* fs_is_plugin_update_{plugin_slug}
|
202 |
-
* fs_api_domains_{plugin_slug}
|
203 |
-
* fs_email_template_sections_{plugin_slug}
|
204 |
-
* fs_support_forum_submenu_{plugin_slug}
|
205 |
-
* fs_support_forum_url_{plugin_slug}
|
206 |
-
* fs_connect_message_{plugin_slug}
|
207 |
-
* fs_connect_message_on_update_{plugin_slug}
|
208 |
-
* fs_uninstall_confirmation_message_{plugin_slug}
|
209 |
-
* fs_pending_activation_message_{plugin_slug}
|
210 |
-
* fs_is_submenu_visible_{plugin_slug}
|
211 |
-
* fs_plugin_icon_{plugin_slug}
|
212 |
-
* fs_show_trial_{plugin_slug}
|
213 |
-
*
|
214 |
-
* --------------------------------------------------------
|
215 |
-
*
|
216 |
-
* Freemius actions collection:
|
217 |
-
*
|
218 |
-
* fs_after_license_loaded_{plugin_slug}
|
219 |
-
* fs_after_license_change_{plugin_slug}
|
220 |
-
* fs_after_plans_sync_{plugin_slug}
|
221 |
-
*
|
222 |
-
* fs_after_account_details_{plugin_slug}
|
223 |
-
* fs_after_account_user_sync_{plugin_slug}
|
224 |
-
* fs_after_account_plan_sync_{plugin_slug}
|
225 |
-
* fs_before_account_load_{plugin_slug}
|
226 |
-
* fs_after_account_connection_{plugin_slug}
|
227 |
-
* fs_account_property_edit_{plugin_slug}
|
228 |
-
* fs_account_email_verified_{plugin_slug}
|
229 |
-
* fs_account_page_load_before_departure_{plugin_slug}
|
230 |
-
* fs_before_account_delete_{plugin_slug}
|
231 |
-
* fs_after_account_delete_{plugin_slug}
|
232 |
-
*
|
233 |
-
* fs_sdk_version_update_{plugin_slug}
|
234 |
-
* fs_plugin_version_update_{plugin_slug}
|
235 |
-
*
|
236 |
-
* fs_initiated_{plugin_slug}
|
237 |
-
* fs_after_init_plugin_registered_{plugin_slug}
|
238 |
-
* fs_after_init_plugin_anonymous_{plugin_slug}
|
239 |
-
* fs_after_init_plugin_pending_activations_{plugin_slug}
|
240 |
-
* fs_after_init_addon_registered_{plugin_slug}
|
241 |
-
* fs_after_init_addon_anonymous_{plugin_slug}
|
242 |
-
* fs_after_init_addon_pending_activations_{plugin_slug}
|
243 |
-
*
|
244 |
-
* fs_after_premium_version_activation_{plugin_slug}
|
245 |
-
* fs_after_free_version_reactivation_{plugin_slug}
|
246 |
-
*
|
247 |
-
* fs_after_uninstall_{plugin_slug}
|
248 |
-
* fs_before_admin_menu_init_{plugin_slug}
|
249 |
-
*/
|
250 |
-
|
251 |
-
#endregion Hooks & Filters Collection --------------------------------------------------------------------
|
252 |
-
|
253 |
-
if ( ! class_exists( 'Freemius' ) ) {
|
254 |
-
|
255 |
-
if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
|
256 |
-
define( 'WP_FS__SDK_VERSION', $this_sdk_version );
|
257 |
-
}
|
258 |
-
|
259 |
-
// Load SDK files.
|
260 |
-
require_once dirname( __FILE__ ) . '/require.php';
|
261 |
-
|
262 |
-
/**
|
263 |
-
* Quick shortcut to get Freemius for specified plugin.
|
264 |
-
* Used by various templates.
|
265 |
-
*
|
266 |
-
* @param string $slug
|
267 |
-
*
|
268 |
-
* @return Freemius
|
269 |
-
*/
|
270 |
-
function freemius( $slug ) {
|
271 |
-
return Freemius::instance( $slug );
|
272 |
-
}
|
273 |
-
|
274 |
-
/**
|
275 |
-
* @param string $slug
|
276 |
-
* @param number $plugin_id
|
277 |
-
* @param string $public_key
|
278 |
-
* @param bool $is_live Is live or test plugin.
|
279 |
-
* @param bool $is_premium Hints freemius if running the premium plugin or not.
|
280 |
-
*
|
281 |
-
* @return Freemius
|
282 |
-
*
|
283 |
-
* @deprecated Please use fs_dynamic_init().
|
284 |
-
*/
|
285 |
-
function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
|
286 |
-
$fs = Freemius::instance( $slug, true );
|
287 |
-
$fs->init( $plugin_id, $public_key, $is_live, $is_premium );
|
288 |
-
|
289 |
-
return $fs;
|
290 |
-
}
|
291 |
-
|
292 |
-
/**
|
293 |
-
* @param array<string,string> $module Plugin or Theme details.
|
294 |
-
*
|
295 |
-
* @return Freemius
|
296 |
-
* @throws Freemius_Exception
|
297 |
-
*/
|
298 |
-
function fs_dynamic_init( $module ) {
|
299 |
-
$fs = Freemius::instance( $module['slug'], true );
|
300 |
-
$fs->dynamic_init( $module );
|
301 |
-
|
302 |
-
return $fs;
|
303 |
-
}
|
304 |
-
|
305 |
-
function fs_dump_log() {
|
306 |
-
FS_Logger::dump();
|
307 |
-
}
|
308 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.0.3
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Freemius SDK Version.
|
15 |
+
*
|
16 |
+
* @var string
|
17 |
+
*/
|
18 |
+
$this_sdk_version = '1.2.1.6';
|
19 |
+
|
20 |
+
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Special logic added on 1.1.6 to make sure that every Freemius powered plugin
|
24 |
+
* will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
|
25 |
+
*
|
26 |
+
* Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
|
27 |
+
* plugins will run correctly.
|
28 |
+
*
|
29 |
+
* @since 1.1.6
|
30 |
+
*/
|
31 |
+
|
32 |
+
global $fs_active_plugins;
|
33 |
+
|
34 |
+
$this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) );
|
35 |
+
|
36 |
+
if ( ! isset( $fs_active_plugins ) ) {
|
37 |
+
// Require SDK essentials.
|
38 |
+
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
|
39 |
+
|
40 |
+
// Load all Freemius powered active plugins.
|
41 |
+
$fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
|
42 |
+
|
43 |
+
if ( ! isset( $fs_active_plugins->plugins ) ) {
|
44 |
+
$fs_active_plugins->plugins = array();
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
|
49 |
+
require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
|
50 |
+
}
|
51 |
+
|
52 |
+
// Update current SDK info based on the SDK path.
|
53 |
+
if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
|
54 |
+
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
|
55 |
+
) {
|
56 |
+
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
57 |
+
'version' => $this_sdk_version,
|
58 |
+
'timestamp' => time(),
|
59 |
+
'plugin_path' => plugin_basename( fs_find_direct_caller_plugin_file( __FILE__ ) ),
|
60 |
+
);
|
61 |
+
}
|
62 |
+
|
63 |
+
$is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
|
64 |
+
|
65 |
+
if ( ! isset( $fs_active_plugins->newest ) ) {
|
66 |
+
/**
|
67 |
+
* This will be executed only once, for the first time a Freemius powered plugin is activated.
|
68 |
+
*/
|
69 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
70 |
+
|
71 |
+
$is_current_sdk_newest = true;
|
72 |
+
} else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
|
73 |
+
/**
|
74 |
+
* Current SDK is newer than the newest stored SDK.
|
75 |
+
*/
|
76 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
77 |
+
|
78 |
+
if ( class_exists( 'Freemius' ) ) {
|
79 |
+
// Older SDK version was already loaded.
|
80 |
+
|
81 |
+
if ( ! $fs_active_plugins->newest->in_activation ) {
|
82 |
+
// Re-order plugins to load this plugin first.
|
83 |
+
fs_newest_sdk_plugin_first();
|
84 |
+
}
|
85 |
+
|
86 |
+
// Refresh page.
|
87 |
+
fs_redirect( $_SERVER['REQUEST_URI'] );
|
88 |
+
}
|
89 |
+
} else {
|
90 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
91 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
92 |
+
}
|
93 |
+
|
94 |
+
$is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path );
|
95 |
+
|
96 |
+
if ( $is_current_sdk_newest &&
|
97 |
+
! $is_newest_sdk_plugin_activate &&
|
98 |
+
! $fs_active_plugins->newest->in_activation
|
99 |
+
) {
|
100 |
+
// If current SDK is the newest and the plugin is NOT active, it means
|
101 |
+
// that the current plugin in activation mode.
|
102 |
+
$fs_active_plugins->newest->in_activation = true;
|
103 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
104 |
+
}
|
105 |
+
|
106 |
+
$is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) );
|
107 |
+
|
108 |
+
if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
|
109 |
+
// Plugin with newest SDK is no longer active, or SDK was moved to a different location.
|
110 |
+
unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
|
111 |
+
}
|
112 |
+
|
113 |
+
if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) ||
|
114 |
+
! $is_newest_sdk_path_valid ||
|
115 |
+
// Is newest SDK downgraded.
|
116 |
+
( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
117 |
+
version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
|
118 |
+
) {
|
119 |
+
/**
|
120 |
+
* Plugin with newest SDK is no longer active.
|
121 |
+
* OR
|
122 |
+
* The newest SDK was in the current plugin. BUT, seems like the version of
|
123 |
+
* the SDK was downgraded to a lower SDK.
|
124 |
+
*/
|
125 |
+
// Find the active plugin with the newest SDK version and update the newest reference.
|
126 |
+
fs_fallback_to_newest_active_sdk();
|
127 |
+
} else {
|
128 |
+
if ( $is_newest_sdk_plugin_activate &&
|
129 |
+
$this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
130 |
+
( $fs_active_plugins->newest->in_activation ||
|
131 |
+
( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
|
132 |
+
)
|
133 |
+
|
134 |
+
) {
|
135 |
+
if ( $fs_active_plugins->newest->in_activation ) {
|
136 |
+
// Plugin no more in activation.
|
137 |
+
$fs_active_plugins->newest->in_activation = false;
|
138 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
139 |
+
}
|
140 |
+
|
141 |
+
// Reorder plugins to load plugin with newest SDK first.
|
142 |
+
if ( fs_newest_sdk_plugin_first() ) {
|
143 |
+
// Refresh page after re-order to make sure activated plugin loads newest SDK.
|
144 |
+
if ( class_exists( 'Freemius' ) ) {
|
145 |
+
fs_redirect( $_SERVER['REQUEST_URI'] );
|
146 |
+
}
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
if ( class_exists( 'Freemius' ) ) {
|
153 |
+
// SDK was already loaded.
|
154 |
+
return;
|
155 |
+
}
|
156 |
+
|
157 |
+
if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
|
158 |
+
$newest_sdk_starter = fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs_active_plugins->newest->sdk_path . '/start.php' );
|
159 |
+
|
160 |
+
if ( file_exists( $newest_sdk_starter ) ) {
|
161 |
+
// Reorder plugins to load plugin with newest SDK first.
|
162 |
+
fs_newest_sdk_plugin_first();
|
163 |
+
|
164 |
+
// There's a newer SDK version, load it instead of the current one!
|
165 |
+
require_once $newest_sdk_starter;
|
166 |
+
|
167 |
+
return;
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
#endregion SDK Selection Logic --------------------------------------------------------------------
|
172 |
+
|
173 |
+
#region Hooks & Filters Collection --------------------------------------------------------------------
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Freemius hooks (actions & filters) tags structure:
|
177 |
+
*
|
178 |
+
* fs_{filter/action_name}_{plugin_slug}
|
179 |
+
*
|
180 |
+
* --------------------------------------------------------
|
181 |
+
*
|
182 |
+
* Usage with WordPress' add_action() / add_filter():
|
183 |
+
*
|
184 |
+
* add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
|
185 |
+
*
|
186 |
+
* --------------------------------------------------------
|
187 |
+
*
|
188 |
+
* Usage with Freemius' instance add_action() / add_filter():
|
189 |
+
*
|
190 |
+
* // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
|
191 |
+
* my_freemius()->add_action('{action_name}', $callable);
|
192 |
+
*
|
193 |
+
* --------------------------------------------------------
|
194 |
+
*
|
195 |
+
* Freemius filters collection:
|
196 |
+
*
|
197 |
+
* fs_connect_url_{plugin_slug}
|
198 |
+
* fs_trial_promotion_message_{plugin_slug}
|
199 |
+
* fs_is_long_term_user_{plugin_slug}
|
200 |
+
* fs_uninstall_reasons_{plugin_slug}
|
201 |
+
* fs_is_plugin_update_{plugin_slug}
|
202 |
+
* fs_api_domains_{plugin_slug}
|
203 |
+
* fs_email_template_sections_{plugin_slug}
|
204 |
+
* fs_support_forum_submenu_{plugin_slug}
|
205 |
+
* fs_support_forum_url_{plugin_slug}
|
206 |
+
* fs_connect_message_{plugin_slug}
|
207 |
+
* fs_connect_message_on_update_{plugin_slug}
|
208 |
+
* fs_uninstall_confirmation_message_{plugin_slug}
|
209 |
+
* fs_pending_activation_message_{plugin_slug}
|
210 |
+
* fs_is_submenu_visible_{plugin_slug}
|
211 |
+
* fs_plugin_icon_{plugin_slug}
|
212 |
+
* fs_show_trial_{plugin_slug}
|
213 |
+
*
|
214 |
+
* --------------------------------------------------------
|
215 |
+
*
|
216 |
+
* Freemius actions collection:
|
217 |
+
*
|
218 |
+
* fs_after_license_loaded_{plugin_slug}
|
219 |
+
* fs_after_license_change_{plugin_slug}
|
220 |
+
* fs_after_plans_sync_{plugin_slug}
|
221 |
+
*
|
222 |
+
* fs_after_account_details_{plugin_slug}
|
223 |
+
* fs_after_account_user_sync_{plugin_slug}
|
224 |
+
* fs_after_account_plan_sync_{plugin_slug}
|
225 |
+
* fs_before_account_load_{plugin_slug}
|
226 |
+
* fs_after_account_connection_{plugin_slug}
|
227 |
+
* fs_account_property_edit_{plugin_slug}
|
228 |
+
* fs_account_email_verified_{plugin_slug}
|
229 |
+
* fs_account_page_load_before_departure_{plugin_slug}
|
230 |
+
* fs_before_account_delete_{plugin_slug}
|
231 |
+
* fs_after_account_delete_{plugin_slug}
|
232 |
+
*
|
233 |
+
* fs_sdk_version_update_{plugin_slug}
|
234 |
+
* fs_plugin_version_update_{plugin_slug}
|
235 |
+
*
|
236 |
+
* fs_initiated_{plugin_slug}
|
237 |
+
* fs_after_init_plugin_registered_{plugin_slug}
|
238 |
+
* fs_after_init_plugin_anonymous_{plugin_slug}
|
239 |
+
* fs_after_init_plugin_pending_activations_{plugin_slug}
|
240 |
+
* fs_after_init_addon_registered_{plugin_slug}
|
241 |
+
* fs_after_init_addon_anonymous_{plugin_slug}
|
242 |
+
* fs_after_init_addon_pending_activations_{plugin_slug}
|
243 |
+
*
|
244 |
+
* fs_after_premium_version_activation_{plugin_slug}
|
245 |
+
* fs_after_free_version_reactivation_{plugin_slug}
|
246 |
+
*
|
247 |
+
* fs_after_uninstall_{plugin_slug}
|
248 |
+
* fs_before_admin_menu_init_{plugin_slug}
|
249 |
+
*/
|
250 |
+
|
251 |
+
#endregion Hooks & Filters Collection --------------------------------------------------------------------
|
252 |
+
|
253 |
+
if ( ! class_exists( 'Freemius' ) ) {
|
254 |
+
|
255 |
+
if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
|
256 |
+
define( 'WP_FS__SDK_VERSION', $this_sdk_version );
|
257 |
+
}
|
258 |
+
|
259 |
+
// Load SDK files.
|
260 |
+
require_once dirname( __FILE__ ) . '/require.php';
|
261 |
+
|
262 |
+
/**
|
263 |
+
* Quick shortcut to get Freemius for specified plugin.
|
264 |
+
* Used by various templates.
|
265 |
+
*
|
266 |
+
* @param string $slug
|
267 |
+
*
|
268 |
+
* @return Freemius
|
269 |
+
*/
|
270 |
+
function freemius( $slug ) {
|
271 |
+
return Freemius::instance( $slug );
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* @param string $slug
|
276 |
+
* @param number $plugin_id
|
277 |
+
* @param string $public_key
|
278 |
+
* @param bool $is_live Is live or test plugin.
|
279 |
+
* @param bool $is_premium Hints freemius if running the premium plugin or not.
|
280 |
+
*
|
281 |
+
* @return Freemius
|
282 |
+
*
|
283 |
+
* @deprecated Please use fs_dynamic_init().
|
284 |
+
*/
|
285 |
+
function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
|
286 |
+
$fs = Freemius::instance( $slug, true );
|
287 |
+
$fs->init( $plugin_id, $public_key, $is_live, $is_premium );
|
288 |
+
|
289 |
+
return $fs;
|
290 |
+
}
|
291 |
+
|
292 |
+
/**
|
293 |
+
* @param array<string,string> $module Plugin or Theme details.
|
294 |
+
*
|
295 |
+
* @return Freemius
|
296 |
+
* @throws Freemius_Exception
|
297 |
+
*/
|
298 |
+
function fs_dynamic_init( $module ) {
|
299 |
+
$fs = Freemius::instance( $module['slug'], true );
|
300 |
+
$fs->dynamic_init( $module );
|
301 |
+
|
302 |
+
return $fs;
|
303 |
+
}
|
304 |
+
|
305 |
+
function fs_dump_log() {
|
306 |
+
FS_Logger::dump();
|
307 |
+
}
|
308 |
}
|
includes/pum-sdk/freemius/templates/account.php
CHANGED
@@ -35,7 +35,7 @@
|
|
35 |
$is_paid_trial = $fs->is_paid_trial();
|
36 |
$show_upgrade = ( $fs->has_paid_plan() && ! $is_paying && ! $is_paid_trial );
|
37 |
|
38 |
-
if ( $
|
39 |
$fs->_add_license_activation_dialog_box();
|
40 |
}
|
41 |
?>
|
@@ -144,6 +144,8 @@
|
|
144 |
<div class="inside">
|
145 |
<table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
|
146 |
<?php
|
|
|
|
|
147 |
$profile = array();
|
148 |
$profile[] = array(
|
149 |
'id' => 'user_name',
|
@@ -215,11 +217,13 @@
|
|
215 |
);
|
216 |
|
217 |
if ( is_object( $license ) ) {
|
218 |
-
$
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
|
|
|
|
223 |
}
|
224 |
}
|
225 |
}
|
@@ -246,23 +250,23 @@
|
|
246 |
<code><?php echo htmlspecialchars( $p['value'] ) ?></code>
|
247 |
<?php endif ?>
|
248 |
<?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
|
249 |
-
<label class="fs-tag fs-warn"><?php
|
250 |
<?php endif ?>
|
251 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
252 |
<?php if ( $fs->is_trial() ) : ?>
|
253 |
-
<label class="fs-tag fs-success"><?php
|
254 |
<?php endif ?>
|
255 |
<?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
|
256 |
<?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
|
257 |
<label
|
258 |
-
class="fs-tag fs-warn"><?php
|
259 |
<?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
|
260 |
<label
|
261 |
-
class="fs-tag fs-success"><?php
|
262 |
<?php endif ?>
|
263 |
<?php elseif ( $fs->is_trial() ) : ?>
|
264 |
<label
|
265 |
-
class="fs-tag fs-warn"><?php
|
266 |
<?php endif ?>
|
267 |
<div class="button-group">
|
268 |
<?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
|
@@ -274,7 +278,7 @@
|
|
274 |
<input type="hidden" name="license_id" value="<?php echo $available_license->id ?>">
|
275 |
<?php wp_nonce_field( 'activate_license' ) ?>
|
276 |
<input type="submit" class="button button-primary"
|
277 |
-
value="<?php
|
278 |
__fs( 'activate-x-plan', $slug ) . '%s',
|
279 |
$premium_plan->title,
|
280 |
( $site->is_localhost() && $available_license->is_free_localhost ) ?
|
@@ -285,16 +289,16 @@
|
|
285 |
sprintf( __fs( 'x-left', $slug ), $available_license->left() ) :
|
286 |
strtolower( __fs( 'last-license', $slug ) ) ) . ']'
|
287 |
)
|
288 |
-
) ?> ">
|
289 |
</form>
|
290 |
<?php else : ?>
|
291 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
|
292 |
method="POST" class="button-group">
|
293 |
<?php if ( $show_upgrade && $fs->is_premium() ) : ?>
|
294 |
-
<a class="button activate-license-trigger <?php echo $slug ?>" href="#"><?php
|
295 |
<?php endif ?>
|
296 |
<input type="submit" class="button"
|
297 |
-
value="<?php
|
298 |
<input type="hidden" name="fs_action"
|
299 |
value="<?php echo $slug ?>_sync_license">
|
300 |
<?php wp_nonce_field( $slug . '_sync_license' ) ?>
|
@@ -302,19 +306,18 @@
|
|
302 |
class="button<?php if ( $show_upgrade ) {
|
303 |
echo ' button-primary';
|
304 |
} ?> button-upgrade"><i
|
305 |
-
class="dashicons dashicons-cart"></i> <?php ( $show_upgrade )
|
306 |
-
_efs( 'upgrade', $slug ) :
|
307 |
-
_efs( 'change-plan', $slug )
|
308 |
-
?></a>
|
309 |
</form>
|
310 |
<?php endif ?>
|
311 |
</div>
|
312 |
<?php elseif ( 'version' === $p['id'] && $fs->has_paid_plan() ) : ?>
|
313 |
-
<?php if ( $fs->
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
|
|
|
|
318 |
<?php endif ?>
|
319 |
<?php endif ?>
|
320 |
</td>
|
@@ -325,10 +328,11 @@
|
|
325 |
<input type="hidden" name="fs_action" value="verify_email">
|
326 |
<?php wp_nonce_field( 'verify_email' ) ?>
|
327 |
<input type="submit" class="button button-small"
|
328 |
-
value="<?php
|
329 |
</form>
|
330 |
<?php endif ?>
|
331 |
<?php if ( 'version' === $p['id'] ) : ?>
|
|
|
332 |
<div class="button-group">
|
333 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
334 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
@@ -336,13 +340,17 @@
|
|
336 |
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version', $slug ), ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
|
337 |
<?php elseif ( is_object( $update ) ) : ?>
|
338 |
<a class="button button-primary"
|
339 |
-
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo
|
340 |
<?php endif ?>
|
341 |
<?php endif; ?>
|
342 |
</div>
|
|
|
343 |
<?php
|
344 |
elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
|
345 |
-
<button class="button button-small"><?php
|
|
|
|
|
|
|
346 |
<?php
|
347 |
elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
|
348 |
( is_string( $user->secret_key ) && in_array( $p['id'], array(
|
@@ -357,7 +365,7 @@
|
|
357 |
value="">
|
358 |
<?php wp_nonce_field( 'update_' . $p['id'] ) ?>
|
359 |
<input type="submit" class="button button-small"
|
360 |
-
value="<?php
|
361 |
</form>
|
362 |
<?php endif ?>
|
363 |
</td>
|
@@ -370,7 +378,7 @@
|
|
370 |
</div>
|
371 |
<script type="text/javascript">
|
372 |
(function ($) {
|
373 |
-
$('.fs-
|
374 |
var
|
375 |
$this = $(this),
|
376 |
$parent = $this.closest('tr'),
|
@@ -380,13 +388,13 @@
|
|
380 |
$input.toggle();
|
381 |
|
382 |
if ($input.is(':visible')) {
|
383 |
-
$this.html(
|
384 |
setTimeout(function () {
|
385 |
$input.select().focus();
|
386 |
}, 100);
|
387 |
}
|
388 |
else {
|
389 |
-
$this.html(
|
390 |
}
|
391 |
});
|
392 |
}(jQuery));
|
@@ -415,11 +423,11 @@
|
|
415 |
<table id="fs_addons" class="widefat">
|
416 |
<thead>
|
417 |
<tr>
|
418 |
-
<th><h3><?php
|
419 |
-
<th><?php
|
420 |
-
<th><?php
|
421 |
-
<th><?php
|
422 |
-
<th><?php
|
423 |
<th></th>
|
424 |
<?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
|
425 |
<th></th>
|
@@ -605,21 +613,21 @@
|
|
605 |
if ( $fs->is_addon_installed( $addon->slug ) ) {
|
606 |
$addon_file = $fs->get_addon_basename( $addon->slug );
|
607 |
$buttons[] = sprintf(
|
608 |
-
'<a class="button button-primary" href="%s" title="%s"
|
609 |
wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
|
610 |
-
|
611 |
__fs( 'activate', $slug )
|
612 |
);
|
613 |
} else {
|
614 |
if ( $fs->is_allowed_to_install() ) {
|
615 |
$buttons[] = sprintf(
|
616 |
-
'<a class="button button-primary" href="%s"
|
617 |
wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
|
618 |
__fs( 'install-now', $slug )
|
619 |
);
|
620 |
} else {
|
621 |
$buttons[] = sprintf(
|
622 |
-
'<a target="_blank" class="button button-primary" href="%s"
|
623 |
$fs->_get_latest_download_local_url( $addon_id ),
|
624 |
__fs( 'download-latest', $slug )
|
625 |
);
|
@@ -661,15 +669,15 @@
|
|
661 |
<?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
|
662 |
<a class="button button-primary"
|
663 |
href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
|
664 |
-
title="<?php
|
665 |
-
class="edit"><?php
|
666 |
<?php else : ?>
|
667 |
<?php if ( $fs->is_allowed_to_install() ) : ?>
|
668 |
<a class="button button-primary"
|
669 |
-
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php
|
670 |
<?php else : ?>
|
671 |
<a target="_blank" class="button button-primary"
|
672 |
-
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php
|
673 |
<?php endif ?>
|
674 |
<?php endif ?>
|
675 |
</td>
|
@@ -712,5 +720,4 @@
|
|
712 |
'module_slug' => $slug,
|
713 |
'module_version' => $fs->get_plugin_version(),
|
714 |
);
|
715 |
-
fs_require_template( 'powered-by.php', $params );
|
716 |
-
?>
|
35 |
$is_paid_trial = $fs->is_paid_trial();
|
36 |
$show_upgrade = ( $fs->has_paid_plan() && ! $is_paying && ! $is_paid_trial );
|
37 |
|
38 |
+
if ( $fs->has_paid_plan() ) {
|
39 |
$fs->_add_license_activation_dialog_box();
|
40 |
}
|
41 |
?>
|
144 |
<div class="inside">
|
145 |
<table id="fs_account_details" cellspacing="0" class="fs-key-value-table">
|
146 |
<?php
|
147 |
+
$hide_license_key = $fs->apply_filters( 'hide_license_key', false );
|
148 |
+
|
149 |
$profile = array();
|
150 |
$profile[] = array(
|
151 |
'id' => 'user_name',
|
217 |
);
|
218 |
|
219 |
if ( is_object( $license ) ) {
|
220 |
+
if ( ! $hide_license_key ) {
|
221 |
+
$profile[] = array(
|
222 |
+
'id' => 'license_key',
|
223 |
+
'title' => __fs( 'License Key', $slug ),
|
224 |
+
'value' => $license->secret_key,
|
225 |
+
);
|
226 |
+
}
|
227 |
}
|
228 |
}
|
229 |
}
|
250 |
<code><?php echo htmlspecialchars( $p['value'] ) ?></code>
|
251 |
<?php endif ?>
|
252 |
<?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
|
253 |
+
<label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'not-verified', $slug ) ?></label>
|
254 |
<?php endif ?>
|
255 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
256 |
<?php if ( $fs->is_trial() ) : ?>
|
257 |
+
<label class="fs-tag fs-success"><?php fs_esc_html_echo( 'trial', $slug ) ?></label>
|
258 |
<?php endif ?>
|
259 |
<?php if ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
|
260 |
<?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
|
261 |
<label
|
262 |
+
class="fs-tag fs-warn"><?php echo esc_html( sprintf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?></label>
|
263 |
<?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
|
264 |
<label
|
265 |
+
class="fs-tag fs-success"><?php echo esc_html( sprintf( __fs( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ) ?></label>
|
266 |
<?php endif ?>
|
267 |
<?php elseif ( $fs->is_trial() ) : ?>
|
268 |
<label
|
269 |
+
class="fs-tag fs-warn"><?php echo esc_html( sprintf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ) ?></label>
|
270 |
<?php endif ?>
|
271 |
<div class="button-group">
|
272 |
<?php $available_license = $fs->is_free_plan() ? $fs->_get_available_premium_license() : false ?>
|
278 |
<input type="hidden" name="license_id" value="<?php echo $available_license->id ?>">
|
279 |
<?php wp_nonce_field( 'activate_license' ) ?>
|
280 |
<input type="submit" class="button button-primary"
|
281 |
+
value="<?php echo esc_attr( sprintf(
|
282 |
__fs( 'activate-x-plan', $slug ) . '%s',
|
283 |
$premium_plan->title,
|
284 |
( $site->is_localhost() && $available_license->is_free_localhost ) ?
|
289 |
sprintf( __fs( 'x-left', $slug ), $available_license->left() ) :
|
290 |
strtolower( __fs( 'last-license', $slug ) ) ) . ']'
|
291 |
)
|
292 |
+
) ) ?> ">
|
293 |
</form>
|
294 |
<?php else : ?>
|
295 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
|
296 |
method="POST" class="button-group">
|
297 |
<?php if ( $show_upgrade && $fs->is_premium() ) : ?>
|
298 |
+
<a class="button activate-license-trigger <?php echo $slug ?>" href="#"><?php fs_esc_html_echo( 'activate-license', $slug ) ?></a>
|
299 |
<?php endif ?>
|
300 |
<input type="submit" class="button"
|
301 |
+
value="<?php fs_esc_attr_echo( 'sync-license', $slug ) ?>">
|
302 |
<input type="hidden" name="fs_action"
|
303 |
value="<?php echo $slug ?>_sync_license">
|
304 |
<?php wp_nonce_field( $slug . '_sync_license' ) ?>
|
306 |
class="button<?php if ( $show_upgrade ) {
|
307 |
echo ' button-primary';
|
308 |
} ?> button-upgrade"><i
|
309 |
+
class="dashicons dashicons-cart"></i> <?php fs_esc_html_echo( $show_upgrade ? 'upgrade' : 'change-plan', $slug ) ?></a>
|
|
|
|
|
|
|
310 |
</form>
|
311 |
<?php endif ?>
|
312 |
</div>
|
313 |
<?php elseif ( 'version' === $p['id'] && $fs->has_paid_plan() ) : ?>
|
314 |
+
<?php if ( $fs->has_premium_version() ) : ?>
|
315 |
+
<?php if ( $fs->is_premium() ) : ?>
|
316 |
+
<label
|
317 |
+
class="fs-tag fs-<?php echo $fs->can_use_premium_code() ? 'success' : 'warn' ?>"><?php fs_esc_html_echo( 'premium-version', $slug ) ?></label>
|
318 |
+
<?php elseif ( $fs->can_use_premium_code() ) : ?>
|
319 |
+
<label class="fs-tag fs-warn"><?php fs_esc_html_echo( 'free-version', $slug ) ?></label>
|
320 |
+
<?php endif ?>
|
321 |
<?php endif ?>
|
322 |
<?php endif ?>
|
323 |
</td>
|
328 |
<input type="hidden" name="fs_action" value="verify_email">
|
329 |
<?php wp_nonce_field( 'verify_email' ) ?>
|
330 |
<input type="submit" class="button button-small"
|
331 |
+
value="<?php fs_esc_attr_echo( 'verify-email', $slug ) ?>">
|
332 |
</form>
|
333 |
<?php endif ?>
|
334 |
<?php if ( 'version' === $p['id'] ) : ?>
|
335 |
+
<?php if ( $fs->has_release_on_freemius() ) : ?>
|
336 |
<div class="button-group">
|
337 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
338 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
340 |
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version', $slug ), ( $fs->is_trial() ? $trial_plan->title : $site->plan->title ) ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
|
341 |
<?php elseif ( is_object( $update ) ) : ?>
|
342 |
<a class="button button-primary"
|
343 |
+
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo fs_esc_html( 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
|
344 |
<?php endif ?>
|
345 |
<?php endif; ?>
|
346 |
</div>
|
347 |
+
<?php endif ?>
|
348 |
<?php
|
349 |
elseif ( in_array( $p['id'], array( 'license_key', 'site_secret_key' ) ) ) : ?>
|
350 |
+
<button class="button button-small fs-toggle-visibility"><?php echo esc_html( __fs( 'show', $slug ) ) ?></button>
|
351 |
+
<?php if ('license_key' === $p['id']) : ?>
|
352 |
+
<button class="button button-small activate-license-trigger <?php echo $slug ?>"><?php echo esc_html( __fs( 'change-license', $slug ) ) ?></button>
|
353 |
+
<?php endif ?>
|
354 |
<?php
|
355 |
elseif (/*in_array($p['id'], array('site_secret_key', 'site_id', 'site_public_key')) ||*/
|
356 |
( is_string( $user->secret_key ) && in_array( $p['id'], array(
|
365 |
value="">
|
366 |
<?php wp_nonce_field( 'update_' . $p['id'] ) ?>
|
367 |
<input type="submit" class="button button-small"
|
368 |
+
value="<?php fs_esc_attr_echo( 'edit', $slug ) ?>">
|
369 |
</form>
|
370 |
<?php endif ?>
|
371 |
</td>
|
378 |
</div>
|
379 |
<script type="text/javascript">
|
380 |
(function ($) {
|
381 |
+
$('.fs-toggle-visibility').click(function () {
|
382 |
var
|
383 |
$this = $(this),
|
384 |
$parent = $this.closest('tr'),
|
388 |
$input.toggle();
|
389 |
|
390 |
if ($input.is(':visible')) {
|
391 |
+
$this.html(<?php fs_json_encode_echo( 'hide', $slug ) ?>);
|
392 |
setTimeout(function () {
|
393 |
$input.select().focus();
|
394 |
}, 100);
|
395 |
}
|
396 |
else {
|
397 |
+
$this.html(<?php fs_json_encode_echo( 'show', $slug ) ?>);
|
398 |
}
|
399 |
});
|
400 |
}(jQuery));
|
423 |
<table id="fs_addons" class="widefat">
|
424 |
<thead>
|
425 |
<tr>
|
426 |
+
<th><h3><?php fs_esc_html_echo( 'add-ons', $slug ) ?></h3></th>
|
427 |
+
<th><?php fs_esc_html_echo( 'id', $slug ) ?></th>
|
428 |
+
<th><?php fs_esc_html_echo( 'version', $slug ) ?></th>
|
429 |
+
<th><?php fs_esc_html_echo( 'plan', $slug ) ?></th>
|
430 |
+
<th><?php fs_esc_html_echo( 'license', $slug ) ?></th>
|
431 |
<th></th>
|
432 |
<?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
|
433 |
<th></th>
|
613 |
if ( $fs->is_addon_installed( $addon->slug ) ) {
|
614 |
$addon_file = $fs->get_addon_basename( $addon->slug );
|
615 |
$buttons[] = sprintf(
|
616 |
+
'<a class="button button-primary edit" href="%s" title="%s">%s</a>',
|
617 |
wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ),
|
618 |
+
fs_esc_attr( 'activate-this-addon', $slug ),
|
619 |
__fs( 'activate', $slug )
|
620 |
);
|
621 |
} else {
|
622 |
if ( $fs->is_allowed_to_install() ) {
|
623 |
$buttons[] = sprintf(
|
624 |
+
'<a class="button button-primary edit" href="%s">%s</a>',
|
625 |
wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ),
|
626 |
__fs( 'install-now', $slug )
|
627 |
);
|
628 |
} else {
|
629 |
$buttons[] = sprintf(
|
630 |
+
'<a target="_blank" class="button button-primary edit" href="%s">%s</a>',
|
631 |
$fs->_get_latest_download_local_url( $addon_id ),
|
632 |
__fs( 'download-latest', $slug )
|
633 |
);
|
669 |
<?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
|
670 |
<a class="button button-primary"
|
671 |
href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
|
672 |
+
title="<?php fs_esc_attr_echo( 'activate-this-addon', $slug ) ?>"
|
673 |
+
class="edit"><?php fs_esc_html_echo( 'activate', $slug ) ?></a>
|
674 |
<?php else : ?>
|
675 |
<?php if ( $fs->is_allowed_to_install() ) : ?>
|
676 |
<a class="button button-primary"
|
677 |
+
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo( 'install-now', $slug ) ?></a>
|
678 |
<?php else : ?>
|
679 |
<a target="_blank" class="button button-primary"
|
680 |
+
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php fs_esc_html_echo( 'download-latest', $slug ) ?></a>
|
681 |
<?php endif ?>
|
682 |
<?php endif ?>
|
683 |
</td>
|
720 |
'module_slug' => $slug,
|
721 |
'module_version' => $fs->get_plugin_version(),
|
722 |
);
|
723 |
+
fs_require_template( 'powered-by.php', $params );
|
|
includes/pum-sdk/freemius/templates/add-ons.php
CHANGED
@@ -123,6 +123,17 @@
|
|
123 |
|
124 |
var interval = setInterval(function () {
|
125 |
// Open add-on information page.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
$('.fs-card[data-slug=<?php echo $open_addon_slug ?>] a').click();
|
127 |
if ($('#TB_iframeContent').length > 0) {
|
128 |
clearInterval(interval);
|
123 |
|
124 |
var interval = setInterval(function () {
|
125 |
// Open add-on information page.
|
126 |
+
<?php
|
127 |
+
/**
|
128 |
+
* @author Vova Feldman
|
129 |
+
*
|
130 |
+
* This code does NOT expose an XSS vulnerability because:
|
131 |
+
* 1. This page only renders for admins, so if an attacker manage to get
|
132 |
+
* admin access, they can do more harm.
|
133 |
+
* 2. This code won't be rendered unless $open_addon_slug matches any of
|
134 |
+
* the plugin's add-ons slugs.
|
135 |
+
*/
|
136 |
+
?>
|
137 |
$('.fs-card[data-slug=<?php echo $open_addon_slug ?>] a').click();
|
138 |
if ($('#TB_iframeContent').length > 0) {
|
139 |
clearInterval(interval);
|
includes/pum-sdk/freemius/templates/checkout-legacy.php
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.0.3
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
wp_enqueue_script( 'jquery' );
|
14 |
+
wp_enqueue_script( 'json2' );
|
15 |
+
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
16 |
+
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
17 |
+
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
18 |
+
|
19 |
+
/**
|
20 |
+
* @var array $VARS
|
21 |
+
*/
|
22 |
+
$slug = $VARS['slug'];
|
23 |
+
$fs = freemius( $slug );
|
24 |
+
|
25 |
+
$timestamp = time();
|
26 |
+
|
27 |
+
$context_params = array(
|
28 |
+
'plugin_id' => $fs->get_id(),
|
29 |
+
'plugin_public_key' => $fs->get_public_key(),
|
30 |
+
'plugin_version' => $fs->get_plugin_version(),
|
31 |
+
);
|
32 |
+
|
33 |
+
// Get site context secure params.
|
34 |
+
if ( $fs->is_registered() ) {
|
35 |
+
$site = $fs->get_site();
|
36 |
+
$plugin_id = fs_request_get( 'plugin_id', $fs->get_id() );
|
37 |
+
|
38 |
+
if ( $plugin_id != $fs->get_id() ) {
|
39 |
+
if ( $fs->is_addon_activated( $plugin_id ) ) {
|
40 |
+
$fs_addon = Freemius::get_instance_by_id( $plugin_id );
|
41 |
+
$site = $fs_addon->get_site();
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
$context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
|
46 |
+
$site,
|
47 |
+
$timestamp,
|
48 |
+
'checkout'
|
49 |
+
) );
|
50 |
+
} else {
|
51 |
+
$current_user = Freemius::_get_current_wp_user();
|
52 |
+
|
53 |
+
// Add site and user info to the request, this information
|
54 |
+
// is NOT being stored unless the user complete the purchase
|
55 |
+
// and agrees to the TOS.
|
56 |
+
$context_params = array_merge( $context_params, array(
|
57 |
+
'user_firstname' => $current_user->user_firstname,
|
58 |
+
'user_lastname' => $current_user->user_lastname,
|
59 |
+
'user_email' => $current_user->user_email,
|
60 |
+
'home_url' => home_url(),
|
61 |
+
) );
|
62 |
+
|
63 |
+
$fs_user = Freemius::_get_user_by_email( $current_user->user_email );
|
64 |
+
|
65 |
+
if ( is_object( $fs_user ) ) {
|
66 |
+
$context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
|
67 |
+
$fs_user,
|
68 |
+
$timestamp,
|
69 |
+
'checkout'
|
70 |
+
) );
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
if ( $fs->is_payments_sandbox() ) {
|
75 |
+
// Append plugin secure token for sandbox mode authentication.
|
76 |
+
$context_params['sandbox'] = FS_Security::instance()->get_secure_token(
|
77 |
+
$fs->get_plugin(),
|
78 |
+
$timestamp,
|
79 |
+
'checkout'
|
80 |
+
);
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @since 1.1.7.3 Add security timestamp for sandbox even for anonymous user.
|
84 |
+
*/
|
85 |
+
if ( empty( $context_params['s_ctx_ts'] ) ) {
|
86 |
+
$context_params['s_ctx_ts'] = $timestamp;
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
$return_url = $fs->_get_sync_license_url( isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id() );
|
91 |
+
|
92 |
+
$query_params = array_merge( $context_params, $_GET, array(
|
93 |
+
// Current plugin version.
|
94 |
+
'plugin_version' => $fs->get_plugin_version(),
|
95 |
+
'sdk_version' => WP_FS__SDK_VERSION,
|
96 |
+
'return_url' => $return_url,
|
97 |
+
// Admin CSS URL for style/design competability.
|
98 |
+
// 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
|
99 |
+
) );
|
100 |
+
?>
|
101 |
+
<div id="fs_checkout" class="wrap" style="margin: 0 0 -65px -20px;">
|
102 |
+
<div id="iframe"></div>
|
103 |
+
<script type="text/javascript">
|
104 |
+
// http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
|
105 |
+
jQuery(function ($) {
|
106 |
+
$.extend({
|
107 |
+
form: function (url, data, method) {
|
108 |
+
if (method == null) method = 'POST';
|
109 |
+
if (data == null) data = {};
|
110 |
+
|
111 |
+
var form = $('<form>').attr({
|
112 |
+
method: method,
|
113 |
+
action: url
|
114 |
+
}).css({
|
115 |
+
display: 'none'
|
116 |
+
});
|
117 |
+
|
118 |
+
var addData = function (name, data) {
|
119 |
+
if ($.isArray(data)) {
|
120 |
+
for (var i = 0; i < data.length; i++) {
|
121 |
+
var value = data[i];
|
122 |
+
addData(name + '[]', value);
|
123 |
+
}
|
124 |
+
} else if (typeof data === 'object') {
|
125 |
+
for (var key in data) {
|
126 |
+
if (data.hasOwnProperty(key)) {
|
127 |
+
addData(name + '[' + key + ']', data[key]);
|
128 |
+
}
|
129 |
+
}
|
130 |
+
} else if (data != null) {
|
131 |
+
form.append($('<input>').attr({
|
132 |
+
type : 'hidden',
|
133 |
+
name : String(name),
|
134 |
+
value: String(data)
|
135 |
+
}));
|
136 |
+
}
|
137 |
+
};
|
138 |
+
|
139 |
+
for (var key in data) {
|
140 |
+
if (data.hasOwnProperty(key)) {
|
141 |
+
addData(key, data[key]);
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
return form.appendTo('body');
|
146 |
+
}
|
147 |
+
});
|
148 |
+
});
|
149 |
+
|
150 |
+
(function ($) {
|
151 |
+
$(function () {
|
152 |
+
|
153 |
+
var
|
154 |
+
// Keep track of the iframe height.
|
155 |
+
iframe_height = 800,
|
156 |
+
base_url = '<?php echo WP_FS__ADDRESS ?>',
|
157 |
+
// Pass the parent page URL into the Iframe in a meaningful way (this URL could be
|
158 |
+
// passed via query string or hard coded into the child page, it depends on your needs).
|
159 |
+
src = base_url + '/checkout/?<?php echo ( isset( $_REQUEST['XDEBUG_SESSION'] ) ? 'XDEBUG_SESSION=' . $_REQUEST['XDEBUG_SESSION'] . '&' : '' ) . http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
|
160 |
+
|
161 |
+
// Append the Iframe into the DOM.
|
162 |
+
iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
|
163 |
+
.appendTo('#iframe');
|
164 |
+
|
165 |
+
FS.PostMessage.init(base_url, [iframe[0]]);
|
166 |
+
FS.PostMessage.receiveOnce('height', function (data) {
|
167 |
+
var h = data.height;
|
168 |
+
if (!isNaN(h) && h > 0 && h != iframe_height) {
|
169 |
+
iframe_height = h;
|
170 |
+
iframe.height(iframe_height + 'px');
|
171 |
+
|
172 |
+
FS.PostMessage.postScroll(iframe[0]);
|
173 |
+
}
|
174 |
+
});
|
175 |
+
|
176 |
+
FS.PostMessage.receiveOnce('install', function (data) {
|
177 |
+
// Post data to activation URL.
|
178 |
+
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
179 |
+
'fs_action' => $slug . '_activate_new',
|
180 |
+
'plugin_id' => isset( $_GET['plugin_id'] ) ? $_GET['plugin_id'] : $fs->get_id()
|
181 |
+
) ), $slug . '_activate_new' ) ?>', {
|
182 |
+
user_id : data.user.id,
|
183 |
+
user_secret_key : data.user.secret_key,
|
184 |
+
user_public_key : data.user.public_key,
|
185 |
+
install_id : data.install.id,
|
186 |
+
install_secret_key: data.install.secret_key,
|
187 |
+
install_public_key: data.install.public_key
|
188 |
+
}).submit();
|
189 |
+
});
|
190 |
+
|
191 |
+
FS.PostMessage.receiveOnce('pending_activation', function (data) {
|
192 |
+
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
193 |
+
'fs_action' => $slug . '_activate_new',
|
194 |
+
'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
|
195 |
+
'pending_activation' => true,
|
196 |
+
) ), $slug . '_activate_new' ) ?>', {
|
197 |
+
user_email: data.user_email
|
198 |
+
}).submit();
|
199 |
+
});
|
200 |
+
|
201 |
+
FS.PostMessage.receiveOnce('get_context', function () {
|
202 |
+
console.debug('receiveOnce', 'get_context');
|
203 |
+
|
204 |
+
// If the user didn't connect his account with Freemius,
|
205 |
+
// once he accepts the Terms of Service and Privacy Policy,
|
206 |
+
// and then click the purchase button, the context information
|
207 |
+
// of the user will be shared with Freemius in order to complete the
|
208 |
+
// purchase workflow and activate the license for the right user.
|
209 |
+
<?php $install_data = array_merge( $fs->get_opt_in_params(),
|
210 |
+
array(
|
211 |
+
'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
|
212 |
+
array(
|
213 |
+
'fs_action' => $slug . '_activate_new',
|
214 |
+
'plugin_id' => fs_request_get( 'plugin_id', $fs->get_id() ),
|
215 |
+
|
216 |
+
) ),
|
217 |
+
$slug . '_activate_new' )
|
218 |
+
) ) ?>
|
219 |
+
FS.PostMessage.post('context', <?php echo json_encode( $install_data ) ?>, iframe[0]);
|
220 |
+
});
|
221 |
+
|
222 |
+
FS.PostMessage.receiveOnce('get_dimensions', function (data) {
|
223 |
+
console.debug('receiveOnce', 'get_dimensions');
|
224 |
+
|
225 |
+
FS.PostMessage.post('dimensions', {
|
226 |
+
height : $(document.body).height(),
|
227 |
+
scrollTop: $(document).scrollTop()
|
228 |
+
}, iframe[0]);
|
229 |
+
});
|
230 |
+
});
|
231 |
+
})(jQuery);
|
232 |
+
</script>
|
233 |
+
</div>
|
234 |
+
<?php
|
235 |
+
$params = array(
|
236 |
+
'page' => 'checkout',
|
237 |
+
'module_id' => $fs->get_id(),
|
238 |
+
'module_slug' => $slug,
|
239 |
+
'module_version' => $fs->get_plugin_version(),
|
240 |
+
);
|
241 |
+
fs_require_template( 'powered-by.php', $params );
|
242 |
+
?>
|
includes/pum-sdk/freemius/templates/checkout.php
CHANGED
@@ -15,6 +15,7 @@
|
|
15 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
16 |
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
17 |
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
|
|
18 |
|
19 |
/**
|
20 |
* @var array $VARS
|
@@ -25,15 +26,31 @@
|
|
25 |
$timestamp = time();
|
26 |
|
27 |
$context_params = array(
|
28 |
-
'plugin_id'
|
29 |
-
'
|
30 |
-
|
|
|
|
|
31 |
);
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
// Get site context secure params.
|
34 |
if ( $fs->is_registered() ) {
|
35 |
-
$site
|
36 |
-
$plugin_id = fs_request_get( 'plugin_id', $fs->get_id() );
|
37 |
|
38 |
if ( $plugin_id != $fs->get_id() ) {
|
39 |
if ( $fs->is_addon_activated( $plugin_id ) ) {
|
@@ -87,7 +104,7 @@
|
|
87 |
}
|
88 |
}
|
89 |
|
90 |
-
$return_url = $fs->_get_sync_license_url(
|
91 |
|
92 |
$query_params = array_merge( $context_params, $_GET, array(
|
93 |
// Current plugin version.
|
@@ -97,8 +114,13 @@
|
|
97 |
// Admin CSS URL for style/design competability.
|
98 |
// 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
|
99 |
) );
|
|
|
|
|
|
|
|
|
|
|
100 |
?>
|
101 |
-
<div id="fs_checkout" class="wrap
|
102 |
<div id="iframe"></div>
|
103 |
<script type="text/javascript">
|
104 |
// http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
|
@@ -153,10 +175,10 @@
|
|
153 |
var
|
154 |
// Keep track of the iframe height.
|
155 |
iframe_height = 800,
|
156 |
-
base_url = '<?php echo
|
157 |
// Pass the parent page URL into the Iframe in a meaningful way (this URL could be
|
158 |
// passed via query string or hard coded into the child page, it depends on your needs).
|
159 |
-
src = base_url + '
|
160 |
|
161 |
// Append the Iframe into the DOM.
|
162 |
iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
|
@@ -177,7 +199,7 @@
|
|
177 |
// Post data to activation URL.
|
178 |
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
179 |
'fs_action' => $slug . '_activate_new',
|
180 |
-
'plugin_id' =>
|
181 |
) ), $slug . '_activate_new' ) ?>', {
|
182 |
user_id : data.user.id,
|
183 |
user_secret_key : data.user.secret_key,
|
@@ -191,7 +213,7 @@
|
|
191 |
FS.PostMessage.receiveOnce('pending_activation', function (data) {
|
192 |
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
193 |
'fs_action' => $slug . '_activate_new',
|
194 |
-
'plugin_id' =>
|
195 |
'pending_activation' => true,
|
196 |
) ), $slug . '_activate_new' ) ?>', {
|
197 |
user_email: data.user_email
|
@@ -211,7 +233,7 @@
|
|
211 |
'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
|
212 |
array(
|
213 |
'fs_action' => $slug . '_activate_new',
|
214 |
-
'plugin_id' =>
|
215 |
|
216 |
) ),
|
217 |
$slug . '_activate_new' )
|
@@ -220,23 +242,20 @@
|
|
220 |
});
|
221 |
|
222 |
FS.PostMessage.receiveOnce('get_dimensions', function (data) {
|
223 |
-
console.debug('receiveOnce', 'get_dimensions');
|
224 |
-
|
225 |
FS.PostMessage.post('dimensions', {
|
226 |
height : $(document.body).height(),
|
227 |
scrollTop: $(document).scrollTop()
|
228 |
}, iframe[0]);
|
229 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
});
|
231 |
})(jQuery);
|
232 |
</script>
|
233 |
-
</div>
|
234 |
-
<?php
|
235 |
-
$params = array(
|
236 |
-
'page' => 'checkout',
|
237 |
-
'module_id' => $fs->get_id(),
|
238 |
-
'module_slug' => $slug,
|
239 |
-
'module_version' => $fs->get_plugin_version(),
|
240 |
-
);
|
241 |
-
fs_require_template( 'powered-by.php', $params );
|
242 |
-
?>
|
15 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
16 |
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
17 |
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
18 |
+
fs_enqueue_local_style( 'fs_checkout', '/admin/checkout.css' );
|
19 |
|
20 |
/**
|
21 |
* @var array $VARS
|
26 |
$timestamp = time();
|
27 |
|
28 |
$context_params = array(
|
29 |
+
'plugin_id' => $fs->get_id(),
|
30 |
+
'plugin_version' => $fs->get_plugin_version(),
|
31 |
+
'public_key' => $fs->get_public_key(),
|
32 |
+
'mode' => 'dashboard',
|
33 |
+
'trial' => fs_request_get_bool( 'trial' ),
|
34 |
);
|
35 |
|
36 |
+
$plan_id = fs_request_get( 'plan_id' );
|
37 |
+
if ( FS_Plugin_Plan::is_valid_id( $plan_id ) ) {
|
38 |
+
$context_params['plan_id'] = $plan_id;
|
39 |
+
}
|
40 |
+
|
41 |
+
$licenses = fs_request_get( 'licenses' );
|
42 |
+
if ( $licenses === strval( intval( $licenses ) ) && $licenses > 0 ) {
|
43 |
+
$context_params['licenses'] = $licenses;
|
44 |
+
}
|
45 |
+
|
46 |
+
$plugin_id = fs_request_get( 'plugin_id' );
|
47 |
+
if ( ! FS_Plugin::is_valid_id( $plugin_id ) ) {
|
48 |
+
$plugin_id = $fs->get_id();
|
49 |
+
}
|
50 |
+
|
51 |
// Get site context secure params.
|
52 |
if ( $fs->is_registered() ) {
|
53 |
+
$site = $fs->get_site();
|
|
|
54 |
|
55 |
if ( $plugin_id != $fs->get_id() ) {
|
56 |
if ( $fs->is_addon_activated( $plugin_id ) ) {
|
104 |
}
|
105 |
}
|
106 |
|
107 |
+
$return_url = $fs->_get_sync_license_url( $plugin_id );
|
108 |
|
109 |
$query_params = array_merge( $context_params, $_GET, array(
|
110 |
// Current plugin version.
|
114 |
// Admin CSS URL for style/design competability.
|
115 |
// 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
|
116 |
) );
|
117 |
+
|
118 |
+
$xdebug_session = fs_request_get( 'XDEBUG_SESSION' );
|
119 |
+
if ( false !== $xdebug_session ) {
|
120 |
+
$query_params['XDEBUG_SESSION'] = $xdebug_session;
|
121 |
+
}
|
122 |
?>
|
123 |
+
<div id="fs_checkout" class="wrap fs-full-size-wrapper">
|
124 |
<div id="iframe"></div>
|
125 |
<script type="text/javascript">
|
126 |
// http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax
|
175 |
var
|
176 |
// Keep track of the iframe height.
|
177 |
iframe_height = 800,
|
178 |
+
base_url = '<?php echo FS_CHECKOUT__ADDRESS ?>',
|
179 |
// Pass the parent page URL into the Iframe in a meaningful way (this URL could be
|
180 |
// passed via query string or hard coded into the child page, it depends on your needs).
|
181 |
+
src = base_url + '/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
|
182 |
|
183 |
// Append the Iframe into the DOM.
|
184 |
iframe = $('<iframe " src="' + src + '" width="100%" height="' + iframe_height + 'px" scrolling="no" frameborder="0" style="background: transparent;"><\/iframe>')
|
199 |
// Post data to activation URL.
|
200 |
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
201 |
'fs_action' => $slug . '_activate_new',
|
202 |
+
'plugin_id' => $plugin_id
|
203 |
) ), $slug . '_activate_new' ) ?>', {
|
204 |
user_id : data.user.id,
|
205 |
user_secret_key : data.user.secret_key,
|
213 |
FS.PostMessage.receiveOnce('pending_activation', function (data) {
|
214 |
$.form('<?php echo fs_nonce_url( $fs->_get_admin_page_url( 'account', array(
|
215 |
'fs_action' => $slug . '_activate_new',
|
216 |
+
'plugin_id' => $plugin_id,
|
217 |
'pending_activation' => true,
|
218 |
) ), $slug . '_activate_new' ) ?>', {
|
219 |
user_email: data.user_email
|
233 |
'activation_url' => fs_nonce_url( $fs->_get_admin_page_url( '',
|
234 |
array(
|
235 |
'fs_action' => $slug . '_activate_new',
|
236 |
+
'plugin_id' => $plugin_id,
|
237 |
|
238 |
) ),
|
239 |
$slug . '_activate_new' )
|
242 |
});
|
243 |
|
244 |
FS.PostMessage.receiveOnce('get_dimensions', function (data) {
|
|
|
|
|
245 |
FS.PostMessage.post('dimensions', {
|
246 |
height : $(document.body).height(),
|
247 |
scrollTop: $(document).scrollTop()
|
248 |
}, iframe[0]);
|
249 |
});
|
250 |
+
|
251 |
+
var updateHeight = function(){
|
252 |
+
iframe.css('min-height', $('#wpwrap').height() + 'px');
|
253 |
+
};
|
254 |
+
|
255 |
+
$(document).ready(updateHeight);
|
256 |
+
|
257 |
+
$(window).resize(updateHeight)
|
258 |
});
|
259 |
})(jQuery);
|
260 |
</script>
|
261 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/pum-sdk/freemius/templates/connect.php
CHANGED
@@ -1,405 +1,407 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
-
* @since 1.0.7
|
7 |
-
*/
|
8 |
-
|
9 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
-
exit;
|
11 |
-
}
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @var array $VARS
|
15 |
-
*/
|
16 |
-
$slug = $VARS['slug'];
|
17 |
-
$fs = freemius( $slug );
|
18 |
-
$is_pending_activation = $fs->is_pending_activation();
|
19 |
-
$is_premium_only = $fs->is_only_premium();
|
20 |
-
$has_paid_plans = $fs->has_paid_plan();
|
21 |
-
$is_premium_code = $fs->is_premium();
|
22 |
-
$is_freemium = $fs->is_freemium();
|
23 |
-
|
24 |
-
$fs->_enqueue_connect_essentials();
|
25 |
-
|
26 |
-
$current_user = Freemius::_get_current_wp_user();
|
27 |
-
|
28 |
-
$first_name = $current_user->user_firstname;
|
29 |
-
if ( empty( $first_name ) ) {
|
30 |
-
$first_name = $current_user->nickname;
|
31 |
-
}
|
32 |
-
|
33 |
-
$site_url = get_site_url();
|
34 |
-
$protocol_pos = strpos( $site_url, '://' );
|
35 |
-
if ( false !== $protocol_pos ) {
|
36 |
-
$site_url = substr( $site_url, $protocol_pos + 3 );
|
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 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
<?php
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
$
|
95 |
-
'
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
$first_name
|
106 |
-
$fs->get_plugin_name()
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
//
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
'<
|
132 |
-
$
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
$
|
137 |
-
|
138 |
-
$
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
<
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
<?php
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
<
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
<?php
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
'
|
187 |
-
'
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
'
|
193 |
-
'
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
'
|
199 |
-
'
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
'
|
205 |
-
'
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
//
|
210 |
-
// '
|
211 |
-
// '
|
212 |
-
//
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
'
|
221 |
-
'
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
<?php
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
<
|
244 |
-
|
245 |
-
|
246 |
-
<
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
$
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
*
|
307 |
-
*
|
308 |
-
*
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
$primaryCta.
|
331 |
-
$
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
*
|
366 |
-
*
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
*
|
381 |
-
*
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
$primaryCta.
|
389 |
-
}
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
*
|
398 |
-
*
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
|
|
|
|
405 |
</script>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.0.7
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @var array $VARS
|
15 |
+
*/
|
16 |
+
$slug = $VARS['slug'];
|
17 |
+
$fs = freemius( $slug );
|
18 |
+
$is_pending_activation = $fs->is_pending_activation();
|
19 |
+
$is_premium_only = $fs->is_only_premium();
|
20 |
+
$has_paid_plans = $fs->has_paid_plan();
|
21 |
+
$is_premium_code = $fs->is_premium();
|
22 |
+
$is_freemium = $fs->is_freemium();
|
23 |
+
|
24 |
+
$fs->_enqueue_connect_essentials();
|
25 |
+
|
26 |
+
$current_user = Freemius::_get_current_wp_user();
|
27 |
+
|
28 |
+
$first_name = $current_user->user_firstname;
|
29 |
+
if ( empty( $first_name ) ) {
|
30 |
+
$first_name = $current_user->nickname;
|
31 |
+
}
|
32 |
+
|
33 |
+
$site_url = get_site_url();
|
34 |
+
$protocol_pos = strpos( $site_url, '://' );
|
35 |
+
if ( false !== $protocol_pos ) {
|
36 |
+
$site_url = substr( $site_url, $protocol_pos + 3 );
|
37 |
+
}
|
38 |
+
|
39 |
+
$freemius_site_www = 'https://freemius.com';
|
40 |
+
|
41 |
+
$freemius_site_url = $freemius_site_www . '/' . ($fs->has_paid_plan() ?
|
42 |
+
'wordpress/' :
|
43 |
+
// Insights platform information.
|
44 |
+
'wordpress/usage-tracking/');
|
45 |
+
|
46 |
+
$freemius_site_url .= '?' . http_build_query( array(
|
47 |
+
'id' => $fs->get_id(),
|
48 |
+
'slug' => $slug,
|
49 |
+
) );
|
50 |
+
|
51 |
+
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="1">freemius.com</a>';
|
52 |
+
|
53 |
+
$error = fs_request_get( 'error' );
|
54 |
+
|
55 |
+
$require_license_key = $is_premium_only ||
|
56 |
+
( $is_freemium && $is_premium_code && fs_request_get_bool( 'require_license', true ) );
|
57 |
+
|
58 |
+
if ( $is_pending_activation ) {
|
59 |
+
$require_license_key = false;
|
60 |
+
}
|
61 |
+
|
62 |
+
if ( $require_license_key ) {
|
63 |
+
$fs->_add_license_activation_dialog_box();
|
64 |
+
}
|
65 |
+
|
66 |
+
$fs_user = Freemius::_get_user_by_email( $current_user->user_email );
|
67 |
+
$activate_with_current_user = is_object( $fs_user ) && ! $is_pending_activation;
|
68 |
+
?>
|
69 |
+
<div id="fs_connect"
|
70 |
+
class="wrap<?php if ( ! $fs->is_enable_anonymous() || $is_pending_activation || $require_license_key ) {
|
71 |
+
echo ' fs-anonymous-disabled';
|
72 |
+
} ?>">
|
73 |
+
<div class="fs-visual">
|
74 |
+
<b class="fs-site-icon"><i class="dashicons dashicons-wordpress"></i></b>
|
75 |
+
<i class="dashicons dashicons-plus fs-first"></i>
|
76 |
+
<?php
|
77 |
+
$vars = array( 'slug' => $slug );
|
78 |
+
fs_require_once_template( 'plugin-icon.php', $vars );
|
79 |
+
?>
|
80 |
+
<i class="dashicons dashicons-plus fs-second"></i>
|
81 |
+
<img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
|
82 |
+
</div>
|
83 |
+
<div class="fs-content">
|
84 |
+
<?php if ( ! empty( $error ) ) : ?>
|
85 |
+
<p class="fs-error"><?php echo esc_html( $error ) ?></p>
|
86 |
+
<?php endif ?>
|
87 |
+
<p><?php
|
88 |
+
$button_label = 'opt-in-connect';
|
89 |
+
|
90 |
+
if ( $is_pending_activation ) {
|
91 |
+
$button_label = 'resend-activation-email';
|
92 |
+
|
93 |
+
echo $fs->apply_filters( 'pending_activation_message', sprintf(
|
94 |
+
__fs( 'thanks-x', $slug ) . '<br>' .
|
95 |
+
__fs( 'pending-activation-message', $slug ),
|
96 |
+
$first_name,
|
97 |
+
'<b>' . $fs->get_plugin_name() . '</b>',
|
98 |
+
'<b>' . $current_user->user_email . '</b>',
|
99 |
+
__fs( 'complete-the-install', $slug )
|
100 |
+
) );
|
101 |
+
} else if ( $require_license_key ) {
|
102 |
+
$button_label = 'agree-activate-license';
|
103 |
+
|
104 |
+
echo $fs->apply_filters( 'connect-message_on-premium',
|
105 |
+
sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
|
106 |
+
sprintf( __fs( 'thanks-for-purchasing', $slug ), '<b>' . $fs->get_plugin_name() . '</b>' ),
|
107 |
+
$first_name,
|
108 |
+
$fs->get_plugin_name()
|
109 |
+
);
|
110 |
+
} else {
|
111 |
+
$filter = 'connect_message';
|
112 |
+
$default_optin_message = 'connect-message';
|
113 |
+
|
114 |
+
if ( $fs->is_plugin_update() ) {
|
115 |
+
// If Freemius was added on a plugin update, set different
|
116 |
+
// opt-in message.
|
117 |
+
$default_optin_message = 'connect-message_on-update';
|
118 |
+
|
119 |
+
// If user customized the opt-in message on update, use
|
120 |
+
// that message. Otherwise, fallback to regular opt-in
|
121 |
+
// custom message if exist.
|
122 |
+
if ( $fs->has_filter( 'connect_message_on_update' ) ) {
|
123 |
+
$filter = 'connect_message_on_update';
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
echo $fs->apply_filters( $filter,
|
128 |
+
sprintf( __fs( 'hey-x', $slug ), $first_name ) . '<br>' .
|
129 |
+
sprintf(
|
130 |
+
__fs( $default_optin_message, $slug ),
|
131 |
+
'<b>' . $fs->get_plugin_name() . '</b>',
|
132 |
+
'<b>' . $current_user->user_login . '</b>',
|
133 |
+
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
134 |
+
$freemius_link
|
135 |
+
),
|
136 |
+
$first_name,
|
137 |
+
$fs->get_plugin_name(),
|
138 |
+
$current_user->user_login,
|
139 |
+
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
140 |
+
$freemius_link
|
141 |
+
);
|
142 |
+
}
|
143 |
+
?></p>
|
144 |
+
<?php if ( $require_license_key ) : ?>
|
145 |
+
<div class="fs-license-key-container">
|
146 |
+
<input id="fs_license_key" name="fs_key" type="text" required maxlength="32"
|
147 |
+
placeholder="<?php _efs( 'license-key', $slug ) ?>" tabindex="1"/>
|
148 |
+
<i class="dashicons dashicons-admin-network"></i>
|
149 |
+
<a class="show-license-resend-modal show-license-resend-modal-<?php echo $slug; ?>"
|
150 |
+
href="#"><?php _efs( 'cant-find-license-key' ); ?></a>
|
151 |
+
</div>
|
152 |
+
<?php endif ?>
|
153 |
+
</div>
|
154 |
+
<div class="fs-actions">
|
155 |
+
<?php if ( $fs->is_enable_anonymous() && ! $is_pending_activation && ! $require_license_key ) : ?>
|
156 |
+
<a href="<?php echo fs_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
|
157 |
+
class="button button-secondary" tabindex="2"><?php _efs( 'skip', $slug ) ?></a>
|
158 |
+
<?php endif ?>
|
159 |
+
|
160 |
+
<?php if ( $activate_with_current_user ) : ?>
|
161 |
+
<form action="" method="POST">
|
162 |
+
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
|
163 |
+
<?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
|
164 |
+
<button class="button button-primary" tabindex="1"
|
165 |
+
type="submit"<?php if ( $require_license_key ) {
|
166 |
+
echo ' disabled="disabled"';
|
167 |
+
} ?>><?php _efs( $button_label, $slug ) ?></button>
|
168 |
+
</form>
|
169 |
+
<?php else : ?>
|
170 |
+
<form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
|
171 |
+
<?php $params = $fs->get_opt_in_params() ?>
|
172 |
+
<?php foreach ( $params as $name => $value ) : ?>
|
173 |
+
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
174 |
+
<?php endforeach ?>
|
175 |
+
<button class="button button-primary" tabindex="1"
|
176 |
+
type="submit"<?php if ( $require_license_key ) {
|
177 |
+
echo ' disabled="disabled"';
|
178 |
+
} ?>><?php _efs( $button_label, $slug ) ?></button>
|
179 |
+
</form>
|
180 |
+
<?php endif ?>
|
181 |
+
</div><?php
|
182 |
+
|
183 |
+
// Set core permission list items.
|
184 |
+
$permissions = array(
|
185 |
+
'profile' => array(
|
186 |
+
'icon-class' => 'dashicons dashicons-admin-users',
|
187 |
+
'label' => __fs( 'permissions-profile' ),
|
188 |
+
'desc' => __fs( 'permissions-profile_desc' ),
|
189 |
+
'priority' => 5,
|
190 |
+
),
|
191 |
+
'site' => array(
|
192 |
+
'icon-class' => 'dashicons dashicons-admin-settings',
|
193 |
+
'label' => __fs( 'permissions-site' ),
|
194 |
+
'desc' => __fs( 'permissions-site_desc' ),
|
195 |
+
'priority' => 10,
|
196 |
+
),
|
197 |
+
'notices' => array(
|
198 |
+
'icon-class' => 'dashicons dashicons-testimonial',
|
199 |
+
'label' => __fs( 'permissions-admin-notices' ),
|
200 |
+
'desc' => __fs( 'permissions-newsletter_desc' ),
|
201 |
+
'priority' => 13,
|
202 |
+
),
|
203 |
+
'events' => array(
|
204 |
+
'icon-class' => 'dashicons dashicons-admin-plugins',
|
205 |
+
'label' => __fs( 'permissions-events' ),
|
206 |
+
'desc' => __fs( 'permissions-events_desc' ),
|
207 |
+
'priority' => 20,
|
208 |
+
),
|
209 |
+
// 'plugins_themes' => array(
|
210 |
+
// 'icon-class' => 'dashicons dashicons-admin-settings',
|
211 |
+
// 'label' => __fs( 'permissions-plugins_themes' ),
|
212 |
+
// 'desc' => __fs( 'permissions-plugins_themes_desc' ),
|
213 |
+
// 'priority' => 30,
|
214 |
+
// ),
|
215 |
+
);
|
216 |
+
|
217 |
+
// Add newsletter permissions if enabled.
|
218 |
+
if ( $fs->is_permission_requested( 'newsletter' ) ) {
|
219 |
+
$permissions['newsletter'] = array(
|
220 |
+
'icon-class' => 'dashicons dashicons-email-alt',
|
221 |
+
'label' => __fs( 'permissions-newsletter' ),
|
222 |
+
'desc' => __fs( 'permissions-newsletter_desc' ),
|
223 |
+
'priority' => 15,
|
224 |
+
);
|
225 |
+
}
|
226 |
+
|
227 |
+
// Allow filtering of the permissions list.
|
228 |
+
$permissions = $fs->apply_filters( 'permission_list', $permissions );
|
229 |
+
|
230 |
+
// Sort by priority.
|
231 |
+
uasort( $permissions, 'fs_sort_by_priority' );
|
232 |
+
|
233 |
+
if ( ! empty( $permissions ) ) : ?>
|
234 |
+
<div class="fs-permissions">
|
235 |
+
<?php if ( $require_license_key ) : ?>
|
236 |
+
<p class="fs-license-sync-disclaimer"><?php printf( __fs( 'license-sync-disclaimer', $slug ), $freemius_link ) ?></p>
|
237 |
+
<?php endif ?>
|
238 |
+
<a class="fs-trigger" href="#" tabindex="1"><?php _efs( 'what-permissions', $slug ) ?></a>
|
239 |
+
<ul><?php
|
240 |
+
foreach ( $permissions as $id => $permission ) : ?>
|
241 |
+
<li id="fs-permission-<?php echo esc_attr( $id ); ?>"
|
242 |
+
class="fs-permission fs-<?php echo esc_attr( $id ); ?>">
|
243 |
+
<i class="<?php echo esc_attr( $permission['icon-class'] ); ?>"></i>
|
244 |
+
|
245 |
+
<div>
|
246 |
+
<span><?php echo esc_html( $permission['label'] ); ?></span>
|
247 |
+
|
248 |
+
<p><?php echo esc_html( $permission['desc'] ); ?></p>
|
249 |
+
</div>
|
250 |
+
</li>
|
251 |
+
<?php endforeach; ?>
|
252 |
+
</ul>
|
253 |
+
</div>
|
254 |
+
<?php endif ?>
|
255 |
+
<?php if ( $is_premium_code && $is_freemium ) : ?>
|
256 |
+
<div class="fs-freemium-licensing">
|
257 |
+
<p>
|
258 |
+
<?php if ( $require_license_key ) : ?>
|
259 |
+
<?php _efs( 'dont-have-license-key', $slug ) ?>
|
260 |
+
<a data-require-license="false" tabindex="1"><?php _efs( 'activate-free-version', $slug ) ?></a>
|
261 |
+
<?php else : ?>
|
262 |
+
<?php _efs( 'have-license-key', $slug ) ?>
|
263 |
+
<a data-require-license="true" tabindex="1"><?php _efs( 'activate-license', $slug ) ?></a>
|
264 |
+
<?php endif ?>
|
265 |
+
</p>
|
266 |
+
</div>
|
267 |
+
<?php endif ?>
|
268 |
+
<div class="fs-terms">
|
269 |
+
<a href="https://freemius.com/privacy/" target="_blank"
|
270 |
+
tabindex="1"><?php _efs( 'privacy-policy', $slug ) ?></a>
|
271 |
+
-
|
272 |
+
<a href="<?php echo $freemius_site_www ?>/terms/" target="_blank" tabindex="1"><?php _efs( 'tos', $slug ) ?></a>
|
273 |
+
</div>
|
274 |
+
</div>
|
275 |
+
<script type="text/javascript">
|
276 |
+
(function ($) {
|
277 |
+
var $primaryCta = $('.fs-actions .button.button-primary'),
|
278 |
+
$form = $('.fs-actions form'),
|
279 |
+
requireLicenseKey = <?php echo $require_license_key ? 'true' : 'false' ?>,
|
280 |
+
hasContextUser = <?php echo $activate_with_current_user ? 'true' : 'false' ?>,
|
281 |
+
$licenseSecret,
|
282 |
+
$licenseKeyInput = $('#fs_license_key');
|
283 |
+
|
284 |
+
$('.fs-actions .button').on('click', function () {
|
285 |
+
// Set loading mode.
|
286 |
+
$(document.body).css({'cursor': 'wait'});
|
287 |
+
|
288 |
+
var $this = $(this);
|
289 |
+
$this.css({'cursor': 'wait'});
|
290 |
+
|
291 |
+
setTimeout(function () {
|
292 |
+
$this.attr('disabled', 'disabled');
|
293 |
+
}, 200);
|
294 |
+
});
|
295 |
+
|
296 |
+
$form.on('submit', function () {
|
297 |
+
/**
|
298 |
+
* @author Vova Feldman (@svovaf)
|
299 |
+
* @since 1.1.9
|
300 |
+
*/
|
301 |
+
if (requireLicenseKey) {
|
302 |
+
if (!hasContextUser) {
|
303 |
+
$('.fs-error').remove();
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Use the AJAX opt-in when license key is required to potentially
|
307 |
+
* process the after install failure hook.
|
308 |
+
*
|
309 |
+
* @author Vova Feldman (@svovaf)
|
310 |
+
* @since 1.2.1.5
|
311 |
+
*/
|
312 |
+
$.ajax({
|
313 |
+
url : ajaxurl,
|
314 |
+
method : 'POST',
|
315 |
+
data : {
|
316 |
+
action : 'fs_activate_license_<?php echo $slug ?>',
|
317 |
+
slug : '<?php echo $slug ?>',
|
318 |
+
license_key: $licenseKeyInput.val()
|
319 |
+
},
|
320 |
+
success: function (result) {
|
321 |
+
var resultObj = $.parseJSON(result);
|
322 |
+
if (resultObj.success) {
|
323 |
+
// Redirect to the "Account" page and sync the license.
|
324 |
+
window.location.href = resultObj.next_page;
|
325 |
+
} else {
|
326 |
+
// Show error.
|
327 |
+
$('.fs-content').prepend('<p class="fs-error">' + resultObj.error + '</p>');
|
328 |
+
|
329 |
+
// Reset loading mode.
|
330 |
+
$primaryCta.removeClass('fs-loading').css({'cursor': 'auto'});
|
331 |
+
$primaryCta.html(<?php echo json_encode(__fs( $button_label, $slug )) ?>);
|
332 |
+
$primaryCta.prop('disabled', false);
|
333 |
+
$(document.body).css({'cursor': 'auto'});
|
334 |
+
}
|
335 |
+
}
|
336 |
+
});
|
337 |
+
|
338 |
+
return false;
|
339 |
+
}
|
340 |
+
else {
|
341 |
+
if (null == $licenseSecret) {
|
342 |
+
$licenseSecret = $('<input type="hidden" name="license_secret_key" value="" />');
|
343 |
+
$form.append($licenseSecret);
|
344 |
+
}
|
345 |
+
|
346 |
+
// Update secret key if premium only plugin.
|
347 |
+
$licenseSecret.val($licenseKeyInput.val());
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
return true;
|
352 |
+
});
|
353 |
+
|
354 |
+
$primaryCta.on('click', function () {
|
355 |
+
$(this).addClass('fs-loading');
|
356 |
+
$(this).html(<?php echo json_encode(__fs( $is_pending_activation ? 'sending-email' : 'activating' , $slug )) ?> +'...');
|
357 |
+
});
|
358 |
+
|
359 |
+
$('.fs-permissions .fs-trigger').on('click', function () {
|
360 |
+
$('.fs-permissions').toggleClass('fs-open');
|
361 |
+
});
|
362 |
+
|
363 |
+
if (requireLicenseKey) {
|
364 |
+
/**
|
365 |
+
* Submit license key on enter.
|
366 |
+
*
|
367 |
+
* @author Vova Feldman (@svovaf)
|
368 |
+
* @since 1.1.9
|
369 |
+
*/
|
370 |
+
$licenseKeyInput.keypress(function (e) {
|
371 |
+
if (e.which == 13) {
|
372 |
+
if ('' !== $(this).val()) {
|
373 |
+
$primaryCta.click();
|
374 |
+
return false;
|
375 |
+
}
|
376 |
+
}
|
377 |
+
});
|
378 |
+
|
379 |
+
/**
|
380 |
+
* Disable activation button when empty license key.
|
381 |
+
*
|
382 |
+
* @author Vova Feldman (@svovaf)
|
383 |
+
* @since 1.1.9
|
384 |
+
*/
|
385 |
+
$licenseKeyInput.on('keyup paste delete cut', function () {
|
386 |
+
setTimeout(function () {
|
387 |
+
if ('' === $licenseKeyInput.val()) {
|
388 |
+
$primaryCta.attr('disabled', 'disabled');
|
389 |
+
} else {
|
390 |
+
$primaryCta.prop('disabled', false);
|
391 |
+
}
|
392 |
+
}, 100);
|
393 |
+
}).focus();
|
394 |
+
}
|
395 |
+
|
396 |
+
/**
|
397 |
+
* Set license mode trigger URL.
|
398 |
+
*
|
399 |
+
* @author Vova Feldman (@svovaf)
|
400 |
+
* @since 1.1.9
|
401 |
+
*/
|
402 |
+
var $connectLicenseModeTrigger = $('#fs_connect .fs-freemium-licensing a');
|
403 |
+
if ($connectLicenseModeTrigger.length > 0) {
|
404 |
+
$connectLicenseModeTrigger.attr('href', window.location.href + '&require_license=' + $connectLicenseModeTrigger.attr('data-require-license'))
|
405 |
+
}
|
406 |
+
})(jQuery);
|
407 |
</script>
|
includes/pum-sdk/freemius/templates/debug.php
CHANGED
@@ -14,70 +14,70 @@
|
|
14 |
|
15 |
$fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
16 |
?>
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
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 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
</
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
</
|
78 |
-
</
|
79 |
-
|
80 |
-
</
|
|
|
81 |
<?php
|
82 |
if ( ! defined( 'FS_API__ADDRESS' ) ) {
|
83 |
define( 'FS_API__ADDRESS', '://api.freemius.com' );
|
@@ -109,51 +109,51 @@
|
|
109 |
),
|
110 |
)
|
111 |
?>
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
} ?>>
|
126 |
-
<td><?php echo $p['key'] ?></td>
|
127 |
-
<td><?php echo $p['val'] ?></td>
|
128 |
-
</tr>
|
129 |
-
<?php $alternate = ! $alternate ?>
|
130 |
-
<?php endforeach ?>
|
131 |
-
</tbody>
|
132 |
-
</table>
|
133 |
-
<h2><?php _efs( 'sdk-versions' ) ?></h2>
|
134 |
-
<table id="fs_sdks" class="widefat">
|
135 |
-
<thead>
|
136 |
-
<tr>
|
137 |
-
<th><?php _efs( 'version' ) ?></th>
|
138 |
-
<th><?php _efs( 'sdk-path' ) ?></th>
|
139 |
-
<th><?php _efs( 'plugin-path' ) ?></th>
|
140 |
-
<th><?php _efs( 'is-active' ) ?></th>
|
141 |
-
</tr>
|
142 |
-
</thead>
|
143 |
-
<tbody>
|
144 |
-
<?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
|
145 |
-
<?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
|
146 |
-
<tr<?php if ( $is_active ) {
|
147 |
-
echo ' style="background: #E6FFE6; font-weight: bold"';
|
148 |
} ?>>
|
149 |
-
<td><?php echo $
|
150 |
-
<td><?php echo $
|
151 |
-
<td><?php echo $data->plugin_path ?></td>
|
152 |
-
<td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
|
153 |
</tr>
|
|
|
154 |
<?php endforeach ?>
|
155 |
-
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
<?php $plugins = $fs_options->get_option( 'plugins' ) ?>
|
158 |
<?php if ( is_array( $plugins ) && 0 < count( $plugins ) ) : ?>
|
159 |
<h2><?php _efs( 'plugins' ) ?></h2>
|
@@ -176,9 +176,9 @@
|
|
176 |
<?php $is_active = is_plugin_active( $data->file ) ?>
|
177 |
<?php $fs = $is_active ? freemius( $slug ) : null ?>
|
178 |
<tr<?php if ( $is_active ) {
|
179 |
-
if ($fs->has_api_connectivity() && $fs->is_on()) {
|
180 |
echo ' style="background: #E6FFE6; font-weight: bold"';
|
181 |
-
}else{
|
182 |
echo ' style="background: #ffd0d0; font-weight: bold"';
|
183 |
}
|
184 |
} ?>>
|
@@ -203,13 +203,15 @@
|
|
203 |
<td><?php echo $data->file ?></td>
|
204 |
<td><?php echo $data->public_key ?></td>
|
205 |
<td>
|
206 |
-
<?php if ($is_active && $fs->has_trial_plan()) : ?>
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
|
212 |
-
|
|
|
|
|
213 |
<?php endif ?>
|
214 |
</td>
|
215 |
</tr>
|
@@ -320,6 +322,7 @@
|
|
320 |
</tbody>
|
321 |
</table>
|
322 |
<?php endif ?>
|
|
|
323 |
<?php
|
324 |
/**
|
325 |
* @var FS_Plugin_License[] $licenses
|
@@ -364,4 +367,177 @@
|
|
364 |
<?php endforeach ?>
|
365 |
</tbody>
|
366 |
</table>
|
367 |
-
<?php endif ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
15 |
$fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
16 |
?>
|
17 |
+
<h1><?php echo __fs( 'Freemius Debug' ) . ' - ' . __fs( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
|
18 |
+
<div>
|
19 |
+
<!-- Debugging Switch -->
|
20 |
+
<?php //$debug_mode = get_option( 'fs_debug_mode', null ) ?>
|
21 |
+
<span class="switch-label"><?php _efs( 'debugging' ) ?></span>
|
22 |
+
|
23 |
+
<div class="switch <?php echo WP_FS__DEBUG_SDK ? 'off' : 'on' ?>">
|
24 |
+
<div class="toggle"></div>
|
25 |
+
<span class="on"><?php _efs( 'on' ) ?></span>
|
26 |
+
<span class="off"><?php _efs( 'off' ) ?></span>
|
27 |
+
</div>
|
28 |
+
<script type="text/javascript">
|
29 |
+
(function ($) {
|
30 |
+
$(document).ready(function () {
|
31 |
+
// Switch toggle
|
32 |
+
$('.switch').click(function () {
|
33 |
+
$(this)
|
34 |
+
.toggleClass('on')
|
35 |
+
.toggleClass('off');
|
36 |
+
|
37 |
+
$.post(ajaxurl, {
|
38 |
+
action: 'fs_toggle_debug_mode',
|
39 |
+
is_on : ($(this).hasClass('off') ? 1 : 0)
|
40 |
+
}, function (response) {
|
41 |
+
if (1 == response) {
|
42 |
+
// Refresh page on success.
|
43 |
+
location.reload();
|
44 |
+
}
|
|
|
45 |
});
|
46 |
});
|
47 |
+
});
|
48 |
+
}(jQuery));
|
49 |
+
</script>
|
50 |
+
</div>
|
51 |
+
<h2><?php _efs( 'actions' ) ?></h2>
|
52 |
+
<table>
|
53 |
+
<tbody>
|
54 |
+
<tr>
|
55 |
+
<td>
|
56 |
+
<!-- Delete All Accounts -->
|
57 |
+
<form action="" method="POST">
|
58 |
+
<input type="hidden" name="fs_action" value="restart_freemius">
|
59 |
+
<?php wp_nonce_field( 'restart_freemius' ) ?>
|
60 |
+
<button class="button button-primary"
|
61 |
+
onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
|
62 |
+
</form>
|
63 |
+
</td>
|
64 |
+
<td>
|
65 |
+
<!-- Clear API Cache -->
|
66 |
+
<form action="" method="POST">
|
67 |
+
<input type="hidden" name="fs_clear_api_cache" value="true">
|
68 |
+
<button class="button button-primary"><?php _efs( 'clear-api-cache' ) ?></button>
|
69 |
+
</form>
|
70 |
+
</td>
|
71 |
+
<td>
|
72 |
+
<!-- Sync Data with Server -->
|
73 |
+
<form action="" method="POST">
|
74 |
+
<input type="hidden" name="background_sync" value="true">
|
75 |
+
<button class="button button-primary"><?php _efs( 'sync-data-from-server' ) ?></button>
|
76 |
+
</form>
|
77 |
+
</td>
|
78 |
+
</tr>
|
79 |
+
</tbody>
|
80 |
+
</table>
|
81 |
<?php
|
82 |
if ( ! defined( 'FS_API__ADDRESS' ) ) {
|
83 |
define( 'FS_API__ADDRESS', '://api.freemius.com' );
|
109 |
),
|
110 |
)
|
111 |
?>
|
112 |
+
<br>
|
113 |
+
<table class="widefat">
|
114 |
+
<thead>
|
115 |
+
<tr>
|
116 |
+
<th><?php _efs( 'key' ) ?></th>
|
117 |
+
<th><?php _efs( 'value' ) ?></th>
|
118 |
+
</tr>
|
119 |
+
</thead>
|
120 |
+
<tbody>
|
121 |
+
<?php $alternate = false;
|
122 |
+
foreach ( $defines as $p ) : ?>
|
123 |
+
<tr<?php if ( $alternate ) {
|
124 |
+
echo ' class="alternate"';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
} ?>>
|
126 |
+
<td><?php echo $p['key'] ?></td>
|
127 |
+
<td><?php echo $p['val'] ?></td>
|
|
|
|
|
128 |
</tr>
|
129 |
+
<?php $alternate = ! $alternate ?>
|
130 |
<?php endforeach ?>
|
131 |
+
</tbody>
|
132 |
+
</table>
|
133 |
+
<h2><?php _efs( 'sdk-versions' ) ?></h2>
|
134 |
+
<table id="fs_sdks" class="widefat">
|
135 |
+
<thead>
|
136 |
+
<tr>
|
137 |
+
<th><?php _efs( 'version' ) ?></th>
|
138 |
+
<th><?php _efs( 'sdk-path' ) ?></th>
|
139 |
+
<th><?php _efs( 'plugin-path' ) ?></th>
|
140 |
+
<th><?php _efs( 'is-active' ) ?></th>
|
141 |
+
</tr>
|
142 |
+
</thead>
|
143 |
+
<tbody>
|
144 |
+
<?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
|
145 |
+
<?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
|
146 |
+
<tr<?php if ( $is_active ) {
|
147 |
+
echo ' style="background: #E6FFE6; font-weight: bold"';
|
148 |
+
} ?>>
|
149 |
+
<td><?php echo $data->version ?></td>
|
150 |
+
<td><?php echo $sdk_path ?></td>
|
151 |
+
<td><?php echo $data->plugin_path ?></td>
|
152 |
+
<td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
|
153 |
+
</tr>
|
154 |
+
<?php endforeach ?>
|
155 |
+
</tbody>
|
156 |
+
</table>
|
157 |
<?php $plugins = $fs_options->get_option( 'plugins' ) ?>
|
158 |
<?php if ( is_array( $plugins ) && 0 < count( $plugins ) ) : ?>
|
159 |
<h2><?php _efs( 'plugins' ) ?></h2>
|
176 |
<?php $is_active = is_plugin_active( $data->file ) ?>
|
177 |
<?php $fs = $is_active ? freemius( $slug ) : null ?>
|
178 |
<tr<?php if ( $is_active ) {
|
179 |
+
if ( $fs->has_api_connectivity() && $fs->is_on() ) {
|
180 |
echo ' style="background: #E6FFE6; font-weight: bold"';
|
181 |
+
} else {
|
182 |
echo ' style="background: #ffd0d0; font-weight: bold"';
|
183 |
}
|
184 |
} ?>>
|
203 |
<td><?php echo $data->file ?></td>
|
204 |
<td><?php echo $data->public_key ?></td>
|
205 |
<td>
|
206 |
+
<?php if ( $is_active && $fs->has_trial_plan() ) : ?>
|
207 |
+
<form action="" method="POST">
|
208 |
+
<input type="hidden" name="fs_action" value="simulate_trial">
|
209 |
+
<input type="hidden" name="slug" value="<?php echo $slug ?>">
|
210 |
+
<?php wp_nonce_field( 'simulate_trial' ) ?>
|
211 |
|
212 |
+
<button type="submit"
|
213 |
+
class="button button-primary simulate-trial"><?php _efs( 'Simulate Trial' ) ?></button>
|
214 |
+
</form>
|
215 |
<?php endif ?>
|
216 |
</td>
|
217 |
</tr>
|
322 |
</tbody>
|
323 |
</table>
|
324 |
<?php endif ?>
|
325 |
+
|
326 |
<?php
|
327 |
/**
|
328 |
* @var FS_Plugin_License[] $licenses
|
367 |
<?php endforeach ?>
|
368 |
</tbody>
|
369 |
</table>
|
370 |
+
<?php endif ?>
|
371 |
+
|
372 |
+
<?php if ( FS_Logger::is_storage_logging_on() ) : ?>
|
373 |
+
|
374 |
+
<h2><?php _efs( 'debug-log' ) ?></h2>
|
375 |
+
|
376 |
+
<div id="fs_debug_filters">
|
377 |
+
<select name="type">
|
378 |
+
<option value="" selected="selected"><?php _efs( 'all-types' ) ?></option>
|
379 |
+
<option value="warn_error">Warnings & Errors</option>
|
380 |
+
<option value="error">Errors</option>
|
381 |
+
<option value="warn">Warnings</option>
|
382 |
+
<option value="info">Info</option>
|
383 |
+
</select>
|
384 |
+
<select name="request_type">
|
385 |
+
<option value="" selected="selected"><?php _efs( 'all-requests' ) ?></option>
|
386 |
+
<option value="call">Sync</option>
|
387 |
+
<option value="ajax">AJAX</option>
|
388 |
+
<option value="cron">WP Cron</option>
|
389 |
+
</select>
|
390 |
+
<input name="file" type="text" placeholder="<?php _efs( 'file' ) ?>"/>
|
391 |
+
<input name="function" type="text" placeholder="<?php _efs( 'function' ) ?>"/>
|
392 |
+
<input name="process_id" type="text" placeholder="<?php _efs( 'process-id' ) ?>"/>
|
393 |
+
<input name="logger" type="text" placeholder="<?php _efs( 'logger' ) ?>"/>
|
394 |
+
<input name="message" type="text" placeholder="<?php _efs( 'message' ) ?>"/>
|
395 |
+
<div style="margin: 10px 0">
|
396 |
+
<button id="fs_filter" class="button" style="float: left"><i class="dashicons dashicons-filter"></i> <?php _efs( 'filter' ) ?>
|
397 |
+
</button>
|
398 |
+
|
399 |
+
<form action="" method="POST" style="float: left; margin-left: 10px;">
|
400 |
+
<input type="hidden" name="fs_action" value="download_logs">
|
401 |
+
<?php wp_nonce_field( 'download_logs' ) ?>
|
402 |
+
<div class="fs-filters"></div>
|
403 |
+
<button id="fs_download" class="button" type="submit"><i
|
404 |
+
class="dashicons dashicons-download"></i> <?php _efs( 'download' ) ?></button>
|
405 |
+
</form>
|
406 |
+
<div style="clear: both"></div>
|
407 |
+
</div>
|
408 |
+
</div>
|
409 |
+
|
410 |
+
<div id="fs_log_book" style="height: 300px; overflow: auto;">
|
411 |
+
<table class="widefat">
|
412 |
+
<thead>
|
413 |
+
<tr>
|
414 |
+
<th>#</th>
|
415 |
+
<th><?php _efs( 'type' ) ?></th>
|
416 |
+
<th><?php _efs( 'id' ) ?></th>
|
417 |
+
<th><?php _efs( 'function' ) ?></th>
|
418 |
+
<th><?php _efs( 'message' ) ?></th>
|
419 |
+
<th><?php _efs( 'file' ) ?></th>
|
420 |
+
<th><?php _efs( 'timestamp' ) ?></th>
|
421 |
+
</tr>
|
422 |
+
</thead>
|
423 |
+
<tbody>
|
424 |
+
<tr style="display: none">
|
425 |
+
<td>{$log.log_order}.</td>
|
426 |
+
<td class="fs-col--type">{$log.type}</td>
|
427 |
+
<td class="fs-col--logger">{$log.logger}</td>
|
428 |
+
<td class="fs-col--function">{$log.function}</td>
|
429 |
+
<td class="fs-col--message">
|
430 |
+
<a href="#" onclick="jQuery(this).parent().find('div').toggle(); return false;">
|
431 |
+
<nobr>{$log.message_short}</nobr>
|
432 |
+
</a>
|
433 |
+
<div style="display: none;">{$log.message}</div>
|
434 |
+
</td>
|
435 |
+
<td class="fs-col--file">{$log.file}:{$log.line}</td>
|
436 |
+
<td class="fs-col--timestamp">{$log.created}</td>
|
437 |
+
</tr>
|
438 |
+
|
439 |
+
</tbody>
|
440 |
+
</table>
|
441 |
+
</div>
|
442 |
+
<script type="text/javascript">
|
443 |
+
jQuery(document).ready(function ($) {
|
444 |
+
var filtersChanged = false,
|
445 |
+
offset = 0,
|
446 |
+
limit = 200,
|
447 |
+
prevFiltersSignature = null;
|
448 |
+
|
449 |
+
var getFilters = function () {
|
450 |
+
var filters = {},
|
451 |
+
signature = '';
|
452 |
+
|
453 |
+
$('#fs_debug_filters').find('select, input').each(function (i, e) {
|
454 |
+
var $element = $(e);
|
455 |
+
|
456 |
+
if ('hidden' === $element.attr('type'))
|
457 |
+
return;
|
458 |
+
|
459 |
+
var val = $element.val();
|
460 |
+
if ('' !== val.trim()) {
|
461 |
+
var name = $(e).attr('name');
|
462 |
+
filters[name] = val;
|
463 |
+
signature += name + '=' + val + '~';
|
464 |
+
}
|
465 |
+
});
|
466 |
+
|
467 |
+
if (signature != prevFiltersSignature) {
|
468 |
+
filtersChanged = true;
|
469 |
+
prevFiltersSignature = signature;
|
470 |
+
} else {
|
471 |
+
filtersChanged = false;
|
472 |
+
}
|
473 |
+
|
474 |
+
return filters;
|
475 |
+
};
|
476 |
+
|
477 |
+
$('#fs_download').parent().submit(function () {
|
478 |
+
var filters = getFilters(),
|
479 |
+
hiddenFields = '';
|
480 |
+
|
481 |
+
for (var f in filters) {
|
482 |
+
if (filters.hasOwnProperty(f)) {
|
483 |
+
hiddenFields += '<input type="hidden" name="filters[' + f + ']" value="' + filters[f] + '" />';
|
484 |
+
}
|
485 |
+
}
|
486 |
+
|
487 |
+
$(this).find('.fs-filters').html(hiddenFields);
|
488 |
+
});
|
489 |
+
|
490 |
+
var loadLogs = function () {
|
491 |
+
var $tbody = $('#fs_log_book tbody'),
|
492 |
+
template = $tbody.find('tr:first-child').html(),
|
493 |
+
filters = getFilters();
|
494 |
+
|
495 |
+
if (!filtersChanged) {
|
496 |
+
offset += limit;
|
497 |
+
} else {
|
498 |
+
// Cleanup table for new filter (only keep template row).
|
499 |
+
$tbody.find('tr').each(function(i, e){
|
500 |
+
if (0 == i)
|
501 |
+
return;
|
502 |
+
|
503 |
+
$(e).remove();
|
504 |
+
});
|
505 |
+
|
506 |
+
offset = 0;
|
507 |
+
}
|
508 |
+
|
509 |
+
$.post(ajaxurl, {
|
510 |
+
action : 'fs_get_debug_log',
|
511 |
+
filters: filters,
|
512 |
+
offset: offset,
|
513 |
+
limit: limit
|
514 |
+
}, function (response) {
|
515 |
+
|
516 |
+
for (var i = 0; i < response.data.length; i++) {
|
517 |
+
var templateCopy = template;
|
518 |
+
|
519 |
+
response.data[i].message_short = (response.data[i].message.length > 32) ?
|
520 |
+
response.data[i].message.substr(0, 32) + '...' :
|
521 |
+
response.data[i].message;
|
522 |
+
|
523 |
+
for (var p in response.data[i]) {
|
524 |
+
if (response.data[i].hasOwnProperty(p)) {
|
525 |
+
templateCopy = templateCopy.replace('{$log.' + p + '}', response.data[i][p]);
|
526 |
+
}
|
527 |
+
}
|
528 |
+
|
529 |
+
$tbody.append('<tr' + (i % 2 ? ' class="alternate"' : '') + '>' + templateCopy + '</tr>');
|
530 |
+
}
|
531 |
+
});
|
532 |
+
};
|
533 |
+
|
534 |
+
$('#fs_filter').click(function () {
|
535 |
+
loadLogs();
|
536 |
+
|
537 |
+
return false;
|
538 |
+
});
|
539 |
+
|
540 |
+
loadLogs();
|
541 |
+
});
|
542 |
+
</script>
|
543 |
+
<?php endif ?>
|
includes/pum-sdk/freemius/templates/debug/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/templates/debug/logger.php
CHANGED
@@ -41,8 +41,8 @@
|
|
41 |
} ?>>
|
42 |
<td><?php echo $log['cnt'] ?>.</td>
|
43 |
<td><?php echo $logger->get_id() ?></td>
|
44 |
-
<td><?php echo $log['
|
45 |
-
<td><b><code style="color: blue;"><?php echo $log['function'] ?></code></b></td>
|
46 |
<td>
|
47 |
<?php
|
48 |
printf(
|
@@ -56,7 +56,7 @@
|
|
56 |
</td>
|
57 |
<td><?php
|
58 |
if ( isset( $log['file'] ) ) {
|
59 |
-
echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line']
|
60 |
}
|
61 |
?></td>
|
62 |
<td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . __fs( 'ms' ) ?></td>
|
41 |
} ?>>
|
42 |
<td><?php echo $log['cnt'] ?>.</td>
|
43 |
<td><?php echo $logger->get_id() ?></td>
|
44 |
+
<td><?php echo $log['log_type'] ?></td>
|
45 |
+
<td><b><code style="color: blue;"><?php echo ( ! empty( $log['class'] ) ? $log['class'] . $log['type'] : '' ) . $log['function'] ?></code></b></td>
|
46 |
<td>
|
47 |
<?php
|
48 |
printf(
|
56 |
</td>
|
57 |
<td><?php
|
58 |
if ( isset( $log['file'] ) ) {
|
59 |
+
echo substr( $log['file'], $logger->get_file() ) . ':' . $log['line'];
|
60 |
}
|
61 |
?></td>
|
62 |
<td><?php echo number_format( 100 * ( $log['timestamp'] - WP_FS__SCRIPT_START_TIME ), 2 ) . ' ' . __fs( 'ms' ) ?></td>
|
includes/pum-sdk/freemius/templates/email.php
CHANGED
@@ -20,7 +20,7 @@
|
|
20 |
foreach ( $sections as $section_id => $section ) {
|
21 |
?>
|
22 |
<thead>
|
23 |
-
<tr><th colspan="2" style="text-align: left; background: #333; color: #fff; padding: 5px;"><?php echo $section['title']
|
24 |
</thead>
|
25 |
<tbody>
|
26 |
<?php
|
@@ -30,10 +30,10 @@
|
|
30 |
<tr>
|
31 |
<?php
|
32 |
if ( 1 === $col_count ) { ?>
|
33 |
-
<td style="vertical-align: top;" colspan="2"><?php echo $row[0]
|
34 |
<?php
|
35 |
} else { ?>
|
36 |
-
<td style="vertical-align: top;"><b><?php echo $row[0]
|
37 |
<td><?php echo $row[1]; ?></td>
|
38 |
<?php
|
39 |
}
|
20 |
foreach ( $sections as $section_id => $section ) {
|
21 |
?>
|
22 |
<thead>
|
23 |
+
<tr><th colspan="2" style="text-align: left; background: #333; color: #fff; padding: 5px;"><?php echo esc_html($section['title']) ?></th></tr>
|
24 |
</thead>
|
25 |
<tbody>
|
26 |
<?php
|
30 |
<tr>
|
31 |
<?php
|
32 |
if ( 1 === $col_count ) { ?>
|
33 |
+
<td style="vertical-align: top;" colspan="2"><?php echo $row[0] ?></td>
|
34 |
<?php
|
35 |
} else { ?>
|
36 |
+
<td style="vertical-align: top;"><b><?php echo esc_html($row[0]) ?>:</b></td>
|
37 |
<td><?php echo $row[1]; ?></td>
|
38 |
<?php
|
39 |
}
|
includes/pum-sdk/freemius/templates/forms/deactivation/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/templates/forms/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/templates/forms/license-activation.php
CHANGED
@@ -63,15 +63,15 @@ HTML;
|
|
63 |
'<div class="fs-modal fs-modal-license-activation">'
|
64 |
+ ' <div class="fs-modal-dialog">'
|
65 |
+ ' <div class="fs-modal-header">'
|
66 |
-
+ ' <h4><?php echo $header_title ?></h4>'
|
67 |
-
+ ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php
|
68 |
+ ' </div>'
|
69 |
+ ' <div class="fs-modal-body">'
|
70 |
+ ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
|
71 |
+ ' </div>'
|
72 |
+ ' <div class="fs-modal-footer">'
|
73 |
-
+ ' <button class="button button-secondary button-close" tabindex="4"><?php
|
74 |
-
+ ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo $activate_button_text
|
75 |
+ ' </div>'
|
76 |
+ ' </div>'
|
77 |
+ '</div>',
|
@@ -138,7 +138,7 @@ HTML;
|
|
138 |
license_key: licenseKey
|
139 |
},
|
140 |
beforeSend: function () {
|
141 |
-
$activateLicenseButton.text(
|
142 |
},
|
143 |
success: function( result ) {
|
144 |
var resultObj = $.parseJSON( result );
|
@@ -181,7 +181,7 @@ HTML;
|
|
181 |
|
182 |
function resetActivateLicenseButton() {
|
183 |
enableActivateLicenseButton();
|
184 |
-
$activateLicenseButton.text(
|
185 |
}
|
186 |
|
187 |
function resetModal() {
|
63 |
'<div class="fs-modal fs-modal-license-activation">'
|
64 |
+ ' <div class="fs-modal-dialog">'
|
65 |
+ ' <div class="fs-modal-header">'
|
66 |
+
+ ' <h4><?php echo esc_js($header_title) ?></h4>'
|
67 |
+
+ ' <a href="!#" class="fs-close"><i class="dashicons dashicons-no" title="<?php fs_esc_attr_echo( 'dismiss', $slug ) ?>"></i></a>'
|
68 |
+ ' </div>'
|
69 |
+ ' <div class="fs-modal-body">'
|
70 |
+ ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
|
71 |
+ ' </div>'
|
72 |
+ ' <div class="fs-modal-footer">'
|
73 |
+
+ ' <button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo( 'cancel', $slug ) ?></button>'
|
74 |
+
+ ' <button class="button button-primary button-activate-license" tabindex="3"><?php echo esc_js( $activate_button_text ) ?></button>'
|
75 |
+ ' </div>'
|
76 |
+ ' </div>'
|
77 |
+ '</div>',
|
138 |
license_key: licenseKey
|
139 |
},
|
140 |
beforeSend: function () {
|
141 |
+
$activateLicenseButton.text( <?php fs_json_encode_echo( 'activating-license', $slug ) ?> );
|
142 |
},
|
143 |
success: function( result ) {
|
144 |
var resultObj = $.parseJSON( result );
|
181 |
|
182 |
function resetActivateLicenseButton() {
|
183 |
enableActivateLicenseButton();
|
184 |
+
$activateLicenseButton.text( <?php echo json_encode( $activate_button_text ) ?> );
|
185 |
}
|
186 |
|
187 |
function resetModal() {
|
includes/pum-sdk/freemius/templates/forms/optout.php
CHANGED
@@ -24,11 +24,16 @@
|
|
24 |
$opt_out_button_text = __fs( 'opt-out', $slug );
|
25 |
// @todo Change 'plugin' with module type when migrating with 1.2.2 (themes version).
|
26 |
$opt_out_message_appreciation = sprintf( __fs( 'opt-out-message-appreciation', $slug ), 'plugin' );
|
27 |
-
$opt_out_message_usage_tracking = sprintf( __fs( 'opt-out-message-usage-tracking', $slug ),
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
$admin_notice_params = array(
|
34 |
'id' => '',
|
@@ -59,14 +64,14 @@ HTML;
|
|
59 |
'<div class="fs-modal fs-modal-opt-out">'
|
60 |
+ ' <div class="fs-modal-dialog">'
|
61 |
+ ' <div class="fs-modal-header">'
|
62 |
-
+ ' <h4><?php echo $opt_out_button_text ?></h4>'
|
63 |
+ ' </div>'
|
64 |
+ ' <div class="fs-modal-body">'
|
65 |
+ ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
|
66 |
+ ' </div>'
|
67 |
+ ' <div class="fs-modal-footer">'
|
68 |
-
+ ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo $opt_out_button_text ?></button>'
|
69 |
-
+ ' <button class="button button-primary button-close" tabindex="2"><?php
|
70 |
+ ' </div>'
|
71 |
+ ' </div>'
|
72 |
+ '</div>',
|
@@ -129,7 +134,7 @@ HTML;
|
|
129 |
|
130 |
function resetOptOutButton() {
|
131 |
enableOptOutButton();
|
132 |
-
$optOutButton.text(
|
133 |
}
|
134 |
|
135 |
function resetModal() {
|
@@ -155,20 +160,20 @@ HTML;
|
|
155 |
},
|
156 |
beforeSend: function() {
|
157 |
if ( 'opt-in' == action ) {
|
158 |
-
$actionLink.text(
|
159 |
} else {
|
160 |
-
$optOutButton.text(
|
161 |
}
|
162 |
},
|
163 |
success: function( resultObj ) {
|
164 |
if ( resultObj.success ) {
|
165 |
if ( 'allow_tracking' == action ) {
|
166 |
action = 'stop_tracking';
|
167 |
-
$actionLink.text(
|
168 |
showOptInAppreciationMessageAndScrollToTop();
|
169 |
} else {
|
170 |
action = 'allow_tracking';
|
171 |
-
$actionLink.text(
|
172 |
closeModal();
|
173 |
|
174 |
if ( $adminNotice.length > 0 ) {
|
24 |
$opt_out_button_text = __fs( 'opt-out', $slug );
|
25 |
// @todo Change 'plugin' with module type when migrating with 1.2.2 (themes version).
|
26 |
$opt_out_message_appreciation = sprintf( __fs( 'opt-out-message-appreciation', $slug ), 'plugin' );
|
27 |
+
$opt_out_message_usage_tracking = sprintf( __fs( 'opt-out-message-usage-tracking', $slug ), $plugin_title );
|
28 |
+
$opt_out_message_clicking_opt_out = sprintf(
|
29 |
+
__fs( 'opt-out-message-clicking-opt-out', $slug ),
|
30 |
+
$plugin_title,
|
31 |
+
sprintf(
|
32 |
+
'<a href="%s" target="_blank">%s</a>',
|
33 |
+
'https://freemius.com',
|
34 |
+
'freemius.com'
|
35 |
+
)
|
36 |
+
);
|
37 |
|
38 |
$admin_notice_params = array(
|
39 |
'id' => '',
|
64 |
'<div class="fs-modal fs-modal-opt-out">'
|
65 |
+ ' <div class="fs-modal-dialog">'
|
66 |
+ ' <div class="fs-modal-header">'
|
67 |
+
+ ' <h4><?php echo esc_js($opt_out_button_text) ?></h4>'
|
68 |
+ ' </div>'
|
69 |
+ ' <div class="fs-modal-body">'
|
70 |
+ ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>'
|
71 |
+ ' </div>'
|
72 |
+ ' <div class="fs-modal-footer">'
|
73 |
+
+ ' <button class="button button-secondary button-opt-out" tabindex="1"><?php echo esc_js($opt_out_button_text) ?></button>'
|
74 |
+
+ ' <button class="button button-primary button-close" tabindex="2"><?php echo esc_js( __fs( 'opt-out-cancel', $slug ) ) ?></button>'
|
75 |
+ ' </div>'
|
76 |
+ ' </div>'
|
77 |
+ '</div>',
|
134 |
|
135 |
function resetOptOutButton() {
|
136 |
enableOptOutButton();
|
137 |
+
$optOutButton.text( <?php echo json_encode($opt_out_button_text) ?> );
|
138 |
}
|
139 |
|
140 |
function resetModal() {
|
160 |
},
|
161 |
beforeSend: function() {
|
162 |
if ( 'opt-in' == action ) {
|
163 |
+
$actionLink.text( <?php fs_json_encode_echo( 'opting-in', $slug ) ?> )
|
164 |
} else {
|
165 |
+
$optOutButton.text( <?php fs_json_encode_echo( 'opting-out', $slug ) ?> );
|
166 |
}
|
167 |
},
|
168 |
success: function( resultObj ) {
|
169 |
if ( resultObj.success ) {
|
170 |
if ( 'allow_tracking' == action ) {
|
171 |
action = 'stop_tracking';
|
172 |
+
$actionLink.text( <?php fs_json_encode_echo( 'opt-out', $slug ) ?> );
|
173 |
showOptInAppreciationMessageAndScrollToTop();
|
174 |
} else {
|
175 |
action = 'allow_tracking';
|
176 |
+
$actionLink.text( <?php fs_json_encode_echo( 'opt-in', $slug ) ?> );
|
177 |
closeModal();
|
178 |
|
179 |
if ( $adminNotice.length > 0 ) {
|
includes/pum-sdk/freemius/templates/forms/resend-key.php
CHANGED
@@ -16,21 +16,48 @@
|
|
16 |
$slug = $VARS['slug'];
|
17 |
$fs = freemius( $slug );
|
18 |
|
19 |
-
$message_above_input_field = __fs( 'ask-for-upgrade-email-address', $slug );
|
20 |
$send_button_text = __fs( 'send-license-key', $slug );
|
21 |
$cancel_button_text = __fs( 'cancel', $slug );
|
22 |
-
$email_address_placeholder =
|
|
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
$modal_content_html = <<< HTML
|
25 |
<div class="notice notice-error inline license-resend-message"><p></p></div>
|
26 |
<p>{$message_above_input_field}</p>
|
27 |
<div class="input-container">
|
28 |
-
|
29 |
-
<a href="#" class="button button-primary button-send-license-key disabled" tabindex="2">{$send_button_text}</a>
|
30 |
-
</div>
|
31 |
-
<div class="email-address-container">
|
32 |
-
<input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
|
33 |
-
</div>
|
34 |
</div>
|
35 |
HTML;
|
36 |
|
@@ -39,30 +66,30 @@ HTML;
|
|
39 |
<script type="text/javascript">
|
40 |
(function ($) {
|
41 |
$(document).ready(function () {
|
42 |
-
var
|
43 |
-
modalHtml
|
44 |
-
'<div class="fs-modal fs-modal-license-key-resend">'
|
45 |
+ ' <div class="fs-modal-dialog">'
|
46 |
+ ' <div class="fs-modal-header">'
|
47 |
-
+ ' <h4><?php echo $send_button_text ?></h4>'
|
48 |
-
+ ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php
|
49 |
+ ' </div>'
|
50 |
+ ' <div class="fs-modal-body">'
|
51 |
-
+ ' <div class="fs-modal-panel active">' +
|
52 |
+ ' </div>'
|
53 |
+ ' </div>'
|
54 |
+ '</div>',
|
55 |
-
$modal
|
56 |
-
$
|
57 |
-
$
|
58 |
-
$
|
59 |
-
moduleSlug
|
60 |
-
|
|
|
|
|
61 |
|
62 |
$modal.appendTo($('body'));
|
63 |
|
64 |
-
registerEventHandlers();
|
65 |
-
|
66 |
function registerEventHandlers() {
|
67 |
$('a.show-license-resend-modal-' + moduleSlug).click(function (evt) {
|
68 |
evt.preventDefault();
|
@@ -70,30 +97,28 @@ HTML;
|
|
70 |
showModal();
|
71 |
});
|
72 |
|
73 |
-
|
|
|
|
|
|
|
74 |
|
75 |
-
|
|
|
|
|
76 |
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
});
|
84 |
|
85 |
$modal.on('blur', 'input.email-address', function () {
|
86 |
-
|
87 |
-
|
88 |
-
/**
|
89 |
-
* If email address is empty, disable the send license key button.
|
90 |
-
*/
|
91 |
-
if (0 === emailAddress.length) {
|
92 |
-
disableSendLicenseKeyButton();
|
93 |
-
}
|
94 |
});
|
95 |
|
96 |
-
$modal.on('click', '.fs-close', function (){
|
97 |
closeModal();
|
98 |
return false;
|
99 |
});
|
@@ -105,11 +130,11 @@ HTML;
|
|
105 |
return;
|
106 |
}
|
107 |
|
108 |
-
var
|
109 |
|
110 |
-
|
111 |
|
112 |
-
if (
|
113 |
return;
|
114 |
}
|
115 |
|
@@ -119,10 +144,10 @@ HTML;
|
|
119 |
data : {
|
120 |
action: '<?php echo $fs->get_action_tag( 'resend_license_key' ) ?>',
|
121 |
slug : moduleSlug,
|
122 |
-
email :
|
123 |
},
|
124 |
beforeSend: function () {
|
125 |
-
$
|
126 |
},
|
127 |
success : function (result) {
|
128 |
var resultObj = $.parseJSON(result);
|
@@ -130,19 +155,25 @@ HTML;
|
|
130 |
closeModal();
|
131 |
} else {
|
132 |
showError(resultObj.error);
|
133 |
-
|
134 |
}
|
135 |
}
|
136 |
});
|
137 |
});
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
140 |
function showModal() {
|
141 |
resetModal();
|
142 |
|
143 |
// Display the dialog box.
|
144 |
$modal.addClass('active');
|
145 |
-
|
|
|
|
|
146 |
|
147 |
var $body = $('body');
|
148 |
|
@@ -165,32 +196,51 @@ HTML;
|
|
165 |
$('body').removeClass('has-fs-modal');
|
166 |
}
|
167 |
|
168 |
-
function
|
169 |
-
|
170 |
-
$
|
171 |
}
|
172 |
|
173 |
function resetModal() {
|
174 |
hideError();
|
175 |
-
|
176 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
178 |
|
179 |
-
function
|
180 |
-
$
|
181 |
}
|
182 |
|
183 |
-
function
|
184 |
-
$
|
185 |
}
|
186 |
|
187 |
function hideError() {
|
188 |
-
$
|
189 |
}
|
190 |
|
191 |
function showError(msg) {
|
192 |
-
$
|
193 |
-
$
|
194 |
}
|
195 |
});
|
196 |
})(jQuery);
|
16 |
$slug = $VARS['slug'];
|
17 |
$fs = freemius( $slug );
|
18 |
|
|
|
19 |
$send_button_text = __fs( 'send-license-key', $slug );
|
20 |
$cancel_button_text = __fs( 'cancel', $slug );
|
21 |
+
$email_address_placeholder = fs_esc_attr( 'email-address', $slug );
|
22 |
+
$other_text = __fs( 'reason-other', $slug );
|
23 |
|
24 |
+
$is_freemium = $fs->is_freemium();
|
25 |
+
|
26 |
+
$send_button_text_html = esc_html($send_button_text);
|
27 |
+
|
28 |
+
$button_html = <<< HTML
|
29 |
+
<div class="button-container">
|
30 |
+
<a href="#" class="button button-primary button-send-license-key" tabindex="2">{$send_button_text_html}</a>
|
31 |
+
</div>
|
32 |
+
HTML;
|
33 |
+
|
34 |
+
if ( $is_freemium ) {
|
35 |
+
$current_user = Freemius::_get_current_wp_user();
|
36 |
+
$email = $current_user->user_email;
|
37 |
+
$esc_email = esc_attr( $email );
|
38 |
+
$form_html = <<< HTML
|
39 |
+
<div class="email-address-container">
|
40 |
+
<label><input name="email-address" type="radio" checked="checked" tabindex="1" value="{$esc_email}"> {$email}</label>
|
41 |
+
<label><input name="email-address" type="radio" tabindex="1" value="other">{$other_text}: <input class="email-address" type="text" placeholder="{$email_address_placeholder}"></label>
|
42 |
+
</div>
|
43 |
+
{$button_html}
|
44 |
+
HTML;
|
45 |
+
} else {
|
46 |
+
$email = '';
|
47 |
+
$form_html = <<< HTML
|
48 |
+
{$button_html}
|
49 |
+
<div class="email-address-container">
|
50 |
+
<input class="email-address" type="text" placeholder="{$email_address_placeholder}" tabindex="1">
|
51 |
+
</div>
|
52 |
+
HTML;
|
53 |
+
}
|
54 |
+
|
55 |
+
$message_above_input_field = esc_html( __fs( 'ask-for-upgrade-email-address', $slug ) );
|
56 |
$modal_content_html = <<< HTML
|
57 |
<div class="notice notice-error inline license-resend-message"><p></p></div>
|
58 |
<p>{$message_above_input_field}</p>
|
59 |
<div class="input-container">
|
60 |
+
{$form_html}
|
|
|
|
|
|
|
|
|
|
|
61 |
</div>
|
62 |
HTML;
|
63 |
|
66 |
<script type="text/javascript">
|
67 |
(function ($) {
|
68 |
$(document).ready(function () {
|
69 |
+
var contentHtml = <?php echo json_encode( $modal_content_html ); ?>,
|
70 |
+
modalHtml =
|
71 |
+
'<div class="fs-modal fs-modal-license-key-resend <?php echo $is_freemium ? 'fs-freemium' : 'fs-premium' ?>">'
|
72 |
+ ' <div class="fs-modal-dialog">'
|
73 |
+ ' <div class="fs-modal-header">'
|
74 |
+
+ ' <h4><?php echo esc_js( $send_button_text ) ?></h4>'
|
75 |
+
+ ' <a href="#!" class="fs-close" tabindex="3" title="Close"><i class="dashicons dashicons-no" title="<?php fs_esc_js_echo( 'dismiss', $slug ) ?>"></i></a>'
|
76 |
+ ' </div>'
|
77 |
+ ' <div class="fs-modal-body">'
|
78 |
+
+ ' <div class="fs-modal-panel active">' + contentHtml + '</div>'
|
79 |
+ ' </div>'
|
80 |
+ ' </div>'
|
81 |
+ '</div>',
|
82 |
+
$modal = $(modalHtml),
|
83 |
+
$sendButton = $modal.find('.button-send-license-key'),
|
84 |
+
$emailInput = $modal.find('input.email-address'),
|
85 |
+
$feedbackMessage = $modal.find('.license-resend-message'),
|
86 |
+
moduleSlug = '<?php echo $slug; ?>',
|
87 |
+
isFreemium = <?php echo json_encode( $is_freemium ) ?>,
|
88 |
+
userEmail =<?php echo json_encode( $email ) ?>,
|
89 |
+
isChild = false;
|
90 |
|
91 |
$modal.appendTo($('body'));
|
92 |
|
|
|
|
|
93 |
function registerEventHandlers() {
|
94 |
$('a.show-license-resend-modal-' + moduleSlug).click(function (evt) {
|
95 |
evt.preventDefault();
|
97 |
showModal();
|
98 |
});
|
99 |
|
100 |
+
if (isFreemium) {
|
101 |
+
$modal.on('change', 'input[type=radio][name=email-address]', function () {
|
102 |
+
updateButtonState();
|
103 |
+
});
|
104 |
|
105 |
+
$modal.on('focus', 'input.email-address', function () {
|
106 |
+
// Check custom email radio button on email input focus.
|
107 |
+
$($modal.find('input[type=radio]')[1]).prop('checked', true);
|
108 |
|
109 |
+
updateButtonState();
|
110 |
+
});
|
111 |
+
}
|
112 |
+
|
113 |
+
$modal.on('input propertychange', 'input.email-address', function () {
|
114 |
+
updateButtonState();
|
115 |
});
|
116 |
|
117 |
$modal.on('blur', 'input.email-address', function () {
|
118 |
+
updateButtonState();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
});
|
120 |
|
121 |
+
$modal.on('click', '.fs-close', function () {
|
122 |
closeModal();
|
123 |
return false;
|
124 |
});
|
130 |
return;
|
131 |
}
|
132 |
|
133 |
+
var email = getEmail();
|
134 |
|
135 |
+
disableButton();
|
136 |
|
137 |
+
if (!(-1 < email.indexOf('@'))) {
|
138 |
return;
|
139 |
}
|
140 |
|
144 |
data : {
|
145 |
action: '<?php echo $fs->get_action_tag( 'resend_license_key' ) ?>',
|
146 |
slug : moduleSlug,
|
147 |
+
email : email
|
148 |
},
|
149 |
beforeSend: function () {
|
150 |
+
$sendButton.text(<?php fs_json_encode_echo( 'sending-license-key', $slug ) ?> + '...');
|
151 |
},
|
152 |
success : function (result) {
|
153 |
var resultObj = $.parseJSON(result);
|
155 |
closeModal();
|
156 |
} else {
|
157 |
showError(resultObj.error);
|
158 |
+
resetButton();
|
159 |
}
|
160 |
}
|
161 |
});
|
162 |
});
|
163 |
}
|
164 |
|
165 |
+
registerEventHandlers();
|
166 |
+
|
167 |
+
resetButton();
|
168 |
+
|
169 |
function showModal() {
|
170 |
resetModal();
|
171 |
|
172 |
// Display the dialog box.
|
173 |
$modal.addClass('active');
|
174 |
+
|
175 |
+
if (!isFreemium)
|
176 |
+
$emailInput.focus();
|
177 |
|
178 |
var $body = $('body');
|
179 |
|
196 |
$('body').removeClass('has-fs-modal');
|
197 |
}
|
198 |
|
199 |
+
function resetButton() {
|
200 |
+
updateButtonState();
|
201 |
+
$sendButton.text(<?php echo json_encode($send_button_text) ?>);
|
202 |
}
|
203 |
|
204 |
function resetModal() {
|
205 |
hideError();
|
206 |
+
resetButton();
|
207 |
+
$emailInput.val('');
|
208 |
+
}
|
209 |
+
|
210 |
+
function getEmail() {
|
211 |
+
var email = $emailInput.val().trim();
|
212 |
+
|
213 |
+
if (isFreemium) {
|
214 |
+
if ('other' != $modal.find('input[type=radio][name=email-address]:checked').val()) {
|
215 |
+
email = userEmail;
|
216 |
+
}
|
217 |
+
}
|
218 |
+
|
219 |
+
return email;
|
220 |
+
}
|
221 |
+
|
222 |
+
function updateButtonState() {
|
223 |
+
/**
|
224 |
+
* If email address is not empty, enable the send license key button.
|
225 |
+
*/
|
226 |
+
$sendButton.toggleClass('disabled', !( -1 < getEmail().indexOf('@') ));
|
227 |
}
|
228 |
|
229 |
+
function enableButton() {
|
230 |
+
$sendButton.removeClass('disabled');
|
231 |
}
|
232 |
|
233 |
+
function disableButton() {
|
234 |
+
$sendButton.addClass('disabled');
|
235 |
}
|
236 |
|
237 |
function hideError() {
|
238 |
+
$feedbackMessage.hide();
|
239 |
}
|
240 |
|
241 |
function showError(msg) {
|
242 |
+
$feedbackMessage.find(' > p').html(msg);
|
243 |
+
$feedbackMessage.show();
|
244 |
}
|
245 |
});
|
246 |
})(jQuery);
|
includes/pum-sdk/freemius/templates/forms/trial-start.php
CHANGED
@@ -23,7 +23,11 @@
|
|
23 |
);
|
24 |
$message_content = sprintf(
|
25 |
__fs( 'start-trial-prompt-message', $slug ),
|
26 |
-
|
|
|
|
|
|
|
|
|
27 |
);
|
28 |
|
29 |
$modal_content_html = <<< HTML
|
@@ -42,12 +46,12 @@ HTML;
|
|
42 |
'<div class="fs-modal fs-modal-license-key-resend">'
|
43 |
+ ' <div class="fs-modal-dialog">'
|
44 |
+ ' <div class="fs-modal-header">'
|
45 |
-
+ ' <h4><?php
|
46 |
+ ' </div>'
|
47 |
+ ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
|
48 |
+ ' <div class="fs-modal-footer">'
|
49 |
-
+ ' <button class="button button-secondary button-close">' + <?php
|
50 |
-
+ ' <button class="button button-primary button-connect">' + <?php
|
51 |
+ ' </div>'
|
52 |
+ ' </div>'
|
53 |
+ '</div>',
|
@@ -85,18 +89,18 @@ HTML;
|
|
85 |
// Disable all buttons during trial activation.
|
86 |
$modal.find('.button').prop('disabled', true);
|
87 |
|
88 |
-
$button.text(
|
89 |
|
90 |
setLoadingMode();
|
91 |
},
|
92 |
success : function (resultObj) {
|
93 |
if (resultObj.success) {
|
94 |
-
$button.text(
|
95 |
|
96 |
// Redirect to the "Account" page and sync the license.
|
97 |
window.location.href = resultObj.data.next_page;
|
98 |
} else {
|
99 |
-
$button.text(<?php
|
100 |
|
101 |
resetLoadingMode();
|
102 |
showError(resultObj.error);
|
23 |
);
|
24 |
$message_content = sprintf(
|
25 |
__fs( 'start-trial-prompt-message', $slug ),
|
26 |
+
sprintf(
|
27 |
+
'<a href="%s" target="_blank">%s</a>',
|
28 |
+
'https://freemius.com',
|
29 |
+
'freemius.com'
|
30 |
+
)
|
31 |
);
|
32 |
|
33 |
$modal_content_html = <<< HTML
|
46 |
'<div class="fs-modal fs-modal-license-key-resend">'
|
47 |
+ ' <div class="fs-modal-dialog">'
|
48 |
+ ' <div class="fs-modal-header">'
|
49 |
+
+ ' <h4><?php fs_esc_js_echo( 'start-free-trial', $slug ) ?></h4>'
|
50 |
+ ' </div>'
|
51 |
+ ' <div class="fs-modal-body">' + modalContentHtml + '</div>'
|
52 |
+ ' <div class="fs-modal-footer">'
|
53 |
+
+ ' <button class="button button-secondary button-close">' + <?php fs_json_encode_echo( 'cancel', $slug ) ?> +'</button>'
|
54 |
+
+ ' <button class="button button-primary button-connect">' + <?php fs_json_encode_echo( 'approve-start-trial', $slug ) ?> +'</button>'
|
55 |
+ ' </div>'
|
56 |
+ ' </div>'
|
57 |
+ '</div>',
|
89 |
// Disable all buttons during trial activation.
|
90 |
$modal.find('.button').prop('disabled', true);
|
91 |
|
92 |
+
$button.text(<?php fs_json_encode_echo( 'starting-trial', $slug ) ?> + '...');
|
93 |
|
94 |
setLoadingMode();
|
95 |
},
|
96 |
success : function (resultObj) {
|
97 |
if (resultObj.success) {
|
98 |
+
$button.text(<?php fs_json_encode_echo( 'please-wait', $slug ) ?> + '...');
|
99 |
|
100 |
// Redirect to the "Account" page and sync the license.
|
101 |
window.location.href = resultObj.data.next_page;
|
102 |
} else {
|
103 |
+
$button.text(<?php fs_json_encode_echo( 'approve-start-trial', $slug ) ?>);
|
104 |
|
105 |
resetLoadingMode();
|
106 |
showError(resultObj.error);
|
includes/pum-sdk/freemius/templates/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
includes/pum-sdk/freemius/templates/plugin-icon.php
CHANGED
@@ -60,7 +60,7 @@
|
|
60 |
* the repository.
|
61 |
*/
|
62 |
if ( ! function_exists( 'plugins_api' ) ) {
|
63 |
-
require_once
|
64 |
}
|
65 |
|
66 |
$plugin_information = plugins_api( 'plugin_information', array(
|
60 |
* the repository.
|
61 |
*/
|
62 |
if ( ! function_exists( 'plugins_api' ) ) {
|
63 |
+
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
|
64 |
}
|
65 |
|
66 |
$plugin_information = plugins_api( 'plugin_information', array(
|
includes/pum-sdk/freemius/templates/plugin-info/index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
// Hide file structure from users on unprotected servers.
|
popup-maker.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=plugin-uri
|
5 |
* Description: Easily create & style popups with any content. Theme editor to quickly style your popups. Add forms, social media boxes, videos & more.
|
6 |
* Author: WP Popup Maker
|
7 |
-
* Version: 1.5.
|
8 |
* Author URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=author-uri
|
9 |
* Text Domain: popup-maker
|
10 |
*
|
@@ -147,7 +147,7 @@ if ( ! class_exists( 'Popup_Maker' ) ) :
|
|
147 |
}
|
148 |
|
149 |
if ( ! defined( 'POPMAKE_VERSION' ) ) {
|
150 |
-
define( 'POPMAKE_VERSION', '1.5.
|
151 |
}
|
152 |
|
153 |
if ( ! defined( 'POPMAKE_DB_VERSION' ) ) {
|
4 |
* Plugin URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=plugin-uri
|
5 |
* Description: Easily create & style popups with any content. Theme editor to quickly style your popups. Add forms, social media boxes, videos & more.
|
6 |
* Author: WP Popup Maker
|
7 |
+
* Version: 1.5.3
|
8 |
* Author URI: https://wppopupmaker.com/?utm_capmaign=PluginInfo&utm_source=plugin-header&utm_medium=author-uri
|
9 |
* Text Domain: popup-maker
|
10 |
*
|
147 |
}
|
148 |
|
149 |
if ( ! defined( 'POPMAKE_VERSION' ) ) {
|
150 |
+
define( 'POPMAKE_VERSION', '1.5.3' );
|
151 |
}
|
152 |
|
153 |
if ( ! defined( 'POPMAKE_DB_VERSION' ) ) {
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Donate link:
|
|
6 |
Tags: responsive popup, promotion, popover, pop-up, pop over, marketing, lightbox, advertising, conversion, modal, popup, popups
|
7 |
Requires at least: 3.6
|
8 |
Tested up to: 4.7.2
|
9 |
-
Stable tag: 1.5.
|
10 |
License: GNU Version 3 or Any Later Version
|
11 |
|
12 |
Create any popup imaginable! Customize your popups from head-to-toe and give your site more utility, usability, and conversions.
|
@@ -87,15 +87,19 @@ There are several common causes for this which include:
|
|
87 |
|
88 |
== Changelog ==
|
89 |
|
90 |
-
= v1.5.
|
|
|
|
|
|
|
|
|
91 |
* Improvement: Added option to disable the admin bar Popups helper menu item.
|
92 |
* Improvement: Simplified the nav menu editor modification class to reduce un-needed translation strings.
|
93 |
* Fix: Added check for missing class in the nav menu editor walker classes.
|
94 |
|
95 |
-
= v1.5.1 - 03/09/2017
|
96 |
* Fix: PHP 5.2 Compatibility issue.
|
97 |
|
98 |
-
= v1.5.0 - 03/08/2017
|
99 |
* Feature: Position popups based on the click trigger. Tooltips & Popovers are now possible.
|
100 |
* Feature: Added new conditions for targeting children & grandchildren / ancestors of selected content.
|
101 |
* Feature: Added new settings to the Nav Menu editor to choose a popup that a menu item will trigger.
|
@@ -498,4 +502,4 @@ There are several common causes for this which include:
|
|
498 |
* Misc Admin changes, including new filters/hooks for upcoming extensions.
|
499 |
|
500 |
= v1.0.0 =
|
501 |
-
* Initial Release
|
6 |
Tags: responsive popup, promotion, popover, pop-up, pop over, marketing, lightbox, advertising, conversion, modal, popup, popups
|
7 |
Requires at least: 3.6
|
8 |
Tested up to: 4.7.2
|
9 |
+
Stable tag: 1.5.3
|
10 |
License: GNU Version 3 or Any Later Version
|
11 |
|
12 |
Create any popup imaginable! Customize your popups from head-to-toe and give your site more utility, usability, and conversions.
|
87 |
|
88 |
== Changelog ==
|
89 |
|
90 |
+
= v1.5.3 - 03/13/2017 =
|
91 |
+
* Improvement: Added a catch for any triggers not initialized at page load.
|
92 |
+
* Fix: Typo in multi check field template that led to admin JS errors.
|
93 |
+
|
94 |
+
= v1.5.2 - 03/10/2017 =
|
95 |
* Improvement: Added option to disable the admin bar Popups helper menu item.
|
96 |
* Improvement: Simplified the nav menu editor modification class to reduce un-needed translation strings.
|
97 |
* Fix: Added check for missing class in the nav menu editor walker classes.
|
98 |
|
99 |
+
= v1.5.1 - 03/09/2017 =
|
100 |
* Fix: PHP 5.2 Compatibility issue.
|
101 |
|
102 |
+
= v1.5.0 - 03/08/2017 =
|
103 |
* Feature: Position popups based on the click trigger. Tooltips & Popovers are now possible.
|
104 |
* Feature: Added new conditions for targeting children & grandchildren / ancestors of selected content.
|
105 |
* Feature: Added new settings to the Nav Menu editor to choose a popup that a menu item will trigger.
|
502 |
* Misc Admin changes, including new filters/hooks for upcoming extensions.
|
503 |
|
504 |
= v1.0.0 =
|
505 |
+
* Initial Release
|