Version Description
Download this release
Release Info
Developer | bordoni |
Plugin | Event Tickets |
Version | 5.4.4 |
Comparing to | |
See all releases |
Code changes from version 5.4.3.1 to 5.4.4
- common/lang/tribe-common.pot +49 -29
- common/src/Tribe/Admin/Settings.php +82 -0
- common/src/Tribe/Field.php +79 -0
- common/src/Tribe/Main.php +25 -1
- common/src/Tribe/Repository/Query_Filters.php +1 -1
- common/src/Tribe/Tracker.php +4 -0
- common/src/Tribe/Validate.php +14 -0
- common/src/resources/css/tribe-common-admin.min.css +1 -1
- common/src/resources/images/welcome/tickets-commerce.png +0 -0
- common/src/resources/js/admin-color-field.js +57 -0
- common/src/resources/js/admin-color-field.min.js +1 -0
- common/src/resources/js/admin-image-field.js +172 -0
- common/src/resources/js/admin-image-field.min.js +1 -0
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_classmap.php +1 -0
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +6 -5
- event-tickets.php +2 -2
- lang/event-tickets-nl_NL.mo +0 -0
- lang/event-tickets-ro_RO.mo +0 -0
- lang/event-tickets.pot +163 -160
- readme.txt +17 -1
- src/Tickets/Commerce/Admin_Tables/Orders.php +31 -0
- src/Tickets/Commerce/Gateways/Stripe/Payment_Intent_Handler.php +43 -6
- src/Tickets/Commerce/Order.php +1 -0
- src/Tickets/Commerce/Repositories/Order_Repository.php +261 -0
- src/Tickets/Commerce/Ticket.php +13 -0
- src/Tribe/Attendee_Repository.php +230 -3
- src/Tribe/Attendees_Table.php +52 -0
- src/Tribe/Editor/Blocks/Rsvp.php +1 -1
- src/Tribe/Editor/Compatibility/Tickets.php +1 -0
- src/Tribe/Editor/Template/Overwrite.php +5 -0
- src/Tribe/Main.php +1 -1
- src/Tribe/REST/V1/Attendee_Repository.php +7 -11
- src/Tribe/REST/V1/Endpoints/Attendee_Archive.php +16 -22
- src/Tribe/REST/V1/Endpoints/Single_Attendee.php +12 -12
- src/Tribe/REST/V1/Endpoints/Ticket_Archive.php +3 -3
- src/Tribe/REST/V1/Main.php +78 -3
- src/Tribe/REST/V1/Post_Repository.php +9 -9
- src/Tribe/REST/V1/Service_Provider.php +10 -6
- src/Tribe/RSVP.php +31 -23
- src/Tribe/Tickets.php +9 -5
- src/admin-views/admin-welcome-message.php +18 -5
- src/resources/css/tickets-report.css +1 -1
- src/resources/css/tickets-report.min.css +1 -1
- src/resources/js/v2/__tests__/tickets-utils.test.js +24 -0
- src/resources/js/v2/tickets-block.js +23 -14
- src/resources/js/v2/tickets-utils.js +25 -0
- src/resources/postcss/tickets-report.pcss +1 -1
- src/views/v2/tickets/item/inactive.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +4 -4
common/lang/tribe-common.pot
CHANGED
@@ -2,13 +2,13 @@
|
|
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.15.
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
-
"POT-Creation-Date: 2022-
|
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: 2022-
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
@@ -58,7 +58,7 @@ msgctxt "Error status label for system info optin"
|
|
58 |
msgid "Status:"
|
59 |
msgstr ""
|
60 |
|
61 |
-
#. #-#-#-#-# tribe-common.pot (Tribe Common 4.15.
|
62 |
#. Author of the plugin/theme
|
63 |
#: src/Tribe/Admin/Help_Page.php:116 src/Tribe/Customizer.php:664
|
64 |
#: src/Tribe/Plugins_API.php:25 src/admin-views/help-calendar.php:97
|
@@ -1091,22 +1091,38 @@ msgid ""
|
|
1091 |
"and you should likely delete it."
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: src/Tribe/Field.php:
|
1095 |
msgid "Invalid field type specified"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: src/Tribe/Field.php:
|
1099 |
msgid "No radio options specified"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: src/Tribe/Field.php:
|
1103 |
msgid "No checkbox options specified"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: src/Tribe/Field.php:
|
1107 |
msgid "No select options specified"
|
1108 |
msgstr ""
|
1109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1110 |
#: src/Tribe/Languages/Locations.php:79
|
1111 |
msgid "United States"
|
1112 |
msgstr ""
|
@@ -2327,87 +2343,87 @@ msgstr ""
|
|
2327 |
msgid "Full debug (all events)"
|
2328 |
msgstr ""
|
2329 |
|
2330 |
-
#: src/Tribe/Main.php:
|
2331 |
msgid ": activate to sort column ascending"
|
2332 |
msgstr ""
|
2333 |
|
2334 |
-
#: src/Tribe/Main.php:
|
2335 |
msgid ": activate to sort column descending"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
-
#: src/Tribe/Main.php:
|
2339 |
msgid "Show _MENU_ entries"
|
2340 |
msgstr ""
|
2341 |
|
2342 |
-
#: src/Tribe/Main.php:
|
2343 |
msgid "No data available in table"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#: src/Tribe/Main.php:
|
2347 |
msgid "Showing _START_ to _END_ of _TOTAL_ entries"
|
2348 |
msgstr ""
|
2349 |
|
2350 |
-
#: src/Tribe/Main.php:
|
2351 |
msgid "Showing 0 to 0 of 0 entries"
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#: src/Tribe/Main.php:
|
2355 |
msgid "(filtered from _MAX_ total entries)"
|
2356 |
msgstr ""
|
2357 |
|
2358 |
-
#: src/Tribe/Main.php:
|
2359 |
msgid "No matching records found"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
-
#: src/Tribe/Main.php:
|
2363 |
msgid "Search:"
|
2364 |
msgstr ""
|
2365 |
|
2366 |
-
#: src/Tribe/Main.php:
|
2367 |
msgid "All items on this page were selected. "
|
2368 |
msgstr ""
|
2369 |
|
2370 |
-
#: src/Tribe/Main.php:
|
2371 |
msgid "Select all pages"
|
2372 |
msgstr ""
|
2373 |
|
2374 |
-
#: src/Tribe/Main.php:
|
2375 |
msgid "Clear Selection."
|
2376 |
msgstr ""
|
2377 |
|
2378 |
-
#: src/Tribe/Main.php:
|
2379 |
msgid "All"
|
2380 |
msgstr ""
|
2381 |
|
2382 |
-
#: src/Tribe/Main.php:
|
2383 |
msgid "Next"
|
2384 |
msgstr ""
|
2385 |
|
2386 |
-
#: src/Tribe/Main.php:
|
2387 |
msgid "Previous"
|
2388 |
msgstr ""
|
2389 |
|
2390 |
-
#: src/Tribe/Main.php:
|
2391 |
msgid ": Selected %d rows"
|
2392 |
msgstr ""
|
2393 |
|
2394 |
-
#: src/Tribe/Main.php:
|
2395 |
msgid ": Selected 1 row"
|
2396 |
msgstr ""
|
2397 |
|
2398 |
-
#: src/Tribe/Main.php:
|
2399 |
msgid "Prev"
|
2400 |
msgstr ""
|
2401 |
|
2402 |
-
#: src/Tribe/Main.php:
|
2403 |
msgid "Today"
|
2404 |
msgstr ""
|
2405 |
|
2406 |
-
#: src/Tribe/Main.php:
|
2407 |
msgid "Done"
|
2408 |
msgstr ""
|
2409 |
|
2410 |
-
#: src/Tribe/Main.php:
|
2411 |
msgid "Clear"
|
2412 |
msgstr ""
|
2413 |
|
@@ -3113,6 +3129,10 @@ msgstr ""
|
|
3113 |
msgid "%s must be an email address."
|
3114 |
msgstr ""
|
3115 |
|
|
|
|
|
|
|
|
|
3116 |
#: src/Tribe/View_Helpers.php:59
|
3117 |
msgid "Select a Country:"
|
3118 |
msgstr ""
|
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.15.5\n"
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
+
"POT-Creation-Date: 2022-08-11 05:07:49+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: 2022-08-11 05:07\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
58 |
msgid "Status:"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#. #-#-#-#-# tribe-common.pot (Tribe Common 4.15.5) #-#-#-#-#
|
62 |
#. Author of the plugin/theme
|
63 |
#: src/Tribe/Admin/Help_Page.php:116 src/Tribe/Customizer.php:664
|
64 |
#: src/Tribe/Plugins_API.php:25 src/admin-views/help-calendar.php:97
|
1091 |
"and you should likely delete it."
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: src/Tribe/Field.php:240
|
1095 |
msgid "Invalid field type specified"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: src/Tribe/Field.php:550
|
1099 |
msgid "No radio options specified"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: src/Tribe/Field.php:586
|
1103 |
msgid "No checkbox options specified"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
+
#: src/Tribe/Field.php:648
|
1107 |
msgid "No select options specified"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: src/Tribe/Field.php:750
|
1111 |
+
msgid "Select Image"
|
1112 |
+
msgstr ""
|
1113 |
+
|
1114 |
+
#: src/Tribe/Field.php:751
|
1115 |
+
msgid "Remove Image"
|
1116 |
+
msgstr ""
|
1117 |
+
|
1118 |
+
#: src/Tribe/Field.php:755
|
1119 |
+
msgid "Select an image"
|
1120 |
+
msgstr ""
|
1121 |
+
|
1122 |
+
#: src/Tribe/Field.php:756
|
1123 |
+
msgid "Use this image"
|
1124 |
+
msgstr ""
|
1125 |
+
|
1126 |
#: src/Tribe/Languages/Locations.php:79
|
1127 |
msgid "United States"
|
1128 |
msgstr ""
|
2343 |
msgid "Full debug (all events)"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
+
#: src/Tribe/Main.php:378
|
2347 |
msgid ": activate to sort column ascending"
|
2348 |
msgstr ""
|
2349 |
|
2350 |
+
#: src/Tribe/Main.php:379
|
2351 |
msgid ": activate to sort column descending"
|
2352 |
msgstr ""
|
2353 |
|
2354 |
+
#: src/Tribe/Main.php:381
|
2355 |
msgid "Show _MENU_ entries"
|
2356 |
msgstr ""
|
2357 |
|
2358 |
+
#: src/Tribe/Main.php:382
|
2359 |
msgid "No data available in table"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
+
#: src/Tribe/Main.php:383
|
2363 |
msgid "Showing _START_ to _END_ of _TOTAL_ entries"
|
2364 |
msgstr ""
|
2365 |
|
2366 |
+
#: src/Tribe/Main.php:384
|
2367 |
msgid "Showing 0 to 0 of 0 entries"
|
2368 |
msgstr ""
|
2369 |
|
2370 |
+
#: src/Tribe/Main.php:385
|
2371 |
msgid "(filtered from _MAX_ total entries)"
|
2372 |
msgstr ""
|
2373 |
|
2374 |
+
#: src/Tribe/Main.php:386
|
2375 |
msgid "No matching records found"
|
2376 |
msgstr ""
|
2377 |
|
2378 |
+
#: src/Tribe/Main.php:387
|
2379 |
msgid "Search:"
|
2380 |
msgstr ""
|
2381 |
|
2382 |
+
#: src/Tribe/Main.php:388
|
2383 |
msgid "All items on this page were selected. "
|
2384 |
msgstr ""
|
2385 |
|
2386 |
+
#: src/Tribe/Main.php:389
|
2387 |
msgid "Select all pages"
|
2388 |
msgstr ""
|
2389 |
|
2390 |
+
#: src/Tribe/Main.php:390
|
2391 |
msgid "Clear Selection."
|
2392 |
msgstr ""
|
2393 |
|
2394 |
+
#: src/Tribe/Main.php:392
|
2395 |
msgid "All"
|
2396 |
msgstr ""
|
2397 |
|
2398 |
+
#: src/Tribe/Main.php:393 src/Tribe/Main.php:410
|
2399 |
msgid "Next"
|
2400 |
msgstr ""
|
2401 |
|
2402 |
+
#: src/Tribe/Main.php:394
|
2403 |
msgid "Previous"
|
2404 |
msgstr ""
|
2405 |
|
2406 |
+
#: src/Tribe/Main.php:399
|
2407 |
msgid ": Selected %d rows"
|
2408 |
msgstr ""
|
2409 |
|
2410 |
+
#: src/Tribe/Main.php:400
|
2411 |
msgid ": Selected 1 row"
|
2412 |
msgstr ""
|
2413 |
|
2414 |
+
#: src/Tribe/Main.php:411
|
2415 |
msgid "Prev"
|
2416 |
msgstr ""
|
2417 |
|
2418 |
+
#: src/Tribe/Main.php:412 src/Tribe/Main.php:414
|
2419 |
msgid "Today"
|
2420 |
msgstr ""
|
2421 |
|
2422 |
+
#: src/Tribe/Main.php:413
|
2423 |
msgid "Done"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: src/Tribe/Main.php:415
|
2427 |
msgid "Clear"
|
2428 |
msgstr ""
|
2429 |
|
3129 |
msgid "%s must be an email address."
|
3130 |
msgstr ""
|
3131 |
|
3132 |
+
#: src/Tribe/Validate.php:512
|
3133 |
+
msgid "%s must be a valid HTML color code."
|
3134 |
+
msgstr ""
|
3135 |
+
|
3136 |
#: src/Tribe/View_Helpers.php:59
|
3137 |
msgid "Select a Country:"
|
3138 |
msgstr ""
|
common/src/Tribe/Admin/Settings.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Tribe\Admin;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Admin Settings class.
|
7 |
+
*
|
8 |
+
* @since TBD
|
9 |
+
*/
|
10 |
+
|
11 |
+
class Settings {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Loaded image field assets if not already loaded.
|
15 |
+
*
|
16 |
+
* @since TBD
|
17 |
+
*
|
18 |
+
* @return void
|
19 |
+
*/
|
20 |
+
public function maybe_load_image_field_assets() {
|
21 |
+
if ( has_filter( 'tec_admin_load_image_fields_assets', '__return_true' ) ) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
+
add_filter( 'tec_admin_load_image_fields_assets', '__return_true' );
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Logic to load image field assets.
|
29 |
+
*
|
30 |
+
* @since TBD
|
31 |
+
*
|
32 |
+
* @return bool
|
33 |
+
*/
|
34 |
+
public function should_load_image_field_assets() {
|
35 |
+
/**
|
36 |
+
* Filters whether or not we should load the image field assets on the settings page.
|
37 |
+
*
|
38 |
+
* @since TBD
|
39 |
+
*
|
40 |
+
* @param boolean $return True or false whether to load image field assets.
|
41 |
+
*/
|
42 |
+
$load_assets = apply_filters( 'tec_admin_load_image_fields_assets', false );
|
43 |
+
if ( $load_assets ) {
|
44 |
+
wp_enqueue_media();
|
45 |
+
}
|
46 |
+
return $load_assets;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Load color field assets if not already loaded.
|
51 |
+
*
|
52 |
+
* @since TBD
|
53 |
+
*
|
54 |
+
* @return void
|
55 |
+
*/
|
56 |
+
public function maybe_load_color_field_assets() {
|
57 |
+
if ( has_filter( 'tec_admin_load_color_field_assets', '__return_true' ) ) {
|
58 |
+
return;
|
59 |
+
}
|
60 |
+
add_filter( 'tec_admin_load_color_field_assets', '__return_true' );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Logic to load color field assets.
|
65 |
+
*
|
66 |
+
* @since TBD
|
67 |
+
*
|
68 |
+
* @return bool
|
69 |
+
*/
|
70 |
+
public function should_load_color_field_assets() {
|
71 |
+
/**
|
72 |
+
* Filters whether or not we should load the color field assets on the settings page.
|
73 |
+
*
|
74 |
+
* @since TBD
|
75 |
+
*
|
76 |
+
* @param boolean $return True or false whether to load color field assets.
|
77 |
+
*/
|
78 |
+
$load_assets = apply_filters( 'tec_admin_load_color_field_assets', false );
|
79 |
+
return $load_assets;
|
80 |
+
}
|
81 |
+
|
82 |
+
}
|
common/src/Tribe/Field.php
CHANGED
@@ -1,6 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
// Don't load directly
|
|
|
|
|
|
|
4 |
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
die( '-1' );
|
6 |
}
|
@@ -110,6 +113,8 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
|
|
110 |
'number',
|
111 |
'wrapped_html',
|
112 |
'email',
|
|
|
|
|
113 |
];
|
114 |
|
115 |
$this->valid_field_types = apply_filters( 'tribe_valid_field_types', $this->valid_field_types );
|
@@ -702,6 +707,80 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
|
|
702 |
return $field;
|
703 |
}
|
704 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
705 |
/* deprecated camelCase methods */
|
706 |
public function doField() {
|
707 |
_deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field' );
|
1 |
<?php
|
2 |
|
3 |
// Don't load directly
|
4 |
+
|
5 |
+
use Tribe\Admin\Settings;
|
6 |
+
|
7 |
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
die( '-1' );
|
9 |
}
|
113 |
'number',
|
114 |
'wrapped_html',
|
115 |
'email',
|
116 |
+
'color',
|
117 |
+
'image',
|
118 |
];
|
119 |
|
120 |
$this->valid_field_types = apply_filters( 'tribe_valid_field_types', $this->valid_field_types );
|
707 |
return $field;
|
708 |
}
|
709 |
|
710 |
+
/**
|
711 |
+
* Generate a color field.
|
712 |
+
*
|
713 |
+
* @since TBD
|
714 |
+
*
|
715 |
+
* @return string The field.
|
716 |
+
*/
|
717 |
+
public function color() {
|
718 |
+
|
719 |
+
tribe( Settings::class )->maybe_load_color_field_assets();
|
720 |
+
|
721 |
+
$field = $this->do_field_start();
|
722 |
+
$field .= $this->do_field_label();
|
723 |
+
$field .= $this->do_field_div_start();
|
724 |
+
$field .= '<input';
|
725 |
+
$field .= ' type="text"';
|
726 |
+
$field .= ' class="tec-admin__settings-color-field-input"';
|
727 |
+
$field .= $this->do_field_name();
|
728 |
+
$field .= $this->do_field_value();
|
729 |
+
$field .= $this->do_field_attributes();
|
730 |
+
$field .= '/>';
|
731 |
+
$field .= $this->do_screen_reader_label();
|
732 |
+
$field .= $this->do_field_div_end();
|
733 |
+
$field .= $this->do_field_end();
|
734 |
+
|
735 |
+
return $field;
|
736 |
+
}
|
737 |
+
|
738 |
+
/**
|
739 |
+
* Generate an image field.
|
740 |
+
*
|
741 |
+
* @since TBD
|
742 |
+
*
|
743 |
+
* @return string The field.
|
744 |
+
*/
|
745 |
+
public function image() {
|
746 |
+
|
747 |
+
tribe( Settings::class )->maybe_load_image_field_assets();
|
748 |
+
|
749 |
+
$image_exists = ! empty( $this->value );
|
750 |
+
$upload_image_text = esc_html__( 'Select Image', 'tribe-common' );
|
751 |
+
$remove_image_text = esc_html__( 'Remove Image', 'tribe-common' );
|
752 |
+
|
753 |
+
// Add default fieldset attributes if none exist.
|
754 |
+
$image_fieldset_attributes = [
|
755 |
+
'data-select-image-text' => esc_html__( 'Select an image', 'tribe-common' ),
|
756 |
+
'data-use-image-text' => esc_html__( 'Use this image', 'tribe-common' ),
|
757 |
+
];
|
758 |
+
$this->fieldset_attributes = array_merge( $image_fieldset_attributes, $this->fieldset_attributes );
|
759 |
+
|
760 |
+
$field = $this->do_field_start();
|
761 |
+
$field .= $this->do_field_label();
|
762 |
+
$field .= $this->do_field_div_start();
|
763 |
+
$field .= '<input';
|
764 |
+
$field .= ' type="hidden"';
|
765 |
+
$field .= ' class="tec-admin__settings-image-field-input"';
|
766 |
+
$field .= $this->do_field_name();
|
767 |
+
$field .= $this->do_field_value();
|
768 |
+
$field .= $this->do_field_attributes();
|
769 |
+
$field .= '/>';
|
770 |
+
$field .= '<button type="button" class="button tec-admin__settings-image-field-btn-add">' . $upload_image_text . '</button>';
|
771 |
+
$field .= '<div class="tec-admin__settings-image-field-image-container hidden">';
|
772 |
+
if ( $image_exists ) {
|
773 |
+
$field .= '<img src="' . esc_url( $this->value ) . '" />';
|
774 |
+
}
|
775 |
+
$field .= '</div>';
|
776 |
+
$field .= '<button class="tec-admin__settings-image-field-btn-remove hidden">' . $remove_image_text . '</button>';
|
777 |
+
$field .= $this->do_screen_reader_label();
|
778 |
+
$field .= $this->do_field_div_end();
|
779 |
+
$field .= $this->do_field_end();
|
780 |
+
|
781 |
+
return $field;
|
782 |
+
}
|
783 |
+
|
784 |
/* deprecated camelCase methods */
|
785 |
public function doField() {
|
786 |
_deprecated_function( __METHOD__, '4.3', __CLASS__ . '::do_field' );
|
common/src/Tribe/Main.php
CHANGED
@@ -5,6 +5,7 @@
|
|
5 |
|
6 |
// Don't load directly
|
7 |
|
|
|
8 |
use Tribe\DB_Lock;
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -20,7 +21,7 @@ class Tribe__Main {
|
|
20 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
21 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
22 |
|
23 |
-
const VERSION = '4.15.
|
24 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
25 |
|
26 |
protected $plugin_context;
|
@@ -286,6 +287,17 @@ class Tribe__Main {
|
|
286 |
]
|
287 |
);
|
288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
// Register the asset for Customizer controls.
|
290 |
tribe_asset(
|
291 |
$this,
|
@@ -295,6 +307,18 @@ class Tribe__Main {
|
|
295 |
'customize_controls_print_styles'
|
296 |
);
|
297 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
298 |
tribe( Tribe__Admin__Help_Page::class )->register_assets();
|
299 |
}
|
300 |
|
5 |
|
6 |
// Don't load directly
|
7 |
|
8 |
+
use Tribe\Admin\Settings;
|
9 |
use Tribe\DB_Lock;
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) {
|
21 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
22 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
23 |
|
24 |
+
const VERSION = '4.15.5';
|
25 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
26 |
|
27 |
protected $plugin_context;
|
287 |
]
|
288 |
);
|
289 |
|
290 |
+
tribe_asset(
|
291 |
+
$this,
|
292 |
+
'tec-admin-settings-image-field',
|
293 |
+
'admin-image-field.js',
|
294 |
+
[ 'jquery' ],
|
295 |
+
'in_admin_footer',
|
296 |
+
[
|
297 |
+
'conditionals' => [ tribe( Settings::class ), 'should_load_image_field_assets' ]
|
298 |
+
]
|
299 |
+
);
|
300 |
+
|
301 |
// Register the asset for Customizer controls.
|
302 |
tribe_asset(
|
303 |
$this,
|
307 |
'customize_controls_print_styles'
|
308 |
);
|
309 |
|
310 |
+
// Register the asset for color fields.
|
311 |
+
tribe_asset(
|
312 |
+
$this,
|
313 |
+
'tec-settings-color-field',
|
314 |
+
'admin-color-field.js',
|
315 |
+
[ 'jquery', 'wp-color-picker' ],
|
316 |
+
'admin_footer',
|
317 |
+
[
|
318 |
+
'conditionals' => [ tribe( Settings::class ), 'should_load_color_field_assets' ]
|
319 |
+
]
|
320 |
+
);
|
321 |
+
|
322 |
tribe( Tribe__Admin__Help_Page::class )->register_assets();
|
323 |
}
|
324 |
|
common/src/Tribe/Repository/Query_Filters.php
CHANGED
@@ -1012,7 +1012,7 @@ class Tribe__Repository__Query_Filters {
|
|
1012 |
$frags[] = implode( ', ', array_map( $build_entry, $this->query_vars[ static::AFTER . 'orderby' ] ) );
|
1013 |
}
|
1014 |
|
1015 |
-
return implode( ', ', $frags );
|
1016 |
}
|
1017 |
|
1018 |
/**
|
1012 |
$frags[] = implode( ', ', array_map( $build_entry, $this->query_vars[ static::AFTER . 'orderby' ] ) );
|
1013 |
}
|
1014 |
|
1015 |
+
return implode( ', ', array_filter( $frags ) );
|
1016 |
}
|
1017 |
|
1018 |
/**
|
common/src/Tribe/Tracker.php
CHANGED
@@ -282,8 +282,12 @@ class Tribe__Tracker {
|
|
282 |
// If we got here we will update the Modified Meta
|
283 |
$modified[ $meta_key ] = $now;
|
284 |
|
|
|
|
|
285 |
// Actually do the Update
|
286 |
update_post_meta( $post->ID, self::$field_key, $modified );
|
|
|
|
|
287 |
|
288 |
// We need to return this, because we are still on a filter
|
289 |
return $check;
|
282 |
// If we got here we will update the Modified Meta
|
283 |
$modified[ $meta_key ] = $now;
|
284 |
|
285 |
+
// Avoid loops!
|
286 |
+
remove_filter( 'update_post_metadata', [ $this, 'filter_watch_updated_meta' ], PHP_INT_MAX - 1 );
|
287 |
// Actually do the Update
|
288 |
update_post_meta( $post->ID, self::$field_key, $modified );
|
289 |
+
// Safe to filter again.
|
290 |
+
add_filter( 'update_post_metadata', [ $this, 'filter_watch_updated_meta' ], PHP_INT_MAX - 1, 5 );
|
291 |
|
292 |
// We need to return this, because we are still on a filter
|
293 |
return $check;
|
common/src/Tribe/Validate.php
CHANGED
@@ -499,5 +499,19 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
|
|
499 |
}
|
500 |
}
|
501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
} // end class
|
503 |
} // endif class_exists
|
499 |
}
|
500 |
}
|
501 |
|
502 |
+
/**
|
503 |
+
* Validates and sanitizes a HTML color codes, including hex, rgb, rgba, hsl and hsla.
|
504 |
+
*
|
505 |
+
* @since TBD
|
506 |
+
*/
|
507 |
+
public function color() {
|
508 |
+
if ( preg_match( '/^(#(?:[0-9a-f]{2}){2,4}|#[0-9a-f]{3}|(?:rgba?|hsla?)\((?:\d+%?(?:deg|rad|grad|turn)?(?:,|\s)+){2,3}[\s\/]*[\d\.]+%?\))$/i', $this->value ) ) {
|
509 |
+
$this->result->valid = true;
|
510 |
+
} else {
|
511 |
+
$this->result->valid = false;
|
512 |
+
$this->result->error = sprintf( esc_html__( '%s must be a valid HTML color code.', 'tribe-common' ), $this->label );
|
513 |
+
}
|
514 |
+
}
|
515 |
+
|
516 |
} // end class
|
517 |
} // endif class_exists
|
common/src/resources/css/tribe-common-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.invalid input,input:out-of-range{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}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{margin-left:1px;text-indent:0}.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-events-widget-admin-form__input-section p{margin:0}.tribe-events-widget-admin-form__input-section h4{margin:.5em 0}.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:#7ad03a;height:1rem;width:1%}#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;height:300px;overflow-y:scroll}#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{min-height:100px;padding:1em}.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;height:100%;max-height:150px;max-width:150px;vertical-align:middle;width:auto}.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}.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.tribe-notice-stellar-sale .tribe-marketing-notice{min-height:50px}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__content{align-content:center;display:flex;flex-wrap:wrap;justify-content:center;margin:auto}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__icon{align-self:baseline;height:20px;margin:auto 14px auto 0;width:13px}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__icon .tribe-common-c-svgicon--stellar-icon circle{stroke:#fff}.notice-tribe-banner.tribe-notice-stellar-sale .tec-stellar-sale-text{fill:#fff;height:16px;margin:unset;margin-top:.25em;stroke:#fff;width:176px}.notice-tribe-banner.tribe-notice-stellar-sale h3{font-weight:400;margin:auto 8px auto 14px;text-align:center}.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;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}#wpcontent .notice-tribe-banner{align-items:center;background-color:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale{background-color:#000}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a{color:#d8ff00;text-transform:uppercase}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:active,#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:focus,#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:hover{color:#e6b1fc}.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{border-top:1px solid #aaa;margin-top:-1px}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{border-bottom:1px solid #aaa;margin-bottom:-16px}.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:1px solid #ccc;border-radius:3px;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:transparent;background-image:none;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;bottom:0;display:block;height:auto;left:0;margin:0;padding:0;right:0;top:0;width:auto}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border:1px solid #ccc;border-radius:3px;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-bottom:0;padding-top:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:19px;margin-top:2px;padding-bottom:0;padding-top:0}.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{left:4px;top:3px;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-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]{background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;color:#e79496!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.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{border:solid #0ab152;border-width:0 3px 3px 0;content:"";display:block;height:15px;transform:rotate(45deg);width:8px}.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.tec-help,body.tribe-welcome{background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.tec-help .update-nag,body.tribe-welcome .update-nag{display:none}body.tec-help #wpcontent,body.tribe-welcome #wpcontent{padding:0}body.tec-help .tribe_settings,body.tribe-welcome .tribe_settings{margin:0}body.tec-help #wpfooter,body.tec-help .tribe_settings>h1,body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tec-help #wpbody-content,body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tec-help .tribe-dependency-error,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:0 0 30px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:0 auto 36px;padding:27px;text-align:center}.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__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;height:100px;margin:0 auto}.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}input[type=checkbox].tribe-common-switch__input{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label{background:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;cursor:pointer;display:block;height:18px;outline:0;padding:3px;position:relative;transition:all .2s ease;-webkit-user-select:none;user-select:none;width:27px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after,input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{content:"";display:block;height:10px;position:relative;width:10px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after{background:#878787;border-radius:2px;content:"";left:0;transition:all .2s ease}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label::selection{background:none}input[type=checkbox].tribe-common-switch__input:checked+.tribe-common-switch__label:after{background:#2e709d;left:50%}.tribe-events-admin-header__logo-word-mark{display:inline-block;height:auto;margin:0 0 26px;vertical-align:middle;width:312px}.tribe-events-admin-header{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:45px 0 0}.tribe-events-admin-header__right-image{height:280px;position:absolute;right:0;top:0;width:auto;z-index:-1}.tribe-events-admin-header__title{font-size:48px;line-height:48px;margin:0 0 18px}.tribe-events-admin-header__description{font-size:18px;line-height:28px;margin-bottom:44px;max-width:60%}.tribe-events-admin-tab-nav{display:flex;margin:0}.tribe-events-admin-tab-nav li{cursor:pointer;font-size:16px;font-weight:500;margin-bottom:0;margin-right:30px}.tribe-events-admin-tab-nav li:hover{color:#334aff}.tribe-events-admin-tab-nav .selected{border-bottom:3px solid currentColor;color:#334aff;padding-bottom:17px}.tribe-events-admin-tab-nav li:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}.tribe-events-admin__line{border-top:1px solid #e1e1e4}.tribe-events-admin-products-description{color:#0f1031;font-size:14px;line-height:2}.tribe-events-admin-products-card{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;padding:10px 15px}.tribe-events-admin-products-card__icon{height:40px;object-fit:contain;width:40px}.tribe-events-admin-products-card__group{margin:0 20px;max-width:55%}.tribe-events-admin-products-card__group-title{color:#0f1031;font-size:16px;font-weight:700;line-height:1;margin:0}.tribe-events-admin-products-card__group-description{font-size:12px;margin-top:5px}.tribe-events-admin-products-card__button{background-color:#fff;border:1px solid #e1e1e4;border-radius:20px;color:#0f1031;font-size:12px;font-weight:700;letter-spacing:1px;line-height:16px;margin-left:auto;padding:10px 15px;text-decoration:none;text-transform:uppercase}.tribe-events-admin-products-card__button:hover{background-color:#334aff;color:#fff}.tribe-events-admin-products-card__button:active,.tribe-events-admin-products-card__button:focus{box-shadow:none;outline:none}.tribe-events-admin-products-card__button--active,.tribe-events-admin-products-card__button--active:active,.tribe-events-admin-products-card__button--active:focus,.tribe-events-admin-products-card__button--active:hover{background:rgba(61,84,255,.16);color:#334aff;cursor:not-allowed;text-transform:uppercase}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{display:block;height:152px;margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{font-size:28px;line-height:34px;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin:0;padding:0;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__link{margin:0;padding:0}.tribe-events-admin-card--faq{display:inline-block;font-size:0;height:147px;margin:0 0 0 30px;padding:24px 16px 22px 20px;width:230px}.tribe-events-admin-card--faq:first-child{margin-left:0}.tribe-events-admin-card--faq img{float:left;height:22px;width:16px}.tribe-events-admin-card--faq .tribe-events-admin-faq__question{color:#334aff;font-size:16px;line-height:19px;margin:0 0 12px 26px;text-align:left}.tribe-events-admin-card--faq .tribe-events-admin-faq__answer{font-size:13px;line-height:16px;margin-left:26px;text-align:left}.tribe-events-admin-video{border-radius:16px;height:200px;margin-bottom:72px;-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);overflow:hidden;-webkit-transform:rotate(.000001deg)}.tribe-events-admin-video iframe{width:100%}.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;margin-bottom:16px;text-align:left}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{color:#fff;text-align:left}.tribe-events-admin-graphic{position:absolute;right:0;top:106px;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;border-radius:16px;box-sizing:border-box;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{margin:0 auto;max-width:1024px;width:90%}.tribe-events-admin-2col-grid{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-3col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . .";grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-4col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . . .";grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-products{margin:10px 0 0}.tribe-events-admin-quick-nav{background:#fff;border:1px solid #e1e1e4;border-radius:16px;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-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-bottom:0;padding-top:8px}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica,sans-serif;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{top:230px;width:300px}.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}.tribe-events-admin-kb{margin:10px 0 0}.tribe-events-admin-kb-card{border:1px solid #e1e1e4;border-radius:20px}.tribe-events-admin-kb-card__image{height:auto;width:100%}.tribe-events-admin-kb-card__title{color:#0f1031;flex-grow:0;font-size:20px;font-weight:700;line-height:1.2;margin:0;padding:20px 28px 10px}.tribe-events-admin-kb-card__links{margin:0;padding:0 28px 25px}.tribe-events-admin-kb-card__links li{margin:0 0 10px}.tribe-events-admin-kb-card__links li a{color:#334aff;font-size:14px;line-height:1.2;text-decoration:none}.tribe-events-admin-kb-card__links li a:focus{box-shadow:none;outline:none}.tribe-events-admin-kb-card__links li a:hover{color:#1c39bb}.tribe-events-admin-section-header{align-items:center;color:#000;display:flex;font-weight:700;justify-content:space-between;margin:0}.tribe-events-admin-section-header h3{color:#0f1031;font-size:28px;font-weight:700;line-height:1}.tribe-events-admin-section-header a{border-bottom:2px solid;color:#334aff;font-size:14px;padding-bottom:2px;text-decoration:none}.tribe-events-admin-section-header a:focus{box-shadow:none;outline:none}.tribe-events-admin-section-header a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-faq{margin:10px 0 0}.tribe-events-admin-faq-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-faq-card a{color:#0f1031}.tribe-events-admin-faq-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq-card a:hover{color:#1c39bb}.tribe-events-admin-faq-card__icon img{height:22px;width:16px}.tribe-events-admin-faq-card__content{margin-left:10px}.tribe-events-admin-faq__question,.tribe-events-admin-faq__question a{color:#334aff;font-size:16px;text-decoration:none}.tribe-events-admin-faq__question a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq__question a:hover{color:#1c39bb}.tribe-events-admin-faq__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin-extensions-title{color:#0f1031;font-size:16px;line-height:1.5;margin:0 0 30px;max-width:70%}.tribe-events-admin-extensions{margin:10px 0 0}.tribe-events-admin-extensions-card{border:1px solid #e1e1e4;border-radius:20px;border-top:8px solid #334aff;padding:48px 35px 24px 25px}.tribe-events-admin-extensions-card__title{font-size:20px;margin:0}.tribe-events-admin-extensions-card__title a{color:#0f1031;font-family:Helvetica,sans-serif;font-size:20px;font-weight:700;line-height:1.2;text-decoration:none}.tribe-events-admin-extensions-card__title a:active,.tribe-events-admin-extensions-card__title a:focus,.tribe-events-admin-extensions-card__title a:hover{box-shadow:none;color:#334aff}.tribe-events-admin-extensions-card__description{color:#0f1031;font-family:Helvetica,sans-serif;font-size:14px;line-height:1.43;margin:20px 0}.tribe-events-admin-cta{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;margin:60px 0}.tribe-events-admin-cta__image{height:152px;object-fit:contain;width:auto}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:20px 0;width:100%}.tribe-events-admin-cta__content-title{color:#0f1031;font-size:28px;font-weight:700;line-height:normal;margin:0 0 10px;text-align:center}.tribe-events-admin-cta__content-subtitle{color:#0f1031;font-size:16px;line-height:1.5;margin-bottom:10px;text-align:center}.tribe-events-admin-cta__content-description a{border-bottom:2px solid;color:#334aff;font-size:16px;font-weight:700;padding-bottom:2px;text-decoration:none}.tribe-events-admin-cta__content-description a:focus{box-shadow:none;outline:none}.tribe-events-admin-cta__content-description a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-footer-logo{display:inline-block;vertical-align:middle;width:228px}.tribe-events-admin-step{margin:10px 0 0}.tribe-events-admin-step-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-step-card a{border-bottom:2px solid;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin-step-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-step-card a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-step-card__icon img{height:43px;margin-right:5px;width:42px}.tribe-events-admin-step-card__content{margin-left:10px}.tribe-events-admin-step__title{color:#0f1031;font-size:20px;font-weight:700;line-height:1.2;margin-bottom:10px}.tribe-events-admin-step__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin__system-information{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr;margin:100px 0;position:relative}.tribe-events-admin__troubleshooting-title{color:#0f1031;font-size:28px;font-weight:700;line-height:1;margin:0}.tribe-events-admin__troubleshooting-description{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__system-information-select{display:flex;margin:30px 0 20px}.tribe-events-admin__system-information-select input[type=checkbox]{margin:0 10px 0 0}.tribe-events-admin__system-information-select label{color:#0f1031;font-size:16px;line-height:1.2}.tribe-events-admin__system-information-content small{color:#0f1031;font-size:12px;line-height:1.2}.tribe-events-admin__recent-template-changes .template-updates-wrapper,.tribe-events-admin__system-information-widget{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__recent-template-changes .template-updates-wrapper p{color:#fff;font-size:14px;line-height:1.14;margin:0}.tribe-events-admin__system-information-widget a{color:#334aff}.tribe-events-admin__system-information-widget a:hover{opacity:.8}.tribe-events-admin__recent-template-changes .template-updates-wrapper{padding:30px 0 30px 27px}.tribe-events-admin__recent-template-changes .template-updates-wrapper::-webkit-scrollbar,.tribe-events-admin__system-information-widget::-webkit-scrollbar{display:none}.tribe-events-admin__system-information-widget-copy{bottom:10px;position:absolute}.tribe-events-admin__system-information-widget-copy button{background-color:#334aff;border:none;border-radius:100px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;outline:none;padding:18px 25px;text-align:center}.tribe-events-admin__system-information-widget-copy button:hover{background-color:#1c39bb}.tribe-events-admin__system-information-widget-copy button .dashicons,.tribe-events-admin__system-information-widget-copy button .dashicons-before:before{display:none}.tribe-events-admin__system-information-widget-copy button .optin-success{color:#fff;font-size:16px;font-weight:700;text-align:center}.tribe-events-admin__recent-template-changes p{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__recent-log{margin-top:50px}.tribe-events-admin__troubleshooting-event-log-wrapper label{color:#0f1031;display:block;font-size:16px;line-height:1.63;margin-bottom:10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-controls{margin:20px 0 10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;min-height:60px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer::-webkit-scrollbar{display:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log{border-bottom:2px solid;color:#334aff;font-size:16px;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__troubleshooting-event-log-wrapper .tribe-events-admin__recent-log-filters-select-wrapper:after{display:none}.tribe-events-admin__recent-log-filters{display:flex;padding:20px 0 40px}.tribe-events-admin__recent-log-filters-field{margin-right:40px}.tribe-events-admin__recent-log-filters-select-wrapper:after{content:url(../images/help/polygon.svg);height:13px;pointer-events:none;position:absolute;right:22px;top:20px;width:14px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single{border:1px solid #e1e1e4!important;border-radius:16px;color:#0f1031;font-size:14px;line-height:1.14;padding:0 25px 0 15px!important}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls{margin-bottom:20px;padding:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:75px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-selection__clear{display:none}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single .select2-selection__arrow{right:5px}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container .select2-selection--single .select2-selection__rendered{width:100%}.tribe-events-admin__recent-log-filters-select-wrapper select.focus-visible,.tribe-events-admin__recent-log-filters-select-wrapper select:focus-visible{outline:none}.tribe-events-admin__recent-log-filters-select-wrapper select option{color:#0f1031;font-size:14px;line-height:1.14}.tribe-events-admin__ea-status{margin-top:50px}.tribe-events-admin__issues-found-card{background-color:#f3eee8;border-radius:8px;margin-bottom:20px}.tribe-events-admin__issues-found-card:last-of-type{margin-bottom:100px}.tribe-events-admin__issues-found-card-title{align-items:center;cursor:pointer;display:flex;padding:10px 20px 10px 17px;position:relative}.tribe-events-admin__issues-found-card-title img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe-events-admin__issues-found-card-title h3{margin:0}.tribe-events-admin__issues-found-card-title span{color:#0f1031;display:block}.tribe-events-admin__issues-found-card-title i{background-image:url(../images/help/arrow-down.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;height:15px;margin:12px 20px;position:absolute;right:0;top:0;transition:all .3s ease;width:15px}.tribe-events-admin__issues-found-card-title.active i{background-image:url(../images/help/arrow-up.svg);background-repeat:no-repeat;top:5px}.tribe-events-admin__issues-found-card-description{display:none;padding:0 20px 20px 55px}.tribe-events-admin__issues-found-card-description p{color:#0f1031;font-size:16px;margin:0}.tribe-events-admin__issues-found-card-description-actions{display:flex;padding:20px 0 10px}.tribe-events-admin__issues-found-card-description-actions a{border-bottom:2px solid;color:#334aff;font-size:16px;margin-right:20px;padding-bottom:5px;text-decoration:none}.tribe-events-admin__issues-found-card-description-actions a:focus{box-shadow:none;outline:none}.tribe-events-admin__issues-found-card-description-actions a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__ea-status-table-wrapper{overflow-x:auto}.tribe-events-admin__ea-status-table{border:1px solid #e1e1e4;border-radius:16px;margin:30px 0 40px;overflow:hidden}.tribe-events-admin__ea-status-table a{border-bottom:2px solid;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin__ea-status-table a:focus{box-shadow:none;outline:none}.tribe-events-admin__ea-status-table a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__ea-status-table tr{align-items:center;display:flex}.tribe-events-admin__ea-status-table th{color:#0f1031;font-weight:700;line-height:1.17;margin-top:10px;padding:5px 25px}.tribe-events-admin__ea-status-table td{align-items:center;color:#0f1031;display:flex;font-size:16px;line-height:1.63;padding:10px 25px;width:25%}.tribe-events-admin__ea-status-table td:nth-child(2){width:45%}.tribe-events-admin__ea-status-table td:nth-child(3){display:flex;justify-content:flex-end;width:30%}.tribe-events-admin__ea-status-table-dark{background-color:#f9f7f4}.tribe-events-admin__ea-status-table td img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tec-troubleshooting,.tribe_events_page_tec-troubleshooting{background-color:#fff}#tribe-community,#tribe-ticketing{display:none}.tribe-events-admin__troubleshooting-notice{background-color:#161b7d;color:#fff;font-size:16px;line-height:1;margin-left:-1.55vw;padding:24px 0}.tribe-events-admin__troubleshooting-notice_title{margin:0 auto;max-width:1024px;padding-left:25px;width:90%}.tribe-events-admin__troubleshooting-notice_title a{border-bottom:2px solid;color:#fff;font-size:16px;line-height:1;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-notice_title a:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-notice_title a:hover{border-bottom:2px solid;color:#f3eee8}.tec-help #tec-help-community,.tec-help #tec-help-ticketing{display:none}.tec-help .tribe-events-admin-title{padding-top:25px}.tec-help .tribe-events-admin-title img{height:67px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;border-radius:16px;box-shadow:none;box-sizing:border-box;margin-left:22px}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{background:#fff;border-color:#3d54ff;color:#3d54ff}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}.black-friday-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.black-friday-promo .black-friday-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.black-friday-promo .black-friday-promo__button:active,.black-friday-promo .black-friday-promo__button:focus,.black-friday-promo .black-friday-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.black-friday-promo__promo{background-position:50%;background-repeat:no-repeat;border-radius:10px;display:grid;grid-template-areas:"a b";grid-template-columns:auto 150px;height:150px;margin:10px 0;max-width:100%;width:450px}.black-friday-promo__content{grid-area:b;padding-top:8px;text-align:center}.black-friday-promo__text{color:#0f1031;font-family:monospace;font-size:16px;line-height:1;text-transform:uppercase}.black-friday-promo__branding-image{max-width:390px;width:100%}.end-of-year-sale-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.end-of-year-sale-promo .end-of-year-sale-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.end-of-year-sale-promo .end-of-year-sale-promo__button:active,.end-of-year-sale-promo .end-of-year-sale-promo__button:focus,.end-of-year-sale-promo .end-of-year-sale-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.end-of-year-sale-promo__promo{background-color:#fff;background-position:0 0;background-repeat:no-repeat;border-radius:10px;display:grid;flex-shrink:0;grid-template-areas:"a b";grid-template-columns:auto 160px;height:150px;margin:10px 0;max-width:100%;width:460px}.end-of-year-sale-promo__content{grid-area:b;padding-top:8px;text-align:center}.end-of-year-sale-promo__text{color:#0f1031;font-family:monospace;font-size:13px;line-height:1.2;margin-bottom:8px;text-transform:uppercase}.end-of-year-sale-promo__branding-image{max-width:390px;width:100%}.tribe-common .tec-admin__upsell{display:inline-block;font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-1);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-1)}.tribe-common .tec-admin__upsell-content{align-items:center;display:flex;padding:var(--tec-spacer-1);padding-right:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-icon,.tribe-common .tec-admin__upsell-icon-image{height:24px;width:24px}.tribe-common .tec-admin__upsell-text-wrap{margin-left:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold);text-decoration:none}.tribe-common .tec-admin__upsell--rounded-corners .tec-admin__upsell-content{background:var(--tec-color-accent-primary-background);border-radius:24px}.tribe-common .tec-admin__upsell--rounded-corners-text .tec-admin__upsell-text-wrap{background:rgba(51,74,255,.1);border-radius:14px;padding:var(--tec-spacer-1) var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link--dark{color:var(--tec-color-text-primary)}.tribe-common .tec-admin__upsell-link--underlined{text-decoration:underline}@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%}.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--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{margin-bottom:27px;max-width:340px}.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__title{font-size:20px;line-height:23px}.tribe-events-admin-card--1up{display:inline-block;margin-left:32px;width:calc(50% - 18px)}.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--no-pad{height:154px;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.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{max-width:250px;top:0}.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-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{max-width:1060px;width:100%}.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--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--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.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{border-radius:100px;display:inline-block;height:54px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0}.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}}@media screen and (max-width:768px){.tribe-events-admin-header__logo-word-mark{width:285px}.tribe-events-admin-header__right-image{height:160px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav li{margin-right:20px}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid currentColor;padding-bottom:10px}.tribe-events-admin-2col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-3col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta{align-items:flex-start;flex-direction:column;overflow:hidden}.tribe-events-admin-footer-logo{width:225px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}}@media screen and (max-width:480px){.tribe-events-admin-header__logo-word-mark{width:260px}.tribe-events-admin-header__right-image{height:120px}.tribe-events-admin-header__title{font-size:35px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav{border:1px solid #e1e1e4;border-radius:20px;flex-direction:column;padding:18px 22px}.tribe-events-admin-tab-nav li{margin-bottom:18px;margin-right:0}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid currentColor;padding-bottom:10px;width:fit-content}.tribe-events-admin__line{border:none}.tribe-events-admin-products-card,.tribe-events-admin-products-description{display:none}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{max-width:90%}.tribe-events-admin-2col-grid,.tribe-events-admin-3col-grid,.tribe-events-admin-4col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta__image{height:auto;width:90%}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:flex-start;padding:32px 23px 45px;width:auto}.tribe-events-admin-cta__content-title{font-size:22px;text-align:left}.tribe-events-admin-cta__content-subtitle{text-align:left}.tribe-events-admin-footer-logo{width:210px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}.tribe-events-admin__troubleshooting-notice{margin-left:-20px}.tribe-events-admin__troubleshooting-notice_title{max-width:90%}}@media screen and (min-width:1200px){.tribe-events-admin-products-card__group{max-width:47%}}@media screen and (min-width:500px) and (max-width:1080px){.tribe-events-admin-4col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}}@media screen and (min-width:768px){.tribe-events-admin-section-header{font-size:28px;line-height:1.143;margin:50px 0 21px}}@media screen and (max-width:1080px){.tribe-events-admin-cta__content-title{font-size:24px}}@media only screen and (max-width:1920px){.tribe-events-admin__system-information-widget-copy{right:20.5vw}}@media only screen and (max-width:1280px){.tribe-events-admin__system-information-widget-copy{right:22vw}}@media only screen and (max-width:768px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:30px}.tribe-events-admin__issues-found-card-title h3{max-width:90%}}@media only screen and (max-width:480px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper:after{right:25px}.tribe-events-admin__issues-found-card-title h3{max-width:80%}.tribe-events-admin__ea-status-table{overflow:scroll}.tribe-events-admin__ea-status-table td{min-width:150px}.tribe-events-admin__ea-status-table td:nth-child(2),.tribe-events-admin__ea-status-table td:nth-child(3){width:100%}}@media (min-width:1024px){.black-friday-promo{align-items:center;flex-direction:row}.black-friday-promo__branding{padding-right:10px;width:calc(100% - 450px)}.end-of-year-sale-promo{align-items:center;flex-direction:row}.end-of-year-sale-promo__branding{padding-right:10px;width:calc(100% - 460px)}}@media (max-width:525px){.end-of-year-sale-promo__promo{grid-template-areas:"a" "b";grid-template-columns:auto;margin:20px auto;padding-top:100px;width:300px}}
|
1 |
+
.invalid input,input:out-of-range{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}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{margin-left:1px;text-indent:0}.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-events-widget-admin-form__input-section p{margin:0}.tribe-events-widget-admin-form__input-section h4{margin:.5em 0}.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:#7ad03a;height:1rem;width:1%}#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;height:300px;overflow-y:scroll}#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{min-height:100px;padding:1em}.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;height:100%;max-height:150px;max-width:150px;vertical-align:middle;width:auto}.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}.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.tribe-notice-stellar-sale .tribe-marketing-notice{min-height:50px}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__content{align-content:center;display:flex;flex-wrap:wrap;justify-content:center;margin:auto}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__icon{align-self:baseline;height:20px;margin:auto 14px auto 0;width:13px}.notice-tribe-banner.tribe-notice-stellar-sale .tribe-marketing-notice__icon .tribe-common-c-svgicon--stellar-icon circle{stroke:#fff}.notice-tribe-banner.tribe-notice-stellar-sale .tec-stellar-sale-text{fill:#fff;height:16px;margin:unset;margin-top:.25em;stroke:#fff;width:176px}.notice-tribe-banner.tribe-notice-stellar-sale h3{font-weight:400;margin:auto 8px auto 14px;text-align:center}.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;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}#wpcontent .notice-tribe-banner{align-items:center;background-color:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale{background-color:#000}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a{color:#d8ff00;text-transform:uppercase}#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:active,#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:focus,#wpcontent .notice-tribe-banner.tribe-notice-stellar-sale a:hover{color:#e6b1fc}.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{border-top:1px solid #aaa;margin-top:-1px}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{border-bottom:1px solid #aaa;margin-bottom:-16px}.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:1px solid #ccc;border-radius:3px;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:transparent;background-image:none;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;bottom:0;display:block;height:auto;left:0;margin:0;padding:0;right:0;top:0;width:auto}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border:1px solid #ccc;border-radius:3px;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-bottom:0;padding-top:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:19px;margin-top:2px;padding-bottom:0;padding-top:0}.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{left:4px;top:3px;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-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]{background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;color:#e79496!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.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{border:solid #0ab152;border-width:0 3px 3px 0;content:"";display:block;height:15px;transform:rotate(45deg);width:8px}.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.tec-help,body.tribe-welcome{background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.tec-help .update-nag,body.tribe-welcome .update-nag{display:none}body.tec-help #wpcontent,body.tribe-welcome #wpcontent{padding:0}body.tec-help .tribe_settings,body.tribe-welcome .tribe_settings{margin:0}body.tec-help #wpfooter,body.tec-help .tribe_settings>h1,body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tec-help #wpbody-content,body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tec-help .tribe-dependency-error,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:0 0 30px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:0 auto 36px;padding:27px;text-align:center}.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__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;height:100px;margin:0 auto}.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}input[type=checkbox].tribe-common-switch__input{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label{background:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;cursor:pointer;display:block;height:18px;outline:0;padding:3px;position:relative;transition:all .2s ease;-webkit-user-select:none;user-select:none;width:27px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after,input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{content:"";display:block;height:10px;position:relative;width:10px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after{background:#878787;border-radius:2px;content:"";left:0;transition:all .2s ease}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label::selection{background:none}input[type=checkbox].tribe-common-switch__input:checked+.tribe-common-switch__label:after{background:#2e709d;left:50%}.tribe-events-admin-header__logo-word-mark{display:inline-block;height:auto;margin:0 0 26px;vertical-align:middle;width:312px}.tribe-events-admin-header{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:45px 0 0}.tribe-events-admin-header__right-image{height:280px;position:absolute;right:0;top:0;width:auto;z-index:-1}.tribe-events-admin-header__title{font-size:48px;line-height:48px;margin:0 0 18px}.tribe-events-admin-header__description{font-size:18px;line-height:28px;margin-bottom:44px;max-width:60%}.tribe-events-admin-tab-nav{display:flex;margin:0}.tribe-events-admin-tab-nav li{cursor:pointer;font-size:16px;font-weight:500;margin-bottom:0;margin-right:30px}.tribe-events-admin-tab-nav li:hover{color:#334aff}.tribe-events-admin-tab-nav .selected{border-bottom:3px solid currentColor;color:#334aff;padding-bottom:17px}.tribe-events-admin-tab-nav li:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}.tribe-events-admin__line{border-top:1px solid #e1e1e4}.tribe-events-admin-products-description{color:#0f1031;font-size:14px;line-height:2}.tribe-events-admin-products-card{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;padding:10px 15px}.tribe-events-admin-products-card__icon{height:40px;object-fit:contain;width:40px}.tribe-events-admin-products-card__group{margin:0 20px;max-width:55%}.tribe-events-admin-products-card__group-title{color:#0f1031;font-size:16px;font-weight:700;line-height:1;margin:0}.tribe-events-admin-products-card__group-description{font-size:12px;margin-top:5px}.tribe-events-admin-products-card__button{background-color:#fff;border:1px solid #e1e1e4;border-radius:20px;color:#0f1031;font-size:12px;font-weight:700;letter-spacing:1px;line-height:16px;margin-left:auto;padding:10px 15px;text-decoration:none;text-transform:uppercase}.tribe-events-admin-products-card__button:hover{background-color:#334aff;color:#fff}.tribe-events-admin-products-card__button:active,.tribe-events-admin-products-card__button:focus{box-shadow:none;outline:none}.tribe-events-admin-products-card__button--active,.tribe-events-admin-products-card__button--active:active,.tribe-events-admin-products-card__button--active:focus,.tribe-events-admin-products-card__button--active:hover{background:rgba(61,84,255,.16);color:#334aff;cursor:not-allowed;text-transform:uppercase}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{display:block;height:152px;margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{font-size:28px;line-height:34px;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin:0;padding:0;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__link{margin:0;padding:0}.tribe-events-admin-card--faq{display:inline-block;font-size:0;height:147px;margin:0 0 0 30px;padding:24px 16px 22px 20px;width:230px}.tribe-events-admin-card--faq:first-child{margin-left:0}.tribe-events-admin-card--faq img{float:left;height:22px;width:16px}.tribe-events-admin-card--faq .tribe-events-admin-faq__question{color:#334aff;font-size:16px;line-height:19px;margin:0 0 12px 26px;text-align:left}.tribe-events-admin-card--faq .tribe-events-admin-faq__answer{font-size:13px;line-height:16px;margin-left:26px;text-align:left}.tribe-events-admin-video{border-radius:16px;height:200px;margin-bottom:72px;-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);overflow:hidden;-webkit-transform:rotate(.000001deg)}.tribe-events-admin-video iframe{width:100%}.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;margin-bottom:16px;text-align:left}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{color:#fff;text-align:left}.tribe-events-admin-graphic{position:absolute;right:0;top:106px;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;border-radius:16px;box-sizing:border-box;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{margin:0 auto;max-width:1024px;width:90%}.tribe-events-admin-2col-grid{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-3col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . .";grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-4col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . . .";grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-products{margin:10px 0 0}.tribe-events-admin-quick-nav{background:#fff;border:1px solid #e1e1e4;border-radius:16px;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-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-bottom:0;padding-top:8px}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica,sans-serif;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{top:230px;width:300px}.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}.tribe-events-admin-kb{margin:10px 0 0}.tribe-events-admin-kb-card{border:1px solid #e1e1e4;border-radius:20px}.tribe-events-admin-kb-card__image{height:auto;width:100%}.tribe-events-admin-kb-card__title{color:#0f1031;flex-grow:0;font-size:20px;font-weight:700;line-height:1.2;margin:0;padding:20px 28px 10px}.tribe-events-admin-kb-card__links{margin:0;padding:0 28px 25px}.tribe-events-admin-kb-card__links li{margin:0 0 10px}.tribe-events-admin-kb-card__links li a{color:#334aff;font-size:14px;line-height:1.2;text-decoration:none}.tribe-events-admin-kb-card__links li a:focus{box-shadow:none;outline:none}.tribe-events-admin-kb-card__links li a:hover{color:#1c39bb}.tribe-events-admin-section-header{align-items:center;color:#000;display:flex;font-weight:700;justify-content:space-between;margin:0}.tribe-events-admin-section-header h3{color:#0f1031;font-size:28px;font-weight:700;line-height:1}.tribe-events-admin-section-header a{border-bottom:2px solid;color:#334aff;font-size:14px;padding-bottom:2px;text-decoration:none}.tribe-events-admin-section-header a:focus{box-shadow:none;outline:none}.tribe-events-admin-section-header a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-faq{margin:10px 0 0}.tribe-events-admin-faq-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-faq-card a{color:#0f1031}.tribe-events-admin-faq-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq-card a:hover{color:#1c39bb}.tribe-events-admin-faq-card__icon img{height:22px;width:16px}.tribe-events-admin-faq-card__content{margin-left:10px}.tribe-events-admin-faq__question,.tribe-events-admin-faq__question a{color:#334aff;font-size:16px;text-decoration:none}.tribe-events-admin-faq__question a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq__question a:hover{color:#1c39bb}.tribe-events-admin-faq__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin-extensions-title{color:#0f1031;font-size:16px;line-height:1.5;margin:0 0 30px;max-width:70%}.tribe-events-admin-extensions{margin:10px 0 0}.tribe-events-admin-extensions-card{border:1px solid #e1e1e4;border-radius:20px;border-top:8px solid #334aff;padding:48px 35px 24px 25px}.tribe-events-admin-extensions-card__title{font-size:20px;margin:0}.tribe-events-admin-extensions-card__title a{color:#0f1031;font-family:Helvetica,sans-serif;font-size:20px;font-weight:700;line-height:1.2;text-decoration:none}.tribe-events-admin-extensions-card__title a:active,.tribe-events-admin-extensions-card__title a:focus,.tribe-events-admin-extensions-card__title a:hover{box-shadow:none;color:#334aff}.tribe-events-admin-extensions-card__description{color:#0f1031;font-family:Helvetica,sans-serif;font-size:14px;line-height:1.43;margin:20px 0}.tribe-events-admin-cta{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;margin:60px 0}.tribe-events-admin-cta__image{height:152px;object-fit:contain;width:auto}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:20px 0;width:100%}.tribe-events-admin-cta__content-title{color:#0f1031;font-size:28px;font-weight:700;line-height:normal;margin:0 0 10px;text-align:center}.tribe-events-admin-cta__content-subtitle{color:#0f1031;font-size:16px;line-height:1.5;margin-bottom:10px;text-align:center}.tribe-events-admin-cta__content-description a{border-bottom:2px solid;color:#334aff;font-size:16px;font-weight:700;padding-bottom:2px;text-decoration:none}.tribe-events-admin-cta__content-description a:focus{box-shadow:none;outline:none}.tribe-events-admin-cta__content-description a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-footer-logo{display:inline-block;vertical-align:middle;width:228px}.tribe-events-admin-step{margin:10px 0 0}.tribe-events-admin-step-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-step-card a{border-bottom:2px solid;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin-step-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-step-card a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin-step-card__icon img{height:43px;margin-right:5px;width:42px}.tribe-events-admin-step-card__content{margin-left:10px}.tribe-events-admin-step__title{color:#0f1031;font-size:20px;font-weight:700;line-height:1.2;margin-bottom:10px}.tribe-events-admin-step__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin__system-information{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr;margin:100px 0;position:relative}.tribe-events-admin__troubleshooting-title{color:#0f1031;font-size:28px;font-weight:700;line-height:1;margin:0}.tribe-events-admin__troubleshooting-description{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__system-information-select{display:flex;margin:30px 0 20px}.tribe-events-admin__system-information-select input[type=checkbox]{margin:0 10px 0 0}.tribe-events-admin__system-information-select label{color:#0f1031;font-size:16px;line-height:1.2}.tribe-events-admin__system-information-content small{color:#0f1031;font-size:12px;line-height:1.2}.tribe-events-admin__recent-template-changes .template-updates-wrapper,.tribe-events-admin__system-information-widget{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__recent-template-changes .template-updates-wrapper p{color:#fff;font-size:14px;line-height:1.14;margin:0}.tribe-events-admin__system-information-widget a{color:#334aff}.tribe-events-admin__system-information-widget a:hover{opacity:.8}.tribe-events-admin__recent-template-changes .template-updates-wrapper{padding:30px 0 30px 27px}.tribe-events-admin__recent-template-changes .template-updates-wrapper::-webkit-scrollbar,.tribe-events-admin__system-information-widget::-webkit-scrollbar{display:none}.tribe-events-admin__system-information-widget-copy{bottom:10px;position:absolute}.tribe-events-admin__system-information-widget-copy button{background-color:#334aff;border:none;border-radius:100px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;outline:none;padding:18px 25px;text-align:center}.tribe-events-admin__system-information-widget-copy button:hover{background-color:#1c39bb}.tribe-events-admin__system-information-widget-copy button .dashicons,.tribe-events-admin__system-information-widget-copy button .dashicons-before:before{display:none}.tribe-events-admin__system-information-widget-copy button .optin-success{color:#fff;font-size:16px;font-weight:700;text-align:center}.tribe-events-admin__recent-template-changes p{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__recent-log{margin-top:50px}.tribe-events-admin__troubleshooting-event-log-wrapper label{color:#0f1031;display:block;font-size:16px;line-height:1.63;margin-bottom:10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-controls{margin:20px 0 10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;min-height:60px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer::-webkit-scrollbar{display:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log{border-bottom:2px solid;color:#334aff;font-size:16px;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__troubleshooting-event-log-wrapper .tribe-events-admin__recent-log-filters-select-wrapper:after{display:none}.tribe-events-admin__recent-log-filters{display:flex;padding:20px 0 40px}.tribe-events-admin__recent-log-filters-field{margin-right:40px}.tribe-events-admin__recent-log-filters-select-wrapper:after{content:url(../images/help/polygon.svg);height:13px;pointer-events:none;position:absolute;right:22px;top:20px;width:14px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single{border:1px solid #e1e1e4!important;border-radius:16px;color:#0f1031;font-size:14px;line-height:1.14;padding:0 25px 0 15px!important}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls{margin-bottom:20px;padding:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:75px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-selection__clear{display:none}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single .select2-selection__arrow{right:5px}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container .select2-selection--single .select2-selection__rendered{width:100%}.tribe-events-admin__recent-log-filters-select-wrapper select.focus-visible,.tribe-events-admin__recent-log-filters-select-wrapper select:focus-visible{outline:none}.tribe-events-admin__recent-log-filters-select-wrapper select option{color:#0f1031;font-size:14px;line-height:1.14}.tribe-events-admin__ea-status{margin-top:50px}.tribe-events-admin__issues-found-card{background-color:#f3eee8;border-radius:8px;margin-bottom:20px}.tribe-events-admin__issues-found-card:last-of-type{margin-bottom:100px}.tribe-events-admin__issues-found-card-title{align-items:center;cursor:pointer;display:flex;padding:10px 20px 10px 17px;position:relative}.tribe-events-admin__issues-found-card-title img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe-events-admin__issues-found-card-title h3{margin:0}.tribe-events-admin__issues-found-card-title span{color:#0f1031;display:block}.tribe-events-admin__issues-found-card-title i{background-image:url(../images/help/arrow-down.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;height:15px;margin:12px 20px;position:absolute;right:0;top:0;transition:all .3s ease;width:15px}.tribe-events-admin__issues-found-card-title.active i{background-image:url(../images/help/arrow-up.svg);background-repeat:no-repeat;top:5px}.tribe-events-admin__issues-found-card-description{display:none;padding:0 20px 20px 55px}.tribe-events-admin__issues-found-card-description p{color:#0f1031;font-size:16px;margin:0}.tribe-events-admin__issues-found-card-description-actions{display:flex;padding:20px 0 10px}.tribe-events-admin__issues-found-card-description-actions a{border-bottom:2px solid;color:#334aff;font-size:16px;margin-right:20px;padding-bottom:5px;text-decoration:none}.tribe-events-admin__issues-found-card-description-actions a:focus{box-shadow:none;outline:none}.tribe-events-admin__issues-found-card-description-actions a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__ea-status-table-wrapper{overflow-x:auto}.tribe-events-admin__ea-status-table{border:1px solid #e1e1e4;border-radius:16px;margin:30px 0 40px;overflow:hidden}.tribe-events-admin__ea-status-table a{border-bottom:2px solid;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin__ea-status-table a:focus{box-shadow:none;outline:none}.tribe-events-admin__ea-status-table a:hover{border-bottom:2px solid;color:#1c39bb}.tribe-events-admin__ea-status-table tr{align-items:center;display:flex}.tribe-events-admin__ea-status-table th{color:#0f1031;font-weight:700;line-height:1.17;margin-top:10px;padding:5px 25px}.tribe-events-admin__ea-status-table td{align-items:center;color:#0f1031;display:flex;font-size:16px;line-height:1.63;padding:10px 25px;width:25%}.tribe-events-admin__ea-status-table td:nth-child(2){width:45%}.tribe-events-admin__ea-status-table td:nth-child(3){display:flex;justify-content:flex-end;width:30%}.tribe-events-admin__ea-status-table-dark{background-color:#f9f7f4}.tribe-events-admin__ea-status-table td img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tec-troubleshooting,.tribe_events_page_tec-troubleshooting{background-color:#fff}#tribe-community,#tribe-ticketing{display:none}.tribe-events-admin__troubleshooting-notice{background-color:#161b7d;color:#fff;font-size:16px;line-height:1;margin-left:-1.55vw;padding:24px 0}.tribe-events-admin__troubleshooting-notice_title{margin:0 auto;max-width:1024px;padding-left:25px;width:90%}.tribe-events-admin__troubleshooting-notice_title a{border-bottom:2px solid;color:#fff;font-size:16px;line-height:1;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-notice_title a:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-notice_title a:hover{border-bottom:2px solid;color:#f3eee8}.tec-help #tec-help-community,.tec-help #tec-help-ticketing{display:none}.tec-help .tribe-events-admin-title{padding-top:25px}.tec-help .tribe-events-admin-title img{height:67px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;border-radius:16px;box-shadow:none;box-sizing:border-box;margin-left:22px}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{background:#fff;border-color:#3d54ff;color:#3d54ff}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}.black-friday-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.black-friday-promo .black-friday-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.black-friday-promo .black-friday-promo__button:active,.black-friday-promo .black-friday-promo__button:focus,.black-friday-promo .black-friday-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.black-friday-promo__promo{background-position:50%;background-repeat:no-repeat;border-radius:10px;display:grid;grid-template-areas:"a b";grid-template-columns:auto 150px;height:150px;margin:10px 0;max-width:100%;width:450px}.black-friday-promo__content{grid-area:b;padding-top:8px;text-align:center}.black-friday-promo__text{color:#0f1031;font-family:monospace;font-size:16px;line-height:1;text-transform:uppercase}.black-friday-promo__branding-image{max-width:390px;width:100%}.end-of-year-sale-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.end-of-year-sale-promo .end-of-year-sale-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.end-of-year-sale-promo .end-of-year-sale-promo__button:active,.end-of-year-sale-promo .end-of-year-sale-promo__button:focus,.end-of-year-sale-promo .end-of-year-sale-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.end-of-year-sale-promo__promo{background-color:#fff;background-position:0 0;background-repeat:no-repeat;border-radius:10px;display:grid;flex-shrink:0;grid-template-areas:"a b";grid-template-columns:auto 160px;height:150px;margin:10px 0;max-width:100%;width:460px}.end-of-year-sale-promo__content{grid-area:b;padding-top:8px;text-align:center}.end-of-year-sale-promo__text{color:#0f1031;font-family:monospace;font-size:13px;line-height:1.2;margin-bottom:8px;text-transform:uppercase}.end-of-year-sale-promo__branding-image{max-width:390px;width:100%}.tribe-common .tec-admin__upsell{display:inline-block;font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-1);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-1)}.tribe-common .tec-admin__upsell-content{align-items:center;display:flex;padding:var(--tec-spacer-1);padding-right:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-icon,.tribe-common .tec-admin__upsell-icon-image{height:24px;width:24px}.tribe-common .tec-admin__upsell-text-wrap{margin-left:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold);text-decoration:none}.tribe-common .tec-admin__upsell--rounded-corners .tec-admin__upsell-content{background:var(--tec-color-accent-primary-background);border-radius:24px}.tribe-common .tec-admin__upsell--rounded-corners-text .tec-admin__upsell-text-wrap{background:rgba(51,74,255,.1);border-radius:14px;padding:var(--tec-spacer-1) var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link--dark{color:var(--tec-color-text-primary)}.tribe-common .tec-admin__upsell-link--underlined{text-decoration:underline}.tribe-field .tec-admin__settings-image-field-btn-remove{border:none;color:#3c434a;cursor:pointer;padding:0;text-decoration:underline}.tribe-field .tec-admin__settings-image-field-image-container{height:120px;position:relative}.tribe-field .tec-admin__settings-image-field-image-container img{height:auto;max-height:100%;width:auto}.tribe-field.tribe-field-color .wp-color-result.button{align-items:stretch;border-radius:var(--tec-border-radius-default);display:flex;margin:0 6px 6px 0;min-height:30px;padding:0 0 0 var(--tec-spacer-7)}.tribe-field.tribe-field-color .wp-color-result-text{background:var(--tec-color-background);border-left:1px solid var(--tec-color-border-default);font-size:var(--tec-font-size-0);line-height:30px;padding:0 var(--tec-spacer-2)}@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%}.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--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{margin-bottom:27px;max-width:340px}.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__title{font-size:20px;line-height:23px}.tribe-events-admin-card--1up{display:inline-block;margin-left:32px;width:calc(50% - 18px)}.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--no-pad{height:154px;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.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{max-width:250px;top:0}.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-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{max-width:1060px;width:100%}.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--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--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.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{border-radius:100px;display:inline-block;height:54px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0}.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}}@media screen and (max-width:768px){.tribe-events-admin-header__logo-word-mark{width:285px}.tribe-events-admin-header__right-image{height:160px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav li{margin-right:20px}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid currentColor;padding-bottom:10px}.tribe-events-admin-2col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-3col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta{align-items:flex-start;flex-direction:column;overflow:hidden}.tribe-events-admin-footer-logo{width:225px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}}@media screen and (max-width:480px){.tribe-events-admin-header__logo-word-mark{width:260px}.tribe-events-admin-header__right-image{height:120px}.tribe-events-admin-header__title{font-size:35px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav{border:1px solid #e1e1e4;border-radius:20px;flex-direction:column;padding:18px 22px}.tribe-events-admin-tab-nav li{margin-bottom:18px;margin-right:0}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid currentColor;padding-bottom:10px;width:fit-content}.tribe-events-admin__line{border:none}.tribe-events-admin-products-card,.tribe-events-admin-products-description{display:none}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{max-width:90%}.tribe-events-admin-2col-grid,.tribe-events-admin-3col-grid,.tribe-events-admin-4col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta__image{height:auto;width:90%}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:flex-start;padding:32px 23px 45px;width:auto}.tribe-events-admin-cta__content-title{font-size:22px;text-align:left}.tribe-events-admin-cta__content-subtitle{text-align:left}.tribe-events-admin-footer-logo{width:210px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}.tribe-events-admin__troubleshooting-notice{margin-left:-20px}.tribe-events-admin__troubleshooting-notice_title{max-width:90%}}@media screen and (min-width:1200px){.tribe-events-admin-products-card__group{max-width:47%}}@media screen and (min-width:500px) and (max-width:1080px){.tribe-events-admin-4col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}}@media screen and (min-width:768px){.tribe-events-admin-section-header{font-size:28px;line-height:1.143;margin:50px 0 21px}}@media screen and (max-width:1080px){.tribe-events-admin-cta__content-title{font-size:24px}}@media only screen and (max-width:1920px){.tribe-events-admin__system-information-widget-copy{right:20.5vw}}@media only screen and (max-width:1280px){.tribe-events-admin__system-information-widget-copy{right:22vw}}@media only screen and (max-width:768px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:30px}.tribe-events-admin__issues-found-card-title h3{max-width:90%}}@media only screen and (max-width:480px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper:after{right:25px}.tribe-events-admin__issues-found-card-title h3{max-width:80%}.tribe-events-admin__ea-status-table{overflow:scroll}.tribe-events-admin__ea-status-table td{min-width:150px}.tribe-events-admin__ea-status-table td:nth-child(2),.tribe-events-admin__ea-status-table td:nth-child(3){width:100%}}@media (min-width:1024px){.black-friday-promo{align-items:center;flex-direction:row}.black-friday-promo__branding{padding-right:10px;width:calc(100% - 450px)}.end-of-year-sale-promo{align-items:center;flex-direction:row}.end-of-year-sale-promo__branding{padding-right:10px;width:calc(100% - 460px)}}@media (max-width:525px){.end-of-year-sale-promo__promo{grid-template-areas:"a" "b";grid-template-columns:auto;margin:20px auto;padding-top:100px;width:300px}}
|
common/src/resources/images/welcome/tickets-commerce.png
ADDED
Binary file
|
common/src/resources/js/admin-color-field.js
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* eslint-disable es5/no-arrow-functions */
|
2 |
+
/* eslint-disable linebreak-style */
|
3 |
+
/**
|
4 |
+
* Makes sure we have all the required levels on the Tribe Object.
|
5 |
+
*
|
6 |
+
* @since TBD
|
7 |
+
*
|
8 |
+
* @type {PlainObject}
|
9 |
+
*/
|
10 |
+
tribe.settings = tribe.settings || {};
|
11 |
+
tribe.settings.fields = tribe.settings.fields || {};
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Configure image field for settings in global Tribe variable.
|
15 |
+
*
|
16 |
+
* @since TBD
|
17 |
+
*
|
18 |
+
* @type {PlainObject}
|
19 |
+
*/
|
20 |
+
tribe.settings.fields.color = {};
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Initializes the color field for settings.
|
24 |
+
*
|
25 |
+
* @since TBD
|
26 |
+
*
|
27 |
+
* @param {PlainObject} $ jQuery
|
28 |
+
* @param {PlainObject} obj tribe.settings.fields.color
|
29 |
+
*/
|
30 |
+
( function( $, obj ) {
|
31 |
+
'use strict';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Selectors used for configuration and setup
|
35 |
+
*
|
36 |
+
* @since TBD
|
37 |
+
*
|
38 |
+
* @type {PlainObject}
|
39 |
+
*/
|
40 |
+
obj.selectors = {
|
41 |
+
colorFieldInput: '.tec-admin__settings-color-field-input',
|
42 |
+
};
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Handles the initialization of color fields when Document is ready.
|
46 |
+
*
|
47 |
+
* @since TBD
|
48 |
+
*
|
49 |
+
* @return {void}
|
50 |
+
*/
|
51 |
+
obj.init = () => {
|
52 |
+
$( obj.selectors.colorFieldInput ).wpColorPicker();
|
53 |
+
};
|
54 |
+
|
55 |
+
$( obj.init );
|
56 |
+
|
57 |
+
} )( jQuery, tribe.settings.fields.color );
|
common/src/resources/js/admin-color-field.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
tribe.settings=tribe.settings||{},tribe.settings.fields=tribe.settings.fields||{},tribe.settings.fields.color={},function(t,i){"use strict";i.selectors={colorFieldInput:".tec-admin__settings-color-field-input"},i.init=(()=>{t(i.selectors.colorFieldInput).wpColorPicker()}),t(i.init)}(jQuery,tribe.settings.fields.color);
|
common/src/resources/js/admin-image-field.js
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* eslint-disable linebreak-style */
|
2 |
+
/**
|
3 |
+
* Makes sure we have all the required levels on the Tribe Object.
|
4 |
+
*
|
5 |
+
* @since TBD
|
6 |
+
*
|
7 |
+
* @type {PlainObject}
|
8 |
+
*/
|
9 |
+
tribe.settings = tribe.settings || {};
|
10 |
+
tribe.settings.fields = tribe.settings.fields || {};
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Configure image field for settings in global Tribe variable.
|
14 |
+
*
|
15 |
+
* @since TBD
|
16 |
+
*
|
17 |
+
* @type {PlainObject}
|
18 |
+
*/
|
19 |
+
tribe.settings.fields.image = {};
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Intializes the image field for settings.
|
23 |
+
*
|
24 |
+
* @since TBD
|
25 |
+
*
|
26 |
+
* @param {PlainObject} $ jQuery
|
27 |
+
* @param {PlainObject} obj tribe.settings.fields.image
|
28 |
+
*/
|
29 |
+
( function( $, obj ) {
|
30 |
+
'use strict';
|
31 |
+
var $document = $( document );
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Store the frame object globally.
|
35 |
+
*
|
36 |
+
* @since TBD
|
37 |
+
*
|
38 |
+
* @type {PlainObject}
|
39 |
+
*/
|
40 |
+
obj.frame = false;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Selectors used for configuration and setup
|
44 |
+
*
|
45 |
+
* @since TBD
|
46 |
+
*
|
47 |
+
* @type {PlainObject}
|
48 |
+
*/
|
49 |
+
obj.selectors = {
|
50 |
+
imageFieldContainer: '.tribe-field-image',
|
51 |
+
addImgLink: '.tec-admin__settings-image-field-btn-add',
|
52 |
+
removeImgLink: '.tec-admin__settings-image-field-btn-remove',
|
53 |
+
imgContainer: '.tec-admin__settings-image-field-image-container',
|
54 |
+
imgIdInput: '.tec-admin__settings-image-field-input',
|
55 |
+
};
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Method to hide/show elements based on the image input field.
|
59 |
+
*
|
60 |
+
* @since TBD
|
61 |
+
*
|
62 |
+
* @param {jQuery} $fieldParent jQuery object of the field container.
|
63 |
+
*
|
64 |
+
* @return {void}
|
65 |
+
*/
|
66 |
+
obj.hideElements = function( $fieldParent ) {
|
67 |
+
const imageIsSet = $fieldParent.find( obj.selectors.imgIdInput ).val() !== '';
|
68 |
+
$fieldParent.find( obj.selectors.addImgLink ).toggleClass( 'hidden', imageIsSet );
|
69 |
+
$fieldParent.find( obj.selectors.removeImgLink ).toggleClass( 'hidden', !imageIsSet );
|
70 |
+
$fieldParent.find( obj.selectors.imgContainer ).toggleClass( 'hidden', !imageIsSet );
|
71 |
+
};
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Method to handle when image is selected from WP Media feature.
|
75 |
+
*
|
76 |
+
* @since TBD
|
77 |
+
*
|
78 |
+
* @param {jQuery} $fieldParent jQuery object of the field container.
|
79 |
+
*
|
80 |
+
* @return {void}
|
81 |
+
*/
|
82 |
+
obj.onImageSelect = function( $fieldParent ) {
|
83 |
+
const attachment = obj.frame.state().get('selection').first().toJSON(),
|
84 |
+
$imgContainer = $fieldParent.find( obj.selectors.imgContainer );
|
85 |
+
if ( $imgContainer.find( 'img' ).length > 0 ) {
|
86 |
+
$imgContainer.find( 'img' ).attr( 'src', attachment.url );
|
87 |
+
} else {
|
88 |
+
$imgContainer.html( '<img src="' + attachment.url + '" />' );
|
89 |
+
}
|
90 |
+
$fieldParent.find( obj.selectors.imgIdInput ).val( attachment.url );
|
91 |
+
obj.hideElements( $fieldParent );
|
92 |
+
};
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Method that handles 'Add Image' button click event.
|
96 |
+
*
|
97 |
+
* @since TBD
|
98 |
+
*
|
99 |
+
* @param {Event} e Click event.
|
100 |
+
*
|
101 |
+
* @return {void}
|
102 |
+
*/
|
103 |
+
obj.addImage = function( e ) {
|
104 |
+
e.preventDefault();
|
105 |
+
const $target = $( e.target );
|
106 |
+
const $fieldParent = $target.closest( obj.selectors.imageFieldContainer );
|
107 |
+
|
108 |
+
if ( obj.frame ) {
|
109 |
+
obj.frame.open();
|
110 |
+
} else {
|
111 |
+
obj.frame = wp.media({ // eslint-disable-line no-undef
|
112 |
+
title: $fieldParent.data( 'select-image-text' ),
|
113 |
+
button: {
|
114 |
+
text: $fieldParent.data( 'use-image-text' )
|
115 |
+
},
|
116 |
+
multiple: false
|
117 |
+
});
|
118 |
+
obj.frame.open();
|
119 |
+
}
|
120 |
+
|
121 |
+
obj.frame.off( 'select' ).on( 'select', function() {
|
122 |
+
obj.onImageSelect( $fieldParent );
|
123 |
+
} );
|
124 |
+
};
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Method that handles 'Remove Image' button click event.
|
128 |
+
*
|
129 |
+
* @since TBD
|
130 |
+
*
|
131 |
+
* @param {Event} e Click event.
|
132 |
+
*
|
133 |
+
* @return {void}
|
134 |
+
*/
|
135 |
+
obj.removeImage = function( e ) {
|
136 |
+
e.preventDefault();
|
137 |
+
const $target = $( e.target );
|
138 |
+
const $fieldParent = $target.closest( obj.selectors.imageFieldContainer );
|
139 |
+
$fieldParent.find( obj.selectors.imgIdInput ).val( '' );
|
140 |
+
$fieldParent.find( obj.selectors.imgContainer ).html( '' );
|
141 |
+
obj.hideElements( $fieldParent );
|
142 |
+
};
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Bind events for events bar
|
146 |
+
*
|
147 |
+
* @since TBD
|
148 |
+
*
|
149 |
+
* @return {void}
|
150 |
+
*/
|
151 |
+
obj.bindEvents = function() {
|
152 |
+
$document.on( 'click', obj.selectors.addImgLink, obj.addImage );
|
153 |
+
$document.on( 'click', obj.selectors.removeImgLink, obj.removeImage );
|
154 |
+
};
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Handles the initialization of image fields when Document is ready.
|
158 |
+
*
|
159 |
+
* @since TBD
|
160 |
+
*
|
161 |
+
* @return {void}
|
162 |
+
*/
|
163 |
+
obj.init = function() {
|
164 |
+
$( obj.selectors.imageFieldContainer ).each( function( x, elm ) {
|
165 |
+
obj.hideElements( $( elm ) );
|
166 |
+
} );
|
167 |
+
obj.bindEvents();
|
168 |
+
};
|
169 |
+
|
170 |
+
$( obj.init );
|
171 |
+
|
172 |
+
} )( jQuery, tribe.settings.fields.image );
|
common/src/resources/js/admin-image-field.min.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
tribe.settings=tribe.settings||{},tribe.settings.fields=tribe.settings.fields||{},tribe.settings.fields.image={},function(e,t){"use strict";var i=e(document);t.frame=!1,t.selectors={imageFieldContainer:".tribe-field-image",addImgLink:".tec-admin__settings-image-field-btn-add",removeImgLink:".tec-admin__settings-image-field-btn-remove",imgContainer:".tec-admin__settings-image-field-image-container",imgIdInput:".tec-admin__settings-image-field-input"},t.hideElements=function(e){const i=""!==e.find(t.selectors.imgIdInput).val();e.find(t.selectors.addImgLink).toggleClass("hidden",i),e.find(t.selectors.removeImgLink).toggleClass("hidden",!i),e.find(t.selectors.imgContainer).toggleClass("hidden",!i)},t.onImageSelect=function(e){const i=t.frame.state().get("selection").first().toJSON(),n=e.find(t.selectors.imgContainer);n.find("img").length>0?n.find("img").attr("src",i.url):n.html('<img src="'+i.url+'" />'),e.find(t.selectors.imgIdInput).val(i.url),t.hideElements(e)},t.addImage=function(i){i.preventDefault();const n=e(i.target).closest(t.selectors.imageFieldContainer);t.frame?t.frame.open():(t.frame=wp.media({title:n.data("select-image-text"),button:{text:n.data("use-image-text")},multiple:!1}),t.frame.open()),t.frame.off("select").on("select",function(){t.onImageSelect(n)})},t.removeImage=function(i){i.preventDefault();const n=e(i.target).closest(t.selectors.imageFieldContainer);n.find(t.selectors.imgIdInput).val(""),n.find(t.selectors.imgContainer).html(""),t.hideElements(n)},t.bindEvents=function(){i.on("click",t.selectors.addImgLink,t.addImage),i.on("click",t.selectors.removeImgLink,t.removeImage)},t.init=function(){e(t.selectors.imageFieldContainer).each(function(i,n){t.hideElements(e(n))}),t.bindEvents()},e(t.init)}(jQuery,tribe.settings.fields.image);
|
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 ComposerAutoloaderInit7aca5473727aeb3be10fa099344985aa::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 ComposerAutoloaderInit7b4c9b325ada73e49f16fe5940811ddf::getLoader();
|
common/vendor/composer/autoload_classmap.php
CHANGED
@@ -126,6 +126,7 @@ return array(
|
|
126 |
'Tribe\\Admin\\Notice\\Service_Provider' => $baseDir . '/src/Tribe/Admin/Notice/Service_Provider.php',
|
127 |
'Tribe\\Admin\\Notice\\WP_Version' => $baseDir . '/src/Tribe/Admin/Notice/WP_Version.php',
|
128 |
'Tribe\\Admin\\Pages' => $baseDir . '/src/Tribe/Admin/Pages.php',
|
|
|
129 |
'Tribe\\Admin\\Troubleshooting' => $baseDir . '/src/Tribe/Admin/Troubleshooting.php',
|
130 |
'Tribe\\Admin\\Upsell_Notice\\Main' => $baseDir . '/src/Tribe/Admin/Upsell_Notice/Main.php',
|
131 |
'Tribe\\Customizer\\Control' => $baseDir . '/src/Tribe/Customizer/Control.php',
|
126 |
'Tribe\\Admin\\Notice\\Service_Provider' => $baseDir . '/src/Tribe/Admin/Notice/Service_Provider.php',
|
127 |
'Tribe\\Admin\\Notice\\WP_Version' => $baseDir . '/src/Tribe/Admin/Notice/WP_Version.php',
|
128 |
'Tribe\\Admin\\Pages' => $baseDir . '/src/Tribe/Admin/Pages.php',
|
129 |
+
'Tribe\\Admin\\Settings' => $baseDir . '/src/Tribe/Admin/Settings.php',
|
130 |
'Tribe\\Admin\\Troubleshooting' => $baseDir . '/src/Tribe/Admin/Troubleshooting.php',
|
131 |
'Tribe\\Admin\\Upsell_Notice\\Main' => $baseDir . '/src/Tribe/Admin/Upsell_Notice/Main.php',
|
132 |
'Tribe\\Customizer\\Control' => $baseDir . '/src/Tribe/Customizer/Control.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 ComposerAutoloaderInitbe502ab6c2b9b341451ac40a62acd01b
|
|
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 ComposerAutoloaderInit7aca5473727aeb3be10fa099344985aa
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit7aca5473727aeb3be10fa099344985aa', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit7aca5473727aeb3be10fa099344985aa', '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\ComposerStaticInit7aca5473727aeb3be10fa099344985aa::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 ComposerAutoloaderInit0bcc44b8fd3b541feacf464057247397 {
|
|
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 ComposerAutoloaderInit7b4c9b325ada73e49f16fe5940811ddf {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit7b4c9b325ada73e49f16fe5940811ddf', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit7b4c9b325ada73e49f16fe5940811ddf', '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 ComposerStaticInitbe502ab6c2b9b341451ac40a62acd01b
|
|
187 |
'Tribe\\Admin\\Notice\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/Service_Provider.php',
|
188 |
'Tribe\\Admin\\Notice\\WP_Version' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/WP_Version.php',
|
189 |
'Tribe\\Admin\\Pages' => __DIR__ . '/../..' . '/src/Tribe/Admin/Pages.php',
|
|
|
190 |
'Tribe\\Admin\\Troubleshooting' => __DIR__ . '/../..' . '/src/Tribe/Admin/Troubleshooting.php',
|
191 |
'Tribe\\Admin\\Upsell_Notice\\Main' => __DIR__ . '/../..' . '/src/Tribe/Admin/Upsell_Notice/Main.php',
|
192 |
'Tribe\\Customizer\\Control' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Control.php',
|
@@ -269,10 +270,10 @@ class ComposerStaticInitbe502ab6c2b9b341451ac40a62acd01b
|
|
269 |
public static function getInitializer(ClassLoader $loader)
|
270 |
{
|
271 |
return \Closure::bind(function () use ($loader) {
|
272 |
-
$loader->prefixLengthsPsr4 =
|
273 |
-
$loader->prefixDirsPsr4 =
|
274 |
-
$loader->prefixesPsr0 =
|
275 |
-
$loader->classMap =
|
276 |
|
277 |
}, null, ClassLoader::class);
|
278 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit7aca5473727aeb3be10fa099344985aa
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
187 |
'Tribe\\Admin\\Notice\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/Service_Provider.php',
|
188 |
'Tribe\\Admin\\Notice\\WP_Version' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/WP_Version.php',
|
189 |
'Tribe\\Admin\\Pages' => __DIR__ . '/../..' . '/src/Tribe/Admin/Pages.php',
|
190 |
+
'Tribe\\Admin\\Settings' => __DIR__ . '/../..' . '/src/Tribe/Admin/Settings.php',
|
191 |
'Tribe\\Admin\\Troubleshooting' => __DIR__ . '/../..' . '/src/Tribe/Admin/Troubleshooting.php',
|
192 |
'Tribe\\Admin\\Upsell_Notice\\Main' => __DIR__ . '/../..' . '/src/Tribe/Admin/Upsell_Notice/Main.php',
|
193 |
'Tribe\\Customizer\\Control' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Control.php',
|
270 |
public static function getInitializer(ClassLoader $loader)
|
271 |
{
|
272 |
return \Closure::bind(function () use ($loader) {
|
273 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit7aca5473727aeb3be10fa099344985aa::$prefixLengthsPsr4;
|
274 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit7aca5473727aeb3be10fa099344985aa::$prefixDirsPsr4;
|
275 |
+
$loader->prefixesPsr0 = ComposerStaticInit7aca5473727aeb3be10fa099344985aa::$prefixesPsr0;
|
276 |
+
$loader->classMap = ComposerStaticInit7aca5473727aeb3be10fa099344985aa::$classMap;
|
277 |
|
278 |
}, null, ClassLoader::class);
|
279 |
}
|
event-tickets.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Event Tickets
|
4 |
Plugin URI: https://evnt.is/1acb
|
5 |
Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
|
6 |
-
Version: 5.4.
|
7 |
Author: The Events Calendar
|
8 |
Author URI: https://evnt.is/1aor
|
9 |
License: GPLv2 or later
|
@@ -12,7 +12,7 @@ Text Domain: event-tickets
|
|
12 |
Domain Path: /lang/
|
13 |
*/
|
14 |
/*
|
15 |
-
Copyright 2010-
|
16 |
|
17 |
This program is free software; you can redistribute it and/or
|
18 |
modify it under the terms of the GNU General Public License
|
3 |
Plugin Name: Event Tickets
|
4 |
Plugin URI: https://evnt.is/1acb
|
5 |
Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
|
6 |
+
Version: 5.4.4
|
7 |
Author: The Events Calendar
|
8 |
Author URI: https://evnt.is/1aor
|
9 |
License: GPLv2 or later
|
12 |
Domain Path: /lang/
|
13 |
*/
|
14 |
/*
|
15 |
+
Copyright 2010-2022 by The Events Calendar and the contributors
|
16 |
|
17 |
This program is free software; you can redistribute it and/or
|
18 |
modify it under the terms of the GNU General Public License
|
lang/event-tickets-nl_NL.mo
CHANGED
Binary file
|
lang/event-tickets-ro_RO.mo
CHANGED
Binary file
|
lang/event-tickets.pot
CHANGED
@@ -2,20 +2,20 @@
|
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Event Tickets 5.4.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
-
"POT-Creation-Date: 2022-
|
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: 2022-
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
-
#. #-#-#-#-# event-tickets.pot (Event Tickets 5.4.
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
#: event-tickets.php:61 src/Tribe/Admin/Notices.php:92 src/Tribe/Main.php:701
|
18 |
-
#: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:
|
19 |
msgid "Event Tickets"
|
20 |
msgstr ""
|
21 |
|
@@ -175,61 +175,61 @@ msgid "Check In"
|
|
175 |
msgstr ""
|
176 |
|
177 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:350
|
178 |
-
#: src/Tribe/Attendees_Table.php:
|
179 |
msgctxt "Attendees Table search options"
|
180 |
msgid "Search by Purchaser Name"
|
181 |
msgstr ""
|
182 |
|
183 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:351
|
184 |
-
#: src/Tribe/Attendees_Table.php:
|
185 |
msgctxt "Attendees Table search options"
|
186 |
msgid "Search by Purchaser Email"
|
187 |
msgstr ""
|
188 |
|
189 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:352
|
190 |
-
#: src/Tribe/Attendees_Table.php:
|
191 |
msgctxt "Attendees Table search options"
|
192 |
msgid "Search by Ticket Holder Name"
|
193 |
msgstr ""
|
194 |
|
195 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:353
|
196 |
-
#: src/Tribe/Attendees_Table.php:
|
197 |
msgctxt "Attendees Table search options"
|
198 |
msgid "Search by Ticket Holder Email"
|
199 |
msgstr ""
|
200 |
|
201 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:354
|
202 |
-
#: src/Tribe/Attendees_Table.php:
|
203 |
msgctxt "Attendees Table search options"
|
204 |
msgid "Search by User ID"
|
205 |
msgstr ""
|
206 |
|
207 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:355
|
208 |
-
#: src/Tribe/Attendees_Table.php:
|
209 |
msgctxt "Attendees Table search options"
|
210 |
msgid "Search by Order Status"
|
211 |
msgstr ""
|
212 |
|
213 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:356
|
214 |
-
#: src/Tribe/Attendees_Table.php:
|
215 |
msgctxt "Attendees Table search options"
|
216 |
msgid "Search by Order ID"
|
217 |
msgstr ""
|
218 |
|
219 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:357
|
220 |
-
#: src/Tribe/Attendees_Table.php:
|
221 |
msgctxt "Attendees Table search options"
|
222 |
msgid "Search by Security Code"
|
223 |
msgstr ""
|
224 |
|
225 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:358
|
226 |
-
#: src/Tribe/Attendees_Table.php:
|
227 |
msgctxt "Attendees Table search options"
|
228 |
msgid "Search by %s ID"
|
229 |
msgstr ""
|
230 |
|
231 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:359
|
232 |
-
#: src/Tribe/Attendees_Table.php:
|
233 |
msgctxt "Attendees Table search options"
|
234 |
msgid "Search by Product ID"
|
235 |
msgstr ""
|
@@ -259,7 +259,7 @@ msgid "Delete"
|
|
259 |
msgstr ""
|
260 |
|
261 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:630
|
262 |
-
#: src/Tribe/Attendees_Table.php:
|
263 |
msgid "No matching attendees found."
|
264 |
msgstr ""
|
265 |
|
@@ -307,12 +307,12 @@ msgstr ""
|
|
307 |
msgid "Total"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: src/Tickets/Commerce/Admin_Tables/Orders.php:
|
311 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:274
|
312 |
msgid "No matching orders found."
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: src/Tickets/Commerce/Admin_Tables/Orders.php:
|
316 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:177
|
317 |
msgid "%1$s"
|
318 |
msgstr ""
|
@@ -4639,32 +4639,32 @@ msgid "Reach out to PayPal to resolve the following capabilities:"
|
|
4639 |
msgstr ""
|
4640 |
|
4641 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:77
|
4642 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1906 src/Tribe/RSVP.php:
|
4643 |
msgid "Return to the %1$sAttendees Report%2$s."
|
4644 |
msgstr ""
|
4645 |
|
4646 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:84
|
4647 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1913 src/Tribe/RSVP.php:
|
4648 |
msgid "Post updated. %1$s"
|
4649 |
msgstr ""
|
4650 |
|
4651 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:88
|
4652 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1917 src/Tribe/RSVP.php:
|
4653 |
msgid "Post published. %1$s"
|
4654 |
msgstr ""
|
4655 |
|
4656 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:91
|
4657 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1920 src/Tribe/RSVP.php:
|
4658 |
msgid "Post submitted."
|
4659 |
msgstr ""
|
4660 |
|
4661 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:92
|
4662 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1921 src/Tribe/RSVP.php:
|
4663 |
msgid "Post scheduled."
|
4664 |
msgstr ""
|
4665 |
|
4666 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:93
|
4667 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1922 src/Tribe/RSVP.php:
|
4668 |
msgid "Post draft updated."
|
4669 |
msgstr ""
|
4670 |
|
@@ -4827,9 +4827,8 @@ msgstr ""
|
|
4827 |
#: src/Tickets/Commerce/Gateways/Stripe/Settings.php:194
|
4828 |
#: src/Tribe/Admin/Settings/Service_Provider.php:147
|
4829 |
#: src/Tribe/Admin/Settings/Service_Provider.php:195
|
4830 |
-
#: src/admin-views/admin-welcome-message.php:
|
4831 |
-
#: src/admin-views/admin-welcome-message.php:
|
4832 |
-
#: src/admin-views/admin-welcome-message.php:192
|
4833 |
msgid "Learn more"
|
4834 |
msgstr ""
|
4835 |
|
@@ -5060,11 +5059,12 @@ msgid "Tribe Commerce ( Legacy PayPal, not recommended )"
|
|
5060 |
msgstr ""
|
5061 |
|
5062 |
#: src/Tickets/Commerce/Models/Attendee_Model.php:62
|
5063 |
-
#: src/Tribe/Commerce/PayPal/Main.php:2957 src/Tribe/RSVP.php:
|
5064 |
msgid "(deleted)"
|
5065 |
msgstr ""
|
5066 |
|
5067 |
#: src/Tickets/Commerce/Module.php:20 src/Tickets/Commerce/Payments_Tab.php:200
|
|
|
5068 |
msgid "Tickets Commerce"
|
5069 |
msgstr ""
|
5070 |
|
@@ -5079,7 +5079,7 @@ msgid "Payments"
|
|
5079 |
msgstr ""
|
5080 |
|
5081 |
#: src/Tickets/Commerce/Payments_Tab.php:300 src/Tribe/Admin/Notices.php:214
|
5082 |
-
#: src/Tribe/Main.php:676 src/admin-views/admin-welcome-message.php:
|
5083 |
#: src/admin-views/tribe-commerce-settings.php:4
|
5084 |
msgid "Event Tickets Plus"
|
5085 |
msgstr ""
|
@@ -5434,11 +5434,11 @@ msgstr ""
|
|
5434 |
msgid "%s will be available on %s at %s"
|
5435 |
msgstr ""
|
5436 |
|
5437 |
-
#: src/Tickets/Commerce/Status/Pending.php:163 src/Tribe/Tickets.php:
|
5438 |
msgid "%s are no longer available."
|
5439 |
msgstr ""
|
5440 |
|
5441 |
-
#: src/Tickets/Commerce/Status/Pending.php:165 src/Tribe/Tickets.php:
|
5442 |
msgid "There are no %s available at this time."
|
5443 |
msgstr ""
|
5444 |
|
@@ -6237,7 +6237,7 @@ msgid ""
|
|
6237 |
msgstr ""
|
6238 |
|
6239 |
#: src/Tribe/Admin/Settings/Service_Provider.php:53
|
6240 |
-
#: src/admin-views/admin-welcome-message.php:
|
6241 |
msgid "Getting Started Guide"
|
6242 |
msgstr ""
|
6243 |
|
@@ -6297,6 +6297,7 @@ msgid ""
|
|
6297 |
msgstr ""
|
6298 |
|
6299 |
#: src/Tribe/Admin/Settings/Service_Provider.php:145
|
|
|
6300 |
msgid "Get started"
|
6301 |
msgstr ""
|
6302 |
|
@@ -6774,28 +6775,28 @@ msgstr ""
|
|
6774 |
msgid "Are you sure you want to cancel?"
|
6775 |
msgstr ""
|
6776 |
|
6777 |
-
#: src/Tribe/Editor/Blocks/Tickets.php:282 src/Tribe/Tickets.php:
|
6778 |
msgctxt "Error message title, will be followed by the error code."
|
6779 |
msgid "API Error"
|
6780 |
msgstr ""
|
6781 |
|
6782 |
-
#: src/Tribe/Editor/Blocks/Tickets.php:283 src/Tribe/Tickets.php:
|
6783 |
msgid ""
|
6784 |
"Refresh this page or wait a few minutes before trying again. If this happens "
|
6785 |
"repeatedly, please contact the Site Admin."
|
6786 |
msgstr ""
|
6787 |
|
6788 |
-
#: src/Tribe/Editor/Blocks/Tickets.php:284 src/Tribe/Tickets.php:
|
6789 |
msgid ""
|
6790 |
"The ticket for this event has sold out and has been removed from your cart."
|
6791 |
msgstr ""
|
6792 |
|
6793 |
-
#: src/Tribe/Editor/Blocks/Tickets.php:285 src/Tribe/Tickets.php:
|
6794 |
#: src/views/v2/commerce/order/header/title-empty.php:28
|
6795 |
msgid "Whoops!"
|
6796 |
msgstr ""
|
6797 |
|
6798 |
-
#: src/Tribe/Editor/Blocks/Tickets.php:286 src/Tribe/Tickets.php:
|
6799 |
msgctxt "The %s will change based on the error produced."
|
6800 |
msgid "You have %s ticket(s) with a field that requires information."
|
6801 |
msgstr ""
|
@@ -6903,7 +6904,7 @@ msgstr ""
|
|
6903 |
msgid "Powered by"
|
6904 |
msgstr ""
|
6905 |
|
6906 |
-
#: src/Tribe/JSON_LD/Order.php:132 src/Tribe/RSVP.php:
|
6907 |
#: src/admin-views/editor/column-body-price.php:23
|
6908 |
msgid "Free"
|
6909 |
msgstr ""
|
@@ -7423,139 +7424,134 @@ msgstr ""
|
|
7423 |
msgid "The requested page was not found."
|
7424 |
msgstr ""
|
7425 |
|
7426 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7427 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:90
|
7428 |
-
msgid "Sorry, Event Tickets Plus must be active to use this endpoint."
|
7429 |
-
msgstr ""
|
7430 |
-
|
7431 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:205
|
7432 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:239
|
7433 |
msgid "The page of results to return; defaults to 1"
|
7434 |
msgstr ""
|
7435 |
|
7436 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7437 |
msgid ""
|
7438 |
"How many attendees to return per results page; defaults to posts_per_page."
|
7439 |
msgstr ""
|
7440 |
|
7441 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7442 |
msgid ""
|
7443 |
"Limit results to attendees whose ticket is provided by one of the providers "
|
7444 |
"specified in the CSV list or array; defaults to all the available."
|
7445 |
msgstr ""
|
7446 |
|
7447 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7448 |
msgid ""
|
7449 |
"Limit results to attendees containing the specified string in the title or "
|
7450 |
"description."
|
7451 |
msgstr ""
|
7452 |
|
7453 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7454 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:260
|
7455 |
msgid "Offset the results by a specific number of items."
|
7456 |
msgstr ""
|
7457 |
|
7458 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7459 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:266
|
7460 |
msgid "Sort results in ASC or DESC order. Defaults to ASC."
|
7461 |
msgstr ""
|
7462 |
|
7463 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7464 |
msgid ""
|
7465 |
"Order the results by one of date, relevance, id, include, title or slug. "
|
7466 |
"Defaults to id."
|
7467 |
msgstr ""
|
7468 |
|
7469 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7470 |
msgid "Limit results to attendees by post the ticket is associated with."
|
7471 |
msgstr ""
|
7472 |
|
7473 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7474 |
msgid "Limit results to attendees associated with a ticket."
|
7475 |
msgstr ""
|
7476 |
|
7477 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7478 |
msgid ""
|
7479 |
"Limit results to attendees created after or on the specified UTC date or "
|
7480 |
"timestamp."
|
7481 |
msgstr ""
|
7482 |
|
7483 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7484 |
msgid ""
|
7485 |
"Limit results to attendees created before or on the specified UTC date or "
|
7486 |
"timestamp."
|
7487 |
msgstr ""
|
7488 |
|
7489 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7490 |
msgid "Limit results to a specific CSV list or array of attendee IDs."
|
7491 |
msgstr ""
|
7492 |
|
7493 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7494 |
msgid "Exclude a specific CSV list or array of attendee IDs from the results."
|
7495 |
msgstr ""
|
7496 |
|
7497 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7498 |
msgid ""
|
7499 |
"Limit results to attendees that paid tickets a price equal or below the "
|
7500 |
"specified value; if not specified no maximum price limit will be used."
|
7501 |
msgstr ""
|
7502 |
|
7503 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7504 |
msgid ""
|
7505 |
"Limit results to attendees that paid tickets a price equal or above the "
|
7506 |
"specified value; if not specified no minimum price limit will be used."
|
7507 |
msgstr ""
|
7508 |
|
7509 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7510 |
msgid ""
|
7511 |
"Limit results to attendees whose ticket is assigned to one of the posts "
|
7512 |
"specified in the CSV list or array."
|
7513 |
msgstr ""
|
7514 |
|
7515 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7516 |
msgid ""
|
7517 |
"Limit results to attendees whose tickets is not assigned to any of the posts "
|
7518 |
"specified in the CSV list or array.."
|
7519 |
msgstr ""
|
7520 |
|
7521 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7522 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:314
|
7523 |
msgid "Limit results to a specific CSV list or array of ticket IDs."
|
7524 |
msgstr ""
|
7525 |
|
7526 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7527 |
msgid "Exclude a specific CSV list or array of ticket IDs."
|
7528 |
msgstr ""
|
7529 |
|
7530 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7531 |
msgid ""
|
7532 |
"Limit results to attendees for posts that are in one of the post statuses "
|
7533 |
"specified in the CSV list or array; defaults to publish."
|
7534 |
msgstr ""
|
7535 |
|
7536 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7537 |
msgid ""
|
7538 |
"Limit results to attendees that are in one of post statuses specified in the "
|
7539 |
"CSV list or array; defaults to publish."
|
7540 |
msgstr ""
|
7541 |
|
7542 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7543 |
msgid ""
|
7544 |
"Limit results to attendees whose order status is in one of post statuses "
|
7545 |
"specified in the CSV list or array; defaults to public."
|
7546 |
msgstr ""
|
7547 |
|
7548 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7549 |
msgid "Limit results to attendees that are or not checked-in."
|
7550 |
msgstr ""
|
7551 |
|
7552 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7553 |
msgid ""
|
7554 |
"Limit results to RSVP Attendees that have one of the RSVP Going status "
|
7555 |
"specified in the CSV list or array."
|
7556 |
msgstr ""
|
7557 |
|
7558 |
-
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:
|
7559 |
msgid ""
|
7560 |
"Limit results to attendees for tickets that provide attendees the "
|
7561 |
"possibility to fill in additional information or not; requires ET+."
|
@@ -7626,65 +7622,65 @@ msgstr ""
|
|
7626 |
msgid "List of meta for each ticket to be saved for Attendee Registration"
|
7627 |
msgstr ""
|
7628 |
|
7629 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7630 |
msgid "Returns the data of the attendee with the specified post ID"
|
7631 |
msgstr ""
|
7632 |
|
7633 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7634 |
msgid "The attendee post ID is invalid."
|
7635 |
msgstr ""
|
7636 |
|
7637 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7638 |
msgid "The attendee with the specified ID is not accessible."
|
7639 |
msgstr ""
|
7640 |
|
7641 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7642 |
msgid "An attendee with the specified ID does not exist."
|
7643 |
msgstr ""
|
7644 |
|
7645 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7646 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7647 |
msgid "The attendee post ID"
|
7648 |
msgstr ""
|
7649 |
|
7650 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7651 |
msgid "Something went wrong! Attendee creation failed."
|
7652 |
msgstr ""
|
7653 |
|
7654 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7655 |
msgid "The Ticket ID, where the attendee is registered."
|
7656 |
msgstr ""
|
7657 |
|
7658 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7659 |
msgid "Full name of the attendee."
|
7660 |
msgstr ""
|
7661 |
|
7662 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7663 |
msgid "Email of the attendeee."
|
7664 |
msgstr ""
|
7665 |
|
7666 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7667 |
msgid "Order Status for the attendee."
|
7668 |
msgstr ""
|
7669 |
|
7670 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7671 |
msgid "Something went wrong! Attendee update failed."
|
7672 |
msgstr ""
|
7673 |
|
7674 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7675 |
msgid "Ticket Provider not found."
|
7676 |
msgstr ""
|
7677 |
|
7678 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7679 |
msgid "Attendee ID is not valid."
|
7680 |
msgstr ""
|
7681 |
|
7682 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7683 |
msgid "Attendee provider not found."
|
7684 |
msgstr ""
|
7685 |
|
7686 |
#. Translators: %s - List of valid statuses.
|
7687 |
-
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:
|
7688 |
msgid "Supported statuses for this attendee are: %s"
|
7689 |
msgstr ""
|
7690 |
|
@@ -7933,10 +7929,6 @@ msgstr ""
|
|
7933 |
msgid "Not going"
|
7934 |
msgstr ""
|
7935 |
|
7936 |
-
#: src/Tribe/RSVP.php:487
|
7937 |
-
msgid "Your RSVP was unsuccessful, please try again."
|
7938 |
-
msgstr ""
|
7939 |
-
|
7940 |
#: src/Tribe/RSVP.php:524
|
7941 |
msgid "Unable to verify your opt-in request, please try again."
|
7942 |
msgstr ""
|
@@ -7972,27 +7964,47 @@ msgstr ""
|
|
7972 |
msgid "Unable to process your request, attendee creation failed."
|
7973 |
msgstr ""
|
7974 |
|
7975 |
-
#: src/Tribe/RSVP.php:
|
|
|
|
|
|
|
|
|
7976 |
msgid "Your %1$s from %2$s"
|
7977 |
msgstr ""
|
7978 |
|
7979 |
-
#: src/Tribe/RSVP.php:
|
7980 |
msgid "You confirmed you will not be attending %s"
|
7981 |
msgstr ""
|
7982 |
|
7983 |
-
#: src/Tribe/RSVP.php:
|
7984 |
msgid ""
|
7985 |
"Your %1$s has been received! Check your email for your %1$s confirmation."
|
7986 |
msgstr ""
|
7987 |
|
7988 |
-
#: src/Tribe/RSVP.php:
|
7989 |
msgid "You can't %1$s more than the total remaining %2$s."
|
7990 |
msgstr ""
|
7991 |
|
7992 |
-
#: src/Tribe/RSVP.php:
|
7993 |
msgid "In order to %s, you must enter your name and a valid email address."
|
7994 |
msgstr ""
|
7995 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7996 |
#: src/Tribe/Status/Abstract_Commerce.php:169
|
7997 |
msgid "Sold"
|
7998 |
msgstr ""
|
@@ -8049,43 +8061,42 @@ msgstr ""
|
|
8049 |
msgid "Move %s"
|
8050 |
msgstr ""
|
8051 |
|
8052 |
-
#: src/Tribe/Tickets.php:
|
8053 |
msgid "Shared capacity with other tickets"
|
8054 |
msgstr ""
|
8055 |
|
8056 |
-
#: src/Tribe/Tickets.php:
|
8057 |
msgid "Set capacity for this ticket only"
|
8058 |
msgstr ""
|
8059 |
|
8060 |
#. translators: %1$s: The singular of "RSVP" or "ticket", %2$s: The plural of
|
8061 |
#. "RSVPs" or "tickets", %3$s: The site name.
|
8062 |
-
#: src/Tribe/Tickets.php:
|
8063 |
msgctxt "The default RSVP/ticket email subject"
|
8064 |
msgid "Your %1$s from %3$s"
|
8065 |
msgid_plural "Your %2$s from %3$s"
|
8066 |
msgstr[0] ""
|
8067 |
msgstr[1] ""
|
8068 |
|
8069 |
-
#: src/Tribe/Tickets.php:
|
8070 |
msgid "%s are not available as this %s has passed."
|
8071 |
msgstr ""
|
8072 |
|
8073 |
-
#: src/Tribe/Tickets.php:
|
8074 |
msgid "%s will be available on "
|
8075 |
msgstr ""
|
8076 |
|
8077 |
-
#: src/Tribe/Tickets.php:
|
8078 |
msgid " at "
|
8079 |
msgstr ""
|
8080 |
|
8081 |
#. translators: %s: Tickets label
|
8082 |
-
#: src/Tribe/Tickets.php:
|
8083 |
#: src/views/v2/tickets/item/content/inactive.php:53
|
8084 |
-
#: src/views/v2/tickets/item/inactive.php:63
|
8085 |
msgid "%s are not yet available"
|
8086 |
msgstr ""
|
8087 |
|
8088 |
-
#: src/Tribe/Tickets.php:
|
8089 |
msgid "(copy)"
|
8090 |
msgstr ""
|
8091 |
|
@@ -8109,194 +8120,186 @@ msgstr ""
|
|
8109 |
msgid "This %s is no longer active."
|
8110 |
msgstr ""
|
8111 |
|
8112 |
-
#: src/admin-views/admin-welcome-message.php:
|
8113 |
msgid "The Events Calendar product suite logo"
|
8114 |
msgstr ""
|
8115 |
|
8116 |
-
#: src/admin-views/admin-welcome-message.php:
|
8117 |
msgctxt "short expression of excitement"
|
8118 |
msgid "WOOHOO!"
|
8119 |
msgstr ""
|
8120 |
|
8121 |
-
#: src/admin-views/admin-welcome-message.php:
|
8122 |
msgid "You're the proud owner of Event Tickets Plus! Let's get started…"
|
8123 |
msgstr ""
|
8124 |
|
8125 |
-
#: src/admin-views/admin-welcome-message.php:
|
8126 |
-
#: src/admin-views/admin-welcome-message.php:
|
8127 |
msgid "Shapes and lines for visual interest"
|
8128 |
msgstr ""
|
8129 |
|
8130 |
-
#: src/admin-views/admin-welcome-message.php:
|
8131 |
msgid "Event Tickets logo"
|
8132 |
msgstr ""
|
8133 |
|
8134 |
-
#: src/admin-views/admin-welcome-message.php:
|
8135 |
msgid ""
|
8136 |
"Thanks for installing Event Tickets Plus! Here are some handy resources for "
|
8137 |
"getting started with our plugins."
|
8138 |
msgstr ""
|
8139 |
|
8140 |
-
#: src/admin-views/admin-welcome-message.php:
|
8141 |
msgid ""
|
8142 |
"Thanks for installing Event Tickets! Here are some handy resources for "
|
8143 |
"getting started with our plugins."
|
8144 |
msgstr ""
|
8145 |
|
8146 |
-
#: src/admin-views/admin-welcome-message.php:
|
8147 |
msgid "Quick Links:"
|
8148 |
msgstr ""
|
8149 |
|
8150 |
-
#: src/admin-views/admin-welcome-message.php:
|
8151 |
msgid "Configure Settings"
|
8152 |
msgstr ""
|
8153 |
|
8154 |
-
#: src/admin-views/admin-welcome-message.php:
|
8155 |
-
#: src/admin-views/admin-welcome-message.php:
|
8156 |
msgid "Install WooCommerce"
|
8157 |
msgstr ""
|
8158 |
|
8159 |
-
#: src/admin-views/admin-welcome-message.php:
|
8160 |
msgid "Create Ticket"
|
8161 |
msgstr ""
|
8162 |
|
8163 |
-
#: src/admin-views/admin-welcome-message.php:
|
8164 |
-
#: src/admin-views/admin-welcome-message.php:
|
8165 |
msgid "Install The Events Calendar"
|
8166 |
msgstr ""
|
8167 |
|
8168 |
-
#: src/admin-views/admin-welcome-message.php:
|
8169 |
msgid "Create RSVP"
|
8170 |
msgstr ""
|
8171 |
|
8172 |
-
#: src/admin-views/admin-welcome-message.php:
|
8173 |
-
#: src/admin-views/admin-welcome-message.php:
|
8174 |
msgid "Set Up Tickets Commerce"
|
8175 |
msgstr ""
|
8176 |
|
8177 |
-
#: src/admin-views/admin-welcome-message.php:
|
8178 |
msgid "Helpful Resources"
|
8179 |
msgstr ""
|
8180 |
|
8181 |
-
#: src/admin-views/admin-welcome-message.php:
|
8182 |
-
#: src/admin-views/admin-welcome-message.php:
|
8183 |
-
#: src/admin-views/admin-welcome-message.php:
|
8184 |
msgid "Illustration of a book with The Events Calendar logo"
|
8185 |
msgstr ""
|
8186 |
|
8187 |
-
#: src/admin-views/admin-welcome-message.php:
|
8188 |
msgid "New to Event Tickets? Here's everything you need to get started."
|
8189 |
msgstr ""
|
8190 |
|
8191 |
-
#: src/admin-views/admin-welcome-message.php:
|
8192 |
msgid "Check out the guide"
|
8193 |
msgstr ""
|
8194 |
|
8195 |
-
#: src/admin-views/admin-welcome-message.php:
|
8196 |
msgid "Illustration of a thought lightbulb coming from a book"
|
8197 |
msgstr ""
|
8198 |
|
8199 |
-
#: src/admin-views/admin-welcome-message.php:
|
8200 |
msgid "Knowledgebase"
|
8201 |
msgstr ""
|
8202 |
|
8203 |
-
#: src/admin-views/admin-welcome-message.php:
|
8204 |
msgid ""
|
8205 |
"Ready to dig deeper? Our Knowledgebase can help you get the most out of The "
|
8206 |
"Events Calendar suite."
|
8207 |
msgstr ""
|
8208 |
|
8209 |
-
#: src/admin-views/admin-welcome-message.php:
|
8210 |
msgid "Dig deeper"
|
8211 |
msgstr ""
|
8212 |
|
8213 |
-
#: src/admin-views/admin-welcome-message.php:
|
8214 |
-
msgid "Illustration of
|
8215 |
-
msgstr ""
|
8216 |
-
|
8217 |
-
#: src/admin-views/admin-welcome-message.php:148
|
8218 |
-
msgid "Translations"
|
8219 |
-
msgstr ""
|
8220 |
-
|
8221 |
-
#: src/admin-views/admin-welcome-message.php:149
|
8222 |
-
msgid "Need a language other than English? We've got you covered here."
|
8223 |
msgstr ""
|
8224 |
|
8225 |
-
#: src/admin-views/admin-welcome-message.php:
|
8226 |
msgid "Illustration of a phone screen with a person's face"
|
8227 |
msgstr ""
|
8228 |
|
8229 |
-
#: src/admin-views/admin-welcome-message.php:
|
8230 |
msgid "Virtual Event Resources"
|
8231 |
msgstr ""
|
8232 |
|
8233 |
-
#: src/admin-views/admin-welcome-message.php:
|
8234 |
msgid ""
|
8235 |
"Tips and tools to help with planning online events, webinars, and more on "
|
8236 |
"WordPress and beyond."
|
8237 |
msgstr ""
|
8238 |
|
8239 |
-
#: src/admin-views/admin-welcome-message.php:
|
8240 |
msgid "Get started with online events"
|
8241 |
msgstr ""
|
8242 |
|
8243 |
-
#: src/admin-views/admin-welcome-message.php:
|
8244 |
msgid "Illustration of a power plug and gears"
|
8245 |
msgstr ""
|
8246 |
|
8247 |
-
#: src/admin-views/admin-welcome-message.php:
|
8248 |
msgid "Browse our library of free extensions for Event Tickets."
|
8249 |
msgstr ""
|
8250 |
|
8251 |
-
#: src/admin-views/admin-welcome-message.php:
|
8252 |
-
#: src/admin-views/admin-welcome-message.php:
|
8253 |
msgid "Want to take your events to the next level?"
|
8254 |
msgstr ""
|
8255 |
|
8256 |
-
#: src/admin-views/admin-welcome-message.php:
|
8257 |
-
#: src/admin-views/admin-welcome-message.php:
|
8258 |
msgid "Check out our suite of add-ons"
|
8259 |
msgstr ""
|
8260 |
|
8261 |
-
#: src/admin-views/admin-welcome-message.php:
|
8262 |
msgid "Illustration of a calendar"
|
8263 |
msgstr ""
|
8264 |
|
8265 |
-
#: src/admin-views/admin-welcome-message.php:
|
8266 |
msgid "Add The Events Calendar (it's free!) to enhance Event Tickets."
|
8267 |
msgstr ""
|
8268 |
|
8269 |
-
#: src/admin-views/admin-welcome-message.php:
|
8270 |
msgid "Illustration of a hand holding a ticket and the WooCommerce logo"
|
8271 |
msgstr ""
|
8272 |
|
8273 |
-
#: src/admin-views/admin-welcome-message.php:
|
8274 |
msgid "Add WooCommerce integration, advanced registration, and more."
|
8275 |
msgstr ""
|
8276 |
|
8277 |
-
#: src/admin-views/admin-welcome-message.php:
|
8278 |
msgid "Check out Event Tickets Plus"
|
8279 |
msgstr ""
|
8280 |
|
8281 |
-
#: src/admin-views/admin-welcome-message.php:
|
8282 |
msgid "Want this emailed to you?"
|
8283 |
msgstr ""
|
8284 |
|
8285 |
-
#: src/admin-views/admin-welcome-message.php:
|
8286 |
msgid ""
|
8287 |
"Keep this list of links on hand and stay subscribed to receive tips and "
|
8288 |
"tricks about The Events Calendar products."
|
8289 |
msgstr ""
|
8290 |
|
8291 |
-
#: src/admin-views/admin-welcome-message.php:
|
8292 |
msgid "Your email"
|
8293 |
msgstr ""
|
8294 |
|
8295 |
-
#: src/admin-views/admin-welcome-message.php:
|
8296 |
msgid "Sign Up"
|
8297 |
msgstr ""
|
8298 |
|
8299 |
-
#: src/admin-views/admin-welcome-message.php:
|
8300 |
msgid "The Events Calendar brand logo"
|
8301 |
msgstr ""
|
8302 |
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Event Tickets 5.4.4\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
+
"POT-Creation-Date: 2022-08-11 05:07:59+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: 2022-08-11 05:07\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
+
#. #-#-#-#-# event-tickets.pot (Event Tickets 5.4.4) #-#-#-#-#
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
#: event-tickets.php:61 src/Tribe/Admin/Notices.php:92 src/Tribe/Main.php:701
|
18 |
+
#: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:73
|
19 |
msgid "Event Tickets"
|
20 |
msgstr ""
|
21 |
|
175 |
msgstr ""
|
176 |
|
177 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:350
|
178 |
+
#: src/Tribe/Attendees_Table.php:1003
|
179 |
msgctxt "Attendees Table search options"
|
180 |
msgid "Search by Purchaser Name"
|
181 |
msgstr ""
|
182 |
|
183 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:351
|
184 |
+
#: src/Tribe/Attendees_Table.php:1004
|
185 |
msgctxt "Attendees Table search options"
|
186 |
msgid "Search by Purchaser Email"
|
187 |
msgstr ""
|
188 |
|
189 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:352
|
190 |
+
#: src/Tribe/Attendees_Table.php:1005
|
191 |
msgctxt "Attendees Table search options"
|
192 |
msgid "Search by Ticket Holder Name"
|
193 |
msgstr ""
|
194 |
|
195 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:353
|
196 |
+
#: src/Tribe/Attendees_Table.php:1006
|
197 |
msgctxt "Attendees Table search options"
|
198 |
msgid "Search by Ticket Holder Email"
|
199 |
msgstr ""
|
200 |
|
201 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:354
|
202 |
+
#: src/Tribe/Attendees_Table.php:1007
|
203 |
msgctxt "Attendees Table search options"
|
204 |
msgid "Search by User ID"
|
205 |
msgstr ""
|
206 |
|
207 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:355
|
208 |
+
#: src/Tribe/Attendees_Table.php:1008
|
209 |
msgctxt "Attendees Table search options"
|
210 |
msgid "Search by Order Status"
|
211 |
msgstr ""
|
212 |
|
213 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:356
|
214 |
+
#: src/Tribe/Attendees_Table.php:1009
|
215 |
msgctxt "Attendees Table search options"
|
216 |
msgid "Search by Order ID"
|
217 |
msgstr ""
|
218 |
|
219 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:357
|
220 |
+
#: src/Tribe/Attendees_Table.php:1010
|
221 |
msgctxt "Attendees Table search options"
|
222 |
msgid "Search by Security Code"
|
223 |
msgstr ""
|
224 |
|
225 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:358
|
226 |
+
#: src/Tribe/Attendees_Table.php:1011
|
227 |
msgctxt "Attendees Table search options"
|
228 |
msgid "Search by %s ID"
|
229 |
msgstr ""
|
230 |
|
231 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:359
|
232 |
+
#: src/Tribe/Attendees_Table.php:1012
|
233 |
msgctxt "Attendees Table search options"
|
234 |
msgid "Search by Product ID"
|
235 |
msgstr ""
|
259 |
msgstr ""
|
260 |
|
261 |
#: src/Tickets/Commerce/Admin_Tables/Attendees.php:630
|
262 |
+
#: src/Tribe/Attendees_Table.php:989
|
263 |
msgid "No matching attendees found."
|
264 |
msgstr ""
|
265 |
|
307 |
msgid "Total"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: src/Tickets/Commerce/Admin_Tables/Orders.php:188
|
311 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:274
|
312 |
msgid "No matching orders found."
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: src/Tickets/Commerce/Admin_Tables/Orders.php:291
|
316 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:177
|
317 |
msgid "%1$s"
|
318 |
msgstr ""
|
4639 |
msgstr ""
|
4640 |
|
4641 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:77
|
4642 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1906 src/Tribe/RSVP.php:2365
|
4643 |
msgid "Return to the %1$sAttendees Report%2$s."
|
4644 |
msgstr ""
|
4645 |
|
4646 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:84
|
4647 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1913 src/Tribe/RSVP.php:2372
|
4648 |
msgid "Post updated. %1$s"
|
4649 |
msgstr ""
|
4650 |
|
4651 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:88
|
4652 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1917 src/Tribe/RSVP.php:2376
|
4653 |
msgid "Post published. %1$s"
|
4654 |
msgstr ""
|
4655 |
|
4656 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:91
|
4657 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1920 src/Tribe/RSVP.php:2379
|
4658 |
msgid "Post submitted."
|
4659 |
msgstr ""
|
4660 |
|
4661 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:92
|
4662 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1921 src/Tribe/RSVP.php:2380
|
4663 |
msgid "Post scheduled."
|
4664 |
msgstr ""
|
4665 |
|
4666 |
#: src/Tickets/Commerce/Gateways/PayPal/Tickets_Form.php:93
|
4667 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1922 src/Tribe/RSVP.php:2381
|
4668 |
msgid "Post draft updated."
|
4669 |
msgstr ""
|
4670 |
|
4827 |
#: src/Tickets/Commerce/Gateways/Stripe/Settings.php:194
|
4828 |
#: src/Tribe/Admin/Settings/Service_Provider.php:147
|
4829 |
#: src/Tribe/Admin/Settings/Service_Provider.php:195
|
4830 |
+
#: src/admin-views/admin-welcome-message.php:185
|
4831 |
+
#: src/admin-views/admin-welcome-message.php:205
|
|
|
4832 |
msgid "Learn more"
|
4833 |
msgstr ""
|
4834 |
|
5059 |
msgstr ""
|
5060 |
|
5061 |
#: src/Tickets/Commerce/Models/Attendee_Model.php:62
|
5062 |
+
#: src/Tribe/Commerce/PayPal/Main.php:2957 src/Tribe/RSVP.php:2024
|
5063 |
msgid "(deleted)"
|
5064 |
msgstr ""
|
5065 |
|
5066 |
#: src/Tickets/Commerce/Module.php:20 src/Tickets/Commerce/Payments_Tab.php:200
|
5067 |
+
#: src/admin-views/admin-welcome-message.php:161
|
5068 |
msgid "Tickets Commerce"
|
5069 |
msgstr ""
|
5070 |
|
5079 |
msgstr ""
|
5080 |
|
5081 |
#: src/Tickets/Commerce/Payments_Tab.php:300 src/Tribe/Admin/Notices.php:214
|
5082 |
+
#: src/Tribe/Main.php:676 src/admin-views/admin-welcome-message.php:71
|
5083 |
#: src/admin-views/tribe-commerce-settings.php:4
|
5084 |
msgid "Event Tickets Plus"
|
5085 |
msgstr ""
|
5434 |
msgid "%s will be available on %s at %s"
|
5435 |
msgstr ""
|
5436 |
|
5437 |
+
#: src/Tickets/Commerce/Status/Pending.php:163 src/Tribe/Tickets.php:3208
|
5438 |
msgid "%s are no longer available."
|
5439 |
msgstr ""
|
5440 |
|
5441 |
+
#: src/Tickets/Commerce/Status/Pending.php:165 src/Tribe/Tickets.php:3210
|
5442 |
msgid "There are no %s available at this time."
|
5443 |
msgstr ""
|
5444 |
|
6237 |
msgstr ""
|
6238 |
|
6239 |
#: src/Tribe/Admin/Settings/Service_Provider.php:53
|
6240 |
+
#: src/admin-views/admin-welcome-message.php:141
|
6241 |
msgid "Getting Started Guide"
|
6242 |
msgstr ""
|
6243 |
|
6297 |
msgstr ""
|
6298 |
|
6299 |
#: src/Tribe/Admin/Settings/Service_Provider.php:145
|
6300 |
+
#: src/admin-views/admin-welcome-message.php:163
|
6301 |
msgid "Get started"
|
6302 |
msgstr ""
|
6303 |
|
6775 |
msgid "Are you sure you want to cancel?"
|
6776 |
msgstr ""
|
6777 |
|
6778 |
+
#: src/Tribe/Editor/Blocks/Tickets.php:282 src/Tribe/Tickets.php:4338
|
6779 |
msgctxt "Error message title, will be followed by the error code."
|
6780 |
msgid "API Error"
|
6781 |
msgstr ""
|
6782 |
|
6783 |
+
#: src/Tribe/Editor/Blocks/Tickets.php:283 src/Tribe/Tickets.php:4339
|
6784 |
msgid ""
|
6785 |
"Refresh this page or wait a few minutes before trying again. If this happens "
|
6786 |
"repeatedly, please contact the Site Admin."
|
6787 |
msgstr ""
|
6788 |
|
6789 |
+
#: src/Tribe/Editor/Blocks/Tickets.php:284 src/Tribe/Tickets.php:4340
|
6790 |
msgid ""
|
6791 |
"The ticket for this event has sold out and has been removed from your cart."
|
6792 |
msgstr ""
|
6793 |
|
6794 |
+
#: src/Tribe/Editor/Blocks/Tickets.php:285 src/Tribe/Tickets.php:4341
|
6795 |
#: src/views/v2/commerce/order/header/title-empty.php:28
|
6796 |
msgid "Whoops!"
|
6797 |
msgstr ""
|
6798 |
|
6799 |
+
#: src/Tribe/Editor/Blocks/Tickets.php:286 src/Tribe/Tickets.php:4342
|
6800 |
msgctxt "The %s will change based on the error produced."
|
6801 |
msgid "You have %s ticket(s) with a field that requires information."
|
6802 |
msgstr ""
|
6904 |
msgid "Powered by"
|
6905 |
msgstr ""
|
6906 |
|
6907 |
+
#: src/Tribe/JSON_LD/Order.php:132 src/Tribe/RSVP.php:1616
|
6908 |
#: src/admin-views/editor/column-body-price.php:23
|
6909 |
msgid "Free"
|
6910 |
msgstr ""
|
7424 |
msgid "The requested page was not found."
|
7425 |
msgstr ""
|
7426 |
|
7427 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:199
|
|
|
|
|
|
|
|
|
|
|
7428 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:239
|
7429 |
msgid "The page of results to return; defaults to 1"
|
7430 |
msgstr ""
|
7431 |
|
7432 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:207
|
7433 |
msgid ""
|
7434 |
"How many attendees to return per results page; defaults to posts_per_page."
|
7435 |
msgstr ""
|
7436 |
|
7437 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:216
|
7438 |
msgid ""
|
7439 |
"Limit results to attendees whose ticket is provided by one of the providers "
|
7440 |
"specified in the CSV list or array; defaults to all the available."
|
7441 |
msgstr ""
|
7442 |
|
7443 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:229
|
7444 |
msgid ""
|
7445 |
"Limit results to attendees containing the specified string in the title or "
|
7446 |
"description."
|
7447 |
msgstr ""
|
7448 |
|
7449 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:235
|
7450 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:260
|
7451 |
msgid "Offset the results by a specific number of items."
|
7452 |
msgstr ""
|
7453 |
|
7454 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:241
|
7455 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:266
|
7456 |
msgid "Sort results in ASC or DESC order. Defaults to ASC."
|
7457 |
msgstr ""
|
7458 |
|
7459 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:250
|
7460 |
msgid ""
|
7461 |
"Order the results by one of date, relevance, id, include, title or slug. "
|
7462 |
"Defaults to id."
|
7463 |
msgstr ""
|
7464 |
|
7465 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:262
|
7466 |
msgid "Limit results to attendees by post the ticket is associated with."
|
7467 |
msgstr ""
|
7468 |
|
7469 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:268
|
7470 |
msgid "Limit results to attendees associated with a ticket."
|
7471 |
msgstr ""
|
7472 |
|
7473 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:274
|
7474 |
msgid ""
|
7475 |
"Limit results to attendees created after or on the specified UTC date or "
|
7476 |
"timestamp."
|
7477 |
msgstr ""
|
7478 |
|
7479 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:280
|
7480 |
msgid ""
|
7481 |
"Limit results to attendees created before or on the specified UTC date or "
|
7482 |
"timestamp."
|
7483 |
msgstr ""
|
7484 |
|
7485 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:286
|
7486 |
msgid "Limit results to a specific CSV list or array of attendee IDs."
|
7487 |
msgstr ""
|
7488 |
|
7489 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:299
|
7490 |
msgid "Exclude a specific CSV list or array of attendee IDs from the results."
|
7491 |
msgstr ""
|
7492 |
|
7493 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:312
|
7494 |
msgid ""
|
7495 |
"Limit results to attendees that paid tickets a price equal or below the "
|
7496 |
"specified value; if not specified no maximum price limit will be used."
|
7497 |
msgstr ""
|
7498 |
|
7499 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:318
|
7500 |
msgid ""
|
7501 |
"Limit results to attendees that paid tickets a price equal or above the "
|
7502 |
"specified value; if not specified no minimum price limit will be used."
|
7503 |
msgstr ""
|
7504 |
|
7505 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:324
|
7506 |
msgid ""
|
7507 |
"Limit results to attendees whose ticket is assigned to one of the posts "
|
7508 |
"specified in the CSV list or array."
|
7509 |
msgstr ""
|
7510 |
|
7511 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:337
|
7512 |
msgid ""
|
7513 |
"Limit results to attendees whose tickets is not assigned to any of the posts "
|
7514 |
"specified in the CSV list or array.."
|
7515 |
msgstr ""
|
7516 |
|
7517 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:350
|
7518 |
#: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:314
|
7519 |
msgid "Limit results to a specific CSV list or array of ticket IDs."
|
7520 |
msgstr ""
|
7521 |
|
7522 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:362
|
7523 |
msgid "Exclude a specific CSV list or array of ticket IDs."
|
7524 |
msgstr ""
|
7525 |
|
7526 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:374
|
7527 |
msgid ""
|
7528 |
"Limit results to attendees for posts that are in one of the post statuses "
|
7529 |
"specified in the CSV list or array; defaults to publish."
|
7530 |
msgstr ""
|
7531 |
|
7532 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:385
|
7533 |
msgid ""
|
7534 |
"Limit results to attendees that are in one of post statuses specified in the "
|
7535 |
"CSV list or array; defaults to publish."
|
7536 |
msgstr ""
|
7537 |
|
7538 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:396
|
7539 |
msgid ""
|
7540 |
"Limit results to attendees whose order status is in one of post statuses "
|
7541 |
"specified in the CSV list or array; defaults to public."
|
7542 |
msgstr ""
|
7543 |
|
7544 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:407
|
7545 |
msgid "Limit results to attendees that are or not checked-in."
|
7546 |
msgstr ""
|
7547 |
|
7548 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:412
|
7549 |
msgid ""
|
7550 |
"Limit results to RSVP Attendees that have one of the RSVP Going status "
|
7551 |
"specified in the CSV list or array."
|
7552 |
msgstr ""
|
7553 |
|
7554 |
+
#: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:423
|
7555 |
msgid ""
|
7556 |
"Limit results to attendees for tickets that provide attendees the "
|
7557 |
"possibility to fill in additional information or not; requires ET+."
|
7622 |
msgid "List of meta for each ticket to be saved for Attendee Registration"
|
7623 |
msgstr ""
|
7624 |
|
7625 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:23
|
7626 |
msgid "Returns the data of the attendee with the specified post ID"
|
7627 |
msgstr ""
|
7628 |
|
7629 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:33
|
7630 |
msgid "The attendee post ID is invalid."
|
7631 |
msgstr ""
|
7632 |
|
7633 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:43
|
7634 |
msgid "The attendee with the specified ID is not accessible."
|
7635 |
msgstr ""
|
7636 |
|
7637 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:53
|
7638 |
msgid "An attendee with the specified ID does not exist."
|
7639 |
msgstr ""
|
7640 |
|
7641 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:75
|
7642 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:216
|
7643 |
msgid "The attendee post ID"
|
7644 |
msgstr ""
|
7645 |
|
7646 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:116
|
7647 |
msgid "Something went wrong! Attendee creation failed."
|
7648 |
msgstr ""
|
7649 |
|
7650 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:140
|
7651 |
msgid "The Ticket ID, where the attendee is registered."
|
7652 |
msgstr ""
|
7653 |
|
7654 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:145
|
7655 |
msgid "Full name of the attendee."
|
7656 |
msgstr ""
|
7657 |
|
7658 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:151
|
7659 |
msgid "Email of the attendeee."
|
7660 |
msgstr ""
|
7661 |
|
7662 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:156
|
7663 |
msgid "Order Status for the attendee."
|
7664 |
msgstr ""
|
7665 |
|
7666 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:193
|
7667 |
msgid "Something went wrong! Attendee update failed."
|
7668 |
msgstr ""
|
7669 |
|
7670 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:244
|
7671 |
msgid "Ticket Provider not found."
|
7672 |
msgstr ""
|
7673 |
|
7674 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:289
|
7675 |
msgid "Attendee ID is not valid."
|
7676 |
msgstr ""
|
7677 |
|
7678 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:295
|
7679 |
msgid "Attendee provider not found."
|
7680 |
msgstr ""
|
7681 |
|
7682 |
#. Translators: %s - List of valid statuses.
|
7683 |
+
#: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:344
|
7684 |
msgid "Supported statuses for this attendee are: %s"
|
7685 |
msgstr ""
|
7686 |
|
7929 |
msgid "Not going"
|
7930 |
msgstr ""
|
7931 |
|
|
|
|
|
|
|
|
|
7932 |
#: src/Tribe/RSVP.php:524
|
7933 |
msgid "Unable to verify your opt-in request, please try again."
|
7934 |
msgstr ""
|
7964 |
msgid "Unable to process your request, attendee creation failed."
|
7965 |
msgstr ""
|
7966 |
|
7967 |
+
#: src/Tribe/RSVP.php:1072
|
7968 |
+
msgid "Invalid data! Missing required attendee details!"
|
7969 |
+
msgstr ""
|
7970 |
+
|
7971 |
+
#: src/Tribe/RSVP.php:1278
|
7972 |
msgid "Your %1$s from %2$s"
|
7973 |
msgstr ""
|
7974 |
|
7975 |
+
#: src/Tribe/RSVP.php:1384
|
7976 |
msgid "You confirmed you will not be attending %s"
|
7977 |
msgstr ""
|
7978 |
|
7979 |
+
#: src/Tribe/RSVP.php:1733
|
7980 |
msgid ""
|
7981 |
"Your %1$s has been received! Check your email for your %1$s confirmation."
|
7982 |
msgstr ""
|
7983 |
|
7984 |
+
#: src/Tribe/RSVP.php:1740
|
7985 |
msgid "You can't %1$s more than the total remaining %2$s."
|
7986 |
msgstr ""
|
7987 |
|
7988 |
+
#: src/Tribe/RSVP.php:1748
|
7989 |
msgid "In order to %s, you must enter your name and a valid email address."
|
7990 |
msgstr ""
|
7991 |
|
7992 |
+
#: src/Tribe/RSVP.php:2546
|
7993 |
+
msgid "Invalid parent ID provided!"
|
7994 |
+
msgstr ""
|
7995 |
+
|
7996 |
+
#: src/Tribe/RSVP.php:2553
|
7997 |
+
msgid "Invalid Ticket ID provided!"
|
7998 |
+
msgstr ""
|
7999 |
+
|
8000 |
+
#: src/Tribe/RSVP.php:2568 src/Tribe/RSVP.php:2574
|
8001 |
+
msgid "Missing required RSVP field: %s"
|
8002 |
+
msgstr ""
|
8003 |
+
|
8004 |
+
#: src/Tribe/RSVP.php:2612
|
8005 |
+
msgid "Requested amount of Tickets are not available!"
|
8006 |
+
msgstr ""
|
8007 |
+
|
8008 |
#: src/Tribe/Status/Abstract_Commerce.php:169
|
8009 |
msgid "Sold"
|
8010 |
msgstr ""
|
8061 |
msgid "Move %s"
|
8062 |
msgstr ""
|
8063 |
|
8064 |
+
#: src/Tribe/Tickets.php:1794
|
8065 |
msgid "Shared capacity with other tickets"
|
8066 |
msgstr ""
|
8067 |
|
8068 |
+
#: src/Tribe/Tickets.php:1795
|
8069 |
msgid "Set capacity for this ticket only"
|
8070 |
msgstr ""
|
8071 |
|
8072 |
#. translators: %1$s: The singular of "RSVP" or "ticket", %2$s: The plural of
|
8073 |
#. "RSVPs" or "tickets", %3$s: The site name.
|
8074 |
+
#: src/Tribe/Tickets.php:2412
|
8075 |
msgctxt "The default RSVP/ticket email subject"
|
8076 |
msgid "Your %1$s from %3$s"
|
8077 |
msgid_plural "Your %2$s from %3$s"
|
8078 |
msgstr[0] ""
|
8079 |
msgstr[1] ""
|
8080 |
|
8081 |
+
#: src/Tribe/Tickets.php:3160
|
8082 |
msgid "%s are not available as this %s has passed."
|
8083 |
msgstr ""
|
8084 |
|
8085 |
+
#: src/Tribe/Tickets.php:3196
|
8086 |
msgid "%s will be available on "
|
8087 |
msgstr ""
|
8088 |
|
8089 |
+
#: src/Tribe/Tickets.php:3202
|
8090 |
msgid " at "
|
8091 |
msgstr ""
|
8092 |
|
8093 |
#. translators: %s: Tickets label
|
8094 |
+
#: src/Tribe/Tickets.php:3205 src/views/blocks/tickets/content-inactive.php:19
|
8095 |
#: src/views/v2/tickets/item/content/inactive.php:53
|
|
|
8096 |
msgid "%s are not yet available"
|
8097 |
msgstr ""
|
8098 |
|
8099 |
+
#: src/Tribe/Tickets.php:3657
|
8100 |
msgid "(copy)"
|
8101 |
msgstr ""
|
8102 |
|
8120 |
msgid "This %s is no longer active."
|
8121 |
msgstr ""
|
8122 |
|
8123 |
+
#: src/admin-views/admin-welcome-message.php:42
|
8124 |
msgid "The Events Calendar product suite logo"
|
8125 |
msgstr ""
|
8126 |
|
8127 |
+
#: src/admin-views/admin-welcome-message.php:44
|
8128 |
msgctxt "short expression of excitement"
|
8129 |
msgid "WOOHOO!"
|
8130 |
msgstr ""
|
8131 |
|
8132 |
+
#: src/admin-views/admin-welcome-message.php:44
|
8133 |
msgid "You're the proud owner of Event Tickets Plus! Let's get started…"
|
8134 |
msgstr ""
|
8135 |
|
8136 |
+
#: src/admin-views/admin-welcome-message.php:53
|
8137 |
+
#: src/admin-views/admin-welcome-message.php:59
|
8138 |
msgid "Shapes and lines for visual interest"
|
8139 |
msgstr ""
|
8140 |
|
8141 |
+
#: src/admin-views/admin-welcome-message.php:66
|
8142 |
msgid "Event Tickets logo"
|
8143 |
msgstr ""
|
8144 |
|
8145 |
+
#: src/admin-views/admin-welcome-message.php:79
|
8146 |
msgid ""
|
8147 |
"Thanks for installing Event Tickets Plus! Here are some handy resources for "
|
8148 |
"getting started with our plugins."
|
8149 |
msgstr ""
|
8150 |
|
8151 |
+
#: src/admin-views/admin-welcome-message.php:81
|
8152 |
msgid ""
|
8153 |
"Thanks for installing Event Tickets! Here are some handy resources for "
|
8154 |
"getting started with our plugins."
|
8155 |
msgstr ""
|
8156 |
|
8157 |
+
#: src/admin-views/admin-welcome-message.php:87
|
8158 |
msgid "Quick Links:"
|
8159 |
msgstr ""
|
8160 |
|
8161 |
+
#: src/admin-views/admin-welcome-message.php:90
|
8162 |
msgid "Configure Settings"
|
8163 |
msgstr ""
|
8164 |
|
8165 |
+
#: src/admin-views/admin-welcome-message.php:94
|
8166 |
+
#: src/admin-views/admin-welcome-message.php:101
|
8167 |
msgid "Install WooCommerce"
|
8168 |
msgstr ""
|
8169 |
|
8170 |
+
#: src/admin-views/admin-welcome-message.php:97
|
8171 |
msgid "Create Ticket"
|
8172 |
msgstr ""
|
8173 |
|
8174 |
+
#: src/admin-views/admin-welcome-message.php:104
|
8175 |
+
#: src/admin-views/admin-welcome-message.php:115
|
8176 |
msgid "Install The Events Calendar"
|
8177 |
msgstr ""
|
8178 |
|
8179 |
+
#: src/admin-views/admin-welcome-message.php:108
|
8180 |
msgid "Create RSVP"
|
8181 |
msgstr ""
|
8182 |
|
8183 |
+
#: src/admin-views/admin-welcome-message.php:111
|
8184 |
+
#: src/admin-views/admin-welcome-message.php:118
|
8185 |
msgid "Set Up Tickets Commerce"
|
8186 |
msgstr ""
|
8187 |
|
8188 |
+
#: src/admin-views/admin-welcome-message.php:124
|
8189 |
msgid "Helpful Resources"
|
8190 |
msgstr ""
|
8191 |
|
8192 |
+
#: src/admin-views/admin-welcome-message.php:139
|
8193 |
+
#: src/admin-views/admin-welcome-message.php:192
|
8194 |
+
#: src/admin-views/admin-welcome-message.php:214
|
8195 |
msgid "Illustration of a book with The Events Calendar logo"
|
8196 |
msgstr ""
|
8197 |
|
8198 |
+
#: src/admin-views/admin-welcome-message.php:142
|
8199 |
msgid "New to Event Tickets? Here's everything you need to get started."
|
8200 |
msgstr ""
|
8201 |
|
8202 |
+
#: src/admin-views/admin-welcome-message.php:143
|
8203 |
msgid "Check out the guide"
|
8204 |
msgstr ""
|
8205 |
|
8206 |
+
#: src/admin-views/admin-welcome-message.php:149
|
8207 |
msgid "Illustration of a thought lightbulb coming from a book"
|
8208 |
msgstr ""
|
8209 |
|
8210 |
+
#: src/admin-views/admin-welcome-message.php:151
|
8211 |
msgid "Knowledgebase"
|
8212 |
msgstr ""
|
8213 |
|
8214 |
+
#: src/admin-views/admin-welcome-message.php:152
|
8215 |
msgid ""
|
8216 |
"Ready to dig deeper? Our Knowledgebase can help you get the most out of The "
|
8217 |
"Events Calendar suite."
|
8218 |
msgstr ""
|
8219 |
|
8220 |
+
#: src/admin-views/admin-welcome-message.php:153
|
8221 |
msgid "Dig deeper"
|
8222 |
msgstr ""
|
8223 |
|
8224 |
+
#: src/admin-views/admin-welcome-message.php:159
|
8225 |
+
msgid "Illustration of money turning into a ticket"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8226 |
msgstr ""
|
8227 |
|
8228 |
+
#: src/admin-views/admin-welcome-message.php:170
|
8229 |
msgid "Illustration of a phone screen with a person's face"
|
8230 |
msgstr ""
|
8231 |
|
8232 |
+
#: src/admin-views/admin-welcome-message.php:172
|
8233 |
msgid "Virtual Event Resources"
|
8234 |
msgstr ""
|
8235 |
|
8236 |
+
#: src/admin-views/admin-welcome-message.php:173
|
8237 |
msgid ""
|
8238 |
"Tips and tools to help with planning online events, webinars, and more on "
|
8239 |
"WordPress and beyond."
|
8240 |
msgstr ""
|
8241 |
|
8242 |
+
#: src/admin-views/admin-welcome-message.php:174
|
8243 |
msgid "Get started with online events"
|
8244 |
msgstr ""
|
8245 |
|
8246 |
+
#: src/admin-views/admin-welcome-message.php:182
|
8247 |
msgid "Illustration of a power plug and gears"
|
8248 |
msgstr ""
|
8249 |
|
8250 |
+
#: src/admin-views/admin-welcome-message.php:184
|
8251 |
msgid "Browse our library of free extensions for Event Tickets."
|
8252 |
msgstr ""
|
8253 |
|
8254 |
+
#: src/admin-views/admin-welcome-message.php:194
|
8255 |
+
#: src/admin-views/admin-welcome-message.php:216
|
8256 |
msgid "Want to take your events to the next level?"
|
8257 |
msgstr ""
|
8258 |
|
8259 |
+
#: src/admin-views/admin-welcome-message.php:195
|
8260 |
+
#: src/admin-views/admin-welcome-message.php:217
|
8261 |
msgid "Check out our suite of add-ons"
|
8262 |
msgstr ""
|
8263 |
|
8264 |
+
#: src/admin-views/admin-welcome-message.php:202
|
8265 |
msgid "Illustration of a calendar"
|
8266 |
msgstr ""
|
8267 |
|
8268 |
+
#: src/admin-views/admin-welcome-message.php:204
|
8269 |
msgid "Add The Events Calendar (it's free!) to enhance Event Tickets."
|
8270 |
msgstr ""
|
8271 |
|
8272 |
+
#: src/admin-views/admin-welcome-message.php:224
|
8273 |
msgid "Illustration of a hand holding a ticket and the WooCommerce logo"
|
8274 |
msgstr ""
|
8275 |
|
8276 |
+
#: src/admin-views/admin-welcome-message.php:226
|
8277 |
msgid "Add WooCommerce integration, advanced registration, and more."
|
8278 |
msgstr ""
|
8279 |
|
8280 |
+
#: src/admin-views/admin-welcome-message.php:227
|
8281 |
msgid "Check out Event Tickets Plus"
|
8282 |
msgstr ""
|
8283 |
|
8284 |
+
#: src/admin-views/admin-welcome-message.php:232
|
8285 |
msgid "Want this emailed to you?"
|
8286 |
msgstr ""
|
8287 |
|
8288 |
+
#: src/admin-views/admin-welcome-message.php:233
|
8289 |
msgid ""
|
8290 |
"Keep this list of links on hand and stay subscribed to receive tips and "
|
8291 |
"tricks about The Events Calendar products."
|
8292 |
msgstr ""
|
8293 |
|
8294 |
+
#: src/admin-views/admin-welcome-message.php:236
|
8295 |
msgid "Your email"
|
8296 |
msgstr ""
|
8297 |
|
8298 |
+
#: src/admin-views/admin-welcome-message.php:238
|
8299 |
msgid "Sign Up"
|
8300 |
msgstr ""
|
8301 |
|
8302 |
+
#: src/admin-views/admin-welcome-message.php:251
|
8303 |
msgid "The Events Calendar brand logo"
|
8304 |
msgstr ""
|
8305 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: theeventscalendar, brianjessee, camwynsp, aguseo, bordoni, borkweb
|
|
4 |
Tags: tickets, registration, event registration, RSVP, ticket sales, attendee management
|
5 |
Requires at least: 5.6
|
6 |
Tested up to: 6.0.1
|
7 |
-
Stable tag: 5.4.
|
8 |
Requires PHP: 7.1
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -188,6 +188,22 @@ Check out our extensive [knowledgebase](https://evnt.is/18wm) for articles on us
|
|
188 |
|
189 |
== Changelog ==
|
190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
= [5.4.3.1] 2022-07-21 =
|
192 |
|
193 |
* Fix - Update Freemius to avoid PHP 8 fatals. [TEC-4330]
|
4 |
Tags: tickets, registration, event registration, RSVP, ticket sales, attendee management
|
5 |
Requires at least: 5.6
|
6 |
Tested up to: 6.0.1
|
7 |
+
Stable tag: 5.4.4
|
8 |
Requires PHP: 7.1
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
188 |
|
189 |
== Changelog ==
|
190 |
|
191 |
+
= [5.4.4] 2022-08-15 =
|
192 |
+
|
193 |
+
* Fix - Tickets/RSVP blocks appear in wrong place on non-events when block editor is disabled in The Events Calendar. [ET-1544]
|
194 |
+
* Fix - Fixed searching attendees by purchaser name and email for Tickets Commerce attendees. [ET-1543]
|
195 |
+
* Fix - Fixed concurrent RSVP booking not showing error messages for out of stock tickets. [ET-1506]
|
196 |
+
* Fix - Fixed showing proper ticket unavailable message for past events. [ET-1146]
|
197 |
+
* Fix - Fixed Shared Capacity calculation with capped tickets. [ETP-801]
|
198 |
+
* Fix - Fixed logic that was causing fatal errors when using Elementor. [ET-1561]
|
199 |
+
* Enhancement - Sorting support added on Tickets Commerce Order Report page columns. [ET-1527]
|
200 |
+
* Enhancement - Sorting support added on Attendee Report page for Ticket, Security Code, and Check In columns. [ET-1526]
|
201 |
+
* Enhancement - Added section about Tickets Commerce on the Tickets Home page. [ET-1539]
|
202 |
+
* Enhancement - Tickets Commerce Stripe gateway now shows additional purchaser info metadata in Stripe dashboard. [ET-1542]
|
203 |
+
* Enhancement - Update REST API Endpoints to have access via API KEY and remove the restriction to be using Event Tickets Plus to access the `attendees` endpoint. [ET-1559]
|
204 |
+
* Enhancement - Allow filtering of Events Archive REST API using `ticketed` parameter to filter Ticketed and Non-ticketed events. [TEC-4439]
|
205 |
+
* Language - 6 new strings added, 162 updated, 0 fuzzied, and 9 obsoleted
|
206 |
+
|
207 |
= [5.4.3.1] 2022-07-21 =
|
208 |
|
209 |
* Fix - Update Freemius to avoid PHP 8 fatals. [TEC-4330]
|
src/Tickets/Commerce/Admin_Tables/Orders.php
CHANGED
@@ -140,6 +140,8 @@ class Orders extends WP_List_Table {
|
|
140 |
|
141 |
$search = tribe_get_request_var( 's' );
|
142 |
$page = absint( tribe_get_request_var( 'paged', 0 ) );
|
|
|
|
|
143 |
$arguments = [
|
144 |
'status' => 'any',
|
145 |
'paged' => $page,
|
@@ -157,6 +159,14 @@ class Orders extends WP_List_Table {
|
|
157 |
$arguments['tickets'] = $product_ids;
|
158 |
}
|
159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
$orders_repository = tec_tc_orders()->by_args( $arguments );
|
161 |
|
162 |
$total_items = $orders_repository->found();
|
@@ -334,4 +344,25 @@ class Orders extends WP_List_Table {
|
|
334 |
}
|
335 |
return $gateway::get_label();
|
336 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
}
|
140 |
|
141 |
$search = tribe_get_request_var( 's' );
|
142 |
$page = absint( tribe_get_request_var( 'paged', 0 ) );
|
143 |
+
$orderby = tribe_get_request_var( 'orderby' );
|
144 |
+
$order = tribe_get_request_var( 'order' );
|
145 |
$arguments = [
|
146 |
'status' => 'any',
|
147 |
'paged' => $page,
|
159 |
$arguments['tickets'] = $product_ids;
|
160 |
}
|
161 |
|
162 |
+
if ( ! empty( $orderby ) ) {
|
163 |
+
$arguments['orderby'] = $orderby;
|
164 |
+
}
|
165 |
+
|
166 |
+
if ( ! empty( $order ) ) {
|
167 |
+
$arguments['order'] = $order;
|
168 |
+
}
|
169 |
+
|
170 |
$orders_repository = tec_tc_orders()->by_args( $arguments );
|
171 |
|
172 |
$total_items = $orders_repository->found();
|
344 |
}
|
345 |
return $gateway::get_label();
|
346 |
}
|
347 |
+
|
348 |
+
/**
|
349 |
+
* List of sortable columns.
|
350 |
+
*
|
351 |
+
* @since TBD
|
352 |
+
*
|
353 |
+
* @return array
|
354 |
+
*/
|
355 |
+
public function get_sortable_columns() {
|
356 |
+
return [
|
357 |
+
'order' => 'order_id',
|
358 |
+
'purchaser' => 'purchaser_full_name',
|
359 |
+
'email' => 'purchaser_email',
|
360 |
+
'date' => 'purchase_time',
|
361 |
+
'gateway' => 'gateway',
|
362 |
+
'gateway_order_id' => 'gateway_id',
|
363 |
+
'status' => 'status',
|
364 |
+
'total' => 'total_value'
|
365 |
+
];
|
366 |
+
}
|
367 |
+
|
368 |
}
|
src/Tickets/Commerce/Gateways/Stripe/Payment_Intent_Handler.php
CHANGED
@@ -112,12 +112,7 @@ class Payment_Intent_Handler {
|
|
112 |
|
113 |
$stripe_receipt_emails = tribe_get_option( Settings::$option_stripe_receipt_emails );
|
114 |
$payment_intent = Payment_Intent::get( $payment_intent_id );
|
115 |
-
|
116 |
-
// Add the Order ID as metadata to the Payment Intent
|
117 |
-
$metadata = $payment_intent['metadata'];
|
118 |
-
$metadata['order_id'] = $order->ID;
|
119 |
-
$metadata['return_url'] = tribe( Webhook_Endpoint::class )->get_route_url();
|
120 |
-
$body['metadata'] = $metadata;
|
121 |
|
122 |
if ( $stripe_receipt_emails ) {
|
123 |
if ( is_user_logged_in() ) {
|
@@ -215,4 +210,46 @@ class Payment_Intent_Handler {
|
|
215 |
public function store_payment_intent( $payment_intent ) {
|
216 |
set_transient( $this->get_payment_intent_transient_name(), $payment_intent, 6 * HOUR_IN_SECONDS );
|
217 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
}
|
112 |
|
113 |
$stripe_receipt_emails = tribe_get_option( Settings::$option_stripe_receipt_emails );
|
114 |
$payment_intent = Payment_Intent::get( $payment_intent_id );
|
115 |
+
$body['metadata'] = $this->get_updated_metadata( $order, $payment_intent );
|
|
|
|
|
|
|
|
|
|
|
116 |
|
117 |
if ( $stripe_receipt_emails ) {
|
118 |
if ( is_user_logged_in() ) {
|
210 |
public function store_payment_intent( $payment_intent ) {
|
211 |
set_transient( $this->get_payment_intent_transient_name(), $payment_intent, 6 * HOUR_IN_SECONDS );
|
212 |
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Get the additional metadata for the payment intent.
|
216 |
+
*
|
217 |
+
* @since TBD
|
218 |
+
*
|
219 |
+
* @param \WP_Post $order The Order data.
|
220 |
+
* @param array $payment_intent The Payment intent.
|
221 |
+
*
|
222 |
+
* @return array
|
223 |
+
*/
|
224 |
+
protected function get_updated_metadata( \WP_Post $order, array $payment_intent ) {
|
225 |
+
// Add the Order ID as metadata to the Payment Intent.
|
226 |
+
$metadata = $payment_intent['metadata'];
|
227 |
+
$metadata['order_id'] = $order->ID;
|
228 |
+
$metadata['return_url'] = tribe( Webhook_Endpoint::class )->get_route_url();
|
229 |
+
|
230 |
+
$events_in_order = array_unique( array_filter( wp_list_pluck( $order->items, 'event_id' ) ) );
|
231 |
+
$tickets_in_order = array_unique( array_filter( wp_list_pluck( $order->items, 'ticket_id' ) ) );
|
232 |
+
$ticket_names = array_map(
|
233 |
+
static function ( $item ) {
|
234 |
+
return get_the_title( $item );
|
235 |
+
},
|
236 |
+
$tickets_in_order
|
237 |
+
);
|
238 |
+
|
239 |
+
$metadata[ 'purchaser_name' ] = $order->purchaser_name;
|
240 |
+
$metadata[ 'purchaser_email' ] = $order->purchaser_email;
|
241 |
+
$metadata[ 'event_name' ] = get_post( current( $events_in_order ) )->post_title;
|
242 |
+
$metadata[ 'event_url' ] = get_post_permalink( current( $events_in_order ) );
|
243 |
+
$metadata[ 'ticket_names' ] = implode( $ticket_names, ' ,' );
|
244 |
+
|
245 |
+
/**
|
246 |
+
* Filter the updated metadata for a completed order's payment intent.
|
247 |
+
*
|
248 |
+
* @since TBD
|
249 |
+
*
|
250 |
+
* @param \WP_Post $order The Order data.
|
251 |
+
* @param array $payment_intent The Payment intent.
|
252 |
+
*/
|
253 |
+
return apply_filters( 'tec_tickets_commerce_stripe_update_payment_intent_metadata', $metadata, $order, $payment_intent );
|
254 |
+
}
|
255 |
}
|
src/Tickets/Commerce/Order.php
CHANGED
@@ -350,6 +350,7 @@ class Order extends Abstract_Order {
|
|
350 |
|
351 |
$item['price'] = $ticket_value->get_decimal();
|
352 |
$item['sub_total'] = $ticket_value->sub_total( $item['quantity'] )->get_decimal();
|
|
|
353 |
|
354 |
return $item;
|
355 |
},
|
350 |
|
351 |
$item['price'] = $ticket_value->get_decimal();
|
352 |
$item['sub_total'] = $ticket_value->sub_total( $item['quantity'] )->get_decimal();
|
353 |
+
$item['event_id'] = tribe( Ticket::class )->get_related_event_id( $item['ticket_id'] );
|
354 |
|
355 |
return $item;
|
356 |
},
|
src/Tickets/Commerce/Repositories/Order_Repository.php
CHANGED
@@ -487,4 +487,265 @@ class Order_Repository extends Tribe__Repository {
|
|
487 |
return null;
|
488 |
}
|
489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
}
|
487 |
return null;
|
488 |
}
|
489 |
|
490 |
+
/**
|
491 |
+
* Overrides the base method to correctly handle the `order_by` clauses before.
|
492 |
+
*
|
493 |
+
* @since TBD
|
494 |
+
*
|
495 |
+
* @return \WP_Query The built query object.
|
496 |
+
*/
|
497 |
+
protected function build_query_internally() {
|
498 |
+
$order_by = Arr::get_in_any( [ $this->query_args, $this->default_args ], 'orderby', 'event_date' );
|
499 |
+
unset( $this->query_args['orderby'], $this->default_args['order_by'] );
|
500 |
+
|
501 |
+
$this->handle_order_by( $order_by );
|
502 |
+
|
503 |
+
return parent::build_query_internally();
|
504 |
+
}
|
505 |
+
|
506 |
+
/**
|
507 |
+
* Handles the `order_by` clauses for events
|
508 |
+
*
|
509 |
+
* @since TBD
|
510 |
+
*
|
511 |
+
* @param string $order_by The key used to order items.
|
512 |
+
*/
|
513 |
+
public function handle_order_by( $order_by ) {
|
514 |
+
$check_orderby = $order_by;
|
515 |
+
|
516 |
+
if ( ! is_array( $check_orderby ) ) {
|
517 |
+
$check_orderby = explode( ' ', $check_orderby );
|
518 |
+
}
|
519 |
+
|
520 |
+
$after = false;
|
521 |
+
$loop = 0;
|
522 |
+
|
523 |
+
foreach ( $check_orderby as $key => $value ) {
|
524 |
+
$order_by = is_numeric( $key ) ? $value : $key;
|
525 |
+
$default_order = Arr::get_in_any( [ $this->query_args, $this->default_args ], 'order', 'ASC' );
|
526 |
+
$order = is_numeric( $key ) ? $default_order : $value;
|
527 |
+
|
528 |
+
// Let the first applied ORDER BY clause override the existing ones, then stack the ORDER BY clauses.
|
529 |
+
$override = $loop === 0;
|
530 |
+
|
531 |
+
switch ( $order_by ) {
|
532 |
+
case 'purchaser_full_name':
|
533 |
+
$this->order_by_purchaser_full_name( $order, $after, $override );
|
534 |
+
break;
|
535 |
+
case 'purchaser_email':
|
536 |
+
$this->order_by_purchaser_email( $order, $after, $override );
|
537 |
+
break;
|
538 |
+
case 'total_value':
|
539 |
+
$this->order_by_total_value( $order, $after, $override );
|
540 |
+
break;
|
541 |
+
case 'status':
|
542 |
+
$this->order_by_status( $order, $after, $override );
|
543 |
+
break;
|
544 |
+
case 'gateway':
|
545 |
+
$this->order_by_gateway( $order, $after, $override );
|
546 |
+
break;
|
547 |
+
case 'gateway_id':
|
548 |
+
$this->order_by_gateway_id( $order, $after, $override );
|
549 |
+
break;
|
550 |
+
case '__none':
|
551 |
+
unset( $this->query_args['orderby'] );
|
552 |
+
unset( $this->query_args['order'] );
|
553 |
+
break;
|
554 |
+
default:
|
555 |
+
$after = $after || 1 === $loop;
|
556 |
+
if ( empty( $this->query_args['orderby'] ) ) {
|
557 |
+
// In some versions of WP, [ $order_by, $order ] doesn't work as expected. Using explict value setting instead.
|
558 |
+
$this->query_args['orderby'] = $order_by;
|
559 |
+
$this->query_args['order'] = $order;
|
560 |
+
} else {
|
561 |
+
$add = [ $order_by => $order ];
|
562 |
+
// Make sure all `orderby` clauses have the shape `<orderby> => <order>`.
|
563 |
+
$normalized = [];
|
564 |
+
|
565 |
+
if ( ! is_array( $this->query_args['orderby'] ) ) {
|
566 |
+
$this->query_args['orderby'] = [
|
567 |
+
$this->query_args['orderby'] => $this->query_args['order']
|
568 |
+
];
|
569 |
+
}
|
570 |
+
|
571 |
+
foreach ( $this->query_args['orderby'] as $k => $v ) {
|
572 |
+
$the_order_by = is_numeric( $k ) ? $v : $k;
|
573 |
+
$the_order = is_numeric( $k ) ? $default_order : $v;
|
574 |
+
$normalized[ $the_order_by ] = $the_order;
|
575 |
+
}
|
576 |
+
$this->query_args['orderby'] = $normalized;
|
577 |
+
$this->query_args['orderby'] = array_merge( $this->query_args['orderby'], $add );
|
578 |
+
}
|
579 |
+
}
|
580 |
+
}
|
581 |
+
}
|
582 |
+
|
583 |
+
/**
|
584 |
+
* Sets up the query filters to order items by the purchaser email.
|
585 |
+
*
|
586 |
+
* @since TBD
|
587 |
+
*
|
588 |
+
* @param string $key The meta key that is used for the sorting.
|
589 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
590 |
+
* specified in the current query or default arguments.
|
591 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
592 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
593 |
+
* clauses.
|
594 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
595 |
+
* `true` to override existing ORDER BY clauses.
|
596 |
+
*/
|
597 |
+
protected function order_by_key( $meta_key, $order = null, $after = false, $override = true ) {
|
598 |
+
global $wpdb;
|
599 |
+
|
600 |
+
$meta_alias = "sorted_by_{$meta_key}";
|
601 |
+
$filter_id = "order_by_{$meta_alias}";
|
602 |
+
$postmeta_table = "orderby_{$meta_alias}_meta";
|
603 |
+
|
604 |
+
$this->filter_query->join(
|
605 |
+
$wpdb->prepare(
|
606 |
+
"
|
607 |
+
LEFT JOIN {$wpdb->postmeta} AS {$postmeta_table}
|
608 |
+
ON (
|
609 |
+
{$postmeta_table}.post_id = {$wpdb->posts}.ID
|
610 |
+
AND {$postmeta_table}.meta_key = %s
|
611 |
+
)
|
612 |
+
",
|
613 |
+
$meta_key
|
614 |
+
),
|
615 |
+
$filter_id,
|
616 |
+
true
|
617 |
+
);
|
618 |
+
|
619 |
+
$order = $this->get_query_order_type( $order );
|
620 |
+
|
621 |
+
$this->filter_query->orderby( [ $meta_alias => $order ], $filter_id, $override, $after );
|
622 |
+
$this->filter_query->fields( "{$postmeta_table}.meta_value AS {$meta_alias}", $filter_id, $override );
|
623 |
+
}
|
624 |
+
|
625 |
+
/**
|
626 |
+
* Sets up the query filters to order items by purchaser name.
|
627 |
+
*
|
628 |
+
* @since TBD
|
629 |
+
*
|
630 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
631 |
+
* specified in the current query or default arguments.
|
632 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
633 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
634 |
+
* clauses.
|
635 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
636 |
+
* `true` to override existing ORDER BY clauses.
|
637 |
+
*/
|
638 |
+
protected function order_by_purchaser_full_name( $order = null, $after = false, $override = true ) {
|
639 |
+
$this->order_by_key( Order::$purchaser_full_name_meta_key, $order, $after, $override );
|
640 |
+
}
|
641 |
+
|
642 |
+
/**
|
643 |
+
* Sets up the query filters to order items by the purchaser email.
|
644 |
+
*
|
645 |
+
* @since TBD
|
646 |
+
*
|
647 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
648 |
+
* specified in the current query or default arguments.
|
649 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
650 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
651 |
+
* clauses.
|
652 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
653 |
+
* `true` to override existing ORDER BY clauses.
|
654 |
+
*/
|
655 |
+
protected function order_by_purchaser_email( $order = null, $after = false, $override = true ) {
|
656 |
+
$this->order_by_key( Order::$purchaser_email_meta_key, $order, $after, $override );
|
657 |
+
}
|
658 |
+
|
659 |
+
/**
|
660 |
+
* Sets up the query filters to order items by the total value.
|
661 |
+
*
|
662 |
+
* @since TBD
|
663 |
+
*
|
664 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
665 |
+
* specified in the current query or default arguments.
|
666 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
667 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
668 |
+
* clauses.
|
669 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
670 |
+
* `true` to override existing ORDER BY clauses.
|
671 |
+
*/
|
672 |
+
protected function order_by_total_value( $order = null, $after = false, $override = true ) {
|
673 |
+
$this->order_by_key( Order::$total_value_meta_key, $order, $after, $override );
|
674 |
+
}
|
675 |
+
|
676 |
+
/**
|
677 |
+
* Sets up the query filters to order items by the gateway id.
|
678 |
+
*
|
679 |
+
* @since TBD
|
680 |
+
*
|
681 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
682 |
+
* specified in the current query or default arguments.
|
683 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
684 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
685 |
+
* clauses.
|
686 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
687 |
+
* `true` to override existing ORDER BY clauses.
|
688 |
+
*/
|
689 |
+
protected function order_by_gateway_id( $order = null, $after = false, $override = true ) {
|
690 |
+
$this->order_by_key( Order::$gateway_order_id_meta_key, $order, $after, $override );
|
691 |
+
}
|
692 |
+
|
693 |
+
/**
|
694 |
+
* Sets up the query filters to order items by the gatway name.
|
695 |
+
*
|
696 |
+
* @since TBD
|
697 |
+
*
|
698 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
699 |
+
* specified in the current query or default arguments.
|
700 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
701 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
702 |
+
* clauses.
|
703 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
704 |
+
* `true` to override existing ORDER BY clauses.
|
705 |
+
*/
|
706 |
+
protected function order_by_gateway( $order = null, $after = false, $override = true ) {
|
707 |
+
$this->order_by_key( Order::$gateway_meta_key, $order, $after, $override );
|
708 |
+
}
|
709 |
+
|
710 |
+
/**
|
711 |
+
* Sets up the query filters to order items by the status.
|
712 |
+
*
|
713 |
+
* @since TBD
|
714 |
+
*
|
715 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
716 |
+
* specified in the current query or default arguments.
|
717 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
718 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
719 |
+
* clauses.
|
720 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
721 |
+
* `true` to override existing ORDER BY clauses.
|
722 |
+
*/
|
723 |
+
protected function order_by_status( $order = null, $after = false, $override = true ) {
|
724 |
+
global $wpdb;
|
725 |
+
|
726 |
+
$meta_alias = 'status';
|
727 |
+
$filter_id = "order_by_{$meta_alias}";
|
728 |
+
$prefix = 'tec-' . Commerce::ABBR . '-';
|
729 |
+
|
730 |
+
$order = $this->get_query_order_type( $order );
|
731 |
+
|
732 |
+
$this->filter_query->orderby( [ $meta_alias => $order ], $filter_id, $override, $after );
|
733 |
+
$this->filter_query->fields( "TRIM( '{$prefix}' from {$wpdb->posts}.post_status ) AS {$meta_alias}", $filter_id, $override );
|
734 |
+
}
|
735 |
+
|
736 |
+
/**
|
737 |
+
* Get the order param for the current orderby clause.
|
738 |
+
*
|
739 |
+
* @since TBD
|
740 |
+
*
|
741 |
+
* @param $order string|null order type value either 'ASC' or 'DESC'.
|
742 |
+
*
|
743 |
+
* @return string
|
744 |
+
*/
|
745 |
+
protected function get_query_order_type( $order = null ) {
|
746 |
+
return $order === null
|
747 |
+
? Arr::get_in_any( [ $this->query_args, $this->default_args ], 'order', 'ASC' )
|
748 |
+
: $order;
|
749 |
+
}
|
750 |
+
|
751 |
}
|
src/Tickets/Commerce/Ticket.php
CHANGED
@@ -900,4 +900,17 @@ class Ticket {
|
|
900 |
|
901 |
return $this->get_template()->template( 'price', [ 'price' => $value ], false );
|
902 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
903 |
}
|
900 |
|
901 |
return $this->get_template()->template( 'price', [ 'price' => $value ], false );
|
902 |
}
|
903 |
+
|
904 |
+
/**
|
905 |
+
* Get the event ID for the ticket.
|
906 |
+
*
|
907 |
+
* @since TBD
|
908 |
+
*
|
909 |
+
* @param int $ticket_id The ticket post ID.
|
910 |
+
*
|
911 |
+
* @return mixed
|
912 |
+
*/
|
913 |
+
public function get_related_event_id( $ticket_id ) {
|
914 |
+
return get_post_meta( $ticket_id, static::$event_relation_meta_key, true );
|
915 |
+
}
|
916 |
}
|
src/Tribe/Attendee_Repository.php
CHANGED
@@ -217,7 +217,7 @@ class Tribe__Tickets__Attendee_Repository extends Tribe__Repository {
|
|
217 |
return [
|
218 |
'rsvp' => '_tribe_rsvp_full_name',
|
219 |
'tribe-commerce' => '_tribe_tpp_full_name',
|
220 |
-
\TEC\Tickets\Commerce::PROVIDER => \TEC\Tickets\Commerce\Attendee::$
|
221 |
];
|
222 |
}
|
223 |
|
@@ -234,7 +234,7 @@ class Tribe__Tickets__Attendee_Repository extends Tribe__Repository {
|
|
234 |
return [
|
235 |
'rsvp' => '_tribe_rsvp_email',
|
236 |
'tribe-commerce' => '_tribe_tpp_email',
|
237 |
-
\TEC\Tickets\Commerce::PROVIDER => \TEC\Tickets\Commerce\Attendee::$
|
238 |
];
|
239 |
}
|
240 |
|
@@ -529,7 +529,7 @@ class Tribe__Tickets__Attendee_Repository extends Tribe__Repository {
|
|
529 |
public function filter_by_order_status( $order_status, $type = 'in' ) {
|
530 |
$statuses = Arr::list_to_array( $order_status );
|
531 |
|
532 |
-
$has_manage_access =
|
533 |
|
534 |
// map the `any` meta-status
|
535 |
if ( 1 === count( $statuses ) && 'any' === $statuses[0] ) {
|
@@ -1307,4 +1307,231 @@ class Tribe__Tickets__Attendee_Repository extends Tribe__Repository {
|
|
1307 |
|
1308 |
$this->attendee_provider->send_tickets_email_for_attendees( $attendee_tickets, $send_ticket_email_args );
|
1309 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1310 |
}
|
217 |
return [
|
218 |
'rsvp' => '_tribe_rsvp_full_name',
|
219 |
'tribe-commerce' => '_tribe_tpp_full_name',
|
220 |
+
\TEC\Tickets\Commerce::PROVIDER => \TEC\Tickets\Commerce\Attendee::$full_name_meta_key,
|
221 |
];
|
222 |
}
|
223 |
|
234 |
return [
|
235 |
'rsvp' => '_tribe_rsvp_email',
|
236 |
'tribe-commerce' => '_tribe_tpp_email',
|
237 |
+
\TEC\Tickets\Commerce::PROVIDER => \TEC\Tickets\Commerce\Attendee::$email_meta_key,
|
238 |
];
|
239 |
}
|
240 |
|
529 |
public function filter_by_order_status( $order_status, $type = 'in' ) {
|
530 |
$statuses = Arr::list_to_array( $order_status );
|
531 |
|
532 |
+
$has_manage_access = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
533 |
|
534 |
// map the `any` meta-status
|
535 |
if ( 1 === count( $statuses ) && 'any' === $statuses[0] ) {
|
1307 |
|
1308 |
$this->attendee_provider->send_tickets_email_for_attendees( $attendee_tickets, $send_ticket_email_args );
|
1309 |
}
|
1310 |
+
|
1311 |
+
/**
|
1312 |
+
* Overrides the base method to correctly handle the `order_by` clauses before.
|
1313 |
+
*
|
1314 |
+
* The Event repository handles ordering with some non trivial logic and some query filtering.
|
1315 |
+
* To avoid the "stacking" of `orderby` clauses and filters the query filters are added at the very last moment,
|
1316 |
+
* right before building the query.
|
1317 |
+
*
|
1318 |
+
* @since TBD
|
1319 |
+
*
|
1320 |
+
* @return WP_Query The built query object.
|
1321 |
+
*/
|
1322 |
+
protected function build_query_internally() {
|
1323 |
+
$order_by = Arr::get_in_any( [ $this->query_args, $this->default_args ], 'orderby' );
|
1324 |
+
unset( $this->query_args['orderby'], $this->default_args['order_by'] );
|
1325 |
+
|
1326 |
+
$this->handle_order_by( $order_by );
|
1327 |
+
|
1328 |
+
return parent::build_query_internally();
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
/**
|
1332 |
+
* Handles the `order_by` clauses for events
|
1333 |
+
*
|
1334 |
+
* @since TBD
|
1335 |
+
*
|
1336 |
+
* @param string $order_by The key used to order events; e.g. `event_date` to order events by start date.
|
1337 |
+
*/
|
1338 |
+
public function handle_order_by( $order_by ) {
|
1339 |
+
$check_orderby = $order_by;
|
1340 |
+
|
1341 |
+
if ( ! is_array( $check_orderby ) ) {
|
1342 |
+
$check_orderby = explode( ' ', $check_orderby );
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
$after = false;
|
1346 |
+
$loop = 0;
|
1347 |
+
|
1348 |
+
foreach ( $check_orderby as $key => $value ) {
|
1349 |
+
$order_by = is_numeric( $key ) ? $value : $key;
|
1350 |
+
$default_order = Arr::get_in_any( [ $this->query_args, $this->default_args ], 'order', 'ASC' );
|
1351 |
+
$order = is_numeric( $key ) ? $default_order : $value;
|
1352 |
+
|
1353 |
+
// Let the first applied ORDER BY clause override the existing ones, then stack the ORDER BY clauses.
|
1354 |
+
$override = $loop === 0;
|
1355 |
+
|
1356 |
+
switch ( $order_by ) {
|
1357 |
+
case 'security_code':
|
1358 |
+
$this->order_by_security_code( $order, $after, $override );
|
1359 |
+
break;
|
1360 |
+
case 'check_in':
|
1361 |
+
$this->order_by_check_in( $order, $after, $override );
|
1362 |
+
break;
|
1363 |
+
case 'rsvp_status':
|
1364 |
+
$this->order_by_rsvp_status( $order, $after, $override );
|
1365 |
+
break;
|
1366 |
+
case '__none':
|
1367 |
+
unset( $this->query_args['orderby'] );
|
1368 |
+
unset( $this->query_args['order'] );
|
1369 |
+
break;
|
1370 |
+
default:
|
1371 |
+
$after = $after || 1 === $loop;
|
1372 |
+
if ( empty( $this->query_args['orderby'] ) ) {
|
1373 |
+
// In some versions of WP, [ $order_by, $order ] doesn't work as expected. Using explict value setting instead.
|
1374 |
+
$this->query_args['orderby'] = $order_by;
|
1375 |
+
$this->query_args['order'] = $order;
|
1376 |
+
} else {
|
1377 |
+
$add = [ $order_by => $order ];
|
1378 |
+
// Make sure all `orderby` clauses have the shape `<orderby> => <order>`.
|
1379 |
+
$normalized = [];
|
1380 |
+
|
1381 |
+
if ( ! is_array( $this->query_args['orderby'] ) ) {
|
1382 |
+
$this->query_args['orderby'] = [
|
1383 |
+
$this->query_args['orderby'] => $this->query_args['order']
|
1384 |
+
];
|
1385 |
+
}
|
1386 |
+
|
1387 |
+
foreach ( $this->query_args['orderby'] as $k => $v ) {
|
1388 |
+
$the_order_by = is_numeric( $k ) ? $v : $k;
|
1389 |
+
$the_order = is_numeric( $k ) ? $default_order : $v;
|
1390 |
+
$normalized[ $the_order_by ] = $the_order;
|
1391 |
+
}
|
1392 |
+
$this->query_args['orderby'] = $normalized;
|
1393 |
+
$this->query_args['orderby'] = array_merge( $this->query_args['orderby'], $add );
|
1394 |
+
}
|
1395 |
+
}
|
1396 |
+
}
|
1397 |
+
}
|
1398 |
+
|
1399 |
+
/**
|
1400 |
+
* Sets up the query filters to order attendees by the security code meta.
|
1401 |
+
*
|
1402 |
+
* @since TBD
|
1403 |
+
*
|
1404 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
1405 |
+
* specified in the current query or default arguments.
|
1406 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
1407 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
1408 |
+
* clauses.
|
1409 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
1410 |
+
* `true` to override existing ORDER BY clauses.
|
1411 |
+
*/
|
1412 |
+
protected function order_by_security_code( $order = null, $after = false, $override = true ) {
|
1413 |
+
global $wpdb;
|
1414 |
+
|
1415 |
+
$meta_alias = 'security_code';
|
1416 |
+
$meta_keys_in = $this->prepare_interval( $this->security_code_keys() );
|
1417 |
+
$postmeta_table = "orderby_{$meta_alias}_meta";
|
1418 |
+
$filter_id = 'order_by_security_code';
|
1419 |
+
|
1420 |
+
$this->filter_query->join(
|
1421 |
+
"
|
1422 |
+
LEFT JOIN {$wpdb->postmeta} AS {$postmeta_table}
|
1423 |
+
ON (
|
1424 |
+
{$postmeta_table}.post_id = {$wpdb->posts}.ID
|
1425 |
+
AND {$postmeta_table}.meta_key IN {$meta_keys_in}
|
1426 |
+
)
|
1427 |
+
"
|
1428 |
+
,
|
1429 |
+
$filter_id,
|
1430 |
+
true
|
1431 |
+
);
|
1432 |
+
|
1433 |
+
$order = $this->get_query_order_type( $order );
|
1434 |
+
|
1435 |
+
$this->filter_query->orderby( [ $meta_alias => $order ], $filter_id, true, $after );
|
1436 |
+
$this->filter_query->fields( "{$postmeta_table}.meta_value AS {$meta_alias}", $filter_id, $override );
|
1437 |
+
}
|
1438 |
+
|
1439 |
+
/**
|
1440 |
+
* Sets up the query filters to order attendees by the check-in status.
|
1441 |
+
*
|
1442 |
+
* @since TBD
|
1443 |
+
*
|
1444 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
1445 |
+
* specified in the current query or default arguments.
|
1446 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
1447 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
1448 |
+
* clauses.
|
1449 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
1450 |
+
* `true` to override existing ORDER BY clauses.
|
1451 |
+
*/
|
1452 |
+
protected function order_by_check_in( $order = null, $after = false, $override = true ) {
|
1453 |
+
global $wpdb;
|
1454 |
+
|
1455 |
+
$meta_alias = 'check_in';
|
1456 |
+
$meta_keys_in = $this->prepare_interval( $this->checked_in_keys() );
|
1457 |
+
|
1458 |
+
$postmeta_table = "orderby_{$meta_alias}_meta";
|
1459 |
+
$filter_id = "order_by_{$meta_alias}";
|
1460 |
+
|
1461 |
+
$this->filter_query->join(
|
1462 |
+
"
|
1463 |
+
LEFT JOIN {$wpdb->postmeta} AS {$postmeta_table}
|
1464 |
+
ON (
|
1465 |
+
{$postmeta_table}.post_id = {$wpdb->posts}.ID
|
1466 |
+
AND {$postmeta_table}.meta_key IN {$meta_keys_in}
|
1467 |
+
)
|
1468 |
+
"
|
1469 |
+
,
|
1470 |
+
$filter_id,
|
1471 |
+
true
|
1472 |
+
);
|
1473 |
+
|
1474 |
+
$order = $this->get_query_order_type( $order );
|
1475 |
+
|
1476 |
+
$this->filter_query->orderby( [ $meta_alias => $order ], $filter_id, true, $after );
|
1477 |
+
$this->filter_query->fields( "{$postmeta_table}.meta_value AS {$meta_alias}", $filter_id, $override );
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
/**
|
1481 |
+
* Sets up the query filters to order attendees by the order status.
|
1482 |
+
*
|
1483 |
+
* @since TBD
|
1484 |
+
*
|
1485 |
+
* @param string $order The order direction, either `ASC` or `DESC`; defaults to `null` to use the order
|
1486 |
+
* specified in the current query or default arguments.
|
1487 |
+
* @param bool $after Whether to append the duration ORDER BY clause to the existing clauses or not;
|
1488 |
+
* defaults to `false` to prepend the duration clause to the existing ORDER BY
|
1489 |
+
* clauses.
|
1490 |
+
* @param bool $override Whether to override existing ORDER BY clauses with this one or not; default to
|
1491 |
+
* `true` to override existing ORDER BY clauses.
|
1492 |
+
*/
|
1493 |
+
protected function order_by_rsvp_status( $order = null, $after = false, $override = true ) {
|
1494 |
+
global $wpdb;
|
1495 |
+
|
1496 |
+
$meta_alias = 'rsvp_status';
|
1497 |
+
$meta_key = Tribe__Tickets__RSVP::ATTENDEE_RSVP_KEY;
|
1498 |
+
|
1499 |
+
$postmeta_table = "orderby_{$meta_alias}";
|
1500 |
+
$filter_id = "order_by_{$meta_alias}";
|
1501 |
+
|
1502 |
+
$this->filter_query->join(
|
1503 |
+
$wpdb->prepare(
|
1504 |
+
"
|
1505 |
+
LEFT JOIN {$wpdb->postmeta} AS {$postmeta_table}
|
1506 |
+
ON (
|
1507 |
+
{$postmeta_table}.post_id = {$wpdb->posts}.ID
|
1508 |
+
AND {$postmeta_table}.meta_key = %s
|
1509 |
+
)
|
1510 |
+
",
|
1511 |
+
$meta_key
|
1512 |
+
),
|
1513 |
+
$filter_id,
|
1514 |
+
true
|
1515 |
+
);
|
1516 |
+
|
1517 |
+
$order = $this->get_query_order_type( $order );
|
1518 |
+
|
1519 |
+
$this->filter_query->orderby( [ $meta_alias => $order ], $filter_id, $override, $after );
|
1520 |
+
$this->filter_query->fields( "{$postmeta_table}.meta_value AS {$meta_alias}", $filter_id, $override );
|
1521 |
+
}
|
1522 |
+
|
1523 |
+
/**
|
1524 |
+
* Get the order param for the current orderby clause.
|
1525 |
+
*
|
1526 |
+
* @since TBD
|
1527 |
+
*
|
1528 |
+
* @param $order string|null order type value either 'ASC' or 'DESC'.
|
1529 |
+
*
|
1530 |
+
* @return string
|
1531 |
+
*/
|
1532 |
+
protected function get_query_order_type( $order = null ) {
|
1533 |
+
return $order === null
|
1534 |
+
? Arr::get_in_any( [ $this->query_args, $this->default_args ], 'order', 'ASC' )
|
1535 |
+
: $order;
|
1536 |
+
}
|
1537 |
}
|
src/Tribe/Attendees_Table.php
CHANGED
@@ -956,6 +956,15 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
956 |
];
|
957 |
}
|
958 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
959 |
$item_data = Tribe__Tickets__Tickets::get_event_attendees_by_args( $event_id, $args );
|
960 |
|
961 |
$items = [];
|
@@ -1066,4 +1075,47 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
1066 |
|
1067 |
echo $search_box;
|
1068 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1069 |
}
|
956 |
];
|
957 |
}
|
958 |
|
959 |
+
// Setup sorting args.
|
960 |
+
if ( tribe_get_request_var( 'orderby' ) ) {
|
961 |
+
$args['orderby'] = tribe_get_request_var( 'orderby' );
|
962 |
+
}
|
963 |
+
|
964 |
+
if ( tribe_get_request_var( 'order' ) ) {
|
965 |
+
$args['order'] = tribe_get_request_var( 'order' );
|
966 |
+
}
|
967 |
+
|
968 |
$item_data = Tribe__Tickets__Tickets::get_event_attendees_by_args( $event_id, $args );
|
969 |
|
970 |
$items = [];
|
1075 |
|
1076 |
echo $search_box;
|
1077 |
}
|
1078 |
+
|
1079 |
+
/**
|
1080 |
+
* Return list of sortable columns.
|
1081 |
+
*
|
1082 |
+
* @since TBD
|
1083 |
+
*
|
1084 |
+
* @return array
|
1085 |
+
*/
|
1086 |
+
public function get_sortable_columns() {
|
1087 |
+
return [
|
1088 |
+
'ticket' => 'id',
|
1089 |
+
'security' => 'security_code',
|
1090 |
+
'check_in' => 'check_in',
|
1091 |
+
'status' => $this->is_status_sortable()
|
1092 |
+
];
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
/**
|
1096 |
+
* Check if `Status` column is sortable or not.
|
1097 |
+
*
|
1098 |
+
* @since TBD
|
1099 |
+
*
|
1100 |
+
* @return false|string
|
1101 |
+
*/
|
1102 |
+
protected function is_status_sortable() {
|
1103 |
+
$event_id = tribe_get_request_var( 'event_id' );
|
1104 |
+
$providers = Tribe__Tickets__Tickets::get_active_providers_for_post( $event_id );
|
1105 |
+
|
1106 |
+
if ( count( $providers ) > 1 ) {
|
1107 |
+
return false;
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
/** @var \Tribe__Tickets__Status__Manager $status */
|
1111 |
+
$status = tribe( 'tickets.status' );
|
1112 |
+
$provider = $status->get_provider_slug( current( $providers ) );
|
1113 |
+
|
1114 |
+
// For now, disabled for all providers but RSVP, we may remove this logic once we implement sorting for other providers.
|
1115 |
+
if ( 'rsvp' !== $provider ) {
|
1116 |
+
return false;
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
return $provider . '_status';
|
1120 |
+
}
|
1121 |
}
|
src/Tribe/Editor/Blocks/Rsvp.php
CHANGED
@@ -415,7 +415,7 @@ class Tribe__Tickets__Editor__Blocks__Rsvp extends Tribe__Editor__Blocks__Abstra
|
|
415 |
continue;
|
416 |
}
|
417 |
|
418 |
-
$has_tickets
|
419 |
}
|
420 |
|
421 |
$order_id = $attendee_details['order_id'];
|
415 |
continue;
|
416 |
}
|
417 |
|
418 |
+
$has_tickets = ! is_wp_error( $rsvp->generate_tickets_for( $product_id, $ticket_qty, $attendee_details ) );
|
419 |
}
|
420 |
|
421 |
$order_id = $attendee_details['order_id'];
|
src/Tribe/Editor/Compatibility/Tickets.php
CHANGED
@@ -36,6 +36,7 @@ class Tribe__Tickets__Editor__Compatibility__Tickets {
|
|
36 |
$post = get_post();
|
37 |
if ( $post instanceof WP_Post
|
38 |
&& class_exists( '\Elementor\Plugin' )
|
|
|
39 |
&& \Elementor\Plugin::$instance->documents->get( $post->ID )->is_built_with_elementor()
|
40 |
) {
|
41 |
return $content;
|
36 |
$post = get_post();
|
37 |
if ( $post instanceof WP_Post
|
38 |
&& class_exists( '\Elementor\Plugin' )
|
39 |
+
&& \Elementor\Plugin::$instance->documents->get( $post->ID )
|
40 |
&& \Elementor\Plugin::$instance->documents->get( $post->ID )->is_built_with_elementor()
|
41 |
) {
|
42 |
return $content;
|
src/Tribe/Editor/Template/Overwrite.php
CHANGED
@@ -94,6 +94,11 @@ class Tribe__Tickets__Editor__Template__Overwrite {
|
|
94 |
public function has_classic_editor( $post_id ) {
|
95 |
$is_event = function_exists( 'tribe_is_event' ) && tribe_is_event( $post_id );
|
96 |
|
|
|
|
|
|
|
|
|
|
|
97 |
if ( $is_event && $this->has_early_access_to_blocks() ) {
|
98 |
return false;
|
99 |
}
|
94 |
public function has_classic_editor( $post_id ) {
|
95 |
$is_event = function_exists( 'tribe_is_event' ) && tribe_is_event( $post_id );
|
96 |
|
97 |
+
// If not an event, just check if it has blocks or not.
|
98 |
+
if ( ! $is_event ) {
|
99 |
+
return ! has_blocks( $post_id );
|
100 |
+
}
|
101 |
+
|
102 |
if ( $is_event && $this->has_early_access_to_blocks() ) {
|
103 |
return false;
|
104 |
}
|
src/Tribe/Main.php
CHANGED
@@ -8,7 +8,7 @@ class Tribe__Tickets__Main {
|
|
8 |
/**
|
9 |
* Current version of this plugin
|
10 |
*/
|
11 |
-
const VERSION = '5.4.
|
12 |
|
13 |
/**
|
14 |
* Used to store the version history.
|
8 |
/**
|
9 |
* Current version of this plugin
|
10 |
*/
|
11 |
+
const VERSION = '5.4.4';
|
12 |
|
13 |
/**
|
14 |
* Used to store the version history.
|
src/Tribe/REST/V1/Attendee_Repository.php
CHANGED
@@ -23,7 +23,7 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
23 |
public function __construct() {
|
24 |
$this->decorated = tribe( 'tickets.attendee-repository' );
|
25 |
$this->decorated->set_formatter( $this );
|
26 |
-
$this->decorated->set_query_builder($this);
|
27 |
$this->decorated->set_default_args( array_merge(
|
28 |
$this->decorated->get_default_args(),
|
29 |
array( 'order' => 'ASC', 'orderby' => array( 'id', 'title' ) )
|
@@ -39,11 +39,7 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
39 |
* @return WP_Query
|
40 |
*/
|
41 |
public function build_query( $use_query_builder = true ) {
|
42 |
-
$can_view_hidden_attendees =
|
43 |
-
|
44 |
-
if ( current_user_can( 'edit_users' ) || current_user_can( 'tribe_manage_attendees' ) ) {
|
45 |
-
$can_view_hidden_attendees = true;
|
46 |
-
}
|
47 |
|
48 |
/**
|
49 |
* Whether the current user can view hidden attendees,
|
@@ -115,7 +111,7 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
115 |
*
|
116 |
* @since 4.8
|
117 |
*
|
118 |
-
* @param mixed $primary_key
|
119 |
*
|
120 |
* @return array|WP_Error The Attendee data on success, or a WP_Error
|
121 |
* detailing why the read failed.
|
@@ -131,10 +127,10 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
131 |
$messages = tribe( 'tickets.rest-v1.messages' );
|
132 |
|
133 |
if ( empty( $found ) ) {
|
134 |
-
return new WP_Error( 'attendee-not-found', $messages->get_message( 'attendee-not-found' ),
|
135 |
}
|
136 |
|
137 |
-
if (
|
138 |
return $this->format_item( $found[0] );
|
139 |
}
|
140 |
|
@@ -148,7 +144,7 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
148 |
$found_w_cap = $cap_query->get_posts();
|
149 |
|
150 |
if ( empty( $found_w_cap ) ) {
|
151 |
-
return new WP_Error( 'attendee-not-accessible', $messages->get_message( 'attendee-not-accessible' ),
|
152 |
}
|
153 |
|
154 |
$this->decorated->set_query_builder( $this );
|
@@ -161,7 +157,7 @@ class Tribe__Tickets__REST__V1__Attendee_Repository
|
|
161 |
*
|
162 |
* @since 4.8
|
163 |
*
|
164 |
-
* @param int|WP_Post $id
|
165 |
*
|
166 |
* @return array|null The attendee information in the REST API format or
|
167 |
* `null` if the attendee is invalid.
|
23 |
public function __construct() {
|
24 |
$this->decorated = tribe( 'tickets.attendee-repository' );
|
25 |
$this->decorated->set_formatter( $this );
|
26 |
+
$this->decorated->set_query_builder( $this );
|
27 |
$this->decorated->set_default_args( array_merge(
|
28 |
$this->decorated->get_default_args(),
|
29 |
array( 'order' => 'ASC', 'orderby' => array( 'id', 'title' ) )
|
39 |
* @return WP_Query
|
40 |
*/
|
41 |
public function build_query( $use_query_builder = true ) {
|
42 |
+
$can_view_hidden_attendees = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
|
|
|
|
|
|
|
|
43 |
|
44 |
/**
|
45 |
* Whether the current user can view hidden attendees,
|
111 |
*
|
112 |
* @since 4.8
|
113 |
*
|
114 |
+
* @param mixed $primary_key The attendee ID.
|
115 |
*
|
116 |
* @return array|WP_Error The Attendee data on success, or a WP_Error
|
117 |
* detailing why the read failed.
|
127 |
$messages = tribe( 'tickets.rest-v1.messages' );
|
128 |
|
129 |
if ( empty( $found ) ) {
|
130 |
+
return new WP_Error( 'attendee-not-found', $messages->get_message( 'attendee-not-found' ), [ 'status' => 404 ] );
|
131 |
}
|
132 |
|
133 |
+
if ( tribe( 'tickets.rest-v1.main' )->request_has_manage_access() ) {
|
134 |
return $this->format_item( $found[0] );
|
135 |
}
|
136 |
|
144 |
$found_w_cap = $cap_query->get_posts();
|
145 |
|
146 |
if ( empty( $found_w_cap ) ) {
|
147 |
+
return new WP_Error( 'attendee-not-accessible', $messages->get_message( 'attendee-not-accessible' ), [ 'status' => 401 ] );
|
148 |
}
|
149 |
|
150 |
$this->decorated->set_query_builder( $this );
|
157 |
*
|
158 |
* @since 4.8
|
159 |
*
|
160 |
+
* @param int|WP_Post $id The attendee ID.
|
161 |
*
|
162 |
* @return array|null The attendee information in the REST API format or
|
163 |
* `null` if the attendee is invalid.
|
src/Tribe/REST/V1/Endpoints/Attendee_Archive.php
CHANGED
@@ -10,7 +10,7 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
10 |
*
|
11 |
* While the structure must conform to that used by v2.0 of Swagger the structure can be that of a full document
|
12 |
* or that of a document part.
|
13 |
-
* The intelligence lies in the "gatherer" of
|
14 |
* interface.
|
15 |
*
|
16 |
* @link http://swagger.io/
|
@@ -86,18 +86,13 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
86 |
* @return WP_Error|WP_REST_Response An array containing the data on success or a WP_Error instance on failure.
|
87 |
*/
|
88 |
public function get( WP_REST_Request $request ) {
|
89 |
-
// Early bail: ET Plus must be active to use this endpoint.
|
90 |
-
if ( ! class_exists( 'Tribe__Tickets_Plus__Main' ) ) {
|
91 |
-
return new WP_REST_Response( __( 'Sorry, Event Tickets Plus must be active to use this endpoint.', 'event-tickets' ), 401 );
|
92 |
-
}
|
93 |
-
|
94 |
$query_args = $request->get_query_params();
|
95 |
-
$page
|
96 |
-
$per_page
|
97 |
|
98 |
-
$fetch_args =
|
99 |
|
100 |
-
$supported_args =
|
101 |
'provider' => 'provider',
|
102 |
'search' => 's',
|
103 |
'post_id' => 'event',
|
@@ -119,7 +114,7 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
119 |
'price_min' => 'price_min',
|
120 |
'price_max' => 'price_max',
|
121 |
'attendee_information_available' => 'has_attendee_meta',
|
122 |
-
|
123 |
|
124 |
foreach ( $supported_args as $request_arg => $query_arg ) {
|
125 |
if ( isset( $request[ $request_arg ] ) ) {
|
@@ -127,7 +122,7 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
127 |
}
|
128 |
}
|
129 |
|
130 |
-
if (
|
131 |
$permission = Tribe__Tickets__REST__V1__Attendee_Repository::PERMISSION_EDITABLE;
|
132 |
$fetch_args['post_status'] = Tribe__Utils__Array::get( $fetch_args, 'post_status', 'any' );
|
133 |
$fetch_args['event_status'] = Tribe__Utils__Array::get( $fetch_args, 'event_status', 'any' );
|
@@ -156,13 +151,12 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
156 |
}
|
157 |
|
158 |
$query_args = array_intersect_key( $query_args, $this->READ_args() );
|
159 |
-
|
160 |
-
$found = $query->found();
|
161 |
|
162 |
if ( 0 === $found && 1 === $page ) {
|
163 |
-
$attendees =
|
164 |
} elseif ( 1 !== $page && $page * $per_page > $found ) {
|
165 |
-
return new WP_Error( 'invalid-page-number', $this->messages->get_message( 'invalid-page-number' ),
|
166 |
} else {
|
167 |
$attendees = $query
|
168 |
->per_page( $per_page )
|
@@ -173,7 +167,7 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
173 |
/** @var Tribe__Tickets__REST__V1__Main $main */
|
174 |
$main = tribe( 'tickets.rest-v1.main' );
|
175 |
|
176 |
-
//
|
177 |
foreach ( $query_args as $key => &$value ) {
|
178 |
if ( is_array( $value ) ) {
|
179 |
$value = Tribe__Utils__Array::to_list( $value );
|
@@ -185,10 +179,10 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
185 |
$data['total_pages'] = (int) ceil( $found / $per_page );
|
186 |
$data['attendees'] = $attendees;
|
187 |
|
188 |
-
$headers =
|
189 |
'X-ET-TOTAL' => $data['total'],
|
190 |
'X-ET-TOTAL-PAGES' => $data['total_pages'],
|
191 |
-
|
192 |
|
193 |
return new WP_REST_Response( $data, 200, $headers );
|
194 |
}
|
@@ -426,9 +420,9 @@ class Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive
|
|
426 |
),
|
427 |
),
|
428 |
'attendee_information_available' => array(
|
429 |
-
'description'
|
430 |
-
'required'
|
431 |
-
'type'
|
432 |
),
|
433 |
);
|
434 |
}
|
10 |
*
|
11 |
* While the structure must conform to that used by v2.0 of Swagger the structure can be that of a full document
|
12 |
* or that of a document part.
|
13 |
+
* The intelligence lies in the "gatherer" of information rather than in the single "providers" implementing this
|
14 |
* interface.
|
15 |
*
|
16 |
* @link http://swagger.io/
|
86 |
* @return WP_Error|WP_REST_Response An array containing the data on success or a WP_Error instance on failure.
|
87 |
*/
|
88 |
public function get( WP_REST_Request $request ) {
|
|
|
|
|
|
|
|
|
|
|
89 |
$query_args = $request->get_query_params();
|
90 |
+
$page = $request['page'];
|
91 |
+
$per_page = $request['per_page'];
|
92 |
|
93 |
+
$fetch_args = [];
|
94 |
|
95 |
+
$supported_args = [
|
96 |
'provider' => 'provider',
|
97 |
'search' => 's',
|
98 |
'post_id' => 'event',
|
114 |
'price_min' => 'price_min',
|
115 |
'price_max' => 'price_max',
|
116 |
'attendee_information_available' => 'has_attendee_meta',
|
117 |
+
];
|
118 |
|
119 |
foreach ( $supported_args as $request_arg => $query_arg ) {
|
120 |
if ( isset( $request[ $request_arg ] ) ) {
|
122 |
}
|
123 |
}
|
124 |
|
125 |
+
if ( tribe( 'tickets.rest-v1.main' )->request_has_manage_access() ) {
|
126 |
$permission = Tribe__Tickets__REST__V1__Attendee_Repository::PERMISSION_EDITABLE;
|
127 |
$fetch_args['post_status'] = Tribe__Utils__Array::get( $fetch_args, 'post_status', 'any' );
|
128 |
$fetch_args['event_status'] = Tribe__Utils__Array::get( $fetch_args, 'event_status', 'any' );
|
151 |
}
|
152 |
|
153 |
$query_args = array_intersect_key( $query_args, $this->READ_args() );
|
154 |
+
$found = $query->found();
|
|
|
155 |
|
156 |
if ( 0 === $found && 1 === $page ) {
|
157 |
+
$attendees = [];
|
158 |
} elseif ( 1 !== $page && $page * $per_page > $found ) {
|
159 |
+
return new WP_Error( 'invalid-page-number', $this->messages->get_message( 'invalid-page-number' ), [ 'status' => 400 ] );
|
160 |
} else {
|
161 |
$attendees = $query
|
162 |
->per_page( $per_page )
|
167 |
/** @var Tribe__Tickets__REST__V1__Main $main */
|
168 |
$main = tribe( 'tickets.rest-v1.main' );
|
169 |
|
170 |
+
// Make sure all arrays are formatted to by CSV lists.
|
171 |
foreach ( $query_args as $key => &$value ) {
|
172 |
if ( is_array( $value ) ) {
|
173 |
$value = Tribe__Utils__Array::to_list( $value );
|
179 |
$data['total_pages'] = (int) ceil( $found / $per_page );
|
180 |
$data['attendees'] = $attendees;
|
181 |
|
182 |
+
$headers = [
|
183 |
'X-ET-TOTAL' => $data['total'],
|
184 |
'X-ET-TOTAL-PAGES' => $data['total_pages'],
|
185 |
+
];
|
186 |
|
187 |
return new WP_REST_Response( $data, 200, $headers );
|
188 |
}
|
420 |
),
|
421 |
),
|
422 |
'attendee_information_available' => array(
|
423 |
+
'description' => __( 'Limit results to attendees for tickets that provide attendees the possibility to fill in additional information or not; requires ET+.', 'event-tickets' ),
|
424 |
+
'required' => false,
|
425 |
+
'type' => 'boolean',
|
426 |
),
|
427 |
);
|
428 |
}
|
src/Tribe/REST/V1/Endpoints/Single_Attendee.php
CHANGED
@@ -9,7 +9,11 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
|
|
9 |
* {@inheritdoc}
|
10 |
*/
|
11 |
public function get_documentation() {
|
12 |
-
$GET_defaults =
|
|
|
|
|
|
|
|
|
13 |
|
14 |
return array(
|
15 |
'get' => array(
|
@@ -64,8 +68,8 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
|
|
64 |
* {@inheritdoc}
|
65 |
*/
|
66 |
public function READ_args() {
|
67 |
-
return
|
68 |
-
'id' =>
|
69 |
'type' => 'integer',
|
70 |
'in' => 'path',
|
71 |
'description' => __( 'The attendee post ID', 'event-tickets' ),
|
@@ -74,9 +78,9 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
|
|
74 |
* Here we check for a positive int, not an attendee ID to properly
|
75 |
* return 404 for missing post in place of 400.
|
76 |
*/
|
77 |
-
'validate_callback' =>
|
78 |
-
|
79 |
-
|
80 |
}
|
81 |
|
82 |
/**
|
@@ -85,11 +89,6 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
|
|
85 |
* @since 4.12.0 Returns 401 Unauthorized if Event Tickets Plus is not loaded.
|
86 |
*/
|
87 |
public function get( WP_REST_Request $request ) {
|
88 |
-
// Early bail: ET Plus must be active to use this endpoint.
|
89 |
-
if ( ! class_exists( 'Tribe__Tickets_Plus__Main' ) ) {
|
90 |
-
return new WP_REST_Response( __( 'Sorry, Event Tickets Plus must be active to use this endpoint.', 'event-tickets' ), 401 );
|
91 |
-
}
|
92 |
-
|
93 |
return tribe_attendees( 'restv1' )->by_primary_key( $request['id'] );
|
94 |
}
|
95 |
|
@@ -356,10 +355,11 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
|
|
356 |
* Validates the user permission.
|
357 |
*
|
358 |
* @since 5.3.2
|
|
|
359 |
*
|
360 |
* @return bool
|
361 |
*/
|
362 |
public function validate_user_permission() {
|
363 |
-
return
|
364 |
}
|
365 |
}
|
9 |
* {@inheritdoc}
|
10 |
*/
|
11 |
public function get_documentation() {
|
12 |
+
$GET_defaults = [
|
13 |
+
'in' => 'query',
|
14 |
+
'default' => '',
|
15 |
+
'type' => 'string',
|
16 |
+
];
|
17 |
|
18 |
return array(
|
19 |
'get' => array(
|
68 |
* {@inheritdoc}
|
69 |
*/
|
70 |
public function READ_args() {
|
71 |
+
return [
|
72 |
+
'id' => [
|
73 |
'type' => 'integer',
|
74 |
'in' => 'path',
|
75 |
'description' => __( 'The attendee post ID', 'event-tickets' ),
|
78 |
* Here we check for a positive int, not an attendee ID to properly
|
79 |
* return 404 for missing post in place of 400.
|
80 |
*/
|
81 |
+
'validate_callback' => [ $this->validator, 'is_positive_int' ],
|
82 |
+
],
|
83 |
+
];
|
84 |
}
|
85 |
|
86 |
/**
|
89 |
* @since 4.12.0 Returns 401 Unauthorized if Event Tickets Plus is not loaded.
|
90 |
*/
|
91 |
public function get( WP_REST_Request $request ) {
|
|
|
|
|
|
|
|
|
|
|
92 |
return tribe_attendees( 'restv1' )->by_primary_key( $request['id'] );
|
93 |
}
|
94 |
|
355 |
* Validates the user permission.
|
356 |
*
|
357 |
* @since 5.3.2
|
358 |
+
* @since TBD check the REST API permission via centralized method.
|
359 |
*
|
360 |
* @return bool
|
361 |
*/
|
362 |
public function validate_user_permission() {
|
363 |
+
return tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
364 |
}
|
365 |
}
|
src/Tribe/REST/V1/Endpoints/Ticket_Archive.php
CHANGED
@@ -113,8 +113,8 @@ class Tribe__Tickets__REST__V1__Endpoints__Ticket_Archive
|
|
113 |
'attendees_max' => 'attendees_max',
|
114 |
'checkedin_min' => 'checkedin_min',
|
115 |
'checkedin_max' => 'checkedin_max',
|
116 |
-
'capacity_min'
|
117 |
-
'capacity_max'
|
118 |
);
|
119 |
|
120 |
foreach ( $supported_args as $request_arg => $query_arg ) {
|
@@ -123,7 +123,7 @@ class Tribe__Tickets__REST__V1__Endpoints__Ticket_Archive
|
|
123 |
}
|
124 |
}
|
125 |
|
126 |
-
$has_manage_access =
|
127 |
|
128 |
$attendess_btwn = $checkedin_btwn = $capacity_btwn = null;
|
129 |
|
113 |
'attendees_max' => 'attendees_max',
|
114 |
'checkedin_min' => 'checkedin_min',
|
115 |
'checkedin_max' => 'checkedin_max',
|
116 |
+
'capacity_min' => 'capacity_min',
|
117 |
+
'capacity_max' => 'capacity_max',
|
118 |
);
|
119 |
|
120 |
foreach ( $supported_args as $request_arg => $query_arg ) {
|
123 |
}
|
124 |
}
|
125 |
|
126 |
+
$has_manage_access = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
127 |
|
128 |
$attendess_btwn = $checkedin_btwn = $capacity_btwn = null;
|
129 |
|
src/Tribe/REST/V1/Main.php
CHANGED
@@ -22,13 +22,12 @@ class Tribe__Tickets__REST__V1__Main extends Tribe__REST__Main {
|
|
22 |
/**
|
23 |
* @var array
|
24 |
*/
|
25 |
-
protected $registered_endpoints =
|
26 |
|
27 |
/**
|
28 |
* Hooks the filters and actions required for the REST API support to kick in.
|
29 |
*
|
30 |
* @since 4.7.5
|
31 |
-
*
|
32 |
*/
|
33 |
public function hook() {
|
34 |
$this->hook_headers();
|
@@ -41,6 +40,27 @@ class Tribe__Tickets__REST__V1__Main extends Tribe__REST__Main {
|
|
41 |
return;
|
42 |
}
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -123,7 +143,6 @@ class Tribe__Tickets__REST__V1__Main extends Tribe__REST__Main {
|
|
123 |
return 'v1';
|
124 |
}
|
125 |
|
126 |
-
|
127 |
/**
|
128 |
* Returns the REST API URL prefix that will be appended to the namespace.
|
129 |
*
|
@@ -137,4 +156,60 @@ class Tribe__Tickets__REST__V1__Main extends Tribe__REST__Main {
|
|
137 |
return $this->url_prefix;
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
}
|
22 |
/**
|
23 |
* @var array
|
24 |
*/
|
25 |
+
protected $registered_endpoints = [];
|
26 |
|
27 |
/**
|
28 |
* Hooks the filters and actions required for the REST API support to kick in.
|
29 |
*
|
30 |
* @since 4.7.5
|
|
|
31 |
*/
|
32 |
public function hook() {
|
33 |
$this->hook_headers();
|
40 |
return;
|
41 |
}
|
42 |
|
43 |
+
// Add support for `ticketed` param on tribe_events filter on REST API.
|
44 |
+
add_filter( 'tribe_events_archive_get_args', [ $this , 'parse_events_rest_args' ], 10, 3 );
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Filter the args for Event Query over REST API.
|
49 |
+
*
|
50 |
+
* @since TBD
|
51 |
+
*
|
52 |
+
* @param array $args Arguments used to get the events from the archive page.
|
53 |
+
* @param array $data Array with the data to be returned to the REST response.
|
54 |
+
* @param WP_REST_Request $request The request object.
|
55 |
+
*
|
56 |
+
* @return mixed
|
57 |
+
*/
|
58 |
+
public function parse_events_rest_args( $args, $data, $request ) {
|
59 |
+
if ( isset( $request['ticketed'] ) ) {
|
60 |
+
$args['has_rsvp_or_tickets'] = tribe_is_truthy( $request['ticketed'] );
|
61 |
+
}
|
62 |
+
|
63 |
+
return $args;
|
64 |
}
|
65 |
|
66 |
/**
|
143 |
return 'v1';
|
144 |
}
|
145 |
|
|
|
146 |
/**
|
147 |
* Returns the REST API URL prefix that will be appended to the namespace.
|
148 |
*
|
156 |
return $this->url_prefix;
|
157 |
}
|
158 |
|
159 |
+
/**
|
160 |
+
* Return if the request has access to private information.
|
161 |
+
*
|
162 |
+
* @since TBD
|
163 |
+
*
|
164 |
+
* @return bool True if the request has access to private information, false otherwise.
|
165 |
+
*/
|
166 |
+
public function request_has_manage_access() : bool {
|
167 |
+
return $this->user_has_manage_access() || $this->request_has_valid_api_key();
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Return if the user has manage access.
|
172 |
+
*
|
173 |
+
* @since TBD
|
174 |
+
*
|
175 |
+
* @return bool True if the user has manage access, false otherwise.
|
176 |
+
*/
|
177 |
+
public function user_has_manage_access() : bool {
|
178 |
+
return current_user_can( 'edit_users' ) || current_user_can( 'tribe_manage_attendees' );
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Return if user can read private information.
|
183 |
+
*
|
184 |
+
* @since TBD
|
185 |
+
*
|
186 |
+
* @return bool True if user can read private information, false otherwise.
|
187 |
+
*/
|
188 |
+
public function user_has_read_private_posts_access() : bool {
|
189 |
+
return current_user_can( 'read_private_posts' );
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Return if the request has a valid api key.
|
194 |
+
*
|
195 |
+
* @since TBD
|
196 |
+
*
|
197 |
+
* @return bool True if the request has a valid api key, false otherwise.
|
198 |
+
*/
|
199 |
+
public function request_has_valid_api_key() : bool {
|
200 |
+
$option = tribe_get_option( 'tickets-plus-qr-options-api-key', '' );
|
201 |
+
|
202 |
+
if ( empty( $option ) ) {
|
203 |
+
return false;
|
204 |
+
}
|
205 |
+
|
206 |
+
$request_var = tribe_get_request_var( 'api_key' );
|
207 |
+
|
208 |
+
if ( empty( $request_var ) || $option !== $request_var ) {
|
209 |
+
return false;
|
210 |
+
}
|
211 |
+
|
212 |
+
return true;
|
213 |
+
}
|
214 |
+
|
215 |
}
|
src/Tribe/REST/V1/Post_Repository.php
CHANGED
@@ -586,12 +586,12 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
586 |
|
587 |
// @todo here we need to uniform the return values to indicate unlimited and oversold!
|
588 |
|
589 |
-
$details =
|
590 |
'available_percentage' => $available_percentage,
|
591 |
-
'available' => (int) $ticket->stock(), // see note above about why we use this
|
592 |
-
|
593 |
|
594 |
-
if (
|
595 |
$details['max'] = (int) $ticket->capacity();
|
596 |
$details['sold'] = (int) $ticket->qty_sold();
|
597 |
$details['pending'] = (int) $ticket->qty_pending();
|
@@ -663,7 +663,7 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
663 |
|
664 |
$event = $ticket_object->get_event();
|
665 |
|
666 |
-
$has_manage_access =
|
667 |
$always_show_attendees_data = $has_manage_access;
|
668 |
|
669 |
/**
|
@@ -765,7 +765,7 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
765 |
return false;
|
766 |
}
|
767 |
|
768 |
-
$has_manage_access =
|
769 |
$permission = $has_manage_access ? 'editable' : 'readable';
|
770 |
|
771 |
$query = tribe_attendees( 'restv1' )
|
@@ -950,9 +950,9 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
950 |
'rest_url' => $main->get_url( '/attendees/' . $attendee_id ),
|
951 |
];
|
952 |
|
953 |
-
$has_manage_access =
|
954 |
|
955 |
-
// Only show the attendee name if the attendee did not optout or the user can read private posts
|
956 |
if ( empty( $attendee['optout'] ) || $has_manage_access ) {
|
957 |
$attendee_data['title'] = Tribe__Utils__Array::get( $attendee, 'holder_name', Tribe__Utils__Array::get( $attendee, 'purchaser_name', '' ) );
|
958 |
$attendee_data['optout'] = tribe_is_truthy( $attendee['optout'] );
|
@@ -960,7 +960,7 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
960 |
$attendee_data['optout'] = true;
|
961 |
}
|
962 |
|
963 |
-
// Sensible information should not be shown to everyone
|
964 |
if ( $has_manage_access ) {
|
965 |
$attendee_data = array_merge(
|
966 |
$attendee_data,
|
586 |
|
587 |
// @todo here we need to uniform the return values to indicate unlimited and oversold!
|
588 |
|
589 |
+
$details = [
|
590 |
'available_percentage' => $available_percentage,
|
591 |
+
'available' => (int) $ticket->stock(), // see note above about why we use this.
|
592 |
+
];
|
593 |
|
594 |
+
if ( tribe( 'tickets.rest-v1.main' )->request_has_manage_access() ) {
|
595 |
$details['max'] = (int) $ticket->capacity();
|
596 |
$details['sold'] = (int) $ticket->qty_sold();
|
597 |
$details['pending'] = (int) $ticket->qty_pending();
|
663 |
|
664 |
$event = $ticket_object->get_event();
|
665 |
|
666 |
+
$has_manage_access = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
667 |
$always_show_attendees_data = $has_manage_access;
|
668 |
|
669 |
/**
|
765 |
return false;
|
766 |
}
|
767 |
|
768 |
+
$has_manage_access = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
769 |
$permission = $has_manage_access ? 'editable' : 'readable';
|
770 |
|
771 |
$query = tribe_attendees( 'restv1' )
|
950 |
'rest_url' => $main->get_url( '/attendees/' . $attendee_id ),
|
951 |
];
|
952 |
|
953 |
+
$has_manage_access = tribe( 'tickets.rest-v1.main' )->request_has_manage_access();
|
954 |
|
955 |
+
// Only show the attendee name if the attendee did not optout or the user can read private posts.
|
956 |
if ( empty( $attendee['optout'] ) || $has_manage_access ) {
|
957 |
$attendee_data['title'] = Tribe__Utils__Array::get( $attendee, 'holder_name', Tribe__Utils__Array::get( $attendee, 'purchaser_name', '' ) );
|
958 |
$attendee_data['optout'] = tribe_is_truthy( $attendee['optout'] );
|
960 |
$attendee_data['optout'] = true;
|
961 |
}
|
962 |
|
963 |
+
// Sensible information should not be shown to everyone.
|
964 |
if ( $has_manage_access ) {
|
965 |
$attendee_data = array_merge(
|
966 |
$attendee_data,
|
src/Tribe/REST/V1/Service_Provider.php
CHANGED
@@ -21,7 +21,7 @@ class Tribe__Tickets__REST__V1__Service_Provider extends tad_DI52_ServiceProvide
|
|
21 |
* @since 4.7.5
|
22 |
*/
|
23 |
public function register() {
|
24 |
-
tribe_singleton( 'tickets.rest-v1.main', 'Tribe__Tickets__REST__V1__Main',
|
25 |
tribe_singleton( 'tickets.rest-v1.messages', 'Tribe__Tickets__REST__V1__Messages' );
|
26 |
tribe_singleton( 'tickets.rest-v1.headers-base', 'Tribe__Tickets__REST__V1__Headers__Base' );
|
27 |
tribe_singleton( 'tickets.rest-v1.settings', 'Tribe__Tickets__REST__V1__Settings' );
|
@@ -114,11 +114,15 @@ class Tribe__Tickets__REST__V1__Service_Provider extends tad_DI52_ServiceProvide
|
|
114 |
/** @var Tribe__Documentation__Swagger__Builder_Interface $endpoint */
|
115 |
$endpoint = tribe( 'tickets.rest-v1.endpoints.documentation' );
|
116 |
|
117 |
-
register_rest_route(
|
118 |
-
|
119 |
-
'
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
122 |
|
123 |
$endpoint->register_definition_provider( 'Image', new Tribe__Documentation__Swagger__Image_Definition_Provider() );
|
124 |
$endpoint->register_definition_provider( 'ImageSize', new Tribe__Documentation__Swagger__Image_Size_Definition_Provider() );
|
21 |
* @since 4.7.5
|
22 |
*/
|
23 |
public function register() {
|
24 |
+
tribe_singleton( 'tickets.rest-v1.main', 'Tribe__Tickets__REST__V1__Main', [ 'hook' ] );
|
25 |
tribe_singleton( 'tickets.rest-v1.messages', 'Tribe__Tickets__REST__V1__Messages' );
|
26 |
tribe_singleton( 'tickets.rest-v1.headers-base', 'Tribe__Tickets__REST__V1__Headers__Base' );
|
27 |
tribe_singleton( 'tickets.rest-v1.settings', 'Tribe__Tickets__REST__V1__Settings' );
|
114 |
/** @var Tribe__Documentation__Swagger__Builder_Interface $endpoint */
|
115 |
$endpoint = tribe( 'tickets.rest-v1.endpoints.documentation' );
|
116 |
|
117 |
+
register_rest_route(
|
118 |
+
$this->namespace,
|
119 |
+
'/doc',
|
120 |
+
[
|
121 |
+
'methods' => WP_REST_Server::READABLE,
|
122 |
+
'callback' => [ $endpoint, 'get' ],
|
123 |
+
'permission_callback' => '__return_true',
|
124 |
+
]
|
125 |
+
);
|
126 |
|
127 |
$endpoint->register_definition_provider( 'Image', new Tribe__Documentation__Swagger__Image_Definition_Provider() );
|
128 |
$endpoint->register_definition_provider( 'ImageSize', new Tribe__Documentation__Swagger__Image_Size_Definition_Provider() );
|
src/Tribe/RSVP.php
CHANGED
@@ -482,9 +482,9 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
482 |
*/
|
483 |
$attendee_ids = $this->generate_tickets( $args['post_id'], false );
|
484 |
|
485 |
-
if (
|
486 |
$result['success'] = false;
|
487 |
-
$result['errors'][] =
|
488 |
|
489 |
return $result;
|
490 |
}
|
@@ -1040,7 +1040,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1040 |
* @param int|null $post_id Post ID for ticket, null to use current post ID.
|
1041 |
* @param boolean $redirect Whether to redirect on error.
|
1042 |
*
|
1043 |
-
* @return array|
|
1044 |
*/
|
1045 |
public function generate_tickets( $post_id = null, $redirect = true ) {
|
1046 |
$has_tickets = false;
|
@@ -1069,7 +1069,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1069 |
tribe_exit();
|
1070 |
}
|
1071 |
|
1072 |
-
return
|
1073 |
}
|
1074 |
|
1075 |
$product_ids = [];
|
@@ -1096,6 +1096,10 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1096 |
|
1097 |
$tickets_generated = $this->generate_tickets_for( $product_id, $ticket_qty, $attendee_details, $redirect );
|
1098 |
|
|
|
|
|
|
|
|
|
1099 |
if ( $tickets_generated ) {
|
1100 |
if ( is_array( $tickets_generated ) ) {
|
1101 |
$attendee_ids[] = $tickets_generated;
|
@@ -2524,15 +2528,31 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
2524 |
*
|
2525 |
* @since 4.7
|
2526 |
*
|
|
|
|
|
2527 |
* @param int $product_id The ticket post ID.
|
2528 |
* @param int $ticket_qty The number of attendees that should be generated.
|
2529 |
* @param array $attendee_details An array containing the details for the attendees
|
2530 |
* that should be generated.
|
2531 |
* @param boolean $redirect Whether to redirect on error.
|
2532 |
*
|
2533 |
-
* @return
|
2534 |
*/
|
2535 |
public function generate_tickets_for( $product_id, $ticket_qty, $attendee_details, $redirect = true ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2536 |
$rsvp_options = $this->tickets_view->get_rsvp_options( null, false );
|
2537 |
|
2538 |
$required_details = array(
|
@@ -2545,12 +2565,14 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
2545 |
|
2546 |
foreach ( $required_details as $required_detail ) {
|
2547 |
if ( ! isset( $attendee_details[ $required_detail ] ) ) {
|
2548 |
-
|
|
|
2549 |
}
|
2550 |
|
2551 |
// Some details should not be empty.
|
2552 |
if ( 'optout' !== $required_detail && empty( $attendee_details[ $required_detail ] ) ) {
|
2553 |
-
|
|
|
2554 |
}
|
2555 |
}
|
2556 |
|
@@ -2569,20 +2591,6 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
2569 |
$attendee_optout = filter_var( $attendee_optout, FILTER_VALIDATE_BOOLEAN );
|
2570 |
$attendee_optout = (int) $attendee_optout;
|
2571 |
|
2572 |
-
// Get the event this tickets is for
|
2573 |
-
$post_id = get_post_meta( $product_id, $this->get_event_key(), true );
|
2574 |
-
|
2575 |
-
if ( empty( $post_id ) ) {
|
2576 |
-
return false;
|
2577 |
-
}
|
2578 |
-
|
2579 |
-
/** @var Tribe__Tickets__Ticket_Object $ticket_type */
|
2580 |
-
$ticket_type = $this->get_ticket( $post_id, $product_id );
|
2581 |
-
|
2582 |
-
if ( ! $ticket_type instanceof Tribe__Tickets__Ticket_Object ) {
|
2583 |
-
return false;
|
2584 |
-
}
|
2585 |
-
|
2586 |
// get the RSVP status `decrease_stock_by` value
|
2587 |
$status_stock_size = $rsvp_options[ $attendee_order_status ]['decrease_stock_by'];
|
2588 |
|
@@ -2601,7 +2609,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
2601 |
tribe_exit();
|
2602 |
}
|
2603 |
|
2604 |
-
return
|
2605 |
}
|
2606 |
|
2607 |
/**
|
@@ -2631,7 +2639,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
2631 |
$attendee_ids[] = $this->create_attendee_for_ticket( $ticket_type, $attendee_data );
|
2632 |
} catch ( Exception $exception ) {
|
2633 |
// Stop processing and return false.
|
2634 |
-
return
|
2635 |
}
|
2636 |
}
|
2637 |
|
482 |
*/
|
483 |
$attendee_ids = $this->generate_tickets( $args['post_id'], false );
|
484 |
|
485 |
+
if ( is_wp_error( $attendee_ids ) ) {
|
486 |
$result['success'] = false;
|
487 |
+
$result['errors'][] = $attendee_ids->get_error_message();
|
488 |
|
489 |
return $result;
|
490 |
}
|
1040 |
* @param int|null $post_id Post ID for ticket, null to use current post ID.
|
1041 |
* @param boolean $redirect Whether to redirect on error.
|
1042 |
*
|
1043 |
+
* @return array|WP_Error List of attendee ID(s) generated, or \WP_Error if there was a problem.
|
1044 |
*/
|
1045 |
public function generate_tickets( $post_id = null, $redirect = true ) {
|
1046 |
$has_tickets = false;
|
1069 |
tribe_exit();
|
1070 |
}
|
1071 |
|
1072 |
+
return new WP_Error( 'rsvp-error', __( 'Invalid data! Missing required attendee details!', 'event-tickets' ) );
|
1073 |
}
|
1074 |
|
1075 |
$product_ids = [];
|
1096 |
|
1097 |
$tickets_generated = $this->generate_tickets_for( $product_id, $ticket_qty, $attendee_details, $redirect );
|
1098 |
|
1099 |
+
if ( is_wp_error( $tickets_generated ) ) {
|
1100 |
+
return $tickets_generated;
|
1101 |
+
}
|
1102 |
+
|
1103 |
if ( $tickets_generated ) {
|
1104 |
if ( is_array( $tickets_generated ) ) {
|
1105 |
$attendee_ids[] = $tickets_generated;
|
2528 |
*
|
2529 |
* @since 4.7
|
2530 |
*
|
2531 |
+
* @since TBD Return WP_Error in case of errors to show proper error messages.
|
2532 |
+
*
|
2533 |
* @param int $product_id The ticket post ID.
|
2534 |
* @param int $ticket_qty The number of attendees that should be generated.
|
2535 |
* @param array $attendee_details An array containing the details for the attendees
|
2536 |
* that should be generated.
|
2537 |
* @param boolean $redirect Whether to redirect on error.
|
2538 |
*
|
2539 |
+
* @return array|WP_Error `true` if the attendees were successfully generated, `false` otherwise. If $redirect is set to false, upon success this method will return an array of attendee IDs generated.
|
2540 |
*/
|
2541 |
public function generate_tickets_for( $product_id, $ticket_qty, $attendee_details, $redirect = true ) {
|
2542 |
+
// Get the event this tickets is for
|
2543 |
+
$post_id = get_post_meta( $product_id, $this->get_event_key(), true );
|
2544 |
+
|
2545 |
+
if ( empty( $post_id ) ) {
|
2546 |
+
return new WP_Error( 'rsvp-invalid-parent-id', __( 'Invalid parent ID provided!', 'event-tickets' ) );
|
2547 |
+
}
|
2548 |
+
|
2549 |
+
/** @var Tribe__Tickets__Ticket_Object $ticket_type */
|
2550 |
+
$ticket_type = $this->get_ticket( $post_id, $product_id );
|
2551 |
+
|
2552 |
+
if ( ! $ticket_type instanceof Tribe__Tickets__Ticket_Object ) {
|
2553 |
+
return new WP_Error( 'rsvp-invalid-ticket-id', __( 'Invalid Ticket ID provided!', 'event-tickets' ) );
|
2554 |
+
}
|
2555 |
+
|
2556 |
$rsvp_options = $this->tickets_view->get_rsvp_options( null, false );
|
2557 |
|
2558 |
$required_details = array(
|
2565 |
|
2566 |
foreach ( $required_details as $required_detail ) {
|
2567 |
if ( ! isset( $attendee_details[ $required_detail ] ) ) {
|
2568 |
+
$message = sprintf( __( "Missing required RSVP field: %s", 'event-tickets' ), $required_detail );
|
2569 |
+
return new WP_Error( 'rsvp-missing-required-data', $message );
|
2570 |
}
|
2571 |
|
2572 |
// Some details should not be empty.
|
2573 |
if ( 'optout' !== $required_detail && empty( $attendee_details[ $required_detail ] ) ) {
|
2574 |
+
$message = sprintf( __( "Missing required RSVP field: %s", 'event-tickets' ), $required_detail );
|
2575 |
+
return new WP_Error( 'rsvp-missing-required-data', $message );
|
2576 |
}
|
2577 |
}
|
2578 |
|
2591 |
$attendee_optout = filter_var( $attendee_optout, FILTER_VALIDATE_BOOLEAN );
|
2592 |
$attendee_optout = (int) $attendee_optout;
|
2593 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2594 |
// get the RSVP status `decrease_stock_by` value
|
2595 |
$status_stock_size = $rsvp_options[ $attendee_order_status ]['decrease_stock_by'];
|
2596 |
|
2609 |
tribe_exit();
|
2610 |
}
|
2611 |
|
2612 |
+
return new WP_Error( 'rsvp-invalid-stock-request', __( 'Requested amount of Tickets are not available!', 'event-tickets' ) );
|
2613 |
}
|
2614 |
|
2615 |
/**
|
2639 |
$attendee_ids[] = $this->create_attendee_for_ticket( $ticket_type, $attendee_data );
|
2640 |
} catch ( Exception $exception ) {
|
2641 |
// Stop processing and return false.
|
2642 |
+
return new WP_Error( 'rsvp-invalid-stock-request', $exception->getMessage() );
|
2643 |
}
|
2644 |
}
|
2645 |
|
src/Tribe/Tickets.php
CHANGED
@@ -1475,6 +1475,14 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1475 |
if ( ! empty( $args['per_page'] ) ) {
|
1476 |
$repository->per_page( absint( $args['per_page'] ) );
|
1477 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1478 |
}
|
1479 |
|
1480 |
/**
|
@@ -3409,11 +3417,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
3409 |
$editor = tribe( 'editor' );
|
3410 |
|
3411 |
// Blocks and ticket templates merged - bail if we should be seeing blocks.
|
3412 |
-
if (
|
3413 |
-
has_blocks( $post->ID )
|
3414 |
-
&& $editor->should_load_blocks()
|
3415 |
-
&& ! $editor->is_classic_editor()
|
3416 |
-
) {
|
3417 |
return false;
|
3418 |
}
|
3419 |
|
1475 |
if ( ! empty( $args['per_page'] ) ) {
|
1476 |
$repository->per_page( absint( $args['per_page'] ) );
|
1477 |
}
|
1478 |
+
|
1479 |
+
if ( ! empty( $args['orderby'] ) ) {
|
1480 |
+
$repository->order_by( strval( $args['orderby'] ) );
|
1481 |
+
}
|
1482 |
+
|
1483 |
+
if ( ! empty( $args['order'] ) ) {
|
1484 |
+
$repository->order( strval( $args['order'] ) );
|
1485 |
+
}
|
1486 |
}
|
1487 |
|
1488 |
/**
|
3417 |
$editor = tribe( 'editor' );
|
3418 |
|
3419 |
// Blocks and ticket templates merged - bail if we should be seeing blocks.
|
3420 |
+
if ( has_blocks( $post->ID ) ) {
|
|
|
|
|
|
|
|
|
3421 |
return false;
|
3422 |
}
|
3423 |
|
src/admin-views/admin-welcome-message.php
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
* The template that displays the welcome message when the plugin is first activated.
|
4 |
*/
|
5 |
|
|
|
6 |
use Tribe\Tickets\Admin\Settings;
|
7 |
|
8 |
$main = Tribe__Main::instance();
|
@@ -18,6 +19,18 @@ if ( $has_plus ) {
|
|
18 |
$logo_image = 'images/logo/event-tickets-plus.svg';
|
19 |
$mobile_graphic = 'images/header/welcome-mobile-etplus.jpg';
|
20 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
?>
|
22 |
|
23 |
<?php if ( $has_plus ) : ?>
|
@@ -142,12 +155,12 @@ if ( $has_plus ) {
|
|
142 |
<div class="tribe-events-admin-card tribe-events-admin-card--3up tribe-events-admin-card--last">
|
143 |
<img
|
144 |
class="tribe-events-admin-card__image"
|
145 |
-
src="<?php echo esc_url( tribe_resource_url( 'images/welcome/
|
146 |
-
alt="<?php esc_attr_e( 'Illustration of
|
147 |
/>
|
148 |
-
<div class="tribe-events-admin-card__title"><?php esc_html_e( '
|
149 |
-
<div class="tribe-events-admin-card__description"><?php
|
150 |
-
<a class="tribe-events-admin-card__link" href="
|
151 |
</div>
|
152 |
|
153 |
<div class="tribe-events-admin-card tribe-events-admin-card--1up">
|
3 |
* The template that displays the welcome message when the plugin is first activated.
|
4 |
*/
|
5 |
|
6 |
+
use TEC\Tickets\Commerce\Payments_Tab;
|
7 |
use Tribe\Tickets\Admin\Settings;
|
8 |
|
9 |
$main = Tribe__Main::instance();
|
19 |
$logo_image = 'images/logo/event-tickets-plus.svg';
|
20 |
$mobile_graphic = 'images/header/welcome-mobile-etplus.jpg';
|
21 |
}
|
22 |
+
|
23 |
+
$tc_description = esc_html( 'Tickets Commerce provides flexible online payments right out of the box.', 'event-tickets' );
|
24 |
+
$tc_link = tribe( Payments_Tab::class )->get_url();
|
25 |
+
|
26 |
+
if ( $has_tec ) {
|
27 |
+
$tc_description = sprintf(
|
28 |
+
'%s %s',
|
29 |
+
esc_html( 'Want to monetize your events?', 'event-tickets' ),
|
30 |
+
$tc_description
|
31 |
+
);
|
32 |
+
}
|
33 |
+
|
34 |
?>
|
35 |
|
36 |
<?php if ( $has_plus ) : ?>
|
155 |
<div class="tribe-events-admin-card tribe-events-admin-card--3up tribe-events-admin-card--last">
|
156 |
<img
|
157 |
class="tribe-events-admin-card__image"
|
158 |
+
src="<?php echo esc_url( tribe_resource_url( 'images/welcome/tickets-commerce.png', false, null, $main ) ); ?>"
|
159 |
+
alt="<?php esc_attr_e( 'Illustration of money turning into a ticket', 'event-tickets' ); ?>"
|
160 |
/>
|
161 |
+
<div class="tribe-events-admin-card__title"><?php esc_html_e( 'Tickets Commerce', 'event-tickets' ); ?></div>
|
162 |
+
<div class="tribe-events-admin-card__description"><?php echo $tc_description; ?></div>
|
163 |
+
<a class="tribe-events-admin-card__link" href="<?php echo $tc_link; ?>"><?php esc_html_e( 'Get started', 'event-tickets' ); ?></a>
|
164 |
</div>
|
165 |
|
166 |
<div class="tribe-events-admin-card tribe-events-admin-card--1up">
|
src/resources/css/tickets-report.css
CHANGED
@@ -181,7 +181,7 @@
|
|
181 |
}
|
182 |
|
183 |
.tribe-report-page .column-security {
|
184 |
-
width:
|
185 |
}
|
186 |
|
187 |
.tribe-report-page .column-check_in {
|
181 |
}
|
182 |
|
183 |
.tribe-report-page .column-security {
|
184 |
+
width: 130px;
|
185 |
}
|
186 |
|
187 |
.tribe-report-page .column-check_in {
|
src/resources/css/tickets-report.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tribe-report-panel{overflow:visible;padding:0;position:relative}.tribe-report-panel.welcome-panel{background:none;overflow:visible}.tribe-report-panel.welcome-panel:before{content:none}.tribe-report-panel .about-description{width:66%}.tribe-report-panel .about-description a{color:inherit}.tribe-report-panel .welcome-panel-content{min-height:0}.tribe-report-panel .welcome-panel-column-container{display:grid;grid-gap:unset;gap:unset;grid-template-columns:repeat(3,1fr);grid-template-areas:"a b c" "d d c";margin-top:0;padding:0;position:static;*zoom:1}.tribe-report-panel .welcome-panel-column{display:inline-block;max-width:none;padding:20px 10px;width:auto}.tribe-report-panel .welcome-panel-column li{line-height:1.4em;margin-bottom:6px;padding:0}.tribe-report-panel .welcome-panel-column .tribe-event-meta-note div{padding:0 0 0 15px}.tribe-report-panel .welcome-panel-first{grid-area:a}.tribe-report-panel .welcome-panel-extra{grid-area:d}.tribe-report-panel .welcome-panel-middle{grid-area:b}.tribe-report-panel .welcome-panel-last{align-content:start;border-left:1px solid #eee;display:flex;flex-flow:row wrap;grid-area:c;padding:10px 20px 5px;*zoom:1}.tribe-report-panel .welcome-panel-last li{margin-bottom:2px}.tribe-report-panel .welcome-panel-last .totals-header{flex:0 0 100%}.tribe-report-panel .welcome-panel-last .totals-header h3{display:inline-block;width:auto}.tribe-report-panel .welcome-panel-last .totals-header .order-total{font-size:16px;margin:1.2em 0 0;font-weight:600}.tribe-report-panel .welcome-panel-last h4{font-size:1.5em;text-align:center}.tribe-report-panel .welcome-panel-last li{font-size:1.1em}.tribe-report-page .welcome-panel-content h3{margin-top:0}.tribe-report-page h4.tickets-summary{margin:0}.tribe-report-page .tickets_checkin{min-width:87px;text-align:center;white-space:nowrap}.tribe-report-page .tickets_uncheckin{display:none;height:auto;line-height:1.5;white-space:normal}.tribe-report-page .tickets_checked td{opacity:.6}.tribe-report-page .tickets_checked td.check_in{opacity:1}.tribe-report-page .tickets_checked .tickets_checkin{display:none}.tribe-report-page .tickets_checked .tickets_uncheckin{display:block;opacity:1}.tribe-report-page .tickets_checked .inline .tickets_uncheckin{display:inline}.tribe-report-page .cancelled{font-style:italic}.tribe-report-page .cancelled .check_in{font-style:normal}.tribe-report-page .column-attendee_id,.tribe-report-page .column-order_id{width:70px}.tribe-report-page td[class*=column]{word-break:break-word}.tribe-report-page td.column-status{font-size:13px;width:80px}.tribe-report-page .column-security{width:
|
1 |
+
.tribe-report-panel{overflow:visible;padding:0;position:relative}.tribe-report-panel.welcome-panel{background:none;overflow:visible}.tribe-report-panel.welcome-panel:before{content:none}.tribe-report-panel .about-description{width:66%}.tribe-report-panel .about-description a{color:inherit}.tribe-report-panel .welcome-panel-content{min-height:0}.tribe-report-panel .welcome-panel-column-container{display:grid;grid-gap:unset;gap:unset;grid-template-columns:repeat(3,1fr);grid-template-areas:"a b c" "d d c";margin-top:0;padding:0;position:static;*zoom:1}.tribe-report-panel .welcome-panel-column{display:inline-block;max-width:none;padding:20px 10px;width:auto}.tribe-report-panel .welcome-panel-column li{line-height:1.4em;margin-bottom:6px;padding:0}.tribe-report-panel .welcome-panel-column .tribe-event-meta-note div{padding:0 0 0 15px}.tribe-report-panel .welcome-panel-first{grid-area:a}.tribe-report-panel .welcome-panel-extra{grid-area:d}.tribe-report-panel .welcome-panel-middle{grid-area:b}.tribe-report-panel .welcome-panel-last{align-content:start;border-left:1px solid #eee;display:flex;flex-flow:row wrap;grid-area:c;padding:10px 20px 5px;*zoom:1}.tribe-report-panel .welcome-panel-last li{margin-bottom:2px}.tribe-report-panel .welcome-panel-last .totals-header{flex:0 0 100%}.tribe-report-panel .welcome-panel-last .totals-header h3{display:inline-block;width:auto}.tribe-report-panel .welcome-panel-last .totals-header .order-total{font-size:16px;margin:1.2em 0 0;font-weight:600}.tribe-report-panel .welcome-panel-last h4{font-size:1.5em;text-align:center}.tribe-report-panel .welcome-panel-last li{font-size:1.1em}.tribe-report-page .welcome-panel-content h3{margin-top:0}.tribe-report-page h4.tickets-summary{margin:0}.tribe-report-page .tickets_checkin{min-width:87px;text-align:center;white-space:nowrap}.tribe-report-page .tickets_uncheckin{display:none;height:auto;line-height:1.5;white-space:normal}.tribe-report-page .tickets_checked td{opacity:.6}.tribe-report-page .tickets_checked td.check_in{opacity:1}.tribe-report-page .tickets_checked .tickets_checkin{display:none}.tribe-report-page .tickets_checked .tickets_uncheckin{display:block;opacity:1}.tribe-report-page .tickets_checked .inline .tickets_uncheckin{display:inline}.tribe-report-page .cancelled{font-style:italic}.tribe-report-page .cancelled .check_in{font-style:normal}.tribe-report-page .column-attendee_id,.tribe-report-page .column-order_id{width:70px}.tribe-report-page td[class*=column]{word-break:break-word}.tribe-report-page td.column-status{font-size:13px;width:80px}.tribe-report-page .column-security{width:130px}.tribe-report-page .column-check_in{min-width:90px;width:auto}.tribe-report-page .attendees-actions a.email,.tribe-report-page .attendees-actions a.export,.tribe-report-page .attendees-actions input.print{float:left;margin:1px 8px 0 0}.tribe-attendees-email .tribe-attendees-email-message{float:left;margin:0}.tribe-attendees-email .button-primary{margin-top:3px}.tribe-attendees-email-message ul{font-size:13px;line-height:1.5;margin:.5em 0;padding:2px}.tribe-attendees-email-message ul li:last-child{margin-bottom:0}#attendees_email_wrapper{margin-top:10px;overflow:hidden;padding:20px}#attendees_email_wrapper label{display:block}#attendees_email_wrapper label span{display:inline-block;width:105px}#attendees_email_wrapper input[type=text],#attendees_email_wrapper select{width:285px}#attendees_email_wrapper .attendees_or{display:block;font-size:20px;margin:20px 0;text-align:center}.wp-list-table{font-size:14px}.wp-list-table td.check_in .delete{text-align:center}.welcome-panel .welcome-panel-content{margin:0;*zoom:1}table.orders tr.denied,table.orders tr.pending,table.orders tr.refunded{font-style:italic}.tec-admin__upsell-tec-tickets-manual-attendees .tec-admin__upsell-content{padding:0}.tec-admin__upsell-tec-tickets-manual-attendees .tec-admin__upsell-text{color:#1d2327}@media screen and (max-width:768px){.tribe-report-panel .welcome-panel-column-container{grid-template-columns:1fr;grid-template-areas:"a" "b" "c" "d"}.tribe-report-panel .welcome-panel-column{padding:20px 0}.tribe-report-panel .welcome-panel-column h3{display:inline-block;padding-left:15px}.tribe-report-panel .welcome-panel-column .tribe-event-meta-note div,.tribe-report-panel .welcome-panel-column ul,.tribe-report-panel .welcome-panel-middle>div{padding:0 15px}.tribe-report-panel .welcome-panel-last{width:100%}.welcome-panel .welcome-panel-content{margin-left:0;max-width:100%}}@media screen and (min-width:1024px){.tribe-report-panel .welcome-panel-column{padding:20px var(--tec-spacer-5)}}@media screen and (max-width:870px){.tribe-report-panel .welcome-panel-column li{display:list-item}.tribe-report-panel .welcome-panel-last ul{width:50%}}@media screen and (min-width:870px){.tribe-report-panel .welcome-panel-last ul:first-child{margin-bottom:0}}@media screen and (max-width:782px){.tribe-attendees-email-message .notice-dismiss{padding:9px}#TB_window{height:auto!important}#plugin-information-title{height:auto!important;overflow:hidden!important}#plugin-information-footer{position:relative!important}}@media screen and (max-width:440px){#TB_window{left:0!important;margin-left:0!important}#TB_iframeContent,#TB_window{width:100%!important}}
|
src/resources/js/v2/__tests__/tickets-utils.test.js
CHANGED
@@ -114,4 +114,28 @@ describe( 'Format number extended tests', () => {
|
|
114 |
it( 'Should return false if invalid format given', () => {
|
115 |
expect( utils.numberFormat( '111', 'invalid-format' ) ).toBe(false);
|
116 |
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
} );
|
114 |
it( 'Should return false if invalid format given', () => {
|
115 |
expect( utils.numberFormat( '111', 'invalid-format' ) ).toBe(false);
|
116 |
} );
|
117 |
+
} );
|
118 |
+
|
119 |
+
describe( 'Testing Shared Capacity Calculations', () => {
|
120 |
+
|
121 |
+
// result should always the be minimum value between `target_available` and `maxAvailable - addedtToCart`.
|
122 |
+
const dataset = [
|
123 |
+
{ targetQty: 2, targetAvailable: 2, maxAvailable: 2, addedToCart: 0, result: 2 },
|
124 |
+
{ targetQty: 1, targetAvailable: 1, maxAvailable: 2, addedToCart: 0, result: 1 },
|
125 |
+
{ targetQty: 3, targetAvailable: 2, maxAvailable: 5, addedToCart: 0, result: 2 },
|
126 |
+
{ targetQty: 3, targetAvailable: 3, maxAvailable: 2, addedToCart: 0, result: 2 },
|
127 |
+
{ targetQty: 1, targetAvailable: 1, maxAvailable: 2, addedToCart: 2, result: 0 },
|
128 |
+
{ targetQty: 3, targetAvailable: 3, maxAvailable: 2, addedToCart: 2, result: 0 },
|
129 |
+
{ targetQty: 4, targetAvailable: 4, maxAvailable: 6, addedToCart: 3, result: 3 },
|
130 |
+
{ targetQty: 4, targetAvailable: 5, maxAvailable: 3, addedToCart: 0, result: 3 },
|
131 |
+
{ targetQty: 4, targetAvailable: 5, maxAvailable: 3, addedToCart: 1, result: 2 },
|
132 |
+
{ targetQty: 4, targetAvailable: 5, maxAvailable: 3, addedToCart: 2, result: 1 },
|
133 |
+
{ targetQty: 4, targetAvailable: 5, maxAvailable: 3, addedToCart: 3, result: 0 },
|
134 |
+
];
|
135 |
+
|
136 |
+
describe( 'Testing Shared Cap combinations', () => {
|
137 |
+
test.each(dataset)( 'values : ( $targetQty, $targetAvailable, $maxAvailable, $addedToCart )', ( { targetQty, targetAvailable, maxAvailable, addedToCart, result } ) => {
|
138 |
+
expect(utils.calculateSharedCap( targetQty, targetAvailable, maxAvailable, addedToCart )).toBe(result);
|
139 |
+
} );
|
140 |
+
});
|
141 |
} );
|
src/resources/js/v2/tickets-block.js
CHANGED
@@ -297,7 +297,7 @@ tribe.tickets.block = {
|
|
297 |
|
298 |
if ( 'true' === $parent.attr( 'data-has-shared-cap' ) ) {
|
299 |
const $form = $parent.closest( 'form' );
|
300 |
-
newValue = obj.checkSharedCapacity( $form, newValue );
|
301 |
}
|
302 |
|
303 |
if ( 0 === newValue ) {
|
@@ -396,10 +396,11 @@ tribe.tickets.block = {
|
|
396 |
*
|
397 |
* @param {jQuery} $form jQuery object that is the form we are checking.
|
398 |
* @param {number} qty The quantity we desire.
|
|
|
399 |
*
|
400 |
* @returns {integer} The quantity, limited by existing shared cap tickets.
|
401 |
*/
|
402 |
-
obj.checkSharedCapacity = function( $form, qty ) {
|
403 |
let sharedCap = [];
|
404 |
let currentLoad = [];
|
405 |
const $sharedTickets = $form
|
@@ -411,11 +412,12 @@ tribe.tickets.block = {
|
|
411 |
return qty;
|
412 |
}
|
413 |
|
414 |
-
$
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
|
|
419 |
|
420 |
$sharedCapTickets.each(
|
421 |
function() {
|
@@ -423,10 +425,6 @@ tribe.tickets.block = {
|
|
423 |
}
|
424 |
);
|
425 |
|
426 |
-
// IE doesn't allow spread operator.
|
427 |
-
// @todo: check that we're no longer supporting some IE versions.
|
428 |
-
sharedCap = Math.max.apply( this, sharedCap );
|
429 |
-
|
430 |
currentLoad = currentLoad.reduce(
|
431 |
function( a, b ) {
|
432 |
return a + b;
|
@@ -434,9 +432,20 @@ tribe.tickets.block = {
|
|
434 |
0
|
435 |
);
|
436 |
|
437 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
438 |
|
439 |
-
return
|
|
|
|
|
|
|
|
|
|
|
440 |
};
|
441 |
|
442 |
/**
|
@@ -637,7 +646,7 @@ tribe.tickets.block = {
|
|
637 |
}
|
638 |
|
639 |
if ( 'true' === $ticket.attr( 'data-has-shared-cap' ) ) {
|
640 |
-
maxQty = obj.checkSharedCapacity( $form, newQuantity );
|
641 |
}
|
642 |
|
643 |
if ( 0 > maxQty ) {
|
297 |
|
298 |
if ( 'true' === $parent.attr( 'data-has-shared-cap' ) ) {
|
299 |
const $form = $parent.closest( 'form' );
|
300 |
+
newValue = obj.checkSharedCapacity( $form, newValue, $parent );
|
301 |
}
|
302 |
|
303 |
if ( 0 === newValue ) {
|
396 |
*
|
397 |
* @param {jQuery} $form jQuery object that is the form we are checking.
|
398 |
* @param {number} qty The quantity we desire.
|
399 |
+
* @param {obj} target The ticket item that was clicked.
|
400 |
*
|
401 |
* @returns {integer} The quantity, limited by existing shared cap tickets.
|
402 |
*/
|
403 |
+
obj.checkSharedCapacity = function( $form, qty, $target ) {
|
404 |
let sharedCap = [];
|
405 |
let currentLoad = [];
|
406 |
const $sharedTickets = $form
|
412 |
return qty;
|
413 |
}
|
414 |
|
415 |
+
let active_ticket_limit = $target.attr( 'data-available-count' );
|
416 |
+
let totalSharedCap = $target.attr( 'data-shared-cap' );
|
417 |
+
|
418 |
+
if ( undefined === active_ticket_limit || undefined === totalSharedCap ) {
|
419 |
+
return qty;
|
420 |
+
}
|
421 |
|
422 |
$sharedCapTickets.each(
|
423 |
function() {
|
425 |
}
|
426 |
);
|
427 |
|
|
|
|
|
|
|
|
|
428 |
currentLoad = currentLoad.reduce(
|
429 |
function( a, b ) {
|
430 |
return a + b;
|
432 |
0
|
433 |
);
|
434 |
|
435 |
+
$sharedTickets.each(
|
436 |
+
function() {
|
437 |
+
sharedCap.push( parseInt( $( this ).attr( 'data-available-count' ), 10 ) );
|
438 |
+
}
|
439 |
+
);
|
440 |
+
|
441 |
+
sharedCap = Math.max.apply( this, sharedCap );
|
442 |
|
443 |
+
return tribe.tickets.utils.calculateSharedCap(
|
444 |
+
qty,
|
445 |
+
active_ticket_limit,
|
446 |
+
sharedCap,
|
447 |
+
currentLoad
|
448 |
+
);
|
449 |
};
|
450 |
|
451 |
/**
|
646 |
}
|
647 |
|
648 |
if ( 'true' === $ticket.attr( 'data-has-shared-cap' ) ) {
|
649 |
+
maxQty = obj.checkSharedCapacity( $form, newQuantity, $this );
|
650 |
}
|
651 |
|
652 |
if ( 0 > maxQty ) {
|
src/resources/js/v2/tickets-utils.js
CHANGED
@@ -247,4 +247,29 @@ tribe.tickets.utils = {};
|
|
247 |
return parseFloat( priceString );
|
248 |
};
|
249 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
} )( jQuery, tribe.tickets.utils );
|
247 |
return parseFloat( priceString );
|
248 |
};
|
249 |
|
250 |
+
/**
|
251 |
+
*
|
252 |
+
* @param targetQty {integer}
|
253 |
+
* @param targetAvailable {integer}
|
254 |
+
* @param maxAvailable {integer}
|
255 |
+
* @param addedToCart {integer}
|
256 |
+
* @returns {number|integer}
|
257 |
+
*/
|
258 |
+
obj.calculateSharedCap = function( targetQty, targetAvailable, maxAvailable, addedToCart ) {
|
259 |
+
|
260 |
+
const maxLimit = maxAvailable - addedToCart;
|
261 |
+
|
262 |
+
// If target qty is smaller than both max available and target ticket capacity then it's valid.
|
263 |
+
if ( targetQty <= targetAvailable && targetQty <= maxLimit ) {
|
264 |
+
return targetQty;
|
265 |
+
}
|
266 |
+
|
267 |
+
// If qty is larger than ticket capacity then return ticket availability, given it's less than max available.
|
268 |
+
if ( targetQty > targetAvailable ) {
|
269 |
+
return targetAvailable <= maxLimit ? targetAvailable : 0;
|
270 |
+
}
|
271 |
+
|
272 |
+
return maxLimit;
|
273 |
+
}
|
274 |
+
|
275 |
} )( jQuery, tribe.tickets.utils );
|
src/resources/postcss/tickets-report.pcss
CHANGED
@@ -237,7 +237,7 @@
|
|
237 |
}
|
238 |
|
239 |
.column-security {
|
240 |
-
width:
|
241 |
}
|
242 |
|
243 |
.column-check_in {
|
237 |
}
|
238 |
|
239 |
.column-security {
|
240 |
+
width: 130px;
|
241 |
}
|
242 |
|
243 |
.column-check_in {
|
src/views/v2/tickets/item/inactive.php
CHANGED
@@ -60,7 +60,7 @@ $message = $is_sale_past
|
|
60 |
/* translators: %s: Tickets label */
|
61 |
? sprintf( __( '%s are no longer available', 'event-tickets' ), tribe_get_ticket_label_plural( 'event-tickets' ) )
|
62 |
/* translators: %s: Tickets label */
|
63 |
-
:
|
64 |
?>
|
65 |
<div <?php tribe_classes( $classes ); ?>>
|
66 |
<div
|
60 |
/* translators: %s: Tickets label */
|
61 |
? sprintf( __( '%s are no longer available', 'event-tickets' ), tribe_get_ticket_label_plural( 'event-tickets' ) )
|
62 |
/* translators: %s: Tickets label */
|
63 |
+
: $provider->get_tickets_unavailable_message( $tickets );
|
64 |
?>
|
65 |
<div <?php tribe_classes( $classes ); ?>>
|
66 |
<div
|
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 ComposerAutoloaderInit30ba9895520bddaa0c47342927fb07ef::getLoader();
|
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 ComposerAutoloaderInitfe9e70a3c24664320f614afeeec7f17f
|
|
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 ComposerAutoloaderInit30ba9895520bddaa0c47342927fb07ef
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit30ba9895520bddaa0c47342927fb07ef', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit30ba9895520bddaa0c47342927fb07ef', '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\ComposerStaticInit30ba9895520bddaa0c47342927fb07ef::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' =>
|
@@ -207,9 +207,9 @@ class ComposerStaticInitfe9e70a3c24664320f614afeeec7f17f
|
|
207 |
public static function getInitializer(ClassLoader $loader)
|
208 |
{
|
209 |
return \Closure::bind(function () use ($loader) {
|
210 |
-
$loader->prefixLengthsPsr4 =
|
211 |
-
$loader->prefixDirsPsr4 =
|
212 |
-
$loader->classMap =
|
213 |
|
214 |
}, null, ClassLoader::class);
|
215 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit30ba9895520bddaa0c47342927fb07ef
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
207 |
public static function getInitializer(ClassLoader $loader)
|
208 |
{
|
209 |
return \Closure::bind(function () use ($loader) {
|
210 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit30ba9895520bddaa0c47342927fb07ef::$prefixLengthsPsr4;
|
211 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit30ba9895520bddaa0c47342927fb07ef::$prefixDirsPsr4;
|
212 |
+
$loader->classMap = ComposerStaticInit30ba9895520bddaa0c47342927fb07ef::$classMap;
|
213 |
|
214 |
}, null, ClassLoader::class);
|
215 |
}
|