Version Description
= [5.0] =
Please see the changelog for the complete list of changes in this release. Previous versions of The Events Calendar are not cross-compatible with 5.X add-ons. Remember to always make a backup of your database and files before updating!
Download this release
Release Info
Developer | bordoni |
Plugin | The Events Calendar |
Version | 5.2.1.2 |
Comparing to | |
See all releases |
Code changes from version 5.2.0.1 to 5.2.1.2
- common/lang/tribe-common-af.mo +0 -0
- common/lang/tribe-common-ar.mo +0 -0
- common/lang/tribe-common-bg_BG.mo +0 -0
- common/lang/tribe-common-ca.mo +0 -0
- common/lang/tribe-common-cs_CZ.mo +0 -0
- common/lang/tribe-common-da_DK.mo +0 -0
- common/lang/tribe-common-de_DE.mo +0 -0
- common/lang/tribe-common-el.mo +0 -0
- common/lang/tribe-common-en_GB.mo +0 -0
- common/lang/tribe-common-es_ES.mo +0 -0
- common/lang/tribe-common-et.mo +0 -0
- common/lang/tribe-common-fi.mo +0 -0
- common/lang/tribe-common-fr_CA.mo +0 -0
- common/lang/tribe-common-fr_FR.mo +0 -0
- common/lang/tribe-common-hu_HU.mo +0 -0
- common/lang/tribe-common-id_ID.mo +0 -0
- common/lang/tribe-common-is_IS.mo +0 -0
- common/lang/tribe-common-it_IT.mo +0 -0
- common/lang/tribe-common-ja.mo +0 -0
- common/lang/tribe-common-lt_LT.mo +0 -0
- common/lang/tribe-common-lv.mo +0 -0
- common/lang/tribe-common-nb_NO.mo +0 -0
- common/lang/tribe-common-nl_NL.mo +0 -0
- common/lang/tribe-common-pt_BR.mo +0 -0
- common/lang/tribe-common-pt_PT.mo +0 -0
- common/lang/tribe-common-ro_RO.mo +0 -0
- common/lang/tribe-common-ru_RU.mo +0 -0
- common/lang/tribe-common-sk_SK.mo +0 -0
- common/lang/tribe-common-sl_SI.mo +0 -0
- common/lang/tribe-common-sr_RS.mo +0 -0
- common/lang/tribe-common-sv_SE.mo +0 -0
- common/lang/tribe-common-tr_TR.mo +0 -0
- common/lang/tribe-common-zh_CN.mo +0 -0
- common/lang/tribe-common-zh_TW.mo +0 -0
- common/lang/tribe-common.pot +12 -12
- common/src/Tribe/Admin/Activation_Page.php +22 -0
- common/src/Tribe/Admin/Notice/Marketing.php +85 -114
- common/src/Tribe/Ajax/Dropdown.php +14 -8
- common/src/Tribe/Assets.php +12 -0
- common/src/Tribe/Log/Canonical_Formatter.php +78 -5
- common/src/Tribe/Log/Service_Provider.php +1 -1
- common/src/Tribe/Main.php +2 -1
- common/src/Tribe/Service_Providers/Widgets.php +77 -0
- common/src/Tribe/Widget/Manager.php +97 -0
- common/src/Tribe/Widget/Widget_Abstract.php +314 -0
- common/src/Tribe/Widget/Widget_Interface.php +207 -0
- common/src/admin-views/notices/tribe-bf-2018-et.php +0 -20
- common/src/admin-views/notices/tribe-bf-2018-general.php +0 -20
- common/src/admin-views/notices/tribe-bf-2018-tec.php +0 -20
- common/src/admin-views/notices/tribe-bf-general.php +22 -0
- common/src/admin-views/notices/tribe-gutenberg-release.php +0 -21
- common/src/admin-views/tribe-options-display.php +1 -1
- common/src/functions/utils.php +44 -13
- common/src/resources/css/app-shop.min.css +1 -1
- common/src/resources/css/tribe-common-admin.min.css +1 -1
- common/src/resources/images/header/welcome-desktop-et.jpg +0 -0
- common/src/resources/images/header/welcome-desktop-etplus.jpg +0 -0
- common/src/resources/images/header/welcome-mobile-et.jpg +0 -0
- common/src/resources/images/header/welcome-mobile-etplus.jpg +0 -0
- common/src/resources/images/icons/horns-white.svg +1 -0
- common/src/resources/images/icons/sale-burst.svg +12 -0
- common/src/resources/images/mascot.png +0 -0
- common/src/resources/images/welcome/calendar.jpg +0 -0
- common/src/resources/images/welcome/et-plus-upsell.jpg +0 -0
- common/src/resources/images/welcome/extension-library.jpg +0 -0
- common/src/resources/images/welcome/guide-book-green.jpg +0 -0
- common/src/resources/images/welcome/up-sell.jpg +0 -0
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_classmap.php +4 -0
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +9 -5
- common/vendor/composer/installed.json +7 -7
- common/vendor/faction23/a11y-dialog/a11y-dialog.min.js +1 -1
- common/vendor/freemius/README.md +72 -43
- common/vendor/freemius/assets/css/admin/account.css +1 -1
- common/vendor/freemius/assets/css/admin/add-ons.css +1 -1
- common/vendor/freemius/config.php +4 -1
- common/vendor/freemius/includes/class-freemius.php +840 -105
- common/vendor/freemius/includes/class-fs-api.php +1 -1
- common/vendor/freemius/includes/class-fs-plugin-updater.php +49 -6
- common/vendor/freemius/includes/class-fs-storage.php +1 -0
- common/vendor/freemius/includes/customizer/class-fs-customizer-support-section.php +2 -2
- common/vendor/freemius/includes/entities/class-fs-payment.php +2 -2
- common/vendor/freemius/includes/entities/class-fs-plugin-license.php +7 -0
- common/vendor/freemius/includes/entities/class-fs-site.php +4 -1
- common/vendor/freemius/includes/fs-essential-functions.php +37 -20
- common/vendor/freemius/includes/fs-plugin-info-dialog.php +36 -23
- common/vendor/freemius/includes/i18n.php +2 -0
- common/vendor/freemius/includes/managers/class-fs-admin-menu-manager.php +6 -1
- common/vendor/freemius/includes/sdk/FreemiusBase.php +1 -1
- common/vendor/freemius/includes/sdk/FreemiusWordPress.php +20 -12
- common/vendor/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +1 -1
- common/vendor/freemius/languages/freemius-cs_CZ.mo +0 -0
- common/vendor/freemius/languages/freemius-da_DK.mo +0 -0
- common/vendor/freemius/languages/freemius-en.mo +0 -0
- common/vendor/freemius/languages/freemius-es_ES.mo +0 -0
- common/vendor/freemius/languages/freemius-fr_FR.mo +0 -0
- common/vendor/freemius/languages/freemius-he_IL.mo +0 -0
- common/vendor/freemius/languages/freemius-hu_HU.mo +0 -0
- common/vendor/freemius/languages/freemius-it_IT.mo +0 -0
- common/vendor/freemius/languages/freemius-ja.mo +0 -0
- common/vendor/freemius/languages/freemius-nl_NL.mo +0 -0
- common/vendor/freemius/languages/freemius-ru_RU.mo +0 -0
- common/vendor/freemius/languages/freemius-ta.mo +0 -0
- common/vendor/freemius/languages/freemius.pot +390 -358
- common/vendor/freemius/package.json +1 -1
- common/vendor/freemius/start.php +529 -521
- common/vendor/freemius/templates/account.php +84 -24
- common/vendor/freemius/templates/account/partials/addon.php +2 -2
- common/vendor/freemius/templates/account/payments.php +1 -1
- common/vendor/freemius/templates/add-ons.php +2 -2
- common/vendor/freemius/templates/auto-installation.php +1 -1
- common/vendor/freemius/templates/connect.php +12 -11
- common/vendor/freemius/templates/forms/affiliation.php +28 -5
- common/vendor/freemius/templates/forms/deactivation/form.php +18 -14
- common/vendor/freemius/templates/forms/license-activation.php +10 -8
- common/vendor/freemius/templates/forms/optout.php +17 -10
- common/vendor/freemius/templates/forms/subscription-cancellation.php +1 -1
- common/vendor/freemius/templates/forms/trial-start.php +1 -1
- common/vendor/freemius/templates/pricing.php +208 -176
- common/vendor/freemius/templates/secure-https-header.php +1 -1
- common/vendor/psr/log/Psr/Log/AbstractLogger.php +16 -16
- common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +1 -1
- lang/the-events-calendar-ar.mo +0 -0
- lang/the-events-calendar-bg_BG.mo +0 -0
- lang/the-events-calendar-ca.mo +0 -0
- lang/the-events-calendar-cs_CZ.mo +0 -0
- lang/the-events-calendar-da_DK.mo +0 -0
- lang/the-events-calendar-de_CH.mo +0 -0
- lang/the-events-calendar-de_DE.mo +0 -0
- lang/the-events-calendar-el.mo +0 -0
- lang/the-events-calendar-en_AU.mo +0 -0
- lang/the-events-calendar-en_CA.mo +0 -0
- lang/the-events-calendar-en_GB.mo +0 -0
- lang/the-events-calendar-en_NZ.mo +0 -0
- lang/the-events-calendar-en_ZA.mo +0 -0
- lang/the-events-calendar-es_CO.mo +0 -0
- lang/the-events-calendar-es_EC.mo +0 -0
- lang/the-events-calendar-es_ES.mo +0 -0
- lang/the-events-calendar-es_MX.mo +0 -0
- lang/the-events-calendar-es_VE.mo +0 -0
- lang/the-events-calendar-eu.mo +0 -0
- lang/the-events-calendar-fi.mo +0 -0
- lang/the-events-calendar-fr_CA.mo +0 -0
- lang/the-events-calendar-fr_FR.mo +0 -0
- lang/the-events-calendar-gl_ES.mo +0 -0
- lang/the-events-calendar-he_IL.mo +0 -0
- lang/the-events-calendar-hr.mo +0 -0
- lang/the-events-calendar-hu_HU.mo +0 -0
- lang/the-events-calendar-is_IS.mo +0 -0
- lang/the-events-calendar-it_IT.mo +0 -0
- lang/the-events-calendar-ja.mo +0 -0
- lang/the-events-calendar-lt_LT.mo +0 -0
- lang/the-events-calendar-nb_NO.mo +0 -0
- lang/the-events-calendar-nl_NL.mo +0 -0
- lang/the-events-calendar-nn_NO.mo +0 -0
- lang/the-events-calendar-pl_PL.mo +0 -0
- lang/the-events-calendar-pt_BR.mo +0 -0
- lang/the-events-calendar-pt_PT.mo +0 -0
- lang/the-events-calendar-ro_RO.mo +0 -0
- lang/the-events-calendar-ru_RU.mo +0 -0
- lang/the-events-calendar-sk_SK.mo +0 -0
- lang/the-events-calendar-sl_SI.mo +0 -0
- lang/the-events-calendar-sq.mo +0 -0
- lang/the-events-calendar-sr_RS.mo +0 -0
- lang/the-events-calendar-sv_SE.mo +0 -0
- lang/the-events-calendar-tr_TR.mo +0 -0
- lang/the-events-calendar-uk.mo +0 -0
- lang/the-events-calendar-zh_CN.mo +0 -0
- lang/the-events-calendar.pot +222 -204
- readme.txt +26 -10
- src/Tribe/Aggregator/Record/Queue_Processor.php +34 -2
- src/Tribe/Assets.php +0 -13
- src/Tribe/Integrations/WPML/Views/V2/Filters.php +165 -0
- src/Tribe/Integrations/WPML/WPML.php +14 -0
- src/Tribe/Integrations/X_Theme/X_Theme.php +1 -1
- src/Tribe/Main.php +2 -1
- src/Tribe/Views/V2/Assets.php +43 -0
- src/Tribe/Views/V2/Hooks.php +3 -3
- src/Tribe/Views/V2/Rest_Endpoint.php +56 -10
- src/Tribe/Views/V2/Template.php +9 -1
- src/Tribe/Views/V2/Template_Bootstrap.php +19 -2
- src/Tribe/Views/V2/View.php +35 -1
- src/Tribe/Views/V2/View_Interface.php +9 -0
- src/Tribe/Views/V2/Views/Latest_Past_View.php +6 -5
- src/Tribe/Views/V2/Views/Traits/iCal_Data.php +6 -2
- src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php +88 -0
- src/Tribe/Views/V2/Widgets/Service_Provider.php +91 -0
- src/Tribe/Views/V2/Widgets/Widget_Abstract.php +141 -0
- src/Tribe/Views/V2/Widgets/Widget_List.php +105 -0
- src/Tribe/iCal.php +10 -1
- src/functions/views/provider.php +15 -0
- src/resources/css/freemius.min.css +1 -1
- src/resources/css/widgets-full.min.css +1 -0
- src/resources/css/widgets-skeleton.min.css +1 -0
- src/resources/js/views/manager.js +1 -1
- src/views/v2/day.php +3 -1
- src/views/v2/list.php +3 -1
- src/views/v2/month.php +2 -0
- src/views/v2/widgets/events-list.php +120 -0
- src/views/v2/widgets/events-list/event.php +46 -0
- src/views/v2/widgets/events-list/event/cost.php +28 -0
- src/views/v2/widgets/events-list/event/date-tag.php +42 -0
- src/views/v2/widgets/events-list/event/date.php +32 -0
- src/views/v2/widgets/events-list/event/date/featured.php +31 -0
- src/views/v2/widgets/events-list/event/organizer.php +19 -0
- src/views/v2/widgets/events-list/event/title.php +31 -0
- src/views/v2/widgets/events-list/event/venue.php +91 -0
- src/views/v2/widgets/events-list/view-more.php +30 -0
- src/views/v2/widgets/widget-list.php +9 -0
- the-events-calendar.php +2 -2
- vendor/autoload.php +1 -1
- vendor/composer/autoload_classmap.php +5 -0
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +9 -4
common/lang/tribe-common-af.mo
CHANGED
Binary file
|
common/lang/tribe-common-ar.mo
CHANGED
Binary file
|
common/lang/tribe-common-bg_BG.mo
CHANGED
Binary file
|
common/lang/tribe-common-ca.mo
CHANGED
Binary file
|
common/lang/tribe-common-cs_CZ.mo
CHANGED
Binary file
|
common/lang/tribe-common-da_DK.mo
CHANGED
Binary file
|
common/lang/tribe-common-de_DE.mo
CHANGED
Binary file
|
common/lang/tribe-common-el.mo
CHANGED
Binary file
|
common/lang/tribe-common-en_GB.mo
CHANGED
Binary file
|
common/lang/tribe-common-es_ES.mo
CHANGED
Binary file
|
common/lang/tribe-common-et.mo
CHANGED
Binary file
|
common/lang/tribe-common-fi.mo
CHANGED
Binary file
|
common/lang/tribe-common-fr_CA.mo
CHANGED
Binary file
|
common/lang/tribe-common-fr_FR.mo
CHANGED
Binary file
|
common/lang/tribe-common-hu_HU.mo
CHANGED
Binary file
|
common/lang/tribe-common-id_ID.mo
CHANGED
Binary file
|
common/lang/tribe-common-is_IS.mo
CHANGED
Binary file
|
common/lang/tribe-common-it_IT.mo
CHANGED
Binary file
|
common/lang/tribe-common-ja.mo
CHANGED
Binary file
|
common/lang/tribe-common-lt_LT.mo
CHANGED
Binary file
|
common/lang/tribe-common-lv.mo
CHANGED
Binary file
|
common/lang/tribe-common-nb_NO.mo
CHANGED
Binary file
|
common/lang/tribe-common-nl_NL.mo
CHANGED
Binary file
|
common/lang/tribe-common-pt_BR.mo
CHANGED
Binary file
|
common/lang/tribe-common-pt_PT.mo
CHANGED
Binary file
|
common/lang/tribe-common-ro_RO.mo
CHANGED
Binary file
|
common/lang/tribe-common-ru_RU.mo
CHANGED
Binary file
|
common/lang/tribe-common-sk_SK.mo
CHANGED
Binary file
|
common/lang/tribe-common-sl_SI.mo
CHANGED
Binary file
|
common/lang/tribe-common-sr_RS.mo
CHANGED
Binary file
|
common/lang/tribe-common-sv_SE.mo
CHANGED
Binary file
|
common/lang/tribe-common-tr_TR.mo
CHANGED
Binary file
|
common/lang/tribe-common-zh_CN.mo
CHANGED
Binary file
|
common/lang/tribe-common-zh_TW.mo
CHANGED
Binary file
|
common/lang/tribe-common.pot
CHANGED
@@ -2,29 +2,29 @@
|
|
2 |
# This file is distributed under the same license as the Tribe Common package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Tribe Common 4.12.
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
-
"POT-Creation-Date: 2020-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date: 2020-
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
-
#: src/Tribe/Admin/Activation_Page.php:
|
16 |
msgid "Go to plugins page"
|
17 |
msgstr ""
|
18 |
|
19 |
-
#: src/Tribe/Admin/Activation_Page.php:
|
20 |
msgid "Return to Plugins page"
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: src/Tribe/Admin/Activation_Page.php:
|
24 |
msgid "Go to WordPress Updates page"
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: src/Tribe/Admin/Activation_Page.php:
|
28 |
msgid "Return to WordPress Updates"
|
29 |
msgstr ""
|
30 |
|
@@ -223,15 +223,15 @@ msgstr ""
|
|
223 |
msgid "Cannot look for Terms without a taxonomy"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: src/Tribe/Ajax/Dropdown.php:
|
227 |
msgid "Missing data source for this dropdown"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: src/Tribe/Ajax/Dropdown.php:
|
231 |
msgid "Empty data set for this dropdown"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: src/Tribe/Ajax/Dropdown.php:
|
235 |
msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
|
236 |
msgstr ""
|
237 |
|
@@ -2510,11 +2510,11 @@ msgstr ""
|
|
2510 |
msgid "Invalid Key"
|
2511 |
msgstr ""
|
2512 |
|
2513 |
-
#: src/Tribe/Support.php:
|
2514 |
msgid "Permission Error"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
-
#: src/Tribe/Support.php:
|
2518 |
msgid "Unique System Info Key Generated"
|
2519 |
msgstr ""
|
2520 |
|
2 |
# This file is distributed under the same license as the Tribe Common package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Tribe Common 4.12.11\n"
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
+
"POT-Creation-Date: 2020-10-14 15:50:53+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2020-10-14 15:50\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
+
#: src/Tribe/Admin/Activation_Page.php:106
|
16 |
msgid "Go to plugins page"
|
17 |
msgstr ""
|
18 |
|
19 |
+
#: src/Tribe/Admin/Activation_Page.php:106
|
20 |
msgid "Return to Plugins page"
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: src/Tribe/Admin/Activation_Page.php:114
|
24 |
msgid "Go to WordPress Updates page"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: src/Tribe/Admin/Activation_Page.php:114
|
28 |
msgid "Return to WordPress Updates"
|
29 |
msgstr ""
|
30 |
|
223 |
msgid "Cannot look for Terms without a taxonomy"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: src/Tribe/Ajax/Dropdown.php:186
|
227 |
msgid "Missing data source for this dropdown"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: src/Tribe/Ajax/Dropdown.php:199
|
231 |
msgid "Empty data set for this dropdown"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: src/Tribe/Ajax/Dropdown.php:249
|
235 |
msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
|
236 |
msgstr ""
|
237 |
|
2510 |
msgid "Invalid Key"
|
2511 |
msgstr ""
|
2512 |
|
2513 |
+
#: src/Tribe/Support.php:376 src/Tribe/Support.php:402
|
2514 |
msgid "Permission Error"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
+
#: src/Tribe/Support.php:390
|
2518 |
msgid "Unique System Info Key Generated"
|
2519 |
msgstr ""
|
2520 |
|
common/src/Tribe/Admin/Activation_Page.php
CHANGED
@@ -43,6 +43,28 @@ class Tribe__Admin__Activation_Page {
|
|
43 |
$this->hooks();
|
44 |
}
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
/**
|
47 |
* Listen for opportunities to show update and welcome splash pages.
|
48 |
*/
|
43 |
$this->hooks();
|
44 |
}
|
45 |
|
46 |
+
/**
|
47 |
+
* Determines if we are currently on the Welcome page.
|
48 |
+
*
|
49 |
+
* @since 4.12.11
|
50 |
+
*
|
51 |
+
* @return bool
|
52 |
+
*/
|
53 |
+
public function is_welcome_page() {
|
54 |
+
return isset( $_GET[ $this->welcome_slug ] );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Determines if we are currently on the update page.
|
59 |
+
*
|
60 |
+
* @since 4.12.11
|
61 |
+
*
|
62 |
+
* @return bool
|
63 |
+
*/
|
64 |
+
public function is_update_page() {
|
65 |
+
return isset( $_GET[ $this->update_slug ] );
|
66 |
+
}
|
67 |
+
|
68 |
/**
|
69 |
* Listen for opportunities to show update and welcome splash pages.
|
70 |
*/
|
common/src/Tribe/Admin/Notice/Marketing.php
CHANGED
@@ -4,6 +4,9 @@
|
|
4 |
*
|
5 |
* @since 4.7.23
|
6 |
*/
|
|
|
|
|
|
|
7 |
class Tribe__Admin__Notice__Marketing {
|
8 |
|
9 |
/**
|
@@ -36,179 +39,147 @@ class Tribe__Admin__Notice__Marketing {
|
|
36 |
* @since 4.7.23
|
37 |
*/
|
38 |
public function hook() {
|
39 |
-
$this->
|
40 |
-
$this->gutenberg_release_notice();
|
41 |
}
|
42 |
|
43 |
/**
|
44 |
-
* Register the Black Friday
|
45 |
*
|
46 |
-
* @since
|
47 |
*/
|
48 |
-
public function
|
49 |
|
50 |
tribe_notice(
|
51 |
-
'black-friday
|
52 |
-
|
53 |
-
|
54 |
-
'type'
|
55 |
-
'dismiss'
|
56 |
-
'
|
57 |
-
|
58 |
-
|
|
|
59 |
);
|
60 |
}
|
61 |
|
62 |
/**
|
63 |
-
* Unix time for
|
64 |
*
|
65 |
-
* @since
|
66 |
*
|
67 |
* @return int
|
68 |
*/
|
69 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* Allow filtering of the Black Friday sale start date, mainly for testing purposes.
|
72 |
*
|
73 |
-
* @since
|
74 |
*
|
75 |
-
* @param int $bf_start_date Unix time for
|
76 |
*/
|
77 |
-
return apply_filters( '
|
78 |
}
|
79 |
|
80 |
/**
|
81 |
-
* Unix time for
|
82 |
*
|
83 |
-
* @since
|
84 |
*
|
85 |
* @return int
|
86 |
*/
|
87 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
88 |
/**
|
89 |
* Allow filtering of the Black Friday sale end date, mainly for testing purposes.
|
90 |
*
|
91 |
-
* @since
|
92 |
*
|
93 |
-
* @param int $bf_end_date Unix time for
|
94 |
*/
|
95 |
-
return apply_filters( '
|
96 |
}
|
97 |
/**
|
98 |
-
* Whether the Black Friday
|
99 |
*
|
100 |
-
* Unix times for
|
101 |
* 6am UTC is midnight for TheEventsCalendar.com, which uses the America/Los_Angeles time zone.
|
102 |
*
|
103 |
-
* @since
|
104 |
*
|
105 |
* @return boolean
|
106 |
*/
|
107 |
-
public function
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
return $bf_sale_start <= time() && time() < $bf_sale_end;
|
112 |
-
}
|
113 |
-
|
114 |
-
/**
|
115 |
-
* HTML for the Black Friday 2018 notice.
|
116 |
-
*
|
117 |
-
* @since 4.7.23
|
118 |
-
*
|
119 |
-
* @return string
|
120 |
-
*/
|
121 |
-
public function bf_2018_display_notice() {
|
122 |
-
|
123 |
-
Tribe__Assets::instance()->enqueue( array( 'tribe-common-admin' ) );
|
124 |
-
|
125 |
-
$mascot_url = Tribe__Main::instance()->plugin_url . 'src/resources/images/mascot.png';
|
126 |
-
$end_time = $this->get_bf_2018_end_time();
|
127 |
-
|
128 |
-
ob_start();
|
129 |
-
|
130 |
-
if ( $this->tec_is_active && ! $this->et_is_active ) {
|
131 |
-
include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-bf-2018-tec.php';
|
132 |
-
} elseif ( $this->et_is_active && ! $this->tec_is_active ) {
|
133 |
-
include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-bf-2018-et.php';
|
134 |
-
} else {
|
135 |
-
include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-bf-2018-general.php';
|
136 |
}
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
/**
|
142 |
-
* Register the Gutenberg Release notice (November 2018).
|
143 |
-
*
|
144 |
-
* @since 4.7.23
|
145 |
-
*/
|
146 |
-
public function gutenberg_release_notice() {
|
147 |
|
148 |
-
|
149 |
-
'gutenberg-release-2018',
|
150 |
-
array( $this, 'gutenberg_release_display_notice' ),
|
151 |
-
array(
|
152 |
-
'type' => 'warning',
|
153 |
-
'dismiss' => 1,
|
154 |
-
'wrap' => false,
|
155 |
-
),
|
156 |
-
array( $this, 'gutenberg_release_should_display' )
|
157 |
-
);
|
158 |
-
}
|
159 |
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
public function get_gutenberg_release_end_time() {
|
168 |
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
*
|
174 |
-
* @param int $gutenberg_release_end_time Defaults to Nov 17 2018 @ midnight, California time.
|
175 |
-
*/
|
176 |
-
return apply_filters( 'tribe_gutenberg_release_notice_end_time', 1542434400 );
|
177 |
-
}
|
178 |
|
179 |
-
|
180 |
-
* Whether the Gutenberg Release notice should display.
|
181 |
-
*
|
182 |
-
* @since 4.7.23
|
183 |
-
*
|
184 |
-
* @return boolean
|
185 |
-
*/
|
186 |
-
public function gutenberg_release_should_display() {
|
187 |
-
return time() < $this->get_gutenberg_release_end_time();
|
188 |
}
|
189 |
|
190 |
/**
|
191 |
-
* HTML for the
|
192 |
*
|
193 |
-
* @since
|
194 |
*
|
195 |
* @return string
|
196 |
*/
|
197 |
-
public function
|
198 |
-
|
199 |
Tribe__Assets::instance()->enqueue( array( 'tribe-common-admin' ) );
|
200 |
|
201 |
-
$
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
|
209 |
ob_start();
|
210 |
|
211 |
-
include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-
|
212 |
|
213 |
return ob_get_clean();
|
214 |
}
|
4 |
*
|
5 |
* @since 4.7.23
|
6 |
*/
|
7 |
+
|
8 |
+
use Tribe__Date_Utils as Dates;
|
9 |
+
|
10 |
class Tribe__Admin__Notice__Marketing {
|
11 |
|
12 |
/**
|
39 |
* @since 4.7.23
|
40 |
*/
|
41 |
public function hook() {
|
42 |
+
$this->black_friday_hook_notice();
|
|
|
43 |
}
|
44 |
|
45 |
/**
|
46 |
+
* Register the Black Friday notice.
|
47 |
*
|
48 |
+
* @since TBD
|
49 |
*/
|
50 |
+
public function black_friday_hook_notice() {
|
51 |
|
52 |
tribe_notice(
|
53 |
+
'black-friday',
|
54 |
+
[ $this, 'black_friday_display_notice' ],
|
55 |
+
[
|
56 |
+
'type' => 'tribe-banner',
|
57 |
+
'dismiss' => 1,
|
58 |
+
'priority' => -1,
|
59 |
+
'wrap' => false,
|
60 |
+
],
|
61 |
+
[ $this, 'black_friday_should_display' ]
|
62 |
);
|
63 |
}
|
64 |
|
65 |
/**
|
66 |
+
* Unix time for Monday of Thanksgiving week @ 11am UTC. (11am UTC is 6am EST).
|
67 |
*
|
68 |
+
* @since TBD
|
69 |
*
|
70 |
* @return int
|
71 |
*/
|
72 |
+
public function get_black_friday_start_time() {
|
73 |
+
$date = Dates::build_date_object( 'fourth Thursday of November ' . date( 'Y' ), 'UTC' );
|
74 |
+
$date = $date->modify( '-3 days' );
|
75 |
+
$date = $date->setTime( 11, 0 );
|
76 |
+
|
77 |
+
$start_time = $date->format( 'U' );
|
78 |
+
|
79 |
/**
|
80 |
* Allow filtering of the Black Friday sale start date, mainly for testing purposes.
|
81 |
*
|
82 |
+
* @since TBD
|
83 |
*
|
84 |
+
* @param int $bf_start_date Unix time for the Monday of Thanksgiving week @ 6am UTC.
|
85 |
*/
|
86 |
+
return apply_filters( 'tribe_black_friday_start_time', $start_time );
|
87 |
}
|
88 |
|
89 |
/**
|
90 |
+
* Unix time for Dec 1 @ 5am UTC. (5am UTC is 12am EST).
|
91 |
*
|
92 |
+
* @since TBD
|
93 |
*
|
94 |
* @return int
|
95 |
*/
|
96 |
+
public function get_black_friday_end_time() {
|
97 |
+
$date = Dates::build_date_object( 'December 1st', 'UTC' );
|
98 |
+
$date = $date->setTime( 5, 0 );
|
99 |
+
|
100 |
+
$end_time = $date->format( 'U' );
|
101 |
+
|
102 |
/**
|
103 |
* Allow filtering of the Black Friday sale end date, mainly for testing purposes.
|
104 |
*
|
105 |
+
* @since TBD
|
106 |
*
|
107 |
+
* @param int $bf_end_date Unix time for Dec 1 @ 6am UTC.
|
108 |
*/
|
109 |
+
return apply_filters( 'tribe_black_friday_end_time', $end_time );
|
110 |
}
|
111 |
/**
|
112 |
+
* Whether the Black Friday notice should display.
|
113 |
*
|
114 |
+
* Unix times for Monday of Thanksgiving week @ 6am UTC and Dec 1 2020 @ 6am UTC.
|
115 |
* 6am UTC is midnight for TheEventsCalendar.com, which uses the America/Los_Angeles time zone.
|
116 |
*
|
117 |
+
* @since TBD
|
118 |
*
|
119 |
* @return boolean
|
120 |
*/
|
121 |
+
public function black_friday_should_display() {
|
122 |
+
// If upsells have been manually hidden, respect that.
|
123 |
+
if ( defined( 'TRIBE_HIDE_UPSELL' ) && TRIBE_HIDE_UPSELL ) {
|
124 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
}
|
126 |
|
127 |
+
$now = Dates::build_date_object( 'now', 'UTC' )->format( 'U' );
|
128 |
+
$bf_sale_start = $this->get_black_friday_start_time();
|
129 |
+
$bf_sale_end = $this->get_black_friday_end_time();
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
131 |
+
$current_screen = get_current_screen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
|
133 |
+
$screens = [
|
134 |
+
'tribe_events_page_tribe-app-shop', // App shop.
|
135 |
+
'events_page_tribe-app-shop', // App shop.
|
136 |
+
'tribe_events_page_tribe-common', // Settings & Welcome.
|
137 |
+
'events_page_tribe-common', // Settings & Welcome.
|
138 |
+
'toplevel_page_tribe-common', // Settings & Welcome.
|
139 |
+
];
|
|
|
140 |
|
141 |
+
// If not a valid screen, don't display.
|
142 |
+
if ( empty( $current_screen->id ) || ! in_array( $current_screen->id, $screens, true ) ) {
|
143 |
+
return false;
|
144 |
+
}
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
+
return $bf_sale_start <= $now && $now < $bf_sale_end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
148 |
|
149 |
/**
|
150 |
+
* HTML for the Black Friday notice.
|
151 |
*
|
152 |
+
* @since TBD
|
153 |
*
|
154 |
* @return string
|
155 |
*/
|
156 |
+
public function black_friday_display_notice() {
|
|
|
157 |
Tribe__Assets::instance()->enqueue( array( 'tribe-common-admin' ) );
|
158 |
|
159 |
+
$current_screen = get_current_screen();
|
160 |
+
|
161 |
+
$icon_url = Tribe__Main::instance()->plugin_url . 'src/resources/images/icons/sale-burst.svg';
|
162 |
+
$cta_url = 'https://m.tri.be/bf' . date( 'Y' );
|
163 |
+
|
164 |
+
// If we are on the settings page or a welcome page, change the Black Friday URL.
|
165 |
+
if (
|
166 |
+
! empty( $current_screen->id )
|
167 |
+
&& (
|
168 |
+
'tribe_events_page_tribe-common' === $current_screen->id
|
169 |
+
|| 'events_page_tribe-common' === $current_screen->id
|
170 |
+
|| 'toplevel_page_tribe-common' === $current_screen->id
|
171 |
+
)
|
172 |
+
) {
|
173 |
+
if ( isset( $_GET['welcome-message-the-events-calendar'] ) || isset( $_GET['welcome-message-event-tickets' ] ) ) {
|
174 |
+
$cta_url .= 'welcome';
|
175 |
+
} else {
|
176 |
+
$cta_url .= 'settings';
|
177 |
+
}
|
178 |
}
|
179 |
|
180 |
ob_start();
|
181 |
|
182 |
+
include Tribe__Main::instance()->plugin_path . 'src/admin-views/notices/tribe-bf-general.php';
|
183 |
|
184 |
return ob_get_clean();
|
185 |
}
|
common/src/Tribe/Ajax/Dropdown.php
CHANGED
@@ -24,15 +24,15 @@ class Tribe__Ajax__Dropdown {
|
|
24 |
*
|
25 |
* @since 4.6
|
26 |
*
|
27 |
-
* @param string $search Search string from Select2
|
28 |
-
* @param int
|
29 |
-
* @param array
|
30 |
-
* @param string
|
31 |
*
|
32 |
* @return array
|
33 |
*/
|
34 |
public function search_terms( $search, $page, $args, $source ) {
|
35 |
-
$data =
|
36 |
|
37 |
if ( empty( $args['taxonomy'] ) ) {
|
38 |
$this->error( esc_attr__( 'Cannot look for Terms without a taxonomy', 'tribe-common' ) );
|
@@ -43,7 +43,13 @@ class Tribe__Ajax__Dropdown {
|
|
43 |
$args['hide_empty'] = isset( $args['hide_empty'] ) ? $args['hide_empty'] : false;
|
44 |
|
45 |
if ( ! empty( $search ) ) {
|
46 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
}
|
48 |
|
49 |
// On versions older than 4.5 taxonomy goes as an Param
|
@@ -53,7 +59,7 @@ class Tribe__Ajax__Dropdown {
|
|
53 |
$terms = get_terms( $args );
|
54 |
}
|
55 |
|
56 |
-
$results =
|
57 |
|
58 |
// Respect the parent/child_of argument if set
|
59 |
$parent = ! empty( $args['child_of'] ) ? (int) $args['child_of'] : 0;
|
@@ -67,7 +73,7 @@ class Tribe__Ajax__Dropdown {
|
|
67 |
// Prep for Select2
|
68 |
$term->id = $term->term_id;
|
69 |
$term->text = $term->name;
|
70 |
-
$term->breadcrumbs =
|
71 |
|
72 |
if ( 0 !== (int) $term->parent ) {
|
73 |
$ancestors = get_ancestors( $term->id, $term->taxonomy );
|
24 |
*
|
25 |
* @since 4.6
|
26 |
*
|
27 |
+
* @param string|array $search Search string from Select2
|
28 |
+
* @param int $page When we deal with pagination
|
29 |
+
* @param array $args Which arguments we got from the Template
|
30 |
+
* @param string $source What source it is
|
31 |
*
|
32 |
* @return array
|
33 |
*/
|
34 |
public function search_terms( $search, $page, $args, $source ) {
|
35 |
+
$data = [];
|
36 |
|
37 |
if ( empty( $args['taxonomy'] ) ) {
|
38 |
$this->error( esc_attr__( 'Cannot look for Terms without a taxonomy', 'tribe-common' ) );
|
43 |
$args['hide_empty'] = isset( $args['hide_empty'] ) ? $args['hide_empty'] : false;
|
44 |
|
45 |
if ( ! empty( $search ) ) {
|
46 |
+
if ( ! is_array( $search ) ) {
|
47 |
+
// For older pieces that still use Select2 format.
|
48 |
+
$args['search'] = $search;
|
49 |
+
} else {
|
50 |
+
// Newer SelectWoo uses a new search format.
|
51 |
+
$args['search'] = $search['term'];
|
52 |
+
}
|
53 |
}
|
54 |
|
55 |
// On versions older than 4.5 taxonomy goes as an Param
|
59 |
$terms = get_terms( $args );
|
60 |
}
|
61 |
|
62 |
+
$results = [];
|
63 |
|
64 |
// Respect the parent/child_of argument if set
|
65 |
$parent = ! empty( $args['child_of'] ) ? (int) $args['child_of'] : 0;
|
73 |
// Prep for Select2
|
74 |
$term->id = $term->term_id;
|
75 |
$term->text = $term->name;
|
76 |
+
$term->breadcrumbs = [];
|
77 |
|
78 |
if ( 0 !== (int) $term->parent ) {
|
79 |
$ancestors = get_ancestors( $term->id, $term->taxonomy );
|
common/src/Tribe/Assets.php
CHANGED
@@ -255,6 +255,11 @@ class Tribe__Assets {
|
|
255 |
$this->localized[] = $localize->name;
|
256 |
}
|
257 |
}
|
|
|
|
|
|
|
|
|
|
|
258 |
} else {
|
259 |
wp_enqueue_style( $asset->slug );
|
260 |
}
|
@@ -443,6 +448,8 @@ class Tribe__Assets {
|
|
443 |
// Bigger Variables at the end.
|
444 |
'localize' => [],
|
445 |
'conditionals' => [],
|
|
|
|
|
446 |
];
|
447 |
|
448 |
// Merge Arguments.
|
@@ -531,6 +538,11 @@ class Tribe__Assets {
|
|
531 |
$asset->groups = array_unique( $asset->groups );
|
532 |
}
|
533 |
|
|
|
|
|
|
|
|
|
|
|
534 |
/**
|
535 |
* Filter an Asset loading variables.
|
536 |
*
|
255 |
$this->localized[] = $localize->name;
|
256 |
}
|
257 |
}
|
258 |
+
|
259 |
+
// If available, load the script translations.
|
260 |
+
if ( isset( $asset->translations['domain'], $asset->translations['path'] ) && function_exists( 'wp_set_script_translations' ) ) {
|
261 |
+
wp_set_script_translations( $asset->slug, $asset->translations['domain'], $asset->translations['path'] );
|
262 |
+
}
|
263 |
} else {
|
264 |
wp_enqueue_style( $asset->slug );
|
265 |
}
|
448 |
// Bigger Variables at the end.
|
449 |
'localize' => [],
|
450 |
'conditionals' => [],
|
451 |
+
// Used to handle Translations handled in the JavaScript side of the Assets.
|
452 |
+
'translations' => [],
|
453 |
];
|
454 |
|
455 |
// Merge Arguments.
|
538 |
$asset->groups = array_unique( $asset->groups );
|
539 |
}
|
540 |
|
541 |
+
if ( isset( $arguments['translations']['domain'], $arguments['translations']['path'] ) ) {
|
542 |
+
$asset->translastions['domain'] = $arguments['translations']['domain'];
|
543 |
+
$asset->translastions['path'] = $arguments['translations']['path'];
|
544 |
+
}
|
545 |
+
|
546 |
/**
|
547 |
* Filter an Asset loading variables.
|
548 |
*
|
common/src/Tribe/Log/Canonical_Formatter.php
CHANGED
@@ -11,9 +11,37 @@
|
|
11 |
namespace Tribe\Log;
|
12 |
|
13 |
|
|
|
14 |
use Monolog\Formatter\LineFormatter;
|
15 |
|
16 |
-
class Canonical_Formatter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
/**
|
19 |
* Formats a log record.
|
@@ -29,14 +57,59 @@ class Canonical_Formatter extends LineFormatter {
|
|
29 |
|
30 |
if ( $has_context ) {
|
31 |
$record['message'] = $this->format_record_message( $record );
|
32 |
-
|
33 |
-
$this->format = 'tribe-canonical-line channel=%channel% %message%';
|
34 |
} else {
|
35 |
// Fall-back on a standard format if the message does not have a context.
|
36 |
-
$this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
|
42 |
/**
|
11 |
namespace Tribe\Log;
|
12 |
|
13 |
|
14 |
+
use Monolog\Formatter\FormatterInterface;
|
15 |
use Monolog\Formatter\LineFormatter;
|
16 |
|
17 |
+
class Canonical_Formatter implements FormatterInterface {
|
18 |
+
/**
|
19 |
+
* @since TBD
|
20 |
+
*
|
21 |
+
* @var string Our standard format for the Monolog LineFormatter.
|
22 |
+
*/
|
23 |
+
protected $standard_format = 'tribe.%channel%.%level_name%: %message%';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @since TBD
|
27 |
+
*
|
28 |
+
* @var string Our standard format Monolog LineFormatter.
|
29 |
+
*/
|
30 |
+
protected $standard_formatter;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @since TBD
|
34 |
+
*
|
35 |
+
* @var string Our context-aware format for the Monolog LineFormatter.
|
36 |
+
*/
|
37 |
+
protected $context_format = 'tribe-canonical-line channel=%channel% %message%';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @since TBD
|
41 |
+
*
|
42 |
+
* @var string Our context-aware Monolog LineFormatter.
|
43 |
+
*/
|
44 |
+
protected $context_formatter;
|
45 |
|
46 |
/**
|
47 |
* Formats a log record.
|
57 |
|
58 |
if ( $has_context ) {
|
59 |
$record['message'] = $this->format_record_message( $record );
|
60 |
+
$formatter = $this->get_context_formatter();
|
|
|
61 |
} else {
|
62 |
// Fall-back on a standard format if the message does not have a context.
|
63 |
+
$formatter = $this->get_standard_formatter();
|
64 |
+
}
|
65 |
+
|
66 |
+
return $formatter->format( $record );
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Gets a LineFormatter whose format is context aware.
|
71 |
+
*
|
72 |
+
* @since TBD
|
73 |
+
*
|
74 |
+
* @return LineFormatter
|
75 |
+
*/
|
76 |
+
public function get_context_formatter() {
|
77 |
+
if ( empty( $this->context_formatter ) ) {
|
78 |
+
$this->context_formatter = new LineFormatter( $this->context_format );
|
79 |
+
}
|
80 |
+
|
81 |
+
return $this->context_formatter;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Gets a LineFormatter whose format is our standard logging format.
|
86 |
+
*
|
87 |
+
* @since TBD
|
88 |
+
*
|
89 |
+
* @return LineFormatter
|
90 |
+
*/
|
91 |
+
public function get_standard_formatter() {
|
92 |
+
if ( empty( $this->standard_formatter ) ) {
|
93 |
+
$this->standard_formatter = new LineFormatter( $this->standard_format );
|
94 |
}
|
95 |
|
96 |
+
return $this->standard_formatter;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Formats a set of log records.
|
101 |
+
*
|
102 |
+
* This simply hands off the work of formatting Batches to the LineFormatter.
|
103 |
+
*
|
104 |
+
* @since TBD
|
105 |
+
*
|
106 |
+
* @param array $records A set of records to format
|
107 |
+
* @return mixed The formatted set of records
|
108 |
+
*/
|
109 |
+
public function formatBatch( array $records ) {
|
110 |
+
$line_formatter = new LineFormatter();
|
111 |
+
|
112 |
+
return $line_formatter->formatBatch( $records );
|
113 |
}
|
114 |
|
115 |
/**
|
common/src/Tribe/Log/Service_Provider.php
CHANGED
@@ -70,7 +70,7 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
|
|
70 |
*/
|
71 |
$level_threshold = apply_filters( 'tribe_log_level', Logger::WARNING );
|
72 |
|
73 |
-
$error_log_handler = new ErrorLogHandler(
|
74 |
|
75 |
/**
|
76 |
* Filters whether to use canonical format for the logs or not.
|
70 |
*/
|
71 |
$level_threshold = apply_filters( 'tribe_log_level', Logger::WARNING );
|
72 |
|
73 |
+
$error_log_handler = new ErrorLogHandler( ErrorLogHandler::OPERATING_SYSTEM, $level_threshold );
|
74 |
|
75 |
/**
|
76 |
* Filters whether to use canonical format for the logs or not.
|
common/src/Tribe/Main.php
CHANGED
@@ -19,7 +19,7 @@ class Tribe__Main {
|
|
19 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
20 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
21 |
|
22 |
-
const VERSION = '4.12.
|
23 |
|
24 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
25 |
|
@@ -637,6 +637,7 @@ class Tribe__Main {
|
|
637 |
tribe_register_provider( Tribe\Service_Providers\Body_Classes::class );
|
638 |
tribe_register_provider( Tribe\Log\Service_Provider::class );
|
639 |
tribe_register_provider( Tribe\Service_Providers\Crons::class );
|
|
|
640 |
}
|
641 |
|
642 |
/**
|
19 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
20 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
21 |
|
22 |
+
const VERSION = '4.12.12.1';
|
23 |
|
24 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
25 |
|
637 |
tribe_register_provider( Tribe\Service_Providers\Body_Classes::class );
|
638 |
tribe_register_provider( Tribe\Log\Service_Provider::class );
|
639 |
tribe_register_provider( Tribe\Service_Providers\Crons::class );
|
640 |
+
tribe_register_provider( Tribe\Service_Providers\Widgets::class );
|
641 |
}
|
642 |
|
643 |
/**
|
common/src/Tribe/Service_Providers/Widgets.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Tribe\Service_Providers;
|
3 |
+
|
4 |
+
use Tribe\Widget\Manager;
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Class Widget
|
8 |
+
*
|
9 |
+
* @since 5.12.12
|
10 |
+
*
|
11 |
+
* @package Tribe\Service_Providers
|
12 |
+
*/
|
13 |
+
class Widgets extends \tad_DI52_ServiceProvider {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Binds and sets up implementations.
|
17 |
+
*
|
18 |
+
* @since 5.12.12
|
19 |
+
*/
|
20 |
+
public function register() {
|
21 |
+
if ( ! static::is_active() ) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
+
|
25 |
+
$this->container->singleton( Manager::class, Manager::class );
|
26 |
+
$this->container->singleton(
|
27 |
+
'widget.manager',
|
28 |
+
function() {
|
29 |
+
return $this->container->make( Manager::class );
|
30 |
+
}
|
31 |
+
);
|
32 |
+
|
33 |
+
$this->register_hooks();
|
34 |
+
|
35 |
+
$this->container->singleton( static::class, $this );
|
36 |
+
$this->container->singleton( 'widgets', $this );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Static method wrapper around a filter to allow full deactivation of this provider.
|
41 |
+
*
|
42 |
+
* @since 5.12.12
|
43 |
+
*
|
44 |
+
* @return boolean If this service provider is active.
|
45 |
+
*/
|
46 |
+
public static function is_active() {
|
47 |
+
/**
|
48 |
+
* Allows filtering to prevent all Tribe widgets from loading.
|
49 |
+
*
|
50 |
+
* @since 5.12.12
|
51 |
+
*
|
52 |
+
* @param boolean $is_active If widgets should be loaded or not.
|
53 |
+
*/
|
54 |
+
return apply_filters( 'tribe_widgets_is_active', true );
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Registers the provider handling all the 1st level filters and actions for this service provider.
|
59 |
+
*
|
60 |
+
* @since 5.12.12
|
61 |
+
*/
|
62 |
+
protected function register_hooks() {
|
63 |
+
add_action( 'widgets_init', [ $this, 'register_widgets_with_wp' ], 20 );
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Adds the new widgets.
|
68 |
+
*
|
69 |
+
* This triggers on `init@P20` due to how v1 is added on `init@P10` and removed on `init@P15`,
|
70 |
+
* as it's important to leave gaps on priority for future flexibility.
|
71 |
+
*
|
72 |
+
* @since 5.12.12
|
73 |
+
*/
|
74 |
+
public function register_widgets_with_wp() {
|
75 |
+
$this->container->make( Manager::class )->register_widgets_with_wp();
|
76 |
+
}
|
77 |
+
}
|
common/src/Tribe/Widget/Manager.php
ADDED
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widgets manager for Tribe plugins.
|
4 |
+
*
|
5 |
+
* @since 5.12.12
|
6 |
+
*
|
7 |
+
* @package Tribe\Widget
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Widget;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Widget Manager.
|
14 |
+
*
|
15 |
+
* @since 5.12.12
|
16 |
+
*
|
17 |
+
* @package Tribe\Widget
|
18 |
+
*/
|
19 |
+
class Manager {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Get the list of widgets available for handling.
|
23 |
+
*
|
24 |
+
* @since 5.12.12
|
25 |
+
*
|
26 |
+
* @return array An associative array of widgets in the shape `[ <slug> => <class> ]`.
|
27 |
+
*/
|
28 |
+
public function get_registered_widgets() {
|
29 |
+
$widgets = [];
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Allow the registering of widgets from other plugins.
|
33 |
+
*
|
34 |
+
* @since 5.12.12
|
35 |
+
*
|
36 |
+
* @var array<string,string> An associative array of widgets in the shape `[ <slug> => <class> ]`.
|
37 |
+
*/
|
38 |
+
$widgets = apply_filters( 'tribe_widgets', $widgets );
|
39 |
+
|
40 |
+
return $widgets;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Verifies if a given widget slug is registered for handling.
|
45 |
+
*
|
46 |
+
* @since 5.12.12
|
47 |
+
*
|
48 |
+
* @param string $slug The widget slug we are checking for registration.
|
49 |
+
*
|
50 |
+
* @return bool Whether the widget is registered or not.
|
51 |
+
*/
|
52 |
+
public function is_widget_registered( $slug ) {
|
53 |
+
$registered_widgets = $this->get_registered_widgets();
|
54 |
+
|
55 |
+
return isset( $registered_widgets[ $slug ] );
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Verifies if a given widget class name is registered for handling.
|
60 |
+
*
|
61 |
+
* @since 5.12.12
|
62 |
+
*
|
63 |
+
* @param string $class_name The widget class name we are checking for registration.
|
64 |
+
*
|
65 |
+
* @return bool Whether the widget is registered, by class.
|
66 |
+
*/
|
67 |
+
public function is_widget_registered_by_class( $class_name ) {
|
68 |
+
$registered_widgets = $this->get_registered_widgets();
|
69 |
+
|
70 |
+
return in_array( $class_name, $registered_widgets, true );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Add new widgets handler to ensure our list of widget slugs is registered by class name.
|
75 |
+
*
|
76 |
+
* @since 5.12.12
|
77 |
+
*/
|
78 |
+
public function register_widgets_with_wp() {
|
79 |
+
$registered_widgets = $this->get_registered_widgets();
|
80 |
+
|
81 |
+
// Add to WordPress all of the registered Widgets.
|
82 |
+
foreach ( $registered_widgets as $widget => $class_name ) {
|
83 |
+
register_widget( $class_name );
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* Remove Widget from WordPress widget register by class name.
|
89 |
+
*
|
90 |
+
* @since 5.12.12
|
91 |
+
*
|
92 |
+
* @param string $class_name The class name of the widget to unregister.
|
93 |
+
*/
|
94 |
+
public function unregister_widget_from_wp( $class_name ) {
|
95 |
+
unregister_widget( $class_name );
|
96 |
+
}
|
97 |
+
}
|
common/src/Tribe/Widget/Widget_Abstract.php
ADDED
@@ -0,0 +1,314 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Tribe\Widget;
|
4 |
+
|
5 |
+
use Tribe__Utils__Array as Arr;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* The abstract base without Views that all widgets should implement.
|
9 |
+
*
|
10 |
+
* @since 5.12.12
|
11 |
+
*
|
12 |
+
* @package Tribe\Widget
|
13 |
+
*/
|
14 |
+
abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Slug of the current widget.
|
18 |
+
*
|
19 |
+
* @since 5.12.12
|
20 |
+
*
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
protected $slug;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Default arguments to be merged into final arguments of the widget.
|
27 |
+
*
|
28 |
+
* @since 5.12.12
|
29 |
+
*
|
30 |
+
* @var array<string,mixed>
|
31 |
+
*/
|
32 |
+
protected $default_arguments = [];
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Array map allowing aliased widget arguments.
|
36 |
+
*
|
37 |
+
* The array keys are aliases of the array values (i.e. the "real" widget attributes to parse).
|
38 |
+
* Example array: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
|
39 |
+
* Example widget usage: [some_tag alias=17 to='Fred'] will be parsed as [some_tag canonical=17 to='Fred']
|
40 |
+
*
|
41 |
+
* @since 5.12.12
|
42 |
+
*
|
43 |
+
* @var array<string,string>
|
44 |
+
*/
|
45 |
+
protected $aliased_arguments = [];
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Array of callbacks for validation of arguments.
|
49 |
+
*
|
50 |
+
* @since 5.12.12
|
51 |
+
*
|
52 |
+
* @var array<string,callable>
|
53 |
+
*/
|
54 |
+
protected $validate_arguments_map = [];
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Arguments of the current widget.
|
58 |
+
*
|
59 |
+
* @since 5.12.12
|
60 |
+
*
|
61 |
+
* @var array<string,mixed>
|
62 |
+
*/
|
63 |
+
protected $arguments;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* HTML content of the current widget.
|
67 |
+
*
|
68 |
+
* @since 5.12.12
|
69 |
+
*
|
70 |
+
* @var string
|
71 |
+
*/
|
72 |
+
protected $content;
|
73 |
+
|
74 |
+
/**
|
75 |
+
* {@inheritDoc}
|
76 |
+
*/
|
77 |
+
public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] ) {
|
78 |
+
$arguments = $this->get_arguments();
|
79 |
+
|
80 |
+
parent::__construct(
|
81 |
+
Arr::get( $arguments, 'id_base', '' ),
|
82 |
+
Arr::get( $arguments, 'name', '' ),
|
83 |
+
Arr::get( $arguments, 'widget_options', [] ),
|
84 |
+
Arr::get( $arguments, 'control_options', [] )
|
85 |
+
);
|
86 |
+
|
87 |
+
// @todo add what this does in in TEC-3612 & TEC-3613.
|
88 |
+
$this->setup();
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Setup the widget.
|
93 |
+
*
|
94 |
+
* @todo update in TEC-3612 & TEC-3613
|
95 |
+
*
|
96 |
+
* @since 5.12.12
|
97 |
+
*
|
98 |
+
* @return mixed
|
99 |
+
*/
|
100 |
+
public abstract function setup();
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Echoes the widget content.
|
104 |
+
*
|
105 |
+
* @todo Widget display will be handled in TEC-3620 & TEC-3597.
|
106 |
+
* @todo Add future support for passing along `$args` and `$instance` for the widget HTML view.
|
107 |
+
*
|
108 |
+
* @since 5.12.12
|
109 |
+
*
|
110 |
+
* @param array<string,mixed> $args Display arguments including 'before_title', 'after_title',
|
111 |
+
* 'before_widget', and 'after_widget'.
|
112 |
+
* @param array<string,mixed> $instance The settings for the particular instance of the widget.
|
113 |
+
*/
|
114 |
+
public function widget( $args, $instance ) {
|
115 |
+
echo $this->get_html();
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Returns the rendered View HTML code.
|
120 |
+
*
|
121 |
+
* @since 5.12.12
|
122 |
+
*
|
123 |
+
* @return string
|
124 |
+
*/
|
125 |
+
public abstract function get_html();
|
126 |
+
|
127 |
+
/**
|
128 |
+
* {@inheritDoc}
|
129 |
+
*/
|
130 |
+
public function set_aliased_arguments( array $alias_map ) {
|
131 |
+
$this->aliased_arguments = Arr::filter_to_flat_scalar_associative_array( (array) $alias_map );
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* {@inheritDoc}
|
136 |
+
*/
|
137 |
+
public function get_aliased_arguments() {
|
138 |
+
return $this->aliased_arguments;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* {@inheritDoc}
|
143 |
+
*/
|
144 |
+
public function parse_arguments( array $arguments ) {
|
145 |
+
$arguments = Arr::parse_associative_array_alias( (array) $arguments, (array) $this->get_aliased_arguments() );
|
146 |
+
|
147 |
+
return $this->validate_arguments( $arguments );
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* {@inheritDoc}
|
152 |
+
*/
|
153 |
+
public function validate_arguments( array $arguments ) {
|
154 |
+
$validate_arguments_map = $this->get_validated_arguments_map();
|
155 |
+
foreach ( $validate_arguments_map as $key => $callback ) {
|
156 |
+
$arguments[ $key ] = $callback( isset( $arguments[ $key ] ) ? $arguments[ $key ] : null );
|
157 |
+
}
|
158 |
+
|
159 |
+
return $arguments;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* {@inheritDoc}
|
164 |
+
*/
|
165 |
+
public function get_registration_slug() {
|
166 |
+
return $this->slug;
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* {@inheritDoc}
|
171 |
+
*/
|
172 |
+
public function get_validated_arguments_map() {
|
173 |
+
/**
|
174 |
+
* Applies a filter to the validation map for instance arguments.
|
175 |
+
*
|
176 |
+
* @since 5.12.12
|
177 |
+
*
|
178 |
+
* @param array<string,callable> $validate_arguments_map Current set of callbacks for arguments.
|
179 |
+
* @param static $instance The widget instance we are dealing with.
|
180 |
+
*/
|
181 |
+
$validate_arguments_map = apply_filters( 'tribe_widget_validate_arguments_map', $this->validate_arguments_map, $this );
|
182 |
+
|
183 |
+
$registration_slug = $this->get_registration_slug();
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Applies a filter to the validation map for instance arguments for a specific widget. Based on the registration slug of the widget
|
187 |
+
*
|
188 |
+
* @since 5.12.12
|
189 |
+
*
|
190 |
+
* @param array<string,callable> $validate_arguments_map Current set of callbacks for arguments.
|
191 |
+
* @param static $instance The widget instance we are dealing with.
|
192 |
+
*/
|
193 |
+
$validate_arguments_map = apply_filters( "tribe__widget_{$registration_slug}_validate_arguments_map", $validate_arguments_map, $this );
|
194 |
+
|
195 |
+
return $validate_arguments_map;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* {@inheritDoc}
|
200 |
+
*/
|
201 |
+
public function get_arguments() {
|
202 |
+
|
203 |
+
return $this->filter_arguments( $this->arguments );
|
204 |
+
}
|
205 |
+
|
206 |
+
/**
|
207 |
+
* {@inheritDoc}
|
208 |
+
*/
|
209 |
+
public function filter_arguments( $arguments ) {
|
210 |
+
/**
|
211 |
+
* Applies a filter to instance arguments.
|
212 |
+
*
|
213 |
+
* @since 5.12.12
|
214 |
+
*
|
215 |
+
* @param array<string,mixed> $arguments Current set of arguments.
|
216 |
+
* @param static $instance The widget instance we are dealing with.
|
217 |
+
*/
|
218 |
+
$arguments = apply_filters( 'tribe_widget_arguments', $arguments, $this );
|
219 |
+
|
220 |
+
$registration_slug = $this->get_registration_slug();
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Applies a filter to instance arguments based on the registration slug of the widget.
|
224 |
+
*
|
225 |
+
* @since 5.12.12
|
226 |
+
*
|
227 |
+
* @param array<string,mixed> $arguments Current set of arguments.
|
228 |
+
* @param static $instance The widget instance we are dealing with.
|
229 |
+
*/
|
230 |
+
$arguments = apply_filters( "tribe_widget_{$registration_slug}_arguments", $arguments, $this );
|
231 |
+
|
232 |
+
return $arguments;
|
233 |
+
}
|
234 |
+
|
235 |
+
|
236 |
+
/**
|
237 |
+
* {@inheritDoc}
|
238 |
+
*/
|
239 |
+
public function get_argument( $index, $default = null ) {
|
240 |
+
$arguments = $this->get_arguments();
|
241 |
+
$argument = Arr::get( $arguments, $index, $default );
|
242 |
+
|
243 |
+
return $this->filter_argument( $argument, $index, $default );
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* {@inheritDoc}
|
248 |
+
*/
|
249 |
+
public function filter_argument( $argument, $index, $default = null ) {
|
250 |
+
/**
|
251 |
+
* Applies a filter to a specific widget argument, catch all for all widgets.
|
252 |
+
*
|
253 |
+
* @since 5.12.12
|
254 |
+
*
|
255 |
+
* @param mixed $argument The argument.
|
256 |
+
* @param string|int $index Which index we intend to fetch from the arguments.
|
257 |
+
* @param array<string,mixed> $default Default value if it doesn't exist.
|
258 |
+
* @param static $instance The widget instance we are dealing with.
|
259 |
+
*/
|
260 |
+
$argument = apply_filters( 'tribe_widget_argument', $argument, $index, $default, $this );
|
261 |
+
|
262 |
+
$registration_slug = $this->get_registration_slug();
|
263 |
+
|
264 |
+
/**
|
265 |
+
* Applies a filter to a specific widget argument, to a particular registration slug.
|
266 |
+
*
|
267 |
+
* @since 5.12.12
|
268 |
+
*
|
269 |
+
* @param mixed $argument The argument value.
|
270 |
+
* @param string|int $index Which index we intend to fetch from the arguments.
|
271 |
+
* @param mixed $default Default value if it doesn't exist.
|
272 |
+
* @param static $instance The widget instance we are dealing with.
|
273 |
+
*/
|
274 |
+
$argument = apply_filters( "tribe_widget_{$registration_slug}_argument", $argument, $index, $default, $this );
|
275 |
+
|
276 |
+
return $argument;
|
277 |
+
}
|
278 |
+
|
279 |
+
/**
|
280 |
+
* {@inheritDoc}
|
281 |
+
*/
|
282 |
+
public function get_default_arguments() {
|
283 |
+
return $this->filter_default_arguments( $this->default_arguments );
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* {@inheritDoc}
|
288 |
+
*/
|
289 |
+
public function filter_default_arguments( array $default_arguments = [] ) {
|
290 |
+
/**
|
291 |
+
* Applies a filter to default instance arguments.
|
292 |
+
*
|
293 |
+
* @since 5.12.12
|
294 |
+
*
|
295 |
+
* @param array<string,mixed> $default_arguments Current set of default arguments.
|
296 |
+
* @param static $instance The widget instance we are dealing with.
|
297 |
+
*/
|
298 |
+
$default_arguments = apply_filters( 'tribe_widget_default_arguments', $default_arguments, $this );
|
299 |
+
|
300 |
+
$registration_slug = $this->get_registration_slug();
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Applies a filter to default instance arguments based on the registration slug of the widget.
|
304 |
+
*
|
305 |
+
* @since 5.12.12
|
306 |
+
*
|
307 |
+
* @param array<string,mixed> $default_arguments Current set of default arguments.
|
308 |
+
* @param static $instance The widget instance we are dealing with.
|
309 |
+
*/
|
310 |
+
$default_arguments = apply_filters( "tribe_widget_{$registration_slug}_default_arguments", $default_arguments, $this );
|
311 |
+
|
312 |
+
return $default_arguments;
|
313 |
+
}
|
314 |
+
}
|
common/src/Tribe/Widget/Widget_Interface.php
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Tribe\Widget;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Interface Widget_Interface
|
7 |
+
*
|
8 |
+
* @since 5.12.12
|
9 |
+
*
|
10 |
+
* @package Tribe\Widget
|
11 |
+
*
|
12 |
+
*/
|
13 |
+
interface Widget_Interface {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Constructor for V2 Widgets.
|
17 |
+
*
|
18 |
+
* @since 5.12.12
|
19 |
+
*
|
20 |
+
* @param string $id_base Optional. Base ID for the widget, lowercase. If left empty,
|
21 |
+
* a portion of the widget's class name will be used. Has to be unique.
|
22 |
+
* @param string $name Name for the widget displayed on the configuration page.
|
23 |
+
* @param array<string,mixed> $widget_options Optional. Widget options. See wp_register_sidebar_widget() for
|
24 |
+
* information on accepted arguments. Default empty array.
|
25 |
+
* @param array<string,mixed> $control_options Optional. Widget control options. See wp_register_widget_control() for
|
26 |
+
* information on accepted arguments. Default empty array.
|
27 |
+
*/
|
28 |
+
public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] );
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Echoes the widget content.
|
32 |
+
*
|
33 |
+
* @since 5.12.12
|
34 |
+
*
|
35 |
+
* @param array<string,mixed> $args Display arguments including 'before_title', 'after_title',
|
36 |
+
* 'before_widget', and 'after_widget'.
|
37 |
+
* @param array<string,mixed> $instance The settings for the particular instance of the widget.
|
38 |
+
*/
|
39 |
+
public function widget( $args, $instance );
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Updates a particular instance of a widget.
|
43 |
+
*
|
44 |
+
* This function should check that `$new_instance` is set correctly. The newly-calculated
|
45 |
+
* value of `$instance` should be returned. If false is returned, the instance won't be
|
46 |
+
* saved/updated.
|
47 |
+
*
|
48 |
+
* @since 5.12.12
|
49 |
+
*
|
50 |
+
* @param array<string,mixed> $new_instance New settings for this instance as input by the user via
|
51 |
+
* WP_Widget::form().
|
52 |
+
* @param array<string,mixed> $old_instance Old settings for this instance.
|
53 |
+
*
|
54 |
+
* @return array<string,mixed> Settings to save or bool false to cancel saving.
|
55 |
+
*/
|
56 |
+
public function update( $new_instance, $old_instance );
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Outputs the settings update form.
|
60 |
+
*
|
61 |
+
* @since 5.12.12
|
62 |
+
*
|
63 |
+
* @param array<string,mixed> $instance Current settings.
|
64 |
+
*
|
65 |
+
* @return string Default return is 'noform'.
|
66 |
+
*/
|
67 |
+
public function form( $instance );
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Returns the widget slug that allows the widget to be built via the widget class using that slug.
|
71 |
+
*
|
72 |
+
* @since 5.12.12
|
73 |
+
*
|
74 |
+
* @return string The widget slug.
|
75 |
+
*/
|
76 |
+
public function get_registration_slug();
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Sets the aliased arguments array.
|
80 |
+
*
|
81 |
+
* @see Tribe__Utils__Array::parse_associative_array_alias() The expected format.
|
82 |
+
*
|
83 |
+
* @since 5.12.12
|
84 |
+
*
|
85 |
+
* @param array<string,mixed> $alias_map An associative array of aliases: key as alias, value as mapped canonical.
|
86 |
+
* Example: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
|
87 |
+
*/
|
88 |
+
public function set_aliased_arguments( array $alias_map );
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Gets the aliased arguments array.
|
92 |
+
*
|
93 |
+
* @since 5.12.12
|
94 |
+
*
|
95 |
+
* @return array<string,string> The associative array map of aliases and their canonical arguments.
|
96 |
+
*/
|
97 |
+
public function get_aliased_arguments();
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Returns the arguments for the widget parsed correctly with defaults applied.
|
101 |
+
*
|
102 |
+
* @since 5.12.12
|
103 |
+
*
|
104 |
+
* @param array $arguments Set of arguments passed to the widget at hand.
|
105 |
+
*
|
106 |
+
* @return array<string,mixed> The parsed widget arguments map.
|
107 |
+
*/
|
108 |
+
public function parse_arguments( array $arguments );
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Returns the array of arguments for this widget after applying the validation callbacks.
|
112 |
+
*
|
113 |
+
* @since 5.12.12
|
114 |
+
*
|
115 |
+
* @param array $arguments Set of arguments passed to the widget at hand.
|
116 |
+
*
|
117 |
+
* @return array<string,mixed> The validated widget arguments map.
|
118 |
+
*/
|
119 |
+
public function validate_arguments( array $arguments );
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Returns the array of callbacks for this widget's arguments.
|
123 |
+
*
|
124 |
+
* @since 5.12.12
|
125 |
+
*
|
126 |
+
* @return array<string,mixed> A map of the widget arguments that have survived validation.
|
127 |
+
*/
|
128 |
+
public function get_validated_arguments_map();
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Returns a widget arguments after been parsed.
|
132 |
+
*
|
133 |
+
* @since 5.12.12
|
134 |
+
*
|
135 |
+
* @return array<string,mixed> The widget arguments, as set by the user in the widget string.
|
136 |
+
*/
|
137 |
+
public function get_arguments();
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Get a widget's arguments after they have been been parsed.
|
141 |
+
*
|
142 |
+
* @since 5.12.12
|
143 |
+
*
|
144 |
+
* @param array<string,mixed> $arguments Current set of arguments.
|
145 |
+
*
|
146 |
+
* @return array<string,mixed> The widget arguments, as set by the user in the widget string.
|
147 |
+
*/
|
148 |
+
public function filter_arguments( $arguments );
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Get a single widget argument after it has been parsed and filtered.
|
152 |
+
*
|
153 |
+
* @since 5.12.12
|
154 |
+
*
|
155 |
+
* @param string|int $index Which index we intend to fetch from the arguments.
|
156 |
+
* @param array|mixed $default Default value if it doesn't exist.
|
157 |
+
*
|
158 |
+
* @uses Tribe__Utils__Array::get For index fetching and Default.
|
159 |
+
*
|
160 |
+
* @return mixed Value for the Index passed as the first argument.
|
161 |
+
*/
|
162 |
+
public function get_argument( $index, $default = null );
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Filter a widget argument.
|
166 |
+
*
|
167 |
+
* @since 5.12.12
|
168 |
+
*
|
169 |
+
* @param mixed $argument The argument value.
|
170 |
+
* @param string|int $index Which index we intend to fetch from the arguments.
|
171 |
+
* @param array|mixed $default Default value if it doesn't exist.
|
172 |
+
*
|
173 |
+
* @uses Tribe__Utils__Array::get For index fetching and Default.
|
174 |
+
*
|
175 |
+
* @return mixed Value for the Index passed as the first argument.
|
176 |
+
*/
|
177 |
+
public function filter_argument( $argument, $index, $default = null );
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Get default arguments for a widget.
|
181 |
+
*
|
182 |
+
* @since 5.12.12
|
183 |
+
*
|
184 |
+
* @return array<string,mixed> The map of widget default arguments.
|
185 |
+
*/
|
186 |
+
public function get_default_arguments();
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Get a widget's default arguments.
|
190 |
+
*
|
191 |
+
* @since 5.12.12
|
192 |
+
*
|
193 |
+
* @param array<string,mixed> $default_arguments Current set of default arguments.
|
194 |
+
*
|
195 |
+
* @return array<string,mixed> The map of widget default arguments.
|
196 |
+
*/
|
197 |
+
public function filter_default_arguments( array $default_arguments = [] );
|
198 |
+
|
199 |
+
/**
|
200 |
+
* Returns a widget's HTML.
|
201 |
+
*
|
202 |
+
* @since 5.12.12
|
203 |
+
*
|
204 |
+
* @return string The rendered widget's HTML code.
|
205 |
+
*/
|
206 |
+
public function get_html();
|
207 |
+
}
|
common/src/admin-views/notices/tribe-bf-2018-et.php
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Black Friday 2018 admin notice for when only ET is active.
|
4 |
-
*
|
5 |
-
* @since 4.7.23
|
6 |
-
*
|
7 |
-
* @var string $mascot_url The local URL for the notice's mascot image.
|
8 |
-
* @var int $end_time The Unix timestamp for the sale's end time.
|
9 |
-
*/
|
10 |
-
?>
|
11 |
-
<div class="tribe-marketing-notice">
|
12 |
-
<div class="tribe-notice-icon">
|
13 |
-
<img src="<?php echo esc_url( $mascot_url ); ?>" />
|
14 |
-
</div>
|
15 |
-
<div class="tribe-notice-content">
|
16 |
-
<h3>Event Tickets Plus is on Sale Today!</h3>
|
17 |
-
<p>Premium functionality = premium results. Event Tickets Plus integrates directly with WooCommerce and includes a slew of prime features like global ticket stock, custom attendee fields, and QR codes for easy check-ins.</p>
|
18 |
-
<p><a target="_blank" class="button button-primary alignleft" href="http://m.tri.be/1a8m">Shop our holiday sale now!</a></p>
|
19 |
-
</div>
|
20 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/src/admin-views/notices/tribe-bf-2018-general.php
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Black Friday 2018 admin notice for when both ET and TEC are active.
|
4 |
-
*
|
5 |
-
* @since 4.7.23
|
6 |
-
*
|
7 |
-
* @var string $mascot_url The local URL for the notice's mascot image.
|
8 |
-
* @var int $end_time The Unix timestamp for the sale's end time.
|
9 |
-
*/
|
10 |
-
?>
|
11 |
-
<div class="tribe-marketing-notice">
|
12 |
-
<div class="tribe-notice-icon">
|
13 |
-
<img src="<?php echo esc_url( $mascot_url ); ?>" />
|
14 |
-
</div>
|
15 |
-
<div class="tribe-notice-content">
|
16 |
-
<h3>Today: All Premium Calendar Add-Ons are on Sale!</h3>
|
17 |
-
<p>Save up to 30% on all of our premium calendar and ticketing add-ons, including Events Calendar PRO, Event Tickets Plus, Filter Bar, Community Events, and more!</p>
|
18 |
-
<p><a target="_blank" class="button button-primary" href="http://m.tri.be/1a8n">Shop Now</a></p>
|
19 |
-
</div>
|
20 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/src/admin-views/notices/tribe-bf-2018-tec.php
DELETED
@@ -1,20 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Black Friday 2018 admin notice for when only TEC is active.
|
4 |
-
*
|
5 |
-
* @since 4.7.23
|
6 |
-
*
|
7 |
-
* @var string $mascot_url The local URL for the notice's mascot image.
|
8 |
-
* @var int $end_time The Unix timestamp for the sale's end time.
|
9 |
-
*/
|
10 |
-
?>
|
11 |
-
<div class="tribe-marketing-notice tribe-bf-2018-tec">
|
12 |
-
<div class="tribe-notice-icon">
|
13 |
-
<img src="<?php echo esc_url( $mascot_url ); ?>" />
|
14 |
-
</div>
|
15 |
-
<div class="tribe-notice-content">
|
16 |
-
<h3>Up to 30% Off!</h3>
|
17 |
-
<p>Save big on Events Calendar PRO, Filter Bar, Community Events, and more during our huge Black Friday sale!</p>
|
18 |
-
<p><a target="_blank" class="button button-primary" href="http://m.tri.be/1a8l">Shop Now</a> <em>(But hurry, because this offer ends on <abbr title="<?php echo esc_attr( date_i18n( 'r', $end_time ) ); ?>">Monday, November 26th</abbr>.)</em></p>
|
19 |
-
</div>
|
20 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/src/admin-views/notices/tribe-bf-general.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Black Friday admin notice.
|
4 |
+
*
|
5 |
+
* @since TBD
|
6 |
+
*
|
7 |
+
* @var string $icon_url The local URL for the notice's image.
|
8 |
+
* @var string $cta_url The short URL for black friday.
|
9 |
+
*/
|
10 |
+
?>
|
11 |
+
<div class="tribe-marketing-notice">
|
12 |
+
<div class="tribe-marketing-notice__icon">
|
13 |
+
<img src="<?php echo esc_url( $icon_url ); ?>"/>
|
14 |
+
</div>
|
15 |
+
<div class="tribe-marketing-notice__content">
|
16 |
+
<h3>Save 40% on Every. Single. Plugin.</h3>
|
17 |
+
<p>
|
18 |
+
Black Friday Sale now through November 30.
|
19 |
+
<span class="tribe-marketing-notice__cta"><a target="_blank" href="<?php echo esc_url( $cta_url ); ?>">Shop now</a></span>
|
20 |
+
</p>
|
21 |
+
</div>
|
22 |
+
</div>
|
common/src/admin-views/notices/tribe-gutenberg-release.php
DELETED
@@ -1,21 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* The Gutenberg Release admin notice for when TEC is active, or TEC *and* ET.
|
4 |
-
*
|
5 |
-
* @since 4.7.23
|
6 |
-
*
|
7 |
-
* @var int $icon The local URL for the notice's icon image.
|
8 |
-
* @var int $end_time The Unix timestamp for the release notice's end time.
|
9 |
-
*/
|
10 |
-
?>
|
11 |
-
<div class="tribe-marketing-notice">
|
12 |
-
<div class="tribe-notice-icon">
|
13 |
-
<img src="<?php echo esc_url( $icon_url ); ?>" />
|
14 |
-
</div>
|
15 |
-
<div class="tribe-notice-content">
|
16 |
-
<h3>Breaking News: Gutenberg Block Editor Release</h3>
|
17 |
-
<p>The beta version of WordPress 5.0 is out! This is a <strong>big deal</strong>: the official release of the new editing interface is right around the corner.</p>
|
18 |
-
<p>Once this release happens, the new block editor will become the default editor for all WordPress sites running version 5.0 or higher. We recommend you familiarize yourself ASAP so you’re ready for the change when it happens.</p>
|
19 |
-
<a href="http://m.tri.be/1a8o" target="_blank" class="button button-primary">Get Up to Speed</a>
|
20 |
-
</div>
|
21 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
common/src/admin-views/tribe-options-display.php
CHANGED
@@ -27,7 +27,7 @@ $displayTab = array(
|
|
27 |
. sprintf(
|
28 |
__( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
|
29 |
'<code>date()</code>',
|
30 |
-
'https://
|
31 |
)
|
32 |
. '</p>',
|
33 |
),
|
27 |
. sprintf(
|
28 |
__( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
|
29 |
'<code>date()</code>',
|
30 |
+
'https://wordpress.org/support/article/formatting-date-and-time/'
|
31 |
)
|
32 |
. '</p>',
|
33 |
),
|
common/src/functions/utils.php
CHANGED
@@ -289,21 +289,21 @@ if ( ! function_exists( 'tribe_normalize_terms_list' ) ) {
|
|
289 |
|
290 |
return $normalized;
|
291 |
}
|
|
|
292 |
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
|
305 |
-
|
306 |
-
}
|
307 |
}
|
308 |
}
|
309 |
|
@@ -1107,4 +1107,35 @@ if ( ! function_exists( 'tribe_without_filters' ) ) {
|
|
1107 |
|
1108 |
return $result;
|
1109 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1110 |
}
|
289 |
|
290 |
return $normalized;
|
291 |
}
|
292 |
+
}
|
293 |
|
294 |
+
if ( ! function_exists( 'tribe_upload_image' ) ) {
|
295 |
+
/**
|
296 |
+
* @see Tribe__Image__Uploader::upload_and_get_attachment_id()
|
297 |
+
*
|
298 |
+
* @param string|int $image The path to an image file, an image URL or an attachment post ID.
|
299 |
+
*
|
300 |
+
* @return int|bool The attachment post ID if the uploading and attachment is successful or the ID refers to an attachment;
|
301 |
+
* `false` otherwise.
|
302 |
+
*/
|
303 |
+
function tribe_upload_image( $image ) {
|
304 |
+
$uploader = new Tribe__Image__Uploader( $image );
|
305 |
|
306 |
+
return $uploader->upload_and_get_attachment_id();
|
|
|
307 |
}
|
308 |
}
|
309 |
|
1107 |
|
1108 |
return $result;
|
1109 |
}
|
1110 |
+
|
1111 |
+
/**
|
1112 |
+
* Runs a callbacks while suspending, removing and re-adding, a filter or action.
|
1113 |
+
*
|
1114 |
+
* The function will infer the priority of the filter, required for its correct detachment and re-attachment, on
|
1115 |
+
* its own.
|
1116 |
+
*
|
1117 |
+
* @since 5.12.12
|
1118 |
+
*
|
1119 |
+
* @param string $filter_tag The filter tag to suspend.
|
1120 |
+
* @param callable $filter_callback The filter_callback currently attached to the filter.
|
1121 |
+
* @param callable $do The filter_callback that will be run detaching the `$filter_callback`.
|
1122 |
+
* @param int $args The number of arguments that should be used to re-attach the filtering callback to the filter.
|
1123 |
+
*
|
1124 |
+
* @return mixed The return value of the `$do` callback.
|
1125 |
+
*/
|
1126 |
+
function tribe_suspending_filter( $filter_tag, callable $filter_callback, callable $do, $args = 1 ) {
|
1127 |
+
$priority = has_filter( $filter_tag, $filter_callback );
|
1128 |
+
|
1129 |
+
if ( false !== $priority ) {
|
1130 |
+
remove_filter( $filter_tag, $filter_callback, $priority );
|
1131 |
+
}
|
1132 |
+
|
1133 |
+
$result = $do();
|
1134 |
+
|
1135 |
+
if ( false !== $priority ) {
|
1136 |
+
add_filter( $filter_tag, $filter_callback, $priority, $args );
|
1137 |
+
}
|
1138 |
+
|
1139 |
+
return $result;
|
1140 |
+
}
|
1141 |
}
|
common/src/resources/css/app-shop.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
body.tribe_events_page_tribe-app-shop{background-color:#fff;min-width:350px}body.tribe_events_page_tribe-app-shop .update-nag{display:none}body.tribe_events_page_tribe-app-shop #wpcontent{padding:0}#tribe-app-shop{color:#0f1031;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}#tribe-app-shop a{text-decoration:none}#tribe-app-shop .content-wrapper{margin:0 auto;width:360px;max-width:1060px}#tribe-app-shop .tribe-events-admin-graphic{top:0;height:40px}#tribe-app-shop .tribe-header{height:120px;margin:36px auto 0;position:relative;text-align:center;width:100%}#tribe-app-shop .tribe-header .content-wrapper{width:100%}#tribe-app-shop .tribe-header h1{display:inline-block;font-size:18px;font-weight:400;line-height:22px;margin-right:12px;vertical-align:middle}#tribe-app-shop .tribe-header h1 span{font-weight:700}#tribe-app-shop .tribe-header img{display:inline-block;height:57px;margin:0 0 32px 22px;vertical-align:middle}#tribe-app-shop .tribe-header ul{border-bottom:1px solid #e1e1e4;display:block;margin:0 auto;overflow:scroll;padding:0 14px;text-align:left;white-space:nowrap}#tribe-app-shop .tribe-header ul li{cursor:pointer;display:inline-block;font-size:16px;font-weight:500;line-height:20px;margin:0 18px 0 6px;padding:0 0 10px;position:relative;text-align:center}#tribe-app-shop .tribe-header ul li:hover{color:#161b7d}#tribe-app-shop .tribe-header ul li.selected{color:#334aff}#tribe-app-shop .tribe-header ul li.selected:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}#tribe-app-shop .tribe-content{padding-top:28px}#tribe-app-shop .addon-grid>p{font-size:18px;font-weight:400;line-height:28px;margin:0 0 40px;padding:0 20px;text-align:center}#tribe-app-shop .addon-grid h2{font-size:34px;font-weight:500;line-height:42px;margin:0 0 13px;text-align:center}#tribe-app-shop .addon-grid h2.already-installed{margin-bottom:40px}#tribe-app-shop .addon-grid .tribe-addon{padding:28px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-addon .headline{height:40px;margin-bottom:12px}#tribe-app-shop .addon-grid .tribe-addon .headline img{height:40px;margin-right:8px}#tribe-app-shop .addon-grid .tribe-addon .headline a{display:table-cell}#tribe-app-shop .addon-grid .tribe-addon .headline h3{display:table;float:left;font-size:15px;font-weight:700;height:36px;line-height:18px}#tribe-app-shop .addon-grid .tribe-addon .headline h3.has-pill{max-width:140px}#tribe-app-shop .addon-grid .tribe-addon .description{display:table;min-height:48px}#tribe-app-shop .addon-grid .tribe-addon .description p{display:table-cell;font-size:15px;font-weight:500;line-height:24px;margin:0}#tribe-app-shop .addon-grid .tribe-addon .features{min-height:158px}#tribe-app-shop .addon-grid .tribe-addon .features li{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;margin-bottom:4px}#tribe-app-shop .addon-grid .tribe-addon .features li .check{padding-right:12px}#tribe-app-shop .addon-grid .tribe-addon .features li .feature-text{max-width:224px;vertical-align:top}#tribe-app-shop .addon-grid .tribe-addon .features li span{display:inline-block}#tribe-app-shop .addon-grid .tribe-addon .features li svg{color:#3d54ff;height:12px;width:16px}#tribe-app-shop .addon-grid .tribe-addon .features{margin-bottom:16px}#tribe-app-shop .addon-grid .tribe-bundle{padding:28px 32px 36px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-bundle .details{display:inline-block;width:100%}#tribe-app-shop .addon-grid .tribe-bundle .details .headline img{height:60px;margin-right:12px;width:60px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{display:table-cell;font-size:17px;font-weight:700;line-height:21px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline h3{display:table;height:60px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:14px;line-height:22px;margin:0;padding-top:4px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:none;margin:24px 0 0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .button{display:inline-block}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .discount{display:table-cell;height:20px;padding-left:16px;text-align:left;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-bundle .cta .button{display:block;margin:auto}#tribe-app-shop .addon-grid .tribe-bundle .cta .discount{color:#007363;font-size:14px;font-weight:700;letter-spacing:1px;line-height:58px;margin-left:11px;width:100%;display:block;text-align:center}#tribe-app-shop .addon-grid .tribe-bundle .includes{display:inline-block;padding:0 0 28px;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{font-size:12px;font-weight:700;letter-spacing:1px;line-height:15px;margin:24px 0 8px;text-transform:uppercase}#tribe-app-shop .addon-grid .tribe-bundle .includes ul{display:inline-block;margin:0;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes ul.second{margin-left:30px}#tribe-app-shop .addon-grid .tribe-bundle .includes li{color:#0f1031;font-size:14px;font-weight:500;height:40px;margin-bottom:8px}#tribe-app-shop .addon-grid .tribe-bundle .includes li img{float:left;height:40px;width:40px;margin-right:16px}#tribe-app-shop .addon-grid .tribe-bundle .includes li span{float:left;line-height:40px}#tribe-app-shop .addon-grid .tribe-addon,#tribe-app-shop .addon-grid .tribe-bundle{background-color:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:inline-block;margin:0 20px 40px;position:relative;vertical-align:top}#tribe-app-shop .addon-grid .tribe-addon .headline img,#tribe-app-shop .addon-grid .tribe-bundle .headline img{float:left}#tribe-app-shop .addon-grid .tribe-addon .headline a,#tribe-app-shop .addon-grid .tribe-bundle .headline a{color:#0f1031;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-addon .headline h3,#tribe-app-shop .addon-grid .tribe-bundle .headline h3{margin:0}#tribe-app-shop .addon-grid .tribe-addon .headline .pill,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill{border-radius:100px;display:inline-block;float:right;font-size:10px;font-weight:700;letter-spacing:1px;line-height:12px;margin-top:8px;padding:5px 0;text-align:center;text-transform:uppercase;width:62px}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.free,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.free{background:rgba(80,176,120,.28);color:#007363}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.active,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.active{background:rgba(61,84,255,.16);color:#3d54ff}#tribe-app-shop .addon-grid .tribe-addon .promo-image img,#tribe-app-shop .addon-grid .tribe-bundle .promo-image img{width:255px}#tribe-app-shop .addon-grid .tribe-addon p,#tribe-app-shop .addon-grid .tribe-bundle p{color:#0f1031;text-align:left}#tribe-app-shop .addon-grid .button{background:#3d54ff;border-radius:100px;color:#fff;font-size:16px;font-weight:700;letter-spacing:1px;line-height:20px;margin-bottom:13px;padding:18px 0;text-align:center;width:255px;border:none;box-shadow:none;height:auto}#tribe-app-shop .addon-grid .button:hover{background:#1c39bb}#tribe-app-shop .addon-grid .button.secondary{background:#fff;border:1px solid #0f1031;color:#0f1031;display:block;margin:auto}#tribe-app-shop .addon-grid .button.secondary:hover{color:#fff;background:#3d54ff}#tribe-app-shop #tribe-extensions p{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;padding-bottom:16px}#tribe-bundles,#tribe-extensions{display:none}@media screen and (min-width:710px){#tribe-app-shop .content-wrapper{width:710px}#tribe-app-shop .tribe-events-admin-graphic{height:131px}#tribe-app-shop .tribe-header{border-bottom:1px solid hsla(240,5%,89%,.5);height:147px;margin-top:44px}#tribe-app-shop .tribe-header .logo-word-mark{text-align:left}#tribe-app-shop .tribe-header .content-wrapper{width:710px}#tribe-app-shop .tribe-header img{height:65px;margin-bottom:42px}#tribe-app-shop .tribe-header ul{border-bottom:none;display:block;overflow:auto}#tribe-app-shop .tribe-header ul li{padding:0 0 20px}#tribe-app-shop .tribe-content{padding-top:54px}#tribe-app-shop .addon-grid .tribe-addon{width:310px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{font-size:20px;line-height:24px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:16px;line-height:26px}}@media screen and (min-width:1217px){#tribe-app-shop .content-wrapper,#tribe-app-shop .tribe-header .content-wrapper{width:100%}#tribe-app-shop .tribe-header ul li{margin:0 12px}#tribe-app-shop .addon-grid .tribe-bundle .details{width:502px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:table}#tribe-app-shop .addon-grid .tribe-bundle .cta.narrow{display:none}#tribe-app-shop .addon-grid .tribe-bundle .includes{padding:10px 0 0 50px}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{margin:16px 0 19px}}
|
1 |
+
body.events_page_tribe-app-shop,body.tribe_events_page_tribe-app-shop{background-color:#fff;min-width:350px}body.events_page_tribe-app-shop .update-nag,body.tribe_events_page_tribe-app-shop .update-nag{display:none}body.events_page_tribe-app-shop #wpcontent,body.tribe_events_page_tribe-app-shop #wpcontent{padding:0}#tribe-app-shop{color:#0f1031;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}#tribe-app-shop a{text-decoration:none}#tribe-app-shop .content-wrapper{margin:0 auto;width:360px;max-width:1060px}#tribe-app-shop .tribe-events-admin-graphic{top:0;height:40px}#tribe-app-shop .tribe-header{height:120px;margin:36px auto 0;position:relative;text-align:center;width:100%}#tribe-app-shop .tribe-header .content-wrapper{width:100%}#tribe-app-shop .tribe-header h1{display:inline-block;font-size:18px;font-weight:400;line-height:22px;margin-right:12px;vertical-align:middle}#tribe-app-shop .tribe-header h1 span{font-weight:700}#tribe-app-shop .tribe-header img{display:inline-block;height:57px;margin:0 0 32px 22px;vertical-align:middle}#tribe-app-shop .tribe-header ul{border-bottom:1px solid #e1e1e4;display:block;margin:0 auto;overflow:scroll;padding:0 14px;text-align:left;white-space:nowrap}#tribe-app-shop .tribe-header ul li{cursor:pointer;display:inline-block;font-size:16px;font-weight:500;line-height:20px;margin:0 18px 0 6px;padding:0 0 10px;position:relative;text-align:center}#tribe-app-shop .tribe-header ul li:hover{color:#161b7d}#tribe-app-shop .tribe-header ul li.selected{color:#334aff}#tribe-app-shop .tribe-header ul li.selected:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}#tribe-app-shop .tribe-content{padding-top:28px}#tribe-app-shop .addon-grid>p{font-size:18px;font-weight:400;line-height:28px;margin:0 0 40px;padding:0 20px;text-align:center}#tribe-app-shop .addon-grid h2{font-size:34px;font-weight:500;line-height:42px;margin:0 0 13px;text-align:center}#tribe-app-shop .addon-grid h2.already-installed{margin-bottom:40px}#tribe-app-shop .addon-grid .tribe-addon{padding:28px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-addon .headline{height:40px;margin-bottom:12px}#tribe-app-shop .addon-grid .tribe-addon .headline img{height:40px;margin-right:8px}#tribe-app-shop .addon-grid .tribe-addon .headline a{display:table-cell}#tribe-app-shop .addon-grid .tribe-addon .headline h3{display:table;float:left;font-size:15px;font-weight:700;height:36px;line-height:18px}#tribe-app-shop .addon-grid .tribe-addon .headline h3.has-pill{max-width:140px}#tribe-app-shop .addon-grid .tribe-addon .description{display:table;min-height:48px}#tribe-app-shop .addon-grid .tribe-addon .description p{display:table-cell;font-size:15px;font-weight:500;line-height:24px;margin:0}#tribe-app-shop .addon-grid .tribe-addon .features{min-height:158px}#tribe-app-shop .addon-grid .tribe-addon .features li{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;margin-bottom:4px}#tribe-app-shop .addon-grid .tribe-addon .features li .check{padding-right:12px}#tribe-app-shop .addon-grid .tribe-addon .features li .feature-text{max-width:224px;vertical-align:top}#tribe-app-shop .addon-grid .tribe-addon .features li span{display:inline-block}#tribe-app-shop .addon-grid .tribe-addon .features li svg{color:#3d54ff;height:12px;width:16px}#tribe-app-shop .addon-grid .tribe-addon .features{margin-bottom:16px}#tribe-app-shop .addon-grid .tribe-bundle{padding:28px 32px 36px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-bundle .details{display:inline-block;width:100%}#tribe-app-shop .addon-grid .tribe-bundle .details .headline img{height:60px;margin-right:12px;width:60px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{display:table-cell;font-size:17px;font-weight:700;line-height:21px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline h3{display:table;height:60px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:14px;line-height:22px;margin:0;padding-top:4px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:none;margin:24px 0 0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .button{display:inline-block}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .discount{display:table-cell;height:20px;padding-left:16px;text-align:left;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-bundle .cta .button{display:block;margin:auto}#tribe-app-shop .addon-grid .tribe-bundle .cta .discount{color:#007363;font-size:14px;font-weight:700;letter-spacing:1px;line-height:58px;margin-left:11px;width:100%;display:block;text-align:center}#tribe-app-shop .addon-grid .tribe-bundle .includes{display:inline-block;padding:0 0 28px;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{font-size:12px;font-weight:700;letter-spacing:1px;line-height:15px;margin:24px 0 8px;text-transform:uppercase}#tribe-app-shop .addon-grid .tribe-bundle .includes ul{display:inline-block;margin:0;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes ul.second{margin-left:30px}#tribe-app-shop .addon-grid .tribe-bundle .includes li{color:#0f1031;font-size:14px;font-weight:500;height:40px;margin-bottom:8px}#tribe-app-shop .addon-grid .tribe-bundle .includes li img{float:left;height:40px;width:40px;margin-right:16px}#tribe-app-shop .addon-grid .tribe-bundle .includes li span{float:left;line-height:40px}#tribe-app-shop .addon-grid .tribe-addon,#tribe-app-shop .addon-grid .tribe-bundle{background-color:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:inline-block;margin:0 20px 40px;position:relative;vertical-align:top}#tribe-app-shop .addon-grid .tribe-addon .headline img,#tribe-app-shop .addon-grid .tribe-bundle .headline img{float:left}#tribe-app-shop .addon-grid .tribe-addon .headline a,#tribe-app-shop .addon-grid .tribe-bundle .headline a{color:#0f1031;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-addon .headline h3,#tribe-app-shop .addon-grid .tribe-bundle .headline h3{margin:0}#tribe-app-shop .addon-grid .tribe-addon .headline .pill,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill{border-radius:100px;display:inline-block;float:right;font-size:10px;font-weight:700;letter-spacing:1px;line-height:12px;margin-top:8px;padding:5px 0;text-align:center;text-transform:uppercase;width:62px}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.free,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.free{background:rgba(80,176,120,.28);color:#007363}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.active,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.active{background:rgba(61,84,255,.16);color:#3d54ff}#tribe-app-shop .addon-grid .tribe-addon .promo-image img,#tribe-app-shop .addon-grid .tribe-bundle .promo-image img{width:255px}#tribe-app-shop .addon-grid .tribe-addon p,#tribe-app-shop .addon-grid .tribe-bundle p{color:#0f1031;text-align:left}#tribe-app-shop .addon-grid .button{background:#3d54ff;border-radius:100px;color:#fff;font-size:16px;font-weight:700;letter-spacing:1px;line-height:20px;margin-bottom:13px;padding:18px 0;text-align:center;width:255px;border:none;box-shadow:none;height:auto}#tribe-app-shop .addon-grid .button:hover{background:#1c39bb}#tribe-app-shop .addon-grid .button.secondary{background:#fff;border:1px solid #0f1031;color:#0f1031;display:block;margin:auto}#tribe-app-shop .addon-grid .button.secondary:hover{color:#fff;background:#3d54ff}#tribe-app-shop #tribe-extensions p{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;padding-bottom:16px}#tribe-bundles,#tribe-extensions{display:none}@media screen and (min-width:710px){#tribe-app-shop .content-wrapper{width:710px}#tribe-app-shop .tribe-events-admin-graphic{height:131px}#tribe-app-shop .tribe-header{border-bottom:1px solid hsla(240,5%,89%,.5);height:147px;margin-top:44px}#tribe-app-shop .tribe-header .logo-word-mark{text-align:left}#tribe-app-shop .tribe-header .content-wrapper{width:710px}#tribe-app-shop .tribe-header img{height:65px;margin-bottom:42px}#tribe-app-shop .tribe-header ul{border-bottom:none;display:block;overflow:auto}#tribe-app-shop .tribe-header ul li{padding:0 0 20px}#tribe-app-shop .tribe-content{padding-top:54px}#tribe-app-shop .addon-grid .tribe-addon{width:310px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{font-size:20px;line-height:24px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:16px;line-height:26px}}@media screen and (min-width:1217px){#tribe-app-shop .content-wrapper,#tribe-app-shop .tribe-header .content-wrapper{width:100%}#tribe-app-shop .tribe-header ul li{margin:0 12px}#tribe-app-shop .addon-grid .tribe-bundle .details{width:502px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:table}#tribe-app-shop .addon-grid .tribe-bundle .cta.narrow{display:none}#tribe-app-shop .addon-grid .tribe-bundle .includes{padding:10px 0 0 50px}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{margin:16px 0 19px}}
|
common/src/resources/css/tribe-common-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-quick-nav{border-radius:100px;margin:24px 0 94px;padding:0;height:54px;width:620px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}}
|
1 |
+
.invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-marketing-notice__icon{display:none;flex-shrink:0;padding:0;position:static}.tribe-marketing-notice .tribe-marketing-notice__icon img{display:inline-block;max-height:100%;max-width:none;vertical-align:middle;width:100%}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}#wpcontent .notice-tribe-banner{align-items:center;background:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}.notice-tribe-banner .tribe-marketing-notice__icon{width:47px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:0;padding:1em 0}.notice-tribe-banner h3{color:#fff;display:block;font-size:.875rem;line-height:1.25;margin:0 0 .25rem}.notice-tribe-banner a{border-bottom:1px solid #fff;line-height:1.25;margin:0;text-decoration:none}.notice-tribe-banner a:hover{text-decoration:none}.notice-tribe-banner a,.notice-tribe-banner p{color:#fff;display:inline-block;font-size:.875rem;line-height:1.25}.notice-tribe-banner p{display:inline-block;margin:0;padding:0}.notice-tribe-banner .tribe-marketing-notice{align-items:center;display:flex;justify-content:flex-start;margin:0 auto;min-height:65px;padding:0 .75rem;width:100%}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:100%}.notice-tribe-banner .notice-dismiss{position:static}.notice-tribe-banner .notice-dismiss:before{color:#eaf1ff}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-video{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);-webkit-transform:rotate(.000001deg);border-radius:16px;height:200px;margin-bottom:72px;overflow:hidden}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-top:8px;padding-bottom:0}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{width:300px;top:230px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:320px){.tribe-marketing-notice .tribe-marketing-notice__icon{display:block}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:145px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:130px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:642px}}@media screen and (min-width:400px){.notice-tribe-banner .tribe-marketing-notice__icon{width:67px}}@media screen and (min-width:800px){.notice-tribe-banner h3{display:inline-block;font-size:1rem;margin:0 .5rem 0 0}.notice-tribe-banner a{line-height:1.5}.notice-tribe-banner a,.notice-tribe-banner p{font-size:1rem}.notice-tribe-banner p{margin:0 .5rem 0 0}.notice-tribe-banner .tribe-marketing-notice__cta{display:inline-block;margin-left:.5rem}}@media screen and (min-width:1215px){.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:992px}.tribe-welcome .notice-tribe-banner .tribe-marketing-notice{max-width:1036px}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{display:inline-block;border-radius:100px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0;height:54px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}
|
common/src/resources/images/header/welcome-desktop-et.jpg
ADDED
Binary file
|
common/src/resources/images/header/welcome-desktop-etplus.jpg
ADDED
Binary file
|
common/src/resources/images/header/welcome-mobile-et.jpg
ADDED
Binary file
|
common/src/resources/images/header/welcome-mobile-etplus.jpg
ADDED
Binary file
|
common/src/resources/images/icons/horns-white.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<svg fill="none" height="46" viewBox="0 0 37 46" width="37" xmlns="http://www.w3.org/2000/svg"><g stroke="#fff" stroke-linecap="round" stroke-width="2.25"><path d="m27.2161 19.5106c.1047-4.2905-1.1512-6.0698-3.7676-6.0698-2.6163 0-3.827 2.5473-3.5357 5.9545"/><path d="m27.6405 20.0339c0-3.2122.3778-15.48837 3.8955-15.50929 2.9087-.01763 4.1759 5.78649 4.1759 16.38229 0 10.5955-1.0247 19.9527-12.5277 23.128-11.2161 3.0959-21.14822-5.3731-18.32276-13.8498 3.23374-9.7018 23.18836-13.412 24.72666-8.3688 1.0523 3.4503-8.4009 10.2174-13.4245 9.9386-3.4856-.1937-4.2208-3.4538.1047-3.7673 4.3256-.3141 7.5349 1.779 5.8607 8.0582"/><path d="m19.2975 20.1038c.3254-3.9173-1.0116-8.5991-4.766-8.1375-3.3532.4121-3.5758 5.2963-2.6292 10.0038"/><path d="m2.48356 24.2201c-1.92733-9.6366-2.638836-22.75983 1.81843-23.228818 4.06506-.427867 6.44271 11.667118 7.18151 17.996118"/></g></svg>
|
common/src/resources/images/icons/sale-burst.svg
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<svg width="67" height="55" viewBox="0 0 67 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2 |
+
<path d="M8.22008 40.7031C13.0328 40.2609 15.4192 37.5595 15.4462 34.2657C15.5014 27.5429 5.18804 30.406 5.2113 27.5711C5.22016 26.4912 6.14006 25.7052 7.75327 25.557C9.58157 25.389 11.5123 25.8321 12.9531 27.0486L15.1007 23.9915C13.3396 22.5076 10.9807 21.8611 8.1307 22.123C3.90948 22.5108 1.30798 25.2319 1.2834 28.2288C1.22781 35.0056 11.5703 31.87 11.5446 35.0019C11.5359 36.0548 10.5334 37.0912 8.40931 37.2864C5.93573 37.5137 3.9823 36.5601 2.72948 35.3532L0.607727 38.5428C2.28764 40.0881 4.75169 41.0218 8.22008 40.7031Z" fill="#FF4B33"/>
|
3 |
+
<path d="M35.4754 37.8749L28.7132 20.5015L23.9274 20.9412L16.8698 39.5846L21.1985 39.1868L22.3528 36.0321L30.0424 35.3256L31.1466 38.2727L35.4754 37.8749ZM29.0215 32.047L23.4291 32.5609L26.2889 24.5552L29.0215 32.047Z" fill="#B9C1FF"/>
|
4 |
+
<path d="M49.2036 36.6135L49.2313 33.2386L41.6492 33.9353L41.7692 19.3018L37.9244 19.6551L37.7767 37.6635L49.2036 36.6135Z" fill="#FF8A6A"/>
|
5 |
+
<path d="M65.2724 35.137L65.3001 31.7621L56.4275 32.5774L56.4611 28.4735L65.1455 27.6755L65.1732 24.3006L56.4888 25.0986L56.5198 21.3188L65.3924 20.5035L65.4201 17.1286L52.7296 18.2947L52.5819 36.3031L65.2724 35.137Z" fill="#50B078"/>
|
6 |
+
<path d="M25.9998 16L19.9998 10" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
7 |
+
<path d="M39.9998 14.5646L43.3786 8" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
8 |
+
<path d="M31.0486 1L32.277 15.7414" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
9 |
+
<path d="M35.9998 44L37.2548 53.8469" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
10 |
+
<path d="M44.9998 43L49.344 47.3442" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
11 |
+
<path d="M24.8613 44L20.9998 50.7577" stroke="#FFCF48" stroke-linecap="round" stroke-linejoin="round"/>
|
12 |
+
</svg>
|
common/src/resources/images/mascot.png
CHANGED
Binary file
|
common/src/resources/images/welcome/calendar.jpg
ADDED
Binary file
|
common/src/resources/images/welcome/et-plus-upsell.jpg
ADDED
Binary file
|
common/src/resources/images/welcome/extension-library.jpg
ADDED
Binary file
|
common/src/resources/images/welcome/guide-book-green.jpg
ADDED
Binary file
|
common/src/resources/images/welcome/up-sell.jpg
ADDED
Binary file
|
common/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit9b3b4c419fbf9b02027aef4a0d7ffee3::getLoader();
|
common/vendor/autoload_52.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit415c9e5d2dd0d5cab926ef2f5cd1aa06::getLoader();
|
common/vendor/composer/autoload_classmap.php
CHANGED
@@ -131,6 +131,7 @@ return array(
|
|
131 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
132 |
'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
|
133 |
'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
|
|
|
134 |
'Tribe\\Shortcode\\Manager' => $baseDir . '/src/Tribe/Shortcode/Manager.php',
|
135 |
'Tribe\\Shortcode\\Shortcode_Abstract' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
|
136 |
'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
@@ -152,6 +153,9 @@ return array(
|
|
152 |
'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
|
153 |
'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
|
154 |
'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
|
|
|
|
|
|
|
155 |
'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
|
156 |
'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
|
157 |
'tad_DI52_ProtectedValue' => $vendorDir . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
|
131 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
132 |
'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
|
133 |
'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
|
134 |
+
'Tribe\\Service_Providers\\Widgets' => $baseDir . '/src/Tribe/Service_Providers/Widgets.php',
|
135 |
'Tribe\\Shortcode\\Manager' => $baseDir . '/src/Tribe/Shortcode/Manager.php',
|
136 |
'Tribe\\Shortcode\\Shortcode_Abstract' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
|
137 |
'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
153 |
'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
|
154 |
'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
|
155 |
'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
|
156 |
+
'Tribe\\Widget\\Manager' => $baseDir . '/src/Tribe/Widget/Manager.php',
|
157 |
+
'Tribe\\Widget\\Widget_Abstract' => $baseDir . '/src/Tribe/Widget/Widget_Abstract.php',
|
158 |
+
'Tribe\\Widget\\Widget_Interface' => $baseDir . '/src/Tribe/Widget/Widget_Interface.php',
|
159 |
'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
|
160 |
'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
|
161 |
'tad_DI52_ProtectedValue' => $vendorDir . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
|
common/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit2f1d77a6321fb7c67e51955e8298d81d
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit9b3b4c419fbf9b02027aef4a0d7ffee3
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit9b3b4c419fbf9b02027aef4a0d7ffee3', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit9b3b4c419fbf9b02027aef4a0d7ffee3', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
common/vendor/composer/autoload_real_52.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
-
class
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit05e1eb40ac5b5e70c30698a7ce549a4b {
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
+
class ComposerAutoloaderInit415c9e5d2dd0d5cab926ef2f5cd1aa06 {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit415c9e5d2dd0d5cab926ef2f5cd1aa06', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit415c9e5d2dd0d5cab926ef2f5cd1aa06', 'loadClassLoader'));
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
common/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
@@ -187,6 +187,7 @@ class ComposerStaticInit2f1d77a6321fb7c67e51955e8298d81d
|
|
187 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
188 |
'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
|
189 |
'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
|
|
|
190 |
'Tribe\\Shortcode\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Manager.php',
|
191 |
'Tribe\\Shortcode\\Shortcode_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
|
192 |
'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
@@ -208,6 +209,9 @@ class ComposerStaticInit2f1d77a6321fb7c67e51955e8298d81d
|
|
208 |
'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
|
209 |
'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
|
210 |
'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
|
|
|
|
|
|
|
211 |
'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
|
212 |
'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
|
213 |
'tad_DI52_ProtectedValue' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
|
@@ -220,10 +224,10 @@ class ComposerStaticInit2f1d77a6321fb7c67e51955e8298d81d
|
|
220 |
public static function getInitializer(ClassLoader $loader)
|
221 |
{
|
222 |
return \Closure::bind(function () use ($loader) {
|
223 |
-
$loader->prefixLengthsPsr4 =
|
224 |
-
$loader->prefixDirsPsr4 =
|
225 |
-
$loader->prefixesPsr0 =
|
226 |
-
$loader->classMap =
|
227 |
|
228 |
}, null, ClassLoader::class);
|
229 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
187 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
188 |
'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
|
189 |
'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
|
190 |
+
'Tribe\\Service_Providers\\Widgets' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Widgets.php',
|
191 |
'Tribe\\Shortcode\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Manager.php',
|
192 |
'Tribe\\Shortcode\\Shortcode_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
|
193 |
'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
209 |
'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
|
210 |
'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
|
211 |
'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
|
212 |
+
'Tribe\\Widget\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Widget/Manager.php',
|
213 |
+
'Tribe\\Widget\\Widget_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Widget/Widget_Abstract.php',
|
214 |
+
'Tribe\\Widget\\Widget_Interface' => __DIR__ . '/../..' . '/src/Tribe/Widget/Widget_Interface.php',
|
215 |
'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
|
216 |
'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
|
217 |
'tad_DI52_ProtectedValue' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
|
224 |
public static function getInitializer(ClassLoader $loader)
|
225 |
{
|
226 |
return \Closure::bind(function () use ($loader) {
|
227 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3::$prefixLengthsPsr4;
|
228 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3::$prefixDirsPsr4;
|
229 |
+
$loader->prefixesPsr0 = ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3::$prefixesPsr0;
|
230 |
+
$loader->classMap = ComposerStaticInit9b3b4c419fbf9b02027aef4a0d7ffee3::$classMap;
|
231 |
|
232 |
}, null, ClassLoader::class);
|
233 |
}
|
common/vendor/composer/installed.json
CHANGED
@@ -186,23 +186,23 @@
|
|
186 |
},
|
187 |
{
|
188 |
"name": "psr/log",
|
189 |
-
"version": "1.1.
|
190 |
-
"version_normalized": "1.1.
|
191 |
"source": {
|
192 |
"type": "git",
|
193 |
"url": "https://github.com/php-fig/log.git",
|
194 |
-
"reference": "
|
195 |
},
|
196 |
"dist": {
|
197 |
"type": "zip",
|
198 |
-
"url": "https://api.github.com/repos/php-fig/log/zipball/
|
199 |
-
"reference": "
|
200 |
"shasum": ""
|
201 |
},
|
202 |
"require": {
|
203 |
"php": ">=5.3.0"
|
204 |
},
|
205 |
-
"time": "
|
206 |
"type": "library",
|
207 |
"extra": {
|
208 |
"branch-alias": {
|
@@ -222,7 +222,7 @@
|
|
222 |
"authors": [
|
223 |
{
|
224 |
"name": "PHP-FIG",
|
225 |
-
"homepage": "
|
226 |
}
|
227 |
],
|
228 |
"description": "Common interface for logging libraries",
|
186 |
},
|
187 |
{
|
188 |
"name": "psr/log",
|
189 |
+
"version": "1.1.3",
|
190 |
+
"version_normalized": "1.1.3.0",
|
191 |
"source": {
|
192 |
"type": "git",
|
193 |
"url": "https://github.com/php-fig/log.git",
|
194 |
+
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
|
195 |
},
|
196 |
"dist": {
|
197 |
"type": "zip",
|
198 |
+
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
|
199 |
+
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
|
200 |
"shasum": ""
|
201 |
},
|
202 |
"require": {
|
203 |
"php": ">=5.3.0"
|
204 |
},
|
205 |
+
"time": "2020-03-23T09:12:05+00:00",
|
206 |
"type": "library",
|
207 |
"extra": {
|
208 |
"branch-alias": {
|
222 |
"authors": [
|
223 |
{
|
224 |
"name": "PHP-FIG",
|
225 |
+
"homepage": "http://www.php-fig.org/"
|
226 |
}
|
227 |
],
|
228 |
"description": "Common interface for logging libraries",
|
common/vendor/faction23/a11y-dialog/a11y-dialog.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!
|
1 |
+
!function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!1,document,!0)[0]:this.options.trigger,this.node=null,!this.trigger)return void console.warn("Lookup for a11y target node failed.");this._listeners={},this.create()}function i(t){var e=[],i=t.length;for(i;i--;e.unshift(t[i]));return e}function o(t,e,o,n){o||(o=document);var s=n?t:'[data-js="'+t+'"]',r=o.querySelectorAll(s);return e&&(r=i(r)),r}function n(t,e){return i((e||document).querySelectorAll(t))}function s(t){var e=d(t);e.length&&e[0].focus()}function r(t,e){e.parentNode.insertBefore(t,e.nextElementSibling)}function d(t){return n(p.join(","),t).filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function a(t){return"[object String]"===Object.prototype.toString.call(t)}function h(t,e){return Object.keys(e).forEach(function(i){t[i]=e[i]}),t}function c(t,e){var i=d(t),o=i.indexOf(document.activeElement);e.shiftKey&&0===o?(i[i.length-1].focus(),e.preventDefault()):e.shiftKey||o!==i.length-1||(i[0].focus(),e.preventDefault())}function l(){g=b.scrollTop,document.body.classList.add("a11y-dialog__body-locked"),document.body.style.position="fixed",document.body.style.width="100%",document.body.style.marginTop="-"+g+"px"}function u(){document.body.style.marginTop="",document.body.style.position="",document.body.style.width="",b.scrollTop=g,document.body.classList.remove("a11y-dialog__body-locked")}var f,p=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],y=function(){var t=/(android)/i.test(navigator.userAgent),e=!!window.chrome,i="undefined"!=typeof InstallTrigger,o=document.documentMode,n=!o&&!!window.StyleMedia,s=!!navigator.userAgent.match(/(iPod|iPhone|iPad)/i),r=!!navigator.userAgent.match(/(iPod|iPhone)/i),d=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;return{android:t,chrome:e,edge:n,firefox:i,ie:o,ios:s,iosMobile:r,opera:d,safari:Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!e&&!d&&"undefined"!==window.webkitAudioContext,os:navigator.platform}}(),g=0,b=y.ie||y.firefox||y.chrome&&!y.edge?document.documentElement:document.body;e.prototype.create=function(){return this.shown=!1,this.trigger.addEventListener("click",this._show),this._fire("create"),this},e.prototype.render=function(t){var e=o(this.trigger.dataset.content)[0];if(!e)return this;var i=document.createElement("div");i.setAttribute("aria-hidden","true"),i.classList.add(this.options.wrapperClasses),i.innerHTML='<div data-js="a11y-overlay" tabindex="-1" class="'+this.options.overlayClasses+'"></div>\n <div class="'+this.options.contentClasses+'" role="dialog">\n <div role="document">\n <button data-js="a11y-close-button" class="'+this.options.closeButtonClasses+'" type="button" aria-label="'+this.options.closeButtonAriaLabel+'" ></button>\n '+e.innerHTML+" </div>\n </div>";var n=this.trigger;return this.options.appendTarget.length&&(n=document.querySelectorAll(this.options.appendTarget)[0]||this.trigger),r(i,n),this.node=i,this.overlay=o("a11y-overlay",!1,this.node)[0],this.closeButton=o("a11y-close-button",!1,this.node)[0],this.options.overlayClickCloses&&this.overlay.addEventListener("click",this._hide),this.closeButton.addEventListener("click",this._hide),this._rendered=!0,this._fire("render",t),this},e.prototype.show=function(t){return this.shown?this:(this._rendered||this.render(t),this._rendered?(this.shown=!0,this._applyOpenEffect(),this.node.setAttribute("aria-hidden","false"),this.options.bodyLock&&l(),f=document.activeElement,s(this.node),document.body.addEventListener("focus",this._maintainFocus,!0),document.addEventListener("keydown",this._bindKeypress),this._fire("show",t),this):this)},e.prototype.hide=function(t){return this.shown?(this.shown=!1,this.node.setAttribute("aria-hidden","true"),this._applyCloseEffect(),this.options.bodyLock&&u(),f&&f.focus(),document.body.removeEventListener("focus",this._maintainFocus,!0),document.removeEventListener("keydown",this._bindKeypress),this._fire("hide",t),this):this},e.prototype.destroy=function(){return this.hide(),this.trigger.removeEventListener("click",this._show),this.options.overlayClickCloses&&this.overlay.removeEventListener("click",this._hide),this.closeButton.removeEventListener("click",this._hide),this._fire("destroy"),this._listeners={},this},e.prototype.on=function(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this},e.prototype.off=function(t,e){var i=this._listeners[t].indexOf(e);return i>-1&&this._listeners[t].splice(i,1),this},e.prototype._fire=function(t,e){(this._listeners[t]||[]).forEach(function(t){t(this.node,e)}.bind(this))},e.prototype._bindKeypress=function(t){this.shown&&27===t.which&&(t.preventDefault(),this.hide()),this.shown&&9===t.which&&c(this.node,t)},e.prototype._maintainFocus=function(t){this.shown&&!this.node.contains(t.target)&&s(this.node)},e.prototype._applyOpenEffect=function(){var t=this;"fade"===this.options.effect&&(this.node.style.opacity="0",this.node.style.transition="opacity "+this.options.effectSpeed+"ms "+this.options.effectEasing,setTimeout(function(){t.node.style.opacity="1"},50))},e.prototype._applyCloseEffect=function(){var t=this;"fade"===this.options.effect&&(this.node.setAttribute("aria-hidden","false"),this.node.style.opacity="0",setTimeout(function(){t.node.style.transition="",t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed))},"undefined"!=typeof module&&void 0!==module.exports?module.exports=e:"function"==typeof define&&define.amd?define("A11yDialog",[],function(){return e}):"object"==typeof t&&(t.A11yDialog=e)}("undefined"!=typeof global?global:window);
|
common/vendor/freemius/README.md
CHANGED
@@ -1,69 +1,99 @@
|
|
1 |
Freemius WordPress SDK
|
2 |
======================
|
3 |
|
4 |
-
|
5 |
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
https://
|
|
|
|
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
11 |
|
12 |
https://dashboard.freemius.com/register/
|
13 |
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
## Code Documentation
|
17 |
|
18 |
You can find the SDK's documentation here:
|
19 |
https://freemius.com/help/documentation/wordpress-sdk/
|
20 |
|
21 |
-
## Initializing the SDK
|
|
|
|
|
|
|
|
|
22 |
|
23 |
-
|
|
|
|
|
24 |
|
25 |
```php
|
26 |
-
|
27 |
// Create a helper function for easy SDK access.
|
28 |
function my_prefix_fs() {
|
29 |
global $my_prefix_fs;
|
|
|
30 |
if ( ! isset( $my_prefix_fs ) ) {
|
31 |
// Include Freemius SDK.
|
32 |
require_once dirname(__FILE__) . '/freemius/start.php';
|
33 |
-
|
34 |
$my_prefix_fs = fs_dynamic_init( array(
|
35 |
-
'id'
|
36 |
-
'slug'
|
37 |
-
'
|
38 |
-
'
|
39 |
-
'
|
40 |
-
'is_premium'
|
41 |
-
|
42 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
// Set the SDK to work in a sandbox mode (for development & testing).
|
44 |
// IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT.
|
45 |
-
'secret_key'
|
46 |
) );
|
47 |
}
|
48 |
-
|
49 |
return $my_prefix_fs;
|
50 |
}
|
51 |
-
|
52 |
// Init Freemius.
|
53 |
my_prefix_fs();
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
- **1234** - Replace with your plugin's ID.
|
58 |
-
- **pk_MY_PUBLIC_KEY** - Replace with your plugin's public key.
|
59 |
-
- **sk_MY_SECRET_KEY** - Replace with your plugin's secret key.
|
60 |
-
- **my-plugin-slug** - Replace with your plugin's WordPress.org slug.
|
61 |
-
- **my_menu_slug** - Replace with your admin dashboard settings menu slug.
|
62 |
|
|
|
63 |
|
64 |
## Usage example
|
65 |
|
66 |
-
You can call
|
67 |
|
68 |
```php
|
69 |
<?php my_prefix_fs()->get_upgrade_url(); ?>
|
@@ -78,6 +108,8 @@ Or when calling Freemius multiple times in a scope, it's recommended to use it w
|
|
78 |
?>
|
79 |
```
|
80 |
|
|
|
|
|
81 |
## Adding license based logic examples
|
82 |
|
83 |
Add marketing content to encourage your users to upgrade for your paid version:
|
@@ -200,10 +232,10 @@ Add logic for specified paid plan:
|
|
200 |
```
|
201 |
|
202 |
## Excluding files and folders from the free plugin version
|
203 |
-
There are two ways to exclude files from your free version.
|
204 |
|
205 |
-
1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all
|
206 |
-
2. Add `@fs_premium_only` a
|
207 |
```php
|
208 |
<?php
|
209 |
/**
|
@@ -227,27 +259,24 @@ There are two ways to exclude files from your free version.
|
|
227 |
// ... my code ...
|
228 |
?>
|
229 |
```
|
230 |
-
|
231 |
|
232 |
# WordPress.org Compliance
|
233 |
Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
|
234 |
> All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
|
235 |
|
236 |
-
Therefore, if you want to deploy your free plugin's version to WordPress.org, make sure you wrap all your premium code with `if ( my_prefix_fs()->{{ method }}__premium_only() )` or the other methods provided to exclude premium features & files from the free version.
|
237 |
|
238 |
## Deployment
|
239 |
-
Zip your
|
240 |
-
The plugin will be scanned and processed by a custom
|
241 |
|
242 |
1. **Premium version**: Identical to your uploaded version, including all code (except your `secret_key`). Will be enabled for download ONLY for your paying or in trial customers.
|
243 |
2. **Free version**: The code stripped from all your paid features (based on the logic added wrapped in `{ method }__premium_only()`).
|
244 |
|
245 |
-
The free version is the one that you should give your users to download. Therefore, download the free generated version and upload to your site. Or, if your plugin was WordPress.org
|
246 |
-
|
247 |
-
## Reporting Bugs
|
248 |
-
Email dev [at] freemius [dot] com
|
249 |
|
250 |
-
##
|
|
|
251 |
|
252 |
-
|
253 |
-
Freemius, Inc.
|
1 |
Freemius WordPress SDK
|
2 |
======================
|
3 |
|
4 |
+
Welcome to the official repository for the Freemius SDK! Adding the SDK to your WordPress plugin, theme, or add-ons, enables all the benefits that come with using the [Freemius platform](https://freemius.com) such as:
|
5 |
|
6 |
+
* [Software Licensing](https://freemius.com/wordpress/software-licensing/)
|
7 |
+
* [Secure Checkout](https://freemius.com/wordpress/checkout/)
|
8 |
+
* [Subscriptions](https://freemius.com/wordpress/recurring-payments-subscriptions/)
|
9 |
+
* [Automatic Updates](https://freemius.com/wordpress/automatic-software-updates/)
|
10 |
+
* [Seamless EU VAT](https://freemius.com/wordpress/collecting-eu-vat-europe/)
|
11 |
+
* [Cart Abandonment Recovery](https://freemius.com/wordpress/cart-abandonment-recovery/)
|
12 |
+
* [Affiliate Platform](https://freemius.com/wordpress/affiliate-platform/)
|
13 |
+
* [Analytics & Usage Tracking](https://freemius.com/wordpress/insights/)
|
14 |
+
* [User Dashboard](https://freemius.com/wordpress/user-dashboard/)
|
15 |
|
16 |
+
* [Monetization](https://freemius.com/wordpress/)
|
17 |
+
* [Analytics](https://freemius.com/wordpress/insights/)
|
18 |
+
* [More...](https://freemius.com/wordpress/features-comparison/)
|
19 |
|
20 |
+
Freemius truly empowers developers to create prosperous subscription-based businesses.
|
21 |
+
|
22 |
+
If you're new to Freemius then we recommend taking a look at our [Getting Started](https://freemius.com/help/documentation/getting-started/) guide first.
|
23 |
+
|
24 |
+
If you're a WordPress plugin or theme developer and are interested in monetizing with Freemius then you can [sign-up for a FREE account](https://dashboard.freemius.com/register/):
|
25 |
|
26 |
https://dashboard.freemius.com/register/
|
27 |
|
28 |
+
Once you have your account setup and are familiar with how it all works you're ready to begin [integrating Freemius](https://freemius.com/help/documentation/wordpress-sdk/integrating-freemius-sdk/) into your WordPress product
|
29 |
+
|
30 |
+
You can see some of the existing WordPress.org plugins & themes that are already utilizing the power of Freemius here:
|
31 |
+
|
32 |
+
* https://profiles.wordpress.org/freemius/#content-plugins
|
33 |
+
* https://includewp.com/freemius/#focus
|
34 |
|
35 |
## Code Documentation
|
36 |
|
37 |
You can find the SDK's documentation here:
|
38 |
https://freemius.com/help/documentation/wordpress-sdk/
|
39 |
|
40 |
+
## Integrating & Initializing the SDK
|
41 |
+
|
42 |
+
As part of the integration process, you'll need to [add the latest version](https://freemius.com/help/documentation/getting-started/#add_the_latest_wordpress_sdk_into_your_product) of the Freemius SDK into your WordPress project.
|
43 |
+
|
44 |
+
Then, when you've completed the [SDK integration form](https://freemius.com/help/documentation/getting-started/#fill_out_the_sdk_integration_form) a snippet of code is generated which you'll need to copy and paste into the top of your main plugin's PHP file, right after the plugin's header comment.
|
45 |
|
46 |
+
Note: For themes, this will be in the root `functions.php` file instead.
|
47 |
+
|
48 |
+
A typical SDK snippet will look similar to the following (your particular snippet may differ slightly depending on your integration):
|
49 |
|
50 |
```php
|
51 |
+
if ( ! function_exists( 'my_prefix_fs' ) ) {
|
52 |
// Create a helper function for easy SDK access.
|
53 |
function my_prefix_fs() {
|
54 |
global $my_prefix_fs;
|
55 |
+
|
56 |
if ( ! isset( $my_prefix_fs ) ) {
|
57 |
// Include Freemius SDK.
|
58 |
require_once dirname(__FILE__) . '/freemius/start.php';
|
59 |
+
|
60 |
$my_prefix_fs = fs_dynamic_init( array(
|
61 |
+
'id' => '1234',
|
62 |
+
'slug' => 'my-new-plugin',
|
63 |
+
'premium_slug' => 'my-new-plugin-premium',
|
64 |
+
'type' => 'plugin',
|
65 |
+
'public_key' => 'pk_bAEfta69seKymZzmf2xtqq8QXHz9y',
|
66 |
+
'is_premium' => true,
|
67 |
+
// If your plugin is a serviceware, set this option to false.
|
68 |
+
'has_premium_version' => true,
|
69 |
+
'has_paid_plans' => true,
|
70 |
+
'is_org_compliant' => true,
|
71 |
+
'menu' => array(
|
72 |
+
'slug' => 'my-new-plugin',
|
73 |
+
'parent' => array(
|
74 |
+
'slug' => 'options-general.php',
|
75 |
+
),
|
76 |
+
),
|
77 |
// Set the SDK to work in a sandbox mode (for development & testing).
|
78 |
// IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT.
|
79 |
+
'secret_key' => 'sk_ubb4yN3mzqGR2x8#P7r5&@*xC$utE',
|
80 |
) );
|
81 |
}
|
82 |
+
|
83 |
return $my_prefix_fs;
|
84 |
}
|
85 |
+
|
86 |
// Init Freemius.
|
87 |
my_prefix_fs();
|
88 |
+
// Signal that SDK was initiated.
|
89 |
+
do_action( 'my_prefix_fs_loaded' );
|
90 |
+
}
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
+
```
|
93 |
|
94 |
## Usage example
|
95 |
|
96 |
+
You can call anySDK methods by prefixing them with the shortcode function for your particular plugin/theme (specified when completing the SDK integration form in the Developer Dashboard):
|
97 |
|
98 |
```php
|
99 |
<?php my_prefix_fs()->get_upgrade_url(); ?>
|
108 |
?>
|
109 |
```
|
110 |
|
111 |
+
There are many other SDK methods available that you can use to enhance the functionality of your WordPress product. Some of the more common use-cases are covered in the [Freemius SDK Gists](https://freemius.com/help/documentation/wordpress-sdk/gists/) documentation.
|
112 |
+
|
113 |
## Adding license based logic examples
|
114 |
|
115 |
Add marketing content to encourage your users to upgrade for your paid version:
|
232 |
```
|
233 |
|
234 |
## Excluding files and folders from the free plugin version
|
235 |
+
There are [two ways](https://freemius.com/help/documentation/wordpress-sdk/software-licensing/#excluding_files_and_folders_from_the_free_plugin_version) to exclude files from your free version.
|
236 |
|
237 |
+
1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all types of files, not only PHP.
|
238 |
+
2. Add `@fs_premium_only` a special meta tag to the plugin's main PHP file header. Example:
|
239 |
```php
|
240 |
<?php
|
241 |
/**
|
259 |
// ... my code ...
|
260 |
?>
|
261 |
```
|
262 |
+
In the example plugin header above, the file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version.
|
263 |
|
264 |
# WordPress.org Compliance
|
265 |
Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
|
266 |
> All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
|
267 |
|
268 |
+
Therefore, if you want to deploy your free plugin's version to WordPress.org, make sure you wrap all your premium code with `if ( my_prefix_fs()->{{ method }}__premium_only() )` or use [some of the other methods](https://freemius.com/help/documentation/wordpress-sdk/software-licensing/) provided by the SDK to exclude premium features & files from the free version.
|
269 |
|
270 |
## Deployment
|
271 |
+
Zip your Freemius product’s root folder and [upload it in the Deployment section](https://freemius.com/help/documentation/selling-with-freemius/deployment/) in the *Freemius Developer's Dashboard*.
|
272 |
+
The plugin/theme will automatically be scanned and processed by a custom-developed *PHP Processor* which will auto-generate two versions of your plugin:
|
273 |
|
274 |
1. **Premium version**: Identical to your uploaded version, including all code (except your `secret_key`). Will be enabled for download ONLY for your paying or in trial customers.
|
275 |
2. **Free version**: The code stripped from all your paid features (based on the logic added wrapped in `{ method }__premium_only()`).
|
276 |
|
277 |
+
The free version is the one that you should give your users to download. Therefore, download the free generated version and upload to your site. Or, if your plugin was WordPress.org compliant and you made sure to exclude all your premium code with the different provided techniques, you can deploy the downloaded free version to the .org repo.
|
|
|
|
|
|
|
278 |
|
279 |
+
## License
|
280 |
+
Copyright (c) Freemius®, Inc.
|
281 |
|
282 |
+
Licensed under the GNU general public license (version 3).
|
|
common/vendor/freemius/assets/css/admin/account.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}.fs-field-beta_program label{margin-left:7px}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
|
1 |
+
label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id="license_not_whitelabeled"].success,.fs-notice[data-id="license_whitelabeled"].success{color:inherit;border-left-color:#00a0d2}.fs-notice[data-id="license_not_whitelabeled"].success label.fs-plugin-title,.fs-notice[data-id="license_whitelabeled"].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}.fs-field-beta_program label{margin-left:7px}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
|
common/vendor/freemius/assets/css/admin/add-ons.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{float:left;height:152px;width:310px;padding:0;margin:0 0 30px 30px;font-size:14px;list-style:none;border:1px solid #ddd;cursor:pointer;position:relative}#fs_addons .fs-cards-list .fs-card .fs-overlay{position:absolute;left:0;right:0;bottom:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;overflow:hidden;height:100%;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{-moz-transition:all,0.15s;-o-transition:all,0.15s;-ms-transition:all,0.15s;-webkit-transition:all,0.15s;transition:all,0.15s;left:0;right:0;top:0;position:absolute}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{list-style:none;line-height:18px;padding:0 15px;width:100%;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{padding:0;margin:0;line-height:0;display:block;height:100px;background-repeat:repeat-x;background-size:100% 100%;-moz-transition:all,0.15s;-o-transition:all,0.15s;-ms-transition:all,0.15s;-webkit-transition:all,0.15s;transition:all,0.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{margin:10px 0 0 0;height:18px;overflow:hidden;color:#000;white-space:nowrap;text-overflow:ellipsis;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:0.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;padding:10px 15px 100px 15px;border-top:1px solid #eee;margin:0 0 10px 0;color:#777}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{position:absolute;top:10px;right:0px;background:greenyellow;display:block;padding:2px 10px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.3);box-shadow:1px 1px 1px rgba(0,0,0,0.3);text-transform:uppercase;font-size:0.9em;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;top:112px;right:10px}@media screen and (min-width: 960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer{color:#29abe1}}
|
2 |
-
#TB_window,#TB_window iframe{width:821px !important}#plugin-information .fyi{width:266px !important}#plugin-information #section-holder{margin-right:299px}#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description p,#plugin-information #section-description b,#plugin-information #section-description i,#plugin-information #section-description blockquote,#plugin-information #section-description li,#plugin-information #section-description ul,#plugin-information #section-description ol{clear:none}#plugin-information #section-description .fs-selling-points{padding-bottom:10px;border-bottom:1px solid #ddd}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{padding:0;list-style:none outside none}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;font-size:3em;vertical-align:middle;line-height:30px;float:left;margin:0 0 0 -15px}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px !important}#plugin-information #section-description .fs-screenshots:after{content:"";display:table;clear:both}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{width:225px;height:225px;float:left;margin-bottom:20px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#plugin-information #section-description .fs-screenshots ul li a{display:block;width:100%;height:100%;border:1px solid;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);background-size:cover}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{margin:-16px;border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan h3{margin-top:0;padding:20px;font-size:16px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;position:relative;padding:0 10px;font-size:0.9em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{text-transform:uppercase;color:green;background:greenyellow;position:absolute;left:-1px;right:-1px;bottom:100%;border:1px solid darkgreen;padding:2px;text-align:center;font-size:0.9em;line-height:1em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{cursor:default;background:#fffeec;border-bottom-color:#fffeec}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;margin:0;padding-bottom:0;color:#0073aa}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{width:100%;text-align:center;font-weight:bold;text-transform:uppercase;font-size:1.1em}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-align:center;display:block;font-weight:bold;margin-bottom:10px;text-transform:uppercase;background:#F3F3F3;padding:2px;border:1px solid #ccc}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-transform:none;color:green;background:greenyellow}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:0.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{width:100%;border-spacing:0;border-collapse:separate}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;font-weight:normal;display:block;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;padding:10px 0;text-align:center;width:100px;color:#71ae00}#plugin-information #section-features table tbody td:first-child{text-align:left;width:auto;color:inherit;padding-left:26px}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{width:30px;height:30px;font-size:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;width:auto;top:0;right:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-top:6px solid white;border-right:4px solid transparent;border-left:4px solid transparent;top:12px;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{position:absolute;right:-1px;top:100%;margin-left:auto;padding:3px 0;border:1px solid #bfbfbf;background-color:#fff;z-index:1;width:230px;text-align:left;-moz-box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);-webkit-box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{-moz-border-radius:3px 0 3px 3px;-webkit-border-radius:3px 0 3px 3px;border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{-moz-border-radius:3px 3px 0 3px;-webkit-border-radius:3px 3px 0 3px;border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:normal;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{top:auto;bottom:100%;margin-bottom:2px}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{text-align:center;display:table}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer>.button,#plugin-information-footer .fs-dropdown{position:relative;top:3px}#plugin-information-footer>.button.left,#plugin-information-footer .fs-dropdown.left{float:left}#plugin-information-footer>.right,#plugin-information-footer .fs-dropdown{float:right}@media screen and (max-width: 961px){#fs_addons .fs-cards-list .fs-card{height:265px}}
|
1 |
.fs-badge{position:absolute;top:10px;right:0;background:#71ae00;color:white;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3)}#fs_addons .fs-cards-list{list-style:none}#fs_addons .fs-cards-list .fs-card{float:left;height:152px;width:310px;padding:0;margin:0 0 30px 30px;font-size:14px;list-style:none;border:1px solid #ddd;cursor:pointer;position:relative}#fs_addons .fs-cards-list .fs-card .fs-overlay{position:absolute;left:0;right:0;bottom:0;top:0;z-index:9}#fs_addons .fs-cards-list .fs-card .fs-inner{background-color:#fff;overflow:hidden;height:100%;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner>ul{-moz-transition:all,0.15s;-o-transition:all,0.15s;-ms-transition:all,0.15s;-webkit-transition:all,0.15s;transition:all,0.15s;left:0;right:0;top:0;position:absolute}#fs_addons .fs-cards-list .fs-card .fs-inner>ul>li{list-style:none;line-height:18px;padding:0 15px;width:100%;display:block;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner{padding:0;margin:0;line-height:0;display:block;height:100px;background-repeat:repeat-x;background-size:100% 100%;-moz-transition:all,0.15s;-o-transition:all,0.15s;-ms-transition:all,0.15s;-webkit-transition:all,0.15s;transition:all,0.15s}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-card-banner .fs-badge.fs-installed-addon-badge{font-size:1.02em;line-height:1.3em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-title{margin:10px 0 0 0;height:18px;overflow:hidden;color:#000;white-space:nowrap;text-overflow:ellipsis;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-offer{font-size:0.9em}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-description{background-color:#f9f9f9;padding:10px 15px 100px 15px;border-top:1px solid #eee;margin:0 0 10px 0;color:#777}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-tag{position:absolute;top:10px;right:0px;background:greenyellow;display:block;padding:2px 10px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.3);box-shadow:1px 1px 1px rgba(0,0,0,0.3);text-transform:uppercase;font-size:0.9em;font-weight:bold}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button,#fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button-group{position:absolute;top:112px;right:10px}@media screen and (min-width: 960px){#fs_addons .fs-cards-list .fs-card:hover .fs-overlay{border:2px solid #29abe1;margin-left:-1px;margin-top:-1px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner ul{top:-100px}#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-title,#fs_addons .fs-cards-list .fs-card:hover .fs-inner .fs-offer{color:#29abe1}}
|
2 |
+
#TB_window,#TB_window iframe{width:821px !important}#plugin-information .fyi{width:266px !important}#plugin-information #section-holder{margin-right:299px}#plugin-information #section-description h2,#plugin-information #section-description h3,#plugin-information #section-description p,#plugin-information #section-description b,#plugin-information #section-description i,#plugin-information #section-description blockquote,#plugin-information #section-description li,#plugin-information #section-description ul,#plugin-information #section-description ol{clear:none}#plugin-information #section-description iframe{max-width:100%}#plugin-information #section-description .fs-selling-points{padding-bottom:10px;border-bottom:1px solid #ddd}#plugin-information #section-description .fs-selling-points ul{margin:0}#plugin-information #section-description .fs-selling-points ul li{padding:0;list-style:none outside none}#plugin-information #section-description .fs-selling-points ul li i.dashicons{color:#71ae00;font-size:3em;vertical-align:middle;line-height:30px;float:left;margin:0 0 0 -15px}#plugin-information #section-description .fs-selling-points ul li h3{margin:1em 30px !important}#plugin-information #section-description .fs-screenshots:after{content:"";display:table;clear:both}#plugin-information #section-description .fs-screenshots ul{list-style:none;margin:0}#plugin-information #section-description .fs-screenshots ul li{width:225px;height:225px;float:left;margin-bottom:20px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}#plugin-information #section-description .fs-screenshots ul li a{display:block;width:100%;height:100%;border:1px solid;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);background-size:cover}#plugin-information #section-description .fs-screenshots ul li.odd{margin-right:20px}#plugin-information .plugin-information-pricing{margin:-16px;border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan h3{margin-top:0;padding:20px;font-size:16px}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper{border-bottom:1px solid #ddd}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab{cursor:pointer;position:relative;padding:0 10px;font-size:0.9em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab label{text-transform:uppercase;color:green;background:greenyellow;position:absolute;left:-1px;right:-1px;bottom:100%;border:1px solid darkgreen;padding:2px;text-align:center;font-size:0.9em;line-height:1em}#plugin-information .plugin-information-pricing .fs-plan .nav-tab-wrapper .nav-tab.nav-tab-active{cursor:default;background:#fffeec;border-bottom-color:#fffeec}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle h3{background:#fffeec;margin:0;padding-bottom:0;color:#0073aa}#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .nav-tab-wrapper,#plugin-information .plugin-information-pricing .fs-plan.fs-single-cycle .fs-billing-frequency{display:none}#plugin-information .plugin-information-pricing .fs-plan .fs-pricing-body{background:#fffeec;padding:20px}#plugin-information .plugin-information-pricing .fs-plan .button{width:100%;text-align:center;font-weight:bold;text-transform:uppercase;font-size:1.1em}#plugin-information .plugin-information-pricing .fs-plan label{white-space:nowrap}#plugin-information .plugin-information-pricing .fs-plan var{font-style:normal}#plugin-information .plugin-information-pricing .fs-plan .fs-billing-frequency,#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-align:center;display:block;font-weight:bold;margin-bottom:10px;text-transform:uppercase;background:#F3F3F3;padding:2px;border:1px solid #ccc}#plugin-information .plugin-information-pricing .fs-plan .fs-annual-discount{text-transform:none;color:green;background:greenyellow}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms{font-size:0.9em}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms i{float:left;margin:0 0 0 -15px}#plugin-information .plugin-information-pricing .fs-plan ul.fs-trial-terms li{margin:10px 0 0 0}#plugin-information #section-features .fs-features{margin:-20px -26px}#plugin-information #section-features table{width:100%;border-spacing:0;border-collapse:separate}#plugin-information #section-features table thead th{padding:10px 0}#plugin-information #section-features table thead .fs-price{color:#71ae00;font-weight:normal;display:block;text-align:center}#plugin-information #section-features table tbody td{border-top:1px solid #ccc;padding:10px 0;text-align:center;width:100px;color:#71ae00}#plugin-information #section-features table tbody td:first-child{text-align:left;width:auto;color:inherit;padding-left:26px}#plugin-information #section-features table tbody tr.fs-odd td{background:#fefefe}#plugin-information #section-features .dashicons-yes{width:30px;height:30px;font-size:30px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button,#plugin-information .fs-dropdown .button-group .button{position:relative;width:auto;top:0;right:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .button:focus,#plugin-information .fs-dropdown .button-group .button:focus{z-index:10}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .button-group .fs-dropdown-arrow,#plugin-information .fs-dropdown .button-group .fs-dropdown-arrow{border-top:6px solid white;border-right:4px solid transparent;border-left:4px solid transparent;top:12px;position:relative}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active:not(.up) .button:not(.fs-dropdown-arrow-button){border-bottom-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active:not(.up) .fs-dropdown-arrow-button{border-bottom-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button),#plugin-information .fs-dropdown.active.up .button:not(.fs-dropdown-arrow-button){border-top-left-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.active.up .fs-dropdown-arrow-button,#plugin-information .fs-dropdown.active.up .fs-dropdown-arrow-button{border-top-right-radius:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list,#plugin-information .fs-dropdown .fs-dropdown-list{position:absolute;right:-1px;top:100%;margin-left:auto;padding:3px 0;border:1px solid #bfbfbf;background-color:#fff;z-index:1;width:230px;text-align:left;-moz-box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);-webkit-box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li,#plugin-information .fs-dropdown .fs-dropdown-list li{margin:0}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li a,#plugin-information .fs-dropdown .fs-dropdown-list li a{display:block;padding:5px 10px;text-decoration:none;text-shadow:none}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover,#plugin-information .fs-dropdown .fs-dropdown-list li:hover{background-color:#0074a3;color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown .fs-dropdown-list li:hover a,#plugin-information .fs-dropdown .fs-dropdown-list li:hover a{color:#fff}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown:not(.up) .fs-dropdown-list,#plugin-information .fs-dropdown:not(.up) .fs-dropdown-list{-moz-border-radius:3px 0 3px 3px;-webkit-border-radius:3px 0 3px 3px;border-radius:3px 0 3px 3px}#fs_addons .fs-cards-list .fs-card .fs-inner .fs-dropdown.up .fs-dropdown-list,#plugin-information .fs-dropdown.up .fs-dropdown-list{-moz-border-radius:3px 3px 0 3px;-webkit-border-radius:3px 3px 0 3px;border-radius:3px 3px 0 3px}#plugin-information .fs-dropdown .button-group{width:100%}#plugin-information .fs-dropdown .button-group .button{float:none;font-size:14px;font-weight:normal;text-transform:none}#plugin-information .fs-dropdown .fs-dropdown-list{margin-top:1px}#plugin-information .fs-dropdown.up .fs-dropdown-list{top:auto;bottom:100%;margin-bottom:2px}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group{text-align:center;display:table}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button{display:table-cell}#plugin-information.wp-core-ui .fs-pricing-body .fs-dropdown .button-group .button:not(.fs-dropdown-arrow-button){left:1px;width:100%}#plugin-information-footer>.button,#plugin-information-footer .fs-dropdown{position:relative;top:3px}#plugin-information-footer>.button.left,#plugin-information-footer .fs-dropdown.left{float:left}#plugin-information-footer>.right,#plugin-information-footer .fs-dropdown{float:right}@media screen and (max-width: 961px){#fs_addons .fs-cards-list .fs-card{height:265px}}
|
common/vendor/freemius/config.php
CHANGED
@@ -385,4 +385,7 @@
|
|
385 |
|
386 |
if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
|
387 |
define( 'WP_FS__DEMO_MODE', false );
|
388 |
-
}
|
|
|
|
|
|
385 |
|
386 |
if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
|
387 |
define( 'WP_FS__DEMO_MODE', false );
|
388 |
+
}
|
389 |
+
if ( ! defined( 'FS_SDK__SSLVERIFY' ) ) {
|
390 |
+
define( 'FS_SDK__SSLVERIFY', false );
|
391 |
+
}
|
common/vendor/freemius/includes/class-freemius.php
CHANGED
@@ -351,6 +351,14 @@
|
|
351 |
*/
|
352 |
private $is_whitelabeled;
|
353 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
#region Uninstall Reasons IDs
|
355 |
|
356 |
const REASON_NO_LONGER_NEEDED = 1;
|
@@ -369,6 +377,14 @@
|
|
369 |
const REASON_DIDNT_WORK_AS_EXPECTED = 14;
|
370 |
const REASON_TEMPORARY_DEACTIVATION = 15;
|
371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
#endregion
|
373 |
|
374 |
/* Ctor
|
@@ -816,7 +832,11 @@
|
|
816 |
return false;
|
817 |
}
|
818 |
|
819 |
-
if (
|
|
|
|
|
|
|
|
|
820 |
/**
|
821 |
* wp.org themes are limited to a single submenu item, and
|
822 |
* sub-submenu items are most likely not allowed (never verified).
|
@@ -1457,7 +1477,10 @@
|
|
1457 |
if ( $this->is_plugin() &&
|
1458 |
! isset( $this->_storage->is_plugin_new_install )
|
1459 |
) {
|
1460 |
-
$this->_storage->is_plugin_new_install =
|
|
|
|
|
|
|
1461 |
}
|
1462 |
}
|
1463 |
|
@@ -1480,6 +1503,13 @@
|
|
1480 |
-1 < settings.url.indexOf('admin-ajax.php') &&
|
1481 |
! ( settings.url.indexOf( '<?php echo $admin_param ?>' ) > 0 )
|
1482 |
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1483 |
if (settings.url.indexOf('?') > 0) {
|
1484 |
settings.url += '&';
|
1485 |
} else {
|
@@ -1487,7 +1517,6 @@
|
|
1487 |
}
|
1488 |
|
1489 |
settings.url += '<?php echo $admin_param ?>=true';
|
1490 |
-
|
1491 |
}
|
1492 |
});
|
1493 |
})(jQuery);
|
@@ -1505,7 +1534,7 @@
|
|
1505 |
?>
|
1506 |
<script type="text/javascript">
|
1507 |
(function ($) {
|
1508 |
-
$('.fs-submenu-item.wp-support-forum').parent().attr(
|
1509 |
})(jQuery);
|
1510 |
</script>
|
1511 |
<?php
|
@@ -1601,6 +1630,7 @@
|
|
1601 |
}
|
1602 |
|
1603 |
add_action( 'init', array( &$this, '_maybe_add_gdpr_optin_ajax_handler') );
|
|
|
1604 |
}
|
1605 |
|
1606 |
if ( $this->is_plugin() ) {
|
@@ -1632,7 +1662,7 @@
|
|
1632 |
|
1633 |
add_action( 'admin_init', array( &$this, '_redirect_on_clicked_menu_link' ), WP_FS__LOWEST_PRIORITY );
|
1634 |
|
1635 |
-
if ( $this->is_theme() ) {
|
1636 |
add_action( 'admin_init', array( &$this, '_add_tracking_links' ) );
|
1637 |
}
|
1638 |
|
@@ -1644,6 +1674,7 @@
|
|
1644 |
$this->add_ajax_action( 'update_billing', array( &$this, '_update_billing_ajax_action' ) );
|
1645 |
$this->add_ajax_action( 'start_trial', array( &$this, '_start_trial_ajax_action' ) );
|
1646 |
$this->add_ajax_action( 'set_data_debug_mode', array( &$this, '_set_data_debug_mode' ) );
|
|
|
1647 |
|
1648 |
if ( $this->_is_network_active && fs_is_network_admin() ) {
|
1649 |
$this->add_ajax_action( 'network_activate', array( &$this, '_network_activate_ajax_action' ) );
|
@@ -2006,6 +2037,10 @@
|
|
2006 |
* @since 2.0.0
|
2007 |
*/
|
2008 |
function _hook_action_links_and_register_account_hooks() {
|
|
|
|
|
|
|
|
|
2009 |
$this->_add_tracking_links();
|
2010 |
|
2011 |
if ( self::is_plugins_page() && $this->is_plugin() ) {
|
@@ -2186,6 +2221,12 @@
|
|
2186 |
);
|
2187 |
|
2188 |
$store_option = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
2189 |
}
|
2190 |
|
2191 |
if ( empty( $id_slug_type_path_map[ $module_id ]['path'] ) ||
|
@@ -4259,7 +4300,7 @@
|
|
4259 |
)
|
4260 |
),
|
4261 |
sprintf(
|
4262 |
-
'<a href="%s" target="_blank"><b>%s</b></a> - %s',
|
4263 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
4264 |
$install_previous_title,
|
4265 |
$install_previous_desc
|
@@ -4366,7 +4407,7 @@
|
|
4366 |
)
|
4367 |
),
|
4368 |
sprintf(
|
4369 |
-
'<a href="%s" target="_blank"><b>%s</b></a> - %s',
|
4370 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
4371 |
$install_previous_title,
|
4372 |
$install_previous_desc
|
@@ -4887,10 +4928,12 @@
|
|
4887 |
} else {
|
4888 |
$is_network_admin = fs_is_network_admin();
|
4889 |
|
4890 |
-
if (
|
|
|
|
|
|
|
4891 |
$this->_parent->is_registered() &&
|
4892 |
! $this->is_registered() &&
|
4893 |
-
$this->has_free_plan() &&
|
4894 |
/**
|
4895 |
* If not registered for add-on and the following conditions for the add-on are met, activate add-on account.
|
4896 |
* * Network active and in network admin - network activate add-on account.
|
@@ -4904,16 +4947,40 @@
|
|
4904 |
*/
|
4905 |
( $this->is_network_active() || ! $is_network_admin )
|
4906 |
) {
|
4907 |
-
|
4908 |
-
|
4909 |
-
|
4910 |
-
|
4911 |
-
|
4912 |
-
|
4913 |
-
)
|
4914 |
-
|
4915 |
-
|
4916 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4917 |
}
|
4918 |
|
4919 |
// @todo This should be only executed on activation. It should be migrated to register_activation_hook() together with other activation related logic.
|
@@ -5415,7 +5482,10 @@
|
|
5415 |
* @return bool
|
5416 |
*/
|
5417 |
function is_extensions_tracking_allowed() {
|
5418 |
-
return (true === $this->
|
|
|
|
|
|
|
5419 |
}
|
5420 |
|
5421 |
/**
|
@@ -5601,6 +5671,7 @@
|
|
5601 |
$this->_anonymous_mode = $this->get_bool_option( $plugin_info, 'anonymous_mode', false );
|
5602 |
}
|
5603 |
$this->_permissions = $this->get_option( $plugin_info, 'permissions', array() );
|
|
|
5604 |
|
5605 |
if ( ! empty( $plugin_info['trial'] ) ) {
|
5606 |
$this->_trial_days = $this->get_numeric_option(
|
@@ -7078,6 +7149,8 @@
|
|
7078 |
* @since 1.0.7
|
7079 |
*/
|
7080 |
function _admin_init_action() {
|
|
|
|
|
7081 |
/**
|
7082 |
* Automatically redirect to connect/activation page after plugin activation.
|
7083 |
*
|
@@ -7090,12 +7163,16 @@
|
|
7090 |
/**
|
7091 |
* Don't redirect if activating multiple plugins at once (bulk activation).
|
7092 |
*/
|
7093 |
-
} else {
|
7094 |
$this->_redirect_on_activation_hook();
|
7095 |
return;
|
7096 |
}
|
7097 |
}
|
7098 |
|
|
|
|
|
|
|
|
|
7099 |
if ( fs_request_is_action( $this->get_unique_affix() . '_skip_activation' ) ) {
|
7100 |
check_admin_referer( $this->get_unique_affix() . '_skip_activation' );
|
7101 |
|
@@ -7126,7 +7203,7 @@
|
|
7126 |
)
|
7127 |
) {
|
7128 |
if ( ! $this->is_pending_activation() ) {
|
7129 |
-
if ( ! $this->
|
7130 |
/**
|
7131 |
* If a user visits any other admin page before activating the premium-only theme with a valid
|
7132 |
* license, reactivate the previous theme.
|
@@ -7660,7 +7737,10 @@
|
|
7660 |
* @author Leo Fajardo (@leorw)
|
7661 |
* @since 1.2.2
|
7662 |
*/
|
7663 |
-
if (
|
|
|
|
|
|
|
7664 |
deactivate_plugins( $other_version_basename );
|
7665 |
}
|
7666 |
}
|
@@ -7769,8 +7849,17 @@
|
|
7769 |
$this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
|
7770 |
}
|
7771 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7772 |
if ( ! $this->_anonymous_mode &&
|
7773 |
-
$
|
7774 |
! $this->_isAutoInstall
|
7775 |
) {
|
7776 |
// Store hint that the plugin was just activated to enable auto-redirection to settings.
|
@@ -7803,11 +7892,20 @@
|
|
7803 |
return;
|
7804 |
}
|
7805 |
|
7806 |
-
$license = $this->
|
7807 |
if ( ! is_object( $license ) ) {
|
7808 |
return;
|
7809 |
}
|
7810 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7811 |
if ( ! $this->is_registered() ) {
|
7812 |
// Opt in with a license key.
|
7813 |
$this->opt_in(
|
@@ -7830,7 +7928,6 @@
|
|
7830 |
}
|
7831 |
}
|
7832 |
|
7833 |
-
|
7834 |
/**
|
7835 |
* @author Leo Fajardo (@leorw)
|
7836 |
* @since 2.3.0
|
@@ -7846,12 +7943,21 @@
|
|
7846 |
|
7847 |
$license = ( ! is_null( $license ) ) ?
|
7848 |
$license :
|
7849 |
-
$this->
|
7850 |
|
7851 |
if ( ! is_object( $license ) ) {
|
7852 |
return;
|
7853 |
}
|
7854 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7855 |
if ( ! $this->is_network_registered() ) {
|
7856 |
$sites = $this->get_sites_for_network_level_optin();
|
7857 |
|
@@ -7915,16 +8021,217 @@
|
|
7915 |
}
|
7916 |
|
7917 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7918 |
* @author Leo Fajardo (@leorw)
|
7919 |
* @since 2.3.0
|
7920 |
*
|
|
|
|
|
|
|
7921 |
* @return FS_Plugin_License
|
7922 |
*/
|
7923 |
-
|
7924 |
$parent_licenses_endpoint = "/plugins/{$this->get_id()}/parent_licenses.json?filter=activatable";
|
7925 |
-
$parent_instance = $this->get_parent_instance();
|
7926 |
|
7927 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7928 |
self::get_all_licenses( $this->get_parent_id() )
|
7929 |
);
|
7930 |
|
@@ -7938,7 +8245,7 @@
|
|
7938 |
$parent_licenses_endpoint = add_query_arg( $foreign_licenses, $parent_licenses_endpoint );
|
7939 |
}
|
7940 |
|
7941 |
-
$result = $
|
7942 |
|
7943 |
if (
|
7944 |
! $this->is_api_result_object( $result, 'licenses' ) ||
|
@@ -7948,9 +8255,24 @@
|
|
7948 |
return null;
|
7949 |
}
|
7950 |
|
7951 |
-
$
|
7952 |
|
7953 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7954 |
}
|
7955 |
|
7956 |
/**
|
@@ -8703,12 +9025,25 @@
|
|
8703 |
'is_uninstalled' => false,
|
8704 |
);
|
8705 |
|
8706 |
-
$plugins_update_data[] = $new_plugin;
|
8707 |
$network_plugins_cache->plugins[ $basename ] = $new_plugin;
|
8708 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8709 |
if ( isset( $site_active_plugins[ $basename ] ) ) {
|
8710 |
$site_active_plugins_cache->plugins[ $basename ] = $new_plugin;
|
8711 |
-
$site_active_plugins_cache->plugins[ $basename ]['is_active'] =
|
8712 |
}
|
8713 |
}
|
8714 |
}
|
@@ -10108,6 +10443,10 @@
|
|
10108 |
|
10109 |
$class_name = '';
|
10110 |
|
|
|
|
|
|
|
|
|
10111 |
switch ( $option_name ) {
|
10112 |
case 'plugins':
|
10113 |
case 'themes':
|
@@ -10392,6 +10731,18 @@
|
|
10392 |
return ( is_object( $this->_site ) && $this->_site->is_tracking_allowed() );
|
10393 |
}
|
10394 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10395 |
/**
|
10396 |
* @author Vova Feldman (@svovaf)
|
10397 |
* @since 1.0.4
|
@@ -12675,6 +13026,10 @@
|
|
12675 |
* @since 1.2.0
|
12676 |
*/
|
12677 |
function _add_license_activation() {
|
|
|
|
|
|
|
|
|
12678 |
if ( ! $this->is_user_admin() ) {
|
12679 |
// Only admins can activate a license.
|
12680 |
return;
|
@@ -12733,7 +13088,9 @@
|
|
12733 |
return;
|
12734 |
}
|
12735 |
|
12736 |
-
|
|
|
|
|
12737 |
// Handle user change only when the parent product or one of its add-ons is activated with a foreign license.
|
12738 |
return;
|
12739 |
}
|
@@ -12790,6 +13147,61 @@
|
|
12790 |
}
|
12791 |
}
|
12792 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12793 |
/**
|
12794 |
* @author Leo Fajardo (@leorw)
|
12795 |
* @since 2.3.0
|
@@ -12869,11 +13281,13 @@
|
|
12869 |
exit;
|
12870 |
}
|
12871 |
|
|
|
|
|
|
|
|
|
12872 |
$result = $this->activate_license(
|
12873 |
$license_key,
|
12874 |
-
|
12875 |
-
fs_request_get( 'sites', array(), 'post' ) :
|
12876 |
-
array(),
|
12877 |
fs_request_get_bool( 'is_marketing_allowed', null ),
|
12878 |
fs_request_get( 'blog_id', null ),
|
12879 |
fs_request_get( 'module_id', null, 'post' ),
|
@@ -12881,6 +13295,16 @@
|
|
12881 |
fs_request_get_bool( 'is_extensions_tracking_allowed', true )
|
12882 |
);
|
12883 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12884 |
echo json_encode( $result );
|
12885 |
|
12886 |
exit;
|
@@ -12967,6 +13391,46 @@
|
|
12967 |
}
|
12968 |
|
12969 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12970 |
* A helper method to activate migrated licenses. If the product is network activated and integrated, the method will network activate the license.
|
12971 |
*
|
12972 |
* @author Vova Feldman (@svovaf)
|
@@ -12975,6 +13439,8 @@
|
|
12975 |
* @param string $license_key
|
12976 |
* @param null|bool $is_marketing_allowed
|
12977 |
* @param null|number $plugin_id
|
|
|
|
|
12978 |
*
|
12979 |
* @return array {
|
12980 |
* @var bool $success
|
@@ -12987,17 +13453,19 @@
|
|
12987 |
function activate_migrated_license(
|
12988 |
$license_key,
|
12989 |
$is_marketing_allowed = null,
|
12990 |
-
$plugin_id = null
|
|
|
|
|
12991 |
) {
|
12992 |
$this->_logger->entrance();
|
12993 |
|
12994 |
$result = $this->activate_license(
|
12995 |
$license_key,
|
12996 |
-
$this->is_network_active() ?
|
12997 |
$this->get_sites_for_network_level_optin() :
|
12998 |
-
|
12999 |
$is_marketing_allowed,
|
13000 |
-
|
13001 |
$plugin_id
|
13002 |
);
|
13003 |
|
@@ -13007,6 +13475,32 @@
|
|
13007 |
return $result;
|
13008 |
}
|
13009 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13010 |
/**
|
13011 |
* The implementation of this method was previously in `_activate_license_ajax_action()`.
|
13012 |
*
|
@@ -13039,7 +13533,12 @@
|
|
13039 |
|
13040 |
$license_key = trim( $license_key );
|
13041 |
|
13042 |
-
|
|
|
|
|
|
|
|
|
|
|
13043 |
// If the license activation is executed outside the context of a network admin, ignore the sites collection.
|
13044 |
$sites = array();
|
13045 |
}
|
@@ -13068,8 +13567,17 @@
|
|
13068 |
$user = $fs->get_current_or_network_user();
|
13069 |
}
|
13070 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13071 |
if ( is_object( $user ) ) {
|
13072 |
-
if (
|
13073 |
// If no specific blog ID was provided, activate the license for all sites in the network.
|
13074 |
$blog_2_install_map = array();
|
13075 |
$site_ids = array();
|
@@ -13108,16 +13616,6 @@
|
|
13108 |
}
|
13109 |
}
|
13110 |
} else {
|
13111 |
-
if ( $has_valid_blog_id ) {
|
13112 |
-
/**
|
13113 |
-
* If a specific blog ID was provided, activate the license only for the install that is
|
13114 |
-
* associated with the given blog ID.
|
13115 |
-
*
|
13116 |
-
* @author Leo Fajardo (@leorw)
|
13117 |
-
*/
|
13118 |
-
$fs->switch_to_blog( $blog_id );
|
13119 |
-
}
|
13120 |
-
|
13121 |
if ( $fs->is_registered() ) {
|
13122 |
$params = array(
|
13123 |
'license_key' => $fs->apply_filters( 'license_key', $license_key )
|
@@ -13172,13 +13670,19 @@
|
|
13172 |
if ( empty( $error ) ) {
|
13173 |
$fs->network_upgrade_mode_completed();
|
13174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13175 |
$fs->_sync_license( true, $has_valid_blog_id );
|
13176 |
|
13177 |
$this->maybe_sync_install_user();
|
13178 |
|
13179 |
$next_page = $fs->is_addon() ?
|
13180 |
$fs->get_parent_instance()->get_account_url() :
|
13181 |
-
$fs->
|
13182 |
}
|
13183 |
} else {
|
13184 |
$next_page = $fs->opt_in(
|
@@ -13196,7 +13700,7 @@
|
|
13196 |
if ( isset( $next_page->error ) ) {
|
13197 |
$error = $next_page->error;
|
13198 |
} else {
|
13199 |
-
if (
|
13200 |
/**
|
13201 |
* Get the list of sites that were just opted-in (and license activated).
|
13202 |
* This is an optimization for the next part below saving some DB queries.
|
@@ -14310,7 +14814,12 @@
|
|
14310 |
* @return bool
|
14311 |
*/
|
14312 |
function is_user_in_admin() {
|
14313 |
-
return
|
|
|
|
|
|
|
|
|
|
|
14314 |
}
|
14315 |
|
14316 |
/**
|
@@ -14622,9 +15131,18 @@
|
|
14622 |
if ( function_exists( 'get_sites' ) ) {
|
14623 |
// For WP 4.6 and above.
|
14624 |
return get_sites( $args );
|
14625 |
-
} else if ( function_exists( '
|
14626 |
// For WP 3.7 to WP 4.5.
|
14627 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14628 |
} else {
|
14629 |
// For WP 3.6 and below.
|
14630 |
return get_blog_list( 0, 'all' );
|
@@ -14801,7 +15319,7 @@
|
|
14801 |
* @return bool Since 2.3.1 returns if a switch was made.
|
14802 |
*/
|
14803 |
function switch_to_blog( $blog_id, FS_Site $install = null ) {
|
14804 |
-
if ( $blog_id == $this->_context_is_network_or_blog_id ) {
|
14805 |
return false;
|
14806 |
}
|
14807 |
|
@@ -16188,6 +16706,8 @@
|
|
16188 |
'http' => 402
|
16189 |
);
|
16190 |
|
|
|
|
|
16191 |
return $result;
|
16192 |
}
|
16193 |
|
@@ -17034,10 +17554,15 @@
|
|
17034 |
* @author Vova Feldman (@svovaf)
|
17035 |
* @since 1.0.6
|
17036 |
*
|
17037 |
-
* @param Freemius
|
17038 |
-
* @param bool|int|null
|
|
|
17039 |
*/
|
17040 |
-
private function _activate_addon_account(
|
|
|
|
|
|
|
|
|
17041 |
if ( $this->is_registered() ) {
|
17042 |
// Already activated.
|
17043 |
return;
|
@@ -17076,6 +17601,10 @@
|
|
17076 |
}
|
17077 |
}
|
17078 |
|
|
|
|
|
|
|
|
|
17079 |
// Activate add-on with parent plugin credentials.
|
17080 |
$result = $parent_fs->get_api_site_scope()->call(
|
17081 |
"/addons/{$this->_plugin->id}/installs.json",
|
@@ -17084,16 +17613,25 @@
|
|
17084 |
);
|
17085 |
|
17086 |
if ( ! $this->is_api_result_object( $result, 'installs' ) ) {
|
17087 |
-
|
17088 |
-
|
17089 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17090 |
|
17091 |
-
|
17092 |
-
|
17093 |
-
|
17094 |
-
|
17095 |
-
|
17096 |
-
|
|
|
17097 |
|
17098 |
return;
|
17099 |
}
|
@@ -17126,21 +17664,29 @@
|
|
17126 |
|
17127 |
if ( ! fs_is_network_admin() ) {
|
17128 |
// Try to activate premium license.
|
17129 |
-
$this->_activate_license( true );
|
17130 |
-
} else {
|
17131 |
-
$license_id = fs_request_get( 'license_id' );
|
17132 |
|
17133 |
-
if ( is_object( $
|
17134 |
-
|
17135 |
-
$license_id == $this->_site->license_id
|
17136 |
-
) {
|
17137 |
-
// License is already activated.
|
17138 |
-
return;
|
17139 |
}
|
|
|
|
|
|
|
|
|
|
|
17140 |
|
17141 |
-
|
17142 |
-
|
17143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17144 |
|
17145 |
if ( is_object( $premium_license ) ) {
|
17146 |
$this->maybe_network_activate_addon_license( $premium_license );
|
@@ -19438,9 +19984,11 @@
|
|
19438 |
*
|
19439 |
* @author Vova Feldman (@svovaf)
|
19440 |
* @since 1.2.1
|
|
|
|
|
19441 |
*/
|
19442 |
-
function has_active_valid_license() {
|
19443 |
-
return self::is_active_valid_license( $this->_license );
|
19444 |
}
|
19445 |
|
19446 |
/**
|
@@ -19532,15 +20080,16 @@
|
|
19532 |
* @since 2.1.3
|
19533 |
*
|
19534 |
* @param FS_Plugin_License $license
|
|
|
19535 |
*
|
19536 |
* @return bool
|
19537 |
*/
|
19538 |
-
private static function is_active_valid_license( $license ) {
|
19539 |
return (
|
19540 |
is_object( $license ) &&
|
19541 |
FS_Plugin_License::is_valid_id( $license->id ) &&
|
19542 |
$license->is_active() &&
|
19543 |
-
$license->is_valid()
|
19544 |
);
|
19545 |
}
|
19546 |
|
@@ -19594,6 +20143,22 @@
|
|
19594 |
);
|
19595 |
}
|
19596 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19597 |
/**
|
19598 |
* Check if user is a trial or have feature enabled license.
|
19599 |
*
|
@@ -20186,6 +20751,13 @@
|
|
20186 |
}
|
20187 |
|
20188 |
if ( 'none' !== $plan_change ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20189 |
$this->do_action( 'after_license_change', $plan_change, $this->get_plan() );
|
20190 |
}
|
20191 |
}
|
@@ -20909,7 +21481,7 @@
|
|
20909 |
*/
|
20910 |
private function get_latest_download_link( $label, $plugin_id = false ) {
|
20911 |
return sprintf(
|
20912 |
-
'<a target="_blank" href="%s">%s</a>',
|
20913 |
$this->_get_latest_download_local_url( $plugin_id ),
|
20914 |
$label
|
20915 |
);
|
@@ -20980,7 +21552,7 @@
|
|
20980 |
$this->get_text_inline( 'Version %s was released.', 'version-x-released' ) . ' ' . $this->get_text_inline( 'Please download %s.', 'please-download-x' ),
|
20981 |
$update->version,
|
20982 |
sprintf(
|
20983 |
-
'<a href="%s" target="_blank">%s</a>',
|
20984 |
$this->get_account_url( 'download_latest' ),
|
20985 |
sprintf(
|
20986 |
/* translators: %s: plan name (e.g. latest "Professional" version) */
|
@@ -21467,7 +22039,7 @@
|
|
21467 |
$this->get_plugin_title(),
|
21468 |
fs_strip_url_protocol( get_site_url( $blog_id ) ),
|
21469 |
sprintf(
|
21470 |
-
'<a href="%s" target="_blank">%s</a>',
|
21471 |
'https://freemius.com',
|
21472 |
'freemius.com'
|
21473 |
)
|
@@ -21566,6 +22138,18 @@
|
|
21566 |
|
21567 |
if ( is_object( $fs ) ) {
|
21568 |
$fs->_activate_license();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21569 |
}
|
21570 |
|
21571 |
return;
|
@@ -21788,6 +22372,26 @@
|
|
21788 |
|
21789 |
$this->_handle_account_edits();
|
21790 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21791 |
$this->do_action( 'account_page_load_before_departure' );
|
21792 |
}
|
21793 |
|
@@ -21924,6 +22528,86 @@
|
|
21924 |
}
|
21925 |
}
|
21926 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21927 |
#----------------------------------------------------------------------------------
|
21928 |
#region Contact Us
|
21929 |
#----------------------------------------------------------------------------------
|
@@ -22152,6 +22836,43 @@
|
|
22152 |
$this->get_api_plugin_scope();
|
22153 |
}
|
22154 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22155 |
/**
|
22156 |
* Show trial promotional notice (if any trial exist).
|
22157 |
*
|
@@ -22705,14 +23426,18 @@
|
|
22705 |
return;
|
22706 |
}
|
22707 |
|
22708 |
-
if (
|
22709 |
-
|
22710 |
-
|
22711 |
-
|
22712 |
-
|
|
|
|
|
|
|
22713 |
|
22714 |
-
|
22715 |
-
|
|
|
22716 |
return;
|
22717 |
}
|
22718 |
}
|
@@ -22792,7 +23517,7 @@
|
|
22792 |
if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
22793 |
if ( $this->is_network_registered() ) {
|
22794 |
$page = 'account';
|
22795 |
-
} else if ( $this->is_network_anonymous() ) {
|
22796 |
$this->maybe_set_slug_and_network_menu_exists_flag();
|
22797 |
}
|
22798 |
}
|
@@ -22827,10 +23552,12 @@
|
|
22827 |
* @since 1.0.3
|
22828 |
*/
|
22829 |
function _redirect_on_activation_hook() {
|
22830 |
-
|
|
|
22831 |
|
22832 |
-
|
22833 |
-
|
|
|
22834 |
}
|
22835 |
}
|
22836 |
|
@@ -22870,7 +23597,7 @@
|
|
22870 |
|
22871 |
foreach ( $this->_action_links as $new_links ) {
|
22872 |
foreach ( $new_links as $link ) {
|
22873 |
-
$before_deactivate[ $link['key'] ] = '<a href="' . $link['href'] . '"' . ( $link['external'] ? ' target="_blank"' : '' ) . '>' . $link['label'] . '</a>';
|
22874 |
}
|
22875 |
}
|
22876 |
|
@@ -22990,7 +23717,7 @@
|
|
22990 |
'';
|
22991 |
|
22992 |
return sprintf(
|
22993 |
-
' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
|
22994 |
$this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
|
22995 |
( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) .
|
22996 |
$this->get_latest_download_link( sprintf(
|
@@ -23243,6 +23970,14 @@
|
|
23243 |
*/
|
23244 |
function set_plugin_upgrade_complete() {
|
23245 |
$this->_storage->plugin_upgrade_mode = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23246 |
}
|
23247 |
|
23248 |
#endregion
|
351 |
*/
|
352 |
private $is_whitelabeled;
|
353 |
|
354 |
+
/**
|
355 |
+
* @author Leo Fajardo (@leorw)
|
356 |
+
* @since 2.4.0
|
357 |
+
*
|
358 |
+
* @var bool
|
359 |
+
*/
|
360 |
+
private $_is_bundle_license_auto_activation_enabled = false;
|
361 |
+
|
362 |
#region Uninstall Reasons IDs
|
363 |
|
364 |
const REASON_NO_LONGER_NEEDED = 1;
|
377 |
const REASON_DIDNT_WORK_AS_EXPECTED = 14;
|
378 |
const REASON_TEMPORARY_DEACTIVATION = 15;
|
379 |
|
380 |
+
/**
|
381 |
+
* @author Leo Fajardo (@leorw)
|
382 |
+
* @since 2.3.1
|
383 |
+
*
|
384 |
+
* @var boolean|null
|
385 |
+
*/
|
386 |
+
private $_use_external_pricing = null;
|
387 |
+
|
388 |
#endregion
|
389 |
|
390 |
/* Ctor
|
832 |
return false;
|
833 |
}
|
834 |
|
835 |
+
if (
|
836 |
+
! $is_tabs_visibility_check &&
|
837 |
+
$this->is_org_repo_compliant() &&
|
838 |
+
$this->show_settings_with_tabs()
|
839 |
+
) {
|
840 |
/**
|
841 |
* wp.org themes are limited to a single submenu item, and
|
842 |
* sub-submenu items are most likely not allowed (never verified).
|
1477 |
if ( $this->is_plugin() &&
|
1478 |
! isset( $this->_storage->is_plugin_new_install )
|
1479 |
) {
|
1480 |
+
$this->_storage->is_plugin_new_install = (
|
1481 |
+
! is_plugin_active( $this->_plugin_basename ) &&
|
1482 |
+
empty( $this->_storage->plugin_last_version )
|
1483 |
+
);
|
1484 |
}
|
1485 |
}
|
1486 |
|
1503 |
-1 < settings.url.indexOf('admin-ajax.php') &&
|
1504 |
! ( settings.url.indexOf( '<?php echo $admin_param ?>' ) > 0 )
|
1505 |
) {
|
1506 |
+
if (
|
1507 |
+
'string' === typeof settings.data &&
|
1508 |
+
settings.data.indexOf( 'action=heartbeat' ) > 0
|
1509 |
+
) {
|
1510 |
+
return;
|
1511 |
+
}
|
1512 |
+
|
1513 |
if (settings.url.indexOf('?') > 0) {
|
1514 |
settings.url += '&';
|
1515 |
} else {
|
1517 |
}
|
1518 |
|
1519 |
settings.url += '<?php echo $admin_param ?>=true';
|
|
|
1520 |
}
|
1521 |
});
|
1522 |
})(jQuery);
|
1534 |
?>
|
1535 |
<script type="text/javascript">
|
1536 |
(function ($) {
|
1537 |
+
$('.fs-submenu-item.wp-support-forum').parent().attr( { target: '_blank', rel: 'noopener noreferrer' } );
|
1538 |
})(jQuery);
|
1539 |
</script>
|
1540 |
<?php
|
1630 |
}
|
1631 |
|
1632 |
add_action( 'init', array( &$this, '_maybe_add_gdpr_optin_ajax_handler') );
|
1633 |
+
add_action( 'init', array( &$this, '_maybe_add_pricing_ajax_handler' ) );
|
1634 |
}
|
1635 |
|
1636 |
if ( $this->is_plugin() ) {
|
1662 |
|
1663 |
add_action( 'admin_init', array( &$this, '_redirect_on_clicked_menu_link' ), WP_FS__LOWEST_PRIORITY );
|
1664 |
|
1665 |
+
if ( $this->is_theme() && ! $this->is_migration() ) {
|
1666 |
add_action( 'admin_init', array( &$this, '_add_tracking_links' ) );
|
1667 |
}
|
1668 |
|
1674 |
$this->add_ajax_action( 'update_billing', array( &$this, '_update_billing_ajax_action' ) );
|
1675 |
$this->add_ajax_action( 'start_trial', array( &$this, '_start_trial_ajax_action' ) );
|
1676 |
$this->add_ajax_action( 'set_data_debug_mode', array( &$this, '_set_data_debug_mode' ) );
|
1677 |
+
$this->add_ajax_action( 'toggle_whitelabel_mode', array( &$this, '_toggle_whitelabel_mode_ajax_handler' ) );
|
1678 |
|
1679 |
if ( $this->_is_network_active && fs_is_network_admin() ) {
|
1680 |
$this->add_ajax_action( 'network_activate', array( &$this, '_network_activate_ajax_action' ) );
|
2037 |
* @since 2.0.0
|
2038 |
*/
|
2039 |
function _hook_action_links_and_register_account_hooks() {
|
2040 |
+
if ( $this->is_migration() ) {
|
2041 |
+
return;
|
2042 |
+
}
|
2043 |
+
|
2044 |
$this->_add_tracking_links();
|
2045 |
|
2046 |
if ( self::is_plugins_page() && $this->is_plugin() ) {
|
2221 |
);
|
2222 |
|
2223 |
$store_option = true;
|
2224 |
+
} else if (
|
2225 |
+
isset( $id_slug_type_path_map[ $module_id ]['slug'] ) &&
|
2226 |
+
$slug !== $id_slug_type_path_map[ $module_id ]['slug']
|
2227 |
+
) {
|
2228 |
+
$id_slug_type_path_map[ $module_id ]['slug'] = $slug;
|
2229 |
+
$store_option = true;
|
2230 |
}
|
2231 |
|
2232 |
if ( empty( $id_slug_type_path_map[ $module_id ]['path'] ) ||
|
4300 |
)
|
4301 |
),
|
4302 |
sprintf(
|
4303 |
+
'<a href="%s" target="_blank" rel="noopener noreferrer"><b>%s</b></a> - %s',
|
4304 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
4305 |
$install_previous_title,
|
4306 |
$install_previous_desc
|
4407 |
)
|
4408 |
),
|
4409 |
sprintf(
|
4410 |
+
'<a href="%s" target="_blank" rel="noopener noreferrer"><b>%s</b></a> - %s',
|
4411 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
4412 |
$install_previous_title,
|
4413 |
$install_previous_desc
|
4928 |
} else {
|
4929 |
$is_network_admin = fs_is_network_admin();
|
4930 |
|
4931 |
+
if ( ! $this->_parent->is_registered() && $this->is_registered() ) {
|
4932 |
+
// If add-on activated and parent not, automatically install parent for the user.
|
4933 |
+
$this->activate_parent_account( $this->_parent );
|
4934 |
+
} else if (
|
4935 |
$this->_parent->is_registered() &&
|
4936 |
! $this->is_registered() &&
|
|
|
4937 |
/**
|
4938 |
* If not registered for add-on and the following conditions for the add-on are met, activate add-on account.
|
4939 |
* * Network active and in network admin - network activate add-on account.
|
4947 |
*/
|
4948 |
( $this->is_network_active() || ! $is_network_admin )
|
4949 |
) {
|
4950 |
+
$premium_license = null;
|
4951 |
+
|
4952 |
+
if (
|
4953 |
+
! $this->has_free_plan() &&
|
4954 |
+
$this->is_bundle_license_auto_activation_enabled() &&
|
4955 |
+
$this->_parent->is_activated_with_bundle_license()
|
4956 |
+
) {
|
4957 |
+
/**
|
4958 |
+
* If the add-on has no free plan, try to activate the account only when there's a bundle license.
|
4959 |
+
*
|
4960 |
+
* @author Leo Fajardo (@leorw)
|
4961 |
+
* @since 2.4.0
|
4962 |
+
*/
|
4963 |
+
$bundle_license = $this->get_active_parent_license( $this->_parent->_get_license()->secret_key, false );
|
4964 |
+
|
4965 |
+
if (
|
4966 |
+
is_object( $bundle_license ) &&
|
4967 |
+
! empty( $bundle_license->products ) &&
|
4968 |
+
in_array( $this->get_id(), $bundle_license->products )
|
4969 |
+
) {
|
4970 |
+
$premium_license = $bundle_license;
|
4971 |
+
}
|
4972 |
+
}
|
4973 |
+
|
4974 |
+
if ( $this->has_free_plan() || is_object( $premium_license) ) {
|
4975 |
+
// If parent plugin activated, automatically install add-on for the user.
|
4976 |
+
$this->_activate_addon_account(
|
4977 |
+
$this->_parent,
|
4978 |
+
( $this->is_network_active() && $is_network_admin ) ?
|
4979 |
+
true :
|
4980 |
+
get_current_blog_id(),
|
4981 |
+
$premium_license
|
4982 |
+
);
|
4983 |
+
}
|
4984 |
}
|
4985 |
|
4986 |
// @todo This should be only executed on activation. It should be migrated to register_activation_hook() together with other activation related logic.
|
5482 |
* @return bool
|
5483 |
*/
|
5484 |
function is_extensions_tracking_allowed() {
|
5485 |
+
return ( true === $this->apply_filters(
|
5486 |
+
'is_extensions_tracking_allowed',
|
5487 |
+
$this->_storage->get( 'is_extensions_tracking_allowed', true )
|
5488 |
+
) );
|
5489 |
}
|
5490 |
|
5491 |
/**
|
5671 |
$this->_anonymous_mode = $this->get_bool_option( $plugin_info, 'anonymous_mode', false );
|
5672 |
}
|
5673 |
$this->_permissions = $this->get_option( $plugin_info, 'permissions', array() );
|
5674 |
+
$this->_is_bundle_license_auto_activation_enabled = $this->get_option( $plugin_info, 'bundle_license_auto_activation', false );
|
5675 |
|
5676 |
if ( ! empty( $plugin_info['trial'] ) ) {
|
5677 |
$this->_trial_days = $this->get_numeric_option(
|
7149 |
* @since 1.0.7
|
7150 |
*/
|
7151 |
function _admin_init_action() {
|
7152 |
+
$is_migration = $this->is_migration();
|
7153 |
+
|
7154 |
/**
|
7155 |
* Automatically redirect to connect/activation page after plugin activation.
|
7156 |
*
|
7163 |
/**
|
7164 |
* Don't redirect if activating multiple plugins at once (bulk activation).
|
7165 |
*/
|
7166 |
+
} else if ( ! $is_migration ) {
|
7167 |
$this->_redirect_on_activation_hook();
|
7168 |
return;
|
7169 |
}
|
7170 |
}
|
7171 |
|
7172 |
+
if ( $is_migration ) {
|
7173 |
+
return;
|
7174 |
+
}
|
7175 |
+
|
7176 |
if ( fs_request_is_action( $this->get_unique_affix() . '_skip_activation' ) ) {
|
7177 |
check_admin_referer( $this->get_unique_affix() . '_skip_activation' );
|
7178 |
|
7203 |
)
|
7204 |
) {
|
7205 |
if ( ! $this->is_pending_activation() ) {
|
7206 |
+
if ( ! $this->is_activation_page() ) {
|
7207 |
/**
|
7208 |
* If a user visits any other admin page before activating the premium-only theme with a valid
|
7209 |
* license, reactivate the previous theme.
|
7737 |
* @author Leo Fajardo (@leorw)
|
7738 |
* @since 1.2.2
|
7739 |
*/
|
7740 |
+
if (
|
7741 |
+
is_plugin_active( $other_version_basename ) &&
|
7742 |
+
$this->apply_filters( 'deactivate_on_activation', true )
|
7743 |
+
) {
|
7744 |
deactivate_plugins( $other_version_basename );
|
7745 |
}
|
7746 |
}
|
7849 |
$this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
|
7850 |
}
|
7851 |
|
7852 |
+
/**
|
7853 |
+
* Also flush when activating the premium version so that even if Freemius was off before, the API
|
7854 |
+
* connectivity test can be run again.
|
7855 |
+
*
|
7856 |
+
* @author Leo Fajardo (@leorw)
|
7857 |
+
* @since 2.2.3.1
|
7858 |
+
*/
|
7859 |
+
$has_api_connectivity = $this->has_api_connectivity( WP_FS__DEV_MODE || $is_premium_version_activation );
|
7860 |
+
|
7861 |
if ( ! $this->_anonymous_mode &&
|
7862 |
+
$has_api_connectivity &&
|
7863 |
! $this->_isAutoInstall
|
7864 |
) {
|
7865 |
// Store hint that the plugin was just activated to enable auto-redirection to settings.
|
7892 |
return;
|
7893 |
}
|
7894 |
|
7895 |
+
$license = $this->get_active_parent_license();
|
7896 |
if ( ! is_object( $license ) ) {
|
7897 |
return;
|
7898 |
}
|
7899 |
|
7900 |
+
if (
|
7901 |
+
$this->is_bundle_license_auto_activation_enabled() &&
|
7902 |
+
! empty( $license->products )
|
7903 |
+
) {
|
7904 |
+
$this->activate_bundle_license( $license );
|
7905 |
+
|
7906 |
+
return;
|
7907 |
+
}
|
7908 |
+
|
7909 |
if ( ! $this->is_registered() ) {
|
7910 |
// Opt in with a license key.
|
7911 |
$this->opt_in(
|
7928 |
}
|
7929 |
}
|
7930 |
|
|
|
7931 |
/**
|
7932 |
* @author Leo Fajardo (@leorw)
|
7933 |
* @since 2.3.0
|
7943 |
|
7944 |
$license = ( ! is_null( $license ) ) ?
|
7945 |
$license :
|
7946 |
+
$this->get_active_parent_license();
|
7947 |
|
7948 |
if ( ! is_object( $license ) ) {
|
7949 |
return;
|
7950 |
}
|
7951 |
|
7952 |
+
if (
|
7953 |
+
$this->is_bundle_license_auto_activation_enabled() &&
|
7954 |
+
! empty( $license->products )
|
7955 |
+
) {
|
7956 |
+
$this->activate_bundle_license( $license );
|
7957 |
+
|
7958 |
+
return;
|
7959 |
+
}
|
7960 |
+
|
7961 |
if ( ! $this->is_network_registered() ) {
|
7962 |
$sites = $this->get_sites_for_network_level_optin();
|
7963 |
|
8021 |
}
|
8022 |
|
8023 |
/**
|
8024 |
+
* Tries to activate a bundle license for all supported products if the current product is activated with a bundle license. This is called after activating an available license (not via the license activation dialog but by clicking on a license activation button) for a product via its "Account" page.
|
8025 |
+
*
|
8026 |
+
* @author Leo Fajardo (@leorw)
|
8027 |
+
* @since 2.4.0
|
8028 |
+
*
|
8029 |
+
* @param FS_Plugin_License $license
|
8030 |
+
* @param array $sites
|
8031 |
+
* @param int $blog_id
|
8032 |
+
*/
|
8033 |
+
private function maybe_activate_bundle_license( FS_Plugin_License $license = null, $sites = array(), $blog_id = 0 ) {
|
8034 |
+
if ( ! is_object( $license ) && $this->has_active_valid_license() ) {
|
8035 |
+
$license = $this->_license;
|
8036 |
+
}
|
8037 |
+
|
8038 |
+
if ( ! is_object( $license ) ) {
|
8039 |
+
return;
|
8040 |
+
}
|
8041 |
+
|
8042 |
+
$parent_license = ( ! empty( $license->products ) ) ?
|
8043 |
+
$license :
|
8044 |
+
$this->get_active_parent_license( $license->secret_key );
|
8045 |
+
|
8046 |
+
if ( is_object( $parent_license ) ) {
|
8047 |
+
$this->activate_bundle_license( $parent_license, $sites, $blog_id );
|
8048 |
+
}
|
8049 |
+
}
|
8050 |
+
|
8051 |
+
/**
|
8052 |
+
* Try to activate a bundle license for all the bundle products installed on the site.
|
8053 |
+
* (1) If a child product install already has a license, the bundle license won't be activated.
|
8054 |
+
* (2) On multi-site networks, if the attempt to activate the bundle license is triggered from the network admin, the bundle license activation will only work for non-delegated sites and only if none of them is associated with a license. Even if one of the sites has the product installed with a license key, skip the bundle license activation for the product.
|
8055 |
+
* (3) On multi-site networks, if the attempt to activate the bundle license is triggered from a site-level admin, only activate the license if the product is site-level activated or delegated, and the product installation is not yet associated with a license.
|
8056 |
+
*
|
8057 |
+
* @author Leo Fajardo (@leorw)
|
8058 |
+
* @since 2.4.0
|
8059 |
+
*
|
8060 |
+
* @param FS_Plugin_License $license
|
8061 |
+
* @param array $sites
|
8062 |
+
* @param int $current_blog_id
|
8063 |
+
*/
|
8064 |
+
private function activate_bundle_license( $license, $sites = array(), $current_blog_id = 0 ) {
|
8065 |
+
$is_network_admin = fs_is_network_admin();
|
8066 |
+
|
8067 |
+
$installs_by_blog_map = array();
|
8068 |
+
$site_info_by_blog_map = array();
|
8069 |
+
|
8070 |
+
/**
|
8071 |
+
* Try to activate the license for all supported products.
|
8072 |
+
*
|
8073 |
+
* @author Leo Fajardo
|
8074 |
+
*/
|
8075 |
+
foreach ( $license->products as $product_id ) {
|
8076 |
+
$fs = self::get_instance_by_id( $product_id );
|
8077 |
+
|
8078 |
+
if ( ! is_object( $fs ) ) {
|
8079 |
+
continue;
|
8080 |
+
}
|
8081 |
+
|
8082 |
+
if ( ! $fs->has_paid_plan() ) {
|
8083 |
+
continue;
|
8084 |
+
}
|
8085 |
+
|
8086 |
+
if (
|
8087 |
+
! $fs->is_addon() &&
|
8088 |
+
! FS_Plan_Manager::instance()->has_paid_plan( $fs->_plans )
|
8089 |
+
) {
|
8090 |
+
/**
|
8091 |
+
* The parent product can be free-only but can have its `has_paid_plan` flag set to `true` when
|
8092 |
+
* there is a context bundle.
|
8093 |
+
*/
|
8094 |
+
continue;
|
8095 |
+
}
|
8096 |
+
|
8097 |
+
if ( $current_blog_id > 0 ) {
|
8098 |
+
$fs->switch_to_blog( $current_blog_id );
|
8099 |
+
}
|
8100 |
+
|
8101 |
+
if ( $fs->has_active_valid_license() ) {
|
8102 |
+
continue;
|
8103 |
+
}
|
8104 |
+
|
8105 |
+
if ( ! $is_network_admin || $current_blog_id > 0 ) {
|
8106 |
+
if ( $fs->is_network_active() && ! $fs->is_delegated_connection( $current_blog_id ) ) {
|
8107 |
+
// Do not try to activate the license in the site level if the product is network active and the connection was not delegated.
|
8108 |
+
continue;
|
8109 |
+
}
|
8110 |
+
} else {
|
8111 |
+
if ( ! $fs->is_network_active() ) {
|
8112 |
+
// Do not try to activate the license in the network level if the product is not network active.
|
8113 |
+
continue;
|
8114 |
+
}
|
8115 |
+
|
8116 |
+
if ( $fs->is_network_delegated_connection() ) {
|
8117 |
+
// Do not try to activate the license in the network level if the activation has been delegated to site admins.
|
8118 |
+
continue;
|
8119 |
+
}
|
8120 |
+
|
8121 |
+
$has_install_with_license = false;
|
8122 |
+
|
8123 |
+
// Collection of sites that have an install entity that is not activated with a license or non-delegated sites that have no install entity, or both types of site.
|
8124 |
+
$filtered_sites = array();
|
8125 |
+
|
8126 |
+
if ( empty( $sites ) ) {
|
8127 |
+
$all_sites = self::get_sites();
|
8128 |
+
|
8129 |
+
foreach ( $all_sites as $site ) {
|
8130 |
+
$sites[] = array( 'blog_id' => self::get_site_blog_id( $site ) );
|
8131 |
+
}
|
8132 |
+
} else {
|
8133 |
+
// Populate the map here to avoid calling `$fs->get_site_info( $site );` in the other `for` loop below.
|
8134 |
+
foreach ( $sites as $site ) {
|
8135 |
+
if ( ! isset( $site['blog_id'] ) || ! is_numeric( $site['blog_id'] ) ) {
|
8136 |
+
continue;
|
8137 |
+
}
|
8138 |
+
|
8139 |
+
$site_info_by_blog_map[ $site['blog_id'] ] = $site;
|
8140 |
+
}
|
8141 |
+
}
|
8142 |
+
|
8143 |
+
foreach ( $sites as $site ) {
|
8144 |
+
if ( ! isset( $site['blog_id'] ) || ! is_numeric( $site['blog_id'] ) ) {
|
8145 |
+
continue;
|
8146 |
+
}
|
8147 |
+
|
8148 |
+
$blog_id = $site['blog_id'];
|
8149 |
+
|
8150 |
+
if ( ! isset( $installs_by_blog_map[ $blog_id ] ) ) {
|
8151 |
+
$installs_by_blog_map[ $blog_id ] = self::get_all_sites( $fs->get_module_type(), $blog_id );
|
8152 |
+
}
|
8153 |
+
|
8154 |
+
$installs = $installs_by_blog_map[ $blog_id ];
|
8155 |
+
$install = null;
|
8156 |
+
|
8157 |
+
if ( isset( $installs[ $fs->get_slug() ] ) ) {
|
8158 |
+
$install = $installs[ $fs->get_slug() ];
|
8159 |
+
|
8160 |
+
if (
|
8161 |
+
is_object( $install ) &&
|
8162 |
+
(
|
8163 |
+
! FS_Site::is_valid_id( $install->id ) ||
|
8164 |
+
! FS_User::is_valid_id( $install->user_id ) ||
|
8165 |
+
! FS_Plugin_Plan::is_valid_id( $install->plan_id )
|
8166 |
+
)
|
8167 |
+
) {
|
8168 |
+
$install = null;
|
8169 |
+
}
|
8170 |
+
}
|
8171 |
+
|
8172 |
+
if (
|
8173 |
+
is_object( $install ) &&
|
8174 |
+
FS_Plugin_License::is_valid_id( $install->license_id )
|
8175 |
+
) {
|
8176 |
+
$has_install_with_license = true;
|
8177 |
+
break;
|
8178 |
+
}
|
8179 |
+
|
8180 |
+
if ( $fs->is_site_delegated_connection( $blog_id ) ) {
|
8181 |
+
// Site activation delegated, don't activate bundle license on the site in the network admin.
|
8182 |
+
continue;
|
8183 |
+
}
|
8184 |
+
|
8185 |
+
if ( ! isset( $site_info_by_blog_map[ $blog_id ] ) ) {
|
8186 |
+
$site_info_by_blog_map[ $blog_id ] = $fs->get_site_info( $site );
|
8187 |
+
}
|
8188 |
+
|
8189 |
+
$filtered_sites[] = $site_info_by_blog_map[ $blog_id ];
|
8190 |
+
}
|
8191 |
+
|
8192 |
+
if ( $has_install_with_license || empty( $filtered_sites ) ) {
|
8193 |
+
// Do not try to activate the license at the network level if there's any install with a license or there's no site to activate the license on.
|
8194 |
+
continue;
|
8195 |
+
}
|
8196 |
+
|
8197 |
+
$sites = $filtered_sites;
|
8198 |
+
}
|
8199 |
+
|
8200 |
+
$fs->activate_migrated_license(
|
8201 |
+
$license->secret_key,
|
8202 |
+
null,
|
8203 |
+
null,
|
8204 |
+
$sites,
|
8205 |
+
( $current_blog_id > 0 ? $current_blog_id : null )
|
8206 |
+
);
|
8207 |
+
}
|
8208 |
+
}
|
8209 |
+
|
8210 |
+
/**
|
8211 |
+
* Returns a parent license that can be activated for the context product.
|
8212 |
+
*
|
8213 |
* @author Leo Fajardo (@leorw)
|
8214 |
* @since 2.3.0
|
8215 |
*
|
8216 |
+
* @param string|null $license_key
|
8217 |
+
* @param bool $flush
|
8218 |
+
*
|
8219 |
* @return FS_Plugin_License
|
8220 |
*/
|
8221 |
+
function get_active_parent_license( $license_key = null, $flush = true ) {
|
8222 |
$parent_licenses_endpoint = "/plugins/{$this->get_id()}/parent_licenses.json?filter=activatable";
|
|
|
8223 |
|
8224 |
+
$fs = $this;
|
8225 |
+
|
8226 |
+
if ( $this->is_addon() ) {
|
8227 |
+
$parent_instance = $this->get_parent_instance();
|
8228 |
+
|
8229 |
+
if ( is_object( $parent_instance ) && $parent_instance->is_registered() ) {
|
8230 |
+
$fs = $parent_instance;
|
8231 |
+
}
|
8232 |
+
}
|
8233 |
+
|
8234 |
+
$foreign_licenses = $fs->get_foreign_licenses_info(
|
8235 |
self::get_all_licenses( $this->get_parent_id() )
|
8236 |
);
|
8237 |
|
8245 |
$parent_licenses_endpoint = add_query_arg( $foreign_licenses, $parent_licenses_endpoint );
|
8246 |
}
|
8247 |
|
8248 |
+
$result = $fs->get_current_or_network_user_api_scope()->get( $parent_licenses_endpoint, $flush );
|
8249 |
|
8250 |
if (
|
8251 |
! $this->is_api_result_object( $result, 'licenses' ) ||
|
8255 |
return null;
|
8256 |
}
|
8257 |
|
8258 |
+
$parent_license = null;
|
8259 |
|
8260 |
+
if ( empty( $license_key ) ) {
|
8261 |
+
$parent_license = $result->licenses[0];
|
8262 |
+
} else {
|
8263 |
+
foreach ( $result->licenses as $license ) {
|
8264 |
+
if ( $license_key === $license->secret_key ) {
|
8265 |
+
$parent_license = $license;
|
8266 |
+
break;
|
8267 |
+
}
|
8268 |
+
}
|
8269 |
+
}
|
8270 |
+
|
8271 |
+
if ( ! is_null( $parent_license ) ) {
|
8272 |
+
$parent_license = new FS_Plugin_License( $parent_license );
|
8273 |
+
}
|
8274 |
+
|
8275 |
+
return $parent_license;
|
8276 |
}
|
8277 |
|
8278 |
/**
|
9025 |
'is_uninstalled' => false,
|
9026 |
);
|
9027 |
|
|
|
9028 |
$network_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9029 |
|
9030 |
+
$is_site_level_active = (
|
9031 |
+
isset( $site_active_plugins[ $basename ] ) &&
|
9032 |
+
$site_active_plugins[ $basename ]['is_active']
|
9033 |
+
);
|
9034 |
+
|
9035 |
+
/**
|
9036 |
+
* If not network active, set the activity status based on the site-level plugin status.
|
9037 |
+
*/
|
9038 |
+
if ( ! $new_plugin['is_active'] ) {
|
9039 |
+
$new_plugin['is_active'] = $is_site_level_active;
|
9040 |
+
}
|
9041 |
+
|
9042 |
+
$plugins_update_data[] = $new_plugin;
|
9043 |
+
|
9044 |
if ( isset( $site_active_plugins[ $basename ] ) ) {
|
9045 |
$site_active_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9046 |
+
$site_active_plugins_cache->plugins[ $basename ]['is_active'] = $is_site_level_active;
|
9047 |
}
|
9048 |
}
|
9049 |
}
|
10443 |
|
10444 |
$class_name = '';
|
10445 |
|
10446 |
+
if ( fs_starts_with( $option_name, WP_FS__MODULE_TYPE_THEME . '_' ) ) {
|
10447 |
+
$option_name = str_replace( WP_FS__MODULE_TYPE_THEME . '_', '', $option_name );
|
10448 |
+
}
|
10449 |
+
|
10450 |
switch ( $option_name ) {
|
10451 |
case 'plugins':
|
10452 |
case 'themes':
|
10731 |
return ( is_object( $this->_site ) && $this->_site->is_tracking_allowed() );
|
10732 |
}
|
10733 |
|
10734 |
+
/**
|
10735 |
+
* @author Leo Fajardo (@leorw)
|
10736 |
+
* @since 2.4.0
|
10737 |
+
*
|
10738 |
+
* @return bool
|
10739 |
+
*/
|
10740 |
+
function is_bundle_license_auto_activation_enabled() {
|
10741 |
+
return $this->is_addon() ?
|
10742 |
+
( is_object( $this->_parent ) && $this->_parent->is_bundle_license_auto_activation_enabled() ) :
|
10743 |
+
$this->_is_bundle_license_auto_activation_enabled;
|
10744 |
+
}
|
10745 |
+
|
10746 |
/**
|
10747 |
* @author Vova Feldman (@svovaf)
|
10748 |
* @since 1.0.4
|
13026 |
* @since 1.2.0
|
13027 |
*/
|
13028 |
function _add_license_activation() {
|
13029 |
+
if ( $this->is_migration() ) {
|
13030 |
+
return;
|
13031 |
+
}
|
13032 |
+
|
13033 |
if ( ! $this->is_user_admin() ) {
|
13034 |
// Only admins can activate a license.
|
13035 |
return;
|
13088 |
return;
|
13089 |
}
|
13090 |
|
13091 |
+
$installs_ids_with_foreign_licenses = $this->get_installs_ids_with_foreign_licenses();
|
13092 |
+
|
13093 |
+
if ( empty( $installs_ids_with_foreign_licenses ) ) {
|
13094 |
// Handle user change only when the parent product or one of its add-ons is activated with a foreign license.
|
13095 |
return;
|
13096 |
}
|
13147 |
}
|
13148 |
}
|
13149 |
|
13150 |
+
/**
|
13151 |
+
* @author Edgar Melkonyan
|
13152 |
+
* @since 2.4.1
|
13153 |
+
*
|
13154 |
+
* @throws Freemius_Exception
|
13155 |
+
*/
|
13156 |
+
function _toggle_whitelabel_mode_ajax_handler() {
|
13157 |
+
$this->_logger->entrance();
|
13158 |
+
|
13159 |
+
$this->check_ajax_referer( 'toggle_whitelabel_mode' );
|
13160 |
+
|
13161 |
+
if ( ! $this->is_user_admin() ) {
|
13162 |
+
// Only for admins.
|
13163 |
+
self::shoot_ajax_failure();
|
13164 |
+
}
|
13165 |
+
|
13166 |
+
$license = $this->get_api_user_scope()->call(
|
13167 |
+
"/licenses/{$this->_site->license_id}.json",
|
13168 |
+
'put',
|
13169 |
+
array( 'is_whitelabeled' => ! $this->_license->is_whitelabeled )
|
13170 |
+
);
|
13171 |
+
|
13172 |
+
if ( ! $this->is_api_result_entity( $license ) ) {
|
13173 |
+
self::shoot_ajax_failure(
|
13174 |
+
FS_Api::is_api_error_object( $license ) ?
|
13175 |
+
$license->error->message :
|
13176 |
+
fs_text_inline( "An unknown error has occurred while trying to toggle the license's white-label mode.", 'unknown-error-occurred', $this->get_slug() )
|
13177 |
+
);
|
13178 |
+
}
|
13179 |
+
|
13180 |
+
$this->_license->is_whitelabeled = $license->is_whitelabeled;
|
13181 |
+
$this->_store_licenses();
|
13182 |
+
|
13183 |
+
$this->_sync_license();
|
13184 |
+
|
13185 |
+
if ( ! $license->is_whitelabeled ) {
|
13186 |
+
$this->_admin_notices->remove_sticky( 'license_whitelabeled' );
|
13187 |
+
} else {
|
13188 |
+
$this->_admin_notices->add_sticky(
|
13189 |
+
sprintf(
|
13190 |
+
$this->get_text_inline(
|
13191 |
+
'Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s.',
|
13192 |
+
'license_whitelabeled'
|
13193 |
+
),
|
13194 |
+
"<strong>{$this->get_plugin_title()}</strong>",
|
13195 |
+
sprintf( '<a href="https://users.freemius.com" target="_blank">%s</a>', $this->get_text_inline( 'User Dashboard', 'user-dashboard' ) ),
|
13196 |
+
sprintf( '<a href="#" class="fs-toggle-whitelabel-mode">%s</a>', $this->get_text_inline( 'revert it now', 'revert-it-now' ) )
|
13197 |
+
),
|
13198 |
+
'license_whitelabeled'
|
13199 |
+
);
|
13200 |
+
}
|
13201 |
+
|
13202 |
+
self::shoot_ajax_response( array( 'success' => true ) );
|
13203 |
+
}
|
13204 |
+
|
13205 |
/**
|
13206 |
* @author Leo Fajardo (@leorw)
|
13207 |
* @since 2.3.0
|
13281 |
exit;
|
13282 |
}
|
13283 |
|
13284 |
+
$sites = fs_is_network_admin() ?
|
13285 |
+
fs_request_get( 'sites', array(), 'post' ) :
|
13286 |
+
array();
|
13287 |
+
|
13288 |
$result = $this->activate_license(
|
13289 |
$license_key,
|
13290 |
+
$sites,
|
|
|
|
|
13291 |
fs_request_get_bool( 'is_marketing_allowed', null ),
|
13292 |
fs_request_get( 'blog_id', null ),
|
13293 |
fs_request_get( 'module_id', null, 'post' ),
|
13295 |
fs_request_get_bool( 'is_extensions_tracking_allowed', true )
|
13296 |
);
|
13297 |
|
13298 |
+
if (
|
13299 |
+
$result['success'] &&
|
13300 |
+
$this->is_bundle_license_auto_activation_enabled()
|
13301 |
+
) {
|
13302 |
+
$license = new FS_Plugin_License();
|
13303 |
+
$license->secret_key = $license_key;
|
13304 |
+
|
13305 |
+
$this->maybe_activate_bundle_license( $license, $sites );
|
13306 |
+
}
|
13307 |
+
|
13308 |
echo json_encode( $result );
|
13309 |
|
13310 |
exit;
|
13391 |
}
|
13392 |
|
13393 |
/**
|
13394 |
+
* @author Leo Fajardo (@leorw)
|
13395 |
+
* @since 2.3.2.14
|
13396 |
+
*/
|
13397 |
+
function starting_migration() {
|
13398 |
+
if ( ! empty( $this->_storage->license_migration ) ) {
|
13399 |
+
// Do not overwrite the data if already set.
|
13400 |
+
return;
|
13401 |
+
}
|
13402 |
+
|
13403 |
+
$this->_storage->license_migration = array(
|
13404 |
+
'is_migrating' => true,
|
13405 |
+
'start_timestamp' => time()
|
13406 |
+
);
|
13407 |
+
}
|
13408 |
+
|
13409 |
+
/**
|
13410 |
+
* @author Leo Fajardo (@leorw)
|
13411 |
+
* @since 2.3.2.14
|
13412 |
+
*/
|
13413 |
+
function is_migration() {
|
13414 |
+
if ( $this->is_addon() ) {
|
13415 |
+
return $this->get_parent_instance()->is_migration();
|
13416 |
+
}
|
13417 |
+
|
13418 |
+
if ( empty( $this->_storage->license_migration ) ) {
|
13419 |
+
return false;
|
13420 |
+
}
|
13421 |
+
|
13422 |
+
if ( ! $this->_storage->license_migration['is_migrating'] ) {
|
13423 |
+
return false;
|
13424 |
+
}
|
13425 |
+
|
13426 |
+
return (
|
13427 |
+
// Return `true` if the migration is within 5 minutes from the starting time.
|
13428 |
+
( time() - $this->_storage->license_migration['start_timestamp'] ) <= WP_FS__TIME_5_MIN_IN_SEC
|
13429 |
+
);
|
13430 |
+
}
|
13431 |
+
|
13432 |
+
/**
|
13433 |
+
*
|
13434 |
* A helper method to activate migrated licenses. If the product is network activated and integrated, the method will network activate the license.
|
13435 |
*
|
13436 |
* @author Vova Feldman (@svovaf)
|
13439 |
* @param string $license_key
|
13440 |
* @param null|bool $is_marketing_allowed
|
13441 |
* @param null|number $plugin_id
|
13442 |
+
* @param array $sites
|
13443 |
+
* @param int $blog_id
|
13444 |
*
|
13445 |
* @return array {
|
13446 |
* @var bool $success
|
13453 |
function activate_migrated_license(
|
13454 |
$license_key,
|
13455 |
$is_marketing_allowed = null,
|
13456 |
+
$plugin_id = null,
|
13457 |
+
$sites = array(),
|
13458 |
+
$blog_id = null
|
13459 |
) {
|
13460 |
$this->_logger->entrance();
|
13461 |
|
13462 |
$result = $this->activate_license(
|
13463 |
$license_key,
|
13464 |
+
( empty( $sites ) && is_null( $blog_id ) && $this->is_network_active() ) ?
|
13465 |
$this->get_sites_for_network_level_optin() :
|
13466 |
+
$sites,
|
13467 |
$is_marketing_allowed,
|
13468 |
+
$blog_id,
|
13469 |
$plugin_id
|
13470 |
);
|
13471 |
|
13475 |
return $result;
|
13476 |
}
|
13477 |
|
13478 |
+
/**
|
13479 |
+
* @author Leo Fajardo (@leorw)
|
13480 |
+
* @since 2.3.1
|
13481 |
+
*
|
13482 |
+
* @return string
|
13483 |
+
*/
|
13484 |
+
function get_pricing_js_path() {
|
13485 |
+
return $this->apply_filters( 'freemius_pricing_js_path', WP_FS__DIR_INCLUDES . '/freemius-pricing/freemius-pricing.js' );
|
13486 |
+
}
|
13487 |
+
|
13488 |
+
/**
|
13489 |
+
* @author Leo Fajardo (@leorw)
|
13490 |
+
* @since 2.3.1
|
13491 |
+
*
|
13492 |
+
* @return bool
|
13493 |
+
*/
|
13494 |
+
function should_use_external_pricing() {
|
13495 |
+
if ( is_null( $this->_use_external_pricing ) ) {
|
13496 |
+
$pricing_js_path = $this->get_pricing_js_path();
|
13497 |
+
|
13498 |
+
$this->_use_external_pricing = ( empty( $pricing_js_path ) || ! file_exists( $pricing_js_path ) );
|
13499 |
+
}
|
13500 |
+
|
13501 |
+
return $this->_use_external_pricing;
|
13502 |
+
}
|
13503 |
+
|
13504 |
/**
|
13505 |
* The implementation of this method was previously in `_activate_license_ajax_action()`.
|
13506 |
*
|
13533 |
|
13534 |
$license_key = trim( $license_key );
|
13535 |
|
13536 |
+
$is_network_activation_or_migration = (
|
13537 |
+
fs_is_network_admin() ||
|
13538 |
+
( ! empty( $sites ) && $this->is_migration() )
|
13539 |
+
);
|
13540 |
+
|
13541 |
+
if ( ! $is_network_activation_or_migration ) {
|
13542 |
// If the license activation is executed outside the context of a network admin, ignore the sites collection.
|
13543 |
$sites = array();
|
13544 |
}
|
13567 |
$user = $fs->get_current_or_network_user();
|
13568 |
}
|
13569 |
|
13570 |
+
if ( $has_valid_blog_id ) {
|
13571 |
+
/**
|
13572 |
+
* If a specific blog ID was provided, activate the license only on the specific blog that is associated with the given blog ID.
|
13573 |
+
*
|
13574 |
+
* @author Leo Fajardo (@leorw)
|
13575 |
+
*/
|
13576 |
+
$fs->switch_to_blog( $blog_id );
|
13577 |
+
}
|
13578 |
+
|
13579 |
if ( is_object( $user ) ) {
|
13580 |
+
if ( $is_network_activation_or_migration && ! $has_valid_blog_id ) {
|
13581 |
// If no specific blog ID was provided, activate the license for all sites in the network.
|
13582 |
$blog_2_install_map = array();
|
13583 |
$site_ids = array();
|
13616 |
}
|
13617 |
}
|
13618 |
} else {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13619 |
if ( $fs->is_registered() ) {
|
13620 |
$params = array(
|
13621 |
'license_key' => $fs->apply_filters( 'license_key', $license_key )
|
13670 |
if ( empty( $error ) ) {
|
13671 |
$fs->network_upgrade_mode_completed();
|
13672 |
|
13673 |
+
$fs->_user = $user;
|
13674 |
+
|
13675 |
+
if ( fs_is_network_admin() && ! $has_valid_blog_id ) {
|
13676 |
+
$fs->_site = $fs->get_network_install();
|
13677 |
+
}
|
13678 |
+
|
13679 |
$fs->_sync_license( true, $has_valid_blog_id );
|
13680 |
|
13681 |
$this->maybe_sync_install_user();
|
13682 |
|
13683 |
$next_page = $fs->is_addon() ?
|
13684 |
$fs->get_parent_instance()->get_account_url() :
|
13685 |
+
$fs->get_after_activation_url( 'after_connect_url' );
|
13686 |
}
|
13687 |
} else {
|
13688 |
$next_page = $fs->opt_in(
|
13700 |
if ( isset( $next_page->error ) ) {
|
13701 |
$error = $next_page->error;
|
13702 |
} else {
|
13703 |
+
if ( $is_network_activation_or_migration ) {
|
13704 |
/**
|
13705 |
* Get the list of sites that were just opted-in (and license activated).
|
13706 |
* This is an optimization for the next part below saving some DB queries.
|
14814 |
* @return bool
|
14815 |
*/
|
14816 |
function is_user_in_admin() {
|
14817 |
+
return (
|
14818 |
+
is_admin() &&
|
14819 |
+
! self::is_ajax() &&
|
14820 |
+
! self::is_cron() &&
|
14821 |
+
( 'admin-post.php' !== self::get_current_page() )
|
14822 |
+
);
|
14823 |
}
|
14824 |
|
14825 |
/**
|
15131 |
if ( function_exists( 'get_sites' ) ) {
|
15132 |
// For WP 4.6 and above.
|
15133 |
return get_sites( $args );
|
15134 |
+
} else if ( function_exists( 'wp_' . 'get_sites' ) ) {
|
15135 |
// For WP 3.7 to WP 4.5.
|
15136 |
+
/**
|
15137 |
+
* This is a hack suggested previously proposed by the TRT. Our SDK is compliant with older WP versions and we'd like to keep it that way.
|
15138 |
+
*
|
15139 |
+
* @todo Remove this hack once this false-positive error is removed from the Theme Sniffer.
|
15140 |
+
*
|
15141 |
+
* @since 2.3.3
|
15142 |
+
* @author Vova Feldman (@svovaf)
|
15143 |
+
*/
|
15144 |
+
$fn = 'wp_' . 'get_sites';
|
15145 |
+
return $fn( $args );
|
15146 |
} else {
|
15147 |
// For WP 3.6 and below.
|
15148 |
return get_blog_list( 0, 'all' );
|
15319 |
* @return bool Since 2.3.1 returns if a switch was made.
|
15320 |
*/
|
15321 |
function switch_to_blog( $blog_id, FS_Site $install = null ) {
|
15322 |
+
if ( ! is_numeric( $blog_id ) || $blog_id == $this->_context_is_network_or_blog_id ) {
|
15323 |
return false;
|
15324 |
}
|
15325 |
|
16706 |
'http' => 402
|
16707 |
);
|
16708 |
|
16709 |
+
$this->maybe_modify_api_curl_error_message( $result );
|
16710 |
+
|
16711 |
return $result;
|
16712 |
}
|
16713 |
|
17554 |
* @author Vova Feldman (@svovaf)
|
17555 |
* @since 1.0.6
|
17556 |
*
|
17557 |
+
* @param Freemius $parent_fs
|
17558 |
+
* @param bool|int|null $network_level_or_blog_id True for network level opt-in and integer for opt-in for specified blog in the network.
|
17559 |
+
* @param FS_Plugin_License $bundle_license Since 2.4.0. If provided, this license will be activated for the add-on.
|
17560 |
*/
|
17561 |
+
private function _activate_addon_account(
|
17562 |
+
Freemius $parent_fs,
|
17563 |
+
$network_level_or_blog_id = null,
|
17564 |
+
FS_Plugin_License $bundle_license = null
|
17565 |
+
) {
|
17566 |
if ( $this->is_registered() ) {
|
17567 |
// Already activated.
|
17568 |
return;
|
17601 |
}
|
17602 |
}
|
17603 |
|
17604 |
+
if ( is_object( $bundle_license ) ) {
|
17605 |
+
$params['license_key'] = $bundle_license->secret_key;
|
17606 |
+
}
|
17607 |
+
|
17608 |
// Activate add-on with parent plugin credentials.
|
17609 |
$result = $parent_fs->get_api_site_scope()->call(
|
17610 |
"/addons/{$this->_plugin->id}/installs.json",
|
17613 |
);
|
17614 |
|
17615 |
if ( ! $this->is_api_result_object( $result, 'installs' ) ) {
|
17616 |
+
if ( is_object( $bundle_license ) ) {
|
17617 |
+
/**
|
17618 |
+
* When a license object is provided, it's an attempt by the SDK to activate a bundle license and not a user-initiated action, therefore, do not show any admin notice to avoid confusion (e.g.: the notice will show up just above the opt-in link). If the license activation fails, the admin will see an opt-in link instead.
|
17619 |
+
*
|
17620 |
+
* @author Leo Fajardo (@leorw)
|
17621 |
+
* @since 2.4.0
|
17622 |
+
*/
|
17623 |
+
} else {
|
17624 |
+
$error_message = FS_Api::is_api_error_object( $result ) ?
|
17625 |
+
$result->error->message :
|
17626 |
+
$this->get_text_inline( 'An unknown error has occurred.', 'unknown-error' );
|
17627 |
|
17628 |
+
$this->_admin_notices->add(
|
17629 |
+
sprintf( $this->get_text_inline( 'Couldn\'t activate %s.', 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
|
17630 |
+
$this->get_text_inline( 'Please contact us with the following message:', 'contact-us-with-error-message' ) . ' ' . '<b>' . $error_message . '</b>',
|
17631 |
+
$this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
|
17632 |
+
'error'
|
17633 |
+
);
|
17634 |
+
}
|
17635 |
|
17636 |
return;
|
17637 |
}
|
17664 |
|
17665 |
if ( ! fs_is_network_admin() ) {
|
17666 |
// Try to activate premium license.
|
17667 |
+
$this->_activate_license( true, $bundle_license );
|
|
|
|
|
17668 |
|
17669 |
+
if ( is_object( $bundle_license ) ) {
|
17670 |
+
$this->maybe_activate_bundle_license( $bundle_license );
|
|
|
|
|
|
|
|
|
17671 |
}
|
17672 |
+
} else {
|
17673 |
+
if ( is_object( $bundle_license ) ) {
|
17674 |
+
$premium_license = $bundle_license;
|
17675 |
+
} else {
|
17676 |
+
$license_id = fs_request_get( 'license_id' );
|
17677 |
|
17678 |
+
if ( is_object( $this->_site ) &&
|
17679 |
+
FS_Plugin_License::is_valid_id( $license_id ) &&
|
17680 |
+
$license_id == $this->_site->license_id
|
17681 |
+
) {
|
17682 |
+
// License is already activated.
|
17683 |
+
return;
|
17684 |
+
}
|
17685 |
+
|
17686 |
+
$premium_license = FS_Plugin_License::is_valid_id( $license_id ) ?
|
17687 |
+
$this->_get_license_by_id( $license_id ) :
|
17688 |
+
$this->_get_available_premium_license();
|
17689 |
+
}
|
17690 |
|
17691 |
if ( is_object( $premium_license ) ) {
|
17692 |
$this->maybe_network_activate_addon_license( $premium_license );
|
19984 |
*
|
19985 |
* @author Vova Feldman (@svovaf)
|
19986 |
* @since 1.2.1
|
19987 |
+
*
|
19988 |
+
* @param bool $check_expiration
|
19989 |
*/
|
19990 |
+
function has_active_valid_license( $check_expiration = true ) {
|
19991 |
+
return self::is_active_valid_license( $this->_license, $check_expiration );
|
19992 |
}
|
19993 |
|
19994 |
/**
|
20080 |
* @since 2.1.3
|
20081 |
*
|
20082 |
* @param FS_Plugin_License $license
|
20083 |
+
* @param bool $check_expiration
|
20084 |
*
|
20085 |
* @return bool
|
20086 |
*/
|
20087 |
+
private static function is_active_valid_license( $license, $check_expiration = true ) {
|
20088 |
return (
|
20089 |
is_object( $license ) &&
|
20090 |
FS_Plugin_License::is_valid_id( $license->id ) &&
|
20091 |
$license->is_active() &&
|
20092 |
+
( ! $check_expiration || $license->is_valid() )
|
20093 |
);
|
20094 |
}
|
20095 |
|
20143 |
);
|
20144 |
}
|
20145 |
|
20146 |
+
/**
|
20147 |
+
* Checks if the product is activated with a bundle license.
|
20148 |
+
*
|
20149 |
+
* @author Leo Fajardo (@leorw)
|
20150 |
+
* @since 2.4.0
|
20151 |
+
*
|
20152 |
+
* @return bool
|
20153 |
+
*/
|
20154 |
+
function is_activated_with_bundle_license() {
|
20155 |
+
if ( ! $this->has_features_enabled_license() ) {
|
20156 |
+
return false;
|
20157 |
+
}
|
20158 |
+
|
20159 |
+
return FS_Plugin_License::is_valid_id( $this->_license->parent_license_id );
|
20160 |
+
}
|
20161 |
+
|
20162 |
/**
|
20163 |
* Check if user is a trial or have feature enabled license.
|
20164 |
*
|
20751 |
}
|
20752 |
|
20753 |
if ( 'none' !== $plan_change ) {
|
20754 |
+
if (
|
20755 |
+
! is_object( $this->_license ) ||
|
20756 |
+
! $this->_license->is_whitelabeled
|
20757 |
+
) {
|
20758 |
+
$this->_admin_notices->remove_sticky( 'license_whitelabeled' );
|
20759 |
+
}
|
20760 |
+
|
20761 |
$this->do_action( 'after_license_change', $plan_change, $this->get_plan() );
|
20762 |
}
|
20763 |
}
|
21481 |
*/
|
21482 |
private function get_latest_download_link( $label, $plugin_id = false ) {
|
21483 |
return sprintf(
|
21484 |
+
'<a target="_blank" rel="noopener" href="%s">%s</a>',
|
21485 |
$this->_get_latest_download_local_url( $plugin_id ),
|
21486 |
$label
|
21487 |
);
|
21552 |
$this->get_text_inline( 'Version %s was released.', 'version-x-released' ) . ' ' . $this->get_text_inline( 'Please download %s.', 'please-download-x' ),
|
21553 |
$update->version,
|
21554 |
sprintf(
|
21555 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
21556 |
$this->get_account_url( 'download_latest' ),
|
21557 |
sprintf(
|
21558 |
/* translators: %s: plan name (e.g. latest "Professional" version) */
|
22039 |
$this->get_plugin_title(),
|
22040 |
fs_strip_url_protocol( get_site_url( $blog_id ) ),
|
22041 |
sprintf(
|
22042 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
22043 |
'https://freemius.com',
|
22044 |
'freemius.com'
|
22045 |
)
|
22138 |
|
22139 |
if ( is_object( $fs ) ) {
|
22140 |
$fs->_activate_license();
|
22141 |
+
|
22142 |
+
/**
|
22143 |
+
* Remove the product ID from `$_REQUEST` so that the syncing of the license for the other products will work properly.
|
22144 |
+
*
|
22145 |
+
* @author Leo Fajardo (@leorw)
|
22146 |
+
* @since 2.4.0
|
22147 |
+
*/
|
22148 |
+
unset( $_REQUEST['plugin_id'] );
|
22149 |
+
|
22150 |
+
if ( $this->is_bundle_license_auto_activation_enabled() ) {
|
22151 |
+
$fs->maybe_activate_bundle_license( null, array(), is_numeric( $blog_id ) ? $blog_id : 0 );
|
22152 |
+
}
|
22153 |
}
|
22154 |
|
22155 |
return;
|
22372 |
|
22373 |
$this->_handle_account_edits();
|
22374 |
|
22375 |
+
if (
|
22376 |
+
is_object( $this->_license ) &&
|
22377 |
+
$this->_license->user_id == $this->_user->id &&
|
22378 |
+
! $this->is_whitelabeled( true )
|
22379 |
+
) {
|
22380 |
+
$this->_admin_notices->add(
|
22381 |
+
sprintf(
|
22382 |
+
$this->get_text_inline( "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin.", 'license_not_whitelabeled' ),
|
22383 |
+
sprintf(
|
22384 |
+
'<a href="#" class="fs-toggle-whitelabel-mode">%s</a>',
|
22385 |
+
$this->get_text_inline( 'Click here', 'click-here' )
|
22386 |
+
)
|
22387 |
+
),
|
22388 |
+
'',
|
22389 |
+
'success',
|
22390 |
+
false,
|
22391 |
+
'license_not_whitelabeled'
|
22392 |
+
);
|
22393 |
+
}
|
22394 |
+
|
22395 |
$this->do_action( 'account_page_load_before_departure' );
|
22396 |
}
|
22397 |
|
22528 |
}
|
22529 |
}
|
22530 |
|
22531 |
+
/**
|
22532 |
+
* @author Leo Fajardo (@leorw)
|
22533 |
+
* @since 2.3.1
|
22534 |
+
*/
|
22535 |
+
function _maybe_add_pricing_ajax_handler() {
|
22536 |
+
if ( ! $this->should_use_external_pricing() ) {
|
22537 |
+
$this->add_ajax_action( 'pricing_ajax_action', array( &$this, '_fs_pricing_ajax_action_handler' ) );
|
22538 |
+
}
|
22539 |
+
}
|
22540 |
+
|
22541 |
+
/**
|
22542 |
+
* @author Leo Fajardo (@leorw)
|
22543 |
+
* @since 2.3.1
|
22544 |
+
*/
|
22545 |
+
function _fs_pricing_ajax_action_handler() {
|
22546 |
+
$this->check_ajax_referer( 'pricing_ajax_action' );
|
22547 |
+
|
22548 |
+
$result = null;
|
22549 |
+
$pricing_action = fs_request_get( 'pricing_action' );
|
22550 |
+
|
22551 |
+
switch ( $pricing_action ) {
|
22552 |
+
case 'fetch_pricing_data':
|
22553 |
+
$params = array(
|
22554 |
+
'is_enriched' => true,
|
22555 |
+
'trial' => fs_request_get_bool( 'trial' ),
|
22556 |
+
'sandbox' => fs_request_get( 'sandbox' ),
|
22557 |
+
's_ctx_type' => fs_request_get( 's_ctx_type' ),
|
22558 |
+
's_ctx_id' => fs_request_get( 's_ctx_id' ),
|
22559 |
+
's_ctx_ts' => fs_request_get( 's_ctx_ts' ),
|
22560 |
+
's_ctx_secure' => fs_request_get( 's_ctx_secure' ),
|
22561 |
+
);
|
22562 |
+
|
22563 |
+
$bundle_id = $this->get_bundle_id();
|
22564 |
+
$bundle_public_key = $this->get_bundle_public_key();
|
22565 |
+
|
22566 |
+
$has_bundle_context = ( FS_Plugin::is_valid_id( $bundle_id ) && ! empty( $bundle_public_key ) );
|
22567 |
+
|
22568 |
+
if ( ! $has_bundle_context ) {
|
22569 |
+
$api = $this->get_api_plugin_scope();
|
22570 |
+
} else {
|
22571 |
+
$api = FS_Api::instance(
|
22572 |
+
$bundle_id,
|
22573 |
+
'plugin',
|
22574 |
+
$bundle_id,
|
22575 |
+
$bundle_public_key,
|
22576 |
+
! $this->is_live(),
|
22577 |
+
false,
|
22578 |
+
$this->get_sdk_version()
|
22579 |
+
);
|
22580 |
+
|
22581 |
+
$params['plugin_id'] = $this->get_id();
|
22582 |
+
$params['plugin_public_key'] = $this->get_public_key();
|
22583 |
+
}
|
22584 |
+
|
22585 |
+
$result = $api->get( 'pricing.json?' . http_build_query( $params ) );
|
22586 |
+
break;
|
22587 |
+
case 'start_trial':
|
22588 |
+
$result = $this->opt_in(
|
22589 |
+
false,
|
22590 |
+
false,
|
22591 |
+
false,
|
22592 |
+
false,
|
22593 |
+
false,
|
22594 |
+
fs_request_get( 'plan_id' )
|
22595 |
+
);
|
22596 |
+
}
|
22597 |
+
|
22598 |
+
if ( is_object( $result ) && $this->is_api_error( $result ) ) {
|
22599 |
+
$this->_logger->api_error( $result );
|
22600 |
+
|
22601 |
+
self::shoot_ajax_failure(
|
22602 |
+
isset( $result->error ) ?
|
22603 |
+
( is_string( $result->error ) ? $result->error : $result->error->message ) :
|
22604 |
+
var_export( $result, true )
|
22605 |
+
);
|
22606 |
+
}
|
22607 |
+
|
22608 |
+
$this->shoot_ajax_success( $result );
|
22609 |
+
}
|
22610 |
+
|
22611 |
#----------------------------------------------------------------------------------
|
22612 |
#region Contact Us
|
22613 |
#----------------------------------------------------------------------------------
|
22836 |
$this->get_api_plugin_scope();
|
22837 |
}
|
22838 |
|
22839 |
+
/**
|
22840 |
+
* @author Leo Fajardo (@leorw)
|
22841 |
+
* @since 2.2.3.1
|
22842 |
+
*
|
22843 |
+
* @param object $result
|
22844 |
+
*/
|
22845 |
+
private function maybe_modify_api_curl_error_message( $result ) {
|
22846 |
+
if (
|
22847 |
+
'cUrlMissing' !== $result->error->type &&
|
22848 |
+
( 'CurlException' !== $result->error->type || CURLE_COULDNT_CONNECT != $result->error->code ) &&
|
22849 |
+
( 'HttpRequestFailed' !== $result->error->type || false === strpos( $result->error->message, 'cURL error ' . CURLE_COULDNT_CONNECT ) )
|
22850 |
+
) {
|
22851 |
+
return;
|
22852 |
+
}
|
22853 |
+
|
22854 |
+
$result->error->message = $this->esc_html_inline( 'We use PHP cURL library for the API calls, which is a very common library and usually installed and activated out of the box. Unfortunately, cURL is not activated (or disabled) on your server.', 'curl-missing-message' ) .
|
22855 |
+
' ' .
|
22856 |
+
$this->esc_html_inline(
|
22857 |
+
sprintf(
|
22858 |
+
'Please contact your hosting provider and ask them to whitelist %s for external connection.',
|
22859 |
+
implode(
|
22860 |
+
', ',
|
22861 |
+
$this->apply_filters( 'api_domains', array(
|
22862 |
+
'api.freemius.com',
|
22863 |
+
'wp.freemius.com'
|
22864 |
+
) )
|
22865 |
+
)
|
22866 |
+
),
|
22867 |
+
'connectivity-whitelist'
|
22868 |
+
) .
|
22869 |
+
' ' .
|
22870 |
+
sprintf(
|
22871 |
+
$this->esc_html_inline( 'Once you are done, deactivate the %s and activate it again.', 'connectivity-reactivate-module' ),
|
22872 |
+
$this->get_module_type()
|
22873 |
+
);
|
22874 |
+
}
|
22875 |
+
|
22876 |
/**
|
22877 |
* Show trial promotional notice (if any trial exist).
|
22878 |
*
|
23426 |
return;
|
23427 |
}
|
23428 |
|
23429 |
+
if (
|
23430 |
+
$this->is_activation_mode() &&
|
23431 |
+
$this->is_premium() &&
|
23432 |
+
! $this->is_registered()
|
23433 |
+
) {
|
23434 |
+
// If not yet registered and running the premium code base, a license activation link will already be shown.
|
23435 |
+
return;
|
23436 |
+
}
|
23437 |
|
23438 |
+
if ( $this->is_registered() && $this->is_tracking_allowed() ) {
|
23439 |
+
if ( ! $this->is_premium() && ! $this->is_enable_anonymous() ) {
|
23440 |
+
// If opted in and tracking is allowed, don't allow to opt out if not premium and anonymous mode is disabled.
|
23441 |
return;
|
23442 |
}
|
23443 |
}
|
23517 |
if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
23518 |
if ( $this->is_network_registered() ) {
|
23519 |
$page = 'account';
|
23520 |
+
} else if ( $this->is_pending_activation() || $this->is_network_anonymous() ) {
|
23521 |
$this->maybe_set_slug_and_network_menu_exists_flag();
|
23522 |
}
|
23523 |
}
|
23552 |
* @since 1.0.3
|
23553 |
*/
|
23554 |
function _redirect_on_activation_hook() {
|
23555 |
+
if ( $this->apply_filters( 'redirect_on_activation', true ) ) {
|
23556 |
+
$url = $this->get_after_plugin_activation_redirect_url();
|
23557 |
|
23558 |
+
if ( is_string( $url ) ) {
|
23559 |
+
fs_redirect( $url );
|
23560 |
+
}
|
23561 |
}
|
23562 |
}
|
23563 |
|
23597 |
|
23598 |
foreach ( $this->_action_links as $new_links ) {
|
23599 |
foreach ( $new_links as $link ) {
|
23600 |
+
$before_deactivate[ $link['key'] ] = '<a href="' . $link['href'] . '"' . ( $link['external'] ? ' target="_blank" rel="noopener"' : '' ) . '>' . $link['label'] . '</a>';
|
23601 |
}
|
23602 |
}
|
23603 |
|
23717 |
'';
|
23718 |
|
23719 |
return sprintf(
|
23720 |
+
' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank" rel="noopener">%s</a>).</li></ol>',
|
23721 |
$this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
|
23722 |
( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) .
|
23723 |
$this->get_latest_download_link( sprintf(
|
23970 |
*/
|
23971 |
function set_plugin_upgrade_complete() {
|
23972 |
$this->_storage->plugin_upgrade_mode = false;
|
23973 |
+
|
23974 |
+
$license_migration = ! empty( $this->_storage->license_migration ) ?
|
23975 |
+
$this->_storage->license_migration :
|
23976 |
+
array();
|
23977 |
+
|
23978 |
+
$license_migration['is_migrating'] = false;
|
23979 |
+
|
23980 |
+
$this->_storage->license_migration = $license_migration;
|
23981 |
}
|
23982 |
|
23983 |
#endregion
|
common/vendor/freemius/includes/class-fs-api.php
CHANGED
@@ -287,7 +287,7 @@
|
|
287 |
$this->_logger->warn( 'Fallback to cached API result: ' . var_export( $cached_result, true ) );
|
288 |
}
|
289 |
} else {
|
290 |
-
if ( is_object( $result ) && 404 == $result->error->http ) {
|
291 |
/**
|
292 |
* If the response code is 404, cache the result for half of the `$expiration`.
|
293 |
*
|
287 |
$this->_logger->warn( 'Fallback to cached API result: ' . var_export( $cached_result, true ) );
|
288 |
}
|
289 |
} else {
|
290 |
+
if ( is_object( $result ) && isset( $result->error->http ) && 404 == $result->error->http ) {
|
291 |
/**
|
292 |
* If the response code is 404, cache the result for half of the `$expiration`.
|
293 |
*
|
common/vendor/freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -542,23 +542,66 @@
|
|
542 |
}
|
543 |
}
|
544 |
|
|
|
|
|
|
|
545 |
if ( is_object( $this->_update_details ) ) {
|
|
|
|
|
|
|
|
|
546 |
if ( ! isset( $transient_data->response ) ) {
|
547 |
$transient_data->response = array();
|
548 |
}
|
549 |
|
550 |
// Add plugin to transient data.
|
551 |
-
$transient_data->response[ $
|
552 |
$this->_update_details :
|
553 |
(array) $this->_update_details;
|
554 |
-
} else
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
/**
|
556 |
-
*
|
557 |
*
|
558 |
-
* @
|
559 |
-
* @
|
560 |
*/
|
561 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
}
|
563 |
|
564 |
$slug = $this->_fs->get_slug();
|
542 |
}
|
543 |
}
|
544 |
|
545 |
+
// Alias.
|
546 |
+
$basename = $this->_fs->premium_plugin_basename();
|
547 |
+
|
548 |
if ( is_object( $this->_update_details ) ) {
|
549 |
+
if ( isset( $transient_data->no_update ) ) {
|
550 |
+
unset( $transient_data->no_update[ $basename ] );
|
551 |
+
}
|
552 |
+
|
553 |
if ( ! isset( $transient_data->response ) ) {
|
554 |
$transient_data->response = array();
|
555 |
}
|
556 |
|
557 |
// Add plugin to transient data.
|
558 |
+
$transient_data->response[ $basename ] = $this->_fs->is_plugin() ?
|
559 |
$this->_update_details :
|
560 |
(array) $this->_update_details;
|
561 |
+
} else {
|
562 |
+
if ( isset( $transient_data->response ) ) {
|
563 |
+
/**
|
564 |
+
* Ensure that there's no update data for the plugin to prevent upgrading the premium version to the latest free version.
|
565 |
+
*
|
566 |
+
* @author Leo Fajardo (@leorw)
|
567 |
+
* @since 2.3.0
|
568 |
+
*/
|
569 |
+
unset( $transient_data->response[ $basename ] );
|
570 |
+
}
|
571 |
+
|
572 |
+
if ( ! isset( $transient_data->no_update ) ) {
|
573 |
+
$transient_data->no_update = array();
|
574 |
+
}
|
575 |
+
|
576 |
/**
|
577 |
+
* Add product to no_update transient data to properly integrate with WP 5.5 auto-updates UI.
|
578 |
*
|
579 |
+
* @since 2.4.1
|
580 |
+
* @link https://make.wordpress.org/core/2020/07/30/recommended-usage-of-the-updates-api-to-support-the-auto-updates-ui-for-plugins-and-themes-in-wordpress-5-5/
|
581 |
*/
|
582 |
+
$transient_data->no_update[ $basename ] = $this->_fs->is_plugin() ?
|
583 |
+
(object) array(
|
584 |
+
'id' => $basename,
|
585 |
+
'slug' => $this->_fs->get_slug(),
|
586 |
+
'plugin' => $basename,
|
587 |
+
'new_version' => $this->_fs->get_plugin_version(),
|
588 |
+
'url' => '',
|
589 |
+
'package' => '',
|
590 |
+
'icons' => array(),
|
591 |
+
'banners' => array(),
|
592 |
+
'banners_rtl' => array(),
|
593 |
+
'tested' => '',
|
594 |
+
'requires_php' => '',
|
595 |
+
'compatibility' => new stdClass(),
|
596 |
+
) :
|
597 |
+
array(
|
598 |
+
'theme' => $basename,
|
599 |
+
'new_version' => $this->_fs->get_plugin_version(),
|
600 |
+
'url' => '',
|
601 |
+
'package' => '',
|
602 |
+
'requires' => '',
|
603 |
+
'requires_php' => '',
|
604 |
+
);
|
605 |
}
|
606 |
|
607 |
$slug = $this->_fs->get_slug();
|
common/vendor/freemius/includes/class-fs-storage.php
CHANGED
@@ -371,6 +371,7 @@
|
|
371 |
* sites in the network.
|
372 |
*/
|
373 |
'is_network_activation' => 0,
|
|
|
374 |
|
375 |
// When network activated, then network level.
|
376 |
'install_timestamp' => 1,
|
371 |
* sites in the network.
|
372 |
*/
|
373 |
'is_network_activation' => 0,
|
374 |
+
'license_migration' => 0,
|
375 |
|
376 |
// When network activated, then network level.
|
377 |
'install_timestamp' => 1,
|
common/vendor/freemius/includes/customizer/class-fs-customizer-support-section.php
CHANGED
@@ -87,10 +87,10 @@
|
|
87 |
<div class="button-group">
|
88 |
<# } #>
|
89 |
<# if ( data.contact ) { #>
|
90 |
-
<a class="button" href="{{ data.contact.url }}" target="_blank">{{ data.contact.label }} </a>
|
91 |
<# } #>
|
92 |
<# if ( data.support ) { #>
|
93 |
-
<a class="button" href="{{ data.support.url }}" target="_blank">{{ data.support.label }} </a>
|
94 |
<# } #>
|
95 |
<# if ( data.contact && data.support ) { #>
|
96 |
</div>
|
87 |
<div class="button-group">
|
88 |
<# } #>
|
89 |
<# if ( data.contact ) { #>
|
90 |
+
<a class="button" href="{{ data.contact.url }}" target="_blank" rel="noopener noreferrer">{{ data.contact.label }} </a>
|
91 |
<# } #>
|
92 |
<# if ( data.support ) { #>
|
93 |
+
<a class="button" href="{{ data.support.url }}" target="_blank" rel="noopener noreferrer">{{ data.support.label }} </a>
|
94 |
<# } #>
|
95 |
<# if ( data.contact && data.support ) { #>
|
96 |
</div>
|
common/vendor/freemius/includes/entities/class-fs-payment.php
CHANGED
@@ -158,8 +158,8 @@
|
|
158 |
// Lazy load.
|
159 |
self::$CURRENCY_2_SYMBOL = array(
|
160 |
self::CURRENCY_USD => '$',
|
161 |
-
self::CURRENCY_GBP => '
|
162 |
-
self::CURRENCY_EUR => '
|
163 |
);
|
164 |
}
|
165 |
|
158 |
// Lazy load.
|
159 |
self::$CURRENCY_2_SYMBOL = array(
|
160 |
self::CURRENCY_USD => '$',
|
161 |
+
self::CURRENCY_GBP => '£',
|
162 |
+
self::CURRENCY_EUR => '€',
|
163 |
);
|
164 |
}
|
165 |
|
common/vendor/freemius/includes/entities/class-fs-plugin-license.php
CHANGED
@@ -50,6 +50,13 @@
|
|
50 |
* @var number
|
51 |
*/
|
52 |
public $parent_license_id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**
|
54 |
* @var number
|
55 |
*/
|
50 |
* @var number
|
51 |
*/
|
52 |
public $parent_license_id;
|
53 |
+
/**
|
54 |
+
* @author Leo Fajardo (@leorw)
|
55 |
+
* @since 2.4.0
|
56 |
+
*
|
57 |
+
* @var array
|
58 |
+
*/
|
59 |
+
public $products;
|
60 |
/**
|
61 |
* @var number
|
62 |
*/
|
common/vendor/freemius/includes/entities/class-fs-site.php
CHANGED
@@ -171,6 +171,7 @@
|
|
171 |
// WPEngine staging.
|
172 |
fs_ends_with( $subdomain, '.staging.wpengine.com' ) ||
|
173 |
fs_ends_with( $subdomain, '.dev.wpengine.com' ) ||
|
|
|
174 |
// Pantheon
|
175 |
( fs_ends_with( $subdomain, 'pantheonsite.io' ) &&
|
176 |
( fs_starts_with( $subdomain, 'test-' ) || fs_starts_with( $subdomain, 'dev-' ) ) ) ||
|
@@ -179,7 +180,9 @@
|
|
179 |
// Kinsta
|
180 |
( fs_starts_with( $subdomain, 'staging-' ) && ( fs_ends_with( $subdomain, '.kinsta.com' ) || fs_ends_with( $subdomain, '.kinsta.cloud' ) ) ) ||
|
181 |
// DesktopServer
|
182 |
-
fs_ends_with( $subdomain, '.dev.cc' )
|
|
|
|
|
183 |
);
|
184 |
}
|
185 |
|
171 |
// WPEngine staging.
|
172 |
fs_ends_with( $subdomain, '.staging.wpengine.com' ) ||
|
173 |
fs_ends_with( $subdomain, '.dev.wpengine.com' ) ||
|
174 |
+
fs_ends_with( $subdomain, '.wpengine.com' ) ||
|
175 |
// Pantheon
|
176 |
( fs_ends_with( $subdomain, 'pantheonsite.io' ) &&
|
177 |
( fs_starts_with( $subdomain, 'test-' ) || fs_starts_with( $subdomain, 'dev-' ) ) ) ||
|
180 |
// Kinsta
|
181 |
( fs_starts_with( $subdomain, 'staging-' ) && ( fs_ends_with( $subdomain, '.kinsta.com' ) || fs_ends_with( $subdomain, '.kinsta.cloud' ) ) ) ||
|
182 |
// DesktopServer
|
183 |
+
fs_ends_with( $subdomain, '.dev.cc' ) ||
|
184 |
+
// Pressable
|
185 |
+
fs_ends_with( $subdomain, '.mystagingwebsite.com' )
|
186 |
);
|
187 |
}
|
188 |
|
common/vendor/freemius/includes/fs-essential-functions.php
CHANGED
@@ -380,45 +380,62 @@
|
|
380 |
global $fs_active_plugins;
|
381 |
|
382 |
/**
|
383 |
-
* @todo Multi-site network activated plugin are always loaded prior to site plugins so if there's a
|
384 |
*
|
385 |
* @link https://github.com/Freemius/wordpress-sdk/issues/26
|
386 |
*/
|
387 |
|
388 |
$newest_sdk_plugin_path = $fs_active_plugins->newest->plugin_path;
|
389 |
|
390 |
-
$active_plugins
|
391 |
-
$
|
392 |
-
if ( 0 === $newest_sdk_plugin_key ) {
|
393 |
-
// if it's 0 it's the first plugin already, no need to continue
|
394 |
-
return false;
|
395 |
-
} else if ( is_numeric( $newest_sdk_plugin_key ) ) {
|
396 |
-
// Remove plugin from its current position.
|
397 |
-
array_splice( $active_plugins, $newest_sdk_plugin_key, 1 );
|
398 |
|
399 |
-
|
400 |
-
|
401 |
|
402 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
|
404 |
return true;
|
405 |
-
}
|
|
|
|
|
406 |
// Plugin is network active.
|
407 |
$network_active_plugins = get_site_option( 'active_sitewide_plugins', array() );
|
408 |
|
409 |
-
if (isset($network_active_plugins[$newest_sdk_plugin_path])) {
|
410 |
-
reset($network_active_plugins);
|
411 |
-
if ( $newest_sdk_plugin_path === key($network_active_plugins) ) {
|
412 |
// Plugin is already activated first on the network level.
|
413 |
return false;
|
414 |
-
} else
|
415 |
-
$time = $network_active_plugins[$newest_sdk_plugin_path];
|
416 |
|
417 |
// Remove plugin from its current position.
|
418 |
-
unset($network_active_plugins[$newest_sdk_plugin_path]);
|
419 |
|
420 |
// Set it to be included first.
|
421 |
-
$network_active_plugins = array($newest_sdk_plugin_path => $time) + $network_active_plugins;
|
422 |
|
423 |
update_site_option( 'active_sitewide_plugins', $network_active_plugins );
|
424 |
|
380 |
global $fs_active_plugins;
|
381 |
|
382 |
/**
|
383 |
+
* @todo Multi-site network activated plugin are always loaded prior to site plugins so if there's a plugin activated in the network mode that has an older version of the SDK of another plugin which is site activated that has new SDK version, the fs-essential-functions.php will be loaded from the older SDK. Same thing about MU plugins (loaded even before network activated plugins).
|
384 |
*
|
385 |
* @link https://github.com/Freemius/wordpress-sdk/issues/26
|
386 |
*/
|
387 |
|
388 |
$newest_sdk_plugin_path = $fs_active_plugins->newest->plugin_path;
|
389 |
|
390 |
+
$active_plugins = get_option( 'active_plugins', array() );
|
391 |
+
$updated_active_plugins = array( $newest_sdk_plugin_path );
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
|
393 |
+
$plugin_found = false;
|
394 |
+
$is_first_path = true;
|
395 |
|
396 |
+
foreach ( $active_plugins as $key => $plugin_path ) {
|
397 |
+
if ( $plugin_path === $newest_sdk_plugin_path ) {
|
398 |
+
if ( $is_first_path ) {
|
399 |
+
// if it's the first plugin already, no need to continue
|
400 |
+
return false;
|
401 |
+
}
|
402 |
+
|
403 |
+
$plugin_found = true;
|
404 |
+
|
405 |
+
// Skip the plugin (it is already added as the 1st item of $updated_active_plugins).
|
406 |
+
continue;
|
407 |
+
}
|
408 |
+
|
409 |
+
$updated_active_plugins[] = $plugin_path;
|
410 |
+
|
411 |
+
if ( $is_first_path ) {
|
412 |
+
$is_first_path = false;
|
413 |
+
}
|
414 |
+
}
|
415 |
+
|
416 |
+
if ( $plugin_found ) {
|
417 |
+
update_option( 'active_plugins', $updated_active_plugins );
|
418 |
|
419 |
return true;
|
420 |
+
}
|
421 |
+
|
422 |
+
if ( is_multisite() ) {
|
423 |
// Plugin is network active.
|
424 |
$network_active_plugins = get_site_option( 'active_sitewide_plugins', array() );
|
425 |
|
426 |
+
if ( isset( $network_active_plugins[ $newest_sdk_plugin_path ] ) ) {
|
427 |
+
reset( $network_active_plugins );
|
428 |
+
if ( $newest_sdk_plugin_path === key( $network_active_plugins ) ) {
|
429 |
// Plugin is already activated first on the network level.
|
430 |
return false;
|
431 |
+
} else {
|
432 |
+
$time = $network_active_plugins[ $newest_sdk_plugin_path ];
|
433 |
|
434 |
// Remove plugin from its current position.
|
435 |
+
unset( $network_active_plugins[ $newest_sdk_plugin_path ] );
|
436 |
|
437 |
// Set it to be included first.
|
438 |
+
$network_active_plugins = array( $newest_sdk_plugin_path => $time ) + $network_active_plugins;
|
439 |
|
440 |
update_site_option( 'active_sitewide_plugins', $network_active_plugins );
|
441 |
|
common/vendor/freemius/includes/fs-plugin-info-dialog.php
CHANGED
@@ -260,14 +260,20 @@
|
|
260 |
if ( $has_valid_blog_id ) {
|
261 |
restore_current_blog();
|
262 |
}
|
|
|
263 |
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
272 |
}
|
273 |
|
@@ -577,7 +583,7 @@
|
|
577 |
|
578 |
$has_installed_version = ( 'install' !== $this->status['status'] );
|
579 |
|
580 |
-
if ( ! $api->has_paid_plan ) {
|
581 |
/**
|
582 |
* Free-only add-on.
|
583 |
*
|
@@ -880,9 +886,11 @@
|
|
880 |
$classes[] = 'disabled';
|
881 |
}
|
882 |
|
|
|
|
|
883 |
return sprintf(
|
884 |
'<a %s class="button %s">%s</a>',
|
885 |
-
empty( $href ) ? '' : 'href="' . $href . '" target="' . $target . '"',
|
886 |
implode( ' ', $classes ),
|
887 |
$label
|
888 |
);
|
@@ -1201,7 +1209,7 @@
|
|
1201 |
|
1202 |
$(document).ready(function () {
|
1203 |
var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
|
1204 |
-
$plan.find('input[type=radio]').
|
1205 |
_updateCtaUrl(
|
1206 |
$plan.attr('data-plan-id'),
|
1207 |
$(this).val(),
|
@@ -1367,6 +1375,7 @@
|
|
1367 |
if ( ! empty( $api->slug ) && true == $api->is_wp_org_compliant ) {
|
1368 |
?>
|
1369 |
<li><a target="_blank"
|
|
|
1370 |
href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_esc_html_echo_inline( 'WordPress.org Plugin Page', 'wp-org-plugin-page', $api->slug ) ?>
|
1371 |
»</a>
|
1372 |
</li>
|
@@ -1375,6 +1384,7 @@
|
|
1375 |
if ( ! empty( $api->homepage ) ) {
|
1376 |
?>
|
1377 |
<li><a target="_blank"
|
|
|
1378 |
href="<?php echo esc_url( $api->homepage ); ?>"><?php fs_esc_html_echo_inline( 'Plugin Homepage', 'plugin-homepage', $api->slug ) ?>
|
1379 |
»</a>
|
1380 |
</li>
|
@@ -1383,6 +1393,7 @@
|
|
1383 |
if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
|
1384 |
?>
|
1385 |
<li><a target="_blank"
|
|
|
1386 |
href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_esc_html_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?>
|
1387 |
»</a>
|
1388 |
</li>
|
@@ -1426,18 +1437,19 @@
|
|
1426 |
);
|
1427 |
?>
|
1428 |
<div class="counter-container">
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
|
|
1437 |
<span class="counter-back">
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
</div>
|
1442 |
<?php
|
1443 |
}
|
@@ -1458,13 +1470,14 @@
|
|
1458 |
if ( empty( $contrib_profile ) ) {
|
1459 |
echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</li>";
|
1460 |
} else {
|
1461 |
-
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>";
|
1462 |
}
|
1463 |
}
|
1464 |
?>
|
1465 |
</ul>
|
1466 |
<?php if ( ! empty( $api->donate_link ) ) { ?>
|
1467 |
<a target="_blank"
|
|
|
1468 |
href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?>
|
1469 |
»</a>
|
1470 |
<?php } ?>
|
@@ -1628,4 +1641,4 @@
|
|
1628 |
iframe_footer();
|
1629 |
exit;
|
1630 |
}
|
1631 |
-
}
|
260 |
if ( $has_valid_blog_id ) {
|
261 |
restore_current_blog();
|
262 |
}
|
263 |
+
}
|
264 |
|
265 |
+
/**
|
266 |
+
* Check if there's a purchased license in case the add-on can only be installed/downloaded as part of a purchased bundle.
|
267 |
+
*
|
268 |
+
* @author Leo Fajardo (@leorw)
|
269 |
+
* @since 2.4.1
|
270 |
+
*/
|
271 |
+
if ( is_object( $fs_addon ) ) {
|
272 |
+
$data->has_purchased_license = $fs_addon->has_active_valid_license();
|
273 |
+
} else {
|
274 |
+
$account_addons = $this->_fs->get_account_addons();
|
275 |
+
if ( ! empty( $account_addons ) && in_array( $selected_addon->id, $account_addons ) ) {
|
276 |
+
$data->has_purchased_license = true;
|
277 |
}
|
278 |
}
|
279 |
|
583 |
|
584 |
$has_installed_version = ( 'install' !== $this->status['status'] );
|
585 |
|
586 |
+
if ( ! $api->has_paid_plan && ! $api->has_purchased_license ) {
|
587 |
/**
|
588 |
* Free-only add-on.
|
589 |
*
|
886 |
$classes[] = 'disabled';
|
887 |
}
|
888 |
|
889 |
+
$rel = ( '_blank' === $target ) ? ' rel="noopener noreferrer"' : '';
|
890 |
+
|
891 |
return sprintf(
|
892 |
'<a %s class="button %s">%s</a>',
|
893 |
+
empty( $href ) ? '' : 'href="' . $href . '" target="' . $target . '"' . $rel,
|
894 |
implode( ' ', $classes ),
|
895 |
$label
|
896 |
);
|
1209 |
|
1210 |
$(document).ready(function () {
|
1211 |
var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php echo $plan->id ?>]');
|
1212 |
+
$plan.find('input[type=radio]').on('click', function () {
|
1213 |
_updateCtaUrl(
|
1214 |
$plan.attr('data-plan-id'),
|
1215 |
$(this).val(),
|
1375 |
if ( ! empty( $api->slug ) && true == $api->is_wp_org_compliant ) {
|
1376 |
?>
|
1377 |
<li><a target="_blank"
|
1378 |
+
rel="noopener noreferrer"
|
1379 |
href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/"><?php fs_esc_html_echo_inline( 'WordPress.org Plugin Page', 'wp-org-plugin-page', $api->slug ) ?>
|
1380 |
»</a>
|
1381 |
</li>
|
1384 |
if ( ! empty( $api->homepage ) ) {
|
1385 |
?>
|
1386 |
<li><a target="_blank"
|
1387 |
+
rel="noopener noreferrer"
|
1388 |
href="<?php echo esc_url( $api->homepage ); ?>"><?php fs_esc_html_echo_inline( 'Plugin Homepage', 'plugin-homepage', $api->slug ) ?>
|
1389 |
»</a>
|
1390 |
</li>
|
1393 |
if ( ! empty( $api->donate_link ) && empty( $api->contributors ) ) {
|
1394 |
?>
|
1395 |
<li><a target="_blank"
|
1396 |
+
rel="noopener noreferrer"
|
1397 |
href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_esc_html_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?>
|
1398 |
»</a>
|
1399 |
</li>
|
1437 |
);
|
1438 |
?>
|
1439 |
<div class="counter-container">
|
1440 |
+
<span class="counter-label"><a
|
1441 |
+
href="https://wordpress.org/support/view/plugin-reviews/<?php echo $api->slug; ?>?filter=<?php echo $key; ?>"
|
1442 |
+
target="_blank"
|
1443 |
+
rel="noopener noreferrer"
|
1444 |
+
title="<?php echo esc_attr( sprintf(
|
1445 |
+
/* translators: %s: # of stars (e.g. 5 stars) */
|
1446 |
+
fs_text_inline( 'Click to see reviews that provided a rating of %s', 'click-to-reviews', $api->slug ),
|
1447 |
+
$stars_label
|
1448 |
+
) ) ?>"><?php echo $stars_label ?></a></span>
|
1449 |
<span class="counter-back">
|
1450 |
+
<span class="counter-bar" style="width: <?php echo absint(92 * $_rating); ?>px;"></span>
|
1451 |
+
</span>
|
1452 |
+
<span class="counter-count"><?php echo number_format_i18n( $ratecount ); ?></span>
|
1453 |
</div>
|
1454 |
<?php
|
1455 |
}
|
1470 |
if ( empty( $contrib_profile ) ) {
|
1471 |
echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</li>";
|
1472 |
} else {
|
1473 |
+
echo "<li><a href='{$contrib_profile}' target='_blank' rel='noopener noreferrer'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&s=36' width='18' height='18' />{$contrib_username}</a></li>";
|
1474 |
}
|
1475 |
}
|
1476 |
?>
|
1477 |
</ul>
|
1478 |
<?php if ( ! empty( $api->donate_link ) ) { ?>
|
1479 |
<a target="_blank"
|
1480 |
+
rel="noopener noreferrer"
|
1481 |
href="<?php echo esc_url( $api->donate_link ); ?>"><?php fs_echo_inline( 'Donate to this plugin', 'donate-to-plugin', $api->slug ) ?>
|
1482 |
»</a>
|
1483 |
<?php } ?>
|
1641 |
iframe_footer();
|
1642 |
exit;
|
1643 |
}
|
1644 |
+
}
|
common/vendor/freemius/includes/i18n.php
CHANGED
@@ -98,6 +98,8 @@
|
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'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.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
|
|
|
|
101 |
|
102 |
#region Affiliation
|
103 |
'affiliation' => _fs_text( 'Affiliation' ),
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'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.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
101 |
+
'license_not_whitelabeled' => _fs_text( "Is this your client's site? %s if you wish to hide sensitive info like your billing address and invoices from the WP Admin."),
|
102 |
+
'license_whitelabeled' => _fs_text( 'Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your billing address and invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s.'),
|
103 |
|
104 |
#region Affiliation
|
105 |
'affiliation' => _fs_text( 'Affiliation' ),
|
common/vendor/freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
@@ -703,7 +703,12 @@
|
|
703 |
$menu['parent_slug'] :
|
704 |
'admin.php';
|
705 |
|
706 |
-
|
|
|
|
|
|
|
|
|
|
|
707 |
}
|
708 |
|
709 |
/**
|
703 |
$menu['parent_slug'] :
|
704 |
'admin.php';
|
705 |
|
706 |
+
return admin_url(
|
707 |
+
$parent_slug .
|
708 |
+
( false === strpos( $parent_slug, '?' ) ? '?' : '&' ) .
|
709 |
+
'page=' .
|
710 |
+
$menu['menu'][2]
|
711 |
+
);
|
712 |
}
|
713 |
|
714 |
/**
|
common/vendor/freemius/includes/sdk/FreemiusBase.php
CHANGED
@@ -137,7 +137,7 @@
|
|
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',
|
137 |
} catch ( Exception $e ) {
|
138 |
// Map to error object.
|
139 |
$result = (object) array(
|
140 |
+
'error' => (object) array(
|
141 |
'type' => 'Unknown',
|
142 |
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
143 |
'code' => 'unknown',
|
common/vendor/freemius/includes/sdk/FreemiusWordPress.php
CHANGED
@@ -59,6 +59,10 @@
|
|
59 |
}
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
62 |
$curl_version = FS_SDK__HAS_CURL ?
|
63 |
curl_version() :
|
64 |
array( 'version' => '7.37' );
|
@@ -228,10 +232,13 @@
|
|
228 |
$now = ( time() - self::$_clock_diff );
|
229 |
$date = date( 'r', $now );
|
230 |
|
231 |
-
if ( in_array( $pMethod, array( 'POST', 'PUT' ) )
|
232 |
-
|
233 |
-
|
234 |
-
|
|
|
|
|
|
|
235 |
|
236 |
$string_to_sign = implode( $eol, array(
|
237 |
$pMethod,
|
@@ -380,10 +387,11 @@
|
|
380 |
}
|
381 |
|
382 |
if ( in_array( $pMethod, array( 'POST', 'PUT' ) ) ) {
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
|
|
387 |
}
|
388 |
|
389 |
$request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
|
@@ -397,7 +405,7 @@
|
|
397 |
}
|
398 |
|
399 |
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
400 |
-
$pWPRemoteArgs['sslverify'] =
|
401 |
}
|
402 |
|
403 |
if ( false !== $pBeforeExecutionFunction &&
|
@@ -570,7 +578,7 @@
|
|
570 |
} catch ( Exception $e ) {
|
571 |
// Map to error object.
|
572 |
$result = (object) array(
|
573 |
-
'error' => array(
|
574 |
'type' => 'Unknown',
|
575 |
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
576 |
'code' => 'unknown',
|
@@ -649,7 +657,7 @@
|
|
649 |
$message = ( 1 < count( $parts ) ) ? $parts[1] : $message;
|
650 |
|
651 |
$e = new Freemius_Exception( array(
|
652 |
-
'error' => array(
|
653 |
'code' => $code,
|
654 |
'message' => $message,
|
655 |
'type' => 'CurlException',
|
@@ -657,7 +665,7 @@
|
|
657 |
) );
|
658 |
} else {
|
659 |
$e = new Freemius_Exception( array(
|
660 |
-
'error' => array(
|
661 |
'code' => $pError->get_error_code(),
|
662 |
'message' => $pError->get_error_message(),
|
663 |
'type' => 'WPRemoteException',
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
if ( ! defined( 'FS_SDK__SSLVERIFY' ) ) {
|
63 |
+
define( 'FS_SDK__SSLVERIFY', false );
|
64 |
+
}
|
65 |
+
|
66 |
$curl_version = FS_SDK__HAS_CURL ?
|
67 |
curl_version() :
|
68 |
array( 'version' => '7.37' );
|
232 |
$now = ( time() - self::$_clock_diff );
|
233 |
$date = date( 'r', $now );
|
234 |
|
235 |
+
if ( in_array( $pMethod, array( 'POST', 'PUT' ) ) ) {
|
236 |
+
$content_type = 'application/json';
|
237 |
+
|
238 |
+
if ( ! empty( $pPostParams ) ) {
|
239 |
+
$content_md5 = md5( $pPostParams );
|
240 |
+
}
|
241 |
+
}
|
242 |
|
243 |
$string_to_sign = implode( $eol, array(
|
244 |
$pMethod,
|
387 |
}
|
388 |
|
389 |
if ( in_array( $pMethod, array( 'POST', 'PUT' ) ) ) {
|
390 |
+
$pWPRemoteArgs['headers']['Content-type'] = 'application/json';
|
391 |
+
|
392 |
+
if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
|
393 |
+
$pWPRemoteArgs['body'] = json_encode( $pParams );
|
394 |
+
}
|
395 |
}
|
396 |
|
397 |
$request_url = self::GetUrl( $pCanonizedPath, $pIsSandbox );
|
405 |
}
|
406 |
|
407 |
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
408 |
+
$pWPRemoteArgs['sslverify'] = FS_SDK__SSLVERIFY;
|
409 |
}
|
410 |
|
411 |
if ( false !== $pBeforeExecutionFunction &&
|
578 |
} catch ( Exception $e ) {
|
579 |
// Map to error object.
|
580 |
$result = (object) array(
|
581 |
+
'error' => (object) array(
|
582 |
'type' => 'Unknown',
|
583 |
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
584 |
'code' => 'unknown',
|
657 |
$message = ( 1 < count( $parts ) ) ? $parts[1] : $message;
|
658 |
|
659 |
$e = new Freemius_Exception( array(
|
660 |
+
'error' => (object) array(
|
661 |
'code' => $code,
|
662 |
'message' => $message,
|
663 |
'type' => 'CurlException',
|
665 |
) );
|
666 |
} else {
|
667 |
$e = new Freemius_Exception( array(
|
668 |
+
'error' => (object) array(
|
669 |
'code' => $pError->get_error_code(),
|
670 |
'message' => $pError->get_error_message(),
|
671 |
'type' => 'WPRemoteException',
|
common/vendor/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
CHANGED
@@ -32,7 +32,7 @@
|
|
32 |
|
33 |
// Get active plugin's main files real full names (might be symlinks).
|
34 |
foreach ( $all_plugins as $relative_path => $data ) {
|
35 |
-
|
36 |
if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
|
37 |
return $relative_path;
|
38 |
}
|
32 |
|
33 |
// Get active plugin's main files real full names (might be symlinks).
|
34 |
foreach ( $all_plugins as $relative_path => $data ) {
|
35 |
+
if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) . '/' ) ) ) {
|
36 |
if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
|
37 |
return $relative_path;
|
38 |
}
|
common/vendor/freemius/languages/freemius-cs_CZ.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-da_DK.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-en.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-es_ES.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-fr_FR.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-he_IL.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-hu_HU.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-it_IT.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-ja.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-nl_NL.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-ru_RU.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius-ta.mo
CHANGED
Binary file
|
common/vendor/freemius/languages/freemius.pot
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
@@ -16,771 +16,795 @@ msgstr ""
|
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
-
#: includes/class-freemius.php:
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: includes/class-freemius.php:
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: includes/class-freemius.php:
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/class-freemius.php:
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: includes/class-freemius.php:
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: includes/class-freemius.php:
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/class-freemius.php:
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/class-freemius.php:
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/class-freemius.php:
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: includes/class-freemius.php:
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/class-freemius.php:
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: includes/class-freemius.php:
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: includes/class-freemius.php:
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: includes/class-freemius.php:
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/class-freemius.php:
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/class-freemius.php:
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: includes/class-freemius.php:
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/class-freemius.php:
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/class-freemius.php:
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/class-freemius.php:
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/class-freemius.php:
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/class-freemius.php:
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/class-freemius.php:
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/class-freemius.php:
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: includes/class-freemius.php:
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/class-freemius.php:
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: includes/class-freemius.php:
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: includes/class-freemius.php:
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: includes/class-freemius.php:
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/class-freemius.php:
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/class-freemius.php:
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/class-freemius.php:
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/class-freemius.php:
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: includes/class-freemius.php:
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: includes/class-freemius.php:
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: includes/class-freemius.php:
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class-freemius.php:
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/class-freemius.php:
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/class-freemius.php:
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/class-freemius.php:
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: includes/class-freemius.php:
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: includes/class-freemius.php:
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: includes/class-freemius.php:
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class-freemius.php:
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/class-freemius.php:
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/class-freemius.php:
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/class-freemius.php:
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/class-freemius.php:
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/class-freemius.php:
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/class-freemius.php:
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/class-freemius.php:
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: includes/class-freemius.php:
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: includes/class-freemius.php:
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/class-freemius.php:
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: includes/class-freemius.php:
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: includes/class-freemius.php:
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: includes/class-freemius.php:
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/class-freemius.php:
|
258 |
msgid "Invalid new user ID or email address."
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/class-freemius.php:
|
262 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: includes/class-freemius.php:
|
266 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/class-freemius.php:
|
270 |
msgid "Change Ownership"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: includes/class-freemius.php:
|
274 |
msgid "Invalid site details collection."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/class-freemius.php:
|
278 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/class-freemius.php:
|
282 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/class-freemius.php:
|
286 |
msgid "Account is pending activation."
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/class-freemius.php:
|
290 |
msgid "Buy a license now"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/class-freemius.php:
|
294 |
msgid "Renew your license now"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/class-freemius.php:
|
298 |
msgid "%s to access version %s security & feature updates, and support."
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/class-freemius.php:
|
302 |
msgid "%s activation was successfully completed."
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/class-freemius.php:
|
306 |
msgid "Your account was successfully activated with the %s plan."
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/class-freemius.php:
|
310 |
msgid "Your trial has been successfully started."
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: includes/class-freemius.php:
|
314 |
msgid "Couldn't activate %s."
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/class-freemius.php:
|
318 |
msgid "Please contact us with the following message:"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: includes/class-freemius.php:
|
322 |
msgid "An unknown error has occurred."
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: includes/class-freemius.php:
|
326 |
msgid "Upgrade"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/class-freemius.php:
|
330 |
msgid "Start Trial"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/class-freemius.php:
|
334 |
msgid "Pricing"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/class-freemius.php:
|
338 |
msgid "Affiliation"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/class-freemius.php:
|
342 |
msgid "Account"
|
343 |
msgstr ""
|
344 |
|
345 |
-
#: includes/class-freemius.php:
|
346 |
msgid "Contact Us"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: includes/class-freemius.php:
|
350 |
msgid "Add-Ons"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: includes/class-freemius.php:
|
354 |
msgctxt "ASCII arrow left icon"
|
355 |
msgid "←"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/class-freemius.php:
|
359 |
msgctxt "ASCII arrow right icon"
|
360 |
msgid "➤"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: includes/class-freemius.php:
|
364 |
msgctxt "noun"
|
365 |
msgid "Pricing"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: includes/class-freemius.php:
|
369 |
msgid "Support Forum"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: includes/class-freemius.php:
|
373 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: includes/class-freemius.php:
|
377 |
msgctxt "a positive response"
|
378 |
msgid "Right on"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: includes/class-freemius.php:
|
382 |
msgid "seems like the key you entered doesn't match our records."
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: includes/class-freemius.php:
|
386 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/class-freemius.php:
|
390 |
msgid "Your %s Add-on plan was successfully upgraded."
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: includes/class-freemius.php:
|
394 |
msgid "%s Add-on was successfully purchased."
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/class-freemius.php:
|
398 |
msgid "Download the latest version"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/class-freemius.php:
|
402 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: includes/class-freemius.php:
|
406 |
msgid "Error received from the server:"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: includes/class-freemius.php:
|
410 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: includes/class-freemius.php:
|
414 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
415 |
msgid "Hmm"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: includes/class-freemius.php:
|
419 |
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."
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: includes/class-freemius.php:
|
423 |
msgctxt "trial period"
|
424 |
msgid "Trial"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: includes/class-freemius.php:
|
428 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: includes/class-freemius.php:
|
432 |
msgid "Please contact us here"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: includes/class-freemius.php:
|
436 |
msgid "Your plan was successfully activated."
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: includes/class-freemius.php:
|
440 |
msgid "Your plan was successfully upgraded."
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/class-freemius.php:
|
444 |
msgid "Your plan was successfully changed to %s."
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/class-freemius.php:
|
448 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/class-freemius.php:
|
452 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: includes/class-freemius.php:
|
456 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: includes/class-freemius.php:
|
460 |
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."
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/class-freemius.php:
|
464 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/class-freemius.php:
|
468 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/class-freemius.php:
|
472 |
msgid "It looks like the license could not be activated."
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/class-freemius.php:
|
476 |
msgid "Your license was successfully activated."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/class-freemius.php:
|
480 |
msgid "It looks like your site currently doesn't have an active license."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/class-freemius.php:
|
484 |
msgid "It looks like the license deactivation failed."
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: includes/class-freemius.php:
|
488 |
msgid "Your %s license was successfully deactivated."
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: includes/class-freemius.php:
|
492 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: includes/class-freemius.php:
|
496 |
msgid "O.K"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/class-freemius.php:
|
500 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class-freemius.php:
|
504 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/class-freemius.php:
|
508 |
msgid "You are already running the %s in a trial mode."
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/class-freemius.php:
|
512 |
msgid "You already utilized a trial before."
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/class-freemius.php:
|
516 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/class-freemius.php:
|
520 |
msgid "Plan %s does not support a trial period."
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: includes/class-freemius.php:
|
524 |
msgid "None of the %s's plans supports a trial period."
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: includes/class-freemius.php:
|
528 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: includes/class-freemius.php:
|
532 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: includes/class-freemius.php:
|
536 |
msgid "Your %s free trial was successfully cancelled."
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: includes/class-freemius.php:
|
540 |
msgid "Version %s was released."
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: includes/class-freemius.php:
|
544 |
msgid "Please download %s."
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/class-freemius.php:
|
548 |
msgid "the latest %s version here"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: includes/class-freemius.php:
|
552 |
msgid "New"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: includes/class-freemius.php:
|
556 |
msgid "Seems like you got the latest release."
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/class-freemius.php:
|
560 |
msgid "You are all good!"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: includes/class-freemius.php:
|
564 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: includes/class-freemius.php:
|
568 |
msgid "Site successfully opted in."
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: includes/class-freemius.php:
|
572 |
msgid "Awesome"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/class-freemius.php:
|
576 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
577 |
msgstr ""
|
578 |
|
579 |
-
#: includes/class-freemius.php:
|
580 |
msgid "Thank you!"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: includes/class-freemius.php:
|
584 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: includes/class-freemius.php:
|
588 |
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."
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: includes/class-freemius.php:
|
592 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
593 |
msgstr ""
|
594 |
|
595 |
-
#: includes/class-freemius.php:
|
596 |
msgid "%s is the new owner of the account."
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: includes/class-freemius.php:
|
600 |
msgctxt "as congratulations"
|
601 |
msgid "Congrats"
|
602 |
msgstr ""
|
603 |
|
604 |
-
#: includes/class-freemius.php:
|
605 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
606 |
msgstr ""
|
607 |
|
608 |
-
#: includes/class-freemius.php:
|
609 |
msgid "Please provide your full name."
|
610 |
msgstr ""
|
611 |
|
612 |
-
#: includes/class-freemius.php:
|
613 |
msgid "Your name was successfully updated."
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: includes/class-freemius.php:
|
617 |
msgid "You have successfully updated your %s."
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: includes/class-freemius.php:
|
625 |
msgctxt "advance notice of something that will need attention."
|
626 |
msgid "Heads up"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: includes/class-freemius.php:
|
630 |
msgctxt "exclamation"
|
631 |
msgid "Hey"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: includes/class-freemius.php:
|
635 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: includes/class-freemius.php:
|
639 |
msgid "No commitment for %s days - cancel anytime!"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: includes/class-freemius.php:
|
643 |
msgid "No credit card required"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: includes/class-freemius.php:
|
647 |
msgctxt "call to action"
|
648 |
msgid "Start free trial"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: includes/class-freemius.php:
|
652 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/class-freemius.php:
|
656 |
msgid "Learn more"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/class-freemius.php:
|
660 |
msgid "Activate License"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: includes/class-freemius.php:
|
664 |
msgid "Change License"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: includes/class-freemius.php:
|
668 |
msgid "Opt Out"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: includes/class-freemius.php:
|
672 |
msgid "Opt In"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: includes/class-freemius.php:
|
676 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/class-freemius.php:
|
680 |
msgid "Activate %s features"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/class-freemius.php:
|
684 |
msgid "Please follow these steps to complete the upgrade"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: includes/class-freemius.php:
|
688 |
msgid "Download the latest %s version"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: includes/class-freemius.php:
|
692 |
msgid "Upload and activate the downloaded version"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/class-freemius.php:
|
696 |
msgid "How to upload and activate?"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/class-freemius.php:
|
700 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/class-freemius.php:
|
704 |
msgid "Auto installation only works for opted-in users."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/class-freemius.php:
|
708 |
msgid "Invalid module ID."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-freemius.php:
|
712 |
msgid "Premium version already active."
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-freemius.php:
|
716 |
msgid "You do not have a valid license to access the premium version."
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-freemius.php:
|
720 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/class-freemius.php:
|
724 |
msgid "Premium add-on version already installed."
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/class-freemius.php:
|
728 |
msgid "View paid features"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/class-freemius.php:
|
732 |
msgid "Thank you so much for using %s and its add-ons!"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: includes/class-freemius.php:
|
736 |
msgid "Thank you so much for using %s!"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/class-freemius.php:
|
740 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: includes/class-freemius.php:
|
744 |
msgid "Thank you so much for using our products!"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/class-freemius.php:
|
748 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/class-freemius.php:
|
752 |
msgid "%s and its add-ons"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/class-freemius.php:
|
756 |
msgid "Products"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/class-freemius.php:
|
760 |
msgid "Yes"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/class-freemius.php:
|
764 |
msgid "send me security & feature updates, educational content and offers."
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: includes/class-freemius.php:
|
768 |
msgid "No"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/class-freemius.php:
|
772 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/class-freemius.php:
|
776 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/class-freemius.php:
|
780 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/class-freemius.php:
|
784 |
msgid "License key is empty."
|
785 |
msgstr ""
|
786 |
|
@@ -808,314 +832,314 @@ msgstr ""
|
|
808 |
msgid "Important Upgrade Notice:"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/class-fs-plugin-updater.php:
|
812 |
msgid "Installing plugin: %s"
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: includes/class-fs-plugin-updater.php:
|
816 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: includes/class-fs-plugin-updater.php:
|
820 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/fs-plugin-info-dialog.php:
|
824 |
msgid "Purchase More"
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/fs-plugin-info-dialog.php:
|
828 |
msgctxt "verb"
|
829 |
msgid "Purchase"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: includes/fs-plugin-info-dialog.php:
|
833 |
msgid "Start my free %s"
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: includes/fs-plugin-info-dialog.php:
|
837 |
msgid "Install Free Version Update Now"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: includes/fs-plugin-info-dialog.php:
|
841 |
msgid "Install Update Now"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#: includes/fs-plugin-info-dialog.php:
|
845 |
msgid "Install Free Version Now"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: includes/fs-plugin-info-dialog.php:
|
849 |
msgid "Install Now"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: includes/fs-plugin-info-dialog.php:
|
853 |
msgctxt "as download latest version"
|
854 |
msgid "Download Latest Free Version"
|
855 |
msgstr ""
|
856 |
|
857 |
-
#: includes/fs-plugin-info-dialog.php:
|
858 |
msgctxt "as download latest version"
|
859 |
msgid "Download Latest"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: includes/fs-plugin-info-dialog.php:
|
863 |
msgid "Activate this add-on"
|
864 |
msgstr ""
|
865 |
|
866 |
-
#: includes/fs-plugin-info-dialog.php:
|
867 |
msgid "Activate Free Version"
|
868 |
msgstr ""
|
869 |
|
870 |
-
#: includes/fs-plugin-info-dialog.php:
|
871 |
msgid "Activate"
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: includes/fs-plugin-info-dialog.php:
|
875 |
msgctxt "Plugin installer section title"
|
876 |
msgid "Description"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: includes/fs-plugin-info-dialog.php:
|
880 |
msgctxt "Plugin installer section title"
|
881 |
msgid "Installation"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: includes/fs-plugin-info-dialog.php:
|
885 |
msgctxt "Plugin installer section title"
|
886 |
msgid "FAQ"
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: includes/fs-plugin-info-dialog.php:
|
890 |
msgid "Screenshots"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: includes/fs-plugin-info-dialog.php:
|
894 |
msgctxt "Plugin installer section title"
|
895 |
msgid "Changelog"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: includes/fs-plugin-info-dialog.php:
|
899 |
msgctxt "Plugin installer section title"
|
900 |
msgid "Reviews"
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/fs-plugin-info-dialog.php:
|
904 |
msgctxt "Plugin installer section title"
|
905 |
msgid "Other Notes"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: includes/fs-plugin-info-dialog.php:
|
909 |
msgctxt "Plugin installer section title"
|
910 |
msgid "Features & Pricing"
|
911 |
msgstr ""
|
912 |
|
913 |
-
#: includes/fs-plugin-info-dialog.php:
|
914 |
msgid "Plugin Install"
|
915 |
msgstr ""
|
916 |
|
917 |
-
#: includes/fs-plugin-info-dialog.php:
|
918 |
msgctxt "e.g. Professional Plan"
|
919 |
msgid "%s Plan"
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: includes/fs-plugin-info-dialog.php:
|
923 |
msgctxt "e.g. the best product"
|
924 |
msgid "Best"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/fs-plugin-info-dialog.php:
|
928 |
msgctxt "as every month"
|
929 |
msgid "Monthly"
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: includes/fs-plugin-info-dialog.php:
|
933 |
msgctxt "as once a year"
|
934 |
msgid "Annual"
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: includes/fs-plugin-info-dialog.php:
|
938 |
msgid "Lifetime"
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: includes/fs-plugin-info-dialog.php:
|
942 |
msgctxt "e.g. billed monthly"
|
943 |
msgid "Billed %s"
|
944 |
msgstr ""
|
945 |
|
946 |
-
#: includes/fs-plugin-info-dialog.php:
|
947 |
msgctxt "as once a year"
|
948 |
msgid "Annually"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: includes/fs-plugin-info-dialog.php:
|
952 |
msgctxt "as once a year"
|
953 |
msgid "Once"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: includes/fs-plugin-info-dialog.php:
|
957 |
msgid "Single Site License"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: includes/fs-plugin-info-dialog.php:
|
961 |
msgid "Unlimited Licenses"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: includes/fs-plugin-info-dialog.php:
|
965 |
msgid "Up to %s Sites"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: includes/fs-plugin-info-dialog.php:
|
969 |
msgctxt "as monthly period"
|
970 |
msgid "mo"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: includes/fs-plugin-info-dialog.php:
|
974 |
msgctxt "as annual period"
|
975 |
msgid "year"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: includes/fs-plugin-info-dialog.php:
|
979 |
msgctxt "noun"
|
980 |
msgid "Price"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/fs-plugin-info-dialog.php:
|
984 |
msgid "Save %s"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/fs-plugin-info-dialog.php:
|
988 |
msgid "No commitment for %s - cancel anytime"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: includes/fs-plugin-info-dialog.php:
|
992 |
msgid "After your free %s, pay as little as %s"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: includes/fs-plugin-info-dialog.php:
|
996 |
msgid "Details"
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: includes/fs-plugin-info-dialog.php:
|
1000 |
msgctxt "product version"
|
1001 |
msgid "Version"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: includes/fs-plugin-info-dialog.php:
|
1005 |
msgctxt "as the plugin author"
|
1006 |
msgid "Author"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: includes/fs-plugin-info-dialog.php:
|
1010 |
msgid "Last Updated"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: includes/fs-plugin-info-dialog.php:
|
1014 |
msgctxt "x-ago"
|
1015 |
msgid "%s ago"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: includes/fs-plugin-info-dialog.php:
|
1019 |
msgid "Requires WordPress Version"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: includes/fs-plugin-info-dialog.php:
|
1023 |
msgid "%s or higher"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: includes/fs-plugin-info-dialog.php:
|
1027 |
msgid "Compatible up to"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: includes/fs-plugin-info-dialog.php:
|
1031 |
msgid "Downloaded"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#: includes/fs-plugin-info-dialog.php:
|
1035 |
msgid "%s time"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: includes/fs-plugin-info-dialog.php:
|
1039 |
msgid "%s times"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
-
#: includes/fs-plugin-info-dialog.php:
|
1043 |
msgid "WordPress.org Plugin Page"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
-
#: includes/fs-plugin-info-dialog.php:
|
1047 |
msgid "Plugin Homepage"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
-
#: includes/fs-plugin-info-dialog.php:
|
1051 |
msgid "Donate to this plugin"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
-
#: includes/fs-plugin-info-dialog.php:
|
1055 |
msgid "Average Rating"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
-
#: includes/fs-plugin-info-dialog.php:
|
1059 |
msgid "based on %s"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/fs-plugin-info-dialog.php:
|
1063 |
msgid "%s rating"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/fs-plugin-info-dialog.php:
|
1067 |
msgid "%s ratings"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/fs-plugin-info-dialog.php:
|
1071 |
msgid "%s star"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/fs-plugin-info-dialog.php:
|
1075 |
msgid "%s stars"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/fs-plugin-info-dialog.php:
|
1079 |
msgid "Click to see reviews that provided a rating of %s"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/fs-plugin-info-dialog.php:
|
1083 |
msgid "Contributors"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/fs-plugin-info-dialog.php:
|
1087 |
msgid "Warning"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#: includes/fs-plugin-info-dialog.php:
|
1091 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: includes/fs-plugin-info-dialog.php:
|
1095 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: includes/fs-plugin-info-dialog.php:
|
1099 |
msgid "Paid add-on must be deployed to Freemius."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: includes/fs-plugin-info-dialog.php:
|
1103 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: includes/fs-plugin-info-dialog.php:
|
1107 |
msgid "Newer Version (%s) Installed"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#: includes/fs-plugin-info-dialog.php:
|
1111 |
msgid "Newer Free Version (%s) Installed"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/fs-plugin-info-dialog.php:
|
1115 |
msgid "Latest Version Installed"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: includes/fs-plugin-info-dialog.php:
|
1119 |
msgid "Latest Free Version Installed"
|
1120 |
msgstr ""
|
1121 |
|
@@ -1199,208 +1223,216 @@ msgstr ""
|
|
1199 |
msgid "Bundle Plan"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: templates/account.php:
|
1203 |
msgid "Free Trial"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
-
#: templates/account.php:
|
1207 |
msgid "Account Details"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
-
#: templates/account.php:
|
1211 |
msgid "Start Debug"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
-
#: templates/account.php:
|
1215 |
msgid "Stop Debug"
|
1216 |
msgstr ""
|
1217 |
|
1218 |
-
#: templates/account.php:
|
1219 |
msgid "Billing & Invoices"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: templates/account.php:
|
1223 |
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?"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
-
#: templates/account.php:
|
1227 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
-
#: templates/account.php:
|
1231 |
msgid "Delete Account"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
-
#: templates/account.php:
|
1235 |
msgid "Deactivate License"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
-
#: templates/account.php:
|
1239 |
msgid "Are you sure you want to proceed?"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
-
#: templates/account.php:
|
1243 |
msgid "Cancel Subscription"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: templates/account.php:
|
1247 |
msgctxt "as synchronize"
|
1248 |
msgid "Sync"
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: templates/account.php:
|
1252 |
msgid "Name"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: templates/account.php:
|
1256 |
msgid "Email"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: templates/account.php:
|
1260 |
msgid "User ID"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: templates/account.php:
|
1264 |
msgid "ID"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: templates/account.php:
|
1268 |
msgid "Site ID"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: templates/account.php:
|
1272 |
msgid "No ID"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: templates/account.php:
|
1276 |
msgid "Public Key"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: templates/account.php:
|
1280 |
msgid "Secret Key"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: templates/account.php:
|
1284 |
msgctxt "as secret encryption key missing"
|
1285 |
msgid "No Secret"
|
1286 |
msgstr ""
|
1287 |
|
1288 |
-
#: templates/account.php:
|
1289 |
msgid "Trial"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#: templates/account.php:
|
1293 |
msgid "License Key"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: templates/account.php:
|
1297 |
msgid "Join the Beta program"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: templates/account.php:
|
1301 |
msgid "not verified"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: templates/account.php:
|
1305 |
msgid "Expired"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: templates/account.php:
|
1309 |
msgid "Premium version"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: templates/account.php:
|
1313 |
msgid "Free version"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
-
#: templates/account.php:
|
1317 |
msgid "Verify Email"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
-
#: templates/account.php:
|
1321 |
msgid "Download %s Version"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
-
#: templates/account.php:
|
1325 |
msgid "Download Paid Version"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: templates/account.php:
|
1329 |
msgctxt "verb"
|
1330 |
msgid "Show"
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: templates/account.php:
|
1334 |
msgid "What is your %s?"
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: templates/account.php:
|
1338 |
msgctxt "verb"
|
1339 |
msgid "Edit"
|
1340 |
msgstr ""
|
1341 |
|
1342 |
-
#: templates/account.php:
|
1343 |
msgid "Change User"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
-
#: templates/account.php:
|
1347 |
msgid "Sites"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
-
#: templates/account.php:
|
1351 |
msgid "Search by address"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: templates/account.php:
|
1355 |
msgid "Address"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: templates/account.php:
|
1359 |
msgid "License"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: templates/account.php:
|
1363 |
msgid "Plan"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
-
#: templates/account.php:
|
1367 |
msgctxt "as software license"
|
1368 |
msgid "License"
|
1369 |
msgstr ""
|
1370 |
|
1371 |
-
#: templates/account.php:
|
1372 |
msgctxt "verb"
|
1373 |
msgid "Hide"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
-
#: templates/account.php:
|
1377 |
msgid "Processing"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
-
#: templates/account.php:
|
1381 |
msgid "Get updates for bleeding edge Beta versions of %s."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
-
#: templates/account.php:
|
1385 |
msgid "Cancelling %s"
|
1386 |
msgstr ""
|
1387 |
|
1388 |
-
#: templates/account.php:
|
1389 |
msgid "trial"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
-
#: templates/account.php:
|
1393 |
msgid "Cancelling %s..."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
-
#: templates/account.php:
|
1397 |
msgid "subscription"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: templates/account.php:
|
1401 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1402 |
msgstr ""
|
1403 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1404 |
#: templates/add-ons.php:38
|
1405 |
msgid "View details"
|
1406 |
msgstr ""
|
@@ -1530,7 +1562,7 @@ msgstr ""
|
|
1530 |
msgid "Can't find your license key?"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: templates/connect.php:323, templates/connect.php:
|
1534 |
msgctxt "verb"
|
1535 |
msgid "Skip"
|
1536 |
msgstr ""
|
@@ -1587,40 +1619,40 @@ msgstr ""
|
|
1587 |
msgid "Title, slug, version, and is active"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: templates/connect.php:
|
1591 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: templates/connect.php:
|
1595 |
msgid "What permissions are being granted?"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: templates/connect.php:
|
1599 |
msgid "Don't have a license key?"
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: templates/connect.php:
|
1603 |
msgid "Have a license key?"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: templates/connect.php:
|
1607 |
msgid "Privacy Policy"
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: templates/connect.php:
|
1611 |
msgid "License Agreement"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: templates/connect.php:
|
1615 |
msgid "Terms of Service"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: templates/connect.php:
|
1619 |
msgctxt "as in the process of sending an email"
|
1620 |
msgid "Sending email"
|
1621 |
msgstr ""
|
1622 |
|
1623 |
-
#: templates/connect.php:
|
1624 |
msgctxt "as activating plugin"
|
1625 |
msgid "Activating"
|
1626 |
msgstr ""
|
@@ -2053,135 +2085,135 @@ msgstr ""
|
|
2053 |
msgid "Apply to become an affiliate"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#: templates/forms/affiliation.php:
|
2057 |
msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
|
2058 |
msgstr ""
|
2059 |
|
2060 |
-
#: templates/forms/affiliation.php:
|
2061 |
msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
|
2062 |
msgstr ""
|
2063 |
|
2064 |
-
#: templates/forms/affiliation.php:
|
2065 |
msgid "Your affiliation account was temporarily suspended."
|
2066 |
msgstr ""
|
2067 |
|
2068 |
-
#: templates/forms/affiliation.php:
|
2069 |
msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
|
2070 |
msgstr ""
|
2071 |
|
2072 |
-
#: templates/forms/affiliation.php:
|
2073 |
msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
|
2074 |
msgstr ""
|
2075 |
|
2076 |
-
#: templates/forms/affiliation.php:
|
2077 |
msgid "Like the %s? Become our ambassador and earn cash ;-)"
|
2078 |
msgstr ""
|
2079 |
|
2080 |
-
#: templates/forms/affiliation.php:
|
2081 |
msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
|
2082 |
msgstr ""
|
2083 |
|
2084 |
-
#: templates/forms/affiliation.php:
|
2085 |
msgid "Program Summary"
|
2086 |
msgstr ""
|
2087 |
|
2088 |
-
#: templates/forms/affiliation.php:
|
2089 |
msgid "%s commission when a customer purchases a new license."
|
2090 |
msgstr ""
|
2091 |
|
2092 |
-
#: templates/forms/affiliation.php:
|
2093 |
msgid "Get commission for automated subscription renewals."
|
2094 |
msgstr ""
|
2095 |
|
2096 |
-
#: templates/forms/affiliation.php:
|
2097 |
msgid "%s tracking cookie after the first visit to maximize earnings potential."
|
2098 |
msgstr ""
|
2099 |
|
2100 |
-
#: templates/forms/affiliation.php:
|
2101 |
msgid "Unlimited commissions."
|
2102 |
msgstr ""
|
2103 |
|
2104 |
-
#: templates/forms/affiliation.php:
|
2105 |
msgid "%s minimum payout amount."
|
2106 |
msgstr ""
|
2107 |
|
2108 |
-
#: templates/forms/affiliation.php:
|
2109 |
msgid "Payouts are in USD and processed monthly via PayPal."
|
2110 |
msgstr ""
|
2111 |
|
2112 |
-
#: templates/forms/affiliation.php:
|
2113 |
msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
|
2114 |
msgstr ""
|
2115 |
|
2116 |
-
#: templates/forms/affiliation.php:
|
2117 |
msgid "Affiliate"
|
2118 |
msgstr ""
|
2119 |
|
2120 |
-
#: templates/forms/affiliation.php:
|
2121 |
msgid "Email address"
|
2122 |
msgstr ""
|
2123 |
|
2124 |
-
#: templates/forms/affiliation.php:
|
2125 |
msgid "Full name"
|
2126 |
msgstr ""
|
2127 |
|
2128 |
-
#: templates/forms/affiliation.php:
|
2129 |
msgid "PayPal account email address"
|
2130 |
msgstr ""
|
2131 |
|
2132 |
-
#: templates/forms/affiliation.php:
|
2133 |
msgid "Where are you going to promote the %s?"
|
2134 |
msgstr ""
|
2135 |
|
2136 |
-
#: templates/forms/affiliation.php:
|
2137 |
msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
|
2138 |
msgstr ""
|
2139 |
|
2140 |
-
#: templates/forms/affiliation.php:
|
2141 |
msgid "Add another domain"
|
2142 |
msgstr ""
|
2143 |
|
2144 |
-
#: templates/forms/affiliation.php:
|
2145 |
msgid "Extra Domains"
|
2146 |
msgstr ""
|
2147 |
|
2148 |
-
#: templates/forms/affiliation.php:
|
2149 |
msgid "Extra domains where you will be marketing the product from."
|
2150 |
msgstr ""
|
2151 |
|
2152 |
-
#: templates/forms/affiliation.php:
|
2153 |
msgid "Promotion methods"
|
2154 |
msgstr ""
|
2155 |
|
2156 |
-
#: templates/forms/affiliation.php:
|
2157 |
msgid "Social media (Facebook, Twitter, etc.)"
|
2158 |
msgstr ""
|
2159 |
|
2160 |
-
#: templates/forms/affiliation.php:
|
2161 |
msgid "Mobile apps"
|
2162 |
msgstr ""
|
2163 |
|
2164 |
-
#: templates/forms/affiliation.php:
|
2165 |
msgid "Website, email, and social media statistics (optional)"
|
2166 |
msgstr ""
|
2167 |
|
2168 |
-
#: templates/forms/affiliation.php:
|
2169 |
msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
|
2170 |
msgstr ""
|
2171 |
|
2172 |
-
#: templates/forms/affiliation.php:
|
2173 |
msgid "How will you promote us?"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
-
#: templates/forms/affiliation.php:
|
2177 |
msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2178 |
msgstr ""
|
2179 |
|
2180 |
-
#: templates/forms/affiliation.php:
|
2181 |
msgid "Cancel"
|
2182 |
msgstr ""
|
2183 |
|
2184 |
-
#: templates/forms/affiliation.php:
|
2185 |
msgid "Become an affiliate"
|
2186 |
msgstr ""
|
2187 |
|
@@ -2255,7 +2287,7 @@ msgstr ""
|
|
2255 |
msgid "Plugins & themes tracking"
|
2256 |
msgstr ""
|
2257 |
|
2258 |
-
#: templates/forms/optout.php:
|
2259 |
msgid "Saved"
|
2260 |
msgstr ""
|
2261 |
|
@@ -2467,19 +2499,19 @@ msgstr ""
|
|
2467 |
msgid "switching"
|
2468 |
msgstr ""
|
2469 |
|
2470 |
-
#: templates/forms/deactivation/form.php:
|
2471 |
msgid "Submit & %s"
|
2472 |
msgstr ""
|
2473 |
|
2474 |
-
#: templates/forms/deactivation/form.php:
|
2475 |
msgid "Kindly tell us the reason so we can improve."
|
2476 |
msgstr ""
|
2477 |
|
2478 |
-
#: templates/forms/deactivation/form.php:
|
2479 |
msgid "Yes - %s"
|
2480 |
msgstr ""
|
2481 |
|
2482 |
-
#: templates/forms/deactivation/form.php:
|
2483 |
msgid "Skip & %s"
|
2484 |
msgstr ""
|
2485 |
|
1 |
+
# Copyright (C) 2020 freemius
|
2 |
# This file is distributed under the same license as the freemius package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
+
#: includes/class-freemius.php:1912, templates/account.php:910
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/class-freemius.php:1919
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/class-freemius.php:2131
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/class-freemius.php:2133
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/class-freemius.php:2533
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/class-freemius.php:2535
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: includes/class-freemius.php:2541
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: includes/class-freemius.php:2543
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/class-freemius.php:2544
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: includes/class-freemius.php:2553, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: includes/class-freemius.php:2561
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: includes/class-freemius.php:2568
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: includes/class-freemius.php:2574
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: includes/class-freemius.php:2581
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: includes/class-freemius.php:2591
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/class-freemius.php:2593
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/class-freemius.php:2599
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/class-freemius.php:2620
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/class-freemius.php:2630
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/class-freemius.php:2638
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/class-freemius.php:2640
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/class-freemius.php:2644
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/class-freemius.php:2646
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/class-freemius.php:2650
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/class-freemius.php:2652
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/class-freemius.php:2656
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/class-freemius.php:2658
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/class-freemius.php:3513, templates/debug.php:20
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: includes/class-freemius.php:4265
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/class-freemius.php:4267
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/class-freemius.php:4274
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/class-freemius.php:4379
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/class-freemius.php:4384
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/class-freemius.php:4429, includes/class-freemius.php:4923, includes/class-freemius.php:6182, includes/class-freemius.php:13357, includes/class-freemius.php:14075, includes/class-freemius.php:17526, includes/class-freemius.php:17631, includes/class-freemius.php:17806, includes/class-freemius.php:20040, includes/class-freemius.php:20398, includes/class-freemius.php:20408, includes/class-freemius.php:21079, includes/class-freemius.php:21985, includes/class-freemius.php:22118, includes/class-freemius.php:22274, templates/add-ons.php:57
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: includes/class-freemius.php:4498
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: includes/class-freemius.php:4920
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-freemius.php:4921
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/class-freemius.php:5120, includes/class-freemius.php:5145, includes/class-freemius.php:21150
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/class-freemius.php:5848
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: includes/class-freemius.php:5860, includes/class-freemius.php:7762
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: includes/class-freemius.php:5875
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: includes/class-freemius.php:5879, includes/class-freemius.php:16925, includes/class-freemius.php:16936, includes/class-freemius.php:20309, includes/class-freemius.php:20659, includes/class-freemius.php:20728, includes/class-freemius.php:20900
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/class-freemius.php:6165
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-freemius.php:6169
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: includes/class-freemius.php:6178, templates/add-ons.php:186, templates/account/partials/addon.php:381
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/class-freemius.php:6179
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/class-freemius.php:7118, templates/connect.php:171
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/class-freemius.php:7122
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: includes/class-freemius.php:7123, templates/connect.php:175
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-freemius.php:7241
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: includes/class-freemius.php:7244
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/class-freemius.php:7322
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: includes/class-freemius.php:7326
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/class-freemius.php:7761
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: includes/class-freemius.php:10243, includes/class-fs-plugin-updater.php:1099, includes/class-fs-plugin-updater.php:1294, includes/class-fs-plugin-updater.php:1301, templates/auto-installation.php:32
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: includes/class-freemius.php:10245, templates/account.php:392, templates/account.php:400, templates/debug.php:358, templates/debug.php:549
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: includes/class-freemius.php:10246, templates/account.php:393, templates/account.php:401, templates/debug.php:358, templates/debug.php:549, templates/forms/deactivation/form.php:71
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: includes/class-freemius.php:13176
|
254 |
+
msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: includes/class-freemius.php:13190
|
258 |
+
msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: includes/class-freemius.php:13195
|
262 |
+
msgid "User Dashboard"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: includes/class-freemius.php:13196
|
266 |
+
msgid "revert it now"
|
267 |
+
msgstr ""
|
268 |
+
|
269 |
+
#: includes/class-freemius.php:13255
|
270 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: includes/class-freemius.php:13328
|
274 |
msgid "Invalid new user ID or email address."
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/class-freemius.php:13358, includes/class-freemius.php:22229
|
278 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/class-freemius.php:13359, includes/class-freemius.php:22230
|
282 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: includes/class-freemius.php:13366, includes/class-freemius.php:22237
|
286 |
msgid "Change Ownership"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: includes/class-freemius.php:13942
|
290 |
msgid "Invalid site details collection."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: includes/class-freemius.php:14062
|
294 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: includes/class-freemius.php:14064
|
298 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: includes/class-freemius.php:14338
|
302 |
msgid "Account is pending activation."
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: includes/class-freemius.php:14450, templates/forms/premium-versions-upgrade-handler.php:47
|
306 |
msgid "Buy a license now"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: includes/class-freemius.php:14462, templates/forms/premium-versions-upgrade-handler.php:46
|
310 |
msgid "Renew your license now"
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: includes/class-freemius.php:14466
|
314 |
msgid "%s to access version %s security & feature updates, and support."
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: includes/class-freemius.php:16907
|
318 |
msgid "%s activation was successfully completed."
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/class-freemius.php:16921
|
322 |
msgid "Your account was successfully activated with the %s plan."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/class-freemius.php:16932, includes/class-freemius.php:20724
|
326 |
msgid "Your trial has been successfully started."
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/class-freemius.php:17524, includes/class-freemius.php:17629, includes/class-freemius.php:17804
|
330 |
msgid "Couldn't activate %s."
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/class-freemius.php:17525, includes/class-freemius.php:17630, includes/class-freemius.php:17805
|
334 |
msgid "Please contact us with the following message:"
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: includes/class-freemius.php:17626, templates/forms/data-debug-mode.php:162
|
338 |
msgid "An unknown error has occurred."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/class-freemius.php:18162, includes/class-freemius.php:23310
|
342 |
msgid "Upgrade"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: includes/class-freemius.php:18168
|
346 |
msgid "Start Trial"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: includes/class-freemius.php:18170
|
350 |
msgid "Pricing"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: includes/class-freemius.php:18250, includes/class-freemius.php:18252
|
354 |
msgid "Affiliation"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/class-freemius.php:18280, includes/class-freemius.php:18282, templates/account.php:240, templates/debug.php:324
|
358 |
msgid "Account"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: includes/class-freemius.php:18296, includes/class-freemius.php:18298, includes/customizer/class-fs-customizer-support-section.php:60
|
362 |
msgid "Contact Us"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: includes/class-freemius.php:18309, includes/class-freemius.php:18311, includes/class-freemius.php:23324, templates/account.php:119, templates/account/partials/addon.php:44
|
366 |
msgid "Add-Ons"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: includes/class-freemius.php:18345
|
370 |
msgctxt "ASCII arrow left icon"
|
371 |
msgid "←"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: includes/class-freemius.php:18345
|
375 |
msgctxt "ASCII arrow right icon"
|
376 |
msgid "➤"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/class-freemius.php:18347, templates/pricing.php:109
|
380 |
msgctxt "noun"
|
381 |
msgid "Pricing"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/class-freemius.php:18560, includes/customizer/class-fs-customizer-support-section.php:67
|
385 |
msgid "Support Forum"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/class-freemius.php:19534
|
389 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: includes/class-freemius.php:19535
|
393 |
msgctxt "a positive response"
|
394 |
msgid "Right on"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/class-freemius.php:20041
|
398 |
msgid "seems like the key you entered doesn't match our records."
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/class-freemius.php:20065
|
402 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/class-freemius.php:20300
|
406 |
msgid "Your %s Add-on plan was successfully upgraded."
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/class-freemius.php:20302
|
410 |
msgid "%s Add-on was successfully purchased."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/class-freemius.php:20305
|
414 |
msgid "Download the latest version"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: includes/class-freemius.php:20391
|
418 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: includes/class-freemius.php:20397, includes/class-freemius.php:20407, includes/class-freemius.php:20859, includes/class-freemius.php:20948
|
422 |
msgid "Error received from the server:"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: includes/class-freemius.php:20407
|
426 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: includes/class-freemius.php:20621, includes/class-freemius.php:20864, includes/class-freemius.php:20919, includes/class-freemius.php:21026
|
430 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
431 |
msgid "Hmm"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/class-freemius.php:20634
|
435 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/class-freemius.php:20635, templates/account.php:121, templates/add-ons.php:250, templates/account/partials/addon.php:46
|
439 |
msgctxt "trial period"
|
440 |
msgid "Trial"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/class-freemius.php:20640
|
444 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: includes/class-freemius.php:20644, includes/class-freemius.php:20703
|
448 |
msgid "Please contact us here"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: includes/class-freemius.php:20655
|
452 |
msgid "Your plan was successfully activated."
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/class-freemius.php:20656
|
456 |
msgid "Your plan was successfully upgraded."
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: includes/class-freemius.php:20673
|
460 |
msgid "Your plan was successfully changed to %s."
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/class-freemius.php:20689
|
464 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/class-freemius.php:20691
|
468 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/class-freemius.php:20699
|
472 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/class-freemius.php:20712
|
476 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: includes/class-freemius.php:20738
|
480 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/class-freemius.php:20740
|
484 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: includes/class-freemius.php:20855
|
488 |
msgid "It looks like the license could not be activated."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: includes/class-freemius.php:20897
|
492 |
msgid "Your license was successfully activated."
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: includes/class-freemius.php:20923
|
496 |
msgid "It looks like your site currently doesn't have an active license."
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: includes/class-freemius.php:20947
|
500 |
msgid "It looks like the license deactivation failed."
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: includes/class-freemius.php:20976
|
504 |
msgid "Your %s license was successfully deactivated."
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: includes/class-freemius.php:20977
|
508 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/class-freemius.php:20980
|
512 |
msgid "O.K"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/class-freemius.php:21033
|
516 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: includes/class-freemius.php:21042
|
520 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: includes/class-freemius.php:21084
|
524 |
msgid "You are already running the %s in a trial mode."
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: includes/class-freemius.php:21095
|
528 |
msgid "You already utilized a trial before."
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: includes/class-freemius.php:21109
|
532 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: includes/class-freemius.php:21120
|
536 |
msgid "Plan %s does not support a trial period."
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: includes/class-freemius.php:21131
|
540 |
msgid "None of the %s's plans supports a trial period."
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: includes/class-freemius.php:21181
|
544 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
545 |
msgstr ""
|
546 |
|
547 |
+
#: includes/class-freemius.php:21217
|
548 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
549 |
msgstr ""
|
550 |
|
551 |
+
#: includes/class-freemius.php:21236
|
552 |
msgid "Your %s free trial was successfully cancelled."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: includes/class-freemius.php:21552
|
556 |
msgid "Version %s was released."
|
557 |
msgstr ""
|
558 |
|
559 |
+
#: includes/class-freemius.php:21552
|
560 |
msgid "Please download %s."
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: includes/class-freemius.php:21559
|
564 |
msgid "the latest %s version here"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/class-freemius.php:21564
|
568 |
msgid "New"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/class-freemius.php:21569
|
572 |
msgid "Seems like you got the latest release."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: includes/class-freemius.php:21570
|
576 |
msgid "You are all good!"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: includes/class-freemius.php:21873
|
580 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: includes/class-freemius.php:22013
|
584 |
msgid "Site successfully opted in."
|
585 |
msgstr ""
|
586 |
|
587 |
+
#: includes/class-freemius.php:22014, includes/class-freemius.php:23020
|
588 |
msgid "Awesome"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: includes/class-freemius.php:22030, templates/forms/optout.php:41
|
592 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: includes/class-freemius.php:22031
|
596 |
msgid "Thank you!"
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: includes/class-freemius.php:22038
|
600 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: includes/class-freemius.php:22196
|
604 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: includes/class-freemius.php:22202
|
608 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/class-freemius.php:22207
|
612 |
msgid "%s is the new owner of the account."
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: includes/class-freemius.php:22209
|
616 |
msgctxt "as congratulations"
|
617 |
msgid "Congrats"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: includes/class-freemius.php:22245
|
621 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: includes/class-freemius.php:22257
|
625 |
msgid "Please provide your full name."
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: includes/class-freemius.php:22262
|
629 |
msgid "Your name was successfully updated."
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: includes/class-freemius.php:22323
|
633 |
msgid "You have successfully updated your %s."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/class-freemius.php:22382
|
637 |
+
msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
|
638 |
+
msgstr ""
|
639 |
+
|
640 |
+
#: includes/class-freemius.php:22385
|
641 |
+
msgid "Click here"
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: includes/class-freemius.php:22483
|
645 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: includes/class-freemius.php:22484
|
649 |
msgctxt "advance notice of something that will need attention."
|
650 |
msgid "Heads up"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: includes/class-freemius.php:23060
|
654 |
msgctxt "exclamation"
|
655 |
msgid "Hey"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: includes/class-freemius.php:23060
|
659 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: includes/class-freemius.php:23068
|
663 |
msgid "No commitment for %s days - cancel anytime!"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: includes/class-freemius.php:23069
|
667 |
msgid "No credit card required"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: includes/class-freemius.php:23076, templates/forms/trial-start.php:53
|
671 |
msgctxt "call to action"
|
672 |
msgid "Start free trial"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: includes/class-freemius.php:23153
|
676 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: includes/class-freemius.php:23162
|
680 |
msgid "Learn more"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: includes/class-freemius.php:23348, templates/account.php:556, templates/account.php:706, templates/connect.php:179, templates/connect.php:456, templates/forms/license-activation.php:27, templates/account/partials/addon.php:321
|
684 |
msgid "Activate License"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: includes/class-freemius.php:23349, templates/account.php:650, templates/account.php:705, templates/account/partials/addon.php:322, templates/account/partials/site.php:271
|
688 |
msgid "Change License"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: includes/class-freemius.php:23462, templates/account/partials/site.php:169
|
692 |
msgid "Opt Out"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/class-freemius.php:23464, includes/class-freemius.php:23470, templates/account/partials/site.php:49, templates/account/partials/site.php:169
|
696 |
msgid "Opt In"
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: includes/class-freemius.php:23700
|
700 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: includes/class-freemius.php:23708
|
704 |
msgid "Activate %s features"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: includes/class-freemius.php:23721
|
708 |
msgid "Please follow these steps to complete the upgrade"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-freemius.php:23725
|
712 |
msgid "Download the latest %s version"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/class-freemius.php:23729
|
716 |
msgid "Upload and activate the downloaded version"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/class-freemius.php:23731
|
720 |
msgid "How to upload and activate?"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/class-freemius.php:23865
|
724 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/class-freemius.php:24034
|
728 |
msgid "Auto installation only works for opted-in users."
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/class-freemius.php:24044, includes/class-freemius.php:24077, includes/class-fs-plugin-updater.php:1273, includes/class-fs-plugin-updater.php:1287
|
732 |
msgid "Invalid module ID."
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: includes/class-freemius.php:24053, includes/class-fs-plugin-updater.php:1309
|
736 |
msgid "Premium version already active."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: includes/class-freemius.php:24060
|
740 |
msgid "You do not have a valid license to access the premium version."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: includes/class-freemius.php:24067
|
744 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/class-freemius.php:24085, includes/class-fs-plugin-updater.php:1308
|
748 |
msgid "Premium add-on version already installed."
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/class-freemius.php:24435
|
752 |
msgid "View paid features"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/class-freemius.php:24757
|
756 |
msgid "Thank you so much for using %s and its add-ons!"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/class-freemius.php:24758
|
760 |
msgid "Thank you so much for using %s!"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/class-freemius.php:24764
|
764 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/class-freemius.php:24768
|
768 |
msgid "Thank you so much for using our products!"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/class-freemius.php:24769
|
772 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: includes/class-freemius.php:24788
|
776 |
msgid "%s and its add-ons"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: includes/class-freemius.php:24797
|
780 |
msgid "Products"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: includes/class-freemius.php:24804, templates/connect.php:280
|
784 |
msgid "Yes"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: includes/class-freemius.php:24805, templates/connect.php:281
|
788 |
msgid "send me security & feature updates, educational content and offers."
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: includes/class-freemius.php:24806, templates/connect.php:286
|
792 |
msgid "No"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/class-freemius.php:24808, templates/connect.php:288
|
796 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/class-freemius.php:24818
|
800 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: includes/class-freemius.php:24820, templates/connect.php:295
|
804 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: includes/class-freemius.php:25102
|
808 |
msgid "License key is empty."
|
809 |
msgstr ""
|
810 |
|
832 |
msgid "Important Upgrade Notice:"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/class-fs-plugin-updater.php:1338
|
836 |
msgid "Installing plugin: %s"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: includes/class-fs-plugin-updater.php:1379
|
840 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: includes/class-fs-plugin-updater.php:1561
|
844 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: includes/fs-plugin-info-dialog.php:541
|
848 |
msgid "Purchase More"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: includes/fs-plugin-info-dialog.php:542, templates/account/partials/addon.php:385
|
852 |
msgctxt "verb"
|
853 |
msgid "Purchase"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: includes/fs-plugin-info-dialog.php:546
|
857 |
msgid "Start my free %s"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: includes/fs-plugin-info-dialog.php:744
|
861 |
msgid "Install Free Version Update Now"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: includes/fs-plugin-info-dialog.php:745, templates/account.php:639
|
865 |
msgid "Install Update Now"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: includes/fs-plugin-info-dialog.php:754
|
869 |
msgid "Install Free Version Now"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: includes/fs-plugin-info-dialog.php:755, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:365, templates/account/partials/addon.php:418
|
873 |
msgid "Install Now"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: includes/fs-plugin-info-dialog.php:771
|
877 |
msgctxt "as download latest version"
|
878 |
msgid "Download Latest Free Version"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: includes/fs-plugin-info-dialog.php:772, templates/account.php:99, templates/add-ons.php:37, templates/account/partials/addon.php:25
|
882 |
msgctxt "as download latest version"
|
883 |
msgid "Download Latest"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: includes/fs-plugin-info-dialog.php:787, templates/add-ons.php:329, templates/account/partials/addon.php:356, templates/account/partials/addon.php:412
|
887 |
msgid "Activate this add-on"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: includes/fs-plugin-info-dialog.php:789, templates/connect.php:453
|
891 |
msgid "Activate Free Version"
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/fs-plugin-info-dialog.php:790, templates/account.php:123, templates/add-ons.php:330, templates/account/partials/addon.php:48
|
895 |
msgid "Activate"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/fs-plugin-info-dialog.php:1002
|
899 |
msgctxt "Plugin installer section title"
|
900 |
msgid "Description"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: includes/fs-plugin-info-dialog.php:1003
|
904 |
msgctxt "Plugin installer section title"
|
905 |
msgid "Installation"
|
906 |
msgstr ""
|
907 |
|
908 |
+
#: includes/fs-plugin-info-dialog.php:1004
|
909 |
msgctxt "Plugin installer section title"
|
910 |
msgid "FAQ"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: includes/fs-plugin-info-dialog.php:1005, templates/plugin-info/description.php:55
|
914 |
msgid "Screenshots"
|
915 |
msgstr ""
|
916 |
|
917 |
+
#: includes/fs-plugin-info-dialog.php:1006
|
918 |
msgctxt "Plugin installer section title"
|
919 |
msgid "Changelog"
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: includes/fs-plugin-info-dialog.php:1007
|
923 |
msgctxt "Plugin installer section title"
|
924 |
msgid "Reviews"
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: includes/fs-plugin-info-dialog.php:1008
|
928 |
msgctxt "Plugin installer section title"
|
929 |
msgid "Other Notes"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/fs-plugin-info-dialog.php:1023
|
933 |
msgctxt "Plugin installer section title"
|
934 |
msgid "Features & Pricing"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: includes/fs-plugin-info-dialog.php:1033
|
938 |
msgid "Plugin Install"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: includes/fs-plugin-info-dialog.php:1105
|
942 |
msgctxt "e.g. Professional Plan"
|
943 |
msgid "%s Plan"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: includes/fs-plugin-info-dialog.php:1131
|
947 |
msgctxt "e.g. the best product"
|
948 |
msgid "Best"
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: includes/fs-plugin-info-dialog.php:1137, includes/fs-plugin-info-dialog.php:1157
|
952 |
msgctxt "as every month"
|
953 |
msgid "Monthly"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/fs-plugin-info-dialog.php:1140
|
957 |
msgctxt "as once a year"
|
958 |
msgid "Annual"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/fs-plugin-info-dialog.php:1143
|
962 |
msgid "Lifetime"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/fs-plugin-info-dialog.php:1157, includes/fs-plugin-info-dialog.php:1159, includes/fs-plugin-info-dialog.php:1161
|
966 |
msgctxt "e.g. billed monthly"
|
967 |
msgid "Billed %s"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: includes/fs-plugin-info-dialog.php:1159
|
971 |
msgctxt "as once a year"
|
972 |
msgid "Annually"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: includes/fs-plugin-info-dialog.php:1161
|
976 |
msgctxt "as once a year"
|
977 |
msgid "Once"
|
978 |
msgstr ""
|
979 |
|
980 |
+
#: includes/fs-plugin-info-dialog.php:1167
|
981 |
msgid "Single Site License"
|
982 |
msgstr ""
|
983 |
|
984 |
+
#: includes/fs-plugin-info-dialog.php:1169
|
985 |
msgid "Unlimited Licenses"
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: includes/fs-plugin-info-dialog.php:1171
|
989 |
msgid "Up to %s Sites"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: includes/fs-plugin-info-dialog.php:1181, templates/plugin-info/features.php:82
|
993 |
msgctxt "as monthly period"
|
994 |
msgid "mo"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: includes/fs-plugin-info-dialog.php:1188, templates/plugin-info/features.php:80
|
998 |
msgctxt "as annual period"
|
999 |
msgid "year"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: includes/fs-plugin-info-dialog.php:1242
|
1003 |
msgctxt "noun"
|
1004 |
msgid "Price"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: includes/fs-plugin-info-dialog.php:1290
|
1008 |
msgid "Save %s"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: includes/fs-plugin-info-dialog.php:1300
|
1012 |
msgid "No commitment for %s - cancel anytime"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: includes/fs-plugin-info-dialog.php:1303
|
1016 |
msgid "After your free %s, pay as little as %s"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/fs-plugin-info-dialog.php:1314
|
1020 |
msgid "Details"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/fs-plugin-info-dialog.php:1318, templates/account.php:110, templates/debug.php:201, templates/debug.php:238, templates/debug.php:455, templates/account/partials/addon.php:36
|
1024 |
msgctxt "product version"
|
1025 |
msgid "Version"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: includes/fs-plugin-info-dialog.php:1325
|
1029 |
msgctxt "as the plugin author"
|
1030 |
msgid "Author"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: includes/fs-plugin-info-dialog.php:1332
|
1034 |
msgid "Last Updated"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: includes/fs-plugin-info-dialog.php:1337, templates/account.php:525
|
1038 |
msgctxt "x-ago"
|
1039 |
msgid "%s ago"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: includes/fs-plugin-info-dialog.php:1346
|
1043 |
msgid "Requires WordPress Version"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: includes/fs-plugin-info-dialog.php:1347
|
1047 |
msgid "%s or higher"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: includes/fs-plugin-info-dialog.php:1354
|
1051 |
msgid "Compatible up to"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: includes/fs-plugin-info-dialog.php:1362
|
1055 |
msgid "Downloaded"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: includes/fs-plugin-info-dialog.php:1366
|
1059 |
msgid "%s time"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: includes/fs-plugin-info-dialog.php:1368
|
1063 |
msgid "%s times"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: includes/fs-plugin-info-dialog.php:1379
|
1067 |
msgid "WordPress.org Plugin Page"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
+
#: includes/fs-plugin-info-dialog.php:1388
|
1071 |
msgid "Plugin Homepage"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/fs-plugin-info-dialog.php:1397, includes/fs-plugin-info-dialog.php:1481
|
1075 |
msgid "Donate to this plugin"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: includes/fs-plugin-info-dialog.php:1404
|
1079 |
msgid "Average Rating"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/fs-plugin-info-dialog.php:1411
|
1083 |
msgid "based on %s"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: includes/fs-plugin-info-dialog.php:1415
|
1087 |
msgid "%s rating"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: includes/fs-plugin-info-dialog.php:1417
|
1091 |
msgid "%s ratings"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: includes/fs-plugin-info-dialog.php:1432
|
1095 |
msgid "%s star"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: includes/fs-plugin-info-dialog.php:1434
|
1099 |
msgid "%s stars"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: includes/fs-plugin-info-dialog.php:1446
|
1103 |
msgid "Click to see reviews that provided a rating of %s"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
+
#: includes/fs-plugin-info-dialog.php:1459
|
1107 |
msgid "Contributors"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: includes/fs-plugin-info-dialog.php:1489, includes/fs-plugin-info-dialog.php:1491
|
1111 |
msgid "Warning"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: includes/fs-plugin-info-dialog.php:1489
|
1115 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: includes/fs-plugin-info-dialog.php:1491
|
1119 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: includes/fs-plugin-info-dialog.php:1510
|
1123 |
msgid "Paid add-on must be deployed to Freemius."
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: includes/fs-plugin-info-dialog.php:1511
|
1127 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: includes/fs-plugin-info-dialog.php:1532
|
1131 |
msgid "Newer Version (%s) Installed"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: includes/fs-plugin-info-dialog.php:1533
|
1135 |
msgid "Newer Free Version (%s) Installed"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: includes/fs-plugin-info-dialog.php:1540
|
1139 |
msgid "Latest Version Installed"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: includes/fs-plugin-info-dialog.php:1541
|
1143 |
msgid "Latest Free Version Installed"
|
1144 |
msgstr ""
|
1145 |
|
1223 |
msgid "Bundle Plan"
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: templates/account.php:248
|
1227 |
msgid "Free Trial"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
+
#: templates/account.php:259
|
1231 |
msgid "Account Details"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: templates/account.php:266, templates/forms/data-debug-mode.php:33
|
1235 |
msgid "Start Debug"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
+
#: templates/account.php:268
|
1239 |
msgid "Stop Debug"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: templates/account.php:275
|
1243 |
msgid "Billing & Invoices"
|
1244 |
msgstr ""
|
1245 |
|
1246 |
+
#: templates/account.php:286
|
1247 |
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
+
#: templates/account.php:288
|
1251 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
+
#: templates/account.php:291
|
1255 |
msgid "Delete Account"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: templates/account.php:303, templates/account/partials/addon.php:231, templates/account/partials/deactivate-license-button.php:35
|
1259 |
msgid "Deactivate License"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
+
#: templates/account.php:326, templates/forms/subscription-cancellation.php:125
|
1263 |
msgid "Are you sure you want to proceed?"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
+
#: templates/account.php:326, templates/account/partials/addon.php:255
|
1267 |
msgid "Cancel Subscription"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
+
#: templates/account.php:355, templates/account/partials/addon.php:340
|
1271 |
msgctxt "as synchronize"
|
1272 |
msgid "Sync"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: templates/account.php:370, templates/debug.php:505
|
1276 |
msgid "Name"
|
1277 |
msgstr ""
|
1278 |
|
1279 |
+
#: templates/account.php:376, templates/debug.php:506
|
1280 |
msgid "Email"
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: templates/account.php:383, templates/debug.php:369, templates/debug.php:555
|
1284 |
msgid "User ID"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: templates/account.php:401, templates/account.php:719, templates/account.php:752, templates/debug.php:236, templates/debug.php:363, templates/debug.php:452, templates/debug.php:504, templates/debug.php:553, templates/debug.php:632, templates/account/payments.php:35, templates/debug/logger.php:21
|
1288 |
msgid "ID"
|
1289 |
msgstr ""
|
1290 |
|
1291 |
+
#: templates/account.php:408
|
1292 |
msgid "Site ID"
|
1293 |
msgstr ""
|
1294 |
|
1295 |
+
#: templates/account.php:411
|
1296 |
msgid "No ID"
|
1297 |
msgstr ""
|
1298 |
|
1299 |
+
#: templates/account.php:416, templates/debug.php:243, templates/debug.php:372, templates/debug.php:456, templates/debug.php:508, templates/account/partials/site.php:227
|
1300 |
msgid "Public Key"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: templates/account.php:422, templates/debug.php:373, templates/debug.php:457, templates/debug.php:509, templates/account/partials/site.php:239
|
1304 |
msgid "Secret Key"
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: templates/account.php:425
|
1308 |
msgctxt "as secret encryption key missing"
|
1309 |
msgid "No Secret"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: templates/account.php:452, templates/account/partials/site.php:120, templates/account/partials/site.php:122
|
1313 |
msgid "Trial"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: templates/account.php:479, templates/debug.php:561, templates/account/partials/site.php:260
|
1317 |
msgid "License Key"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: templates/account.php:510
|
1321 |
msgid "Join the Beta program"
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: templates/account.php:516
|
1325 |
msgid "not verified"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: templates/account.php:525, templates/account/partials/addon.php:190
|
1329 |
msgid "Expired"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: templates/account.php:585
|
1333 |
msgid "Premium version"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: templates/account.php:587
|
1337 |
msgid "Free version"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
+
#: templates/account.php:599
|
1341 |
msgid "Verify Email"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: templates/account.php:613
|
1345 |
msgid "Download %s Version"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: templates/account.php:629
|
1349 |
msgid "Download Paid Version"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: templates/account.php:647, templates/account.php:890, templates/account/partials/site.php:248, templates/account/partials/site.php:270
|
1353 |
msgctxt "verb"
|
1354 |
msgid "Show"
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: templates/account.php:662
|
1358 |
msgid "What is your %s?"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: templates/account.php:670, templates/account/billing.php:21
|
1362 |
msgctxt "verb"
|
1363 |
msgid "Edit"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: templates/account.php:674, templates/forms/user-change.php:27
|
1367 |
msgid "Change User"
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: templates/account.php:698
|
1371 |
msgid "Sites"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: templates/account.php:711
|
1375 |
msgid "Search by address"
|
1376 |
msgstr ""
|
1377 |
|
1378 |
+
#: templates/account.php:720, templates/debug.php:366
|
1379 |
msgid "Address"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
+
#: templates/account.php:721
|
1383 |
msgid "License"
|
1384 |
msgstr ""
|
1385 |
|
1386 |
+
#: templates/account.php:722
|
1387 |
msgid "Plan"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
+
#: templates/account.php:755
|
1391 |
msgctxt "as software license"
|
1392 |
msgid "License"
|
1393 |
msgstr ""
|
1394 |
|
1395 |
+
#: templates/account.php:884
|
1396 |
msgctxt "verb"
|
1397 |
msgid "Hide"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: templates/account.php:906, templates/forms/data-debug-mode.php:31
|
1401 |
msgid "Processing"
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: templates/account.php:909
|
1405 |
msgid "Get updates for bleeding edge Beta versions of %s."
|
1406 |
msgstr ""
|
1407 |
|
1408 |
+
#: templates/account.php:967
|
1409 |
msgid "Cancelling %s"
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: templates/account.php:967, templates/account.php:984, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:133
|
1413 |
msgid "trial"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: templates/account.php:982, templates/forms/deactivation/form.php:150
|
1417 |
msgid "Cancelling %s..."
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: templates/account.php:985, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:134
|
1421 |
msgid "subscription"
|
1422 |
msgstr ""
|
1423 |
|
1424 |
+
#: templates/account.php:999
|
1425 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: templates/account.php:1073
|
1429 |
+
msgid "Disabling white-label mode"
|
1430 |
+
msgstr ""
|
1431 |
+
|
1432 |
+
#: templates/account.php:1074
|
1433 |
+
msgid "Enabling white-label mode"
|
1434 |
+
msgstr ""
|
1435 |
+
|
1436 |
#: templates/add-ons.php:38
|
1437 |
msgid "View details"
|
1438 |
msgstr ""
|
1562 |
msgid "Can't find your license key?"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
+
#: templates/connect.php:323, templates/connect.php:695, templates/forms/deactivation/retry-skip.php:20
|
1566 |
msgctxt "verb"
|
1567 |
msgid "Skip"
|
1568 |
msgstr ""
|
1619 |
msgid "Title, slug, version, and is active"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
+
#: templates/connect.php:421, templates/forms/license-activation.php:41
|
1623 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1624 |
msgstr ""
|
1625 |
|
1626 |
+
#: templates/connect.php:426
|
1627 |
msgid "What permissions are being granted?"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: templates/connect.php:452
|
1631 |
msgid "Don't have a license key?"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: templates/connect.php:455
|
1635 |
msgid "Have a license key?"
|
1636 |
msgstr ""
|
1637 |
|
1638 |
+
#: templates/connect.php:463
|
1639 |
msgid "Privacy Policy"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
#: templates/connect.php:465
|
1643 |
msgid "License Agreement"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
+
#: templates/connect.php:465
|
1647 |
msgid "Terms of Service"
|
1648 |
msgstr ""
|
1649 |
|
1650 |
+
#: templates/connect.php:854
|
1651 |
msgctxt "as in the process of sending an email"
|
1652 |
msgid "Sending email"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: templates/connect.php:855
|
1656 |
msgctxt "as activating plugin"
|
1657 |
msgid "Activating"
|
1658 |
msgstr ""
|
2085 |
msgid "Apply to become an affiliate"
|
2086 |
msgstr ""
|
2087 |
|
2088 |
+
#: templates/forms/affiliation.php:107
|
2089 |
msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
|
2090 |
msgstr ""
|
2091 |
|
2092 |
+
#: templates/forms/affiliation.php:122
|
2093 |
msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
|
2094 |
msgstr ""
|
2095 |
|
2096 |
+
#: templates/forms/affiliation.php:125
|
2097 |
msgid "Your affiliation account was temporarily suspended."
|
2098 |
msgstr ""
|
2099 |
|
2100 |
+
#: templates/forms/affiliation.php:128
|
2101 |
msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
|
2102 |
msgstr ""
|
2103 |
|
2104 |
+
#: templates/forms/affiliation.php:131
|
2105 |
msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
|
2106 |
msgstr ""
|
2107 |
|
2108 |
+
#: templates/forms/affiliation.php:144
|
2109 |
msgid "Like the %s? Become our ambassador and earn cash ;-)"
|
2110 |
msgstr ""
|
2111 |
|
2112 |
+
#: templates/forms/affiliation.php:145
|
2113 |
msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
|
2114 |
msgstr ""
|
2115 |
|
2116 |
+
#: templates/forms/affiliation.php:148
|
2117 |
msgid "Program Summary"
|
2118 |
msgstr ""
|
2119 |
|
2120 |
+
#: templates/forms/affiliation.php:150
|
2121 |
msgid "%s commission when a customer purchases a new license."
|
2122 |
msgstr ""
|
2123 |
|
2124 |
+
#: templates/forms/affiliation.php:152
|
2125 |
msgid "Get commission for automated subscription renewals."
|
2126 |
msgstr ""
|
2127 |
|
2128 |
+
#: templates/forms/affiliation.php:155
|
2129 |
msgid "%s tracking cookie after the first visit to maximize earnings potential."
|
2130 |
msgstr ""
|
2131 |
|
2132 |
+
#: templates/forms/affiliation.php:158
|
2133 |
msgid "Unlimited commissions."
|
2134 |
msgstr ""
|
2135 |
|
2136 |
+
#: templates/forms/affiliation.php:160
|
2137 |
msgid "%s minimum payout amount."
|
2138 |
msgstr ""
|
2139 |
|
2140 |
+
#: templates/forms/affiliation.php:161
|
2141 |
msgid "Payouts are in USD and processed monthly via PayPal."
|
2142 |
msgstr ""
|
2143 |
|
2144 |
+
#: templates/forms/affiliation.php:162
|
2145 |
msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
|
2146 |
msgstr ""
|
2147 |
|
2148 |
+
#: templates/forms/affiliation.php:165
|
2149 |
msgid "Affiliate"
|
2150 |
msgstr ""
|
2151 |
|
2152 |
+
#: templates/forms/affiliation.php:168, templates/forms/resend-key.php:23
|
2153 |
msgid "Email address"
|
2154 |
msgstr ""
|
2155 |
|
2156 |
+
#: templates/forms/affiliation.php:172
|
2157 |
msgid "Full name"
|
2158 |
msgstr ""
|
2159 |
|
2160 |
+
#: templates/forms/affiliation.php:176
|
2161 |
msgid "PayPal account email address"
|
2162 |
msgstr ""
|
2163 |
|
2164 |
+
#: templates/forms/affiliation.php:180
|
2165 |
msgid "Where are you going to promote the %s?"
|
2166 |
msgstr ""
|
2167 |
|
2168 |
+
#: templates/forms/affiliation.php:182
|
2169 |
msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
|
2170 |
msgstr ""
|
2171 |
|
2172 |
+
#: templates/forms/affiliation.php:184
|
2173 |
msgid "Add another domain"
|
2174 |
msgstr ""
|
2175 |
|
2176 |
+
#: templates/forms/affiliation.php:188
|
2177 |
msgid "Extra Domains"
|
2178 |
msgstr ""
|
2179 |
|
2180 |
+
#: templates/forms/affiliation.php:189
|
2181 |
msgid "Extra domains where you will be marketing the product from."
|
2182 |
msgstr ""
|
2183 |
|
2184 |
+
#: templates/forms/affiliation.php:199
|
2185 |
msgid "Promotion methods"
|
2186 |
msgstr ""
|
2187 |
|
2188 |
+
#: templates/forms/affiliation.php:202
|
2189 |
msgid "Social media (Facebook, Twitter, etc.)"
|
2190 |
msgstr ""
|
2191 |
|
2192 |
+
#: templates/forms/affiliation.php:206
|
2193 |
msgid "Mobile apps"
|
2194 |
msgstr ""
|
2195 |
|
2196 |
+
#: templates/forms/affiliation.php:210
|
2197 |
msgid "Website, email, and social media statistics (optional)"
|
2198 |
msgstr ""
|
2199 |
|
2200 |
+
#: templates/forms/affiliation.php:213
|
2201 |
msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
|
2202 |
msgstr ""
|
2203 |
|
2204 |
+
#: templates/forms/affiliation.php:217
|
2205 |
msgid "How will you promote us?"
|
2206 |
msgstr ""
|
2207 |
|
2208 |
+
#: templates/forms/affiliation.php:220
|
2209 |
msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2210 |
msgstr ""
|
2211 |
|
2212 |
+
#: templates/forms/affiliation.php:232, templates/forms/resend-key.php:22
|
2213 |
msgid "Cancel"
|
2214 |
msgstr ""
|
2215 |
|
2216 |
+
#: templates/forms/affiliation.php:234
|
2217 |
msgid "Become an affiliate"
|
2218 |
msgstr ""
|
2219 |
|
2287 |
msgid "Plugins & themes tracking"
|
2288 |
msgstr ""
|
2289 |
|
2290 |
+
#: templates/forms/optout.php:261
|
2291 |
msgid "Saved"
|
2292 |
msgstr ""
|
2293 |
|
2499 |
msgid "switching"
|
2500 |
msgstr ""
|
2501 |
|
2502 |
+
#: templates/forms/deactivation/form.php:369
|
2503 |
msgid "Submit & %s"
|
2504 |
msgstr ""
|
2505 |
|
2506 |
+
#: templates/forms/deactivation/form.php:390
|
2507 |
msgid "Kindly tell us the reason so we can improve."
|
2508 |
msgstr ""
|
2509 |
|
2510 |
+
#: templates/forms/deactivation/form.php:515
|
2511 |
msgid "Yes - %s"
|
2512 |
msgstr ""
|
2513 |
|
2514 |
+
#: templates/forms/deactivation/form.php:522
|
2515 |
msgid "Skip & %s"
|
2516 |
msgstr ""
|
2517 |
|
common/vendor/freemius/package.json
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
"author": "Freemius, Inc.",
|
5 |
"license": "GPL-3.0",
|
6 |
"homepage": "https://freemius.com",
|
7 |
-
"version": "2.
|
8 |
"main": "gulpfile.js",
|
9 |
"dependencies": {},
|
10 |
"scripts": {
|
4 |
"author": "Freemius, Inc.",
|
5 |
"license": "GPL-3.0",
|
6 |
"homepage": "https://freemius.com",
|
7 |
+
"version": "2.4.0",
|
8 |
"main": "gulpfile.js",
|
9 |
"dependencies": {},
|
10 |
"scripts": {
|
common/vendor/freemius/start.php
CHANGED
@@ -1,522 +1,530 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
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 = '2.
|
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 |
-
if ( ! function_exists( 'fs_find_caller_plugin_file' ) ) {
|
35 |
-
// Require SDK essentials.
|
36 |
-
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
|
41 |
-
* that if it's a file from an SDK running in a theme, the location of the SDK
|
42 |
-
* is in the main theme's folder.
|
43 |
-
*
|
44 |
-
* @author Vova Feldman (@svovaf)
|
45 |
-
* @since 1.2.2.6
|
46 |
-
*/
|
47 |
-
$file_path = fs_normalize_path( __FILE__ );
|
48 |
-
$fs_root_path = dirname( $file_path );
|
49 |
-
/**
|
50 |
-
* Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress
|
51 |
-
* assume that the themes directory is inside `wp-content`.
|
52 |
-
*
|
53 |
-
* @author Leo Fajardo (@leorw)
|
54 |
-
* @since 2.2.3
|
55 |
-
*/
|
56 |
-
$themes_directory = get_theme_root( get_stylesheet() );
|
57 |
-
$themes_directory_name = basename( $themes_directory );
|
58 |
-
$theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
|
59 |
-
|
60 |
-
if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
|
61 |
-
) {
|
62 |
-
$this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
|
63 |
-
$is_theme = true;
|
64 |
-
} else {
|
65 |
-
$this_sdk_relative_path = plugin_basename( $fs_root_path );
|
66 |
-
$is_theme = false;
|
67 |
-
}
|
68 |
-
|
69 |
-
if ( ! isset( $fs_active_plugins ) ) {
|
70 |
-
// Load all Freemius powered active plugins.
|
71 |
-
$fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
|
72 |
-
|
73 |
-
if ( ! isset( $fs_active_plugins->plugins ) ) {
|
74 |
-
$fs_active_plugins->plugins = array();
|
75 |
-
}
|
76 |
-
}
|
77 |
-
|
78 |
-
if ( empty( $fs_active_plugins->abspath ) ) {
|
79 |
-
/**
|
80 |
-
* Store the WP install absolute path reference to identify environment change
|
81 |
-
* while replicating the storage.
|
82 |
-
*
|
83 |
-
* @author Vova Feldman (@svovaf)
|
84 |
-
* @since 1.2.1.7
|
85 |
-
*/
|
86 |
-
$fs_active_plugins->abspath = ABSPATH;
|
87 |
-
} else {
|
88 |
-
if ( ABSPATH !== $fs_active_plugins->abspath ) {
|
89 |
-
/**
|
90 |
-
* WordPress path has changed, cleanup the SDK references cache.
|
91 |
-
* This resolves issues triggered when spinning a staging environments
|
92 |
-
* while replicating the database.
|
93 |
-
*
|
94 |
-
* @author Vova Feldman (@svovaf)
|
95 |
-
* @since 1.2.1.7
|
96 |
-
*/
|
97 |
-
$fs_active_plugins->abspath = ABSPATH;
|
98 |
-
$fs_active_plugins->plugins = array();
|
99 |
-
unset( $fs_active_plugins->newest );
|
100 |
-
} else {
|
101 |
-
/**
|
102 |
-
* Make sure SDK references are still valid. This resolves
|
103 |
-
* issues when users hard delete modules via FTP.
|
104 |
-
*
|
105 |
-
* @author Vova Feldman (@svovaf)
|
106 |
-
* @since 1.2.1.7
|
107 |
-
*/
|
108 |
-
$has_changes = false;
|
109 |
-
foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
|
110 |
-
if ( ! file_exists( ( isset( $data->type ) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR ) . '/' . $sdk_path ) ) {
|
111 |
-
unset( $fs_active_plugins->plugins[ $sdk_path ] );
|
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 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
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 |
-
*
|
371 |
-
*
|
372 |
-
*
|
373 |
-
*
|
374 |
-
*
|
375 |
-
*
|
376 |
-
*
|
377 |
-
*
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
if (
|
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 |
-
$sdk_symlink =
|
424 |
-
|
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 |
-
|
520 |
-
|
521 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
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 = '2.4.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 |
+
if ( ! function_exists( 'fs_find_caller_plugin_file' ) ) {
|
35 |
+
// Require SDK essentials.
|
36 |
+
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* This complex logic fixes symlink issues (e.g. with Vargant). The logic assumes
|
41 |
+
* that if it's a file from an SDK running in a theme, the location of the SDK
|
42 |
+
* is in the main theme's folder.
|
43 |
+
*
|
44 |
+
* @author Vova Feldman (@svovaf)
|
45 |
+
* @since 1.2.2.6
|
46 |
+
*/
|
47 |
+
$file_path = fs_normalize_path( __FILE__ );
|
48 |
+
$fs_root_path = dirname( $file_path );
|
49 |
+
/**
|
50 |
+
* Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress
|
51 |
+
* assume that the themes directory is inside `wp-content`.
|
52 |
+
*
|
53 |
+
* @author Leo Fajardo (@leorw)
|
54 |
+
* @since 2.2.3
|
55 |
+
*/
|
56 |
+
$themes_directory = get_theme_root( get_stylesheet() );
|
57 |
+
$themes_directory_name = basename( $themes_directory );
|
58 |
+
$theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path );
|
59 |
+
|
60 |
+
if ( $file_path == fs_normalize_path( realpath( trailingslashit( $themes_directory ) . $theme_candidate_basename . '/' . basename( $file_path ) ) )
|
61 |
+
) {
|
62 |
+
$this_sdk_relative_path = '../' . $themes_directory_name . '/' . $theme_candidate_basename;
|
63 |
+
$is_theme = true;
|
64 |
+
} else {
|
65 |
+
$this_sdk_relative_path = plugin_basename( $fs_root_path );
|
66 |
+
$is_theme = false;
|
67 |
+
}
|
68 |
+
|
69 |
+
if ( ! isset( $fs_active_plugins ) ) {
|
70 |
+
// Load all Freemius powered active plugins.
|
71 |
+
$fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
|
72 |
+
|
73 |
+
if ( ! isset( $fs_active_plugins->plugins ) ) {
|
74 |
+
$fs_active_plugins->plugins = array();
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
if ( empty( $fs_active_plugins->abspath ) ) {
|
79 |
+
/**
|
80 |
+
* Store the WP install absolute path reference to identify environment change
|
81 |
+
* while replicating the storage.
|
82 |
+
*
|
83 |
+
* @author Vova Feldman (@svovaf)
|
84 |
+
* @since 1.2.1.7
|
85 |
+
*/
|
86 |
+
$fs_active_plugins->abspath = ABSPATH;
|
87 |
+
} else {
|
88 |
+
if ( ABSPATH !== $fs_active_plugins->abspath ) {
|
89 |
+
/**
|
90 |
+
* WordPress path has changed, cleanup the SDK references cache.
|
91 |
+
* This resolves issues triggered when spinning a staging environments
|
92 |
+
* while replicating the database.
|
93 |
+
*
|
94 |
+
* @author Vova Feldman (@svovaf)
|
95 |
+
* @since 1.2.1.7
|
96 |
+
*/
|
97 |
+
$fs_active_plugins->abspath = ABSPATH;
|
98 |
+
$fs_active_plugins->plugins = array();
|
99 |
+
unset( $fs_active_plugins->newest );
|
100 |
+
} else {
|
101 |
+
/**
|
102 |
+
* Make sure SDK references are still valid. This resolves
|
103 |
+
* issues when users hard delete modules via FTP.
|
104 |
+
*
|
105 |
+
* @author Vova Feldman (@svovaf)
|
106 |
+
* @since 1.2.1.7
|
107 |
+
*/
|
108 |
+
$has_changes = false;
|
109 |
+
foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
|
110 |
+
if ( ! file_exists( ( isset( $data->type ) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR ) . '/' . $sdk_path ) ) {
|
111 |
+
unset( $fs_active_plugins->plugins[ $sdk_path ] );
|
112 |
+
|
113 |
+
if (
|
114 |
+
! empty( $fs_active_plugins->newest ) &&
|
115 |
+
$sdk_path === $fs_active_plugins->newest->sdk_path
|
116 |
+
) {
|
117 |
+
unset( $fs_active_plugins->newest );
|
118 |
+
}
|
119 |
+
|
120 |
+
$has_changes = true;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
if ( $has_changes ) {
|
125 |
+
if ( empty( $fs_active_plugins->plugins ) ) {
|
126 |
+
unset( $fs_active_plugins->newest );
|
127 |
+
}
|
128 |
+
|
129 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
|
135 |
+
require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
|
136 |
+
}
|
137 |
+
|
138 |
+
if ( ! function_exists( 'fs_get_plugins' ) ) {
|
139 |
+
require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-2.2.1.php';
|
140 |
+
}
|
141 |
+
|
142 |
+
// Update current SDK info based on the SDK path.
|
143 |
+
if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
|
144 |
+
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
|
145 |
+
) {
|
146 |
+
if ( $is_theme ) {
|
147 |
+
$plugin_path = basename( dirname( $this_sdk_relative_path ) );
|
148 |
+
} else {
|
149 |
+
$plugin_path = plugin_basename( fs_find_direct_caller_plugin_file( $file_path ) );
|
150 |
+
}
|
151 |
+
|
152 |
+
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
153 |
+
'version' => $this_sdk_version,
|
154 |
+
'type' => ( $is_theme ? 'theme' : 'plugin' ),
|
155 |
+
'timestamp' => time(),
|
156 |
+
'plugin_path' => $plugin_path,
|
157 |
+
);
|
158 |
+
}
|
159 |
+
|
160 |
+
$is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
|
161 |
+
|
162 |
+
if ( ! isset( $fs_active_plugins->newest ) ) {
|
163 |
+
/**
|
164 |
+
* This will be executed only once, for the first time a Freemius powered plugin is activated.
|
165 |
+
*/
|
166 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
167 |
+
|
168 |
+
$is_current_sdk_newest = true;
|
169 |
+
} else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
|
170 |
+
/**
|
171 |
+
* Current SDK is newer than the newest stored SDK.
|
172 |
+
*/
|
173 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
174 |
+
|
175 |
+
if ( class_exists( 'Freemius' ) ) {
|
176 |
+
// Older SDK version was already loaded.
|
177 |
+
|
178 |
+
if ( ! $fs_active_plugins->newest->in_activation ) {
|
179 |
+
// Re-order plugins to load this plugin first.
|
180 |
+
fs_newest_sdk_plugin_first();
|
181 |
+
}
|
182 |
+
|
183 |
+
// Refresh page.
|
184 |
+
fs_redirect( $_SERVER['REQUEST_URI'] );
|
185 |
+
}
|
186 |
+
} else {
|
187 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
188 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
189 |
+
}
|
190 |
+
|
191 |
+
$fs_newest_sdk = $fs_active_plugins->newest;
|
192 |
+
$fs_newest_sdk = $fs_active_plugins->plugins[ $fs_newest_sdk->sdk_path ];
|
193 |
+
|
194 |
+
$is_newest_sdk_type_theme = ( isset( $fs_newest_sdk->type ) && 'theme' === $fs_newest_sdk->type );
|
195 |
+
|
196 |
+
if ( ! $is_newest_sdk_type_theme ) {
|
197 |
+
$is_newest_sdk_plugin_active = is_plugin_active( $fs_newest_sdk->plugin_path );
|
198 |
+
} else {
|
199 |
+
$current_theme = wp_get_theme();
|
200 |
+
$is_newest_sdk_plugin_active = ( $current_theme->stylesheet === $fs_newest_sdk->plugin_path );
|
201 |
+
|
202 |
+
$current_theme_parent = $current_theme->parent();
|
203 |
+
|
204 |
+
/**
|
205 |
+
* If the current theme is a child of the theme that has the newest SDK, this prevents a redirects loop
|
206 |
+
* from happening by keeping the SDK info stored in the `fs_active_plugins` option.
|
207 |
+
*/
|
208 |
+
if ( ! $is_newest_sdk_plugin_active && $current_theme_parent instanceof WP_Theme ) {
|
209 |
+
$is_newest_sdk_plugin_active = ( $fs_newest_sdk->plugin_path === $current_theme_parent->stylesheet );
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
if ( $is_current_sdk_newest &&
|
214 |
+
! $is_newest_sdk_plugin_active &&
|
215 |
+
! $fs_active_plugins->newest->in_activation
|
216 |
+
) {
|
217 |
+
// If current SDK is the newest and the plugin is NOT active, it means
|
218 |
+
// that the current plugin in activation mode.
|
219 |
+
$fs_active_plugins->newest->in_activation = true;
|
220 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
221 |
+
}
|
222 |
+
|
223 |
+
if ( ! $is_theme ) {
|
224 |
+
$sdk_starter_path = fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' );
|
225 |
+
} else {
|
226 |
+
$sdk_starter_path = fs_normalize_path(
|
227 |
+
$themes_directory
|
228 |
+
. '/'
|
229 |
+
. str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path )
|
230 |
+
. '/start.php' );
|
231 |
+
}
|
232 |
+
|
233 |
+
$is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) && file_exists( $sdk_starter_path );
|
234 |
+
|
235 |
+
if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
|
236 |
+
// Plugin with newest SDK is no longer active, or SDK was moved to a different location.
|
237 |
+
unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
|
238 |
+
}
|
239 |
+
|
240 |
+
if ( ! ( $is_newest_sdk_plugin_active || $fs_active_plugins->newest->in_activation ) ||
|
241 |
+
! $is_newest_sdk_path_valid ||
|
242 |
+
// Is newest SDK downgraded.
|
243 |
+
( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
244 |
+
version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
|
245 |
+
) {
|
246 |
+
/**
|
247 |
+
* Plugin with newest SDK is no longer active.
|
248 |
+
* OR
|
249 |
+
* The newest SDK was in the current plugin. BUT, seems like the version of
|
250 |
+
* the SDK was downgraded to a lower SDK.
|
251 |
+
*/
|
252 |
+
// Find the active plugin with the newest SDK version and update the newest reference.
|
253 |
+
fs_fallback_to_newest_active_sdk();
|
254 |
+
} else {
|
255 |
+
if ( $is_newest_sdk_plugin_active &&
|
256 |
+
$this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
257 |
+
( $fs_active_plugins->newest->in_activation ||
|
258 |
+
( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
|
259 |
+
)
|
260 |
+
|
261 |
+
) {
|
262 |
+
if ( $fs_active_plugins->newest->in_activation && ! $is_newest_sdk_type_theme ) {
|
263 |
+
// Plugin no more in activation.
|
264 |
+
$fs_active_plugins->newest->in_activation = false;
|
265 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
266 |
+
}
|
267 |
+
|
268 |
+
// Reorder plugins to load plugin with newest SDK first.
|
269 |
+
if ( fs_newest_sdk_plugin_first() ) {
|
270 |
+
// Refresh page after re-order to make sure activated plugin loads newest SDK.
|
271 |
+
if ( class_exists( 'Freemius' ) ) {
|
272 |
+
fs_redirect( $_SERVER['REQUEST_URI'] );
|
273 |
+
}
|
274 |
+
}
|
275 |
+
}
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
if ( class_exists( 'Freemius' ) ) {
|
280 |
+
// SDK was already loaded.
|
281 |
+
return;
|
282 |
+
}
|
283 |
+
|
284 |
+
if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
|
285 |
+
$newest_sdk = $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ];
|
286 |
+
|
287 |
+
$plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ?
|
288 |
+
WP_PLUGIN_DIR :
|
289 |
+
$themes_directory;
|
290 |
+
|
291 |
+
$newest_sdk_starter = fs_normalize_path(
|
292 |
+
$plugins_or_theme_dir_path
|
293 |
+
. '/'
|
294 |
+
. str_replace( "../{$themes_directory_name}/", '', $fs_active_plugins->newest->sdk_path )
|
295 |
+
. '/start.php' );
|
296 |
+
|
297 |
+
if ( file_exists( $newest_sdk_starter ) ) {
|
298 |
+
// Reorder plugins to load plugin with newest SDK first.
|
299 |
+
fs_newest_sdk_plugin_first();
|
300 |
+
|
301 |
+
// There's a newer SDK version, load it instead of the current one!
|
302 |
+
require_once $newest_sdk_starter;
|
303 |
+
|
304 |
+
return;
|
305 |
+
}
|
306 |
+
}
|
307 |
+
|
308 |
+
#endregion SDK Selection Logic --------------------------------------------------------------------
|
309 |
+
|
310 |
+
#region Hooks & Filters Collection --------------------------------------------------------------------
|
311 |
+
|
312 |
+
/**
|
313 |
+
* Freemius hooks (actions & filters) tags structure:
|
314 |
+
*
|
315 |
+
* fs_{filter/action_name}_{plugin_slug}
|
316 |
+
*
|
317 |
+
* --------------------------------------------------------
|
318 |
+
*
|
319 |
+
* Usage with WordPress' add_action() / add_filter():
|
320 |
+
*
|
321 |
+
* add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
|
322 |
+
*
|
323 |
+
* --------------------------------------------------------
|
324 |
+
*
|
325 |
+
* Usage with Freemius' instance add_action() / add_filter():
|
326 |
+
*
|
327 |
+
* // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
|
328 |
+
* my_freemius()->add_action('{action_name}', $callable);
|
329 |
+
*
|
330 |
+
* --------------------------------------------------------
|
331 |
+
*
|
332 |
+
* Freemius filters collection:
|
333 |
+
*
|
334 |
+
* fs_connect_url_{plugin_slug}
|
335 |
+
* fs_trial_promotion_message_{plugin_slug}
|
336 |
+
* fs_is_long_term_user_{plugin_slug}
|
337 |
+
* fs_uninstall_reasons_{plugin_slug}
|
338 |
+
* fs_is_plugin_update_{plugin_slug}
|
339 |
+
* fs_api_domains_{plugin_slug}
|
340 |
+
* fs_email_template_sections_{plugin_slug}
|
341 |
+
* fs_support_forum_submenu_{plugin_slug}
|
342 |
+
* fs_support_forum_url_{plugin_slug}
|
343 |
+
* fs_connect_message_{plugin_slug}
|
344 |
+
* fs_connect_message_on_update_{plugin_slug}
|
345 |
+
* fs_uninstall_confirmation_message_{plugin_slug}
|
346 |
+
* fs_pending_activation_message_{plugin_slug}
|
347 |
+
* fs_is_submenu_visible_{plugin_slug}
|
348 |
+
* fs_plugin_icon_{plugin_slug}
|
349 |
+
* fs_show_trial_{plugin_slug}
|
350 |
+
*
|
351 |
+
* --------------------------------------------------------
|
352 |
+
*
|
353 |
+
* Freemius actions collection:
|
354 |
+
*
|
355 |
+
* fs_after_license_loaded_{plugin_slug}
|
356 |
+
* fs_after_license_change_{plugin_slug}
|
357 |
+
* fs_after_plans_sync_{plugin_slug}
|
358 |
+
*
|
359 |
+
* fs_after_account_details_{plugin_slug}
|
360 |
+
* fs_after_account_user_sync_{plugin_slug}
|
361 |
+
* fs_after_account_plan_sync_{plugin_slug}
|
362 |
+
* fs_before_account_load_{plugin_slug}
|
363 |
+
* fs_after_account_connection_{plugin_slug}
|
364 |
+
* fs_account_property_edit_{plugin_slug}
|
365 |
+
* fs_account_email_verified_{plugin_slug}
|
366 |
+
* fs_account_page_load_before_departure_{plugin_slug}
|
367 |
+
* fs_before_account_delete_{plugin_slug}
|
368 |
+
* fs_after_account_delete_{plugin_slug}
|
369 |
+
*
|
370 |
+
* fs_sdk_version_update_{plugin_slug}
|
371 |
+
* fs_plugin_version_update_{plugin_slug}
|
372 |
+
*
|
373 |
+
* fs_initiated_{plugin_slug}
|
374 |
+
* fs_after_init_plugin_registered_{plugin_slug}
|
375 |
+
* fs_after_init_plugin_anonymous_{plugin_slug}
|
376 |
+
* fs_after_init_plugin_pending_activations_{plugin_slug}
|
377 |
+
* fs_after_init_addon_registered_{plugin_slug}
|
378 |
+
* fs_after_init_addon_anonymous_{plugin_slug}
|
379 |
+
* fs_after_init_addon_pending_activations_{plugin_slug}
|
380 |
+
*
|
381 |
+
* fs_after_premium_version_activation_{plugin_slug}
|
382 |
+
* fs_after_free_version_reactivation_{plugin_slug}
|
383 |
+
*
|
384 |
+
* fs_after_uninstall_{plugin_slug}
|
385 |
+
* fs_before_admin_menu_init_{plugin_slug}
|
386 |
+
*/
|
387 |
+
|
388 |
+
#endregion Hooks & Filters Collection --------------------------------------------------------------------
|
389 |
+
|
390 |
+
if ( ! class_exists( 'Freemius' ) ) {
|
391 |
+
|
392 |
+
if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
|
393 |
+
define( 'WP_FS__SDK_VERSION', $this_sdk_version );
|
394 |
+
}
|
395 |
+
|
396 |
+
$plugins_or_theme_dir_path = fs_normalize_path( trailingslashit( $is_theme ?
|
397 |
+
$themes_directory :
|
398 |
+
WP_PLUGIN_DIR ) );
|
399 |
+
|
400 |
+
if ( 0 === strpos( $file_path, $plugins_or_theme_dir_path ) ) {
|
401 |
+
// No symlinks
|
402 |
+
} else {
|
403 |
+
/**
|
404 |
+
* This logic finds the SDK symlink and set WP_FS__DIR to use it.
|
405 |
+
*
|
406 |
+
* @author Vova Feldman (@svovaf)
|
407 |
+
* @since 1.2.2.5
|
408 |
+
*/
|
409 |
+
$sdk_symlink = null;
|
410 |
+
|
411 |
+
// Try to load SDK's symlink from cache.
|
412 |
+
if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
|
413 |
+
is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
|
414 |
+
! empty( $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink )
|
415 |
+
) {
|
416 |
+
$sdk_symlink = $fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink;
|
417 |
+
if ( 0 === strpos( $sdk_symlink, $plugins_or_theme_dir_path ) ) {
|
418 |
+
/**
|
419 |
+
* Make the symlink path relative.
|
420 |
+
*
|
421 |
+
* @author Leo Fajardo (@leorw)
|
422 |
+
*/
|
423 |
+
$sdk_symlink = substr( $sdk_symlink, strlen( $plugins_or_theme_dir_path ) );
|
424 |
+
|
425 |
+
$fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
|
426 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
427 |
+
}
|
428 |
+
|
429 |
+
$realpath = realpath( $plugins_or_theme_dir_path . $sdk_symlink );
|
430 |
+
if ( ! is_string( $realpath ) || ! file_exists( $realpath ) ) {
|
431 |
+
$sdk_symlink = null;
|
432 |
+
}
|
433 |
+
}
|
434 |
+
|
435 |
+
if ( empty( $sdk_symlink ) ) // Has symlinks, therefore, we need to configure WP_FS__DIR based on the symlink.
|
436 |
+
{
|
437 |
+
$partial_path_right = basename( $file_path );
|
438 |
+
$partial_path_left = dirname( $file_path );
|
439 |
+
$realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
|
440 |
+
|
441 |
+
while ( '/' !== $partial_path_left &&
|
442 |
+
( false === $realpath || $file_path !== fs_normalize_path( $realpath ) )
|
443 |
+
) {
|
444 |
+
$partial_path_right = trailingslashit( basename( $partial_path_left ) ) . $partial_path_right;
|
445 |
+
$partial_path_left_prev = $partial_path_left;
|
446 |
+
$partial_path_left = dirname( $partial_path_left_prev );
|
447 |
+
|
448 |
+
/**
|
449 |
+
* Avoid infinite loop if for example `$partial_path_left_prev` is `C:/`, in this case,
|
450 |
+
* `dirname( 'C:/' )` will return `C:/`.
|
451 |
+
*
|
452 |
+
* @author Leo Fajardo (@leorw)
|
453 |
+
*/
|
454 |
+
if ( $partial_path_left === $partial_path_left_prev ) {
|
455 |
+
$partial_path_left = '';
|
456 |
+
break;
|
457 |
+
}
|
458 |
+
|
459 |
+
$realpath = realpath( $plugins_or_theme_dir_path . $partial_path_right );
|
460 |
+
}
|
461 |
+
|
462 |
+
if ( ! empty( $partial_path_left ) && '/' !== $partial_path_left ) {
|
463 |
+
$sdk_symlink = fs_normalize_path( dirname( $partial_path_right ) );
|
464 |
+
|
465 |
+
// Cache value.
|
466 |
+
if ( isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) &&
|
467 |
+
is_object( $fs_active_plugins->plugins[ $this_sdk_relative_path ] )
|
468 |
+
) {
|
469 |
+
$fs_active_plugins->plugins[ $this_sdk_relative_path ]->sdk_symlink = $sdk_symlink;
|
470 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
471 |
+
}
|
472 |
+
}
|
473 |
+
}
|
474 |
+
|
475 |
+
if ( ! empty( $sdk_symlink ) ) {
|
476 |
+
// Set SDK dir to the symlink path.
|
477 |
+
define( 'WP_FS__DIR', $plugins_or_theme_dir_path . $sdk_symlink );
|
478 |
+
}
|
479 |
+
}
|
480 |
+
|
481 |
+
// Load SDK files.
|
482 |
+
require_once dirname( __FILE__ ) . '/require.php';
|
483 |
+
|
484 |
+
/**
|
485 |
+
* Quick shortcut to get Freemius for specified plugin.
|
486 |
+
* Used by various templates.
|
487 |
+
*
|
488 |
+
* @param number $module_id
|
489 |
+
*
|
490 |
+
* @return Freemius
|
491 |
+
*/
|
492 |
+
function freemius( $module_id ) {
|
493 |
+
return Freemius::instance( $module_id );
|
494 |
+
}
|
495 |
+
|
496 |
+
/**
|
497 |
+
* @param string $slug
|
498 |
+
* @param number $plugin_id
|
499 |
+
* @param string $public_key
|
500 |
+
* @param bool $is_live Is live or test plugin.
|
501 |
+
* @param bool $is_premium Hints freemius if running the premium plugin or not.
|
502 |
+
*
|
503 |
+
* @return Freemius
|
504 |
+
*
|
505 |
+
* @deprecated Please use fs_dynamic_init().
|
506 |
+
*/
|
507 |
+
function fs_init( $slug, $plugin_id, $public_key, $is_live = true, $is_premium = true ) {
|
508 |
+
$fs = Freemius::instance( $plugin_id, $slug, true );
|
509 |
+
$fs->init( $plugin_id, $public_key, $is_live, $is_premium );
|
510 |
+
|
511 |
+
return $fs;
|
512 |
+
}
|
513 |
+
|
514 |
+
/**
|
515 |
+
* @param array <string,string> $module Plugin or Theme details.
|
516 |
+
*
|
517 |
+
* @return Freemius
|
518 |
+
* @throws Freemius_Exception
|
519 |
+
*/
|
520 |
+
function fs_dynamic_init( $module ) {
|
521 |
+
$fs = Freemius::instance( $module['id'], $module['slug'], true );
|
522 |
+
$fs->dynamic_init( $module );
|
523 |
+
|
524 |
+
return $fs;
|
525 |
+
}
|
526 |
+
|
527 |
+
function fs_dump_log() {
|
528 |
+
FS_Logger::dump();
|
529 |
+
}
|
530 |
}
|
common/vendor/freemius/templates/account.php
CHANGED
@@ -163,19 +163,28 @@
|
|
163 |
}
|
164 |
}
|
165 |
|
166 |
-
$
|
167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
|
169 |
if (
|
170 |
$show_plan_row &&
|
171 |
is_object( $license ) &&
|
172 |
-
|
173 |
) {
|
174 |
-
$
|
|
|
|
|
175 |
}
|
176 |
|
177 |
-
$is_active_bundle_subscription = ( is_object( $bundle_subscription ) && $bundle_subscription->is_active() );
|
178 |
-
|
179 |
$fs_blog_id = ( is_multisite() && ! is_network_admin() ) ?
|
180 |
get_current_blog_id() :
|
181 |
0;
|
@@ -183,6 +192,46 @@
|
|
183 |
$active_plugins_directories_map = Freemius::get_active_plugins_directories_map( $fs_blog_id );
|
184 |
|
185 |
$is_premium = $fs->is_premium();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
?>
|
187 |
<div class="wrap fs-section">
|
188 |
<?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false ) ) : ?>
|
@@ -392,7 +441,7 @@
|
|
392 |
);
|
393 |
}
|
394 |
|
395 |
-
if ( $has_paid_plan ) {
|
396 |
if ( $fs->is_trial() ) {
|
397 |
if ( $show_plan_row ) {
|
398 |
$profile[] = array(
|
@@ -407,18 +456,18 @@
|
|
407 |
if ( $show_plan_row ) {
|
408 |
$profile[] = array(
|
409 |
'id' => 'plan',
|
410 |
-
'title' => ( $
|
411 |
'value' => strtoupper( is_string( $plan->name ) ?
|
412 |
$plan->title :
|
413 |
strtoupper( $free_text )
|
414 |
)
|
415 |
);
|
416 |
|
417 |
-
if ( $
|
418 |
$profile[] = array(
|
419 |
'id' => 'bundle_plan',
|
420 |
'title' => $bundle_plan_text,
|
421 |
-
'value' =>
|
422 |
);
|
423 |
}
|
424 |
}
|
@@ -525,7 +574,7 @@
|
|
525 |
<?php endif ?>
|
526 |
<?php elseif ( 'bundle_plan' === $p['id'] ) : ?>
|
527 |
<?php if ( is_object( $bundle_subscription ) ) : ?>
|
528 |
-
<?php if ( $is_active_bundle_subscription && ! $
|
529 |
<label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $bundle_subscription->next_payment ) ) ) ) ?></label>
|
530 |
<?php endif ?>
|
531 |
<?php endif ?>
|
@@ -555,7 +604,7 @@
|
|
555 |
<div class="button-group">
|
556 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
557 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
558 |
-
<a target="_blank" class="button button-primary"
|
559 |
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php
|
560 |
$download_version_text_suffix = ( is_object( $update ) ? ' [' . $update->version . ']' : '' );
|
561 |
|
@@ -691,18 +740,6 @@
|
|
691 |
</div>
|
692 |
</div>
|
693 |
<?php endif ?>
|
694 |
-
|
695 |
-
<?php
|
696 |
-
$account_addons = $fs->get_updated_account_addons();
|
697 |
-
|
698 |
-
$installed_addons = $fs->get_installed_addons();
|
699 |
-
$installed_addons_ids = array();
|
700 |
-
foreach ( $installed_addons as $fs_addon ) {
|
701 |
-
$installed_addons_ids[] = $fs_addon->get_id();
|
702 |
-
}
|
703 |
-
|
704 |
-
$addons_to_show = array_unique( array_merge( $installed_addons_ids, $account_addons ) );
|
705 |
-
?>
|
706 |
<?php if ( 0 < count( $addons_to_show ) ) : ?>
|
707 |
<!-- Add-Ons -->
|
708 |
<div class="postbox">
|
@@ -1019,6 +1056,29 @@
|
|
1019 |
});
|
1020 |
});
|
1021 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1022 |
})(jQuery);
|
1023 |
</script>
|
1024 |
<?php
|
163 |
}
|
164 |
}
|
165 |
|
166 |
+
$has_bundle_license = false;
|
167 |
+
|
168 |
+
if ( is_object( $license ) &&
|
169 |
+
FS_Plugin_License::is_valid_id( $license->parent_license_id )
|
170 |
+
) {
|
171 |
+
// Context license has a parent license, therefore, the account has a bundle license.
|
172 |
+
$has_bundle_license = true;
|
173 |
+
}
|
174 |
+
|
175 |
+
$bundle_subscription = null;
|
176 |
+
$is_bundle_first_payment_pending = false;
|
177 |
|
178 |
if (
|
179 |
$show_plan_row &&
|
180 |
is_object( $license ) &&
|
181 |
+
$has_bundle_license
|
182 |
) {
|
183 |
+
$bundle_plan_title = strtoupper( $license->parent_plan_title );
|
184 |
+
$bundle_subscription = $fs->_get_subscription( $license->parent_license_id );
|
185 |
+
$is_bundle_first_payment_pending = $license->is_first_payment_pending();
|
186 |
}
|
187 |
|
|
|
|
|
188 |
$fs_blog_id = ( is_multisite() && ! is_network_admin() ) ?
|
189 |
get_current_blog_id() :
|
190 |
0;
|
192 |
$active_plugins_directories_map = Freemius::get_active_plugins_directories_map( $fs_blog_id );
|
193 |
|
194 |
$is_premium = $fs->is_premium();
|
195 |
+
|
196 |
+
$account_addons = $fs->get_updated_account_addons();
|
197 |
+
$installed_addons = $fs->get_installed_addons();
|
198 |
+
$installed_addons_ids = array();
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Store the installed add-ons' IDs into a collection which will be used in determining the add-ons to show on the "Account" page, and at the same time try to find an add-on that is activated with a bundle license if the core product is not.
|
202 |
+
*
|
203 |
+
* @author Leo Fajardo
|
204 |
+
*
|
205 |
+
* @since 2.4.0
|
206 |
+
*/
|
207 |
+
foreach ( $installed_addons as $fs_addon ) {
|
208 |
+
$installed_addons_ids[] = $fs_addon->get_id();
|
209 |
+
|
210 |
+
if ( $has_bundle_license ) {
|
211 |
+
// We already have the context bundle license details, skip.
|
212 |
+
continue;
|
213 |
+
}
|
214 |
+
|
215 |
+
if (
|
216 |
+
$show_plan_row &&
|
217 |
+
$fs_addon->has_active_valid_license()
|
218 |
+
) {
|
219 |
+
$addon_license = $fs_addon->_get_license();
|
220 |
+
|
221 |
+
if ( FS_Plugin_License::is_valid_id( $addon_license->parent_license_id ) ) {
|
222 |
+
// Add-on's license is associated with a parent/bundle license.
|
223 |
+
$has_bundle_license = true;
|
224 |
+
|
225 |
+
$bundle_plan_title = strtoupper( $addon_license->parent_plan_title );
|
226 |
+
$bundle_subscription = $fs_addon->_get_subscription( $addon_license->parent_license_id );
|
227 |
+
$is_bundle_first_payment_pending = $addon_license->is_first_payment_pending();
|
228 |
+
}
|
229 |
+
}
|
230 |
+
}
|
231 |
+
|
232 |
+
$addons_to_show = array_unique( array_merge( $installed_addons_ids, $account_addons ) );
|
233 |
+
|
234 |
+
$is_active_bundle_subscription = ( is_object( $bundle_subscription ) && $bundle_subscription->is_active() );
|
235 |
?>
|
236 |
<div class="wrap fs-section">
|
237 |
<?php if ( ! $has_tabs && ! $fs->apply_filters( 'hide_account_tabs', false ) ) : ?>
|
441 |
);
|
442 |
}
|
443 |
|
444 |
+
if ( $has_paid_plan || $has_bundle_license ) {
|
445 |
if ( $fs->is_trial() ) {
|
446 |
if ( $show_plan_row ) {
|
447 |
$profile[] = array(
|
456 |
if ( $show_plan_row ) {
|
457 |
$profile[] = array(
|
458 |
'id' => 'plan',
|
459 |
+
'title' => ( $has_bundle_license ? ucfirst( $fs->get_module_type() ) . ' ' : '' ) . $plan_text,
|
460 |
'value' => strtoupper( is_string( $plan->name ) ?
|
461 |
$plan->title :
|
462 |
strtoupper( $free_text )
|
463 |
)
|
464 |
);
|
465 |
|
466 |
+
if ( $has_bundle_license ) {
|
467 |
$profile[] = array(
|
468 |
'id' => 'bundle_plan',
|
469 |
'title' => $bundle_plan_text,
|
470 |
+
'value' => $bundle_plan_title
|
471 |
);
|
472 |
}
|
473 |
}
|
574 |
<?php endif ?>
|
575 |
<?php elseif ( 'bundle_plan' === $p['id'] ) : ?>
|
576 |
<?php if ( is_object( $bundle_subscription ) ) : ?>
|
577 |
+
<?php if ( $is_active_bundle_subscription && ! $is_bundle_first_payment_pending ) : ?>
|
578 |
<label class="fs-tag fs-success"><?php echo esc_html( sprintf( $renews_in_text, human_time_diff( time(), strtotime( $bundle_subscription->next_payment ) ) ) ) ?></label>
|
579 |
<?php endif ?>
|
580 |
<?php endif ?>
|
604 |
<div class="button-group">
|
605 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
606 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
607 |
+
<a target="_blank" rel="noopener" class="button button-primary"
|
608 |
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php
|
609 |
$download_version_text_suffix = ( is_object( $update ) ? ' [' . $update->version . ']' : '' );
|
610 |
|
740 |
</div>
|
741 |
</div>
|
742 |
<?php endif ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
743 |
<?php if ( 0 < count( $addons_to_show ) ) : ?>
|
744 |
<!-- Add-Ons -->
|
745 |
<div class="postbox">
|
1056 |
});
|
1057 |
});
|
1058 |
|
1059 |
+
$( '.fs-toggle-whitelabel-mode' ).click( function () {
|
1060 |
+
var $toggleLink = $( this );
|
1061 |
+
|
1062 |
+
$.ajax( {
|
1063 |
+
url : ajaxurl,
|
1064 |
+
method: 'POST',
|
1065 |
+
data : {
|
1066 |
+
action : '<?php echo $fs->get_ajax_action( 'toggle_whitelabel_mode' ) ?>',
|
1067 |
+
security : '<?php echo $fs->get_ajax_security( 'toggle_whitelabel_mode' ) ?>',
|
1068 |
+
module_id: <?php echo $fs->get_id() ?>
|
1069 |
+
},
|
1070 |
+
beforeSend: function () {
|
1071 |
+
$toggleLink.parent().text( '<?php
|
1072 |
+
$is_whitelabeled ?
|
1073 |
+
fs_esc_html_echo_inline( 'Disabling white-label mode', 'disabling-whitelabel-mode' ) :
|
1074 |
+
fs_esc_html_echo_inline( 'Enabling white-label mode', 'enabling-whitelabel-mode' )
|
1075 |
+
?>' + '...' );
|
1076 |
+
},
|
1077 |
+
complete: function () {
|
1078 |
+
location.reload();
|
1079 |
+
}
|
1080 |
+
} );
|
1081 |
+
});
|
1082 |
})(jQuery);
|
1083 |
</script>
|
1084 |
<?php
|
common/vendor/freemius/templates/account/partials/addon.php
CHANGED
@@ -366,7 +366,7 @@
|
|
366 |
);
|
367 |
} else {
|
368 |
$buttons[] = sprintf(
|
369 |
-
'<a target="_blank" class="button button-primary edit" href="%s">%s</a>',
|
370 |
$fs->_get_latest_download_local_url( $addon_id ),
|
371 |
esc_html( $download_latest_text )
|
372 |
);
|
@@ -417,7 +417,7 @@
|
|
417 |
<a class="button button-primary"
|
418 |
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?' . ( ( isset( $addon_info['has_paid_plan'] ) && $addon_info['has_paid_plan'] ) ? 'fs_allow_updater_and_dialog=true&' : '' ) . 'action=install-plugin&plugin=' . $addon_info['slug'] ), 'install-plugin_' . $addon_info['slug'] ) ?>"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></a>
|
419 |
<?php else : ?>
|
420 |
-
<a target="_blank" class="button button-primary"
|
421 |
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php echo esc_html( $download_latest_text ) ?></a>
|
422 |
<?php endif ?>
|
423 |
<?php endif ?>
|
366 |
);
|
367 |
} else {
|
368 |
$buttons[] = sprintf(
|
369 |
+
'<a target="_blank" rel="noopener" class="button button-primary edit" href="%s">%s</a>',
|
370 |
$fs->_get_latest_download_local_url( $addon_id ),
|
371 |
esc_html( $download_latest_text )
|
372 |
);
|
417 |
<a class="button button-primary"
|
418 |
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?' . ( ( isset( $addon_info['has_paid_plan'] ) && $addon_info['has_paid_plan'] ) ? 'fs_allow_updater_and_dialog=true&' : '' ) . 'action=install-plugin&plugin=' . $addon_info['slug'] ), 'install-plugin_' . $addon_info['slug'] ) ?>"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></a>
|
419 |
<?php else : ?>
|
420 |
+
<a target="_blank" rel="noopener" class="button button-primary"
|
421 |
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php echo esc_html( $download_latest_text ) ?></a>
|
422 |
<?php endif ?>
|
423 |
<?php endif ?>
|
common/vendor/freemius/templates/account/payments.php
CHANGED
@@ -47,7 +47,7 @@
|
|
47 |
<td><?php echo $payment->formatted_gross() ?></td>
|
48 |
<td><?php if (! $payment->is_migrated() ) : ?><a href="<?php echo $fs->_get_invoice_api_url( $payment->id ) ?>"
|
49 |
class="button button-small"
|
50 |
-
target="_blank"><?php fs_esc_html_echo_inline( 'Invoice', 'invoice', $slug ) ?></a><?php endif ?></td>
|
51 |
</tr>
|
52 |
<?php $odd = ! $odd; endforeach ?>
|
53 |
</tbody>
|
47 |
<td><?php echo $payment->formatted_gross() ?></td>
|
48 |
<td><?php if (! $payment->is_migrated() ) : ?><a href="<?php echo $fs->_get_invoice_api_url( $payment->id ) ?>"
|
49 |
class="button button-small"
|
50 |
+
target="_blank" rel="noopener"><?php fs_esc_html_echo_inline( 'Invoice', 'invoice', $slug ) ?></a><?php endif ?></td>
|
51 |
</tr>
|
52 |
<?php $odd = ! $odd; endforeach ?>
|
53 |
</tbody>
|
common/vendor/freemius/templates/add-ons.php
CHANGED
@@ -332,11 +332,11 @@
|
|
332 |
}
|
333 |
?>
|
334 |
<?php else : ?>
|
335 |
-
<a target="_blank" class="button button-primary" href="<?php echo $latest_download_local_url ?>"><?php echo esc_html( $download_latest_text ) ?></a>
|
336 |
<?php endif ?>
|
337 |
<div class="button button-primary fs-dropdown-arrow-button"><span class="fs-dropdown-arrow"></span><ul class="fs-dropdown-list" style="display: none">
|
338 |
<?php if ( $is_allowed_to_install && ! empty( $latest_download_local_url ) ) : ?>
|
339 |
-
<li><a target="_blank" href="<?php echo $latest_download_local_url ?>"><?php echo esc_html( $download_latest_text ) ?></a></li>
|
340 |
<?php endif ?>
|
341 |
<li><?php
|
342 |
echo sprintf(
|
332 |
}
|
333 |
?>
|
334 |
<?php else : ?>
|
335 |
+
<a target="_blank" rel="noopener" class="button button-primary" href="<?php echo $latest_download_local_url ?>"><?php echo esc_html( $download_latest_text ) ?></a>
|
336 |
<?php endif ?>
|
337 |
<div class="button button-primary fs-dropdown-arrow-button"><span class="fs-dropdown-arrow"></span><ul class="fs-dropdown-list" style="display: none">
|
338 |
<?php if ( $is_allowed_to_install && ! empty( $latest_download_local_url ) ) : ?>
|
339 |
+
<li><a target="_blank" rel="noopener" href="<?php echo $latest_download_local_url ?>"><?php echo esc_html( $download_latest_text ) ?></a></li>
|
340 |
<?php endif ?>
|
341 |
<li><?php
|
342 |
echo sprintf(
|
common/vendor/freemius/templates/auto-installation.php
CHANGED
@@ -93,7 +93,7 @@
|
|
93 |
fs_esc_html_inline( 'An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now.', 'installing-in-n', $slug ),
|
94 |
$plugin_title,
|
95 |
sprintf(
|
96 |
-
'<a href="%s" target="_blank">%s</a>',
|
97 |
'https://freemius.com',
|
98 |
'freemius.com'
|
99 |
),
|
93 |
fs_esc_html_inline( 'An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now.', 'installing-in-n', $slug ),
|
94 |
$plugin_title,
|
95 |
sprintf(
|
96 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
97 |
'https://freemius.com',
|
98 |
'freemius.com'
|
99 |
),
|
common/vendor/freemius/templates/connect.php
CHANGED
@@ -54,7 +54,7 @@
|
|
54 |
) );
|
55 |
}
|
56 |
|
57 |
-
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="1">freemius.com</a>';
|
58 |
|
59 |
$error = fs_request_get( 'error' );
|
60 |
|
@@ -222,13 +222,13 @@
|
|
222 |
esc_html( $default_optin_message ),
|
223 |
'<b>' . esc_html( $fs->get_plugin_name() ) . '</b>',
|
224 |
'<b>' . $current_user->user_login . '</b>',
|
225 |
-
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
226 |
$freemius_link
|
227 |
),
|
228 |
$first_name,
|
229 |
$fs->get_plugin_name(),
|
230 |
$current_user->user_login,
|
231 |
-
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
232 |
$freemius_link,
|
233 |
$is_gdpr_required
|
234 |
);
|
@@ -399,11 +399,12 @@
|
|
399 |
}
|
400 |
|
401 |
$permissions['extensions'] = array(
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
|
|
407 |
);
|
408 |
|
409 |
// Allow filtering of the permissions list.
|
@@ -429,7 +430,7 @@
|
|
429 |
class="fs-permission fs-<?php echo esc_attr( $id ); ?>">
|
430 |
<i class="<?php echo esc_attr( $permission['icon-class'] ); ?>"></i>
|
431 |
<?php if ( isset( $permission['optional'] ) && true === $permission['optional'] ) : ?>
|
432 |
-
<div class="fs-switch fs-small fs-round fs
|
433 |
<div class="fs-toggle"></div>
|
434 |
</div>
|
435 |
<?php endif ?>
|
@@ -458,10 +459,10 @@
|
|
458 |
</div>
|
459 |
<?php endif ?>
|
460 |
<div class="fs-terms">
|
461 |
-
<a href="https://freemius.com/privacy/" target="_blank"
|
462 |
tabindex="1"><?php fs_esc_html_echo_inline( 'Privacy Policy', 'privacy-policy', $slug ) ?></a>
|
463 |
-
|
464 |
-
<a href="<?php echo $require_license_key ? $freemius_plugin_terms_url : $freemius_usage_tracking_url ?>" target="_blank" tabindex="1"><?php $require_license_key ? fs_echo_inline( 'License Agreement', 'license-agreement', $slug ) : fs_echo_inline( 'Terms of Service', 'tos', $slug ) ?></a>
|
465 |
</div>
|
466 |
</div>
|
467 |
<?php
|
54 |
) );
|
55 |
}
|
56 |
|
57 |
+
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" rel="noopener" tabindex="1">freemius.com</a>';
|
58 |
|
59 |
$error = fs_request_get( 'error' );
|
60 |
|
222 |
esc_html( $default_optin_message ),
|
223 |
'<b>' . esc_html( $fs->get_plugin_name() ) . '</b>',
|
224 |
'<b>' . $current_user->user_login . '</b>',
|
225 |
+
'<a href="' . $site_url . '" target="_blank" rel="noopener noreferrer">' . $site_url . '</a>',
|
226 |
$freemius_link
|
227 |
),
|
228 |
$first_name,
|
229 |
$fs->get_plugin_name(),
|
230 |
$current_user->user_login,
|
231 |
+
'<a href="' . $site_url . '" target="_blank" rel="noopener noreferrer">' . $site_url . '</a>',
|
232 |
$freemius_link,
|
233 |
$is_gdpr_required
|
234 |
);
|
399 |
}
|
400 |
|
401 |
$permissions['extensions'] = array(
|
402 |
+
'icon-class' => 'dashicons dashicons-menu',
|
403 |
+
'label' => $fs->get_text_inline( 'Plugins & Themes', 'permissions-extensions' ),
|
404 |
+
'desc' => $fs->get_text_inline( 'Title, slug, version, and is active', 'permissions-extensions_desc' ),
|
405 |
+
'priority' => 25,
|
406 |
+
'optional' => true,
|
407 |
+
'default' => $fs->apply_filters( 'permission_extensions_default', true )
|
408 |
);
|
409 |
|
410 |
// Allow filtering of the permissions list.
|
430 |
class="fs-permission fs-<?php echo esc_attr( $id ); ?>">
|
431 |
<i class="<?php echo esc_attr( $permission['icon-class'] ); ?>"></i>
|
432 |
<?php if ( isset( $permission['optional'] ) && true === $permission['optional'] ) : ?>
|
433 |
+
<div class="fs-switch fs-small fs-round fs-<?php echo (! isset( $permission['default'] ) || true === $permission['default'] ) ? 'on' : 'off' ?>">
|
434 |
<div class="fs-toggle"></div>
|
435 |
</div>
|
436 |
<?php endif ?>
|
459 |
</div>
|
460 |
<?php endif ?>
|
461 |
<div class="fs-terms">
|
462 |
+
<a href="https://freemius.com/privacy/" target="_blank" rel="noopener"
|
463 |
tabindex="1"><?php fs_esc_html_echo_inline( 'Privacy Policy', 'privacy-policy', $slug ) ?></a>
|
464 |
-
|
465 |
+
<a href="<?php echo $require_license_key ? $freemius_plugin_terms_url : $freemius_usage_tracking_url ?>" target="_blank" rel="noopener" tabindex="1"><?php $require_license_key ? fs_echo_inline( 'License Agreement', 'license-agreement', $slug ) : fs_echo_inline( 'Terms of Service', 'tos', $slug ) ?></a>
|
466 |
</div>
|
467 |
</div>
|
468 |
<?php
|
common/vendor/freemius/templates/forms/affiliation.php
CHANGED
@@ -83,6 +83,9 @@
|
|
83 |
}
|
84 |
|
85 |
$apply_to_become_affiliate_text = fs_text_inline( 'Apply to become an affiliate', 'apply-to-become-an-affiliate', $slug );
|
|
|
|
|
|
|
86 |
?>
|
87 |
<div id="fs_affiliation_content_wrapper" class="wrap">
|
88 |
<form method="post" action="">
|
@@ -104,7 +107,7 @@
|
|
104 |
fs_esc_html_inline( "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s.", 'affiliate-application-accepted', $slug ),
|
105 |
$plugin_title,
|
106 |
sprintf(
|
107 |
-
'<a href="%s" target="_blank">%s</a>',
|
108 |
$members_dashboard_login_url,
|
109 |
$members_dashboard_login_url
|
110 |
)
|
@@ -217,11 +220,17 @@
|
|
217 |
<p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Please provide details on how you intend to promote %s (please be as specific as possible).', 'promotion-method-desc-field-desc', $slug ), $plugin_title ) ) ?></p>
|
218 |
<?php endif ?>
|
219 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
</form>
|
221 |
</div>
|
222 |
<?php if ( ! $is_affiliate ) : ?>
|
223 |
<a id="cancel_button" href="#" class="button button-secondary button-cancel" style="display: none"><?php fs_esc_html_echo_inline( 'Cancel', 'cancel', $slug ) ?></a>
|
224 |
-
<a id="submit_button" class="button button-primary" href="#" style="display: none"><?php echo esc_html( $apply_to_become_affiliate_text ) ?></a>
|
225 |
<a id="apply_button" class="button button-primary" href="#"><?php fs_esc_html_echo_inline( 'Become an affiliate', 'become-an-affiliate', $slug ) ?></a>
|
226 |
<?php endif ?>
|
227 |
</div>
|
@@ -242,7 +251,8 @@
|
|
242 |
$errorMessageContainer = $('#error_message'),
|
243 |
$domain = $('#domain'),
|
244 |
$addDomain = $('#add_domain'),
|
245 |
-
$extraDomainsContainer = $('#extra_domains_container')
|
|
|
246 |
|
247 |
$applyButton.click(function (evt) {
|
248 |
evt.preventDefault();
|
@@ -360,7 +370,7 @@
|
|
360 |
data : {
|
361 |
action : '<?php echo $fs->get_ajax_action( 'submit_affiliate_application' ) ?>',
|
362 |
security : '<?php echo $fs->get_ajax_security( 'submit_affiliate_application' ) ?>',
|
363 |
-
module_id: '<?php echo $
|
364 |
affiliate: affiliate
|
365 |
},
|
366 |
beforeSend: function () {
|
@@ -472,13 +482,26 @@
|
|
472 |
|
473 |
window.scrollTo(0, 0);
|
474 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
});
|
476 |
</script>
|
477 |
</div>
|
478 |
<?php
|
479 |
$params = array(
|
480 |
'page' => 'affiliation',
|
481 |
-
'module_id' => $
|
482 |
'module_slug' => $slug,
|
483 |
'module_version' => $fs->get_plugin_version(),
|
484 |
);
|
83 |
}
|
84 |
|
85 |
$apply_to_become_affiliate_text = fs_text_inline( 'Apply to become an affiliate', 'apply-to-become-an-affiliate', $slug );
|
86 |
+
|
87 |
+
$module_id = $fs->get_id();
|
88 |
+
$affiliate_program_terms_url = "https://freemius.com/plugin/{$module_id}/{$slug}/legal/affiliate-program/";
|
89 |
?>
|
90 |
<div id="fs_affiliation_content_wrapper" class="wrap">
|
91 |
<form method="post" action="">
|
107 |
fs_esc_html_inline( "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s.", 'affiliate-application-accepted', $slug ),
|
108 |
$plugin_title,
|
109 |
sprintf(
|
110 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
111 |
$members_dashboard_login_url,
|
112 |
$members_dashboard_login_url
|
113 |
)
|
220 |
<p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Please provide details on how you intend to promote %s (please be as specific as possible).', 'promotion-method-desc-field-desc', $slug ), $plugin_title ) ) ?></p>
|
221 |
<?php endif ?>
|
222 |
</div>
|
223 |
+
<?php if ( ! $is_affiliate ) : ?>
|
224 |
+
<div>
|
225 |
+
<input type="checkbox" id="legal_consent_checkbox">
|
226 |
+
<label for="legal_consent_checkbox">I agree to the <a href="<?php echo $affiliate_program_terms_url ?>" target="_blank" rel="noopener">Referrer Program</a>'s terms & conditions.</label>
|
227 |
+
</div>
|
228 |
+
<?php endif ?>
|
229 |
</form>
|
230 |
</div>
|
231 |
<?php if ( ! $is_affiliate ) : ?>
|
232 |
<a id="cancel_button" href="#" class="button button-secondary button-cancel" style="display: none"><?php fs_esc_html_echo_inline( 'Cancel', 'cancel', $slug ) ?></a>
|
233 |
+
<a id="submit_button" class="button button-primary disabled" href="#" style="display: none"><?php echo esc_html( $apply_to_become_affiliate_text ) ?></a>
|
234 |
<a id="apply_button" class="button button-primary" href="#"><?php fs_esc_html_echo_inline( 'Become an affiliate', 'become-an-affiliate', $slug ) ?></a>
|
235 |
<?php endif ?>
|
236 |
</div>
|
251 |
$errorMessageContainer = $('#error_message'),
|
252 |
$domain = $('#domain'),
|
253 |
$addDomain = $('#add_domain'),
|
254 |
+
$extraDomainsContainer = $('#extra_domains_container'),
|
255 |
+
$legalConsentCheckbox = $( '#legal_consent_checkbox' );
|
256 |
|
257 |
$applyButton.click(function (evt) {
|
258 |
evt.preventDefault();
|
370 |
data : {
|
371 |
action : '<?php echo $fs->get_ajax_action( 'submit_affiliate_application' ) ?>',
|
372 |
security : '<?php echo $fs->get_ajax_security( 'submit_affiliate_application' ) ?>',
|
373 |
+
module_id: '<?php echo $module_id ?>',
|
374 |
affiliate: affiliate
|
375 |
},
|
376 |
beforeSend: function () {
|
482 |
|
483 |
window.scrollTo(0, 0);
|
484 |
}
|
485 |
+
|
486 |
+
/**
|
487 |
+
* @author Xiaheng Chen (@xhchen)
|
488 |
+
*
|
489 |
+
* @since 2.4.0
|
490 |
+
*/
|
491 |
+
$legalConsentCheckbox.click( function () {
|
492 |
+
if ( $( this ).prop( 'checked' ) ) {
|
493 |
+
$submitButton.removeClass( 'disabled' );
|
494 |
+
} else {
|
495 |
+
$submitButton.addClass( 'disabled' );
|
496 |
+
}
|
497 |
+
} );
|
498 |
});
|
499 |
</script>
|
500 |
</div>
|
501 |
<?php
|
502 |
$params = array(
|
503 |
'page' => 'affiliation',
|
504 |
+
'module_id' => $module_id,
|
505 |
'module_slug' => $slug,
|
506 |
'module_version' => $fs->get_plugin_version(),
|
507 |
);
|
common/vendor/freemius/templates/forms/deactivation/form.php
CHANGED
@@ -79,8 +79,8 @@ HTML;
|
|
79 |
?>
|
80 |
<script type="text/javascript">
|
81 |
(function ($) {
|
82 |
-
var reasonsHtml
|
83 |
-
modalHtml
|
84 |
'<div class="fs-modal fs-modal-deactivation-feedback<?php echo empty( $confirmation_message ) ? ' no-confirmation-message' : ''; ?>">'
|
85 |
+ ' <div class="fs-modal-dialog">'
|
86 |
+ ' <div class="fs-modal-header">'
|
@@ -97,19 +97,19 @@ HTML;
|
|
97 |
+ ' </div>'
|
98 |
+ ' </div>'
|
99 |
+ '</div>',
|
100 |
-
$modal
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
deleteThemeUpdateData = <?php echo $fs->is_theme() && $fs->is_premium() && ! $fs->has_any_active_valid_license() ? 'true' : 'false' ?>,
|
109 |
$subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' ),
|
110 |
-
showDeactivationFeedbackForm
|
|
|
111 |
|
112 |
-
$modal.appendTo($
|
113 |
|
114 |
if ( 0 !== $subscriptionCancellationModal.length ) {
|
115 |
$subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) {
|
@@ -181,7 +181,11 @@ HTML;
|
|
181 |
registerEventHandlers();
|
182 |
|
183 |
function registerEventHandlers() {
|
184 |
-
$
|
|
|
|
|
|
|
|
|
185 |
evt.preventDefault();
|
186 |
|
187 |
redirectLink = $(this).attr('href');
|
79 |
?>
|
80 |
<script type="text/javascript">
|
81 |
(function ($) {
|
82 |
+
var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ) ?>,
|
83 |
+
modalHtml =
|
84 |
'<div class="fs-modal fs-modal-deactivation-feedback<?php echo empty( $confirmation_message ) ? ' no-confirmation-message' : ''; ?>">'
|
85 |
+ ' <div class="fs-modal-dialog">'
|
86 |
+ ' <div class="fs-modal-header">'
|
97 |
+ ' </div>'
|
98 |
+ ' </div>'
|
99 |
+ '</div>',
|
100 |
+
$modal = $(modalHtml),
|
101 |
+
selectedReasonID = false,
|
102 |
+
redirectLink = '',
|
103 |
+
$anonymousFeedback = $modal.find( '.anonymous-feedback-label' ),
|
104 |
+
isAnonymous = <?php echo ( $is_anonymous ? 'true' : 'false' ); ?>,
|
105 |
+
otherReasonID = <?php echo Freemius::REASON_OTHER; ?>,
|
106 |
+
dontShareDataReasonID = <?php echo Freemius::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION; ?>,
|
107 |
+
deleteThemeUpdateData = <?php echo $fs->is_theme() && $fs->is_premium() && ! $fs->has_any_active_valid_license() ? 'true' : 'false' ?>,
|
|
|
108 |
$subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' ),
|
109 |
+
showDeactivationFeedbackForm = <?php echo ( $show_deactivation_feedback_form ? 'true' : 'false' ) ?>,
|
110 |
+
$body = $( 'body' );
|
111 |
|
112 |
+
$modal.appendTo( $body );
|
113 |
|
114 |
if ( 0 !== $subscriptionCancellationModal.length ) {
|
115 |
$subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) {
|
181 |
registerEventHandlers();
|
182 |
|
183 |
function registerEventHandlers() {
|
184 |
+
$body.on( 'click', '#the-list .deactivate > a', function ( evt ) {
|
185 |
+
if ( 0 === $( this ).next( '[data-module-id=<?php echo $fs->get_id() ?>].fs-module-id' ).length ) {
|
186 |
+
return true;
|
187 |
+
}
|
188 |
+
|
189 |
evt.preventDefault();
|
190 |
|
191 |
redirectLink = $(this).attr('href');
|
common/vendor/freemius/templates/forms/license-activation.php
CHANGED
@@ -35,7 +35,7 @@
|
|
35 |
// Insights platform information.
|
36 |
$fs->get_usage_tracking_terms_url();
|
37 |
|
38 |
-
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="0">freemius.com</a>';
|
39 |
|
40 |
$message_below_input_field = sprintf(
|
41 |
fs_text_inline( 'The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license.', 'license-sync-disclaimer', $slug ),
|
@@ -229,16 +229,16 @@ HTML;
|
|
229 |
+ ' </div>'
|
230 |
+ '</div>',
|
231 |
$modal = $(modalHtml),
|
232 |
-
$activateLicenseLink = $('span.activate-license.<?php echo $unique_affix ?> a, .activate-license-trigger.<?php echo $unique_affix ?>'),
|
233 |
$activateLicenseButton = $modal.find('.button-activate-license'),
|
234 |
$licenseKeyInput = $modal.find( 'input.fs-license-key' ),
|
235 |
$licenseActivationMessage = $modal.find( '.license-activation-message' ),
|
236 |
isNetworkActivation = <?php echo $is_network_activation ? 'true' : 'false' ?>,
|
237 |
isUserChangeSupported = <?php echo $is_user_change_supported ? 'true' : 'false' ?>,
|
238 |
isSingleSiteActivation = false,
|
239 |
-
$ownershipChangeOptionContainer = $modal.find( '.ownership-change-option-container' )
|
|
|
240 |
|
241 |
-
$modal.appendTo($
|
242 |
|
243 |
var
|
244 |
$licensesDropdown = $modal.find( '.fs-licenses' ),
|
@@ -459,7 +459,7 @@ HTML;
|
|
459 |
});
|
460 |
}
|
461 |
|
462 |
-
$
|
463 |
evt.preventDefault();
|
464 |
|
465 |
showModal( evt );
|
@@ -635,7 +635,7 @@ HTML;
|
|
635 |
|
636 |
registerEventHandlers();
|
637 |
|
638 |
-
$
|
639 |
|
640 |
/**
|
641 |
* @author Leo Fajardo (@leorw)
|
@@ -800,7 +800,7 @@ HTML;
|
|
800 |
|
801 |
// Display the dialog box.
|
802 |
$modal.addClass('active');
|
803 |
-
$
|
804 |
|
805 |
var
|
806 |
$singleInstallDetails = $( evt.target ).parents( 'tr.fs-install-details' ),
|
@@ -812,7 +812,9 @@ HTML;
|
|
812 |
$singleInstallDetails.prev().data( 'blog-id' ) :
|
813 |
null;
|
814 |
|
|
|
815 |
$multisiteOptionsContainer.toggle( isNetworkActivation && ! isSingleSiteActivation );
|
|
|
816 |
|
817 |
if ( hasLicenseTypes ) {
|
818 |
$licenseTypes.attr( 'checked', false );
|
@@ -832,7 +834,7 @@ HTML;
|
|
832 |
|
833 |
function closeModal() {
|
834 |
$modal.removeClass('active');
|
835 |
-
$
|
836 |
}
|
837 |
|
838 |
function resetActivateLicenseButton() {
|
35 |
// Insights platform information.
|
36 |
$fs->get_usage_tracking_terms_url();
|
37 |
|
38 |
+
$freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" rel="noopener" tabindex="0">freemius.com</a>';
|
39 |
|
40 |
$message_below_input_field = sprintf(
|
41 |
fs_text_inline( 'The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license.', 'license-sync-disclaimer', $slug ),
|
229 |
+ ' </div>'
|
230 |
+ '</div>',
|
231 |
$modal = $(modalHtml),
|
|
|
232 |
$activateLicenseButton = $modal.find('.button-activate-license'),
|
233 |
$licenseKeyInput = $modal.find( 'input.fs-license-key' ),
|
234 |
$licenseActivationMessage = $modal.find( '.license-activation-message' ),
|
235 |
isNetworkActivation = <?php echo $is_network_activation ? 'true' : 'false' ?>,
|
236 |
isUserChangeSupported = <?php echo $is_user_change_supported ? 'true' : 'false' ?>,
|
237 |
isSingleSiteActivation = false,
|
238 |
+
$ownershipChangeOptionContainer = $modal.find( '.ownership-change-option-container' ),
|
239 |
+
$body = $( 'body' );
|
240 |
|
241 |
+
$modal.appendTo( $body );
|
242 |
|
243 |
var
|
244 |
$licensesDropdown = $modal.find( '.fs-licenses' ),
|
459 |
});
|
460 |
}
|
461 |
|
462 |
+
$body.on( 'click', 'span.activate-license.<?php echo $unique_affix ?> a, .activate-license-trigger.<?php echo $unique_affix ?>', function (evt) {
|
463 |
evt.preventDefault();
|
464 |
|
465 |
showModal( evt );
|
635 |
|
636 |
registerEventHandlers();
|
637 |
|
638 |
+
$body.trigger('licenseActivationLoaded');
|
639 |
|
640 |
/**
|
641 |
* @author Leo Fajardo (@leorw)
|
800 |
|
801 |
// Display the dialog box.
|
802 |
$modal.addClass('active');
|
803 |
+
$body.addClass('has-fs-modal');
|
804 |
|
805 |
var
|
806 |
$singleInstallDetails = $( evt.target ).parents( 'tr.fs-install-details' ),
|
812 |
$singleInstallDetails.prev().data( 'blog-id' ) :
|
813 |
null;
|
814 |
|
815 |
+
<?php if ( $fs->apply_filters( 'enable_per_site_activation', true ) ) : ?>
|
816 |
$multisiteOptionsContainer.toggle( isNetworkActivation && ! isSingleSiteActivation );
|
817 |
+
<?php endif ?>
|
818 |
|
819 |
if ( hasLicenseTypes ) {
|
820 |
$licenseTypes.attr( 'checked', false );
|
834 |
|
835 |
function closeModal() {
|
836 |
$modal.removeClass('active');
|
837 |
+
$body.removeClass('has-fs-modal');
|
838 |
}
|
839 |
|
840 |
function resetActivateLicenseButton() {
|
common/vendor/freemius/templates/forms/optout.php
CHANGED
@@ -49,7 +49,7 @@
|
|
49 |
fs_text_inline( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.', 'opt-out-message-clicking-opt-out', $slug ),
|
50 |
$plugin_title,
|
51 |
sprintf(
|
52 |
-
'<a href="%s" target="_blank">%s</a>',
|
53 |
'https://freemius.com',
|
54 |
'freemius.com'
|
55 |
)
|
@@ -98,20 +98,21 @@
|
|
98 |
$modal = $(modalHtml),
|
99 |
$adminNotice = $( <?php echo json_encode( $admin_notice_html ) ?> ),
|
100 |
action = '<?php echo $action ?>',
|
101 |
-
|
102 |
$optOutButton = $modal.find( '.button-opt-out' ),
|
103 |
$optOutErrorMessage = $modal.find( '.opt-out-error-message' ),
|
104 |
$extensionsTracking = $modal.find( '.fs-permission-extensions' ),
|
|
|
105 |
moduleID = '<?php echo $fs->get_id() ?>';
|
106 |
|
107 |
-
$
|
108 |
-
$modal.appendTo( $
|
109 |
|
110 |
function registerActionLinkClick() {
|
111 |
-
|
112 |
evt.preventDefault();
|
113 |
|
114 |
-
if ( 'stop_tracking' == $
|
115 |
showModal();
|
116 |
} else {
|
117 |
optIn();
|
@@ -151,12 +152,12 @@
|
|
151 |
|
152 |
// Display the dialog box.
|
153 |
$modal.addClass( 'active' );
|
154 |
-
$
|
155 |
}
|
156 |
|
157 |
function closeModal() {
|
158 |
$modal.removeClass( 'active' );
|
159 |
-
$
|
160 |
}
|
161 |
|
162 |
function resetOptOutButton() {
|
@@ -178,6 +179,8 @@
|
|
178 |
}
|
179 |
|
180 |
function sendRequest() {
|
|
|
|
|
181 |
$.ajax({
|
182 |
url: ajaxurl,
|
183 |
method: 'POST',
|
@@ -216,7 +219,7 @@
|
|
216 |
}
|
217 |
}
|
218 |
|
219 |
-
$
|
220 |
} else {
|
221 |
showError( resultObj.error );
|
222 |
resetOptOutButton();
|
@@ -315,7 +318,11 @@
|
|
315 |
'<?php echo ( $fs->is_registered() ? '' : esc_js( $reconnect_url ) ) ?>' :
|
316 |
'');
|
317 |
|
318 |
-
$actionLink = $('<a id="fs_theme_opt_in_out" href="' + encodeURI(href) + '" class="button"
|
|
|
|
|
|
|
|
|
319 |
|
320 |
$('.theme-wrap .theme-actions .active-theme').append($actionLink);
|
321 |
|
49 |
fs_text_inline( 'By clicking "Opt Out", we will no longer be sending any data from %s to %s.', 'opt-out-message-clicking-opt-out', $slug ),
|
50 |
$plugin_title,
|
51 |
sprintf(
|
52 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
53 |
'https://freemius.com',
|
54 |
'freemius.com'
|
55 |
)
|
98 |
$modal = $(modalHtml),
|
99 |
$adminNotice = $( <?php echo json_encode( $admin_notice_html ) ?> ),
|
100 |
action = '<?php echo $action ?>',
|
101 |
+
actionLinkSelector = 'span.opt-in-or-opt-out.<?php echo $slug ?> a',
|
102 |
$optOutButton = $modal.find( '.button-opt-out' ),
|
103 |
$optOutErrorMessage = $modal.find( '.opt-out-error-message' ),
|
104 |
$extensionsTracking = $modal.find( '.fs-permission-extensions' ),
|
105 |
+
$body = $( 'body' ),
|
106 |
moduleID = '<?php echo $fs->get_id() ?>';
|
107 |
|
108 |
+
$modal.data( 'action', action );
|
109 |
+
$modal.appendTo( $body );
|
110 |
|
111 |
function registerActionLinkClick() {
|
112 |
+
$body.on( 'click', actionLinkSelector, function( evt ) {
|
113 |
evt.preventDefault();
|
114 |
|
115 |
+
if ( 'stop_tracking' == $modal.data( 'action' ) ) {
|
116 |
showModal();
|
117 |
} else {
|
118 |
optIn();
|
152 |
|
153 |
// Display the dialog box.
|
154 |
$modal.addClass( 'active' );
|
155 |
+
$body.addClass( 'has-fs-modal' );
|
156 |
}
|
157 |
|
158 |
function closeModal() {
|
159 |
$modal.removeClass( 'active' );
|
160 |
+
$body.removeClass( 'has-fs-modal' );
|
161 |
}
|
162 |
|
163 |
function resetOptOutButton() {
|
179 |
}
|
180 |
|
181 |
function sendRequest() {
|
182 |
+
var $actionLink = $( actionLinkSelector );
|
183 |
+
|
184 |
$.ajax({
|
185 |
url: ajaxurl,
|
186 |
method: 'POST',
|
219 |
}
|
220 |
}
|
221 |
|
222 |
+
$modal.data( 'action', action );
|
223 |
} else {
|
224 |
showError( resultObj.error );
|
225 |
resetOptOutButton();
|
318 |
'<?php echo ( $fs->is_registered() ? '' : esc_js( $reconnect_url ) ) ?>' :
|
319 |
'');
|
320 |
|
321 |
+
var $actionLink = $('<a id="fs_theme_opt_in_out" href="' + encodeURI(href) + '" class="button">' + label + '</a>');
|
322 |
+
|
323 |
+
actionLinkSelector = '#fs_theme_opt_in_out';
|
324 |
+
|
325 |
+
$modal.data( 'action', action );
|
326 |
|
327 |
$('.theme-wrap .theme-actions .active-theme').append($actionLink);
|
328 |
|
common/vendor/freemius/templates/forms/subscription-cancellation.php
CHANGED
@@ -133,7 +133,7 @@ fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' );
|
|
133 |
'<div class="fs-modal fs-modal-subscription-cancellation fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>">'
|
134 |
+ ' <div class="fs-modal-dialog">'
|
135 |
+ ' <div class="fs-modal-header">'
|
136 |
-
+ ' <h4><?php echo
|
137 |
+ ' </div>'
|
138 |
+ ' <div class="fs-modal-body">'
|
139 |
+ ' <div class="fs-modal-panel active">' + <?php echo json_encode( $subscription_cancellation_html ) ?> + '<p class="fs-price-increase-warning" style="display: none;">' + <?php echo json_encode( $prices_increase_text ) ?> + '</p></div>'
|
133 |
'<div class="fs-modal fs-modal-subscription-cancellation fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>">'
|
134 |
+ ' <div class="fs-modal-dialog">'
|
135 |
+ ' <div class="fs-modal-header">'
|
136 |
+
+ ' <h4><?php echo esc_html( sprintf( fs_text_inline( 'Cancel %s?', 'cancel-x', $slug ), ucfirst( $subscription_cancellation_context ) ) ) ?></h4>'
|
137 |
+ ' </div>'
|
138 |
+ ' <div class="fs-modal-body">'
|
139 |
+ ' <div class="fs-modal-panel active">' + <?php echo json_encode( $subscription_cancellation_html ) ?> + '<p class="fs-price-increase-warning" style="display: none;">' + <?php echo json_encode( $prices_increase_text ) ?> + '</p></div>'
|
common/vendor/freemius/templates/forms/trial-start.php
CHANGED
@@ -28,7 +28,7 @@
|
|
28 |
fs_text_inline( '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 %s to periodically send data to %s to check for version updates and to validate your trial.', 'start-trial-prompt-message', $slug ),
|
29 |
$fs->get_module_type(),
|
30 |
sprintf(
|
31 |
-
'<a href="%s" target="_blank">%s</a>',
|
32 |
'https://freemius.com',
|
33 |
'freemius.com'
|
34 |
)
|
28 |
fs_text_inline( '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 %s to periodically send data to %s to check for version updates and to validate your trial.', 'start-trial-prompt-message', $slug ),
|
29 |
$fs->get_module_type(),
|
30 |
sprintf(
|
31 |
+
'<a href="%s" target="_blank" rel="noopener">%s</a>',
|
32 |
'https://freemius.com',
|
33 |
'freemius.com'
|
34 |
)
|
common/vendor/freemius/templates/pricing.php
CHANGED
@@ -1,177 +1,209 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Freemius
|
4 |
-
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
-
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
6 |
-
* @since 1.0.3
|
7 |
-
*/
|
8 |
-
|
9 |
-
/**
|
10 |
-
* Note for WordPress.org Theme/Plugin reviewer:
|
11 |
-
* Freemius is an SDK for plugin and theme developers. Since the core
|
12 |
-
* of the SDK is relevant both for plugins and themes, for obvious reasons,
|
13 |
-
* we only develop and maintain one code base.
|
14 |
-
*
|
15 |
-
* This code (and page) will not run for wp.org themes (only plugins).
|
16 |
-
*
|
17 |
-
* In addition, this page loads an i-frame. We intentionally named it 'frame'
|
18 |
-
* so it will pass the "Theme Check" that is looking for the string "i" . "frame".
|
19 |
-
*
|
20 |
-
* UPDATE:
|
21 |
-
* After ongoing conversations with the WordPress.org TRT we received
|
22 |
-
* an official approval for including i-frames in the theme's WP Admin setting's
|
23 |
-
* page tab (the SDK will never add any i-frames on the sitefront). i-frames
|
24 |
-
* were never against the guidelines, but we wanted to get the team's blessings
|
25 |
-
* before we move forward. For the record, I got the final approval from
|
26 |
-
* Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
|
27 |
-
* Europe 2017 (June 16th, 2017).
|
28 |
-
*
|
29 |
-
* If you have any questions or need clarifications, please don't hesitate
|
30 |
-
* pinging me on slack, my username is @svovaf.
|
31 |
-
*
|
32 |
-
* @author Vova Feldman (@svovaf)
|
33 |
-
* @since 1.2.2
|
34 |
-
*/
|
35 |
-
|
36 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
37 |
-
exit;
|
38 |
-
}
|
39 |
-
|
40 |
-
wp_enqueue_script( 'jquery' );
|
41 |
-
wp_enqueue_script( 'json2' );
|
42 |
-
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
43 |
-
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
44 |
-
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
45 |
-
|
46 |
-
/**
|
47 |
-
* @var array $VARS
|
48 |
-
* @var Freemius $fs
|
49 |
-
*/
|
50 |
-
$fs = freemius( $VARS['id'] );
|
51 |
-
$slug = $fs->get_slug();
|
52 |
-
$timestamp = time();
|
53 |
-
|
54 |
-
$context_params = array(
|
55 |
-
'plugin_id' => $fs->get_id(),
|
56 |
-
'plugin_public_key' => $fs->get_public_key(),
|
57 |
-
'plugin_version' => $fs->get_plugin_version(),
|
58 |
-
);
|
59 |
-
|
60 |
-
$bundle_id = $fs->get_bundle_id();
|
61 |
-
if ( ! is_null( $bundle_id ) ) {
|
62 |
-
$context_params['bundle_id'] = $bundle_id;
|
63 |
-
}
|
64 |
-
|
65 |
-
// Get site context secure params.
|
66 |
-
if ( $fs->is_registered() ) {
|
67 |
-
$context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
|
68 |
-
$fs->get_site(),
|
69 |
-
$timestamp,
|
70 |
-
'upgrade'
|
71 |
-
) );
|
72 |
-
} else {
|
73 |
-
$context_params['home_url'] = home_url();
|
74 |
-
}
|
75 |
-
|
76 |
-
if ( $fs->is_payments_sandbox() ) // Append plugin secure token for sandbox mode authentication.)
|
77 |
-
{
|
78 |
-
$context_params['sandbox'] = FS_Security::instance()->get_secure_token(
|
79 |
-
$fs->get_plugin(),
|
80 |
-
$timestamp,
|
81 |
-
'checkout'
|
82 |
-
);
|
83 |
-
}
|
84 |
-
|
85 |
-
$query_params = array_merge( $context_params, $_GET, array(
|
86 |
-
'next' => $fs->_get_sync_license_url( false, false ),
|
87 |
-
'plugin_version' => $fs->get_plugin_version(),
|
88 |
-
// Billing cycle.
|
89 |
-
'billing_cycle' => fs_request_get( 'billing_cycle', WP_FS__PERIOD_ANNUALLY ),
|
90 |
-
'is_network_admin' => fs_is_network_admin() ? 'true' : 'false',
|
91 |
-
'currency' => $fs->apply_filters( 'default_currency', 'usd' ),
|
92 |
-
) );
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
fs_require_template( 'powered-by.php', $params );
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
6 |
+
* @since 1.0.3
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Note for WordPress.org Theme/Plugin reviewer:
|
11 |
+
* Freemius is an SDK for plugin and theme developers. Since the core
|
12 |
+
* of the SDK is relevant both for plugins and themes, for obvious reasons,
|
13 |
+
* we only develop and maintain one code base.
|
14 |
+
*
|
15 |
+
* This code (and page) will not run for wp.org themes (only plugins).
|
16 |
+
*
|
17 |
+
* In addition, this page loads an i-frame. We intentionally named it 'frame'
|
18 |
+
* so it will pass the "Theme Check" that is looking for the string "i" . "frame".
|
19 |
+
*
|
20 |
+
* UPDATE:
|
21 |
+
* After ongoing conversations with the WordPress.org TRT we received
|
22 |
+
* an official approval for including i-frames in the theme's WP Admin setting's
|
23 |
+
* page tab (the SDK will never add any i-frames on the sitefront). i-frames
|
24 |
+
* were never against the guidelines, but we wanted to get the team's blessings
|
25 |
+
* before we move forward. For the record, I got the final approval from
|
26 |
+
* Ulrich Pogson (@grapplerulrich), a team lead at the TRT during WordCamp
|
27 |
+
* Europe 2017 (June 16th, 2017).
|
28 |
+
*
|
29 |
+
* If you have any questions or need clarifications, please don't hesitate
|
30 |
+
* pinging me on slack, my username is @svovaf.
|
31 |
+
*
|
32 |
+
* @author Vova Feldman (@svovaf)
|
33 |
+
* @since 1.2.2
|
34 |
+
*/
|
35 |
+
|
36 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
37 |
+
exit;
|
38 |
+
}
|
39 |
+
|
40 |
+
wp_enqueue_script( 'jquery' );
|
41 |
+
wp_enqueue_script( 'json2' );
|
42 |
+
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
43 |
+
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
44 |
+
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @var array $VARS
|
48 |
+
* @var Freemius $fs
|
49 |
+
*/
|
50 |
+
$fs = freemius( $VARS['id'] );
|
51 |
+
$slug = $fs->get_slug();
|
52 |
+
$timestamp = time();
|
53 |
+
|
54 |
+
$context_params = array(
|
55 |
+
'plugin_id' => $fs->get_id(),
|
56 |
+
'plugin_public_key' => $fs->get_public_key(),
|
57 |
+
'plugin_version' => $fs->get_plugin_version(),
|
58 |
+
);
|
59 |
+
|
60 |
+
$bundle_id = $fs->get_bundle_id();
|
61 |
+
if ( ! is_null( $bundle_id ) ) {
|
62 |
+
$context_params['bundle_id'] = $bundle_id;
|
63 |
+
}
|
64 |
+
|
65 |
+
// Get site context secure params.
|
66 |
+
if ( $fs->is_registered() ) {
|
67 |
+
$context_params = array_merge( $context_params, FS_Security::instance()->get_context_params(
|
68 |
+
$fs->get_site(),
|
69 |
+
$timestamp,
|
70 |
+
'upgrade'
|
71 |
+
) );
|
72 |
+
} else {
|
73 |
+
$context_params['home_url'] = home_url();
|
74 |
+
}
|
75 |
+
|
76 |
+
if ( $fs->is_payments_sandbox() ) // Append plugin secure token for sandbox mode authentication.)
|
77 |
+
{
|
78 |
+
$context_params['sandbox'] = FS_Security::instance()->get_secure_token(
|
79 |
+
$fs->get_plugin(),
|
80 |
+
$timestamp,
|
81 |
+
'checkout'
|
82 |
+
);
|
83 |
+
}
|
84 |
+
|
85 |
+
$query_params = array_merge( $context_params, $_GET, array(
|
86 |
+
'next' => $fs->_get_sync_license_url( false, false ),
|
87 |
+
'plugin_version' => $fs->get_plugin_version(),
|
88 |
+
// Billing cycle.
|
89 |
+
'billing_cycle' => fs_request_get( 'billing_cycle', WP_FS__PERIOD_ANNUALLY ),
|
90 |
+
'is_network_admin' => fs_is_network_admin() ? 'true' : 'false',
|
91 |
+
'currency' => $fs->apply_filters( 'default_currency', 'usd' ),
|
92 |
+
) );
|
93 |
+
|
94 |
+
$use_external_pricing = $fs->should_use_external_pricing();
|
95 |
+
|
96 |
+
if ( ! $use_external_pricing ) {
|
97 |
+
$pricing_js_url = fs_asset_url( $fs->get_pricing_js_path() );
|
98 |
+
wp_enqueue_script( 'freemius-pricing', $pricing_js_url );
|
99 |
+
} else {
|
100 |
+
if ( ! $fs->is_registered() ) {
|
101 |
+
$template_data = array(
|
102 |
+
'id' => $fs->get_id(),
|
103 |
+
);
|
104 |
+
fs_require_template( 'forms/trial-start.php', $template_data);
|
105 |
+
}
|
106 |
+
|
107 |
+
$view_params = array(
|
108 |
+
'id' => $VARS['id'],
|
109 |
+
'page' => strtolower( $fs->get_text_x_inline( 'Pricing', 'noun', 'pricing' ) ),
|
110 |
+
);
|
111 |
+
fs_require_once_template('secure-https-header.php', $view_params);
|
112 |
+
}
|
113 |
+
|
114 |
+
$has_tabs = $fs->_add_tabs_before_content();
|
115 |
+
|
116 |
+
if ( $has_tabs ) {
|
117 |
+
$query_params['tabs'] = 'true';
|
118 |
+
}
|
119 |
+
?>
|
120 |
+
<div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper">
|
121 |
+
<?php if ( ! $use_external_pricing ) : ?>
|
122 |
+
<div id="fs_pricing_wrapper" data-public-url="<?php echo trailingslashit( dirname( $pricing_js_url ) ) ?>"></div>
|
123 |
+
<?php
|
124 |
+
$pricing_config = array_merge( array(
|
125 |
+
'contact_url' => $fs->contact_url(),
|
126 |
+
'is_network_admin' => fs_is_network_admin(),
|
127 |
+
'is_production' => ( defined( 'WP_FS__IS_PRODUCTION_MODE' ) ? WP_FS__IS_PRODUCTION_MODE : null ),
|
128 |
+
'menu_slug' => $fs->get_menu_slug(),
|
129 |
+
'mode' => 'dashboard',
|
130 |
+
'fs_wp_endpoint_url' => WP_FS__ADDRESS,
|
131 |
+
'request_handler_url' => admin_url(
|
132 |
+
'admin-ajax.php?' . http_build_query( array(
|
133 |
+
'module_id' => $fs->get_id(),
|
134 |
+
'action' => $fs->get_ajax_action( 'pricing_ajax_action' ),
|
135 |
+
'security' => $fs->get_ajax_security( 'pricing_ajax_action' )
|
136 |
+
) )
|
137 |
+
),
|
138 |
+
'selector' => '#fs_pricing_wrapper',
|
139 |
+
'unique_affix' => $fs->get_unique_affix(),
|
140 |
+
), $query_params );
|
141 |
+
|
142 |
+
wp_add_inline_script( 'freemius-pricing', 'Freemius.pricing.new( ' . json_encode( $pricing_config ) . ' )' );
|
143 |
+
?>
|
144 |
+
<?php else : ?>
|
145 |
+
<div id="fs_frame"></div>
|
146 |
+
<form action="" method="POST">
|
147 |
+
<input type="hidden" name="user_id"/>
|
148 |
+
<input type="hidden" name="user_email"/>
|
149 |
+
<input type="hidden" name="site_id"/>
|
150 |
+
<input type="hidden" name="public_key"/>
|
151 |
+
<input type="hidden" name="secret_key"/>
|
152 |
+
<input type="hidden" name="action" value="account"/>
|
153 |
+
</form>
|
154 |
+
|
155 |
+
<script type="text/javascript">
|
156 |
+
(function ($, undef) {
|
157 |
+
$(function () {
|
158 |
+
var
|
159 |
+
// Keep track of the i-frame height.
|
160 |
+
frame_height = 800,
|
161 |
+
base_url = '<?php echo WP_FS__ADDRESS ?>',
|
162 |
+
// Pass the parent page URL into the i-frame in a meaningful way (this URL could be
|
163 |
+
// passed via query string or hard coded into the child page, it depends on your needs).
|
164 |
+
src = base_url + '/pricing/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href),
|
165 |
+
|
166 |
+
// Append the I-frame into the DOM.
|
167 |
+
frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>')
|
168 |
+
.appendTo('#fs_frame');
|
169 |
+
|
170 |
+
FS.PostMessage.init(base_url, [frame[0]]);
|
171 |
+
|
172 |
+
FS.PostMessage.receive('height', function (data) {
|
173 |
+
var h = data.height;
|
174 |
+
if (!isNaN(h) && h > 0 && h != frame_height) {
|
175 |
+
frame_height = h;
|
176 |
+
frame.height(frame_height + 'px');
|
177 |
+
|
178 |
+
FS.PostMessage.postScroll(frame[0]);
|
179 |
+
}
|
180 |
+
});
|
181 |
+
|
182 |
+
FS.PostMessage.receive('get_dimensions', function (data) {
|
183 |
+
FS.PostMessage.post('dimensions', {
|
184 |
+
height : $(document.body).height(),
|
185 |
+
scrollTop: $(document).scrollTop()
|
186 |
+
}, frame[0]);
|
187 |
+
});
|
188 |
+
|
189 |
+
FS.PostMessage.receive('start_trial', function (data) {
|
190 |
+
openTrialConfirmationModal(data);
|
191 |
+
});
|
192 |
+
});
|
193 |
+
})(jQuery);
|
194 |
+
</script>
|
195 |
+
<?php endif ?>
|
196 |
+
</div>
|
197 |
+
<?php
|
198 |
+
if ( $has_tabs ) {
|
199 |
+
$fs->_add_tabs_after_content();
|
200 |
+
}
|
201 |
+
|
202 |
+
$params = array(
|
203 |
+
'page' => 'pricing',
|
204 |
+
'module_id' => $fs->get_id(),
|
205 |
+
'module_type' => $fs->get_module_type(),
|
206 |
+
'module_slug' => $slug,
|
207 |
+
'module_version' => $fs->get_plugin_version(),
|
208 |
+
);
|
209 |
fs_require_template( 'powered-by.php', $params );
|
common/vendor/freemius/templates/secure-https-header.php
CHANGED
@@ -30,7 +30,7 @@
|
|
30 |
) ) .
|
31 |
' - ' .
|
32 |
sprintf(
|
33 |
-
'<a class="fs-security-proof" href="%s" target="_blank">%s</a>',
|
34 |
'https://www.mcafeesecure.com/verify?host=' . WP_FS__ROOT_DOMAIN_PRODUCTION,
|
35 |
'Freemius Inc. [US]'
|
36 |
);
|
30 |
) ) .
|
31 |
' - ' .
|
32 |
sprintf(
|
33 |
+
'<a class="fs-security-proof" href="%s" target="_blank" rel="noopener">%s</a>',
|
34 |
'https://www.mcafeesecure.com/verify?host=' . WP_FS__ROOT_DOMAIN_PRODUCTION,
|
35 |
'Freemius Inc. [US]'
|
36 |
);
|
common/vendor/psr/log/Psr/Log/AbstractLogger.php
CHANGED
@@ -14,8 +14,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
14 |
/**
|
15 |
* System is unusable.
|
16 |
*
|
17 |
-
* @param string
|
18 |
-
* @param
|
19 |
*
|
20 |
* @return void
|
21 |
*/
|
@@ -30,8 +30,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
30 |
* Example: Entire website down, database unavailable, etc. This should
|
31 |
* trigger the SMS alerts and wake you up.
|
32 |
*
|
33 |
-
* @param string
|
34 |
-
* @param
|
35 |
*
|
36 |
* @return void
|
37 |
*/
|
@@ -45,8 +45,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
45 |
*
|
46 |
* Example: Application component unavailable, unexpected exception.
|
47 |
*
|
48 |
-
* @param string
|
49 |
-
* @param
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
@@ -59,8 +59,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
59 |
* Runtime errors that do not require immediate action but should typically
|
60 |
* be logged and monitored.
|
61 |
*
|
62 |
-
* @param string
|
63 |
-
* @param
|
64 |
*
|
65 |
* @return void
|
66 |
*/
|
@@ -75,8 +75,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
75 |
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
76 |
* that are not necessarily wrong.
|
77 |
*
|
78 |
-
* @param string
|
79 |
-
* @param
|
80 |
*
|
81 |
* @return void
|
82 |
*/
|
@@ -88,8 +88,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
88 |
/**
|
89 |
* Normal but significant events.
|
90 |
*
|
91 |
-
* @param string
|
92 |
-
* @param
|
93 |
*
|
94 |
* @return void
|
95 |
*/
|
@@ -103,8 +103,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
103 |
*
|
104 |
* Example: User logs in, SQL logs.
|
105 |
*
|
106 |
-
* @param string
|
107 |
-
* @param
|
108 |
*
|
109 |
* @return void
|
110 |
*/
|
@@ -116,8 +116,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
116 |
/**
|
117 |
* Detailed debug information.
|
118 |
*
|
119 |
-
* @param string
|
120 |
-
* @param
|
121 |
*
|
122 |
* @return void
|
123 |
*/
|
14 |
/**
|
15 |
* System is unusable.
|
16 |
*
|
17 |
+
* @param string $message
|
18 |
+
* @param array $context
|
19 |
*
|
20 |
* @return void
|
21 |
*/
|
30 |
* Example: Entire website down, database unavailable, etc. This should
|
31 |
* trigger the SMS alerts and wake you up.
|
32 |
*
|
33 |
+
* @param string $message
|
34 |
+
* @param array $context
|
35 |
*
|
36 |
* @return void
|
37 |
*/
|
45 |
*
|
46 |
* Example: Application component unavailable, unexpected exception.
|
47 |
*
|
48 |
+
* @param string $message
|
49 |
+
* @param array $context
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
59 |
* Runtime errors that do not require immediate action but should typically
|
60 |
* be logged and monitored.
|
61 |
*
|
62 |
+
* @param string $message
|
63 |
+
* @param array $context
|
64 |
*
|
65 |
* @return void
|
66 |
*/
|
75 |
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
76 |
* that are not necessarily wrong.
|
77 |
*
|
78 |
+
* @param string $message
|
79 |
+
* @param array $context
|
80 |
*
|
81 |
* @return void
|
82 |
*/
|
88 |
/**
|
89 |
* Normal but significant events.
|
90 |
*
|
91 |
+
* @param string $message
|
92 |
+
* @param array $context
|
93 |
*
|
94 |
* @return void
|
95 |
*/
|
103 |
*
|
104 |
* Example: User logs in, SQL logs.
|
105 |
*
|
106 |
+
* @param string $message
|
107 |
+
* @param array $context
|
108 |
*
|
109 |
* @return void
|
110 |
*/
|
116 |
/**
|
117 |
* Detailed debug information.
|
118 |
*
|
119 |
+
* @param string $message
|
120 |
+
* @param array $context
|
121 |
*
|
122 |
* @return void
|
123 |
*/
|
common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
CHANGED
@@ -10,7 +10,7 @@ trait LoggerAwareTrait
|
|
10 |
/**
|
11 |
* The logger instance.
|
12 |
*
|
13 |
-
* @var LoggerInterface
|
14 |
*/
|
15 |
protected $logger;
|
16 |
|
10 |
/**
|
11 |
* The logger instance.
|
12 |
*
|
13 |
+
* @var LoggerInterface
|
14 |
*/
|
15 |
protected $logger;
|
16 |
|
lang/the-events-calendar-ar.mo
CHANGED
Binary file
|
lang/the-events-calendar-bg_BG.mo
CHANGED
Binary file
|
lang/the-events-calendar-ca.mo
CHANGED
Binary file
|
lang/the-events-calendar-cs_CZ.mo
CHANGED
Binary file
|
lang/the-events-calendar-da_DK.mo
CHANGED
Binary file
|
lang/the-events-calendar-de_CH.mo
CHANGED
Binary file
|
lang/the-events-calendar-de_DE.mo
CHANGED
Binary file
|
lang/the-events-calendar-el.mo
CHANGED
Binary file
|
lang/the-events-calendar-en_AU.mo
CHANGED
Binary file
|
lang/the-events-calendar-en_CA.mo
CHANGED
Binary file
|
lang/the-events-calendar-en_GB.mo
CHANGED
Binary file
|
lang/the-events-calendar-en_NZ.mo
CHANGED
Binary file
|
lang/the-events-calendar-en_ZA.mo
CHANGED
Binary file
|
lang/the-events-calendar-es_CO.mo
DELETED
Binary file
|
lang/the-events-calendar-es_EC.mo
DELETED
Binary file
|
lang/the-events-calendar-es_ES.mo
CHANGED
Binary file
|
lang/the-events-calendar-es_MX.mo
CHANGED
Binary file
|
lang/the-events-calendar-es_VE.mo
CHANGED
Binary file
|
lang/the-events-calendar-eu.mo
CHANGED
Binary file
|
lang/the-events-calendar-fi.mo
CHANGED
Binary file
|
lang/the-events-calendar-fr_CA.mo
CHANGED
Binary file
|
lang/the-events-calendar-fr_FR.mo
CHANGED
Binary file
|
lang/the-events-calendar-gl_ES.mo
CHANGED
Binary file
|
lang/the-events-calendar-he_IL.mo
CHANGED
Binary file
|
lang/the-events-calendar-hr.mo
CHANGED
Binary file
|
lang/the-events-calendar-hu_HU.mo
CHANGED
Binary file
|
lang/the-events-calendar-is_IS.mo
ADDED
Binary file
|
lang/the-events-calendar-it_IT.mo
CHANGED
Binary file
|
lang/the-events-calendar-ja.mo
CHANGED
Binary file
|
lang/the-events-calendar-lt_LT.mo
CHANGED
Binary file
|
lang/the-events-calendar-nb_NO.mo
CHANGED
Binary file
|
lang/the-events-calendar-nl_NL.mo
CHANGED
Binary file
|
lang/the-events-calendar-nn_NO.mo
CHANGED
Binary file
|
lang/the-events-calendar-pl_PL.mo
CHANGED
Binary file
|
lang/the-events-calendar-pt_BR.mo
CHANGED
Binary file
|
lang/the-events-calendar-pt_PT.mo
CHANGED
Binary file
|
lang/the-events-calendar-ro_RO.mo
CHANGED
Binary file
|
lang/the-events-calendar-ru_RU.mo
CHANGED
Binary file
|
lang/the-events-calendar-sk_SK.mo
CHANGED
Binary file
|
lang/the-events-calendar-sl_SI.mo
CHANGED
Binary file
|
lang/the-events-calendar-sq.mo
CHANGED
Binary file
|
lang/the-events-calendar-sr_RS.mo
CHANGED
Binary file
|
lang/the-events-calendar-sv_SE.mo
CHANGED
Binary file
|
lang/the-events-calendar-tr_TR.mo
CHANGED
Binary file
|
lang/the-events-calendar-uk.mo
CHANGED
Binary file
|
lang/the-events-calendar-zh_CN.mo
CHANGED
Binary file
|
lang/the-events-calendar.pot
CHANGED
@@ -5,11 +5,11 @@ msgstr ""
|
|
5 |
"Project-Id-Version: The Events Calendar 5.2.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
-
"POT-Creation-Date: 2020-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"PO-Revision-Date: 2020-
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
@@ -47,7 +47,7 @@ msgstr ""
|
|
47 |
msgid "%s"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:
|
51 |
#: src/admin-views/tribe-options-upgrade.php:20
|
52 |
msgid "View Calendar"
|
53 |
msgstr ""
|
@@ -57,8 +57,8 @@ msgid "Add %s"
|
|
57 |
msgstr ""
|
58 |
|
59 |
#: src/Tribe/Admin/Bar/Default_Configurator.php:62
|
60 |
-
#: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:
|
61 |
-
#: src/Tribe/Main.php:
|
62 |
#: src/Tribe/Venue.php:112
|
63 |
msgid "Edit %s"
|
64 |
msgstr ""
|
@@ -69,7 +69,7 @@ msgstr ""
|
|
69 |
msgid "Import"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:
|
73 |
msgid "Settings"
|
74 |
msgstr ""
|
75 |
|
@@ -129,7 +129,7 @@ msgid ""
|
|
129 |
"refresh and try again."
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:
|
133 |
msgid "%s Categories"
|
134 |
msgstr ""
|
135 |
|
@@ -165,7 +165,7 @@ msgstr ""
|
|
165 |
|
166 |
#: src/Tribe/Aggregator/API/Origins.php:47
|
167 |
#: src/Tribe/Aggregator/Record/gCal.php:14
|
168 |
-
#: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:
|
169 |
#: src/admin-views/aggregator/settings.php:618
|
170 |
msgid "Google Calendar"
|
171 |
msgstr ""
|
@@ -1652,182 +1652,182 @@ msgstr ""
|
|
1652 |
msgid "Merge Duplicates"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
-
#: src/Tribe/Assets.php:
|
1656 |
msgid "Sunday"
|
1657 |
msgstr ""
|
1658 |
|
1659 |
-
#: src/Tribe/Assets.php:
|
1660 |
msgid "Monday"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
-
#: src/Tribe/Assets.php:
|
1664 |
msgid "Tuesday"
|
1665 |
msgstr ""
|
1666 |
|
1667 |
-
#: src/Tribe/Assets.php:
|
1668 |
msgid "Wednesday"
|
1669 |
msgstr ""
|
1670 |
|
1671 |
-
#: src/Tribe/Assets.php:
|
1672 |
msgid "Thursday"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#: src/Tribe/Assets.php:
|
1676 |
msgid "Friday"
|
1677 |
msgstr ""
|
1678 |
|
1679 |
-
#: src/Tribe/Assets.php:
|
1680 |
msgid "Saturday"
|
1681 |
msgstr ""
|
1682 |
|
1683 |
-
#: src/Tribe/Assets.php:
|
1684 |
msgid "Sun"
|
1685 |
msgstr ""
|
1686 |
|
1687 |
-
#: src/Tribe/Assets.php:
|
1688 |
msgid "Mon"
|
1689 |
msgstr ""
|
1690 |
|
1691 |
-
#: src/Tribe/Assets.php:
|
1692 |
msgid "Tue"
|
1693 |
msgstr ""
|
1694 |
|
1695 |
-
#: src/Tribe/Assets.php:
|
1696 |
msgid "Wed"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
-
#: src/Tribe/Assets.php:
|
1700 |
msgid "Thu"
|
1701 |
msgstr ""
|
1702 |
|
1703 |
-
#: src/Tribe/Assets.php:
|
1704 |
msgid "Fri"
|
1705 |
msgstr ""
|
1706 |
|
1707 |
-
#: src/Tribe/Assets.php:
|
1708 |
msgid "Sat"
|
1709 |
msgstr ""
|
1710 |
|
1711 |
-
#: src/Tribe/Assets.php:
|
1712 |
msgid "January"
|
1713 |
msgstr ""
|
1714 |
|
1715 |
-
#: src/Tribe/Assets.php:
|
1716 |
msgid "February"
|
1717 |
msgstr ""
|
1718 |
|
1719 |
-
#: src/Tribe/Assets.php:
|
1720 |
msgid "March"
|
1721 |
msgstr ""
|
1722 |
|
1723 |
-
#: src/Tribe/Assets.php:
|
1724 |
msgid "April"
|
1725 |
msgstr ""
|
1726 |
|
1727 |
-
#: src/Tribe/Assets.php:
|
1728 |
#: src/deprecated/Tribe__Events__Asset__Dynamic.php:48
|
1729 |
#: src/deprecated/Tribe__Events__Asset__Dynamic.php:62
|
1730 |
msgid "May"
|
1731 |
msgstr ""
|
1732 |
|
1733 |
-
#: src/Tribe/Assets.php:
|
1734 |
msgid "June"
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: src/Tribe/Assets.php:
|
1738 |
msgid "July"
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: src/Tribe/Assets.php:
|
1742 |
msgid "August"
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: src/Tribe/Assets.php:
|
1746 |
msgid "September"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#: src/Tribe/Assets.php:
|
1750 |
msgid "October"
|
1751 |
msgstr ""
|
1752 |
|
1753 |
-
#: src/Tribe/Assets.php:
|
1754 |
msgid "November"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
-
#: src/Tribe/Assets.php:
|
1758 |
msgid "December"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: src/Tribe/Assets.php:
|
1762 |
msgid "Jan"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: src/Tribe/Assets.php:
|
1766 |
msgid "Feb"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: src/Tribe/Assets.php:
|
1770 |
msgid "Mar"
|
1771 |
msgstr ""
|
1772 |
|
1773 |
-
#: src/Tribe/Assets.php:
|
1774 |
msgid "Apr"
|
1775 |
msgstr ""
|
1776 |
|
1777 |
-
#: src/Tribe/Assets.php:
|
1778 |
msgid "Jun"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: src/Tribe/Assets.php:
|
1782 |
msgid "Jul"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: src/Tribe/Assets.php:
|
1786 |
msgid "Aug"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: src/Tribe/Assets.php:
|
1790 |
msgid "Sep"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: src/Tribe/Assets.php:
|
1794 |
msgid "Oct"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#: src/Tribe/Assets.php:
|
1798 |
msgid "Nov"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
-
#: src/Tribe/Assets.php:
|
1802 |
msgid "Dec"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
-
#: src/Tribe/Assets.php:
|
1806 |
msgid ""
|
1807 |
"This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
|
1808 |
msgstr ""
|
1809 |
|
1810 |
-
#: src/Tribe/Assets.php:
|
1811 |
msgid "This event is at %%starttime%% on %%startdatewithyear%%."
|
1812 |
msgstr ""
|
1813 |
|
1814 |
-
#: src/Tribe/Assets.php:
|
1815 |
msgid "This event is all day on %%startdatewithyear%%."
|
1816 |
msgstr ""
|
1817 |
|
1818 |
-
#: src/Tribe/Assets.php:
|
1819 |
msgid ""
|
1820 |
"This event starts at %%starttime%% on %%startdatenoyear%% and ends at %"
|
1821 |
"%endtime%% on %%enddatewithyear%%"
|
1822 |
msgstr ""
|
1823 |
|
1824 |
-
#: src/Tribe/Assets.php:
|
1825 |
msgid ""
|
1826 |
"This event starts at %%starttime%% on %%startdatenoyear%% and ends on %"
|
1827 |
"%enddatewithyear%%"
|
1828 |
msgstr ""
|
1829 |
|
1830 |
-
#: src/Tribe/Assets.php:
|
1831 |
msgid ""
|
1832 |
"This event is all day starting on %%startdatenoyear%% and ending on %"
|
1833 |
"%enddatewithyear%%."
|
@@ -1999,7 +1999,7 @@ msgstr ""
|
|
1999 |
msgid "Show Featured Event Images"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
-
#: src/Tribe/Editor/Blocks/Event_Links.php:27 src/Tribe/iCal.php:
|
2003 |
msgid "iCal Export"
|
2004 |
msgstr ""
|
2005 |
|
@@ -2027,7 +2027,7 @@ msgstr ""
|
|
2027 |
#: src/Tribe/Template/Single_Event.php:121
|
2028 |
#: src/Tribe/Views/V2/Template_Bootstrap.php:136
|
2029 |
#: src/Tribe/Views/V2/Template_Bootstrap.php:176
|
2030 |
-
#: src/Tribe/Views/V2/Template_Bootstrap.php:
|
2031 |
msgid "This %s has passed."
|
2032 |
msgstr ""
|
2033 |
|
@@ -2614,7 +2614,8 @@ msgctxt ""
|
|
2614 |
msgid "Create or Find %s"
|
2615 |
msgstr ""
|
2616 |
|
2617 |
-
#: src/Tribe/List_Widget.php:32
|
|
|
2618 |
msgid "A widget that displays upcoming events."
|
2619 |
msgstr ""
|
2620 |
|
@@ -2628,201 +2629,201 @@ msgstr ""
|
|
2628 |
|
2629 |
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.2.0) #-#-#-#-#
|
2630 |
#. Plugin Name of the plugin/theme
|
2631 |
-
#: src/Tribe/Main.php:
|
2632 |
#: src/admin-views/admin-welcome-message.php:29
|
2633 |
#: src/functions/template-tags/general.php:1421 the-events-calendar.php:57
|
2634 |
msgid "The Events Calendar"
|
2635 |
msgstr ""
|
2636 |
|
2637 |
-
#: src/Tribe/Main.php:
|
2638 |
msgid "month"
|
2639 |
msgstr ""
|
2640 |
|
2641 |
-
#: src/Tribe/Main.php:
|
2642 |
msgid "list"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
-
#: src/Tribe/Main.php:
|
2646 |
msgid "upcoming"
|
2647 |
msgstr ""
|
2648 |
|
2649 |
-
#: src/Tribe/Main.php:
|
2650 |
msgid "past"
|
2651 |
msgstr ""
|
2652 |
|
2653 |
-
#: src/Tribe/Main.php:
|
2654 |
msgid "day"
|
2655 |
msgstr ""
|
2656 |
|
2657 |
-
#: src/Tribe/Main.php:
|
2658 |
msgid "today"
|
2659 |
msgstr ""
|
2660 |
|
2661 |
-
#: src/Tribe/Main.php:
|
2662 |
msgctxt "featured events slug"
|
2663 |
msgid "featured"
|
2664 |
msgstr ""
|
2665 |
|
2666 |
-
#: src/Tribe/Main.php:
|
2667 |
msgctxt "all events slug"
|
2668 |
msgid "all"
|
2669 |
msgstr ""
|
2670 |
|
2671 |
-
#: src/Tribe/Main.php:
|
2672 |
msgid "Initializing Tribe Events on %s"
|
2673 |
msgstr ""
|
2674 |
|
2675 |
-
#: src/Tribe/Main.php:
|
2676 |
msgid "Welcome to The Events Calendar!"
|
2677 |
msgstr ""
|
2678 |
|
2679 |
-
#: src/Tribe/Main.php:
|
2680 |
msgid ""
|
2681 |
"The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
|
2682 |
"show its calendar in place of the page."
|
2683 |
msgstr ""
|
2684 |
|
2685 |
-
#: src/Tribe/Main.php:
|
2686 |
msgid "Ask the site administrator to edit the %s slug"
|
2687 |
msgstr ""
|
2688 |
|
2689 |
-
#: src/Tribe/Main.php:
|
2690 |
msgid "Edit the %s slug"
|
2691 |
msgstr ""
|
2692 |
|
2693 |
-
#: src/Tribe/Main.php:
|
2694 |
msgid " ask the site administrator to set a different Events URL slug."
|
2695 |
msgstr ""
|
2696 |
|
2697 |
-
#: src/Tribe/Main.php:
|
2698 |
msgid "edit Events settings."
|
2699 |
msgstr ""
|
2700 |
|
2701 |
-
#: src/Tribe/Main.php:
|
2702 |
msgid "%1$s or %2$s"
|
2703 |
msgstr ""
|
2704 |
|
2705 |
-
#: src/Tribe/Main.php:
|
2706 |
msgid "Upgrade your calendar views"
|
2707 |
msgstr ""
|
2708 |
|
2709 |
-
#: src/Tribe/Main.php:
|
2710 |
msgid "Upgrade"
|
2711 |
msgstr ""
|
2712 |
|
2713 |
-
#: src/Tribe/Main.php:
|
2714 |
msgid "New User Primer"
|
2715 |
msgstr ""
|
2716 |
|
2717 |
-
#: src/Tribe/Main.php:
|
2718 |
msgid ""
|
2719 |
"We are committed to helping make your calendar spectacular and have a wealth "
|
2720 |
"of resources available, including a handy %s to get your calendar up and "
|
2721 |
"running."
|
2722 |
msgstr ""
|
2723 |
|
2724 |
-
#: src/Tribe/Main.php:
|
2725 |
msgid "Support for The Events Calendar"
|
2726 |
msgstr ""
|
2727 |
|
2728 |
-
#: src/Tribe/Main.php:
|
2729 |
msgid ""
|
2730 |
"%s: A thorough walkthrough of The Events Calendar and the settings that are "
|
2731 |
"available to you."
|
2732 |
msgstr ""
|
2733 |
|
2734 |
-
#: src/Tribe/Main.php:
|
2735 |
msgid "Settings overview"
|
2736 |
msgstr ""
|
2737 |
|
2738 |
-
#: src/Tribe/Main.php:
|
2739 |
msgid ""
|
2740 |
"%s: A complete look at the features you can expect to see right out of the "
|
2741 |
"box as well as how to use them."
|
2742 |
msgstr ""
|
2743 |
|
2744 |
-
#: src/Tribe/Main.php:
|
2745 |
msgid "Features overview"
|
2746 |
msgstr ""
|
2747 |
|
2748 |
-
#: src/Tribe/Main.php:
|
2749 |
msgid ""
|
2750 |
"%s: Our most comprehensive outline for customizing the calendar to suit your "
|
2751 |
"needs, including custom layouts and styles."
|
2752 |
msgstr ""
|
2753 |
|
2754 |
-
#: src/Tribe/Main.php:
|
2755 |
msgid "Themer's Guide"
|
2756 |
msgstr ""
|
2757 |
|
2758 |
-
#: src/Tribe/Main.php:
|
2759 |
msgid ""
|
2760 |
"%s: An overview of the default templates and styles that are included in the "
|
2761 |
"plugin, as well as how to change them."
|
2762 |
msgstr ""
|
2763 |
|
2764 |
-
#: src/Tribe/Main.php:
|
2765 |
msgid "Using stylesheets and page templates"
|
2766 |
msgstr ""
|
2767 |
|
2768 |
-
#: src/Tribe/Main.php:
|
2769 |
msgid ""
|
2770 |
"%s: Do you see an issue with your calendar? Go here first to find where it’s "
|
2771 |
"coming from and how to fix it."
|
2772 |
msgstr ""
|
2773 |
|
2774 |
-
#: src/Tribe/Main.php:
|
2775 |
msgid "Troubleshooting common problems"
|
2776 |
msgstr ""
|
2777 |
|
2778 |
-
#: src/Tribe/Main.php:
|
2779 |
msgid ""
|
2780 |
"%s: Code and guides for customizing your calendar in useful and interesting "
|
2781 |
"ways."
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: src/Tribe/Main.php:
|
2785 |
msgid "Customizing the Events plugins"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: src/Tribe/Main.php:
|
2789 |
msgid "Events Tickets"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: src/Tribe/Main.php:
|
2793 |
msgid ""
|
2794 |
"If you have tried the above steps and are still having trouble, you can post "
|
2795 |
"a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
|
2796 |
"monitors these forums once a week and would be happy to assist you there. "
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: src/Tribe/Main.php:
|
2800 |
msgid "premium support on our website"
|
2801 |
msgstr ""
|
2802 |
|
2803 |
-
#: src/Tribe/Main.php:
|
2804 |
msgid ""
|
2805 |
"<strong>Looking for more immediate support?</strong> We offer %s with the "
|
2806 |
"purchase of any of our premium plugins. Pick up a license and you can post "
|
2807 |
"there directly and expect a response within 24-48 hours during weekdays"
|
2808 |
msgstr ""
|
2809 |
|
2810 |
-
#: src/Tribe/Main.php:
|
2811 |
msgid "open-source forum on WordPress.org"
|
2812 |
msgstr ""
|
2813 |
|
2814 |
-
#: src/Tribe/Main.php:
|
2815 |
msgid ""
|
2816 |
"If you have tried the above steps and are still having trouble, you can post "
|
2817 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
2818 |
"and would be happy to assist you there."
|
2819 |
msgstr ""
|
2820 |
|
2821 |
-
#: src/Tribe/Main.php:
|
2822 |
msgid "Events Calendar PRO"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
-
#: src/Tribe/Main.php:
|
2826 |
msgid ""
|
2827 |
"<strong>Looking for more immediate support?</strong> We offer %1$s with the "
|
2828 |
"purchase of any of our premium plugins (like %2$s). Pick up a license and "
|
@@ -2830,427 +2831,427 @@ msgid ""
|
|
2830 |
"weekdays."
|
2831 |
msgstr ""
|
2832 |
|
2833 |
-
#: src/Tribe/Main.php:
|
2834 |
msgid "post a thread"
|
2835 |
msgstr ""
|
2836 |
|
2837 |
-
#: src/Tribe/Main.php:
|
2838 |
msgid ""
|
2839 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
2840 |
"premium support forums. Our support team monitors the forums and will "
|
2841 |
"respond to your thread within 24-48 hours (during the week)."
|
2842 |
msgstr ""
|
2843 |
|
2844 |
-
#: src/Tribe/Main.php:
|
2845 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
|
2846 |
#: src/functions/template-tags/general.php:130
|
2847 |
msgid "Events"
|
2848 |
msgstr ""
|
2849 |
|
2850 |
-
#: src/Tribe/Main.php:
|
2851 |
#: src/admin-views/aggregator/tabs/import-form.php:239
|
2852 |
#: src/functions/template-tags/general.php:74
|
2853 |
msgid "Event"
|
2854 |
msgstr ""
|
2855 |
|
2856 |
-
#: src/Tribe/Main.php:
|
2857 |
msgid ""
|
2858 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
2859 |
"your WordPress install."
|
2860 |
msgstr ""
|
2861 |
|
2862 |
-
#: src/Tribe/Main.php:
|
2863 |
msgid ""
|
2864 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
2865 |
"about moving you to a newer version of PHP."
|
2866 |
msgstr ""
|
2867 |
|
2868 |
-
#: src/Tribe/Main.php:
|
2869 |
msgid ""
|
2870 |
"To continue using The Events Calendar, please install the latest version of"
|
2871 |
msgstr ""
|
2872 |
|
2873 |
-
#: src/Tribe/Main.php:
|
2874 |
msgid "Event Tickets"
|
2875 |
msgstr ""
|
2876 |
|
2877 |
-
#: src/Tribe/Main.php:
|
2878 |
msgid ""
|
2879 |
"It appears as if the tribe-common libraries cannot be found! The directory "
|
2880 |
"should be in the \"common/\" directory in the events calendar plugin."
|
2881 |
msgstr ""
|
2882 |
|
2883 |
-
#: src/Tribe/Main.php:
|
2884 |
msgid "category"
|
2885 |
msgstr ""
|
2886 |
|
2887 |
-
#: src/Tribe/Main.php:
|
2888 |
msgid "tag"
|
2889 |
msgstr ""
|
2890 |
|
2891 |
-
#: src/Tribe/Main.php:
|
2892 |
msgid "Add New"
|
2893 |
msgstr ""
|
2894 |
|
2895 |
-
#: src/Tribe/Main.php:
|
2896 |
#: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
|
2897 |
msgid "Add New %s"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: src/Tribe/Main.php:
|
2901 |
msgid "New %s"
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#: src/Tribe/Main.php:
|
2905 |
#: src/views/month/single-day.php:26
|
2906 |
msgid "View %s"
|
2907 |
msgstr ""
|
2908 |
|
2909 |
-
#: src/Tribe/Main.php:
|
2910 |
msgid "Search %s"
|
2911 |
msgstr ""
|
2912 |
|
2913 |
-
#: src/Tribe/Main.php:
|
2914 |
msgid "No %s found"
|
2915 |
msgstr ""
|
2916 |
|
2917 |
-
#: src/Tribe/Main.php:
|
2918 |
msgid "No %s found in Trash"
|
2919 |
msgstr ""
|
2920 |
|
2921 |
-
#: src/Tribe/Main.php:
|
2922 |
#: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
|
2923 |
msgid "%s published."
|
2924 |
msgstr ""
|
2925 |
|
2926 |
-
#: src/Tribe/Main.php:
|
2927 |
msgid "%s published privately."
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: src/Tribe/Main.php:
|
2931 |
msgid "%s reverted to draft."
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: src/Tribe/Main.php:
|
2935 |
msgid "%s scheduled."
|
2936 |
msgstr ""
|
2937 |
|
2938 |
-
#: src/Tribe/Main.php:
|
2939 |
-
#: src/Tribe/Main.php:
|
2940 |
#: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
|
2941 |
msgid "%s updated."
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: src/Tribe/Main.php:
|
2945 |
msgid "%s Category"
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#: src/Tribe/Main.php:
|
2949 |
msgid "Search %s Categories"
|
2950 |
msgstr ""
|
2951 |
|
2952 |
-
#: src/Tribe/Main.php:
|
2953 |
msgid "All %s Categories"
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#: src/Tribe/Main.php:
|
2957 |
msgid "Parent %s Category"
|
2958 |
msgstr ""
|
2959 |
|
2960 |
-
#: src/Tribe/Main.php:
|
2961 |
msgid "Parent %s Category:"
|
2962 |
msgstr ""
|
2963 |
|
2964 |
-
#: src/Tribe/Main.php:
|
2965 |
msgid "Edit %s Category"
|
2966 |
msgstr ""
|
2967 |
|
2968 |
-
#: src/Tribe/Main.php:
|
2969 |
msgid "Update %s Category"
|
2970 |
msgstr ""
|
2971 |
|
2972 |
-
#: src/Tribe/Main.php:
|
2973 |
msgid "Add New %s Category"
|
2974 |
msgstr ""
|
2975 |
|
2976 |
-
#: src/Tribe/Main.php:
|
2977 |
msgid "New %s Category Name"
|
2978 |
msgstr ""
|
2979 |
|
2980 |
-
#: src/Tribe/Main.php:
|
2981 |
msgid "%1$s updated. %2$sView %1$s%3$s"
|
2982 |
msgstr ""
|
2983 |
|
2984 |
-
#: src/Tribe/Main.php:
|
2985 |
msgid "Custom field updated."
|
2986 |
msgstr ""
|
2987 |
|
2988 |
-
#: src/Tribe/Main.php:
|
2989 |
msgid "Custom field deleted."
|
2990 |
msgstr ""
|
2991 |
|
2992 |
#. translators: %s: date and time of the revision
|
2993 |
-
#: src/Tribe/Main.php:
|
2994 |
msgid "%1$s restored to revision from %2$s"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
-
#: src/Tribe/Main.php:
|
2998 |
msgid "%1$s published. %2$sView %3$s"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
-
#: src/Tribe/Main.php:
|
3002 |
msgid "%s saved."
|
3003 |
msgstr ""
|
3004 |
|
3005 |
-
#: src/Tribe/Main.php:
|
3006 |
msgid "%1$s submitted. %2$sPreview %3$s"
|
3007 |
msgstr ""
|
3008 |
|
3009 |
-
#: src/Tribe/Main.php:
|
3010 |
msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
#. translators: Publish box date format, see http://php.net/date
|
3014 |
-
#: src/Tribe/Main.php:
|
3015 |
msgid "M j, Y @ G:i"
|
3016 |
msgstr ""
|
3017 |
|
3018 |
-
#: src/Tribe/Main.php:
|
3019 |
msgid "%1$s draft updated. %2$sPreview %3$s"
|
3020 |
msgstr ""
|
3021 |
|
3022 |
-
#: src/Tribe/Main.php:
|
3023 |
msgid "%s submitted."
|
3024 |
msgstr ""
|
3025 |
|
3026 |
-
#: src/Tribe/Main.php:
|
3027 |
msgid "%1$s scheduled for: %2$s."
|
3028 |
msgstr ""
|
3029 |
|
3030 |
-
#: src/Tribe/Main.php:
|
3031 |
msgid "%s draft updated."
|
3032 |
msgstr ""
|
3033 |
|
3034 |
#. translators: %s: date and time of the revision
|
3035 |
-
#: src/Tribe/Main.php:
|
3036 |
msgid "%s restored to revision from %s"
|
3037 |
msgstr ""
|
3038 |
|
3039 |
-
#: src/Tribe/Main.php:
|
3040 |
msgid ""
|
3041 |
"Without a defined location your event will not display a %sGoogle Rich "
|
3042 |
"Snippet%s on the search results."
|
3043 |
msgstr ""
|
3044 |
|
3045 |
-
#: src/Tribe/Main.php:
|
3046 |
msgid "page"
|
3047 |
msgstr ""
|
3048 |
|
3049 |
-
#: src/Tribe/Main.php:
|
3050 |
msgid "event"
|
3051 |
msgstr ""
|
3052 |
|
3053 |
-
#: src/Tribe/Main.php:
|
3054 |
msgid "events"
|
3055 |
msgstr ""
|
3056 |
|
3057 |
-
#: src/Tribe/Main.php:
|
3058 |
msgid "all"
|
3059 |
msgstr ""
|
3060 |
|
3061 |
-
#: src/Tribe/Main.php:
|
3062 |
msgid " (View Full %1$s Description Here: %2$s)"
|
3063 |
msgstr ""
|
3064 |
|
3065 |
-
#: src/Tribe/Main.php:
|
3066 |
#: src/functions/template-tags/day.php:157
|
3067 |
#: src/functions/template-tags/day.php:178
|
3068 |
msgid "Date out of range."
|
3069 |
msgstr ""
|
3070 |
|
3071 |
-
#: src/Tribe/Main.php:
|
3072 |
msgid "%s Options"
|
3073 |
msgstr ""
|
3074 |
|
3075 |
-
#: src/Tribe/Main.php:
|
3076 |
msgid "%s Information"
|
3077 |
msgstr ""
|
3078 |
|
3079 |
-
#: src/Tribe/Main.php:
|
3080 |
msgid "Support"
|
3081 |
msgstr ""
|
3082 |
|
3083 |
-
#: src/Tribe/Main.php:
|
3084 |
msgid "View All Add-Ons"
|
3085 |
msgstr ""
|
3086 |
|
3087 |
-
#: src/Tribe/Main.php:
|
3088 |
msgid "News from Modern Tribe"
|
3089 |
msgstr ""
|
3090 |
|
3091 |
-
#: src/Tribe/Main.php:
|
3092 |
msgid "Additional Functionality"
|
3093 |
msgstr ""
|
3094 |
|
3095 |
-
#: src/Tribe/Main.php:
|
3096 |
msgid ""
|
3097 |
"Looking for additional functionality including recurring events, ticket "
|
3098 |
"sales, publicly submitted events, new views and more?"
|
3099 |
msgstr ""
|
3100 |
|
3101 |
-
#: src/Tribe/Main.php:
|
3102 |
msgid "Check out the %savailable add-ons%s."
|
3103 |
msgstr ""
|
3104 |
|
3105 |
-
#: src/Tribe/Main.php:
|
3106 |
msgid "Calendar"
|
3107 |
msgstr ""
|
3108 |
|
3109 |
-
#: src/Tribe/Main.php:
|
3110 |
msgid "List"
|
3111 |
msgstr ""
|
3112 |
|
3113 |
-
#: src/Tribe/Main.php:
|
3114 |
msgid "Month"
|
3115 |
msgstr ""
|
3116 |
|
3117 |
-
#: src/Tribe/Main.php:
|
3118 |
#: src/admin-views/aggregator/fields/schedule.php:61
|
3119 |
msgid "Day"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: src/Tribe/Main.php:
|
3123 |
msgid "Search for %s by Keyword."
|
3124 |
msgstr ""
|
3125 |
|
3126 |
-
#: src/Tribe/Main.php:
|
3127 |
#: src/views/v2/components/events-bar/search-button.php:24
|
3128 |
msgid "Search"
|
3129 |
msgstr ""
|
3130 |
|
3131 |
-
#: src/Tribe/Main.php:
|
3132 |
msgid "Keyword"
|
3133 |
msgstr ""
|
3134 |
|
3135 |
-
#: src/Tribe/Main.php:
|
3136 |
msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
-
#: src/Tribe/Main.php:
|
3140 |
msgid "1 digit month slash 1 digit day slash 4 digit year"
|
3141 |
msgstr ""
|
3142 |
|
3143 |
-
#: src/Tribe/Main.php:
|
3144 |
msgid "2 digit month slash 2 digit day slash 4 digit year"
|
3145 |
msgstr ""
|
3146 |
|
3147 |
-
#: src/Tribe/Main.php:
|
3148 |
msgid "1 digit day slash 1 digit month slash 4 digit year"
|
3149 |
msgstr ""
|
3150 |
|
3151 |
-
#: src/Tribe/Main.php:
|
3152 |
msgid "2 digit day slash 2 digit month slash 4 digit year"
|
3153 |
msgstr ""
|
3154 |
|
3155 |
-
#: src/Tribe/Main.php:
|
3156 |
msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
|
3157 |
msgstr ""
|
3158 |
|
3159 |
-
#: src/Tribe/Main.php:
|
3160 |
msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
|
3161 |
msgstr ""
|
3162 |
|
3163 |
-
#: src/Tribe/Main.php:
|
3164 |
msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
|
3165 |
msgstr ""
|
3166 |
|
3167 |
-
#: src/Tribe/Main.php:
|
3168 |
msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
|
3169 |
msgstr ""
|
3170 |
|
3171 |
-
#: src/Tribe/Main.php:
|
3172 |
msgid "4 digit year dot 2 digit month dot 2 digit day"
|
3173 |
msgstr ""
|
3174 |
|
3175 |
-
#: src/Tribe/Main.php:
|
3176 |
msgid "2 digit month dot 2 digit day dot 4 digit year"
|
3177 |
msgstr ""
|
3178 |
|
3179 |
-
#: src/Tribe/Main.php:
|
3180 |
msgid "2 digit day dot 2 digit month dot 4 digit year"
|
3181 |
msgstr ""
|
3182 |
|
3183 |
-
#: src/Tribe/Main.php:
|
3184 |
msgid "4 digit year hyphen 2 digit month"
|
3185 |
msgstr ""
|
3186 |
|
3187 |
-
#: src/Tribe/Main.php:
|
3188 |
msgid "1 digit month slash 4 digit year"
|
3189 |
msgstr ""
|
3190 |
|
3191 |
-
#: src/Tribe/Main.php:
|
3192 |
msgid "2 digit month slash 4 digit year"
|
3193 |
msgstr ""
|
3194 |
|
3195 |
-
#: src/Tribe/Main.php:
|
3196 |
msgid "1 digit month hyphen 4 digit year"
|
3197 |
msgstr ""
|
3198 |
|
3199 |
-
#: src/Tribe/Main.php:
|
3200 |
msgid "2 digit month hyphen 4 digit year"
|
3201 |
msgstr ""
|
3202 |
|
3203 |
-
#: src/Tribe/Main.php:
|
3204 |
msgid "4 digit year dot 2 digit month"
|
3205 |
msgstr ""
|
3206 |
|
3207 |
-
#: src/Tribe/Main.php:
|
3208 |
msgid "2 digit month dot 4 digit year"
|
3209 |
msgstr ""
|
3210 |
|
3211 |
-
#: src/Tribe/Main.php:
|
3212 |
#: src/admin-views/aggregator/origins/refine.php:7
|
3213 |
msgid "Date"
|
3214 |
msgstr ""
|
3215 |
|
3216 |
-
#: src/Tribe/Main.php:
|
3217 |
msgid "Search for %s by Date. Please use the format %s."
|
3218 |
msgstr ""
|
3219 |
|
3220 |
-
#: src/Tribe/Main.php:
|
3221 |
msgid "%s In"
|
3222 |
msgstr ""
|
3223 |
|
3224 |
-
#: src/Tribe/Main.php:
|
3225 |
msgid "Search for %s by month. Please use the format %s."
|
3226 |
msgstr ""
|
3227 |
|
3228 |
-
#: src/Tribe/Main.php:
|
3229 |
msgid "%s From"
|
3230 |
msgstr ""
|
3231 |
|
3232 |
-
#: src/Tribe/Main.php:
|
3233 |
msgid "Day Of"
|
3234 |
msgstr ""
|
3235 |
|
3236 |
-
#: src/Tribe/Main.php:
|
3237 |
msgid "Once Every 30 Mins"
|
3238 |
msgstr ""
|
3239 |
|
3240 |
-
#: src/Tribe/Main.php:
|
3241 |
msgid ""
|
3242 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
3243 |
"Events Calendar add-ons. Please %supdate now.%s"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#: src/Tribe/Main.php:
|
3247 |
msgid ""
|
3248 |
"The following plugins are out of date: %1$s. All add-ons contain "
|
3249 |
"dependencies on The Events Calendar and will not function properly unless "
|
3250 |
"paired with the right version. %2$sLearn More%3$s."
|
3251 |
msgstr ""
|
3252 |
|
3253 |
-
#: src/Tribe/Main.php:
|
3254 |
msgid "Use Saved %s:"
|
3255 |
msgstr ""
|
3256 |
|
@@ -4753,7 +4754,7 @@ msgctxt "day_view"
|
|
4753 |
msgid "%1$s for %2$s"
|
4754 |
msgstr ""
|
4755 |
|
4756 |
-
#: src/Tribe/Views/V2/View.php:
|
4757 |
#: src/views/v2/day/event/date/featured.php:28
|
4758 |
#: src/views/v2/day/event/date/featured.php:32
|
4759 |
#: src/views/v2/latest-past/event/date/featured.php:27
|
@@ -4773,6 +4774,9 @@ msgstr ""
|
|
4773 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:27
|
4774 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:28
|
4775 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:32
|
|
|
|
|
|
|
4776 |
msgid "Featured"
|
4777 |
msgstr ""
|
4778 |
|
@@ -4802,38 +4806,42 @@ msgid "Jump to the %1$snext upcoming event(s)%2$s."
|
|
4802 |
msgstr ""
|
4803 |
|
4804 |
#. translators: %s: Events (plural).
|
4805 |
-
#: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:
|
4806 |
msgid "Export %s"
|
4807 |
msgstr ""
|
4808 |
|
4809 |
-
#: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:
|
4810 |
msgid ""
|
4811 |
"Use this to share calendar data with Google Calendar, Apple iCal and other "
|
4812 |
"compatible apps"
|
4813 |
msgstr ""
|
4814 |
|
4815 |
-
#: src/Tribe/
|
|
|
|
|
|
|
|
|
4816 |
msgctxt "feed link"
|
4817 |
msgid "»"
|
4818 |
msgstr ""
|
4819 |
|
4820 |
-
#: src/Tribe/iCal.php:
|
4821 |
msgid "%1$s %2$s iCal Feed"
|
4822 |
msgstr ""
|
4823 |
|
4824 |
-
#: src/Tribe/iCal.php:
|
4825 |
msgid "Add to Google Calendar"
|
4826 |
msgstr ""
|
4827 |
|
4828 |
-
#: src/Tribe/iCal.php:
|
4829 |
msgid "Download .ics file"
|
4830 |
msgstr ""
|
4831 |
|
4832 |
-
#: src/Tribe/iCal.php:
|
4833 |
msgid "Export Events"
|
4834 |
msgstr ""
|
4835 |
|
4836 |
-
#: src/Tribe/iCal.php:
|
4837 |
msgctxt "iCal feed description"
|
4838 |
msgid "Events for %s"
|
4839 |
msgstr ""
|
@@ -7543,7 +7551,7 @@ msgstr ""
|
|
7543 |
msgid "Previous day"
|
7544 |
msgstr ""
|
7545 |
|
7546 |
-
#: src/views/v2/day.php:
|
7547 |
msgid "Loading..."
|
7548 |
msgstr ""
|
7549 |
|
@@ -7622,6 +7630,16 @@ msgstr ""
|
|
7622 |
msgid "Previous month"
|
7623 |
msgstr ""
|
7624 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7625 |
#: src/views/widgets/list-widget.php:112
|
7626 |
msgid "View All %s"
|
7627 |
msgstr ""
|
5 |
"Project-Id-Version: The Events Calendar 5.2.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
+
"POT-Creation-Date: 2020-10-20 15:45:50+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2020-10-20 15:45\n"
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
47 |
msgid "%s"
|
48 |
msgstr ""
|
49 |
|
50 |
+
#: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4178
|
51 |
#: src/admin-views/tribe-options-upgrade.php:20
|
52 |
msgid "View Calendar"
|
53 |
msgstr ""
|
57 |
msgstr ""
|
58 |
|
59 |
#: src/Tribe/Admin/Bar/Default_Configurator.php:62
|
60 |
+
#: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2046
|
61 |
+
#: src/Tribe/Main.php:5274 src/Tribe/Main.php:5321 src/Tribe/Organizer.php:93
|
62 |
#: src/Tribe/Venue.php:112
|
63 |
msgid "Edit %s"
|
64 |
msgstr ""
|
69 |
msgid "Import"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4226
|
73 |
msgid "Settings"
|
74 |
msgstr ""
|
75 |
|
129 |
"refresh and try again."
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2065
|
133 |
msgid "%s Categories"
|
134 |
msgstr ""
|
135 |
|
165 |
|
166 |
#: src/Tribe/Aggregator/API/Origins.php:47
|
167 |
#: src/Tribe/Aggregator/Record/gCal.php:14
|
168 |
+
#: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:131
|
169 |
#: src/admin-views/aggregator/settings.php:618
|
170 |
msgid "Google Calendar"
|
171 |
msgstr ""
|
1652 |
msgid "Merge Duplicates"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: src/Tribe/Assets.php:707 src/deprecated/Tribe__Events__Asset__Dynamic.php:26
|
1656 |
msgid "Sunday"
|
1657 |
msgstr ""
|
1658 |
|
1659 |
+
#: src/Tribe/Assets.php:708 src/deprecated/Tribe__Events__Asset__Dynamic.php:27
|
1660 |
msgid "Monday"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: src/Tribe/Assets.php:709 src/deprecated/Tribe__Events__Asset__Dynamic.php:28
|
1664 |
msgid "Tuesday"
|
1665 |
msgstr ""
|
1666 |
|
1667 |
+
#: src/Tribe/Assets.php:710 src/deprecated/Tribe__Events__Asset__Dynamic.php:29
|
1668 |
msgid "Wednesday"
|
1669 |
msgstr ""
|
1670 |
|
1671 |
+
#: src/Tribe/Assets.php:711 src/deprecated/Tribe__Events__Asset__Dynamic.php:30
|
1672 |
msgid "Thursday"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
+
#: src/Tribe/Assets.php:712 src/deprecated/Tribe__Events__Asset__Dynamic.php:31
|
1676 |
msgid "Friday"
|
1677 |
msgstr ""
|
1678 |
|
1679 |
+
#: src/Tribe/Assets.php:713 src/deprecated/Tribe__Events__Asset__Dynamic.php:32
|
1680 |
msgid "Saturday"
|
1681 |
msgstr ""
|
1682 |
|
1683 |
+
#: src/Tribe/Assets.php:716 src/deprecated/Tribe__Events__Asset__Dynamic.php:35
|
1684 |
msgid "Sun"
|
1685 |
msgstr ""
|
1686 |
|
1687 |
+
#: src/Tribe/Assets.php:717 src/deprecated/Tribe__Events__Asset__Dynamic.php:36
|
1688 |
msgid "Mon"
|
1689 |
msgstr ""
|
1690 |
|
1691 |
+
#: src/Tribe/Assets.php:718 src/deprecated/Tribe__Events__Asset__Dynamic.php:37
|
1692 |
msgid "Tue"
|
1693 |
msgstr ""
|
1694 |
|
1695 |
+
#: src/Tribe/Assets.php:719 src/deprecated/Tribe__Events__Asset__Dynamic.php:38
|
1696 |
msgid "Wed"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
+
#: src/Tribe/Assets.php:720 src/deprecated/Tribe__Events__Asset__Dynamic.php:39
|
1700 |
msgid "Thu"
|
1701 |
msgstr ""
|
1702 |
|
1703 |
+
#: src/Tribe/Assets.php:721 src/deprecated/Tribe__Events__Asset__Dynamic.php:40
|
1704 |
msgid "Fri"
|
1705 |
msgstr ""
|
1706 |
|
1707 |
+
#: src/Tribe/Assets.php:722 src/deprecated/Tribe__Events__Asset__Dynamic.php:41
|
1708 |
msgid "Sat"
|
1709 |
msgstr ""
|
1710 |
|
1711 |
+
#: src/Tribe/Assets.php:725 src/deprecated/Tribe__Events__Asset__Dynamic.php:44
|
1712 |
msgid "January"
|
1713 |
msgstr ""
|
1714 |
|
1715 |
+
#: src/Tribe/Assets.php:726 src/deprecated/Tribe__Events__Asset__Dynamic.php:45
|
1716 |
msgid "February"
|
1717 |
msgstr ""
|
1718 |
|
1719 |
+
#: src/Tribe/Assets.php:727 src/deprecated/Tribe__Events__Asset__Dynamic.php:46
|
1720 |
msgid "March"
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: src/Tribe/Assets.php:728 src/deprecated/Tribe__Events__Asset__Dynamic.php:47
|
1724 |
msgid "April"
|
1725 |
msgstr ""
|
1726 |
|
1727 |
+
#: src/Tribe/Assets.php:729 src/Tribe/Assets.php:743
|
1728 |
#: src/deprecated/Tribe__Events__Asset__Dynamic.php:48
|
1729 |
#: src/deprecated/Tribe__Events__Asset__Dynamic.php:62
|
1730 |
msgid "May"
|
1731 |
msgstr ""
|
1732 |
|
1733 |
+
#: src/Tribe/Assets.php:730 src/deprecated/Tribe__Events__Asset__Dynamic.php:49
|
1734 |
msgid "June"
|
1735 |
msgstr ""
|
1736 |
|
1737 |
+
#: src/Tribe/Assets.php:731 src/deprecated/Tribe__Events__Asset__Dynamic.php:50
|
1738 |
msgid "July"
|
1739 |
msgstr ""
|
1740 |
|
1741 |
+
#: src/Tribe/Assets.php:732 src/deprecated/Tribe__Events__Asset__Dynamic.php:51
|
1742 |
msgid "August"
|
1743 |
msgstr ""
|
1744 |
|
1745 |
+
#: src/Tribe/Assets.php:733 src/deprecated/Tribe__Events__Asset__Dynamic.php:52
|
1746 |
msgid "September"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
+
#: src/Tribe/Assets.php:734 src/deprecated/Tribe__Events__Asset__Dynamic.php:53
|
1750 |
msgid "October"
|
1751 |
msgstr ""
|
1752 |
|
1753 |
+
#: src/Tribe/Assets.php:735 src/deprecated/Tribe__Events__Asset__Dynamic.php:54
|
1754 |
msgid "November"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
+
#: src/Tribe/Assets.php:736 src/deprecated/Tribe__Events__Asset__Dynamic.php:55
|
1758 |
msgid "December"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
+
#: src/Tribe/Assets.php:739 src/deprecated/Tribe__Events__Asset__Dynamic.php:58
|
1762 |
msgid "Jan"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
+
#: src/Tribe/Assets.php:740 src/deprecated/Tribe__Events__Asset__Dynamic.php:59
|
1766 |
msgid "Feb"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
+
#: src/Tribe/Assets.php:741 src/deprecated/Tribe__Events__Asset__Dynamic.php:60
|
1770 |
msgid "Mar"
|
1771 |
msgstr ""
|
1772 |
|
1773 |
+
#: src/Tribe/Assets.php:742 src/deprecated/Tribe__Events__Asset__Dynamic.php:61
|
1774 |
msgid "Apr"
|
1775 |
msgstr ""
|
1776 |
|
1777 |
+
#: src/Tribe/Assets.php:744 src/deprecated/Tribe__Events__Asset__Dynamic.php:63
|
1778 |
msgid "Jun"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
+
#: src/Tribe/Assets.php:745 src/deprecated/Tribe__Events__Asset__Dynamic.php:64
|
1782 |
msgid "Jul"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
+
#: src/Tribe/Assets.php:746 src/deprecated/Tribe__Events__Asset__Dynamic.php:65
|
1786 |
msgid "Aug"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
+
#: src/Tribe/Assets.php:747 src/deprecated/Tribe__Events__Asset__Dynamic.php:66
|
1790 |
msgid "Sep"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
+
#: src/Tribe/Assets.php:748 src/deprecated/Tribe__Events__Asset__Dynamic.php:67
|
1794 |
msgid "Oct"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
+
#: src/Tribe/Assets.php:749 src/deprecated/Tribe__Events__Asset__Dynamic.php:68
|
1798 |
msgid "Nov"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
+
#: src/Tribe/Assets.php:750 src/deprecated/Tribe__Events__Asset__Dynamic.php:69
|
1802 |
msgid "Dec"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
+
#: src/Tribe/Assets.php:753 src/deprecated/Tribe__Events__Asset__Dynamic.php:72
|
1806 |
msgid ""
|
1807 |
"This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
|
1808 |
msgstr ""
|
1809 |
|
1810 |
+
#: src/Tribe/Assets.php:754 src/deprecated/Tribe__Events__Asset__Dynamic.php:73
|
1811 |
msgid "This event is at %%starttime%% on %%startdatewithyear%%."
|
1812 |
msgstr ""
|
1813 |
|
1814 |
+
#: src/Tribe/Assets.php:755 src/deprecated/Tribe__Events__Asset__Dynamic.php:74
|
1815 |
msgid "This event is all day on %%startdatewithyear%%."
|
1816 |
msgstr ""
|
1817 |
|
1818 |
+
#: src/Tribe/Assets.php:756 src/deprecated/Tribe__Events__Asset__Dynamic.php:75
|
1819 |
msgid ""
|
1820 |
"This event starts at %%starttime%% on %%startdatenoyear%% and ends at %"
|
1821 |
"%endtime%% on %%enddatewithyear%%"
|
1822 |
msgstr ""
|
1823 |
|
1824 |
+
#: src/Tribe/Assets.php:757 src/deprecated/Tribe__Events__Asset__Dynamic.php:76
|
1825 |
msgid ""
|
1826 |
"This event starts at %%starttime%% on %%startdatenoyear%% and ends on %"
|
1827 |
"%enddatewithyear%%"
|
1828 |
msgstr ""
|
1829 |
|
1830 |
+
#: src/Tribe/Assets.php:758 src/deprecated/Tribe__Events__Asset__Dynamic.php:77
|
1831 |
msgid ""
|
1832 |
"This event is all day starting on %%startdatenoyear%% and ending on %"
|
1833 |
"%enddatewithyear%%."
|
1999 |
msgid "Show Featured Event Images"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
+
#: src/Tribe/Editor/Blocks/Event_Links.php:27 src/Tribe/iCal.php:132
|
2003 |
msgid "iCal Export"
|
2004 |
msgstr ""
|
2005 |
|
2027 |
#: src/Tribe/Template/Single_Event.php:121
|
2028 |
#: src/Tribe/Views/V2/Template_Bootstrap.php:136
|
2029 |
#: src/Tribe/Views/V2/Template_Bootstrap.php:176
|
2030 |
+
#: src/Tribe/Views/V2/Template_Bootstrap.php:485
|
2031 |
msgid "This %s has passed."
|
2032 |
msgstr ""
|
2033 |
|
2614 |
msgid "Create or Find %s"
|
2615 |
msgstr ""
|
2616 |
|
2617 |
+
#: src/Tribe/List_Widget.php:32 src/Tribe/Views/V2/Widgets/Widget_List.php:96
|
2618 |
+
#: src/Tribe/Views/V2/Widgets/Widget_List.php:99
|
2619 |
msgid "A widget that displays upcoming events."
|
2620 |
msgstr ""
|
2621 |
|
2629 |
|
2630 |
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.2.0) #-#-#-#-#
|
2631 |
#. Plugin Name of the plugin/theme
|
2632 |
+
#: src/Tribe/Main.php:946 src/Tribe/Main.php:1401 src/Tribe/Privacy.php:29
|
2633 |
#: src/admin-views/admin-welcome-message.php:29
|
2634 |
#: src/functions/template-tags/general.php:1421 the-events-calendar.php:57
|
2635 |
msgid "The Events Calendar"
|
2636 |
msgstr ""
|
2637 |
|
2638 |
+
#: src/Tribe/Main.php:953
|
2639 |
msgid "month"
|
2640 |
msgstr ""
|
2641 |
|
2642 |
+
#: src/Tribe/Main.php:954
|
2643 |
msgid "list"
|
2644 |
msgstr ""
|
2645 |
|
2646 |
+
#: src/Tribe/Main.php:955
|
2647 |
msgid "upcoming"
|
2648 |
msgstr ""
|
2649 |
|
2650 |
+
#: src/Tribe/Main.php:956
|
2651 |
msgid "past"
|
2652 |
msgstr ""
|
2653 |
|
2654 |
+
#: src/Tribe/Main.php:957
|
2655 |
msgid "day"
|
2656 |
msgstr ""
|
2657 |
|
2658 |
+
#: src/Tribe/Main.php:958
|
2659 |
msgid "today"
|
2660 |
msgstr ""
|
2661 |
|
2662 |
+
#: src/Tribe/Main.php:959
|
2663 |
msgctxt "featured events slug"
|
2664 |
msgid "featured"
|
2665 |
msgstr ""
|
2666 |
|
2667 |
+
#: src/Tribe/Main.php:960
|
2668 |
msgctxt "all events slug"
|
2669 |
msgid "all"
|
2670 |
msgstr ""
|
2671 |
|
2672 |
+
#: src/Tribe/Main.php:984
|
2673 |
msgid "Initializing Tribe Events on %s"
|
2674 |
msgstr ""
|
2675 |
|
2676 |
+
#: src/Tribe/Main.php:1042 src/Tribe/Main.php:1044
|
2677 |
msgid "Welcome to The Events Calendar!"
|
2678 |
msgstr ""
|
2679 |
|
2680 |
+
#: src/Tribe/Main.php:1190
|
2681 |
msgid ""
|
2682 |
"The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
|
2683 |
"show its calendar in place of the page."
|
2684 |
msgstr ""
|
2685 |
|
2686 |
+
#: src/Tribe/Main.php:1193
|
2687 |
msgid "Ask the site administrator to edit the %s slug"
|
2688 |
msgstr ""
|
2689 |
|
2690 |
+
#: src/Tribe/Main.php:1195
|
2691 |
msgid "Edit the %s slug"
|
2692 |
msgstr ""
|
2693 |
|
2694 |
+
#: src/Tribe/Main.php:1199
|
2695 |
msgid " ask the site administrator to set a different Events URL slug."
|
2696 |
msgstr ""
|
2697 |
|
2698 |
+
#: src/Tribe/Main.php:1204
|
2699 |
msgid "edit Events settings."
|
2700 |
msgstr ""
|
2701 |
|
2702 |
+
#: src/Tribe/Main.php:1207
|
2703 |
msgid "%1$s or %2$s"
|
2704 |
msgstr ""
|
2705 |
|
2706 |
+
#: src/Tribe/Main.php:1276
|
2707 |
msgid "Upgrade your calendar views"
|
2708 |
msgstr ""
|
2709 |
|
2710 |
+
#: src/Tribe/Main.php:1312
|
2711 |
msgid "Upgrade"
|
2712 |
msgstr ""
|
2713 |
|
2714 |
+
#: src/Tribe/Main.php:1361
|
2715 |
msgid "New User Primer"
|
2716 |
msgstr ""
|
2717 |
|
2718 |
+
#: src/Tribe/Main.php:1363
|
2719 |
msgid ""
|
2720 |
"We are committed to helping make your calendar spectacular and have a wealth "
|
2721 |
"of resources available, including a handy %s to get your calendar up and "
|
2722 |
"running."
|
2723 |
msgstr ""
|
2724 |
|
2725 |
+
#: src/Tribe/Main.php:1374
|
2726 |
msgid "Support for The Events Calendar"
|
2727 |
msgstr ""
|
2728 |
|
2729 |
+
#: src/Tribe/Main.php:1377
|
2730 |
msgid ""
|
2731 |
"%s: A thorough walkthrough of The Events Calendar and the settings that are "
|
2732 |
"available to you."
|
2733 |
msgstr ""
|
2734 |
|
2735 |
+
#: src/Tribe/Main.php:1377
|
2736 |
msgid "Settings overview"
|
2737 |
msgstr ""
|
2738 |
|
2739 |
+
#: src/Tribe/Main.php:1379
|
2740 |
msgid ""
|
2741 |
"%s: A complete look at the features you can expect to see right out of the "
|
2742 |
"box as well as how to use them."
|
2743 |
msgstr ""
|
2744 |
|
2745 |
+
#: src/Tribe/Main.php:1379
|
2746 |
msgid "Features overview"
|
2747 |
msgstr ""
|
2748 |
|
2749 |
+
#: src/Tribe/Main.php:1381
|
2750 |
msgid ""
|
2751 |
"%s: Our most comprehensive outline for customizing the calendar to suit your "
|
2752 |
"needs, including custom layouts and styles."
|
2753 |
msgstr ""
|
2754 |
|
2755 |
+
#: src/Tribe/Main.php:1381
|
2756 |
msgid "Themer's Guide"
|
2757 |
msgstr ""
|
2758 |
|
2759 |
+
#: src/Tribe/Main.php:1383
|
2760 |
msgid ""
|
2761 |
"%s: An overview of the default templates and styles that are included in the "
|
2762 |
"plugin, as well as how to change them."
|
2763 |
msgstr ""
|
2764 |
|
2765 |
+
#: src/Tribe/Main.php:1383
|
2766 |
msgid "Using stylesheets and page templates"
|
2767 |
msgstr ""
|
2768 |
|
2769 |
+
#: src/Tribe/Main.php:1385
|
2770 |
msgid ""
|
2771 |
"%s: Do you see an issue with your calendar? Go here first to find where it’s "
|
2772 |
"coming from and how to fix it."
|
2773 |
msgstr ""
|
2774 |
|
2775 |
+
#: src/Tribe/Main.php:1385
|
2776 |
msgid "Troubleshooting common problems"
|
2777 |
msgstr ""
|
2778 |
|
2779 |
+
#: src/Tribe/Main.php:1387
|
2780 |
msgid ""
|
2781 |
"%s: Code and guides for customizing your calendar in useful and interesting "
|
2782 |
"ways."
|
2783 |
msgstr ""
|
2784 |
|
2785 |
+
#: src/Tribe/Main.php:1387
|
2786 |
msgid "Customizing the Events plugins"
|
2787 |
msgstr ""
|
2788 |
|
2789 |
+
#: src/Tribe/Main.php:1402
|
2790 |
msgid "Events Tickets"
|
2791 |
msgstr ""
|
2792 |
|
2793 |
+
#: src/Tribe/Main.php:1403
|
2794 |
msgid ""
|
2795 |
"If you have tried the above steps and are still having trouble, you can post "
|
2796 |
"a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
|
2797 |
"monitors these forums once a week and would be happy to assist you there. "
|
2798 |
msgstr ""
|
2799 |
|
2800 |
+
#: src/Tribe/Main.php:1405 src/Tribe/Main.php:1413
|
2801 |
msgid "premium support on our website"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: src/Tribe/Main.php:1406
|
2805 |
msgid ""
|
2806 |
"<strong>Looking for more immediate support?</strong> We offer %s with the "
|
2807 |
"purchase of any of our premium plugins. Pick up a license and you can post "
|
2808 |
"there directly and expect a response within 24-48 hours during weekdays"
|
2809 |
msgstr ""
|
2810 |
|
2811 |
+
#: src/Tribe/Main.php:1410
|
2812 |
msgid "open-source forum on WordPress.org"
|
2813 |
msgstr ""
|
2814 |
|
2815 |
+
#: src/Tribe/Main.php:1411
|
2816 |
msgid ""
|
2817 |
"If you have tried the above steps and are still having trouble, you can post "
|
2818 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
2819 |
"and would be happy to assist you there."
|
2820 |
msgstr ""
|
2821 |
|
2822 |
+
#: src/Tribe/Main.php:1414
|
2823 |
msgid "Events Calendar PRO"
|
2824 |
msgstr ""
|
2825 |
|
2826 |
+
#: src/Tribe/Main.php:1415
|
2827 |
msgid ""
|
2828 |
"<strong>Looking for more immediate support?</strong> We offer %1$s with the "
|
2829 |
"purchase of any of our premium plugins (like %2$s). Pick up a license and "
|
2831 |
"weekdays."
|
2832 |
msgstr ""
|
2833 |
|
2834 |
+
#: src/Tribe/Main.php:1419
|
2835 |
msgid "post a thread"
|
2836 |
msgstr ""
|
2837 |
|
2838 |
+
#: src/Tribe/Main.php:1420
|
2839 |
msgid ""
|
2840 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
2841 |
"premium support forums. Our support team monitors the forums and will "
|
2842 |
"respond to your thread within 24-48 hours (during the week)."
|
2843 |
msgstr ""
|
2844 |
|
2845 |
+
#: src/Tribe/Main.php:1463
|
2846 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
|
2847 |
#: src/functions/template-tags/general.php:130
|
2848 |
msgid "Events"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
+
#: src/Tribe/Main.php:1471 src/admin-views/aggregator/tabs/import-form.php:227
|
2852 |
#: src/admin-views/aggregator/tabs/import-form.php:239
|
2853 |
#: src/functions/template-tags/general.php:74
|
2854 |
msgid "Event"
|
2855 |
msgstr ""
|
2856 |
|
2857 |
+
#: src/Tribe/Main.php:1688
|
2858 |
msgid ""
|
2859 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
2860 |
"your WordPress install."
|
2861 |
msgstr ""
|
2862 |
|
2863 |
+
#: src/Tribe/Main.php:1691
|
2864 |
msgid ""
|
2865 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
2866 |
"about moving you to a newer version of PHP."
|
2867 |
msgstr ""
|
2868 |
|
2869 |
+
#: src/Tribe/Main.php:1723
|
2870 |
msgid ""
|
2871 |
"To continue using The Events Calendar, please install the latest version of"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
+
#: src/Tribe/Main.php:1725 src/Tribe/Main.php:1726
|
2875 |
msgid "Event Tickets"
|
2876 |
msgstr ""
|
2877 |
|
2878 |
+
#: src/Tribe/Main.php:1761
|
2879 |
msgid ""
|
2880 |
"It appears as if the tribe-common libraries cannot be found! The directory "
|
2881 |
"should be in the \"common/\" directory in the events calendar plugin."
|
2882 |
msgstr ""
|
2883 |
|
2884 |
+
#: src/Tribe/Main.php:1997 src/Tribe/Main.php:2456
|
2885 |
msgid "category"
|
2886 |
msgstr ""
|
2887 |
|
2888 |
+
#: src/Tribe/Main.php:2011 src/Tribe/Main.php:2455
|
2889 |
msgid "tag"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
+
#: src/Tribe/Main.php:2044 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
|
2893 |
msgid "Add New"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
+
#: src/Tribe/Main.php:2045 src/Tribe/Main.php:2182 src/Tribe/Main.php:2183
|
2897 |
#: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
|
2898 |
msgid "Add New %s"
|
2899 |
msgstr ""
|
2900 |
|
2901 |
+
#: src/Tribe/Main.php:2047 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
|
2902 |
msgid "New %s"
|
2903 |
msgstr ""
|
2904 |
|
2905 |
+
#: src/Tribe/Main.php:2048 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
|
2906 |
#: src/views/month/single-day.php:26
|
2907 |
msgid "View %s"
|
2908 |
msgstr ""
|
2909 |
|
2910 |
+
#: src/Tribe/Main.php:2049 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
|
2911 |
msgid "Search %s"
|
2912 |
msgstr ""
|
2913 |
|
2914 |
+
#: src/Tribe/Main.php:2050 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
|
2915 |
msgid "No %s found"
|
2916 |
msgstr ""
|
2917 |
|
2918 |
+
#: src/Tribe/Main.php:2051 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
|
2919 |
msgid "No %s found in Trash"
|
2920 |
msgstr ""
|
2921 |
|
2922 |
+
#: src/Tribe/Main.php:2052 src/Tribe/Main.php:2139 src/Tribe/Main.php:2159
|
2923 |
#: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
|
2924 |
msgid "%s published."
|
2925 |
msgstr ""
|
2926 |
|
2927 |
+
#: src/Tribe/Main.php:2053 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
|
2928 |
msgid "%s published privately."
|
2929 |
msgstr ""
|
2930 |
|
2931 |
+
#: src/Tribe/Main.php:2054 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
|
2932 |
msgid "%s reverted to draft."
|
2933 |
msgstr ""
|
2934 |
|
2935 |
+
#: src/Tribe/Main.php:2055 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
|
2936 |
msgid "%s scheduled."
|
2937 |
msgstr ""
|
2938 |
|
2939 |
+
#: src/Tribe/Main.php:2056 src/Tribe/Main.php:2098 src/Tribe/Main.php:2133
|
2940 |
+
#: src/Tribe/Main.php:2136 src/Tribe/Main.php:2153 src/Tribe/Main.php:2156
|
2941 |
#: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
|
2942 |
msgid "%s updated."
|
2943 |
msgstr ""
|
2944 |
|
2945 |
+
#: src/Tribe/Main.php:2066
|
2946 |
msgid "%s Category"
|
2947 |
msgstr ""
|
2948 |
|
2949 |
+
#: src/Tribe/Main.php:2067
|
2950 |
msgid "Search %s Categories"
|
2951 |
msgstr ""
|
2952 |
|
2953 |
+
#: src/Tribe/Main.php:2068
|
2954 |
msgid "All %s Categories"
|
2955 |
msgstr ""
|
2956 |
|
2957 |
+
#: src/Tribe/Main.php:2069
|
2958 |
msgid "Parent %s Category"
|
2959 |
msgstr ""
|
2960 |
|
2961 |
+
#: src/Tribe/Main.php:2070
|
2962 |
msgid "Parent %s Category:"
|
2963 |
msgstr ""
|
2964 |
|
2965 |
+
#: src/Tribe/Main.php:2071
|
2966 |
msgid "Edit %s Category"
|
2967 |
msgstr ""
|
2968 |
|
2969 |
+
#: src/Tribe/Main.php:2072
|
2970 |
msgid "Update %s Category"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
+
#: src/Tribe/Main.php:2073
|
2974 |
msgid "Add New %s Category"
|
2975 |
msgstr ""
|
2976 |
|
2977 |
+
#: src/Tribe/Main.php:2074
|
2978 |
msgid "New %s Category Name"
|
2979 |
msgstr ""
|
2980 |
|
2981 |
+
#: src/Tribe/Main.php:2091
|
2982 |
msgid "%1$s updated. %2$sView %1$s%3$s"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
+
#: src/Tribe/Main.php:2096 src/Tribe/Main.php:2134 src/Tribe/Main.php:2154
|
2986 |
msgid "Custom field updated."
|
2987 |
msgstr ""
|
2988 |
|
2989 |
+
#: src/Tribe/Main.php:2097 src/Tribe/Main.php:2135 src/Tribe/Main.php:2155
|
2990 |
msgid "Custom field deleted."
|
2991 |
msgstr ""
|
2992 |
|
2993 |
#. translators: %s: date and time of the revision
|
2994 |
+
#: src/Tribe/Main.php:2100 src/Tribe/Main.php:2138
|
2995 |
msgid "%1$s restored to revision from %2$s"
|
2996 |
msgstr ""
|
2997 |
|
2998 |
+
#: src/Tribe/Main.php:2102
|
2999 |
msgid "%1$s published. %2$sView %3$s"
|
3000 |
msgstr ""
|
3001 |
|
3002 |
+
#: src/Tribe/Main.php:2107 src/Tribe/Main.php:2140 src/Tribe/Main.php:2160
|
3003 |
msgid "%s saved."
|
3004 |
msgstr ""
|
3005 |
|
3006 |
+
#: src/Tribe/Main.php:2109
|
3007 |
msgid "%1$s submitted. %2$sPreview %3$s"
|
3008 |
msgstr ""
|
3009 |
|
3010 |
+
#: src/Tribe/Main.php:2115
|
3011 |
msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
|
3012 |
msgstr ""
|
3013 |
|
3014 |
#. translators: Publish box date format, see http://php.net/date
|
3015 |
+
#: src/Tribe/Main.php:2118 src/Tribe/Main.php:2146 src/Tribe/Main.php:2166
|
3016 |
msgid "M j, Y @ G:i"
|
3017 |
msgstr ""
|
3018 |
|
3019 |
+
#: src/Tribe/Main.php:2124
|
3020 |
msgid "%1$s draft updated. %2$sPreview %3$s"
|
3021 |
msgstr ""
|
3022 |
|
3023 |
+
#: src/Tribe/Main.php:2141 src/Tribe/Main.php:2161
|
3024 |
msgid "%s submitted."
|
3025 |
msgstr ""
|
3026 |
|
3027 |
+
#: src/Tribe/Main.php:2143 src/Tribe/Main.php:2163
|
3028 |
msgid "%1$s scheduled for: %2$s."
|
3029 |
msgstr ""
|
3030 |
|
3031 |
+
#: src/Tribe/Main.php:2148 src/Tribe/Main.php:2168
|
3032 |
msgid "%s draft updated."
|
3033 |
msgstr ""
|
3034 |
|
3035 |
#. translators: %s: date and time of the revision
|
3036 |
+
#: src/Tribe/Main.php:2158
|
3037 |
msgid "%s restored to revision from %s"
|
3038 |
msgstr ""
|
3039 |
|
3040 |
+
#: src/Tribe/Main.php:2212
|
3041 |
msgid ""
|
3042 |
"Without a defined location your event will not display a %sGoogle Rich "
|
3043 |
"Snippet%s on the search results."
|
3044 |
msgstr ""
|
3045 |
|
3046 |
+
#: src/Tribe/Main.php:2457
|
3047 |
msgid "page"
|
3048 |
msgstr ""
|
3049 |
|
3050 |
+
#: src/Tribe/Main.php:2458 src/functions/template-tags/general.php:102
|
3051 |
msgid "event"
|
3052 |
msgstr ""
|
3053 |
|
3054 |
+
#: src/Tribe/Main.php:2459 src/functions/template-tags/general.php:158
|
3055 |
msgid "events"
|
3056 |
msgstr ""
|
3057 |
|
3058 |
+
#: src/Tribe/Main.php:2460
|
3059 |
msgid "all"
|
3060 |
msgstr ""
|
3061 |
|
3062 |
+
#: src/Tribe/Main.php:2842
|
3063 |
msgid " (View Full %1$s Description Here: %2$s)"
|
3064 |
msgstr ""
|
3065 |
|
3066 |
+
#: src/Tribe/Main.php:3621 src/Tribe/Main.php:3656
|
3067 |
#: src/functions/template-tags/day.php:157
|
3068 |
#: src/functions/template-tags/day.php:178
|
3069 |
msgid "Date out of range."
|
3070 |
msgstr ""
|
3071 |
|
3072 |
+
#: src/Tribe/Main.php:3698
|
3073 |
msgid "%s Options"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
#: src/Tribe/Main.php:3707 src/Tribe/Main.php:3720
|
3077 |
msgid "%s Information"
|
3078 |
msgstr ""
|
3079 |
|
3080 |
+
#: src/Tribe/Main.php:4052
|
3081 |
msgid "Support"
|
3082 |
msgstr ""
|
3083 |
|
3084 |
+
#: src/Tribe/Main.php:4055
|
3085 |
msgid "View All Add-Ons"
|
3086 |
msgstr ""
|
3087 |
|
3088 |
+
#: src/Tribe/Main.php:4075
|
3089 |
msgid "News from Modern Tribe"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
+
#: src/Tribe/Main.php:4120
|
3093 |
msgid "Additional Functionality"
|
3094 |
msgstr ""
|
3095 |
|
3096 |
+
#: src/Tribe/Main.php:4125
|
3097 |
msgid ""
|
3098 |
"Looking for additional functionality including recurring events, ticket "
|
3099 |
"sales, publicly submitted events, new views and more?"
|
3100 |
msgstr ""
|
3101 |
|
3102 |
+
#: src/Tribe/Main.php:4126
|
3103 |
msgid "Check out the %savailable add-ons%s."
|
3104 |
msgstr ""
|
3105 |
|
3106 |
+
#: src/Tribe/Main.php:4227
|
3107 |
msgid "Calendar"
|
3108 |
msgstr ""
|
3109 |
|
3110 |
+
#: src/Tribe/Main.php:4243
|
3111 |
msgid "List"
|
3112 |
msgstr ""
|
3113 |
|
3114 |
+
#: src/Tribe/Main.php:4261
|
3115 |
msgid "Month"
|
3116 |
msgstr ""
|
3117 |
|
3118 |
+
#: src/Tribe/Main.php:4278 src/admin-views/aggregator/fields/schedule.php:43
|
3119 |
#: src/admin-views/aggregator/fields/schedule.php:61
|
3120 |
msgid "Day"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
+
#: src/Tribe/Main.php:4301
|
3124 |
msgid "Search for %s by Keyword."
|
3125 |
msgstr ""
|
3126 |
|
3127 |
+
#: src/Tribe/Main.php:4304
|
3128 |
#: src/views/v2/components/events-bar/search-button.php:24
|
3129 |
msgid "Search"
|
3130 |
msgstr ""
|
3131 |
|
3132 |
+
#: src/Tribe/Main.php:4305
|
3133 |
msgid "Keyword"
|
3134 |
msgstr ""
|
3135 |
|
3136 |
+
#: src/Tribe/Main.php:4322
|
3137 |
msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
|
3138 |
msgstr ""
|
3139 |
|
3140 |
+
#: src/Tribe/Main.php:4323
|
3141 |
msgid "1 digit month slash 1 digit day slash 4 digit year"
|
3142 |
msgstr ""
|
3143 |
|
3144 |
+
#: src/Tribe/Main.php:4324
|
3145 |
msgid "2 digit month slash 2 digit day slash 4 digit year"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
+
#: src/Tribe/Main.php:4325
|
3149 |
msgid "1 digit day slash 1 digit month slash 4 digit year"
|
3150 |
msgstr ""
|
3151 |
|
3152 |
+
#: src/Tribe/Main.php:4326
|
3153 |
msgid "2 digit day slash 2 digit month slash 4 digit year"
|
3154 |
msgstr ""
|
3155 |
|
3156 |
+
#: src/Tribe/Main.php:4327
|
3157 |
msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
|
3158 |
msgstr ""
|
3159 |
|
3160 |
+
#: src/Tribe/Main.php:4328
|
3161 |
msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
|
3162 |
msgstr ""
|
3163 |
|
3164 |
+
#: src/Tribe/Main.php:4329
|
3165 |
msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
|
3166 |
msgstr ""
|
3167 |
|
3168 |
+
#: src/Tribe/Main.php:4330
|
3169 |
msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
|
3170 |
msgstr ""
|
3171 |
|
3172 |
+
#: src/Tribe/Main.php:4331
|
3173 |
msgid "4 digit year dot 2 digit month dot 2 digit day"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
+
#: src/Tribe/Main.php:4332
|
3177 |
msgid "2 digit month dot 2 digit day dot 4 digit year"
|
3178 |
msgstr ""
|
3179 |
|
3180 |
+
#: src/Tribe/Main.php:4333
|
3181 |
msgid "2 digit day dot 2 digit month dot 4 digit year"
|
3182 |
msgstr ""
|
3183 |
|
3184 |
+
#: src/Tribe/Main.php:4337
|
3185 |
msgid "4 digit year hyphen 2 digit month"
|
3186 |
msgstr ""
|
3187 |
|
3188 |
+
#: src/Tribe/Main.php:4338 src/Tribe/Main.php:4340
|
3189 |
msgid "1 digit month slash 4 digit year"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
+
#: src/Tribe/Main.php:4339 src/Tribe/Main.php:4341
|
3193 |
msgid "2 digit month slash 4 digit year"
|
3194 |
msgstr ""
|
3195 |
|
3196 |
+
#: src/Tribe/Main.php:4342 src/Tribe/Main.php:4343 src/Tribe/Main.php:4344
|
3197 |
msgid "1 digit month hyphen 4 digit year"
|
3198 |
msgstr ""
|
3199 |
|
3200 |
+
#: src/Tribe/Main.php:4345
|
3201 |
msgid "2 digit month hyphen 4 digit year"
|
3202 |
msgstr ""
|
3203 |
|
3204 |
+
#: src/Tribe/Main.php:4346
|
3205 |
msgid "4 digit year dot 2 digit month"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
+
#: src/Tribe/Main.php:4347 src/Tribe/Main.php:4348
|
3209 |
msgid "2 digit month dot 4 digit year"
|
3210 |
msgstr ""
|
3211 |
|
3212 |
+
#: src/Tribe/Main.php:4377 src/Tribe/Main.php:4414
|
3213 |
#: src/admin-views/aggregator/origins/refine.php:7
|
3214 |
msgid "Date"
|
3215 |
msgstr ""
|
3216 |
|
3217 |
+
#: src/Tribe/Main.php:4379
|
3218 |
msgid "Search for %s by Date. Please use the format %s."
|
3219 |
msgstr ""
|
3220 |
|
3221 |
+
#: src/Tribe/Main.php:4392
|
3222 |
msgid "%s In"
|
3223 |
msgstr ""
|
3224 |
|
3225 |
+
#: src/Tribe/Main.php:4394
|
3226 |
msgid "Search for %s by month. Please use the format %s."
|
3227 |
msgstr ""
|
3228 |
|
3229 |
+
#: src/Tribe/Main.php:4397
|
3230 |
msgid "%s From"
|
3231 |
msgstr ""
|
3232 |
|
3233 |
+
#: src/Tribe/Main.php:4400
|
3234 |
msgid "Day Of"
|
3235 |
msgstr ""
|
3236 |
|
3237 |
+
#: src/Tribe/Main.php:4480
|
3238 |
msgid "Once Every 30 Mins"
|
3239 |
msgstr ""
|
3240 |
|
3241 |
+
#: src/Tribe/Main.php:5207
|
3242 |
msgid ""
|
3243 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
3244 |
"Events Calendar add-ons. Please %supdate now.%s"
|
3245 |
msgstr ""
|
3246 |
|
3247 |
+
#: src/Tribe/Main.php:5219
|
3248 |
msgid ""
|
3249 |
"The following plugins are out of date: %1$s. All add-ons contain "
|
3250 |
"dependencies on The Events Calendar and will not function properly unless "
|
3251 |
"paired with the right version. %2$sLearn More%3$s."
|
3252 |
msgstr ""
|
3253 |
|
3254 |
+
#: src/Tribe/Main.php:5258 src/Tribe/Main.php:5315
|
3255 |
msgid "Use Saved %s:"
|
3256 |
msgstr ""
|
3257 |
|
4754 |
msgid "%1$s for %2$s"
|
4755 |
msgstr ""
|
4756 |
|
4757 |
+
#: src/Tribe/Views/V2/View.php:1916 src/views/v2/day/event/date/featured.php:27
|
4758 |
#: src/views/v2/day/event/date/featured.php:28
|
4759 |
#: src/views/v2/day/event/date/featured.php:32
|
4760 |
#: src/views/v2/latest-past/event/date/featured.php:27
|
4774 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:27
|
4775 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:28
|
4776 |
#: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:32
|
4777 |
+
#: src/views/v2/widgets/events-list/event/date/featured.php:25
|
4778 |
+
#: src/views/v2/widgets/events-list/event/date/featured.php:26
|
4779 |
+
#: src/views/v2/widgets/events-list/event/date/featured.php:30
|
4780 |
msgid "Featured"
|
4781 |
msgstr ""
|
4782 |
|
4806 |
msgstr ""
|
4807 |
|
4808 |
#. translators: %s: Events (plural).
|
4809 |
+
#: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:55
|
4810 |
msgid "Export %s"
|
4811 |
msgstr ""
|
4812 |
|
4813 |
+
#: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:60 src/Tribe/iCal.php:185
|
4814 |
msgid ""
|
4815 |
"Use this to share calendar data with Google Calendar, Apple iCal and other "
|
4816 |
"compatible apps"
|
4817 |
msgstr ""
|
4818 |
|
4819 |
+
#: src/Tribe/Views/V2/Widgets/Widget_List.php:98
|
4820 |
+
msgid "Events List V2"
|
4821 |
+
msgstr ""
|
4822 |
+
|
4823 |
+
#: src/Tribe/iCal.php:55
|
4824 |
msgctxt "feed link"
|
4825 |
msgid "»"
|
4826 |
msgstr ""
|
4827 |
|
4828 |
+
#: src/Tribe/iCal.php:56
|
4829 |
msgid "%1$s %2$s iCal Feed"
|
4830 |
msgstr ""
|
4831 |
|
4832 |
+
#: src/Tribe/iCal.php:131 src/views/blocks/event-links.php:35
|
4833 |
msgid "Add to Google Calendar"
|
4834 |
msgstr ""
|
4835 |
|
4836 |
+
#: src/Tribe/iCal.php:132 src/views/blocks/event-links.php:46
|
4837 |
msgid "Download .ics file"
|
4838 |
msgstr ""
|
4839 |
|
4840 |
+
#: src/Tribe/iCal.php:184
|
4841 |
msgid "Export Events"
|
4842 |
msgstr ""
|
4843 |
|
4844 |
+
#: src/Tribe/iCal.php:432
|
4845 |
msgctxt "iCal feed description"
|
4846 |
msgid "Events for %s"
|
4847 |
msgstr ""
|
7551 |
msgid "Previous day"
|
7552 |
msgstr ""
|
7553 |
|
7554 |
+
#: src/views/v2/day.php:46 src/views/v2/list.php:45 src/views/v2/month.php:44
|
7555 |
msgid "Loading..."
|
7556 |
msgstr ""
|
7557 |
|
7630 |
msgid "Previous month"
|
7631 |
msgstr ""
|
7632 |
|
7633 |
+
#: src/views/v2/widgets/events-list/view-more.php:28
|
7634 |
+
msgid "View more"
|
7635 |
+
msgstr ""
|
7636 |
+
|
7637 |
+
#. translators: %1$s: Event (plural).
|
7638 |
+
#: src/views/v2/widgets/events-list.php:87
|
7639 |
+
msgctxt "Title for events list widget."
|
7640 |
+
msgid "Upcoming %1$s"
|
7641 |
+
msgstr ""
|
7642 |
+
|
7643 |
#: src/views/widgets/list-widget.php:112
|
7644 |
msgid "View All %s"
|
7645 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== The Events Calendar ===
|
2 |
|
3 |
-
Contributors: ModernTribe, borkweb,
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: https://m.tri.be/29
|
6 |
Requires at least: 4.9.14
|
7 |
-
Stable tag: 5.2.
|
8 |
-
Tested up to: 5.5.
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -26,7 +26,7 @@ See the calendar in action on our [demo experience](https://m.tri.be/1ajs). Just
|
|
26 |
|
27 |
Looking for additional features like recurring events, ticket sales, user-submitted events, automatic imports, and more?
|
28 |
|
29 |
-
<strong>Check out [Events Calendar Pro](https://m.tri.be/mj), [Event Aggregator](https://m.tri.be/197u), and [more add-ons](https://m.tri.be/2a)</strong>
|
30 |
|
31 |
= 🔌🎨 Plug and Play or Customize =
|
32 |
|
@@ -222,10 +222,26 @@ Remember to always make a backup of your database and files before updating!
|
|
222 |
|
223 |
== Changelog ==
|
224 |
|
225 |
-
= [5.2.
|
226 |
|
227 |
* Fix - Improve escaping for messages when no results were found using search (Thanks Steve Pollak)
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
= [5.2.0] 2020-09-28 =
|
230 |
|
231 |
* Fix - Fix the order of the List View when the PRO is set to show only the first instance of a Recurring Event. [ECP-467]
|
@@ -719,16 +735,16 @@ Remember to always make a backup of your database and files before updating!
|
|
719 |
= [4.7.2] 2018-12-13 =
|
720 |
|
721 |
* Feature - Added new action `tribe_events_before_event_template_data_date_display` and `tribe_events_after_event_template_data_date_display`
|
722 |
-
* Tweak -
|
723 |
-
* Tweak -
|
724 |
-
* Tweak -
|
725 |
-
* Fix -
|
726 |
* Fix - Removed tribe_events_template_data()'s dependency on Events Calendar PRO, which could lead to a fatal error under some conditions [119263]
|
727 |
* Fix - Made the Event Date Time block respect the timezone settings [118682]
|
728 |
* Fix - Removed Price block dashboard gap [118683]
|
729 |
* Fix - Made sure all block editor code for Meta saving is PHP 5.2 compatible
|
730 |
* Fix - Prevented `undefined` from been displayed at the Event Date Time separator fields [119337]
|
731 |
-
* Fix -
|
732 |
|
733 |
= [4.7.1] 2018-12-05 =
|
734 |
|
1 |
=== The Events Calendar ===
|
2 |
|
3 |
+
Contributors: ModernTribe, borkweb,bordoni, brianjessee, aguseo, camwynsp, cliffpaulick, GeoffBel, geoffgraham, jentheo, leahkoerper, lucatume, neillmcshea, patriciahillebrandt, peterchester, paulskim, reid.peifer, shane.pearlman, vicskf, zbtirrell, juanfra
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: https://m.tri.be/29
|
6 |
Requires at least: 4.9.14
|
7 |
+
Stable tag: 5.2.1.2
|
8 |
+
Tested up to: 5.5.3
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
11 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
26 |
|
27 |
Looking for additional features like recurring events, ticket sales, user-submitted events, automatic imports, and more?
|
28 |
|
29 |
+
<strong>Check out [Events Calendar Pro](https://m.tri.be/mj), [Event Aggregator](https://m.tri.be/197u), and [more add-ons](https://m.tri.be/2a)</strong> ...and all of them are on sale from November 23-30 during our annual 💰[Black Friday Sale](https://m.tri.be/1aod)💰
|
30 |
|
31 |
= 🔌🎨 Plug and Play or Customize =
|
32 |
|
222 |
|
223 |
== Changelog ==
|
224 |
|
225 |
+
= [5.2.1.2] 2021-05-05 =
|
226 |
|
227 |
* Fix - Improve escaping for messages when no results were found using search (Thanks Steve Pollak)
|
228 |
|
229 |
+
= [5.2.1.1] 2020-11-19 =
|
230 |
+
|
231 |
+
* Tweak - Update version of Freemius to the latest version 2.4.1 [TEC-3668]
|
232 |
+
|
233 |
+
= [5.2.1] 2020-10-22 =
|
234 |
+
|
235 |
+
* Tweak - Change Views v2 AJAX request method from GET to POST to avoid issues with too long URLs. [TEC-3283]
|
236 |
+
* Tweak - Add the `tribe_events_views_v2_endpoint_method` filter to allow controlling the HTTP method Views should use to fetch their content from the back-end endpoint. [TEC-3283]
|
237 |
+
* Tweak - Add the `tribe_events_views_v2_endpoint_url` filter to allow controlling the URL Views should use to fetch their content from the back-end endpoint. [TEC-3283]
|
238 |
+
* Fix - Prevent Event Aggregator 15 minute Cron Schedule from being created when not required (props @jetxpert) [EA-317]
|
239 |
+
* Fix - Add filter to toggle off the event templates hijack. [TEC-3521]
|
240 |
+
* Fix - Correct url for current month iCal export link. [TEC-3575]
|
241 |
+
* Fix - Avoid loading the same CSS file twice on the back-end. [TEC-3623]
|
242 |
+
* Fix - Ensure ECP shortcode prev/next urls handle categories gracefully. [ECP-492]
|
243 |
+
* Language - 3 new strings added, 200 updated, 0 fuzzied, and 0 obsoleted
|
244 |
+
|
245 |
= [5.2.0] 2020-09-28 =
|
246 |
|
247 |
* Fix - Fix the order of the List View when the PRO is set to show only the first instance of a Recurring Event. [ECP-467]
|
735 |
= [4.7.2] 2018-12-13 =
|
736 |
|
737 |
* Feature - Added new action `tribe_events_before_event_template_data_date_display` and `tribe_events_after_event_template_data_date_display`
|
738 |
+
* Tweak - Corrected font on time picker components in Event Date Time block [116907]
|
739 |
+
* Tweak - Adjusted padding on the Event Date Time block [118697]
|
740 |
+
* Tweak - Set default start time to 8:00am and default end time to 5:00pm in Event Date Time block [118112]
|
741 |
+
* Fix - Corrected an issue where feature detection of async-process support would fire too many requests [118876]
|
742 |
* Fix - Removed tribe_events_template_data()'s dependency on Events Calendar PRO, which could lead to a fatal error under some conditions [119263]
|
743 |
* Fix - Made the Event Date Time block respect the timezone settings [118682]
|
744 |
* Fix - Removed Price block dashboard gap [118683]
|
745 |
* Fix - Made sure all block editor code for Meta saving is PHP 5.2 compatible
|
746 |
* Fix - Prevented `undefined` from been displayed at the Event Date Time separator fields [119337]
|
747 |
+
* Fix - Solved 500 error when trying to update an event [118058]s
|
748 |
|
749 |
= [4.7.1] 2018-12-05 =
|
750 |
|
src/Tribe/Aggregator/Record/Queue_Processor.php
CHANGED
@@ -68,6 +68,20 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
|
|
68 |
* batches of pending import record inserts/updates.
|
69 |
*/
|
70 |
public function register_scheduled_task() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
if ( wp_next_scheduled( self::$scheduled_key ) ) {
|
72 |
return;
|
73 |
}
|
@@ -164,11 +178,23 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
|
|
164 |
*
|
165 |
* If no records in need of further processing can be found it will return bool false.
|
166 |
*
|
|
|
|
|
167 |
* @param boolean $interactive_only Whether or not we should look for imports that were kicked off interactively
|
|
|
168 |
*
|
169 |
-
* @return boolean
|
170 |
*/
|
171 |
-
public function next_waiting_record( $interactive_only = false ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
$args = array(
|
173 |
'post_type' => Tribe__Events__Aggregator__Records::$post_type,
|
174 |
'post_status' => 'any',
|
@@ -195,6 +221,12 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
|
|
195 |
}
|
196 |
|
197 |
$next_record = array_shift( $waiting_records );
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
return $this->current_record_id = $next_record->ID;
|
199 |
}
|
200 |
|
68 |
* batches of pending import record inserts/updates.
|
69 |
*/
|
70 |
public function register_scheduled_task() {
|
71 |
+
// Bail on registration of scheduled event in case we dont have an API setup.
|
72 |
+
if ( is_wp_error( tribe( 'events-aggregator.service' )->api() ) ) {
|
73 |
+
// Also clear in case we dont have an API key.
|
74 |
+
$this->clear_scheduled_task();
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
|
78 |
+
// Prevent from trying to schedule in case we dont have any scheduled records to process, value will either be false or 0.
|
79 |
+
if ( ! $this->next_waiting_record( false, true ) ) {
|
80 |
+
// Also clear in case we don't have any records to process.
|
81 |
+
$this->clear_scheduled_task();
|
82 |
+
return;
|
83 |
+
}
|
84 |
+
|
85 |
if ( wp_next_scheduled( self::$scheduled_key ) ) {
|
86 |
return;
|
87 |
}
|
178 |
*
|
179 |
* If no records in need of further processing can be found it will return bool false.
|
180 |
*
|
181 |
+
* @since TBD Inclusion of a $cache param for performance purposes.
|
182 |
+
*
|
183 |
* @param boolean $interactive_only Whether or not we should look for imports that were kicked off interactively
|
184 |
+
* @param boolean $cache When checking on every request we should utilize transient caching to prevent hitting the DB every time.
|
185 |
*
|
186 |
+
* @return boolean|integer
|
187 |
*/
|
188 |
+
public function next_waiting_record( $interactive_only = false, $cache = false ) {
|
189 |
+
if ( true === $cache ) {
|
190 |
+
$transient_key = 'tribe-event-aggregator-next_waiting_record' . ( ! $interactive_only ?: '_interactive_only' );
|
191 |
+
$next_waiting_record = get_transient( $transient_key );
|
192 |
+
|
193 |
+
if ( ! empty( $next_waiting_record ) ) {
|
194 |
+
return $this->current_record_id = $next_waiting_record;
|
195 |
+
}
|
196 |
+
}
|
197 |
+
|
198 |
$args = array(
|
199 |
'post_type' => Tribe__Events__Aggregator__Records::$post_type,
|
200 |
'post_status' => 'any',
|
221 |
}
|
222 |
|
223 |
$next_record = array_shift( $waiting_records );
|
224 |
+
|
225 |
+
// Set cache in case of usage.
|
226 |
+
if ( true === $cache ) {
|
227 |
+
set_transient( $transient_key, $next_record->ID, 5 * MINUTE_IN_SECONDS );
|
228 |
+
}
|
229 |
+
|
230 |
return $this->current_record_id = $next_record->ID;
|
231 |
}
|
232 |
|
src/Tribe/Assets.php
CHANGED
@@ -82,19 +82,6 @@ class Tribe__Events__Assets {
|
|
82 |
)
|
83 |
);
|
84 |
|
85 |
-
// All tribe events pages
|
86 |
-
tribe_asset(
|
87 |
-
$plugin,
|
88 |
-
'tribe_events-admin',
|
89 |
-
'events-admin.css',
|
90 |
-
array(),
|
91 |
-
'admin_enqueue_scripts',
|
92 |
-
array(
|
93 |
-
'groups' => array( 'events-admin' ),
|
94 |
-
'conditionals' => array( $this, 'should_enqueue_admin' ),
|
95 |
-
)
|
96 |
-
);
|
97 |
-
|
98 |
// Post Type admin page
|
99 |
tribe_assets(
|
100 |
$plugin,
|
82 |
)
|
83 |
);
|
84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
// Post Type admin page
|
86 |
tribe_assets(
|
87 |
$plugin,
|
src/Tribe/Integrations/WPML/Views/V2/Filters.php
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Manages integration between WPML and Views v2 filters of The Events Calendar.
|
4 |
+
*
|
5 |
+
* @since 5.2.1
|
6 |
+
*
|
7 |
+
* @package Tribe\Events\Integrations\WPML\Views\V2
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Events\Integrations\WPML\Views\V2;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class Filters
|
14 |
+
*
|
15 |
+
* @since 5.2.1
|
16 |
+
*
|
17 |
+
* @package Tribe\Events\Integrations\WPML\Views\V2
|
18 |
+
*/
|
19 |
+
class Filters {
|
20 |
+
/**
|
21 |
+
* Translates the View URL.
|
22 |
+
*
|
23 |
+
* @since 5.2.1
|
24 |
+
*
|
25 |
+
* @param string $url The original View URL.
|
26 |
+
*
|
27 |
+
* @return string The translated View URL.
|
28 |
+
*/
|
29 |
+
public static function translate_view_url( $url ) {
|
30 |
+
$lang = static::get_request_lang();
|
31 |
+
if ( false === $lang ) {
|
32 |
+
return $url;
|
33 |
+
}
|
34 |
+
|
35 |
+
return apply_filters( 'wpml_permalink', $url, $lang );
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Returns the current request language, read from the request cookie.
|
40 |
+
*
|
41 |
+
* @since 5.2.1
|
42 |
+
*
|
43 |
+
* @return string|false Either the request language, e.g. `fr`, or `false` to indicate the language could not be
|
44 |
+
* parsed from the request context.
|
45 |
+
*/
|
46 |
+
protected static function get_request_lang() {
|
47 |
+
return defined( 'ICL_LANGUAGE_CODE' ) ? ICL_LANGUAGE_CODE : false;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Translates the URls contained in the View template variables.
|
52 |
+
*
|
53 |
+
* @since 5.2.1
|
54 |
+
*
|
55 |
+
* @param array<string,mixed> $template_vars The original View template variables.
|
56 |
+
*
|
57 |
+
* @return array<string,mixed> The View template variables, with the URLs there contained translated, if required.
|
58 |
+
*/
|
59 |
+
public static function translate_template_vars_urls( $template_vars = [] ) {
|
60 |
+
if ( ! is_array( $template_vars ) ) {
|
61 |
+
return $template_vars;
|
62 |
+
}
|
63 |
+
|
64 |
+
$url_keys = array_filter(
|
65 |
+
$template_vars,
|
66 |
+
static function ( $value, $key ) {
|
67 |
+
return strpos( $key, 'url' ) !== false && (bool) filter_var( $value, FILTER_VALIDATE_URL );
|
68 |
+
},
|
69 |
+
ARRAY_FILTER_USE_BOTH
|
70 |
+
);
|
71 |
+
|
72 |
+
if ( 0 === count( $url_keys ) ) {
|
73 |
+
return $template_vars;
|
74 |
+
}
|
75 |
+
|
76 |
+
$lang = static::get_request_lang();
|
77 |
+
|
78 |
+
if ( false === $lang ) {
|
79 |
+
return $template_vars;
|
80 |
+
}
|
81 |
+
|
82 |
+
foreach ( $url_keys as $key => $value ) {
|
83 |
+
$template_vars[ $key ] = apply_filters( 'wpml_permalink', $value, $lang );
|
84 |
+
}
|
85 |
+
|
86 |
+
return $template_vars;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Translates the URL of the public Views, the ones selectable in the Views selector.
|
91 |
+
*
|
92 |
+
* @since 5.2.1
|
93 |
+
*
|
94 |
+
* @param array<string,array<string,mixed>> $public_views The original data for the current public Views.
|
95 |
+
*
|
96 |
+
* @return array<string,array<string,mixed>> $public_views The modified data for the current public Views.
|
97 |
+
*/
|
98 |
+
public static function translate_public_views_urls( $public_views = [] ) {
|
99 |
+
if ( ! is_array( $public_views ) ) {
|
100 |
+
return $public_views;
|
101 |
+
}
|
102 |
+
|
103 |
+
$lang = static::get_request_lang();
|
104 |
+
|
105 |
+
if ( false === $lang ) {
|
106 |
+
return $public_views;
|
107 |
+
}
|
108 |
+
|
109 |
+
array_walk(
|
110 |
+
$public_views,
|
111 |
+
static function ( $view_data ) use ( $lang ) {
|
112 |
+
if ( ! isset( $view_data->view_url ) ) {
|
113 |
+
return;
|
114 |
+
}
|
115 |
+
$view_data->view_url = apply_filters( 'wpml_permalink', $view_data->view_url, $lang );
|
116 |
+
}
|
117 |
+
);
|
118 |
+
|
119 |
+
return $public_views;
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Updates the Views v2 request URI used to set up the `$_SERVER['REQUEST_URI']` in the `View::setup_the_loop`
|
124 |
+
* method to make sure it will point to the correct URL.
|
125 |
+
*
|
126 |
+
* @since 5.2.1
|
127 |
+
*
|
128 |
+
* @param string $request_uri The original request URI.
|
129 |
+
*
|
130 |
+
* @return string The corrected request URI.
|
131 |
+
*/
|
132 |
+
public static function translate_view_request_uri( $request_uri ) {
|
133 |
+
if ( ! is_string( $request_uri ) ) {
|
134 |
+
return $request_uri;
|
135 |
+
}
|
136 |
+
|
137 |
+
$lang = static::get_request_lang();
|
138 |
+
|
139 |
+
if ( false === $lang ) {
|
140 |
+
return $request_uri;
|
141 |
+
}
|
142 |
+
|
143 |
+
if ( static::using_subdir() && strpos( $request_uri, '/' . $lang ) !== 0 ) {
|
144 |
+
$request_uri = '/' . $lang . $request_uri;
|
145 |
+
}
|
146 |
+
|
147 |
+
return $request_uri;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Returns whether the current WPML URL translation setting is the sub-directory one (e.g. `http://foo.bar/it`) or
|
152 |
+
* not.
|
153 |
+
*
|
154 |
+
* @since 5.2.1
|
155 |
+
*
|
156 |
+
* @return bool Whether the current WPML URL translation setting is the sub-directory one or not.
|
157 |
+
*/
|
158 |
+
protected static function using_subdir() {
|
159 |
+
/** @var \SitePress $sitepress */
|
160 |
+
global $sitepress;
|
161 |
+
$lang_negotiation = (int) $sitepress->get_setting( 'language_negotiation_type' );
|
162 |
+
|
163 |
+
return WPML_LANGUAGE_NEGOTIATION_TYPE_DIRECTORY === $lang_negotiation;
|
164 |
+
}
|
165 |
+
}
|
src/Tribe/Integrations/WPML/WPML.php
CHANGED
@@ -1,4 +1,7 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
2 |
/**
|
3 |
* Class Tribe__Events__Integrations__WPML__WPML
|
4 |
*
|
@@ -83,6 +86,17 @@ class Tribe__Events__Integrations__WPML__WPML {
|
|
83 |
$option = Tribe__Events__Integrations__WPML__Option::instance();
|
84 |
add_filter( 'tribe_get_single_option', [ $option, 'translate' ], 20, 3 );
|
85 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
|
88 |
protected function setup_cache_expiration_triggers() {
|
1 |
<?php
|
2 |
+
|
3 |
+
use Tribe\Events\Integrations\WPML\Views\V2\Filters as Views_V2_Filters;
|
4 |
+
|
5 |
/**
|
6 |
* Class Tribe__Events__Integrations__WPML__WPML
|
7 |
*
|
86 |
$option = Tribe__Events__Integrations__WPML__Option::instance();
|
87 |
add_filter( 'tribe_get_single_option', [ $option, 'translate' ], 20, 3 );
|
88 |
}
|
89 |
+
|
90 |
+
/*
|
91 |
+
* Handle Views v2 URLs in all the places that's required.
|
92 |
+
*
|
93 |
+
* Commented out as this is not a reliably working implementation.
|
94 |
+
*
|
95 |
+
add_filter( 'tribe_events_views_v2_view_url', [ Views_V2_Filters::class, 'translate_view_url' ] );
|
96 |
+
add_filter( 'tribe_events_views_v2_view_template_vars', [ Views_V2_Filters::class, 'translate_template_vars_urls' ] );
|
97 |
+
add_filter( 'tribe_events_views_v2_view_public_views', [ Views_V2_Filters::class, 'translate_public_views_urls' ] );
|
98 |
+
add_filter( 'tribe_events_views_v2_request_uri', [ Views_V2_Filters::class, 'translate_view_request_uri' ] );
|
99 |
+
*/
|
100 |
}
|
101 |
|
102 |
protected function setup_cache_expiration_triggers() {
|
src/Tribe/Integrations/X_Theme/X_Theme.php
CHANGED
@@ -27,7 +27,7 @@ class Tribe__Events__Integrations__X_Theme__X_Theme {
|
|
27 |
}
|
28 |
|
29 |
/**
|
30 |
-
* Hooks the filters and actions
|
31 |
*/
|
32 |
public function hook() {
|
33 |
add_filter( 'template_include', array( $this, 'filter_template_include' ) );
|
27 |
}
|
28 |
|
29 |
/**
|
30 |
+
* Hooks the filters and actions needed for this integration to work.
|
31 |
*/
|
32 |
public function hook() {
|
33 |
add_filter( 'template_include', array( $this, 'filter_template_include' ) );
|
src/Tribe/Main.php
CHANGED
@@ -35,7 +35,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
35 |
const VENUE_POST_TYPE = 'tribe_venue';
|
36 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
37 |
|
38 |
-
const VERSION = '5.2.
|
39 |
|
40 |
/**
|
41 |
* Min Pro Addon
|
@@ -615,6 +615,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
615 |
|
616 |
// The Views v2 service provider.
|
617 |
tribe_register_provider( Tribe\Events\Views\V2\Service_Provider::class );
|
|
|
618 |
|
619 |
// Register and start the Customizer Sections
|
620 |
if ( ! tribe_events_views_v2_is_enabled() ) {
|
35 |
const VENUE_POST_TYPE = 'tribe_venue';
|
36 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
37 |
|
38 |
+
const VERSION = '5.2.1.2';
|
39 |
|
40 |
/**
|
41 |
* Min Pro Addon
|
615 |
|
616 |
// The Views v2 service provider.
|
617 |
tribe_register_provider( Tribe\Events\Views\V2\Service_Provider::class );
|
618 |
+
tribe_register_provider( Tribe\Events\Views\V2\Widgets\Service_Provider::class );
|
619 |
|
620 |
// Register and start the Customizer Sections
|
621 |
if ( ! tribe_events_views_v2_is_enabled() ) {
|
src/Tribe/Views/V2/Assets.php
CHANGED
@@ -99,6 +99,49 @@ class Assets extends \tad_DI52_ServiceProvider {
|
|
99 |
]
|
100 |
);
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
tribe_asset(
|
103 |
$plugin,
|
104 |
'tribe-events-views-v2-bootstrap-datepicker',
|
99 |
]
|
100 |
);
|
101 |
|
102 |
+
/**
|
103 |
+
* @todo: @paulmskim figure out how to enqueue only when widget is available.
|
104 |
+
* @todo: @paulmskim commented out for release so widget styles do not enqueue, uncomment when actually releasing.
|
105 |
+
*/
|
106 |
+
// tribe_asset(
|
107 |
+
// $plugin,
|
108 |
+
// 'tribe-events-widgets-v2-skeleton',
|
109 |
+
// 'widgets-skeleton.css',
|
110 |
+
// [
|
111 |
+
// 'tribe-common-skeleton-style',
|
112 |
+
// ],
|
113 |
+
// 'wp_enqueue_scripts',
|
114 |
+
// [
|
115 |
+
// 'priority' => 10,
|
116 |
+
// 'conditionals' => [ $this, 'should_enqueue_frontend' ],
|
117 |
+
// 'groups' => [ static::$group_key ],
|
118 |
+
// ]
|
119 |
+
// );
|
120 |
+
|
121 |
+
/**
|
122 |
+
* @todo: @paulmskim figure out how to enqueue only when widget is available.
|
123 |
+
* @todo: @paulmskim commented out for release so widget styles do not enqueue, uncomment when actually releasing.
|
124 |
+
*/
|
125 |
+
// tribe_asset(
|
126 |
+
// $plugin,
|
127 |
+
// 'tribe-events-widgets-v2-full',
|
128 |
+
// 'widgets-full.css',
|
129 |
+
// [
|
130 |
+
// 'tribe-common-full-style',
|
131 |
+
// 'tribe-events-widgets-v2-skeleton',
|
132 |
+
// ],
|
133 |
+
// 'wp_enqueue_scripts',
|
134 |
+
// [
|
135 |
+
// 'priority' => 10,
|
136 |
+
// 'conditionals' => [
|
137 |
+
// 'operator' => 'AND',
|
138 |
+
// [ $this, 'should_enqueue_frontend' ],
|
139 |
+
// [ $this, 'should_enqueue_full_styles' ],
|
140 |
+
// ],
|
141 |
+
// 'groups' => [ static::$group_key ],
|
142 |
+
// ]
|
143 |
+
// );
|
144 |
+
|
145 |
tribe_asset(
|
146 |
$plugin,
|
147 |
'tribe-events-views-v2-bootstrap-datepicker',
|
src/Tribe/Views/V2/Hooks.php
CHANGED
@@ -552,7 +552,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
552 |
*
|
553 |
* @since 4.9.13
|
554 |
*
|
555 |
-
* @param array $fields Fields that were passed for the
|
556 |
*
|
557 |
* @return array Fields after changing the tooltip.
|
558 |
*/
|
@@ -571,7 +571,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
571 |
*
|
572 |
* @since 4.9.13
|
573 |
*
|
574 |
-
* @param array $plugins List of
|
575 |
*
|
576 |
* @return array
|
577 |
*/
|
@@ -833,7 +833,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
833 |
'tribe-events-views-v2-full',
|
834 |
];
|
835 |
|
836 |
-
//
|
837 |
$keys = array_keys( $sheets, 'tribe-events-calendar-style' );
|
838 |
if ( ! empty( $keys ) ) {
|
839 |
foreach ( $keys as $key ) {
|
552 |
*
|
553 |
* @since 4.9.13
|
554 |
*
|
555 |
+
* @param array $fields Fields that were passed for the Settings tab.
|
556 |
*
|
557 |
* @return array Fields after changing the tooltip.
|
558 |
*/
|
571 |
*
|
572 |
* @since 4.9.13
|
573 |
*
|
574 |
+
* @param array $plugins List of plugins to be checked.
|
575 |
*
|
576 |
* @return array
|
577 |
*/
|
833 |
'tribe-events-views-v2-full',
|
834 |
];
|
835 |
|
836 |
+
// Dequeue legacy sheets.
|
837 |
$keys = array_keys( $sheets, 'tribe-events-calendar-style' );
|
838 |
if ( ! empty( $keys ) ) {
|
839 |
foreach ( $keys as $key ) {
|
src/Tribe/Views/V2/Rest_Endpoint.php
CHANGED
@@ -48,19 +48,38 @@ class Rest_Endpoint {
|
|
48 |
protected static $did_rest_authentication_errors;
|
49 |
|
50 |
/**
|
51 |
-
* Returns the
|
|
|
|
|
|
|
52 |
*
|
53 |
* @since 4.9.2
|
|
|
54 |
*
|
55 |
-
* @return string
|
56 |
*/
|
57 |
public function get_url() {
|
58 |
-
|
|
|
|
|
59 |
$url = admin_url( 'admin-ajax.php' );
|
60 |
-
|
|
|
|
|
61 |
}
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
/**
|
@@ -140,12 +159,14 @@ class Rest_Endpoint {
|
|
140 |
* Register the endpoint if available.
|
141 |
*
|
142 |
* @since 4.9.7
|
|
|
143 |
*
|
144 |
* @return boolean If we registered the endpoint.
|
145 |
*/
|
146 |
public function register() {
|
147 |
return register_rest_route( static::ROOT_NAMESPACE, '/html', [
|
148 |
-
|
|
|
149 |
// @todo Make sure we do proper handling of cache longer then 12h.
|
150 |
'permission_callback' => static function ( Request $request ) {
|
151 |
|
@@ -188,13 +209,14 @@ class Rest_Endpoint {
|
|
188 |
* the REST API still have the Views V2 working.
|
189 |
*
|
190 |
* @since 4.9.7
|
|
|
191 |
*
|
192 |
* @param array $params Associative array with the params that will be used on this mocked request
|
193 |
*
|
194 |
* @return Request The mocked request.
|
195 |
*/
|
196 |
public function get_mocked_rest_request( array $params ) {
|
197 |
-
$request
|
198 |
$arguments = $this->get_request_arguments();
|
199 |
|
200 |
foreach ( $params as $key => $value ) {
|
@@ -224,11 +246,12 @@ class Rest_Endpoint {
|
|
224 |
* and use the same method behind the scenes to make sure we have consistency.
|
225 |
*
|
226 |
* @since 4.9.7
|
227 |
-
*
|
228 |
-
* @return void
|
229 |
*/
|
230 |
public function handle_ajax_request() {
|
231 |
-
|
|
|
|
|
232 |
if ( is_wp_error( $request ) ) {
|
233 |
/**
|
234 |
* @todo Once we have a error handling on the new view we need to throw it here.
|
@@ -300,4 +323,27 @@ class Rest_Endpoint {
|
|
300 |
|
301 |
return $errors;
|
302 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
}
|
48 |
protected static $did_rest_authentication_errors;
|
49 |
|
50 |
/**
|
51 |
+
* Returns the URL View will use to fetch their content.
|
52 |
+
*
|
53 |
+
* Depending on whether the REST API is enabled or not on the site, the URL might be a REST API one or an
|
54 |
+
* admin AJAX one.
|
55 |
*
|
56 |
* @since 4.9.2
|
57 |
+
* @since 5.2.1 Add filtering to the URL.
|
58 |
*
|
59 |
+
* @return string The URL of the backend endpoint Views will use to fetch their content.
|
60 |
*/
|
61 |
public function get_url() {
|
62 |
+
$rest_available = $this->is_available();
|
63 |
+
|
64 |
+
if ( ! $rest_available ) {
|
65 |
$url = admin_url( 'admin-ajax.php' );
|
66 |
+
$url = add_query_arg( [ 'action' => static::$ajax_action ], $url );
|
67 |
+
} else {
|
68 |
+
$url = get_rest_url( null, static::ROOT_NAMESPACE . '/html' );
|
69 |
}
|
70 |
|
71 |
+
/**
|
72 |
+
* Filters the URL Views should use to fetch their contents from the backend.
|
73 |
+
*
|
74 |
+
* @since 5.2.1
|
75 |
+
*
|
76 |
+
* @param string $url The View endpoint URL, either a REST API URL or a admin-ajax.php fallback URL if REST API
|
77 |
+
* is not available.
|
78 |
+
* @param bool $rest_available Whether the REST API endpoing URL is available on the current site or not.
|
79 |
+
*/
|
80 |
+
$url = apply_filters( 'tribe_events_views_v2_endpoint_url', $url, $rest_available );
|
81 |
+
|
82 |
+
return $url;
|
83 |
}
|
84 |
|
85 |
/**
|
159 |
* Register the endpoint if available.
|
160 |
*
|
161 |
* @since 4.9.7
|
162 |
+
* @since 5.2.1 Add support for the POST method.
|
163 |
*
|
164 |
* @return boolean If we registered the endpoint.
|
165 |
*/
|
166 |
public function register() {
|
167 |
return register_rest_route( static::ROOT_NAMESPACE, '/html', [
|
168 |
+
// Support both GET and POST HTTP methods: we originally used GET.
|
169 |
+
'methods' => [ Server::READABLE, Server::CREATABLE ],
|
170 |
// @todo Make sure we do proper handling of cache longer then 12h.
|
171 |
'permission_callback' => static function ( Request $request ) {
|
172 |
|
209 |
* the REST API still have the Views V2 working.
|
210 |
*
|
211 |
* @since 4.9.7
|
212 |
+
* @since 5.2.1 Changed the mock request HTTP method to POST (was GET).
|
213 |
*
|
214 |
* @param array $params Associative array with the params that will be used on this mocked request
|
215 |
*
|
216 |
* @return Request The mocked request.
|
217 |
*/
|
218 |
public function get_mocked_rest_request( array $params ) {
|
219 |
+
$request = new Request( 'POST', static::ROOT_NAMESPACE . '/html' );
|
220 |
$arguments = $this->get_request_arguments();
|
221 |
|
222 |
foreach ( $params as $key => $value ) {
|
246 |
* and use the same method behind the scenes to make sure we have consistency.
|
247 |
*
|
248 |
* @since 4.9.7
|
249 |
+
* @since 5.2.1 Look up the POST data before the GET one to process the request.
|
|
|
250 |
*/
|
251 |
public function handle_ajax_request() {
|
252 |
+
// Use the POST method data, if set; else fallback on the GET data.
|
253 |
+
$source = isset( $_POST ) ? $_POST : $_GET;
|
254 |
+
$request = $this->get_mocked_rest_request( $source );
|
255 |
if ( is_wp_error( $request ) ) {
|
256 |
/**
|
257 |
* @todo Once we have a error handling on the new view we need to throw it here.
|
323 |
|
324 |
return $errors;
|
325 |
}
|
326 |
+
|
327 |
+
/**
|
328 |
+
* Returns the filtered HTTP method Views should use to fetch their content from the backend endpoint.
|
329 |
+
*
|
330 |
+
* @since 5.2.1
|
331 |
+
*
|
332 |
+
* @return string The filtered HTTP method Views should use to fetch their content from the back-end endpoint.
|
333 |
+
*/
|
334 |
+
public function get_method() {
|
335 |
+
/**
|
336 |
+
* Filters the HTTP method Views should use to fetch their contents calling the back-end endpoint.
|
337 |
+
*
|
338 |
+
* @since 5.2.1
|
339 |
+
*
|
340 |
+
* @param string $method The HTTP method Views will use to fetch their content. Either `POST` (default) or
|
341 |
+
* `GET`. Invalid values will be set to the default `POST`.
|
342 |
+
*/
|
343 |
+
$method = strtoupper( (string) apply_filters( 'tribe_events_views_v2_endpoint_method', 'POST' ) );
|
344 |
+
|
345 |
+
$method = in_array( $method, [ 'POST', 'GET' ], true ) ? $method : 'POST';
|
346 |
+
|
347 |
+
return $method;
|
348 |
+
}
|
349 |
}
|
src/Tribe/Views/V2/Template.php
CHANGED
@@ -60,7 +60,15 @@ class Template extends Base_Template {
|
|
60 |
$context = wp_parse_args( $context_overrides, $this->context );
|
61 |
$context['_context'] = $context;
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
65 |
|
66 |
/**
|
60 |
$context = wp_parse_args( $context_overrides, $this->context );
|
61 |
$context['_context'] = $context;
|
62 |
|
63 |
+
$template_slug = $this->view->get_template_slug();
|
64 |
+
if ( ! empty( $this->view->get_template_path() ) ) {
|
65 |
+
$template_slug = [
|
66 |
+
$this->view->get_template_path(),
|
67 |
+
$template_slug,
|
68 |
+
];
|
69 |
+
}
|
70 |
+
|
71 |
+
return parent::template( $template_slug, $context, false );
|
72 |
}
|
73 |
|
74 |
/**
|
src/Tribe/Views/V2/Template_Bootstrap.php
CHANGED
@@ -338,7 +338,25 @@ class Template_Bootstrap {
|
|
338 |
* @return string Path to the File that initializes the template
|
339 |
*/
|
340 |
public function filter_template_include( $template ) {
|
341 |
-
$query
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
|
343 |
// Global 404 needs to be respected.
|
344 |
if ( $query->is_404() ) {
|
@@ -350,7 +368,6 @@ class Template_Bootstrap {
|
|
350 |
return $template;
|
351 |
}
|
352 |
|
353 |
-
$context = tribe_context();
|
354 |
$view_slug = $context->get( 'view' );
|
355 |
$is_embed = V1_Templates::is_embed() || 'embed' === $view_slug;
|
356 |
|
338 |
* @return string Path to the File that initializes the template
|
339 |
*/
|
340 |
public function filter_template_include( $template ) {
|
341 |
+
$query = tribe_get_global_query_object();
|
342 |
+
$context = tribe_context();
|
343 |
+
|
344 |
+
/**
|
345 |
+
* Allows filtering the loading of our proprietary templates.
|
346 |
+
*
|
347 |
+
* @since 5.2.1
|
348 |
+
*
|
349 |
+
* @param boolean $load Whether we should load the theme templates instead of the Tribe templates. Default false.
|
350 |
+
* @param string $template The template located by WordPress.
|
351 |
+
* @param Tribe__Context $context The singleton, immutable, global object instance.
|
352 |
+
* @param WP_Query $query The global $wp_query, the $wp_the_query if $wp_query empty, null otherwise. From tribe_get_global_query_object() above.
|
353 |
+
*/
|
354 |
+
$load_template = apply_filters( 'tribe_events_views_v2_use_wp_template_hierarchy', false, $template, $context, $query );
|
355 |
+
|
356 |
+
// Let others decide if they want to load our templates or not.
|
357 |
+
if ( (bool) $load_template ) {
|
358 |
+
return $template;
|
359 |
+
}
|
360 |
|
361 |
// Global 404 needs to be respected.
|
362 |
if ( $query->is_404() ) {
|
368 |
return $template;
|
369 |
}
|
370 |
|
|
|
371 |
$view_slug = $context->get( 'view' );
|
372 |
$is_embed = V1_Templates::is_embed() || 'embed' === $view_slug;
|
373 |
|
src/Tribe/Views/V2/View.php
CHANGED
@@ -78,6 +78,15 @@ class View implements View_Interface {
|
|
78 |
*/
|
79 |
protected $template_slug;
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
/**
|
82 |
* The Template instance the view will use to locate, manage and render its template.
|
83 |
*
|
@@ -640,6 +649,13 @@ class View implements View_Interface {
|
|
640 |
return $this->slug;
|
641 |
}
|
642 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
643 |
/**
|
644 |
* {@inheritDoc}
|
645 |
*/
|
@@ -720,6 +736,10 @@ class View implements View_Interface {
|
|
720 |
public function get_url( $canonical = false, $force = false ) {
|
721 |
$category = $this->context->get( 'event_category', false );
|
722 |
|
|
|
|
|
|
|
|
|
723 |
$query_args = [
|
724 |
'post_type' => TEC::POSTTYPE,
|
725 |
'eventDisplay' => $this->slug,
|
@@ -1356,6 +1376,7 @@ class View implements View_Interface {
|
|
1356 |
* Sets up the View template variables.
|
1357 |
*
|
1358 |
* @since 4.9.4
|
|
|
1359 |
*
|
1360 |
* @return array An array of Template variables for the View Template.
|
1361 |
*/
|
@@ -1405,6 +1426,9 @@ class View implements View_Interface {
|
|
1405 |
}
|
1406 |
);
|
1407 |
|
|
|
|
|
|
|
1408 |
$template_vars = [
|
1409 |
'title' => $this->get_title( $events ),
|
1410 |
'events' => $events,
|
@@ -1419,7 +1443,8 @@ class View implements View_Interface {
|
|
1419 |
'today' => $today,
|
1420 |
'now' => $this->context->get( 'now', 'now' ),
|
1421 |
'request_date' => Dates::build_date_object( $this->context->get( 'event_date', $today ) ),
|
1422 |
-
'rest_url' =>
|
|
|
1423 |
'rest_nonce' => $rest_nonce,
|
1424 |
'should_manage_url' => $this->should_manage_url,
|
1425 |
'today_url' => $today_url,
|
@@ -1516,6 +1541,15 @@ class View implements View_Interface {
|
|
1516 |
'/'
|
1517 |
);
|
1518 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1519 |
return $request_uri;
|
1520 |
}
|
1521 |
|
78 |
*/
|
79 |
protected $template_slug;
|
80 |
|
81 |
+
/**
|
82 |
+
* The template path will be used as a prefix for template slug when locating its template files.
|
83 |
+
*
|
84 |
+
* @since 5.2.1
|
85 |
+
*
|
86 |
+
* @var string
|
87 |
+
*/
|
88 |
+
protected $template_path = '';
|
89 |
+
|
90 |
/**
|
91 |
* The Template instance the view will use to locate, manage and render its template.
|
92 |
*
|
649 |
return $this->slug;
|
650 |
}
|
651 |
|
652 |
+
/**
|
653 |
+
* {@inheritDoc}
|
654 |
+
*/
|
655 |
+
public function get_template_path() {
|
656 |
+
return $this->template_path;
|
657 |
+
}
|
658 |
+
|
659 |
/**
|
660 |
* {@inheritDoc}
|
661 |
*/
|
736 |
public function get_url( $canonical = false, $force = false ) {
|
737 |
$category = $this->context->get( 'event_category', false );
|
738 |
|
739 |
+
if ( is_array( $category ) ) {
|
740 |
+
$category = Arr::to_list( reset( $category ) );
|
741 |
+
}
|
742 |
+
|
743 |
$query_args = [
|
744 |
'post_type' => TEC::POSTTYPE,
|
745 |
'eventDisplay' => $this->slug,
|
1376 |
* Sets up the View template variables.
|
1377 |
*
|
1378 |
* @since 4.9.4
|
1379 |
+
* @since 5.2.1 Add the `rest_method` to the template variables.
|
1380 |
*
|
1381 |
* @return array An array of Template variables for the View Template.
|
1382 |
*/
|
1426 |
}
|
1427 |
);
|
1428 |
|
1429 |
+
/** @var Rest_Endpoint $endpoint */
|
1430 |
+
$endpoint = tribe( Rest_Endpoint::class );
|
1431 |
+
|
1432 |
$template_vars = [
|
1433 |
'title' => $this->get_title( $events ),
|
1434 |
'events' => $events,
|
1443 |
'today' => $today,
|
1444 |
'now' => $this->context->get( 'now', 'now' ),
|
1445 |
'request_date' => Dates::build_date_object( $this->context->get( 'event_date', $today ) ),
|
1446 |
+
'rest_url' => $endpoint->get_url(),
|
1447 |
+
'rest_method' => $endpoint->get_method(),
|
1448 |
'rest_nonce' => $rest_nonce,
|
1449 |
'should_manage_url' => $this->should_manage_url,
|
1450 |
'today_url' => $today_url,
|
1541 |
'/'
|
1542 |
);
|
1543 |
|
1544 |
+
/**
|
1545 |
+
* Allows filtering the Views request URI that will be used to set up the loop.
|
1546 |
+
*
|
1547 |
+
* @since 5.2.1
|
1548 |
+
*
|
1549 |
+
* @param string $request_uri The parsed request URI.
|
1550 |
+
*/
|
1551 |
+
$request_uri = apply_filters( 'tribe_events_views_v2_request_uri', $request_uri );
|
1552 |
+
|
1553 |
return $request_uri;
|
1554 |
}
|
1555 |
|
src/Tribe/Views/V2/View_Interface.php
CHANGED
@@ -89,6 +89,15 @@ interface View_Interface extends View_Url_Provider_Interface, Repository_User_I
|
|
89 |
*/
|
90 |
public function get_slug();
|
91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
/**
|
93 |
* Returns all the parent views that the current class as an array of slugs.
|
94 |
*
|
89 |
*/
|
90 |
public function get_slug();
|
91 |
|
92 |
+
/**
|
93 |
+
* Returns a View template path, usually a prefix for the template slug.
|
94 |
+
*
|
95 |
+
* @since 5.2.1
|
96 |
+
*
|
97 |
+
* @return string The view template path, usually a prefix for the template slug.
|
98 |
+
*/
|
99 |
+
public function get_template_path();
|
100 |
+
|
101 |
/**
|
102 |
* Returns all the parent views that the current class as an array of slugs.
|
103 |
*
|
src/Tribe/Views/V2/Views/Latest_Past_View.php
CHANGED
@@ -34,12 +34,13 @@ class Latest_Past_View extends View {
|
|
34 |
protected static $publicly_visible = true;
|
35 |
|
36 |
/**
|
37 |
-
*
|
38 |
*
|
39 |
* @since 5.1.0
|
40 |
*
|
41 |
* @var array
|
42 |
*/
|
|
|
43 |
protected $safelist = [
|
44 |
// Standard View Components.
|
45 |
'components/loader',
|
@@ -152,7 +153,7 @@ class Latest_Past_View extends View {
|
|
152 |
}
|
153 |
|
154 |
/**
|
155 |
-
* Add Filters for
|
156 |
*
|
157 |
* @since 5.1.0
|
158 |
*/
|
@@ -162,19 +163,19 @@ class Latest_Past_View extends View {
|
|
162 |
}
|
163 |
|
164 |
/**
|
165 |
-
* Connect
|
166 |
* Templates from Displaying when the Latest Past Events Displays.
|
167 |
*
|
168 |
* @since 5.1.0
|
169 |
*/
|
170 |
public function filter_template_done( $html ) {
|
171 |
-
add_filter( 'tribe_template_done', [ $this, 'filter_template_display_by_safelist' ], 10, 4 );
|
172 |
|
|
|
173 |
return $html;
|
174 |
}
|
175 |
|
176 |
/**
|
177 |
-
* Filter the Template Files and Only Return HTML if in
|
178 |
*
|
179 |
* @since 5.1.0
|
180 |
*
|
34 |
protected static $publicly_visible = true;
|
35 |
|
36 |
/**
|
37 |
+
* Safe list of Templates to display when Latest Past Events is Active.
|
38 |
*
|
39 |
* @since 5.1.0
|
40 |
*
|
41 |
* @var array
|
42 |
*/
|
43 |
+
|
44 |
protected $safelist = [
|
45 |
// Standard View Components.
|
46 |
'components/loader',
|
153 |
}
|
154 |
|
155 |
/**
|
156 |
+
* Add Filters for safe list and Adding View HTML.
|
157 |
*
|
158 |
* @since 5.1.0
|
159 |
*/
|
163 |
}
|
164 |
|
165 |
/**
|
166 |
+
* Connect safe list Filter to Tribe Template Done to Prevent some of the current View's
|
167 |
* Templates from Displaying when the Latest Past Events Displays.
|
168 |
*
|
169 |
* @since 5.1.0
|
170 |
*/
|
171 |
public function filter_template_done( $html ) {
|
|
|
172 |
|
173 |
+
add_filter( 'tribe_template_done', [ $this, 'filter_template_display_by_safelist' ], 10, 4 );
|
174 |
return $html;
|
175 |
}
|
176 |
|
177 |
/**
|
178 |
+
* Filter the Template Files and Only Return HTML if in safe list.
|
179 |
*
|
180 |
* @since 5.1.0
|
181 |
*
|
src/Tribe/Views/V2/Views/Traits/iCal_Data.php
CHANGED
@@ -10,6 +10,7 @@
|
|
10 |
namespace Tribe\Events\Views\V2\Views\Traits;
|
11 |
|
12 |
use Tribe\Events\Views\V2\View;
|
|
|
13 |
|
14 |
/**
|
15 |
* Trait iCal_Data
|
@@ -107,10 +108,13 @@ trait iCal_Data {
|
|
107 |
* @return string The iCAl URL for the month view.
|
108 |
*/
|
109 |
public function get_month_view_url() {
|
110 |
-
$event_date = $this->context->get( 'event_date',
|
111 |
|
112 |
// If we don't have a date for some reason, give them the default iCal link.
|
113 |
-
$url = ! empty( $event_date )
|
|
|
|
|
|
|
114 |
return $url;
|
115 |
}
|
116 |
}
|
10 |
namespace Tribe\Events\Views\V2\Views\Traits;
|
11 |
|
12 |
use Tribe\Events\Views\V2\View;
|
13 |
+
use Tribe__Date_Utils as Dates;
|
14 |
|
15 |
/**
|
16 |
* Trait iCal_Data
|
108 |
* @return string The iCAl URL for the month view.
|
109 |
*/
|
110 |
public function get_month_view_url() {
|
111 |
+
$event_date = $this->context->get( 'event_date', Dates::build_date_object()->format( Dates::DBYEARMONTHTIMEFORMAT ) );
|
112 |
|
113 |
// If we don't have a date for some reason, give them the default iCal link.
|
114 |
+
$url = ! empty( $event_date )
|
115 |
+
? tribe( 'tec.iCal' )->month_view_ical_link( $event_date )
|
116 |
+
: tribe( 'tec.iCal' )->get_ical_link();
|
117 |
+
|
118 |
return $url;
|
119 |
}
|
120 |
}
|
src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The List Widget View.
|
4 |
+
*
|
5 |
+
* @package Tribe\Events\Views\V2\Views\Widgets
|
6 |
+
* @since 5.2.1
|
7 |
+
*/
|
8 |
+
|
9 |
+
namespace Tribe\Events\Views\V2\Views\Widgets;
|
10 |
+
|
11 |
+
use Tribe\Events\Views\V2\View;
|
12 |
+
use Tribe__Context as Context;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class List_Widget_View
|
16 |
+
*
|
17 |
+
* @since 5.2.1
|
18 |
+
*
|
19 |
+
* @package Tribe\Events\Views\V2\Views\Widgets
|
20 |
+
*/
|
21 |
+
class Widget_List_View extends View {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* The slug for this view.
|
25 |
+
*
|
26 |
+
* @since 5.2.1
|
27 |
+
*
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
protected $slug = 'widget-list';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* The slug for the template path.
|
34 |
+
*
|
35 |
+
* @since 5.2.1
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
protected $template_path = 'widgets';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Visibility for this view.
|
43 |
+
*
|
44 |
+
* @since 5.2.1
|
45 |
+
*
|
46 |
+
* @var bool
|
47 |
+
*/
|
48 |
+
protected static $publicly_visible = false;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Whether the View should display the events bar or not.
|
52 |
+
*
|
53 |
+
* @since 5.2.1
|
54 |
+
*
|
55 |
+
* @var bool
|
56 |
+
*/
|
57 |
+
protected $display_events_bar = false;
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Sets up the View repository arguments from the View context or a provided Context object.
|
61 |
+
*
|
62 |
+
* @since 5.2.1
|
63 |
+
*
|
64 |
+
* @param Context|null $context A context to use to setup the args, or `null` to use the View Context.
|
65 |
+
*
|
66 |
+
* @return array<string,mixed> The arguments, ready to be set on the View repository instance.
|
67 |
+
*/
|
68 |
+
protected function setup_repository_args( Context $context = null ) {
|
69 |
+
$context = null !== $context ? $context : $this->context;
|
70 |
+
|
71 |
+
$args = parent::setup_repository_args( $context );
|
72 |
+
|
73 |
+
return $args;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Overrides the base View method to fix the order of the events in the `past` display mode.
|
78 |
+
*
|
79 |
+
* @since 5.2.1
|
80 |
+
*
|
81 |
+
* @return array<string,mixed> The List View template vars, modified if required.
|
82 |
+
*/
|
83 |
+
protected function setup_template_vars() {
|
84 |
+
$template_vars = parent::setup_template_vars();
|
85 |
+
|
86 |
+
return $template_vars;
|
87 |
+
}
|
88 |
+
}
|
src/Tribe/Views/V2/Widgets/Service_Provider.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The main service provider for the version 2 of the Widgets.
|
4 |
+
*
|
5 |
+
* @since 5.2.1
|
6 |
+
*
|
7 |
+
* @package Tribe\Events\Views\V2\Widgets
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Events\Views\V2\Widgets;
|
11 |
+
|
12 |
+
use Tribe\Events\Views\V2\Views\Widgets\Widget_List_View;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class Service_Provider
|
16 |
+
*
|
17 |
+
* @since 5.2.1
|
18 |
+
*
|
19 |
+
* @package Tribe\Events\Views\V2\Widgets
|
20 |
+
*/
|
21 |
+
class Service_Provider extends \tad_DI52_ServiceProvider {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Variable that holds the name of the widgets being created.
|
25 |
+
*
|
26 |
+
* @since 5.2.1
|
27 |
+
*
|
28 |
+
* @var array<string>
|
29 |
+
*/
|
30 |
+
protected $widgets = [
|
31 |
+
'tribe_events_list_widget',
|
32 |
+
];
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Binds and sets up implementations.
|
36 |
+
*
|
37 |
+
* @since 5.2.1
|
38 |
+
*/
|
39 |
+
public function register() {
|
40 |
+
if ( ! tribe_events_views_v2_is_enabled() ) {
|
41 |
+
return;
|
42 |
+
}
|
43 |
+
|
44 |
+
// Determine if V2 widgets should load.
|
45 |
+
if ( ! tribe_events_widgets_v2_is_enabled() ) {
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
$this->hook();
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Function used to attach the hooks associated with this class.
|
54 |
+
*
|
55 |
+
* @since 5.2.1
|
56 |
+
*/
|
57 |
+
public function hook() {
|
58 |
+
add_filter( 'tribe_widgets', [ $this, 'register_widget' ] );
|
59 |
+
add_filter( 'tribe_events_views', [ $this, 'add_views' ] );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Add the widgets to register with WordPress.
|
64 |
+
*
|
65 |
+
* @since 5.2.1
|
66 |
+
*
|
67 |
+
* @param array<string,string> $widgets An array of widget classes to register.
|
68 |
+
*
|
69 |
+
* @return array<string,string> An array of registered widget classes.
|
70 |
+
*/
|
71 |
+
public function register_widget( $widgets ) {
|
72 |
+
$widgets['tribe_events_list_widget'] = Widget_List::class;
|
73 |
+
|
74 |
+
return $widgets;
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Add the widget views to the view manager.
|
79 |
+
*
|
80 |
+
* @since 5.2.1
|
81 |
+
*
|
82 |
+
* @param array<string,string> $views An associative array of views in the shape `[ <slug> => <class> ]`.
|
83 |
+
*
|
84 |
+
* @return array<string,string> $views The modified array of views in the shape `[ <slug> => <class> ]`.
|
85 |
+
*/
|
86 |
+
public function add_views( $views ) {
|
87 |
+
$views['widget-list'] = Widget_List_View::class;
|
88 |
+
|
89 |
+
return $views;
|
90 |
+
}
|
91 |
+
}
|
src/Tribe/Views/V2/Widgets/Widget_Abstract.php
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget Abstract
|
4 |
+
*
|
5 |
+
* @since 5.2.1
|
6 |
+
*
|
7 |
+
* @package Tribe\Events\Views\V2\Widgets
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Events\Views\V2\Widgets;
|
11 |
+
|
12 |
+
use Tribe\Events\Views\V2\View;
|
13 |
+
use Tribe\Events\Views\V2\View_Interface;
|
14 |
+
use Tribe__Context as Context;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* The abstract all widgets should implement.
|
18 |
+
*
|
19 |
+
* @since 5.2.1
|
20 |
+
*
|
21 |
+
* @package Tribe\Widget
|
22 |
+
*/
|
23 |
+
abstract class Widget_Abstract extends \Tribe\Widget\Widget_Abstract {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* The view interface for the widget.
|
27 |
+
*
|
28 |
+
* @since 5.2.1
|
29 |
+
*
|
30 |
+
* @var View_Interface;
|
31 |
+
*/
|
32 |
+
protected $view;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* The slug of the widget view.
|
36 |
+
*
|
37 |
+
* @since 5.2.1
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
protected $view_slug;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Setup the view for the widget.
|
45 |
+
*
|
46 |
+
* @since 5.2.1
|
47 |
+
*/
|
48 |
+
public function setup_view() {
|
49 |
+
$context = tribe_context();
|
50 |
+
|
51 |
+
// Modifies the Context for the widget params.
|
52 |
+
// @todo update per https://github.com/moderntribe/tribe-common/pull/1451#discussion_r501498990.
|
53 |
+
$context = $this->alter_context( $context );
|
54 |
+
|
55 |
+
// Setup the view instance.
|
56 |
+
$view = View::make( $this->get_view_slug(), $context );
|
57 |
+
|
58 |
+
$view->get_template()->set_values( $this->get_arguments(), false );
|
59 |
+
|
60 |
+
$this->set_view( $view );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Returns the rendered View HTML code.
|
65 |
+
*
|
66 |
+
* @since 5.2.1
|
67 |
+
*
|
68 |
+
* @return string
|
69 |
+
*/
|
70 |
+
public function get_html() {
|
71 |
+
return $this->get_view()->get_html();
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Sets the template view.
|
76 |
+
*
|
77 |
+
* @since 5.2.1
|
78 |
+
*
|
79 |
+
* @param View_Interface $view Which view we are using this template on.
|
80 |
+
*/
|
81 |
+
public function set_view( View_Interface $view ) {
|
82 |
+
$this->view = $view;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Returns the current template view, either set in the constructor or using the `set_view` method.
|
87 |
+
*
|
88 |
+
* @since 5.2.1
|
89 |
+
*
|
90 |
+
* @return View_Interface The current template view.
|
91 |
+
*/
|
92 |
+
public function get_view() {
|
93 |
+
return $this->view;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* {@inheritDoc}
|
98 |
+
*/
|
99 |
+
public function get_view_slug() {
|
100 |
+
return $this->view_slug;
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Alters the widget context with its arguments.
|
105 |
+
*
|
106 |
+
* @todo update in TEC-3620 & TEC-3597
|
107 |
+
*
|
108 |
+
* @since 5.2.1
|
109 |
+
*
|
110 |
+
* @param \Tribe__Context $context Context we will use to build the view.
|
111 |
+
* @param array<string,mixed> $arguments Current set of arguments.
|
112 |
+
*
|
113 |
+
* @return \Tribe__Context Context after widget changes.
|
114 |
+
*/
|
115 |
+
public function alter_context( Context $context, array $arguments = [] ) {
|
116 |
+
// @todo update per https://github.com/moderntribe/tribe-common/pull/1451#discussion_r501498990.
|
117 |
+
$alter_context = $this->args_to_context( $arguments, $context );
|
118 |
+
|
119 |
+
$context = $context->alter( $alter_context );
|
120 |
+
|
121 |
+
return $context;
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Translates widget arguments to their Context argument counterpart.
|
126 |
+
*
|
127 |
+
* @todo update in TEC-3620 & TEC-3597
|
128 |
+
*
|
129 |
+
* @since 5.2.1
|
130 |
+
*
|
131 |
+
* @param array<string,mixed> $arguments Current set of arguments.
|
132 |
+
* @param Context $context The request context.
|
133 |
+
*
|
134 |
+
* @return array<string,mixed> The translated widget arguments.
|
135 |
+
*/
|
136 |
+
protected function args_to_context( array $arguments, Context $context ) {
|
137 |
+
$context_args = [ 'widget' => true ];
|
138 |
+
|
139 |
+
return $context_args;
|
140 |
+
}
|
141 |
+
}
|
src/Tribe/Views/V2/Widgets/Widget_List.php
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* List Widget
|
4 |
+
*
|
5 |
+
* @since 5.2.1
|
6 |
+
*
|
7 |
+
* @package Tribe\Events\Views\V2\Widgets
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Events\Views\V2\Widgets;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class for the List Widget.
|
14 |
+
*
|
15 |
+
* @since 5.2.1
|
16 |
+
*
|
17 |
+
* @package Tribe\Events\Views\V2\Widgets
|
18 |
+
*/
|
19 |
+
class Widget_List extends Widget_Abstract {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* {@inheritDoc}
|
23 |
+
*
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
+
protected $slug = 'tribe_events_list_widget';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* {@inheritDoc}
|
30 |
+
*
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
protected $view_slug = 'widget-list';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* {@inheritDoc}
|
37 |
+
*
|
38 |
+
* @var array<string,mixed>
|
39 |
+
*/
|
40 |
+
protected $default_arguments = [
|
41 |
+
// View options.
|
42 |
+
'view' => null,
|
43 |
+
'should_manage_url' => false,
|
44 |
+
|
45 |
+
// Event widget options.
|
46 |
+
'id' => null,
|
47 |
+
'alias-slugs' => null,
|
48 |
+
'title' => '',
|
49 |
+
'limit' => 5,
|
50 |
+
'no_upcoming_events' => '',
|
51 |
+
'featured_events_only' => false,
|
52 |
+
'tribe_is_list_widget' => true,
|
53 |
+
'jsonld_enable' => true,
|
54 |
+
|
55 |
+
// WP_Widget properties.
|
56 |
+
'id_base' => 'tribe-events-list-widget',
|
57 |
+
'name' => null,
|
58 |
+
'widget_options' => [
|
59 |
+
'classname' => 'tribe-events-list-widget',
|
60 |
+
'description' => null,
|
61 |
+
],
|
62 |
+
'control_options' => [
|
63 |
+
'id_base' => 'tribe-events-list-widget',
|
64 |
+
],
|
65 |
+
];
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @todo update in TEC-3612 & TEC-3613
|
69 |
+
*
|
70 |
+
* {@inheritDoc}
|
71 |
+
*
|
72 |
+
* @var array<string,mixed>
|
73 |
+
*/
|
74 |
+
protected $validate_arguments_map = [
|
75 |
+
'should_manage_url' => 'tribe_is_truthy',
|
76 |
+
'no_upcoming_events' => 'tribe_is_truthy',
|
77 |
+
'featured_events_only' => 'tribe_is_truthy',
|
78 |
+
'jsonld_enable' => 'tribe_is_truthy',
|
79 |
+
];
|
80 |
+
|
81 |
+
/**
|
82 |
+
* @todo update in TEC-3612 & TEC-3613
|
83 |
+
*
|
84 |
+
* {@inheritDoc}
|
85 |
+
*/
|
86 |
+
public function setup() {
|
87 |
+
$this->setup_view();
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* {@inheritDoc}
|
92 |
+
*/
|
93 |
+
public function get_arguments() {
|
94 |
+
$arguments = $this->arguments;
|
95 |
+
|
96 |
+
$arguments['description'] = esc_html__( 'A widget that displays upcoming events.', 'the-events-calendar' );
|
97 |
+
// @todo update name once this widget is ready to replace the existing list widget.
|
98 |
+
$arguments['name'] = esc_html__( 'Events List V2', 'the-events-calendar' );
|
99 |
+
$arguments['widget_options']['description'] = esc_html__( 'A widget that displays upcoming events.', 'the-events-calendar' );
|
100 |
+
|
101 |
+
$arguments = wp_parse_args( $arguments, $this->get_default_arguments() );
|
102 |
+
|
103 |
+
return $this->filter_arguments( $arguments );
|
104 |
+
}
|
105 |
+
}
|
src/Tribe/iCal.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
/**
|
4 |
* Class that implements the export to iCal functionality
|
5 |
* both for list and single events
|
@@ -85,7 +87,14 @@ class Tribe__Events__iCal {
|
|
85 |
public function month_view_ical_link( $event_date = null ) {
|
86 |
$tec = Tribe__Events__Main::instance();
|
87 |
|
88 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
|
91 |
/**
|
1 |
<?php
|
2 |
|
3 |
+
use Tribe__Date_Utils as Dates;
|
4 |
+
|
5 |
/**
|
6 |
* Class that implements the export to iCal functionality
|
7 |
* both for list and single events
|
87 |
public function month_view_ical_link( $event_date = null ) {
|
88 |
$tec = Tribe__Events__Main::instance();
|
89 |
|
90 |
+
// Default to current month if not set.
|
91 |
+
if ( empty( $event_date ) ) {
|
92 |
+
$event_date = Dates::build_date_object()->format( Dates::DBYEARMONTHTIMEFORMAT );
|
93 |
+
}
|
94 |
+
|
95 |
+
$url = $tec->getLink( 'month', $event_date );
|
96 |
+
|
97 |
+
return add_query_arg( [ 'ical' => 1 ], $url );
|
98 |
}
|
99 |
|
100 |
/**
|
src/functions/views/provider.php
CHANGED
@@ -111,3 +111,18 @@ function tribe_events_view_v2_use_period_repository() {
|
|
111 |
*/
|
112 |
return (bool) apply_filters( 'tribe_events_views_v2_use_period_repository', $enabled );
|
113 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
*/
|
112 |
return (bool) apply_filters( 'tribe_events_views_v2_use_period_repository', $enabled );
|
113 |
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Checks whether V2 widgets should load.
|
117 |
+
*
|
118 |
+
* In order the function will check the `TRIBE_EVENTS_WIDGETS_V2_ENABLED` constant,
|
119 |
+
* the `TRIBE_EVENTS_WIDGETS_V2_ENABLED` environment variable.
|
120 |
+
*
|
121 |
+
* @since 5.2.1
|
122 |
+
*
|
123 |
+
* @return bool Whether Widgets v2 should load.
|
124 |
+
*/
|
125 |
+
function tribe_events_widgets_v2_is_enabled() {
|
126 |
+
|
127 |
+
return (bool) defined( 'TRIBE_EVENTS_WIDGETS_V2_ENABLED' ) && TRIBE_EVENTS_WIDGETS_V2_ENABLED;
|
128 |
+
}
|
src/resources/css/freemius.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#toplevel_page_aggregator.menu-top,#toplevel_page_tribe-app-shop.menu-top,#toplevel_page_tribe-common.menu-top,#toplevel_page_tribe-help.menu-top{display:none}.events-cal #fs_connect,.toplevel_page_tribe-common #fs_connect{background-color:#fff;margin:20px 20px 0 2px;max-width:1200px;position:relative;width:auto}.events-cal #fs_connect .fs-visual,.toplevel_page_tribe-common #fs_connect .fs-visual{align-content:center;align-items:center;background-color:transparent;display:flex;margin:0 35px;padding:20px 0 0}.events-cal #fs_connect .fs-visual .fs-site-icon,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon{border:0;bottom:auto;left:auto;margin:0;position:relative;right:auto;top:auto;width:340px}.events-cal #fs_connect .fs-visual .fs-connect-logo,.events-cal #fs_connect .fs-visual .fs-first.dashicons-plus,.events-cal #fs_connect .fs-visual .fs-plugin-icon,.events-cal #fs_connect .fs-visual .fs-second.dashicons-plus,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-connect-logo,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-first.dashicons-plus,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-second.dashicons-plus{display:none}.events-cal #fs_connect .fs-visual .fs-site-icon .dashicons,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon .dashicons{visibility:hidden}.events-cal #fs_connect .fs-visual .fs-site-icon:before,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon:before{background-image:url(../icons/tec-logo-2020.svg);background-position:0;background-repeat:no-repeat;background-size:85%;content:"";display:block;height:100%;position:absolute;width:100%}.events-cal #fs_connect .fs-visual .fs-plugin-icon img,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon img{visibility:hidden}.events-cal #fs_connect .fs-visual .fs-plugin-icon:before,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon:before{background-image:url(../icons/stethoscope.svg);background-position:50%;background-repeat:no-repeat;background-size:75%;content:"";display:block;height:100%;position:absolute;width:100%}.events-cal #fs_connect .fs-content,.toplevel_page_tribe-common #fs_connect .fs-content{padding:20px 35px}.events-cal #fs_connect .fs-content h3,.toplevel_page_tribe-common #fs_connect .fs-content h3{font-size:1.7em;margin-top:0}.events-cal #fs_connect .fs-content p,.toplevel_page_tribe-common #fs_connect .fs-content p{margin-bottom:20px}.events-cal #fs_connect .fs-content p:first-child,.events-cal #fs_connect .fs-content p:last-child,.events-cal #fs_connect .fs-content p:last-of-type,.toplevel_page_tribe-common #fs_connect .fs-content p:first-child,.toplevel_page_tribe-common #fs_connect .fs-content p:last-child,.toplevel_page_tribe-common #fs_connect .fs-content p:last-of-type{margin-bottom:0}.events-cal #fs_connect .fs-content .tribe-powered-by-freemius,.toplevel_page_tribe-common #fs_connect .fs-content .tribe-powered-by-freemius{background-image:url(../icons/freemius-logo.svg);background-position:100%;background-repeat:no-repeat;background-size:100px;font-size:1.1em;font-style:italic;height:30px;line-height:30px;position:absolute;right:45px;top:25px;width:184px}.events-cal #fs_connect .fs-actions,.toplevel_page_tribe-common #fs_connect .fs-actions{background-color:#fff;display:flex;flex-flow:row wrap;padding:20px 35px}.events-cal #fs_connect .fs-actions form,.toplevel_page_tribe-common #fs_connect .fs-actions form{float:none;margin-right:15px;order:1}.events-cal #fs_connect .fs-actions #skip_activation,.toplevel_page_tribe-common #fs_connect .fs-actions #skip_activation{float:none;order:2}.events-cal #fs_connect .fs-actions .button,.toplevel_page_tribe-common #fs_connect .fs-actions .button{height:auto;padding:7px 35px}.events-cal #fs_connect .fs-actions .button.button-primary,.toplevel_page_tribe-common #fs_connect .fs-actions .button.button-primary{padding-left:35px;padding-right:35px}.events-cal #fs_connect .fs-permissions,.toplevel_page_tribe-common #fs_connect .fs-permissions{padding:0;position:relative}.events-cal #fs_connect .fs-permissions .fs-trigger,.toplevel_page_tribe-common #fs_connect .fs-permissions .fs-trigger{left:380px;padding:10px;position:absolute;top:-65px}.events-cal #fs_connect .fs-permissions .fs-switch,.toplevel_page_tribe-common #fs_connect .fs-permissions .fs-switch{height:0;visibility:hidden;width:0}.events-cal #fs_connect .fs-permissions.fs-open,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open{box-shadow:0 1px 2px rgba(0,0,0,.3);-moz-box-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);padding:20px 35px;position:absolute}.events-cal #fs_connect .fs-permissions.fs-open ul,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul{display:flex;flex-wrap:wrap;margin:0}.events-cal #fs_connect .fs-permissions.fs-open ul li,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul li{flex:0 50%;padding-bottom:10px}.events-cal #fs_connect .fs-permissions.fs-open ul li .dashicons,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul li .dashicons{padding-right:15px}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons{background-position:0;background-repeat:no-repeat;background-size:65%}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons:before,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons:before{content:""}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-users,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-users{background-image:url(../icons/freemius-icon-profile.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-settings,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-settings{background-image:url(../icons/freemius-icon-site.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-testimonial,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-testimonial{background-image:url(../icons/freemius-icon-notice.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-plugins,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-plugins{background-image:url(../icons/freemius-icon-plugin.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-menu,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-menu{background-image:url(../icons/freemius-icon-themes.svg)}.events-cal #fs_connect .fs-terms,.toplevel_page_tribe-common #fs_connect .fs-terms{background-color:transparent;bottom:30px;position:absolute;right:10px;width:240px}
|
1 |
+
#toplevel_page_aggregator.menu-top,#toplevel_page_tribe-app-shop.menu-top,#toplevel_page_tribe-common.menu-top,#toplevel_page_tribe-help.menu-top{display:none}.events-cal #fs_connect,.toplevel_page_tribe-common #fs_connect{background-color:#fff;margin:20px 20px 0 2px;max-width:1200px;position:relative;width:auto}.events-cal #fs_connect .fs-visual,.toplevel_page_tribe-common #fs_connect .fs-visual{align-content:center;align-items:center;background-color:transparent;display:flex;margin:0 35px;padding:20px 0 0}.events-cal #fs_connect .fs-visual .fs-site-icon,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon{border:0;bottom:auto;left:auto;margin:0;position:relative;right:auto;top:auto;width:340px}.events-cal #fs_connect .fs-visual .fs-connect-logo,.events-cal #fs_connect .fs-visual .fs-first.dashicons-plus,.events-cal #fs_connect .fs-visual .fs-plugin-icon,.events-cal #fs_connect .fs-visual .fs-second.dashicons-plus,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-connect-logo,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-first.dashicons-plus,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-second.dashicons-plus{display:none}.events-cal #fs_connect .fs-visual .fs-site-icon .dashicons,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon .dashicons{visibility:hidden}.events-cal #fs_connect .fs-visual .fs-site-icon:before,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-site-icon:before{background-image:url(../icons/tec-logo-2020.svg);background-position:0;background-repeat:no-repeat;background-size:85%;content:"";display:block;height:100%;position:absolute;width:100%}.events-cal #fs_connect .fs-visual .fs-plugin-icon img,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon img{visibility:hidden}.events-cal #fs_connect .fs-visual .fs-plugin-icon:before,.toplevel_page_tribe-common #fs_connect .fs-visual .fs-plugin-icon:before{background-image:url(../icons/stethoscope.svg);background-position:50%;background-repeat:no-repeat;background-size:75%;content:"";display:block;height:100%;position:absolute;width:100%}.events-cal #fs_connect .fs-content,.toplevel_page_tribe-common #fs_connect .fs-content{padding:20px 35px}.events-cal #fs_connect .fs-content h3,.toplevel_page_tribe-common #fs_connect .fs-content h3{font-size:1.7em;margin-top:0}.events-cal #fs_connect .fs-content p,.toplevel_page_tribe-common #fs_connect .fs-content p{margin-bottom:20px}.events-cal #fs_connect .fs-content p:first-child,.events-cal #fs_connect .fs-content p:last-child,.events-cal #fs_connect .fs-content p:last-of-type,.toplevel_page_tribe-common #fs_connect .fs-content p:first-child,.toplevel_page_tribe-common #fs_connect .fs-content p:last-child,.toplevel_page_tribe-common #fs_connect .fs-content p:last-of-type{margin-bottom:0}.events-cal #fs_connect .fs-content .tribe-powered-by-freemius,.toplevel_page_tribe-common #fs_connect .fs-content .tribe-powered-by-freemius{background-image:url(../icons/freemius-logo.svg);background-position:100%;background-repeat:no-repeat;background-size:100px;font-size:1.1em;font-style:italic;height:30px;line-height:30px;position:absolute;right:45px;top:25px;width:184px}.events-cal #fs_connect .fs-actions,.toplevel_page_tribe-common #fs_connect .fs-actions{background-color:#fff;display:flex;flex-flow:row wrap;padding:20px 35px}.events-cal #fs_connect .fs-actions form,.toplevel_page_tribe-common #fs_connect .fs-actions form{float:none;margin-right:15px;order:1}.events-cal #fs_connect .fs-actions #skip_activation,.toplevel_page_tribe-common #fs_connect .fs-actions #skip_activation{float:none;order:2}.events-cal #fs_connect .fs-actions .button,.toplevel_page_tribe-common #fs_connect .fs-actions .button{height:auto;padding:7px 35px}.events-cal #fs_connect .fs-actions .button.button-primary,.toplevel_page_tribe-common #fs_connect .fs-actions .button.button-primary{padding-left:35px;padding-right:35px}.events-cal #fs_connect .fs-permissions,.toplevel_page_tribe-common #fs_connect .fs-permissions{padding:0;position:relative}.events-cal #fs_connect .fs-permissions .fs-trigger,.toplevel_page_tribe-common #fs_connect .fs-permissions .fs-trigger{left:380px;padding:10px;position:absolute;top:-65px}.events-cal #fs_connect .fs-permissions .fs-switch,.toplevel_page_tribe-common #fs_connect .fs-permissions .fs-switch{height:0;visibility:hidden;width:0}.events-cal #fs_connect .fs-permissions.fs-open,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open{box-shadow:0 1px 2px rgba(0,0,0,.3);-moz-box-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);padding:20px 35px;position:absolute}.events-cal #fs_connect .fs-permissions.fs-open ul,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul{display:flex;flex-wrap:wrap;margin:0}.events-cal #fs_connect .fs-permissions.fs-open ul li,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul li{flex:0 50%;padding-bottom:10px}.events-cal #fs_connect .fs-permissions.fs-open ul li .dashicons,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul li .dashicons{padding-right:15px}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons{background-position:0;background-repeat:no-repeat;background-size:65%}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons:before,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons:before{content:""}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-users,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-users{background-image:url(../icons/freemius-icon-profile.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-settings,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-settings{background-image:url(../icons/freemius-icon-site.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-testimonial,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-testimonial{background-image:url(../icons/freemius-icon-notice.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-admin-plugins,.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-menu,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-admin-plugins,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-menu{background-image:url(../icons/freemius-icon-plugin.svg)}.events-cal #fs_connect .fs-permissions.fs-open ul .dashicons-menu,.toplevel_page_tribe-common #fs_connect .fs-permissions.fs-open ul .dashicons-menu{background-image:url(../icons/freemius-icon-themes.svg)}.events-cal #fs_connect .fs-terms,.toplevel_page_tribe-common #fs_connect .fs-terms{background-color:transparent;bottom:30px;position:absolute;right:10px;width:240px}
|
src/resources/css/widgets-full.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.tribe-events .tribe-events-widget-events-list__header{margin-bottom:24px}.tribe-events .tribe-events-widget-events-list__event-row--featured .tribe-events-widget-events-list__event-date-tag-datetime:after{background-color:#334aff;content:"";height:100%;left:0;position:absolute;width:3px}.tribe-events .tribe-events-widget-events-list__event-date-tag-month{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#5d5d5d;text-transform:uppercase}.tribe-common--breakpoint-xsmall.tribe-events .tribe-events-widget-events-list__event-title{font-size:18px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-title{font-size:24px;line-height:1.42}.tribe-events .tribe-events-widget-events-list__view-more-link{color:#334aff;text-transform:capitalize}.tribe-events .tribe-events-widget-events-list__view-more-link:active,.tribe-events .tribe-events-widget-events-list__view-more-link:focus,.tribe-events .tribe-events-widget-events-list__view-more-link:hover{color:#334aff;border-bottom-color:#334aff}.tribe-theme-twentyseventeen .tribe-events .tribe-events-widget-events-list__view-more-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-widget-events-list__view-more-link:hover{color:#334aff}
|
src/resources/css/widgets-skeleton.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.tribe-events-view{position:relative}.tribe-events .tribe-events-l-container{padding-bottom:80px;padding-top:64px;min-height:600px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px;min-height:700px}.tribe-events .tribe-events-widget-events-list__header{margin-bottom:24px}.tribe-events .tribe-events-widget-events-list__event-row{flex-wrap:nowrap;margin-bottom:16px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-row{margin-bottom:20px}.tribe-events .tribe-events-widget-events-list__event-row:last-child{margin-bottom:0}.tribe-events .tribe-events-widget-events-list__event-date-tag{flex:none;position:relative;width:64px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-date-tag{width:72px}.tribe-events .tribe-events-widget-events-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-widget-events-list__event-date-tag-daynum,.tribe-events .tribe-events-widget-events-list__event-date-tag-month{margin-bottom:-4px}.tribe-events .tribe-events-widget-events-list__event-datetime-wrapper{margin-bottom:4px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-datetime-wrapper{margin-bottom:0}.tribe-events .tribe-events-widget-events-list__view-more{margin-top:20px}
|
src/resources/js/views/manager.js
CHANGED
@@ -471,7 +471,7 @@ tribe.events.views.manager = {};
|
|
471 |
url: $container.data( 'view-rest-url' ),
|
472 |
accepts: 'html',
|
473 |
dataType: 'html',
|
474 |
-
method: '
|
475 |
'async': true, // async is keyword
|
476 |
beforeSend: obj.ajaxBeforeSend,
|
477 |
complete: obj.ajaxComplete,
|
471 |
url: $container.data( 'view-rest-url' ),
|
472 |
accepts: 'html',
|
473 |
dataType: 'html',
|
474 |
+
method: $container.data( 'view-rest-method' ) || 'POST',
|
475 |
'async': true, // async is keyword
|
476 |
beforeSend: obj.ajaxBeforeSend,
|
477 |
complete: obj.ajaxComplete,
|
src/views/v2/day.php
CHANGED
@@ -9,10 +9,11 @@
|
|
9 |
*
|
10 |
* @link http://m.tri.be/1aiy
|
11 |
*
|
12 |
-
* @version 5.
|
13 |
*
|
14 |
* @var array $events The array containing the events.
|
15 |
* @var string $rest_url The REST URL.
|
|
|
16 |
* @var string $rest_nonce The REST nonce.
|
17 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
18 |
* @var string[] $container_classes Classes used for the container of the view.
|
@@ -32,6 +33,7 @@ if ( empty( $disable_event_search ) ) {
|
|
32 |
data-js="tribe-events-view"
|
33 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
34 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
|
|
35 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
36 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
37 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
9 |
*
|
10 |
* @link http://m.tri.be/1aiy
|
11 |
*
|
12 |
+
* @version 5.2.1
|
13 |
*
|
14 |
* @var array $events The array containing the events.
|
15 |
* @var string $rest_url The REST URL.
|
16 |
+
* @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
|
17 |
* @var string $rest_nonce The REST nonce.
|
18 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
19 |
* @var string[] $container_classes Classes used for the container of the view.
|
33 |
data-js="tribe-events-view"
|
34 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
35 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
36 |
+
data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
|
37 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
38 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
39 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
src/views/v2/list.php
CHANGED
@@ -9,10 +9,11 @@
|
|
9 |
*
|
10 |
* @link http://m.tri.be/1aiy
|
11 |
*
|
12 |
-
* @version 5.
|
13 |
*
|
14 |
* @var array $events The array containing the events.
|
15 |
* @var string $rest_url The REST URL.
|
|
|
16 |
* @var string $rest_nonce The REST nonce.
|
17 |
* @var int $should_manage_url int containing if it should manage the URL.
|
18 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
@@ -31,6 +32,7 @@ if ( empty( $disable_event_search ) ) {
|
|
31 |
data-js="tribe-events-view"
|
32 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
33 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
|
|
34 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
35 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
36 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
9 |
*
|
10 |
* @link http://m.tri.be/1aiy
|
11 |
*
|
12 |
+
* @version 5.2.1
|
13 |
*
|
14 |
* @var array $events The array containing the events.
|
15 |
* @var string $rest_url The REST URL.
|
16 |
+
* @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
|
17 |
* @var string $rest_nonce The REST nonce.
|
18 |
* @var int $should_manage_url int containing if it should manage the URL.
|
19 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
32 |
data-js="tribe-events-view"
|
33 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
34 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
35 |
+
data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
|
36 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
37 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
38 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
src/views/v2/month.php
CHANGED
@@ -12,6 +12,7 @@
|
|
12 |
* @version 5.0.2
|
13 |
*
|
14 |
* @var string $rest_url The REST URL.
|
|
|
15 |
* @var string $rest_nonce The REST nonce.
|
16 |
* @var int $should_manage_url int containing if it should manage the URL.
|
17 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
@@ -30,6 +31,7 @@ if ( empty( $disable_event_search ) ) {
|
|
30 |
data-js="tribe-events-view"
|
31 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
32 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
|
|
33 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
34 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
35 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
12 |
* @version 5.0.2
|
13 |
*
|
14 |
* @var string $rest_url The REST URL.
|
15 |
+
* @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
|
16 |
* @var string $rest_nonce The REST nonce.
|
17 |
* @var int $should_manage_url int containing if it should manage the URL.
|
18 |
* @var bool $disable_event_search Boolean on whether to disable the event search.
|
31 |
data-js="tribe-events-view"
|
32 |
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
33 |
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
34 |
+
data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
|
35 |
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
36 |
<?php foreach ( $container_data as $key => $value ) : ?>
|
37 |
data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
|
src/views/v2/widgets/events-list.php
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var array<\WP_Post> $events The array containing the events.
|
15 |
+
* @var string $rest_url The REST URL.
|
16 |
+
* @var string $rest_nonce The REST nonce.
|
17 |
+
* @var int $should_manage_url int containing if it should manage the URL.
|
18 |
+
* @var array<string> $container_classes Classes used for the container of the view.
|
19 |
+
* @var array<string,mixed> $container_data An additional set of container `data` attributes.
|
20 |
+
* @var string $breakpoint_pointer String we use as pointer to the current view we are setting up with breakpoints.
|
21 |
+
* @var array<string,string> $messages An array of user-facing messages, managed by the View.
|
22 |
+
* @var array<string,bool> $display An array of whether to display specific event meta or not.
|
23 |
+
* @var string $view_more_link The URL to view all events.
|
24 |
+
*/
|
25 |
+
|
26 |
+
$event = (object) [
|
27 |
+
'ID' => 1234,
|
28 |
+
'permalink' => 'https://tri.be/',
|
29 |
+
'title' => 'Puppy time',
|
30 |
+
'cost' => '$12 - $15',
|
31 |
+
'venues' => [
|
32 |
+
(object) [
|
33 |
+
'post_title' => 'BC Place',
|
34 |
+
'address' => '777 Pacific Blvd',
|
35 |
+
'city' => 'Vancouver',
|
36 |
+
'state_province' => 'BC',
|
37 |
+
'zip' => 'V6B 4Y8',
|
38 |
+
'country' => 'Canada',
|
39 |
+
],
|
40 |
+
],
|
41 |
+
'featured' => false,
|
42 |
+
];
|
43 |
+
$events = [
|
44 |
+
$event,
|
45 |
+
];
|
46 |
+
$rest_url = 'https://tri.be/';
|
47 |
+
$rest_nonce = 'a3ghv98awe98';
|
48 |
+
$should_manage_url = '0';
|
49 |
+
$container_classes = [ 'tribe-common', 'tribe-events', 'tribe-events-view', 'tribe-events-widget', 'tribe-events-widget--events-list' ];
|
50 |
+
$container_data = [];
|
51 |
+
$breakpoint_pointer = 'e1a5c9c2-2781-4fcb-b4fa-0ab738292e04';
|
52 |
+
$messages = [];
|
53 |
+
$display = [
|
54 |
+
'cost' => true,
|
55 |
+
'venue' => true,
|
56 |
+
'street' => true,
|
57 |
+
'city' => true,
|
58 |
+
'region' => true,
|
59 |
+
'zip' => true,
|
60 |
+
'country' => true,
|
61 |
+
'phone' => true,
|
62 |
+
'organizer' => true,
|
63 |
+
];
|
64 |
+
$view_more_link = '#';
|
65 |
+
?>
|
66 |
+
<div
|
67 |
+
<?php tribe_classes( $container_classes ); ?>
|
68 |
+
data-js="tribe-events-view"
|
69 |
+
data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
|
70 |
+
data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
|
71 |
+
data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
|
72 |
+
<?php foreach ( $container_data as $key => $value ) : ?>
|
73 |
+
data-view-<?php echo esc_attr( $key ); ?>="<?php echo esc_attr( $value ); ?>"
|
74 |
+
<?php endforeach; ?>
|
75 |
+
<?php if ( ! empty( $breakpoint_pointer ) ) : ?>
|
76 |
+
data-view-breakpoint-pointer="<?php echo esc_attr( $breakpoint_pointer ); ?>"
|
77 |
+
<?php endif; ?>
|
78 |
+
>
|
79 |
+
<div class="tribe-common-l-container">
|
80 |
+
<div class="tribe-events-widget-events-list">
|
81 |
+
<header class="tribe-events-widget-events-list__header">
|
82 |
+
<h3 class="tribe-events-widget-events-list__header-title tribe-common-h6 tribe-common-h--alt">
|
83 |
+
<?php
|
84 |
+
echo esc_html(
|
85 |
+
sprintf(
|
86 |
+
/* translators: %1$s: Event (plural). */
|
87 |
+
_x( 'Upcoming %1$s', 'Title for events list widget.', 'the-events-calendar' ),
|
88 |
+
tribe_get_event_label_plural()
|
89 |
+
)
|
90 |
+
);
|
91 |
+
?>
|
92 |
+
</h3>
|
93 |
+
</header>
|
94 |
+
|
95 |
+
<?php if ( ! empty( $events ) ) : ?>
|
96 |
+
|
97 |
+
<div class="tribe-events-widget-events-list__events">
|
98 |
+
<?php foreach ( $events as $event ) : ?>
|
99 |
+
<?php
|
100 |
+
$this->template(
|
101 |
+
'widgets/events-list/event',
|
102 |
+
[
|
103 |
+
'event' => $event,
|
104 |
+
'display' => $display,
|
105 |
+
]
|
106 |
+
);
|
107 |
+
?>
|
108 |
+
<?php endforeach; ?>
|
109 |
+
</div>
|
110 |
+
|
111 |
+
<?php $this->template( 'widgets/events-list/view-more', [ 'view_more_link' => $view_more_link ] ); ?>
|
112 |
+
|
113 |
+
<?php else : ?>
|
114 |
+
|
115 |
+
<?php // get messages component ?>
|
116 |
+
|
117 |
+
<?php endif; ?>
|
118 |
+
</div>
|
119 |
+
</div>
|
120 |
+
</div>
|
src/views/v2/widgets/events-list/event.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
* @var array<string,bool> $display Associative array of display settings for event meta.
|
16 |
+
*
|
17 |
+
* @see tribe_get_event() For the format of the event object.
|
18 |
+
*/
|
19 |
+
|
20 |
+
$container_classes = [ 'tribe-common-g-row', 'tribe-events-widget-events-list__event-row' ];
|
21 |
+
$container_classes['tribe-events-widget-events-list__event-row--featured'] = $event->featured;
|
22 |
+
|
23 |
+
$event_classes = tribe_get_post_class( [ 'tribe-events-widget-events-list__event' ], $event->ID );
|
24 |
+
?>
|
25 |
+
<div <?php tribe_classes( $container_classes ); ?>>
|
26 |
+
|
27 |
+
<?php $this->template( 'widgets/events-list/event/date-tag', [ 'event' => $event ] ); ?>
|
28 |
+
|
29 |
+
<div class="tribe-events-widget-events-list__event-wrapper tribe-common-g-col">
|
30 |
+
<article <?php tribe_classes( $event_classes ) ?>>
|
31 |
+
<div class="tribe-events-widget-events-list__event-details">
|
32 |
+
|
33 |
+
<header class="tribe-events-widget-events-list__event-header">
|
34 |
+
<?php $this->template( 'widgets/events-list/event/date', [ 'event' => $event ] ); ?>
|
35 |
+
<?php $this->template( 'widgets/events-list/event/title', [ 'event' => $event ] ); ?>
|
36 |
+
</header>
|
37 |
+
|
38 |
+
<?php // $this->template( 'widgets/events-list/event/cost', [ 'event' => $event, 'display' => $display ] ); ?>
|
39 |
+
<?php // $this->template( 'widgets/events-list/event/venue', [ 'event' => $event, 'display' => $display ] ); ?>
|
40 |
+
<?php // $this->template( 'widgets/events-list/event/organizer', [ 'event' => $event, 'display' => $display ] ); ?>
|
41 |
+
|
42 |
+
</div>
|
43 |
+
</article>
|
44 |
+
</div>
|
45 |
+
|
46 |
+
</div>
|
src/views/v2/widgets/events-list/event/cost.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
* @var array<string,bool> $display Associative array of display settings for event meta.
|
16 |
+
*
|
17 |
+
* @see tribe_get_event() For the format of the event object.
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( empty( $event->cost ) || empty( $display['cost'] ) ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
?>
|
24 |
+
<div class="tribe-events-widget-events-list__event-cost tribe-common-b2">
|
25 |
+
<span class="tribe-events-widget-events-list__event-cost-price">
|
26 |
+
<?php echo esc_html( $event->cost ); ?>
|
27 |
+
</span>
|
28 |
+
</div>
|
src/views/v2/widgets/events-list/event/date-tag.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Venue
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/venue.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
|
19 |
+
use Tribe__Date_Utils as Dates;
|
20 |
+
|
21 |
+
/*
|
22 |
+
* If the request date is after the event start date, show the request date to avoid users from seeing dates "in the
|
23 |
+
* past" in relation to the date they requested (or today's date).
|
24 |
+
*/
|
25 |
+
$display_date = empty( $is_past ) && ! empty( $request_date )
|
26 |
+
? max( $event->dates->start_display, $request_date )
|
27 |
+
: $event->dates->start_display;
|
28 |
+
|
29 |
+
$event_month = $display_date->format_i18n( 'M' );
|
30 |
+
$event_day_num = $display_date->format_i18n( 'j' );
|
31 |
+
$event_date_attr = $display_date->format( Dates::DBDATEFORMAT );
|
32 |
+
?>
|
33 |
+
<div class="tribe-events-widget-events-list__event-date-tag tribe-common-g-col">
|
34 |
+
<time class="tribe-events-widget-events-list__event-date-tag-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
|
35 |
+
<span class="tribe-events-widget-events-list__event-date-tag-month">
|
36 |
+
<?php echo esc_html( $event_month ); ?>
|
37 |
+
</span>
|
38 |
+
<span class="tribe-events-widget-events-list__event-date-tag-daynum tribe-common-h2 tribe-common-h4--min-medium">
|
39 |
+
<?php echo esc_html( $event_day_num ); ?>
|
40 |
+
</span>
|
41 |
+
</time>
|
42 |
+
</div>
|
src/views/v2/widgets/events-list/event/date.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Date
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/date.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
use Tribe__Date_Utils as Dates;
|
19 |
+
|
20 |
+
$event_date_attr = $event->dates->start->format( Dates::DBDATEFORMAT );
|
21 |
+
|
22 |
+
?>
|
23 |
+
<div class="tribe-events-widget-events-list__event-datetime-wrapper tribe-common-b2 tribe-common-b3--min-medium">
|
24 |
+
<?php $this->template( 'widgets/events-list/event/date/featured', [ 'event' => $event ] ); ?>
|
25 |
+
<time class="tribe-events-widget-events-list__event-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
|
26 |
+
<?php
|
27 |
+
// The date returned back contains HTML and is already escaped.
|
28 |
+
echo $event->schedule_details->value();
|
29 |
+
?>
|
30 |
+
</time>
|
31 |
+
<?php $this->do_entry_point( 'after_event_datetime' ); ?>
|
32 |
+
</div>
|
src/views/v2/widgets/events-list/event/date/featured.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Featured Icon
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/date/featured.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
|
19 |
+
if ( empty( $event->featured ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<em
|
24 |
+
class="tribe-events-widget-events-list__event-datetime-featured-icon"
|
25 |
+
aria-label="<?php esc_attr_e( 'Featured', 'the-events-calendar' ); ?>"
|
26 |
+
title="<?php esc_attr_e( 'Featured', 'the-events-calendar' ); ?>"
|
27 |
+
>
|
28 |
+
</em>
|
29 |
+
<span class="tribe-events-widget-events-list__event-datetime-featured-text tribe-common-a11y-visual-hide">
|
30 |
+
<?php esc_html_e( 'Featured', 'the-events-calendar' ); ?>
|
31 |
+
</span>
|
src/views/v2/widgets/events-list/event/organizer.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Organizer
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/organizer.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
* @var array<string,bool> $display Associative array of display settings for event meta.
|
16 |
+
*
|
17 |
+
* @see tribe_get_event() For the format of the event object.
|
18 |
+
*/
|
19 |
+
?>
|
src/views/v2/widgets/events-list/event/title.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Title
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/title.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
?>
|
19 |
+
<h3 class="tribe-events-widget-events-list__event-title tribe-common-h7">
|
20 |
+
<a
|
21 |
+
href="<?php echo esc_url( $event->permalink ); ?>"
|
22 |
+
title="<?php echo esc_attr( $event->title ); ?>"
|
23 |
+
rel="bookmark"
|
24 |
+
class="tribe-events-widget-events-list__event-title-link tribe-common-anchor-thin"
|
25 |
+
>
|
26 |
+
<?php
|
27 |
+
// phpcs:ignore
|
28 |
+
echo $event->title;
|
29 |
+
?>
|
30 |
+
</a>
|
31 |
+
</h3>
|
src/views/v2/widgets/events-list/event/venue.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event Venue
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event/venue.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
* @var array<string,bool> $display Associative array of display settings for event meta.
|
16 |
+
*
|
17 |
+
* @see tribe_get_event() For the format of the event object.
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( ! $event->venues->count() ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
|
24 |
+
if (
|
25 |
+
empty( $display['venue'] )
|
26 |
+
&& empty( $display['street'] )
|
27 |
+
&& empty( $display['city'] )
|
28 |
+
&& empty( $display['region'] )
|
29 |
+
&& empty( $display['zip'] )
|
30 |
+
&& empty( $display['country'] )
|
31 |
+
) {
|
32 |
+
return;
|
33 |
+
}
|
34 |
+
|
35 |
+
$venue = $event->venues[0];
|
36 |
+
?>
|
37 |
+
<div class="tribe-events-widget-events-list__event-venue tribe-common-b2">
|
38 |
+
|
39 |
+
<?php if ( ! empty( $display['venue'] ) ) : ?>
|
40 |
+
<span class="tribe-events-widget-events-list__event-venue-name tribe-common-b2--bold">
|
41 |
+
<?php echo wp_kses_post( $venue->post_title ); ?>
|
42 |
+
</span>
|
43 |
+
<?php endif; ?>
|
44 |
+
|
45 |
+
<?php
|
46 |
+
if (
|
47 |
+
! empty( $display['street'] )
|
48 |
+
|| ! empty( $display['city'] )
|
49 |
+
|| ! empty( $display['region'] )
|
50 |
+
|| ! empty( $display['zip'] )
|
51 |
+
|| ! empty( $display['country'] )
|
52 |
+
) :
|
53 |
+
?>
|
54 |
+
<address class="tribe-events-widget-events-list__event-venue-address">
|
55 |
+
|
56 |
+
<?php if ( ! empty( $display['street'] ) ) : ?>
|
57 |
+
<div class="tribe-events-widget-events-list__event-venue-address-street">
|
58 |
+
<?php echo esc_html( $venue->address ); ?>
|
59 |
+
</div>
|
60 |
+
<?php endif; ?>
|
61 |
+
|
62 |
+
<?php if ( ! empty( $display['city'] ) || ! empty( $display['region'] ) || ! empty( $display['zip'] ) ) : ?>
|
63 |
+
<div class="tribe-events-widget-events-list__event-venue-address-">
|
64 |
+
<?php if ( ! empty( $display['city'] ) ) : ?>
|
65 |
+
<span class="tribe-events-widget-events-list__event-venue-address-city">
|
66 |
+
<?php echo esc_html( $venue->city ); ?>
|
67 |
+
</span>
|
68 |
+
<?php endif; ?>
|
69 |
+
<?php if ( ! empty( $display['region'] ) ) : ?>
|
70 |
+
<span class="tribe-events-widget-events-list__event-venue-address-region">
|
71 |
+
<?php echo esc_html( $venue->state_province ); ?>
|
72 |
+
</span>
|
73 |
+
<?php endif; ?>
|
74 |
+
<?php if ( ! empty( $display['zip'] ) ) : ?>
|
75 |
+
<span class="tribe-events-widget-events-list__event-venue-address-zip">
|
76 |
+
<?php echo esc_html( $venue->zip ); ?>
|
77 |
+
</span>
|
78 |
+
<?php endif; ?>
|
79 |
+
</div>
|
80 |
+
<?php endif; ?>
|
81 |
+
|
82 |
+
<?php if ( ! empty( $display['country'] ) ) : ?>
|
83 |
+
<div class="tribe-events-widget-events-list__event-venue-address-country">
|
84 |
+
<?php echo esc_html( $venue->country ); ?>
|
85 |
+
</div>
|
86 |
+
<?php endif; ?>
|
87 |
+
|
88 |
+
</address>
|
89 |
+
<?php endif; ?>
|
90 |
+
|
91 |
+
</div>
|
src/views/v2/widgets/events-list/view-more.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Widget: Events List Event
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/events/v2/widgets/events-list/event.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link http://m.tri.be/1aiy
|
11 |
+
*
|
12 |
+
* @version 5.2.1
|
13 |
+
*
|
14 |
+
* @var string $view_more_link The URL to view all events.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
|
19 |
+
if ( empty( $view_more_link ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<div class="tribe-events-widget-events-list__view-more tribe-common-b1 tribe-common-b2--min-medium">
|
24 |
+
<a
|
25 |
+
href="<?php echo esc_url( $view_more_link ); ?>"
|
26 |
+
class="tribe-events-widget-events-list__view-more-link tribe-common-anchor-thin"
|
27 |
+
>
|
28 |
+
<?php esc_html_e( 'View more', 'the-events-calendar' ); ?>
|
29 |
+
</a>
|
30 |
+
</div>
|
src/views/v2/widgets/widget-list.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Temporary Display of V2 List Widget
|
4 |
+
*/
|
5 |
+
|
6 |
+
?>
|
7 |
+
<div>
|
8 |
+
<?php echo esc_html( "Widget Name: {$name}" ); ?>
|
9 |
+
</div>
|
the-events-calendar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Plugin Name: The Events Calendar
|
4 |
* Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
-
* Version: 5.2.
|
6 |
* Author: Modern Tribe, Inc.
|
7 |
* Author URI: http://m.tri.be/1x
|
8 |
* Text Domain: the-events-calendar
|
@@ -73,4 +73,4 @@ require_once dirname( TRIBE_EVENTS_FILE ) . '/src/Tribe/Main.php';
|
|
73 |
Tribe__Events__Main::instance();
|
74 |
|
75 |
register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
|
76 |
-
register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
|
2 |
/**
|
3 |
* Plugin Name: The Events Calendar
|
4 |
* Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
+
* Version: 5.2.1.2
|
6 |
* Author: Modern Tribe, Inc.
|
7 |
* Author URI: http://m.tri.be/1x
|
8 |
* Text Domain: the-events-calendar
|
73 |
Tribe__Events__Main::instance();
|
74 |
|
75 |
register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
|
76 |
+
register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit8c8d990936afd8fe718fade27afe59e9::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -11,6 +11,7 @@ return array(
|
|
11 |
'Tribe\\Events\\Editor\\Objects\\Event' => $baseDir . '/src/Tribe/Editor/Objects/Event.php',
|
12 |
'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
|
13 |
'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
|
|
|
14 |
'Tribe\\Events\\Integrations\\WP_Rocket' => $baseDir . '/src/Tribe/Integrations/WP_Rocket.php',
|
15 |
'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
|
16 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
|
@@ -64,4 +65,8 @@ return array(
|
|
64 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
|
65 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
|
66 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
|
|
|
|
|
|
|
|
|
67 |
);
|
11 |
'Tribe\\Events\\Editor\\Objects\\Event' => $baseDir . '/src/Tribe/Editor/Objects/Event.php',
|
12 |
'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
|
13 |
'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
|
14 |
+
'Tribe\\Events\\Integrations\\WPML\\Views\\V2\\Filters' => $baseDir . '/src/Tribe/Integrations/WPML/Views/V2/Filters.php',
|
15 |
'Tribe\\Events\\Integrations\\WP_Rocket' => $baseDir . '/src/Tribe/Integrations/WP_Rocket.php',
|
16 |
'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
|
17 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
|
65 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
|
66 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
|
67 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
|
68 |
+
'Tribe\\Events\\Views\\V2\\Views\\Widgets\\Widget_List_View' => $baseDir . '/src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php',
|
69 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Service_Provider' => $baseDir . '/src/Tribe/Views/V2/Widgets/Service_Provider.php',
|
70 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Widget_Abstract' => $baseDir . '/src/Tribe/Views/V2/Widgets/Widget_Abstract.php',
|
71 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Widget_List' => $baseDir . '/src/Tribe/Views/V2/Widgets/Widget_List.php',
|
72 |
);
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit2c46dc55b6979383036e1946cd78869f
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit8c8d990936afd8fe718fade27afe59e9
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit8c8d990936afd8fe718fade27afe59e9', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit8c8d990936afd8fe718fade27afe59e9', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit8c8d990936afd8fe718fade27afe59e9::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
@@ -26,6 +26,7 @@ class ComposerStaticInit2c46dc55b6979383036e1946cd78869f
|
|
26 |
'Tribe\\Events\\Editor\\Objects\\Event' => __DIR__ . '/../..' . '/src/Tribe/Editor/Objects/Event.php',
|
27 |
'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
|
28 |
'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
|
|
|
29 |
'Tribe\\Events\\Integrations\\WP_Rocket' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WP_Rocket.php',
|
30 |
'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
|
31 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
|
@@ -79,14 +80,18 @@ class ComposerStaticInit2c46dc55b6979383036e1946cd78869f
|
|
79 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
|
80 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
|
81 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
|
|
|
|
|
|
|
|
|
82 |
);
|
83 |
|
84 |
public static function getInitializer(ClassLoader $loader)
|
85 |
{
|
86 |
return \Closure::bind(function () use ($loader) {
|
87 |
-
$loader->prefixLengthsPsr4 =
|
88 |
-
$loader->prefixDirsPsr4 =
|
89 |
-
$loader->classMap =
|
90 |
|
91 |
}, null, ClassLoader::class);
|
92 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit8c8d990936afd8fe718fade27afe59e9
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
26 |
'Tribe\\Events\\Editor\\Objects\\Event' => __DIR__ . '/../..' . '/src/Tribe/Editor/Objects/Event.php',
|
27 |
'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
|
28 |
'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
|
29 |
+
'Tribe\\Events\\Integrations\\WPML\\Views\\V2\\Filters' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WPML/Views/V2/Filters.php',
|
30 |
'Tribe\\Events\\Integrations\\WP_Rocket' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WP_Rocket.php',
|
31 |
'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
|
32 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
|
80 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
|
81 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
|
82 |
'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
|
83 |
+
'Tribe\\Events\\Views\\V2\\Views\\Widgets\\Widget_List_View' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php',
|
84 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Service_Provider.php',
|
85 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Widget_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Widget_Abstract.php',
|
86 |
+
'Tribe\\Events\\Views\\V2\\Widgets\\Widget_List' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Widget_List.php',
|
87 |
);
|
88 |
|
89 |
public static function getInitializer(ClassLoader $loader)
|
90 |
{
|
91 |
return \Closure::bind(function () use ($loader) {
|
92 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit8c8d990936afd8fe718fade27afe59e9::$prefixLengthsPsr4;
|
93 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit8c8d990936afd8fe718fade27afe59e9::$prefixDirsPsr4;
|
94 |
+
$loader->classMap = ComposerStaticInit8c8d990936afd8fe718fade27afe59e9::$classMap;
|
95 |
|
96 |
}, null, ClassLoader::class);
|
97 |
}
|