Version Description
Download this release
Release Info
Developer | ModernTribe |
Plugin | Event Tickets |
Version | 4.10.9 |
Comparing to | |
See all releases |
Code changes from version 4.10.8 to 4.10.9
- common/src/Tribe/Context.php +40 -0
- common/src/Tribe/Context/locations.php +7 -0
- common/src/Tribe/Languages/Locations.php +1 -1
- common/src/Tribe/Main.php +1 -1
- common/src/Tribe/Models/Post_Types/Base.php +201 -0
- common/src/Tribe/Models/Post_Types/Nothing.php +44 -0
- common/src/Tribe/Repository.php +9 -1
- common/src/Tribe/Rewrite.php +16 -4
- common/src/Tribe/Support.php +3 -3
- common/src/functions/utils.php +40 -0
- common/src/resources/css/common.css +109 -1
- common/src/resources/css/common.min.css +1 -1
- common/src/resources/postcss/base/_buttons.pcss +21 -0
- common/src/resources/postcss/base/typography/_body.pcss +20 -0
- common/src/resources/postcss/base/typography/_ctas.pcss +6 -1
- common/src/resources/postcss/components/buttons/_border.pcss +20 -0
- common/src/resources/postcss/components/buttons/_icon.pcss +20 -0
- common/src/resources/postcss/components/buttons/_solid.pcss +22 -0
- common/src/resources/postcss/utilities/README.md +55 -28
- common/src/resources/postcss/utilities/mixins/_typography.pcss +17 -0
- common/src/resources/postcss/utilities/variables/_box-shadows.pcss +1 -0
- common/src/resources/postcss/utilities/variables/_colors.pcss +3 -0
- common/src/resources/postcss/utilities/variables/_grids.pcss +1 -1
- common/src/resources/postcss/utilities/variables/_svgs.pcss +21 -0
- common/src/resources/postcss/utilities/variables/_z-index.pcss +4 -0
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_classmap.php +2 -0
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +7 -5
- common/vendor/composer/installed.json +6 -6
- common/vendor/lucatume/di52/src/tad/DI52/Container.php +6 -2
- event-tickets.php +4 -1
- lang/event-tickets-el.mo +0 -0
- lang/event-tickets-ru_RU.mo +0 -0
- lang/event-tickets.pot +589 -539
- readme.txt +16 -1
- src/Tribe/Admin/Move_Ticket_Types.php +23 -11
- src/Tribe/Admin/Move_Tickets.php +12 -4
- src/Tribe/Admin/Ticket_Settings.php +2 -2
- src/Tribe/Admin/Views/Ticketed.php +8 -8
- src/Tribe/Assets.php +4 -3
- src/Tribe/Attendee_Registration/Main.php +31 -0
- src/Tribe/Attendee_Registration/Template.php +5 -2
- src/Tribe/Attendees.php +1 -1
- src/Tribe/Attendees_Table.php +10 -10
- src/Tribe/CSV_Importer/Column_Names.php +10 -10
- src/Tribe/CSV_Importer/Rows.php +2 -2
- src/Tribe/Commerce/PayPal/Attendance_Totals.php +2 -1
- src/Tribe/Commerce/PayPal/Errors.php +7 -6
- src/Tribe/Commerce/PayPal/Frontend/Tickets_Form.php +2 -1
- src/Tribe/Commerce/PayPal/Main.php +1 -1
- src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php +9 -5
- src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php +2 -1
- src/Tribe/Main.php +57 -52
- src/Tribe/Metabox.php +16 -18
- src/Tribe/Plugin_Register.php +1 -1
- src/Tribe/Promoter/Observer.php +49 -9
- src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php +1 -1
- src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php +19 -19
- src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php +1 -1
- src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php +2 -2
- src/Tribe/REST/V1/Post_Repository.php +8 -4
- src/Tribe/REST/V1/Ticket_Repository.php +3 -3
- src/Tribe/RSVP.php +21 -12
- src/Tribe/RSVP/Attendance_Totals.php +1 -1
- src/Tribe/RSVP/Status/Not_Going.php +2 -2
- src/Tribe/Tickets.php +48 -34
- src/Tribe/Tickets_View.php +32 -25
- src/Tribe/Views/V2/Hooks.php +94 -0
- src/Tribe/Views/V2/Models/Tickets.php +294 -0
- src/Tribe/Views/V2/Service_Provider.php +47 -0
- src/admin-views/editor/column-body-price.php +1 -1
- src/admin-views/editor/fieldset/advanced.php +5 -5
- src/admin-views/editor/fieldset/price.php +7 -7
- src/admin-views/editor/list-row.php +6 -2
- src/admin-views/editor/list-table.php +2 -2
- src/admin-views/editor/panel/list.php +4 -4
- src/admin-views/editor/panel/settings.php +4 -3
- src/admin-views/editor/panel/ticket.php +14 -10
- src/admin-views/meta-box.php +9 -9
- src/admin-views/privacy.php +32 -9
- src/admin-views/ticket-type-history.php +1 -1
- src/admin-views/tribe-options-tickets.php +119 -113
- src/functions/views/provider.php +34 -0
- src/modules/blocks/rsvp/action-dashboard/template.js +2 -1
- src/modules/blocks/tickets/action-dashboard/template.js +3 -3
- src/resources/js/app/blocks.js +5 -4
- src/resources/js/app/blocks.min.js +1 -1
- src/resources/js/tpp.js +24 -3
- src/resources/js/tpp.min.js +1 -1
- src/template-tags/tickets.php +604 -373
- src/views/blocks/attendees/view-link.php +18 -12
- src/views/blocks/rsvp/content-inactive.php +5 -2
- src/views/blocks/rsvp/form/error.php +3 -2
- src/views/blocks/rsvp/form/quantity.php +4 -2
- src/views/blocks/rsvp/form/submit-button.php +4 -3
- src/views/blocks/rsvp/icon.php +3 -2
- src/views/blocks/rsvp/messages/success.php +3 -2
- src/views/blocks/rsvp/status/full.php +3 -2
- src/views/blocks/tickets/registration/summary/title.php +3 -2
- src/views/registration/content.php +24 -3
- src/views/tickets/email.php +10 -2
- src/views/tickets/orders-pp-tickets.php +8 -2
- src/views/tickets/orders-rsvp.php +5 -2
- src/views/tickets/orders.php +3 -2
- src/views/tickets/rsvp.php +11 -6
- src/views/tickets/tpp-success.php +10 -6
- src/views/tickets/tpp.php +11 -7
- src/views/tickets/view-link.php +21 -14
- src/views/v2/day/event/cost.php +42 -0
- src/views/v2/list/event/cost.php +42 -0
- src/views/v2/map/event-cards/event-card/event/actions/cost.php +29 -0
- src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php +35 -0
- src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php +45 -0
- src/views/v2/photo/event/cost.php +40 -0
- src/views/v2/week/grid-body/events-day/event/tooltip/cost.php +36 -0
- src/views/v2/week/mobile-events/day/event/cost.php +41 -0
- vendor/autoload.php +7 -0
- vendor/composer/ClassLoader.php +445 -0
- vendor/composer/LICENSE +21 -0
- vendor/composer/autoload_classmap.php +13 -0
- vendor/composer/autoload_namespaces.php +9 -0
- vendor/composer/autoload_psr4.php +13 -0
- vendor/composer/autoload_real.php +52 -0
- vendor/composer/autoload_static.php +54 -0
- vendor/composer/installed.json +1 -0
common/src/Tribe/Context.php
CHANGED
@@ -129,6 +129,13 @@ class Tribe__Context {
|
|
129 |
*/
|
130 |
const WP_MATCHED_QUERY = 'wp_matched_query';
|
131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
/*
|
133 |
*
|
134 |
* An array defining the properties the context will be able to read and (dangerously) write.
|
@@ -155,6 +162,7 @@ class Tribe__Context {
|
|
155 |
* method - get the value calling a method on a tribe() container binding.
|
156 |
* func - get the value from a function or a closure.
|
157 |
* filter - get the value by applying a filter.
|
|
|
158 |
*
|
159 |
* For each location additional arguments can be specified:
|
160 |
* orm_arg - if `false` then the location will never produce an ORM argument, if provided the ORM arg produced bye the
|
@@ -1450,4 +1458,36 @@ class Tribe__Context {
|
|
1450 |
|
1451 |
return $filled;
|
1452 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1453 |
}
|
129 |
*/
|
130 |
const WP_MATCHED_QUERY = 'wp_matched_query';
|
131 |
|
132 |
+
/**
|
133 |
+
* The key to indicate a location should be read by applying a callback to the value of another context location.
|
134 |
+
*
|
135 |
+
* @since 4.9.18
|
136 |
+
*/
|
137 |
+
const LOCATION_FUNC = 'location_func';
|
138 |
+
|
139 |
/*
|
140 |
*
|
141 |
* An array defining the properties the context will be able to read and (dangerously) write.
|
162 |
* method - get the value calling a method on a tribe() container binding.
|
163 |
* func - get the value from a function or a closure.
|
164 |
* filter - get the value by applying a filter.
|
165 |
+
* location_func - get the value by applying a callback to the value of a location.
|
166 |
*
|
167 |
* For each location additional arguments can be specified:
|
168 |
* orm_arg - if `false` then the location will never produce an ORM argument, if provided the ORM arg produced bye the
|
1458 |
|
1459 |
return $filled;
|
1460 |
}
|
1461 |
+
|
1462 |
+
/**
|
1463 |
+
* Convenience method to get and check if a location has a truthy value or not.
|
1464 |
+
*
|
1465 |
+
* @since 4.9.18
|
1466 |
+
*
|
1467 |
+
* @param string $flag_key The location to check.
|
1468 |
+
* @param bool $default The default value to return if the location is not set.
|
1469 |
+
*
|
1470 |
+
* @return bool Whether the location has a truthy value or not.
|
1471 |
+
*/
|
1472 |
+
public function is( $flag_key, $default = false ) {
|
1473 |
+
$val = $this->get( $flag_key, $default );
|
1474 |
+
|
1475 |
+
return ! empty( $val ) || tribe_is_truthy( $val );
|
1476 |
+
}
|
1477 |
+
|
1478 |
+
/**
|
1479 |
+
* Reads the value from one callback, passing it the value of another Context location.
|
1480 |
+
*
|
1481 |
+
* @since 4.9.18
|
1482 |
+
*
|
1483 |
+
* @param array $location_and_callback An array of two elements: the location key and the callback to call on the
|
1484 |
+
* location value. The callback will receive the location value as argument.
|
1485 |
+
*
|
1486 |
+
* @return mixed The return value of the callback, called on the location value.
|
1487 |
+
*/
|
1488 |
+
public function location_func( array $location_and_callback ) {
|
1489 |
+
list( $location, $callback ) = $location_and_callback;
|
1490 |
+
|
1491 |
+
return $callback( $this->get( $location ) );
|
1492 |
+
}
|
1493 |
}
|
common/src/Tribe/Context/locations.php
CHANGED
@@ -67,4 +67,11 @@ return [
|
|
67 |
Tribe__Context::QUERY_VAR => [ 'name', 'post_name' ],
|
68 |
],
|
69 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
];
|
67 |
Tribe__Context::QUERY_VAR => [ 'name', 'post_name' ],
|
68 |
],
|
69 |
],
|
70 |
+
'post_type' => [
|
71 |
+
'read' => [
|
72 |
+
Tribe__Context::QUERY_PROP => 'post_type',
|
73 |
+
Tribe__Context::QUERY_VAR => 'post_type',
|
74 |
+
Tribe__Context::REQUEST_VAR => 'post_type',
|
75 |
+
],
|
76 |
+
],
|
77 |
];
|
common/src/Tribe/Languages/Locations.php
CHANGED
@@ -182,7 +182,6 @@ class Tribe__Languages__Locations {
|
|
182 |
'LT' => esc_html__( 'Lithuania', 'tribe-common' ),
|
183 |
'LU' => esc_html__( 'Luxembourg', 'tribe-common' ),
|
184 |
'MO' => esc_html__( 'Macau', 'tribe-common' ),
|
185 |
-
'MK' => esc_html__( 'Macedonia', 'tribe-common' ),
|
186 |
'MG' => esc_html__( 'Madagascar', 'tribe-common' ),
|
187 |
'MW' => esc_html__( 'Malawi', 'tribe-common' ),
|
188 |
'MY' => esc_html__( 'Malaysia', 'tribe-common' ),
|
@@ -215,6 +214,7 @@ class Tribe__Languages__Locations {
|
|
215 |
'NG' => esc_html__( 'Nigeria', 'tribe-common' ),
|
216 |
'NU' => esc_html__( 'Niue', 'tribe-common' ),
|
217 |
'NF' => esc_html__( 'Norfolk Island', 'tribe-common' ),
|
|
|
218 |
'MP' => esc_html__( 'Northern Mariana Islands', 'tribe-common' ),
|
219 |
'NO' => esc_html__( 'Norway', 'tribe-common' ),
|
220 |
'OM' => esc_html__( 'Oman', 'tribe-common' ),
|
182 |
'LT' => esc_html__( 'Lithuania', 'tribe-common' ),
|
183 |
'LU' => esc_html__( 'Luxembourg', 'tribe-common' ),
|
184 |
'MO' => esc_html__( 'Macau', 'tribe-common' ),
|
|
|
185 |
'MG' => esc_html__( 'Madagascar', 'tribe-common' ),
|
186 |
'MW' => esc_html__( 'Malawi', 'tribe-common' ),
|
187 |
'MY' => esc_html__( 'Malaysia', 'tribe-common' ),
|
214 |
'NG' => esc_html__( 'Nigeria', 'tribe-common' ),
|
215 |
'NU' => esc_html__( 'Niue', 'tribe-common' ),
|
216 |
'NF' => esc_html__( 'Norfolk Island', 'tribe-common' ),
|
217 |
+
'MK' => esc_html__( 'North Macedonia', 'tribe-common' ),
|
218 |
'MP' => esc_html__( 'Northern Mariana Islands', 'tribe-common' ),
|
219 |
'NO' => esc_html__( 'Norway', 'tribe-common' ),
|
220 |
'OM' => esc_html__( 'Oman', 'tribe-common' ),
|
common/src/Tribe/Main.php
CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
|
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
-
const VERSION = '4.9.
|
21 |
|
22 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
23 |
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
+
const VERSION = '4.9.18';
|
21 |
|
22 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
23 |
|
common/src/Tribe/Models/Post_Types/Base.php
ADDED
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The base, abstract, class modeling a post.
|
4 |
+
*
|
5 |
+
* @since 4.9.18
|
6 |
+
*
|
7 |
+
* @package Tribe\Models\Post_Types
|
8 |
+
*/
|
9 |
+
|
10 |
+
|
11 |
+
namespace Tribe\Models\Post_Types;
|
12 |
+
|
13 |
+
use Tribe__Cache as Cache;
|
14 |
+
use Tribe__Cache_Listener as Cache_Listener;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class Base
|
18 |
+
*
|
19 |
+
* @since 4.9.18
|
20 |
+
*
|
21 |
+
* @package Tribe\Models\Post_Types
|
22 |
+
*/
|
23 |
+
abstract class Base {
|
24 |
+
/**
|
25 |
+
* The post object base for this post type instance.
|
26 |
+
*
|
27 |
+
* @since 4.9.18
|
28 |
+
*
|
29 |
+
* @var \WP_Post
|
30 |
+
*/
|
31 |
+
protected $post;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Builds, and returns, a post type model from a given post.
|
35 |
+
*
|
36 |
+
* @since 4.9.18
|
37 |
+
*
|
38 |
+
* @param \WP_Post|int $post The post ID or post object.
|
39 |
+
*
|
40 |
+
* @return Base|Nothing Either the built Post Type model, or a Nothing model if the post does not exist.
|
41 |
+
*/
|
42 |
+
public static function from_post( $post ) {
|
43 |
+
$post = get_post( $post );
|
44 |
+
|
45 |
+
if ( ! $post instanceof \WP_Post ) {
|
46 |
+
return new Nothing();
|
47 |
+
}
|
48 |
+
|
49 |
+
$instance = new static;
|
50 |
+
$instance->post = $post;
|
51 |
+
|
52 |
+
return $instance;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Returns the slug that will be prefixed to the cache key for the model.
|
57 |
+
*
|
58 |
+
* @since 4.9.18
|
59 |
+
*
|
60 |
+
* @return string The slug that will be prefixed to the cache key for the model.
|
61 |
+
*/
|
62 |
+
abstract protected function get_cache_slug();
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Returns the cached model properties for the specified filter, if any.
|
66 |
+
*
|
67 |
+
* @since 4.9.18
|
68 |
+
*
|
69 |
+
* @param string $filter Type of filter to apply, used here as the stored post values might change.
|
70 |
+
*
|
71 |
+
* @return array|false An array of model properties, or `false` if not found.
|
72 |
+
*/
|
73 |
+
protected function get_cached_properties( $filter ) {
|
74 |
+
$cache_slug = $this->get_cache_slug();
|
75 |
+
|
76 |
+
if ( empty( $cache_slug ) ) {
|
77 |
+
return false;
|
78 |
+
}
|
79 |
+
|
80 |
+
// Cache by post ID and filter.
|
81 |
+
$cache_key = $cache_slug . '_' . $this->post->ID . '_' . $filter;
|
82 |
+
|
83 |
+
return ( new Cache() )->get( $cache_key, Cache_Listener::TRIGGER_SAVE_POST );
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Builds and returns the properties for the model.
|
88 |
+
*
|
89 |
+
* In this method child classes should also implement any caching trigger mechanism, if any.
|
90 |
+
*
|
91 |
+
* @since 4.9.18
|
92 |
+
*
|
93 |
+
* @param string $filter The type of filter to build the properties for.
|
94 |
+
*
|
95 |
+
* @return array An array of built properties.
|
96 |
+
*/
|
97 |
+
abstract protected function build_properties( $filter );
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Returns an array of the model properties.
|
101 |
+
*
|
102 |
+
* @since 4.9.18
|
103 |
+
*
|
104 |
+
* @param string $filter The type of filter to get the properties for.
|
105 |
+
*
|
106 |
+
* @return array The model properties. This value might be cached.
|
107 |
+
*/
|
108 |
+
protected function get_properties( $filter ) {
|
109 |
+
$cached = $this->get_cached_properties( $filter);
|
110 |
+
|
111 |
+
if ( false !== $cached ) {
|
112 |
+
return $cached;
|
113 |
+
}
|
114 |
+
|
115 |
+
$props = $this->build_properties( $filter );
|
116 |
+
|
117 |
+
$cache_slug = $this->get_cache_slug();
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Filters the array of properties that will be used to decorate the post object handled by the class.
|
121 |
+
*
|
122 |
+
* @since 4.9.18
|
123 |
+
*
|
124 |
+
* @param array $props An associative array of all the properties that will be set on the "decorated" post
|
125 |
+
* object.
|
126 |
+
* @param \WP_Post $post The post object handled by the class.
|
127 |
+
*/
|
128 |
+
$props = apply_filters( "tribe_post_type_{$cache_slug}_properties", $props, $this->post );
|
129 |
+
|
130 |
+
return $props;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Returns the WP_Post version of this model.
|
135 |
+
*
|
136 |
+
* @since 4.9.18
|
137 |
+
*
|
138 |
+
* @param string $output The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a WP_Post
|
139 |
+
* object,an associative array, or a numeric array, respectively.
|
140 |
+
* @param string $filter Type of filter to apply. Accepts 'raw', 'edit', 'db', or 'display' and other formats
|
141 |
+
* supported by the specific type implementation.
|
142 |
+
*
|
143 |
+
* @return \WP_Post|array|null The post object version of this post type model or `null` if the post is not valid.
|
144 |
+
*/
|
145 |
+
public function to_post( $output = OBJECT, $filter = 'raw' ) {
|
146 |
+
$properties = $this->get_properties( $filter );
|
147 |
+
|
148 |
+
// Clone the post to avoid side effects.
|
149 |
+
$post = clone $this->post;
|
150 |
+
|
151 |
+
// And decorate the clone with the properties.
|
152 |
+
foreach ( $properties as $key => $value ) {
|
153 |
+
$post->{$key} = $value;
|
154 |
+
}
|
155 |
+
|
156 |
+
switch ( $output ) {
|
157 |
+
case ARRAY_A:
|
158 |
+
return (array) $post;
|
159 |
+
case ARRAY_N:
|
160 |
+
return array_values( (array) $post );
|
161 |
+
case OBJECT:
|
162 |
+
default;
|
163 |
+
return $post;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Returns the closure that should be used to cache the post type model when, and if, caching it is required.
|
169 |
+
*
|
170 |
+
* @since 4.9.18
|
171 |
+
*
|
172 |
+
* @param string $filter The kind of filter applied to the model.
|
173 |
+
*
|
174 |
+
* @return callable The closure, or callable, that should be used to cache this model when, and if, required.
|
175 |
+
*/
|
176 |
+
protected function get_caching_callback( $filter ) {
|
177 |
+
$cache_slug = $this->get_cache_slug();
|
178 |
+
|
179 |
+
if ( empty( $cache_slug ) ) {
|
180 |
+
return '__return_true';
|
181 |
+
}
|
182 |
+
|
183 |
+
// Cache by post ID and filter.
|
184 |
+
$cache_key = $cache_slug . '_' . $this->post->ID . '_' . $filter;
|
185 |
+
$cache = new Cache();
|
186 |
+
|
187 |
+
// Define a function to cache this event when, and if, one of the lazy properties is loaded.
|
188 |
+
$callback = function () use ( $cache, $cache_key, $filter )
|
189 |
+
{
|
190 |
+
$properties = $this->get_properties( $filter );
|
191 |
+
|
192 |
+
/*
|
193 |
+
* Cache without expiration, but only until a post of the types managed by The Events Calendar is
|
194 |
+
* updated or created.
|
195 |
+
*/
|
196 |
+
$cache->set( $cache_key, $properties, 0, Cache_Listener::TRIGGER_SAVE_POST );
|
197 |
+
};
|
198 |
+
|
199 |
+
return $callback;
|
200 |
+
}
|
201 |
+
}
|
common/src/Tribe/Models/Post_Types/Nothing.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Models a non existing post.
|
4 |
+
*
|
5 |
+
* The reason for this class existence is to allow method chaining to happen without errors and to return a consistent
|
6 |
+
* model type from methods.
|
7 |
+
*
|
8 |
+
* @since 4.9.18
|
9 |
+
*
|
10 |
+
* @package Tribe\Models\Post_Types
|
11 |
+
*/
|
12 |
+
|
13 |
+
namespace Tribe\Models\Post_Types;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class Nothing
|
17 |
+
*
|
18 |
+
* @since 4.9.18
|
19 |
+
*
|
20 |
+
* @package Tribe\Models\Post_Types
|
21 |
+
*/
|
22 |
+
class Nothing extends Base {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* {@inheritDoc}
|
26 |
+
*/
|
27 |
+
protected function get_cache_slug() {
|
28 |
+
return '';
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* {@inheritDoc}
|
33 |
+
*/
|
34 |
+
protected function build_properties( $filter ) {
|
35 |
+
return [];
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* {@inheritDoc}
|
40 |
+
*/
|
41 |
+
public function to_post( $output = OBJECT, $filter = 'raw' ) {
|
42 |
+
return null;
|
43 |
+
}
|
44 |
+
}
|
common/src/Tribe/Repository.php
CHANGED
@@ -833,6 +833,10 @@ abstract class Tribe__Repository
|
|
833 |
if ( ! empty( $query->request ) ) {
|
834 |
$ids = $this->get_ids();
|
835 |
|
|
|
|
|
|
|
|
|
836 |
return $return_id ? reset( $ids ) : $this->format_item( reset( $ids ) );
|
837 |
}
|
838 |
|
@@ -893,6 +897,10 @@ abstract class Tribe__Repository
|
|
893 |
if ( ! empty( $query->request ) ) {
|
894 |
$ids = $this->get_ids();
|
895 |
|
|
|
|
|
|
|
|
|
896 |
return $return_id ? end( $ids ) : $this->format_item( end( $ids ) );
|
897 |
}
|
898 |
|
@@ -2783,7 +2791,7 @@ abstract class Tribe__Repository
|
|
2783 |
|
2784 |
$created = call_user_func( $this->get_create_callback( $postarr ), $postarr );
|
2785 |
|
2786 |
-
$post =
|
2787 |
|
2788 |
return $post instanceof WP_Post && $post->ID === $created ? $post : false;
|
2789 |
}
|
833 |
if ( ! empty( $query->request ) ) {
|
834 |
$ids = $this->get_ids();
|
835 |
|
836 |
+
if ( empty( $ids ) ) {
|
837 |
+
return null;
|
838 |
+
}
|
839 |
+
|
840 |
return $return_id ? reset( $ids ) : $this->format_item( reset( $ids ) );
|
841 |
}
|
842 |
|
897 |
if ( ! empty( $query->request ) ) {
|
898 |
$ids = $this->get_ids();
|
899 |
|
900 |
+
if ( empty( $ids ) ) {
|
901 |
+
return null;
|
902 |
+
}
|
903 |
+
|
904 |
return $return_id ? end( $ids ) : $this->format_item( end( $ids ) );
|
905 |
}
|
906 |
|
2791 |
|
2792 |
$created = call_user_func( $this->get_create_callback( $postarr ), $postarr );
|
2793 |
|
2794 |
+
$post = $this->format_item( $created );
|
2795 |
|
2796 |
return $post instanceof WP_Post && $post->ID === $created ? $post : false;
|
2797 |
}
|
common/src/Tribe/Rewrite.php
CHANGED
@@ -558,13 +558,25 @@ class Tribe__Rewrite {
|
|
558 |
// While this is specific to The Events Calendar we're handling a small enough post type base to keep it here.
|
559 |
$pattern = '/post_type=tribe_(events|venue|organizer)/';
|
560 |
// Reverse the rules to try and match the most complex first.
|
561 |
-
$rules
|
562 |
-
$
|
563 |
static function ( $rule_query_string ) use ( $pattern ) {
|
564 |
return preg_match( $pattern, $rule_query_string );
|
565 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
566 |
|
567 |
-
return $
|
568 |
}
|
569 |
|
570 |
/**
|
558 |
// While this is specific to The Events Calendar we're handling a small enough post type base to keep it here.
|
559 |
$pattern = '/post_type=tribe_(events|venue|organizer)/';
|
560 |
// Reverse the rules to try and match the most complex first.
|
561 |
+
$rules = isset( $this->rewrite->rules ) ? (array) $this->rewrite->rules : [];
|
562 |
+
$our_rules = array_filter( $rules,
|
563 |
static function ( $rule_query_string ) use ( $pattern ) {
|
564 |
return preg_match( $pattern, $rule_query_string );
|
565 |
+
}
|
566 |
+
);
|
567 |
+
|
568 |
+
/**
|
569 |
+
* Filters the list of rewrite rules handled by our code to add or remove some as required.
|
570 |
+
*
|
571 |
+
* @since 4.9.18
|
572 |
+
*
|
573 |
+
* @param array $our_rules An array of rewrite rules handled by our code, in the shape
|
574 |
+
* `[ <rewrite_rule_regex_pattern> => <query_string> ]`.
|
575 |
+
* E.g. `[ '(?:events)/(?:list)/?$' => 'index.php?post_type=tribe_events&eventDisplay=list' ]`.
|
576 |
+
*/
|
577 |
+
$our_rules = apply_filters( 'tribe_rewrite_handled_rewrite_rules', $our_rules );
|
578 |
|
579 |
+
return $our_rules;
|
580 |
}
|
581 |
|
582 |
/**
|
common/src/Tribe/Support.php
CHANGED
@@ -87,7 +87,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
|
|
87 |
$plugin .= sprintf( ' by %s', $plugin_details['Author'] );
|
88 |
}
|
89 |
if ( ! empty( $plugin_details['AuthorURI'] ) ) {
|
90 |
-
$plugin .= sprintf( '(%s)', $plugin_details['AuthorURI'] );
|
91 |
}
|
92 |
$plugins[] = $plugin;
|
93 |
}
|
@@ -106,7 +106,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
|
|
106 |
$plugin .= sprintf( ' by %s', $plugin_details['Author'] );
|
107 |
}
|
108 |
if ( ! empty( $plugin_details['AuthorURI'] ) ) {
|
109 |
-
$plugin .= sprintf( '(%s)', $plugin_details['AuthorURI'] );
|
110 |
}
|
111 |
$network_plugins[] = $plugin;
|
112 |
}
|
@@ -124,7 +124,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
|
|
124 |
$plugin .= sprintf( ' by %s', $v['Author'] );
|
125 |
}
|
126 |
if ( ! empty( $v['AuthorURI'] ) ) {
|
127 |
-
$plugin .= sprintf( '(%s)', $v['AuthorURI'] );
|
128 |
}
|
129 |
$mu_plugins[] = $plugin;
|
130 |
}
|
87 |
$plugin .= sprintf( ' by %s', $plugin_details['Author'] );
|
88 |
}
|
89 |
if ( ! empty( $plugin_details['AuthorURI'] ) ) {
|
90 |
+
$plugin .= sprintf( ' (%s)', $plugin_details['AuthorURI'] );
|
91 |
}
|
92 |
$plugins[] = $plugin;
|
93 |
}
|
106 |
$plugin .= sprintf( ' by %s', $plugin_details['Author'] );
|
107 |
}
|
108 |
if ( ! empty( $plugin_details['AuthorURI'] ) ) {
|
109 |
+
$plugin .= sprintf( ' (%s)', $plugin_details['AuthorURI'] );
|
110 |
}
|
111 |
$network_plugins[] = $plugin;
|
112 |
}
|
124 |
$plugin .= sprintf( ' by %s', $v['Author'] );
|
125 |
}
|
126 |
if ( ! empty( $v['AuthorURI'] ) ) {
|
127 |
+
$plugin .= sprintf( ' (%s)', $v['AuthorURI'] );
|
128 |
}
|
129 |
$mu_plugins[] = $plugin;
|
130 |
}
|
common/src/functions/utils.php
CHANGED
@@ -636,4 +636,44 @@ if ( ! function_exists( 'tribe_register_rest_route' ) ) {
|
|
636 |
$args = apply_filters( 'tribe_register_rest_route_args', $args, $namespace, $route, $override );
|
637 |
return register_rest_route( $namespace, $route, $args, $override );
|
638 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
}
|
636 |
$args = apply_filters( 'tribe_register_rest_route_args', $args, $namespace, $route, $override );
|
637 |
return register_rest_route( $namespace, $route, $args, $override );
|
638 |
}
|
639 |
+
}
|
640 |
+
|
641 |
+
if ( ! function_exists( 'tribe_get_request_vars' ) ) {
|
642 |
+
/**
|
643 |
+
* Returns the sanitized version of the `$_REQUEST` super-global array.
|
644 |
+
*
|
645 |
+
* Note: the return value is cached. It will be resolve the first time the function is called, per HTTP request,
|
646 |
+
* then the same return value will be returned. After the function has been called the first time, changes to the
|
647 |
+
* `$_REQUEST` super-global will NOT be reflected in the function return value.
|
648 |
+
* Call the function with `$refresh` set to `true` to refresh the function value.
|
649 |
+
*
|
650 |
+
* @since 4.9.18
|
651 |
+
*
|
652 |
+
* @param bool $refresh Whether to parse the `$_REQUEST` cache again and refresh the cache or not; defaults to
|
653 |
+
* `false`.
|
654 |
+
*
|
655 |
+
* @return array The sanitized version of the `$_REQUEST` super-global.
|
656 |
+
*/
|
657 |
+
function tribe_get_request_vars( $refresh = false ) {
|
658 |
+
static $cache;
|
659 |
+
|
660 |
+
if ( ! isset( $_REQUEST ) ) {
|
661 |
+
return [];
|
662 |
+
}
|
663 |
+
|
664 |
+
if ( null !== $cache && ! $refresh ) {
|
665 |
+
return $cache;
|
666 |
+
}
|
667 |
+
|
668 |
+
$cache = array_combine(
|
669 |
+
array_keys( $_REQUEST ),
|
670 |
+
array_map( static function ( $v )
|
671 |
+
{
|
672 |
+
return filter_var( $v, FILTER_SANITIZE_STRING );
|
673 |
+
},
|
674 |
+
$_REQUEST )
|
675 |
+
);
|
676 |
+
|
677 |
+
return $cache;
|
678 |
+
}
|
679 |
}
|
common/src/resources/css/common.css
CHANGED
@@ -423,6 +423,10 @@
|
|
423 |
* Anchor - Thin
|
424 |
* ----------------------------------------------------------------------------- */
|
425 |
|
|
|
|
|
|
|
|
|
426 |
/* -----------------------------------------------------------------------------
|
427 |
* Button - Global
|
428 |
* ----------------------------------------------------------------------------- */
|
@@ -1299,6 +1303,14 @@
|
|
1299 |
* Body 1 for --viewport-medium
|
1300 |
* ------------------------------------------------------------------------- */
|
1301 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1302 |
.tribe-common {
|
1303 |
|
1304 |
/* -------------------------------------------------------------------------
|
@@ -1348,12 +1360,27 @@
|
|
1348 |
color: #334AFF;
|
1349 |
}
|
1350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1351 |
/* -------------------------------------------------------------------------
|
1352 |
* Theme Overrides - Twenty Seventeen
|
1353 |
* ------------------------------------------------------------------------- */
|
1354 |
|
1355 |
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,
|
1356 |
-
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus
|
|
|
|
|
1357 |
color: #334AFF;
|
1358 |
}
|
1359 |
|
@@ -1649,6 +1676,15 @@
|
|
1649 |
padding: 0;
|
1650 |
}
|
1651 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1652 |
/* -------------------------------------------------------------------------
|
1653 |
* Button
|
1654 |
* ------------------------------------------------------------------------- */
|
@@ -1664,6 +1700,15 @@
|
|
1664 |
background-color: transparent;
|
1665 |
}
|
1666 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1667 |
/* -----------------------------------------------------------------------------
|
1668 |
*
|
1669 |
* Layout: Global Content Container
|
@@ -1816,6 +1861,15 @@
|
|
1816 |
|
1817 |
/* Buttons */
|
1818 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1819 |
/* -----------------------------------------------------------------------------
|
1820 |
*
|
1821 |
* Button: Border
|
@@ -1875,6 +1929,23 @@
|
|
1875 |
color: #D5D5D5
|
1876 |
}
|
1877 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1878 |
/* -----------------------------------------------------------------------------
|
1879 |
*
|
1880 |
* Button: Icon
|
@@ -2004,6 +2075,23 @@
|
|
2004 |
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E");
|
2005 |
}
|
2006 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007 |
/* -----------------------------------------------------------------------------
|
2008 |
*
|
2009 |
* Button: Solid
|
@@ -2054,6 +2142,16 @@
|
|
2054 |
background-color: rgba(51,74,255, 0.07);
|
2055 |
}
|
2056 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2057 |
/* -----------------------------------------------------------------------------
|
2058 |
*
|
2059 |
* Component: Image
|
@@ -2146,6 +2244,16 @@
|
|
2146 |
line-height: 1.62
|
2147 |
}
|
2148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2149 |
.tribe-common .tribe-common-h1 {
|
2150 |
font-size: 42px;
|
2151 |
line-height: 1.38
|
423 |
* Anchor - Thin
|
424 |
* ----------------------------------------------------------------------------- */
|
425 |
|
426 |
+
/* -----------------------------------------------------------------------------
|
427 |
+
* Anchor - Thin
|
428 |
+
* ----------------------------------------------------------------------------- */
|
429 |
+
|
430 |
/* -----------------------------------------------------------------------------
|
431 |
* Button - Global
|
432 |
* ----------------------------------------------------------------------------- */
|
1303 |
* Body 1 for --viewport-medium
|
1304 |
* ------------------------------------------------------------------------- */
|
1305 |
|
1306 |
+
/* -------------------------------------------------------------------------
|
1307 |
+
* Body 2 for --viewport-medium
|
1308 |
+
* ------------------------------------------------------------------------- */
|
1309 |
+
|
1310 |
+
/* -------------------------------------------------------------------------
|
1311 |
+
* Body 3 for --viewport-medium
|
1312 |
+
* ------------------------------------------------------------------------- */
|
1313 |
+
|
1314 |
.tribe-common {
|
1315 |
|
1316 |
/* -------------------------------------------------------------------------
|
1360 |
color: #334AFF;
|
1361 |
}
|
1362 |
|
1363 |
+
.tribe-common .tribe-common-cta--thin-alt {
|
1364 |
+
border-bottom: 1px solid #334AFF;
|
1365 |
+
color: #141827;
|
1366 |
+
transition: color 0.2s ease;
|
1367 |
+
}
|
1368 |
+
|
1369 |
+
.tribe-common .tribe-common-cta--thin-alt:active,
|
1370 |
+
.tribe-common .tribe-common-cta--thin-alt:focus,
|
1371 |
+
.tribe-common .tribe-common-cta--thin-alt:hover {
|
1372 |
+
border-bottom: 1px solid #334AFF;
|
1373 |
+
color: #334AFF;
|
1374 |
+
}
|
1375 |
+
|
1376 |
/* -------------------------------------------------------------------------
|
1377 |
* Theme Overrides - Twenty Seventeen
|
1378 |
* ------------------------------------------------------------------------- */
|
1379 |
|
1380 |
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,
|
1381 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,
|
1382 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover,
|
1383 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus {
|
1384 |
color: #334AFF;
|
1385 |
}
|
1386 |
|
1676 |
padding: 0;
|
1677 |
}
|
1678 |
|
1679 |
+
.tribe-common {
|
1680 |
+
|
1681 |
+
/* -------------------------------------------------------------------------
|
1682 |
+
*
|
1683 |
+
* Button: Theme Overrides
|
1684 |
+
*
|
1685 |
+
* ------------------------------------------------------------------------- */
|
1686 |
+
}
|
1687 |
+
|
1688 |
/* -------------------------------------------------------------------------
|
1689 |
* Button
|
1690 |
* ------------------------------------------------------------------------- */
|
1700 |
background-color: transparent;
|
1701 |
}
|
1702 |
|
1703 |
+
/* -------------------------------------------------------------------------
|
1704 |
+
* Theme Overrides - Twenty Seventeen
|
1705 |
+
* ------------------------------------------------------------------------- */
|
1706 |
+
|
1707 |
+
.tribe-theme-twentyseventeen .tribe-common button:hover,
|
1708 |
+
.tribe-theme-twentyseventeen .tribe-common button:focus {
|
1709 |
+
background-color: transparent;
|
1710 |
+
}
|
1711 |
+
|
1712 |
/* -----------------------------------------------------------------------------
|
1713 |
*
|
1714 |
* Layout: Global Content Container
|
1861 |
|
1862 |
/* Buttons */
|
1863 |
|
1864 |
+
.tribe-common {
|
1865 |
+
|
1866 |
+
/* -------------------------------------------------------------------------
|
1867 |
+
*
|
1868 |
+
* Button: Border - Theme Overrides
|
1869 |
+
*
|
1870 |
+
* ------------------------------------------------------------------------- */
|
1871 |
+
}
|
1872 |
+
|
1873 |
/* -----------------------------------------------------------------------------
|
1874 |
*
|
1875 |
* Button: Border
|
1929 |
color: #D5D5D5
|
1930 |
}
|
1931 |
|
1932 |
+
/* -------------------------------------------------------------------------
|
1933 |
+
* Theme Overrides - Twenty Seventeen
|
1934 |
+
* ------------------------------------------------------------------------- */
|
1935 |
+
|
1936 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover {
|
1937 |
+
background-color: #FFFFFF;
|
1938 |
+
}
|
1939 |
+
|
1940 |
+
.tribe-common {
|
1941 |
+
|
1942 |
+
/* -------------------------------------------------------------------------
|
1943 |
+
*
|
1944 |
+
* Button: Icon Border - Theme Overrides
|
1945 |
+
*
|
1946 |
+
* ------------------------------------------------------------------------- */
|
1947 |
+
}
|
1948 |
+
|
1949 |
/* -----------------------------------------------------------------------------
|
1950 |
*
|
1951 |
* Button: Icon
|
2075 |
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E");
|
2076 |
}
|
2077 |
|
2078 |
+
/* -------------------------------------------------------------------------
|
2079 |
+
* Theme Overrides - Twenty Seventeen
|
2080 |
+
* ------------------------------------------------------------------------- */
|
2081 |
+
|
2082 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover {
|
2083 |
+
background-color: #FFFFFF;
|
2084 |
+
}
|
2085 |
+
|
2086 |
+
.tribe-common {
|
2087 |
+
|
2088 |
+
/* -------------------------------------------------------------------------
|
2089 |
+
*
|
2090 |
+
* Button: Solid - Theme Overrides
|
2091 |
+
*
|
2092 |
+
* ------------------------------------------------------------------------- */
|
2093 |
+
}
|
2094 |
+
|
2095 |
/* -----------------------------------------------------------------------------
|
2096 |
*
|
2097 |
* Button: Solid
|
2142 |
background-color: rgba(51,74,255, 0.07);
|
2143 |
}
|
2144 |
|
2145 |
+
/* -------------------------------------------------------------------------
|
2146 |
+
* Theme Overrides - Twenty Seventeen
|
2147 |
+
* ------------------------------------------------------------------------- */
|
2148 |
+
|
2149 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover,
|
2150 |
+
.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus {
|
2151 |
+
background-color: rgba(51,74,255, 0.8);
|
2152 |
+
color: #FFFFFF;
|
2153 |
+
}
|
2154 |
+
|
2155 |
/* -----------------------------------------------------------------------------
|
2156 |
*
|
2157 |
* Component: Image
|
2244 |
line-height: 1.62
|
2245 |
}
|
2246 |
|
2247 |
+
.tribe-common .tribe-common-b2--min-medium {
|
2248 |
+
font-size: 14px;
|
2249 |
+
line-height: 1.62
|
2250 |
+
}
|
2251 |
+
|
2252 |
+
.tribe-common .tribe-common-b3--min-medium {
|
2253 |
+
font-size: 12px;
|
2254 |
+
line-height: 1.38
|
2255 |
+
}
|
2256 |
+
|
2257 |
.tribe-common .tribe-common-h1 {
|
2258 |
font-size: 42px;
|
2259 |
line-height: 1.38
|
common/src/resources/css/common.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;vertical-align:middle;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border:1px solid #141827}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23FFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{display:inline-block}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5;height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5;padding:12px 28px 12px 0;width:100%}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}.tribe-common .tribe-common-form-control-toggle{line-height:0}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#d5d5d5;cursor:pointer;display:inline-block;vertical-align:middle;width:40px}.tribe-common .tribe-common-form-control-toggle__input:after{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;top:-5px;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked:after{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-common a{cursor:pointer}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a{text-decoration:none}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover{color:#334aff}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover{color:#334aff}.tribe-common .tribe-common-h1{font-size:28px}.tribe-common .tribe-common-h1,.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-common .tribe-common-h2{font-size:24px}.tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-common .tribe-common-h3,.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:28px}.tribe-theme-avada #main .tribe-common .tribe-common-h1,.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:24px}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h3,.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.tribe-common button{border:none;padding:0}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover{background-color:transparent}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common .tribe-common-svgicon{background-repeat:no-repeat;background-size:contain}.tribe-common .tribe-common-svgicon--day{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zM14.18 14.53v1.747c0 .482.39.874.873.874H16.8a.873.873 0 0 0 .873-.874V14.53a.873.873 0 0 0-.873-.873h-1.747a.873.873 0 0 0-.873.873z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--list{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zm-18.045.936a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827'%3E%3Cpath stroke-linejoin='round' d='M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016'/%3E%3Cpath d='M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z' stroke-width='.4' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath d='M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z' stroke-width='.7' fill='%23000' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--month{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='22' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.637 1.063v19.879c0 .276.189.5.422.5h20.037c.232 0 .421-.224.421-.5V1.062c0-.275-.189-.5-.421-.5H1.059c-.233 0-.422.225-.422.5zM1.787 2H20.34v2.685H1.787V2zm0 4H20.34v14H1.787V6zM8 8.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-8 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-12 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--photo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714a.51.51 0 0 0 .52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z'/%3E%3Cpath d='M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--week{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zm6.25 6.537v1.006c0 .278.224.503.502.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H7.908a.503.503 0 0 0-.503.502zm4.022 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H11.93a.503.503 0 0 0-.503.502zm4.023 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502h-1.006a.503.503 0 0 0-.503.502zm-12.069 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H3.885a.503.503 0 0 0-.503.502z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E");height:10px;width:8px}.tribe-common .tribe-common-svgicon--recurring{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E");height:10px;width:10px}.tribe-common .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide,.tribe-common .tribe-common-a11y-visual-show{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease;color:#727272;padding:14px 20px;width:100%}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border:active,.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#141827}.tribe-common .tribe-common-c-btn-border:disabled,.tribe-common a.tribe-common-c-btn-border:disabled{color:#d5d5d5}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--border{background-color:#fff;border:1px solid #d5d5d5;align-items:center;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-icon--caret-left:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-left:active:before,.tribe-common .tribe-common-c-btn-icon--caret-left:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-left:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-right:active:before,.tribe-common .tribe-common-c-btn-icon--caret-right:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-right:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");height:20px;width:24px}.tribe-common .tribe-common-c-btn-icon--filters:active:before,.tribe-common .tribe-common-c-btn-icon--filters:focus:before,.tribe-common .tribe-common-c-btn-icon--filters:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23D5D5D5' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");height:20px;width:20px}.tribe-common .tribe-common-c-btn-icon--search:active:before,.tribe-common .tribe-common-c-btn-icon--search:focus:before,.tribe-common .tribe-common-c-btn-icon--search:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;background-color:#334aff;padding:11px 20px;width:100%}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0;padding:20px 20px 20px 40px}.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{width:auto}}
|
1 |
+
.tribe-common figure{line-height:0}.tribe-common figcaption{line-height:normal}.tribe-common a{background-color:transparent;-webkit-text-decoration-skip:objects}.tribe-common abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tribe-common code,.tribe-common kbd,.tribe-common pre,.tribe-common samp{font-family:monospace;font-size:1em}.tribe-common b,.tribe-common strong{font-weight:inherit;font-weight:bolder}.tribe-common dfn{font-style:italic}.tribe-common mark{background-color:#ff0;color:#000}.tribe-common small{font-size:80%}.tribe-common sub,.tribe-common sup{font-size:75%;line-height:0}.tribe-common hr{border:0;height:0}.tribe-common button,.tribe-common input[type=button],.tribe-common input[type=email],.tribe-common input[type=password],.tribe-common input[type=reset],.tribe-common input[type=search],.tribe-common input[type=submit],.tribe-common input[type=text],.tribe-common input[type=url],.tribe-common textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tribe-common button,.tribe-common input,.tribe-common optgroup,.tribe-common select,.tribe-common textarea{color:inherit;font:inherit;line-height:normal;-webkit-font-smoothing:antialiased}.tribe-common button,.tribe-common input,.tribe-common select,.tribe-common textarea{outline:0;border-radius:0}.tribe-common select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.tribe-common optgroup{font-weight:700}.tribe-common ol,.tribe-common ul{list-style:none}.tribe-common h1,.tribe-common h2,.tribe-common h3,.tribe-common h4,.tribe-common h5,.tribe-common h6,.tribe-common p{font-weight:400;text-rendering:optimizeLegibility}.tribe-common .tribe-common-form-control-checkbox,.tribe-common .tribe-common-form-control-radio{line-height:0}.tribe-common .tribe-common-form-control-checkbox__label,.tribe-common .tribe-common-form-control-radio__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-checkbox__input,.tribe-common .tribe-common-form-control-radio__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border:1px solid #141827;cursor:pointer;display:inline-block;height:20px;margin:0;position:relative;vertical-align:middle;width:20px}.tribe-common .tribe-common-form-control-checkbox__input:active,.tribe-common .tribe-common-form-control-checkbox__input:focus,.tribe-common .tribe-common-form-control-checkbox__input:hover,.tribe-common .tribe-common-form-control-radio__input:active,.tribe-common .tribe-common-form-control-radio__input:focus,.tribe-common .tribe-common-form-control-radio__input:hover{border:1px solid #141827}.tribe-common .tribe-common-form-control-checkbox__input:checked,.tribe-common .tribe-common-form-control-radio__input:checked{background-color:#141827}.tribe-common .tribe-common-form-control-checkbox__input:checked:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='9' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6.1L3.9 6.8 1.4 4.3c-.1-.1-.3-.1-.4 0l-.8.8c-.1.1-.1.3 0 .4l3.4 3.4c.2.1.4.1.5 0l7.7-7.7c.1-.1.1-.3 0-.4L11 .1c-.1-.1-.3-.1-.4 0z' fill='%23FFF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;content:"";display:block;height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}.tribe-common .tribe-common-form-control-radio__input{border-radius:50%}.tribe-common .tribe-common-form-control-radio__input:checked:before{background-color:#fff;border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:8px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__input{display:inline-block}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-checkbox__label,#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-radio__label{font-weight:400;font-size:14px}.tribe-common .tribe-common-form-control-checkbox-radio-group>*{margin-bottom:15px}.tribe-common .tribe-common-form-control-checkbox-radio-group>:last-child{margin-bottom:0}.tribe-common .tribe-common-form-control-slider{line-height:0}.tribe-common .tribe-common-form-control-slider__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;cursor:pointer;display:inline-block;margin:0;padding:0;width:120px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-runnable-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-moz-range-track{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;background-color:#334aff}.tribe-common .tribe-common-form-control-slider__input::-ms-track{background-color:transparent;border-color:transparent;border-width:5px 0;color:transparent;height:10px}.tribe-common .tribe-common-form-control-slider__input::-ms-fill-lower,.tribe-common .tribe-common-form-control-slider__input::-ms-fill-upper{background-color:#334aff;border-radius:10px}.tribe-common .tribe-common-form-control-slider__input::-webkit-slider-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;-webkit-appearance:none;appearance:none}.tribe-common .tribe-common-form-control-slider__input::-moz-range-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px}.tribe-common .tribe-common-form-control-slider__input::-ms-thumb{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;margin-top:-5px;box-shadow:none;margin-top:-1px}.tribe-common .tribe-common-form-control-slider__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-slider--vertical .tribe-common-form-control-slider__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-slider__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-form-control-text__label{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5;height:auto;padding:12px 28px 12px 0;width:100%}.tribe-common .tribe-common-form-control-text__input::-webkit-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:-ms-input-placeholder,.tribe-common .tribe-common-form-control-text__input::-ms-input-placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input::placeholder{color:#727272;font-style:normal}.tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;outline:0}.tribe-theme-twentyseventeen .tribe-common .tribe-common-form-control-text__input{color:#141827}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:16px;line-height:1.62;font-weight:400;border:0;border-bottom:1px solid #d5d5d5;padding:12px 28px 12px 0;width:100%}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input:focus{border-bottom-color:#141827;box-shadow:none}.tribe-common .tribe-common-form-control-toggle{line-height:0}.tribe-common .tribe-common-form-control-toggle__input{border:none;border-radius:5px;height:10px;margin:5px 0;padding:0;position:relative;transition:background-color .2s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#d5d5d5;cursor:pointer;display:inline-block;vertical-align:middle;width:40px}.tribe-common .tribe-common-form-control-toggle__input:after{background-color:#fff;border:1px solid #d5d5d5;border-radius:50%;box-shadow:0 2px 5px 0 rgba(0,0,0,.14);height:20px;width:20px;content:"";left:0;position:absolute;top:-5px;transition:transform .2s ease}.tribe-common .tribe-common-form-control-toggle__input:checked{background-color:#334aff}.tribe-common .tribe-common-form-control-toggle__input:checked:after{transform:translateX(20px)}.tribe-common .tribe-common-form-control-toggle__label{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;color:#727272;cursor:pointer;display:inline-block;margin-left:11px;vertical-align:middle}.tribe-common .tribe-common-form-control-toggle--vertical .tribe-common-form-control-toggle__label{display:block;margin:0 0 6px}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__input{display:inline-block;margin:5px 0}#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-toggle__label{font-weight:400;font-size:12px}.tribe-common .tribe-common-g-col{min-width:0;width:100%}.tribe-common .tribe-common-g-row{display:flex;flex-wrap:wrap}.tribe-common .tribe-common-g-row--gutters{margin-left:-21px;margin-right:-21px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:21px;padding-right:21px}.tribe-common a{cursor:pointer}.tribe-common a,.tribe-common a:active,.tribe-common a:focus,.tribe-common a:hover,.tribe-common a:visited{color:#141827;outline:0;text-decoration:none}.tribe-theme-twentyseventeen .tribe-common a:focus,.tribe-theme-twentyseventeen .tribe-common a:hover{box-shadow:none;color:#141827}.tribe-theme-twentynineteen .entry .tribe-common a{text-decoration:none}.tribe-common .tribe-common-anchor{border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor:active,.tribe-common .tribe-common-anchor:focus,.tribe-common .tribe-common-anchor:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-anchor-alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-anchor-alt:active,.tribe-common .tribe-common-anchor-alt:focus,.tribe-common .tribe-common-anchor-alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-anchor-thin{border-bottom:1px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-anchor-thin:active,.tribe-common .tribe-common-anchor-thin:focus,.tribe-common .tribe-common-anchor-thin:hover{border-bottom:1px solid #141827}.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-anchor-alt:hover{color:#334aff}.tribe-common .tribe-common-b1{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.62}.tribe-common .tribe-common-b1--bold{font-weight:700}.tribe-common .tribe-common-b2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.38}.tribe-common .tribe-common-b2--bold{font-weight:700}.tribe-common .tribe-common-b3{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5}.tribe-common .tribe-common-b3--bold{font-weight:700}.tribe-common .tribe-common-cta{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;font-weight:700;border-bottom:2px solid transparent;transition:border-color .2s ease}.tribe-common .tribe-common-cta:active,.tribe-common .tribe-common-cta:focus,.tribe-common .tribe-common-cta:hover{border-bottom:2px solid #141827}.tribe-common .tribe-common-cta--alt{border-bottom:2px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--alt:active,.tribe-common .tribe-common-cta--alt:focus,.tribe-common .tribe-common-cta--alt:hover{border-bottom:2px solid #334aff;color:#334aff}.tribe-common .tribe-common-cta--thin-alt{border-bottom:1px solid #334aff;color:#141827;transition:color .2s ease}.tribe-common .tribe-common-cta--thin-alt:active,.tribe-common .tribe-common-cta--thin-alt:focus,.tribe-common .tribe-common-cta--thin-alt:hover{border-bottom:1px solid #334aff;color:#334aff}.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--alt:hover,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-cta--thin-alt:hover{color:#334aff}.tribe-common .tribe-common-h1{font-size:28px}.tribe-common .tribe-common-h1,.tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-common .tribe-common-h2{font-size:24px}.tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-common .tribe-common-h3,.tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-common .tribe-common-h5{font-size:18px}.tribe-common .tribe-common-h5,.tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-common .tribe-common-h6{font-size:16px}.tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-common .tribe-common-h7,.tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:28px}.tribe-theme-avada #main .tribe-common .tribe-common-h1,.tribe-theme-avada #main .tribe-common .tribe-common-h2{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:24px}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:22px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h3,.tribe-theme-avada #main .tribe-common .tribe-common-h4{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:20px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5{font-size:18px}.tribe-theme-avada #main .tribe-common .tribe-common-h5,.tribe-theme-avada #main .tribe-common .tribe-common-h6{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px}.tribe-theme-avada #main .tribe-common .tribe-common-h7{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7,.tribe-theme-avada #main .tribe-common .tribe-common-h8{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-weight:700}.tribe-theme-avada #main .tribe-common .tribe-common-h8{font-size:12px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h--alt{font-weight:400}.tribe-theme-divi #left-area .tribe-common ul,.tribe-theme-divi .entry-content .tribe-common ul,body.et-pb-preview.tribe-theme-divi #main-content .container .tribe-common ul{list-style-type:none;padding:0}.tribe-common button{border:none;padding:0}.tribe-common button,.tribe-common button:focus,.tribe-common button:hover,.tribe-theme-twentyseventeen .tribe-common button:focus,.tribe-theme-twentyseventeen .tribe-common button:hover{background-color:transparent}.tribe-common .tribe-common-l-container{max-width:1260px;margin-left:auto;margin-right:auto;padding-left:19.5px;padding-right:19.5px;width:100%}.tribe-common .tribe-common-svgicon{background-repeat:no-repeat;background-size:contain}.tribe-common .tribe-common-svgicon--day{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zM14.18 14.53v1.747c0 .482.39.874.873.874H16.8a.873.873 0 0 0 .873-.874V14.53a.873.873 0 0 0-.873-.873h-1.747a.873.873 0 0 0-.873.873z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--list{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zm-18.045.936a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--map{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827'%3E%3Cpath stroke-linejoin='round' d='M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016'/%3E%3Cpath d='M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z' stroke-width='.4' fill='%23141827' fill-rule='nonzero'/%3E%3Cpath d='M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z' stroke-width='.7' fill='%23000' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--month{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='22' height='22' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.637 1.063v19.879c0 .276.189.5.422.5h20.037c.232 0 .421-.224.421-.5V1.062c0-.275-.189-.5-.421-.5H1.059c-.233 0-.422.225-.422.5zM1.787 2H20.34v2.685H1.787V2zm0 4H20.34v14H1.787V6zM8 8.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-8 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm-12 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm0 4v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5zm4 0v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--photo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='17' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23141827'%3E%3Cpath d='M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714a.51.51 0 0 0 .52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z'/%3E%3Cpath d='M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--week{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='21' height='21' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .503v19.994c0 .278.19.503.424.503h20.152c.234 0 .424-.225.424-.503V.503C21 .225 20.81 0 20.576 0H.424C.19 0 0 .225 0 .503zm1.156.943h18.66v2.7H1.157v-2.7zm0 4.023h18.66V19.55H1.157V5.469zm6.25 6.537v1.006c0 .278.224.503.502.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H7.908a.503.503 0 0 0-.503.502zm4.022 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H11.93a.503.503 0 0 0-.503.502zm4.023 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502h-1.006a.503.503 0 0 0-.503.502zm-12.069 0v1.006c0 .278.225.503.503.503h1.006a.503.503 0 0 0 .503-.503v-1.006a.503.503 0 0 0-.503-.502H3.885a.503.503 0 0 0-.503.502z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--featured{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h16v20l-7.902-5.122L0 20z' fill='%23334AFF'/%3E%3C/svg%3E");height:10px;width:8px}.tribe-common .tribe-common-svgicon--recurring{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.333 3.826c0 .065 0 .13-.02.174 0 .022-.02.065-.02.087a.9.9 0 0 1-.197.37L10.45 7.37a.797.797 0 0 1-.592.26.797.797 0 0 1-.593-.26c-.316-.348-.316-.935 0-1.305l1.225-1.348H6.3c-2.547 0-4.64 2.283-4.64 5.11 0 1.369.474 2.651 1.363 3.608.316.348.316.935 0 1.304A.797.797 0 0 1 2.43 15a.797.797 0 0 1-.593-.26C.652 13.434 0 11.695 0 9.847c0-3.826 2.825-6.935 6.301-6.935h4.208L9.284 1.565c-.316-.348-.316-.935 0-1.304.316-.348.85-.348 1.185 0l2.647 2.913a.952.952 0 0 1 .198.37c0 .021.02.065.02.086v.196zM20 10.152c0 3.826-2.825 6.935-6.301 6.935H9.49l1.225 1.348c.336.348.336.935 0 1.304a.797.797 0 0 1-.593.261.83.83 0 0 1-.592-.26l-2.627-2.936a.948.948 0 0 1-.198-.37c0-.021-.02-.064-.02-.086-.02-.065-.02-.109-.02-.174 0-.065 0-.13.02-.174 0-.022.02-.065.02-.087a.9.9 0 0 1 .198-.37L9.55 12.63c.316-.347.849-.347 1.185 0 .336.348.336.935 0 1.305L9.51 15.283h4.208c2.548 0 4.641-2.283 4.641-5.11 0-1.369-.474-2.651-1.362-3.608a.97.97 0 0 1 0-1.304c.316-.348.849-.348 1.185 0C19.348 6.543 20 8.283 20 10.152z' fill='%23334AFF'/%3E%3C/svg%3E");height:10px;width:10px}.tribe-common .tribe-common-svgicon--search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-svgicon--filters{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-theme-enfold .tribe-common th{letter-spacing:0;text-transform:none}.tribe-common .tribe-common-a11y-hidden{display:none!important;visibility:hidden}.tribe-common .tribe-common-a11y-visual-hide,.tribe-common .tribe-common-a11y-visual-show{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:12px;line-height:1.38;font-weight:400;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;background-color:#fff;border:1px solid #d5d5d5;border-radius:4px;text-align:center;transition:color .2s ease,border-color .2s ease;color:#727272;padding:14px 20px;width:100%}.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-border:active,.tribe-common .tribe-common-c-btn-border:focus,.tribe-common .tribe-common-c-btn-border:hover,.tribe-common a.tribe-common-c-btn-border:active,.tribe-common a.tribe-common-c-btn-border:focus,.tribe-common a.tribe-common-c-btn-border:hover{color:#141827}.tribe-common .tribe-common-c-btn-border:disabled,.tribe-common a.tribe-common-c-btn-border:disabled{color:#d5d5d5}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon{border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto}.tribe-common .tribe-common-c-btn-icon:before{background-repeat:no-repeat;background-size:contain;content:"";display:block}.tribe-common .tribe-common-c-btn-icon--border{background-color:#fff;border:1px solid #d5d5d5;align-items:center;display:inline-flex;height:56px;justify-content:center;transition:none;width:56px}.tribe-common .tribe-common-c-btn-icon--border:focus,.tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn-icon--border:active{border-color:#141827}.tribe-common .tribe-common-c-btn-icon--caret-left:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-left:active:before,.tribe-common .tribe-common-c-btn-icon--caret-left:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-left:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-left:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.916 17.841L10 19.757l-9.9-9.9L10-.041l1.916 1.916-7.983 7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23BABABA'/%3E%3C/svg%3E");height:20px;width:12px}.tribe-common .tribe-common-c-btn-icon--caret-right:active:before,.tribe-common .tribe-common-c-btn-icon--caret-right:focus:before,.tribe-common .tribe-common-c-btn-icon--caret-right:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23727272'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--caret-right:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.084 2.159L2 .243l9.9 9.9L2 20.041.084 18.126l7.983-7.984z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23727272' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E");height:20px;width:24px}.tribe-common .tribe-common-c-btn-icon--filters:active:before,.tribe-common .tribe-common-c-btn-icon--filters:focus:before,.tribe-common .tribe-common-c-btn-icon--filters:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23141827' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--filters:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17'%3E%3Cg fill='none' fill-rule='evenodd' stroke='%23D5D5D5' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' transform='translate(1 1)'%3E%3Cpath d='M3 3V0m0 15v-2'/%3E%3Ccircle cx='3' cy='9' r='3'/%3E%3Cpath d='M12 9v6'/%3E%3Ccircle cx='12' cy='3' r='3' transform='matrix(1 0 0 -1 0 6)'/%3E%3C/g%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23727272'/%3E%3C/svg%3E");height:20px;width:20px}.tribe-common .tribe-common-c-btn-icon--search:active:before,.tribe-common .tribe-common-c-btn-icon--search:focus:before,.tribe-common .tribe-common-c-btn-icon--search:hover:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23141827'/%3E%3C/svg%3E")}.tribe-common .tribe-common-c-btn-icon--search:disabled:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='20' height='20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 18.711l-6.044-6.044a7.782 7.782 0 0 0 1.688-4.845c0-2.089-.822-4.044-2.288-5.533C11.866.822 9.91 0 7.822 0S3.778.822 2.29 2.289A7.801 7.801 0 0 0 0 7.822c0 2.09.822 4.045 2.289 5.534a7.801 7.801 0 0 0 5.533 2.288c1.778 0 3.467-.6 4.845-1.688L18.71 20 20 18.711zM3.578 12.067c-2.334-2.334-2.334-6.156 0-8.49a5.968 5.968 0 0 1 4.244-1.755c1.6 0 3.111.622 4.245 1.756 2.333 2.333 2.333 6.155 0 8.489a5.968 5.968 0 0 1-4.245 1.755c-1.6 0-3.11-.622-4.244-1.755z' fill='%23D5D5D5'/%3E%3C/svg%3E")}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn-icon--border:hover{background-color:#fff}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;font-weight:700;border:0;cursor:pointer;display:inline-block;height:auto;padding:0;text-decoration:none;width:auto;border-radius:4px;color:#fff;text-align:center;transition:background-color .2s ease;background-color:#334aff;padding:11px 20px;width:100%}.tribe-common .tribe-common-c-btn:focus,.tribe-common .tribe-common-c-btn:hover,.tribe-common a.tribe-common-c-btn:focus,.tribe-common a.tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8)}.tribe-common .tribe-common-c-btn:active,.tribe-common a.tribe-common-c-btn:active{background-color:rgba(51,74,255,.9)}.tribe-common .tribe-common-c-btn:disabled,.tribe-common a.tribe-common-c-btn:disabled{background-color:rgba(51,74,255,.07)}.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:focus,.tribe-theme-twentyseventeen .tribe-common .tribe-common-c-btn:hover{background-color:rgba(51,74,255,.8);color:#fff}.tribe-common .tribe-common-c-image{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.tribe-common .tribe-common-c-image--bg{position:relative}.tribe-common .tribe-common-c-image__bg{background:50% no-repeat;background-size:cover;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}@media (min-width:768px){#top.tribe-theme-enfold .tribe-common .tribe-common-form-control-text__input,.tribe-common .tribe-common-form-control-text__input{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:14px;line-height:1.62;font-weight:400;border:0;padding:20px 20px 20px 40px}.tribe-common .tribe-common-g-row--gutters{margin-left:-24px;margin-right:-24px}.tribe-common .tribe-common-g-row--gutters>.tribe-common-g-col{padding-left:24px;padding-right:24px}.tribe-common .tribe-common-b1{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3{font-size:12px;line-height:1.38}.tribe-common .tribe-common-b1--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-b2--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-b3--min-medium{font-size:12px;line-height:1.38}.tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h1{font-size:42px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h2{font-size:32px;line-height:1.38}.tribe-theme-avada #main .tribe-common .tribe-common-h3{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h6{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h3--min-medium{font-size:28px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h4--min-medium{font-size:24px;line-height:1.42}.tribe-theme-avada #main .tribe-common .tribe-common-h5--min-medium{font-size:18px;line-height:1.5}.tribe-theme-avada #main .tribe-common .tribe-common-h6--min-medium{font-size:16px;line-height:1.62}.tribe-theme-avada #main .tribe-common .tribe-common-h7--min-medium{font-size:14px;line-height:1.62}.tribe-common .tribe-common-l-container{padding-left:42px;padding-right:42px}.tribe-common .tribe-common-c-btn-border,.tribe-common a.tribe-common-c-btn-border{padding:6px 15px;width:auto}.tribe-common .tribe-common-c-btn,.tribe-common a.tribe-common-c-btn{width:auto}}
|
common/src/resources/postcss/base/_buttons.pcss
CHANGED
@@ -13,4 +13,25 @@
|
|
13 |
background-color: transparent;
|
14 |
}
|
15 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
}
|
13 |
background-color: transparent;
|
14 |
}
|
15 |
}
|
16 |
+
|
17 |
+
/* -------------------------------------------------------------------------
|
18 |
+
*
|
19 |
+
* Button: Theme Overrides
|
20 |
+
*
|
21 |
+
* ------------------------------------------------------------------------- */
|
22 |
+
|
23 |
+
/* -------------------------------------------------------------------------
|
24 |
+
* Theme Overrides - Twenty Seventeen
|
25 |
+
* ------------------------------------------------------------------------- */
|
26 |
+
|
27 |
+
.tribe-theme-twentyseventeen & {
|
28 |
+
|
29 |
+
button {
|
30 |
+
|
31 |
+
&:hover,
|
32 |
+
&:focus {
|
33 |
+
background-color: transparent;
|
34 |
+
}
|
35 |
+
}
|
36 |
+
}
|
37 |
}
|
common/src/resources/postcss/base/typography/_body.pcss
CHANGED
@@ -65,4 +65,24 @@
|
|
65 |
@mixin desktop-body-1-sup;
|
66 |
}
|
67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
65 |
@mixin desktop-body-1-sup;
|
66 |
}
|
67 |
}
|
68 |
+
|
69 |
+
/* -------------------------------------------------------------------------
|
70 |
+
* Body 2 for --viewport-medium
|
71 |
+
* ------------------------------------------------------------------------- */
|
72 |
+
|
73 |
+
.tribe-common-b2--min-medium {
|
74 |
+
@media (--viewport-medium) {
|
75 |
+
@mixin desktop-body-2-sup;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
/* -------------------------------------------------------------------------
|
80 |
+
* Body 3 for --viewport-medium
|
81 |
+
* ------------------------------------------------------------------------- */
|
82 |
+
|
83 |
+
.tribe-common-b3--min-medium {
|
84 |
+
@media (--viewport-medium) {
|
85 |
+
@mixin desktop-body-3-sup;
|
86 |
+
}
|
87 |
+
}
|
88 |
}
|
common/src/resources/postcss/base/typography/_ctas.pcss
CHANGED
@@ -18,6 +18,10 @@
|
|
18 |
@mixin anchor-alt;
|
19 |
}
|
20 |
|
|
|
|
|
|
|
|
|
21 |
/* -------------------------------------------------------------------------
|
22 |
*
|
23 |
* CTA: Theme Overrides
|
@@ -30,7 +34,8 @@
|
|
30 |
|
31 |
.tribe-theme-twentyseventeen & {
|
32 |
|
33 |
-
.tribe-common-cta--alt
|
|
|
34 |
|
35 |
&:hover,
|
36 |
&:focus {
|
18 |
@mixin anchor-alt;
|
19 |
}
|
20 |
|
21 |
+
.tribe-common-cta--thin-alt {
|
22 |
+
@mixin anchor-thin-alt;
|
23 |
+
}
|
24 |
+
|
25 |
/* -------------------------------------------------------------------------
|
26 |
*
|
27 |
* CTA: Theme Overrides
|
34 |
|
35 |
.tribe-theme-twentyseventeen & {
|
36 |
|
37 |
+
.tribe-common-cta--alt,
|
38 |
+
.tribe-common-cta--thin-alt {
|
39 |
|
40 |
&:hover,
|
41 |
&:focus {
|
common/src/resources/postcss/components/buttons/_border.pcss
CHANGED
@@ -32,4 +32,24 @@
|
|
32 |
color: var(--color-text-disabled)
|
33 |
}
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
32 |
color: var(--color-text-disabled)
|
33 |
}
|
34 |
}
|
35 |
+
|
36 |
+
/* -------------------------------------------------------------------------
|
37 |
+
*
|
38 |
+
* Button: Border - Theme Overrides
|
39 |
+
*
|
40 |
+
* ------------------------------------------------------------------------- */
|
41 |
+
|
42 |
+
/* -------------------------------------------------------------------------
|
43 |
+
* Theme Overrides - Twenty Seventeen
|
44 |
+
* ------------------------------------------------------------------------- */
|
45 |
+
|
46 |
+
.tribe-theme-twentyseventeen & {
|
47 |
+
|
48 |
+
.tribe-common-c-btn-border {
|
49 |
+
|
50 |
+
&:hover {
|
51 |
+
background-color: var(--color-background);
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
}
|
common/src/resources/postcss/components/buttons/_icon.pcss
CHANGED
@@ -149,4 +149,24 @@
|
|
149 |
}
|
150 |
}
|
151 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
}
|
149 |
}
|
150 |
}
|
151 |
}
|
152 |
+
|
153 |
+
/* -------------------------------------------------------------------------
|
154 |
+
*
|
155 |
+
* Button: Icon Border - Theme Overrides
|
156 |
+
*
|
157 |
+
* ------------------------------------------------------------------------- */
|
158 |
+
|
159 |
+
/* -------------------------------------------------------------------------
|
160 |
+
* Theme Overrides - Twenty Seventeen
|
161 |
+
* ------------------------------------------------------------------------- */
|
162 |
+
|
163 |
+
.tribe-theme-twentyseventeen & {
|
164 |
+
|
165 |
+
.tribe-common-c-btn-icon--border {
|
166 |
+
|
167 |
+
&:hover {
|
168 |
+
background-color: var(--color-background);
|
169 |
+
}
|
170 |
+
}
|
171 |
+
}
|
172 |
}
|
common/src/resources/postcss/components/buttons/_solid.pcss
CHANGED
@@ -34,4 +34,26 @@
|
|
34 |
background-color: var(--color-accent-primary-background);
|
35 |
}
|
36 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
34 |
background-color: var(--color-accent-primary-background);
|
35 |
}
|
36 |
}
|
37 |
+
|
38 |
+
/* -------------------------------------------------------------------------
|
39 |
+
*
|
40 |
+
* Button: Solid - Theme Overrides
|
41 |
+
*
|
42 |
+
* ------------------------------------------------------------------------- */
|
43 |
+
|
44 |
+
/* -------------------------------------------------------------------------
|
45 |
+
* Theme Overrides - Twenty Seventeen
|
46 |
+
* ------------------------------------------------------------------------- */
|
47 |
+
|
48 |
+
.tribe-theme-twentyseventeen & {
|
49 |
+
|
50 |
+
.tribe-common-c-btn {
|
51 |
+
|
52 |
+
&:hover,
|
53 |
+
&:focus {
|
54 |
+
background-color: var(--color-accent-primary-hover);
|
55 |
+
color: var(--color-background);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
}
|
common/src/resources/postcss/utilities/README.md
CHANGED
@@ -1,36 +1,63 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
## Installation
|
4 |
-
You probably will need to install this package in a custom paths, say `src/resources/postcss/utilities`; if that's the case then add this to the plugin/project `composer.json` file:
|
5 |
-
|
6 |
-
```json
|
7 |
-
"repositories": [
|
8 |
-
{
|
9 |
-
"name": "moderntribe/tribe-common-styles",
|
10 |
-
"type": "github",
|
11 |
-
"url": "https://github.com/moderntribe/tribe-common-styles",
|
12 |
-
"no-api": true
|
13 |
-
}
|
14 |
-
],
|
15 |
-
"extra": {
|
16 |
-
"installer-paths": {
|
17 |
-
"src/resources/postcss/utilities": [
|
18 |
-
"moderntribe/tribe-common-styles"
|
19 |
-
]
|
20 |
-
}
|
21 |
-
}
|
22 |
-
```
|
23 |
-
To simply install the package in your project use:
|
24 |
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
27 |
```
|
28 |
|
29 |
-
|
30 |
-
If you need to work on **this** package while working on your project you will want to clone the full Git repository, just follow the instructions above and, in place of the command above, use:
|
31 |
|
32 |
```bash
|
33 |
-
|
34 |
```
|
35 |
-
|
36 |
-
Remember to ignore the package installation folder to avoid committing a dirty repository!
|
1 |
+
# Tribe Common Styles
|
2 |
+
|
3 |
+
## What is this repository?
|
4 |
+
|
5 |
+
This repository is a set of common PostCSS utilities. It includes variables, icons, and mixins to help follow Modern Tribe products design system. They are consumed by Modern Tribe plugins PostCSS files.
|
6 |
+
|
7 |
+
## Why do we need this?
|
8 |
+
|
9 |
+
Modern Tribe has a design system for its plugins. Defining a set of variables and style groupings helps maintain consistency and ease of maintenance throughout all the plugins.
|
10 |
+
|
11 |
+
For example, if the primary text color was to change due to a design update, doing a search and replace through all the PostCSS files could be time-consuming and error-prone. Instead, changing it in one place changes the color for all styles consuming the variable.
|
12 |
+
|
13 |
+
## Repository Structure
|
14 |
+
|
15 |
+
The repository structure starts at the root level file `_all.pcss` importing all the repository styles. Variables, icons, and mixins are defined within their respective folders.
|
16 |
+
|
17 |
+
### Variables
|
18 |
+
|
19 |
+
Variables are any *reusable* property values named specifically for their use case. They are found in the `/variables` folder. Though some variables may hold the same value (e.g. `--border-radius-default: 4px;` and `--spacer-0: 4px`), their use cases are very different and should not be used interchangeably.
|
20 |
+
|
21 |
+
SVGs are different from the other variables partial files. They are found in `/variables/_svgs.pcss` and are compiled using the [PostCSS Inline SVG](https://github.com/TrySound/postcss-inline-svg) plugin.
|
22 |
+
|
23 |
+
### Icons
|
24 |
+
|
25 |
+
Icons are SVG icons included in the design system and are found in the `/icons` folder. They are consumed by the SVG variables partial file `/variables/_svg.pcss`.
|
26 |
+
|
27 |
+
### Mixins
|
28 |
+
|
29 |
+
Mixins are groupings of *reusable* styles and are found in the `/mixins` folder. These reusable style groupings are often defined by the design system. Mixins are compiled using the [PostCSS Mixins](https://github.com/postcss/postcss-mixins) plugin.
|
30 |
+
|
31 |
+
## Making Changes
|
32 |
+
|
33 |
+
Making changes to this repository should be done with care. As these utilities are the most upstream in Modern Tribe products PostCSS files, modifications to these files can have a cascading effect downstream.
|
34 |
+
|
35 |
+
When making any changes, whether they are additions, alterations, or deletions, **consistency** is key. Follow naming conventions and groupings so that viewing and editing the files are simple.
|
36 |
+
|
37 |
+
### Additions
|
38 |
+
|
39 |
+
Additions are generally safe, as long as the variable names do not conflict with existing variables. Confirm that the variables or mixins you are adding are reusable and a consistent part of the design system before adding.
|
40 |
+
|
41 |
+
### Alterations
|
42 |
+
|
43 |
+
Alterations should be done carefully, as they will affect all downstream styles using the variable or mixin being altered. Multiple plugins use these styles and should be cross-checked before making the change.
|
44 |
+
|
45 |
+
### Deletions
|
46 |
+
|
47 |
+
Deletions should also be done carefully, for the same reasons as **Alterations** above. Removing a variable or mixin that is still being used will create broken styles and/or build failures.
|
48 |
|
49 |
## Installation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
+
You will need to include this package as a submodule to your plugin/project. To install this in in a custom path, in this case `src/resources/postcss/utilities`, add the following to your `.gitmodules` file:
|
52 |
+
|
53 |
+
```
|
54 |
+
[submodule "src/resources/postcss/utilities"]
|
55 |
+
path = src/resources/postcss/utilities
|
56 |
+
url = git@github.com:moderntribe/tribe-common-styles.git
|
57 |
```
|
58 |
|
59 |
+
To simply install the package in your project use:
|
|
|
60 |
|
61 |
```bash
|
62 |
+
git submodule update --recursive --init
|
63 |
```
|
|
|
|
common/src/resources/postcss/utilities/mixins/_typography.pcss
CHANGED
@@ -280,3 +280,20 @@
|
|
280 |
border-bottom: 1px solid var(--color-text-primary);
|
281 |
}
|
282 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
border-bottom: 1px solid var(--color-text-primary);
|
281 |
}
|
282 |
}
|
283 |
+
|
284 |
+
/* -----------------------------------------------------------------------------
|
285 |
+
* Anchor - Thin
|
286 |
+
* ----------------------------------------------------------------------------- */
|
287 |
+
|
288 |
+
@define-mixin anchor-thin-alt {
|
289 |
+
border-bottom: 1px solid var(--color-accent-primary);
|
290 |
+
color: var(--color-text-primary);
|
291 |
+
transition: var(--transition-color);
|
292 |
+
|
293 |
+
&:active,
|
294 |
+
&:focus,
|
295 |
+
&:hover {
|
296 |
+
border-bottom: 1px solid var(--color-accent-primary);
|
297 |
+
color: var(--color-accent-primary);
|
298 |
+
}
|
299 |
+
}
|
common/src/resources/postcss/utilities/variables/_box-shadows.pcss
CHANGED
@@ -5,5 +5,6 @@
|
|
5 |
|
6 |
--box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
|
7 |
--box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
|
|
|
8 |
}
|
9 |
|
5 |
|
6 |
--box-shadow-default: 0 2px 5px 0 var(--color-box-shadow);
|
7 |
--box-shadow-tooltip: 0 2px 12px 0 var(--color-box-shadow);
|
8 |
+
--box-shadow-card: 0 1px 6px 2px var(--color-box-shadow);
|
9 |
}
|
10 |
|
common/src/resources/postcss/utilities/variables/_colors.pcss
CHANGED
@@ -29,6 +29,8 @@
|
|
29 |
--color-accent-primary-multiday-hover: rgba(var(--color-accent-primary), 0.34);
|
30 |
--color-accent-primary-week-event: rgba(var(--color-accent-primary), 0.1);
|
31 |
--color-accent-primary-week-event-hover: rgba(var(--color-accent-primary), 0.2);
|
|
|
|
|
32 |
--color-accent-secondary: #141827;
|
33 |
--color-accent-secondary-hover: rgba(var(--color-accent-secondary), 0.8);
|
34 |
--color-accent-secondary-active: rgba(var(--color-accent-secondary), 0.9);
|
@@ -40,6 +42,7 @@
|
|
40 |
|
41 |
--color-border-default: #D5D5D5;
|
42 |
--color-border-secondary: #E4E4E4;
|
|
|
43 |
--color-border-active: #141827;
|
44 |
--color-background: #FFFFFF;
|
45 |
--color-background-transparent: rgba(var(--color-background), 0.6);
|
29 |
--color-accent-primary-multiday-hover: rgba(var(--color-accent-primary), 0.34);
|
30 |
--color-accent-primary-week-event: rgba(var(--color-accent-primary), 0.1);
|
31 |
--color-accent-primary-week-event-hover: rgba(var(--color-accent-primary), 0.2);
|
32 |
+
--color-accent-primary-week-event-featured: rgba(var(--color-accent-primary), 0.04);
|
33 |
+
--color-accent-primary-week-event-featured-hover: rgba(var(--color-accent-primary), 0.14);
|
34 |
--color-accent-secondary: #141827;
|
35 |
--color-accent-secondary-hover: rgba(var(--color-accent-secondary), 0.8);
|
36 |
--color-accent-secondary-active: rgba(var(--color-accent-secondary), 0.9);
|
42 |
|
43 |
--color-border-default: #D5D5D5;
|
44 |
--color-border-secondary: #E4E4E4;
|
45 |
+
--color-border-hover: #727272;
|
46 |
--color-border-active: #141827;
|
47 |
--color-background: #FFFFFF;
|
48 |
--color-background-transparent: rgba(var(--color-background), 0.6);
|
common/src/resources/postcss/utilities/variables/_grids.pcss
CHANGED
@@ -30,7 +30,7 @@
|
|
30 |
/* -----------------------------------------------------------------------------
|
31 |
* Grid Width - Relative
|
32 |
* ----------------------------------------------------------------------------- */
|
33 |
-
|
34 |
--grid-width-1-of-2: 50%;
|
35 |
--grid-width-1-of-3: 33.333%;
|
36 |
--grid-width-1-of-4: 25%;
|
30 |
/* -----------------------------------------------------------------------------
|
31 |
* Grid Width - Relative
|
32 |
* ----------------------------------------------------------------------------- */
|
33 |
+
|
34 |
--grid-width-1-of-2: 50%;
|
35 |
--grid-width-1-of-3: 33.333%;
|
36 |
--grid-width-1-of-4: 25%;
|
common/src/resources/postcss/utilities/variables/_svgs.pcss
CHANGED
@@ -2,6 +2,20 @@
|
|
2 |
* SVG - Arrow Right
|
3 |
* ----------------------------------------------------------------------------- */
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
@svg-load arrow-right-white url('../icons/arrow-right.svg') {
|
6 |
|
7 |
path {
|
@@ -139,6 +153,13 @@
|
|
139 |
}
|
140 |
}
|
141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
@svg-load featured-white url('../icons/featured-event.svg') {
|
143 |
|
144 |
path {
|
2 |
* SVG - Arrow Right
|
3 |
* ----------------------------------------------------------------------------- */
|
4 |
|
5 |
+
@svg-load arrow-right-active url('../icons/arrow-right.svg') {
|
6 |
+
|
7 |
+
path {
|
8 |
+
fill: var(--color-icon-active);
|
9 |
+
}
|
10 |
+
}
|
11 |
+
|
12 |
+
@svg-load arrow-right-secondary url('../icons/arrow-right.svg') {
|
13 |
+
|
14 |
+
path {
|
15 |
+
fill: var(--color-icon-secondary);
|
16 |
+
}
|
17 |
+
}
|
18 |
+
|
19 |
@svg-load arrow-right-white url('../icons/arrow-right.svg') {
|
20 |
|
21 |
path {
|
153 |
}
|
154 |
}
|
155 |
|
156 |
+
@svg-load featured-active url('../icons/featured-event.svg') {
|
157 |
+
|
158 |
+
path {
|
159 |
+
fill: var(--color-icon-active);
|
160 |
+
}
|
161 |
+
}
|
162 |
+
|
163 |
@svg-load featured-white url('../icons/featured-event.svg') {
|
164 |
|
165 |
path {
|
common/src/resources/postcss/utilities/variables/_z-index.pcss
CHANGED
@@ -5,8 +5,12 @@
|
|
5 |
|
6 |
--z-index-spinner-container: 100;
|
7 |
--z-index-views-selector: 30;
|
|
|
8 |
--z-index-events-bar-button: 20;
|
9 |
--z-index-search: 10;
|
|
|
10 |
--z-index-week-event-hover: 5;
|
11 |
--z-index-map-event-hover: 5;
|
|
|
|
|
12 |
}
|
5 |
|
6 |
--z-index-spinner-container: 100;
|
7 |
--z-index-views-selector: 30;
|
8 |
+
--z-index-dropdown: 30;
|
9 |
--z-index-events-bar-button: 20;
|
10 |
--z-index-search: 10;
|
11 |
+
--z-index-scroller: 7;
|
12 |
--z-index-week-event-hover: 5;
|
13 |
--z-index-map-event-hover: 5;
|
14 |
+
--z-index-map-event-hover-actions: 6;
|
15 |
+
--z-index-multiday-event: 5;
|
16 |
}
|
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 ComposerAutoloaderInitf211722f7d1cce246a2f7c04a769c000::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 ComposerAutoloaderInitbf75faf0b506d9c5f1fa174f3392425c::getLoader();
|
common/vendor/composer/autoload_classmap.php
CHANGED
@@ -118,6 +118,8 @@ return array(
|
|
118 |
'Tribe\\Log\\Canonical_Formatter' => $baseDir . '/src/Tribe/Log/Canonical_Formatter.php',
|
119 |
'Tribe\\Log\\Monolog_Logger' => $baseDir . '/src/Tribe/Log/Monolog_Logger.php',
|
120 |
'Tribe\\Log\\Service_Provider' => $baseDir . '/src/Tribe/Log/Service_Provider.php',
|
|
|
|
|
121 |
'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
|
122 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
123 |
'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.php',
|
118 |
'Tribe\\Log\\Canonical_Formatter' => $baseDir . '/src/Tribe/Log/Canonical_Formatter.php',
|
119 |
'Tribe\\Log\\Monolog_Logger' => $baseDir . '/src/Tribe/Log/Monolog_Logger.php',
|
120 |
'Tribe\\Log\\Service_Provider' => $baseDir . '/src/Tribe/Log/Service_Provider.php',
|
121 |
+
'Tribe\\Models\\Post_Types\\Base' => $baseDir . '/src/Tribe/Models/Post_Types/Base.php',
|
122 |
+
'Tribe\\Models\\Post_Types\\Nothing' => $baseDir . '/src/Tribe/Models/Post_Types/Nothing.php',
|
123 |
'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
|
124 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
125 |
'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.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 ComposerAutoloaderInit7463cc922209bc9bad4bfd31ce1c00bf
|
|
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 ComposerAutoloaderInitf211722f7d1cce246a2f7c04a769c000
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitf211722f7d1cce246a2f7c04a769c000', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitf211722f7d1cce246a2f7c04a769c000', '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\ComposerStaticInitf211722f7d1cce246a2f7c04a769c000::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 ComposerAutoloaderInit78446093aa9b3c42347fe2d2552fc164 {
|
|
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 ComposerAutoloaderInitbf75faf0b506d9c5f1fa174f3392425c {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitbf75faf0b506d9c5f1fa174f3392425c', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitbf75faf0b506d9c5f1fa174f3392425c', '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' =>
|
@@ -174,6 +174,8 @@ class ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf
|
|
174 |
'Tribe\\Log\\Canonical_Formatter' => __DIR__ . '/../..' . '/src/Tribe/Log/Canonical_Formatter.php',
|
175 |
'Tribe\\Log\\Monolog_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Monolog_Logger.php',
|
176 |
'Tribe\\Log\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Log/Service_Provider.php',
|
|
|
|
|
177 |
'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
|
178 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
179 |
'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
|
@@ -196,10 +198,10 @@ class ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf
|
|
196 |
public static function getInitializer(ClassLoader $loader)
|
197 |
{
|
198 |
return \Closure::bind(function () use ($loader) {
|
199 |
-
$loader->prefixLengthsPsr4 =
|
200 |
-
$loader->prefixDirsPsr4 =
|
201 |
-
$loader->prefixesPsr0 =
|
202 |
-
$loader->classMap =
|
203 |
|
204 |
}, null, ClassLoader::class);
|
205 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInitf211722f7d1cce246a2f7c04a769c000
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
174 |
'Tribe\\Log\\Canonical_Formatter' => __DIR__ . '/../..' . '/src/Tribe/Log/Canonical_Formatter.php',
|
175 |
'Tribe\\Log\\Monolog_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Monolog_Logger.php',
|
176 |
'Tribe\\Log\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Log/Service_Provider.php',
|
177 |
+
'Tribe\\Models\\Post_Types\\Base' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Base.php',
|
178 |
+
'Tribe\\Models\\Post_Types\\Nothing' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Nothing.php',
|
179 |
'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
|
180 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
181 |
'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
|
198 |
public static function getInitializer(ClassLoader $loader)
|
199 |
{
|
200 |
return \Closure::bind(function () use ($loader) {
|
201 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInitf211722f7d1cce246a2f7c04a769c000::$prefixLengthsPsr4;
|
202 |
+
$loader->prefixDirsPsr4 = ComposerStaticInitf211722f7d1cce246a2f7c04a769c000::$prefixDirsPsr4;
|
203 |
+
$loader->prefixesPsr0 = ComposerStaticInitf211722f7d1cce246a2f7c04a769c000::$prefixesPsr0;
|
204 |
+
$loader->classMap = ComposerStaticInitf211722f7d1cce246a2f7c04a769c000::$classMap;
|
205 |
|
206 |
}, null, ClassLoader::class);
|
207 |
}
|
common/vendor/composer/installed.json
CHANGED
@@ -49,17 +49,17 @@
|
|
49 |
},
|
50 |
{
|
51 |
"name": "lucatume/di52",
|
52 |
-
"version": "2.0.
|
53 |
-
"version_normalized": "2.0.
|
54 |
"source": {
|
55 |
"type": "git",
|
56 |
"url": "https://github.com/lucatume/di52.git",
|
57 |
-
"reference": "
|
58 |
},
|
59 |
"dist": {
|
60 |
"type": "zip",
|
61 |
-
"url": "https://api.github.com/repos/lucatume/di52/zipball/
|
62 |
-
"reference": "
|
63 |
"shasum": ""
|
64 |
},
|
65 |
"require": {
|
@@ -70,7 +70,7 @@
|
|
70 |
"phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
|
71 |
"phpunit/phpunit-php52": "dev-3.6.12-php52"
|
72 |
},
|
73 |
-
"time": "
|
74 |
"type": "library",
|
75 |
"installation-source": "dist",
|
76 |
"autoload": {
|
49 |
},
|
50 |
{
|
51 |
"name": "lucatume/di52",
|
52 |
+
"version": "2.0.11",
|
53 |
+
"version_normalized": "2.0.11.0",
|
54 |
"source": {
|
55 |
"type": "git",
|
56 |
"url": "https://github.com/lucatume/di52.git",
|
57 |
+
"reference": "1dfc848d87564fa7b8cfcec2c03842f0bd58fdd6"
|
58 |
},
|
59 |
"dist": {
|
60 |
"type": "zip",
|
61 |
+
"url": "https://api.github.com/repos/lucatume/di52/zipball/1dfc848d87564fa7b8cfcec2c03842f0bd58fdd6",
|
62 |
+
"reference": "1dfc848d87564fa7b8cfcec2c03842f0bd58fdd6",
|
63 |
"shasum": ""
|
64 |
},
|
65 |
"require": {
|
70 |
"phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52",
|
71 |
"phpunit/phpunit-php52": "dev-3.6.12-php52"
|
72 |
},
|
73 |
+
"time": "2019-09-26T07:30:57+00:00",
|
74 |
"type": "library",
|
75 |
"installation-source": "dist",
|
76 |
"autoload": {
|
common/vendor/lucatume/di52/src/tad/DI52/Container.php
CHANGED
@@ -313,6 +313,10 @@ class tad_DI52_Container implements ArrayAccess {
|
|
313 |
try {
|
314 |
$instance = $this->build($classOrInterface);
|
315 |
} catch (Exception $e) {
|
|
|
|
|
|
|
|
|
316 |
throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
|
317 |
}
|
318 |
} else {
|
@@ -786,7 +790,7 @@ class tad_DI52_Container implements ArrayAccess {
|
|
786 |
|
787 |
if (null === $class) {
|
788 |
if (!$parameter->isDefaultValueAvailable()) {
|
789 |
-
throw new
|
790 |
}
|
791 |
return $parameter->getDefaultValue();
|
792 |
}
|
@@ -795,7 +799,7 @@ class tad_DI52_Container implements ArrayAccess {
|
|
795 |
|
796 |
if (!$this->isBound($parameterClass) && !$parameter->getClass()->isInstantiable()) {
|
797 |
if (!$parameter->isDefaultValueAvailable()) {
|
798 |
-
throw new
|
799 |
}
|
800 |
return $parameter->getDefaultValue();
|
801 |
}
|
313 |
try {
|
314 |
$instance = $this->build($classOrInterface);
|
315 |
} catch (Exception $e) {
|
316 |
+
if ( $e instanceof ReflectionException ) {
|
317 |
+
throw $e;
|
318 |
+
}
|
319 |
+
|
320 |
throw new RuntimeException("'{$classOrInterface}' is not a bound alias or an existing class.");
|
321 |
}
|
322 |
} else {
|
790 |
|
791 |
if (null === $class) {
|
792 |
if (!$parameter->isDefaultValueAvailable()) {
|
793 |
+
throw new ReflectionException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
|
794 |
}
|
795 |
return $parameter->getDefaultValue();
|
796 |
}
|
799 |
|
800 |
if (!$this->isBound($parameterClass) && !$parameter->getClass()->isInstantiable()) {
|
801 |
if (!$parameter->isDefaultValueAvailable()) {
|
802 |
+
throw new ReflectionException("parameter '{$parameter->name}' of '{$this->resolving}::__construct' does not have a default value.");
|
803 |
}
|
804 |
return $parameter->getDefaultValue();
|
805 |
}
|
event-tickets.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Event Tickets
|
4 |
Plugin URI: http://m.tri.be/1acb
|
5 |
Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
|
6 |
-
Version: 4.10.
|
7 |
Author: Modern Tribe, Inc.
|
8 |
Author URI: http://m.tri.be/28
|
9 |
License: GPLv2 or later
|
@@ -40,6 +40,9 @@ define( 'EVENT_TICKETS_MAIN_PLUGIN_FILE', __FILE__ );
|
|
40 |
// Load the required php min version functions
|
41 |
require_once dirname( EVENT_TICKETS_MAIN_PLUGIN_FILE ) . '/src/functions/php-min-version.php';
|
42 |
|
|
|
|
|
|
|
43 |
/**
|
44 |
* Verifies if we need to warn the user about min PHP version and bail to avoid fatals
|
45 |
*/
|
3 |
Plugin Name: Event Tickets
|
4 |
Plugin URI: http://m.tri.be/1acb
|
5 |
Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
|
6 |
+
Version: 4.10.9
|
7 |
Author: Modern Tribe, Inc.
|
8 |
Author URI: http://m.tri.be/28
|
9 |
License: GPLv2 or later
|
40 |
// Load the required php min version functions
|
41 |
require_once dirname( EVENT_TICKETS_MAIN_PLUGIN_FILE ) . '/src/functions/php-min-version.php';
|
42 |
|
43 |
+
// Load the Composer autoload file.
|
44 |
+
require_once dirname( EVENT_TICKETS_MAIN_PLUGIN_FILE ) . '/vendor/autoload.php';
|
45 |
+
|
46 |
/**
|
47 |
* Verifies if we need to warn the user about min PHP version and bail to avoid fatals
|
48 |
*/
|
lang/event-tickets-el.mo
CHANGED
Binary file
|
lang/event-tickets-ru_RU.mo
CHANGED
Binary file
|
lang/event-tickets.pot
CHANGED
@@ -2,19 +2,19 @@
|
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Event Tickets 4.10.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
-
"POT-Creation-Date: 2019-09-
|
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: 2019-09-
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
-
#. #-#-#-#-# event-tickets.pot (Event Tickets 4.10.
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
-
#: event-tickets.php:
|
18 |
msgid "Event Tickets"
|
19 |
msgstr ""
|
20 |
|
@@ -36,7 +36,7 @@ msgid "Attendees"
|
|
36 |
msgstr ""
|
37 |
|
38 |
#: src/Tribe/Admin/Move_Ticket_Types.php:28
|
39 |
-
msgid "Move
|
40 |
msgstr ""
|
41 |
|
42 |
#: src/Tribe/Admin/Move_Ticket_Types.php:72
|
@@ -44,32 +44,31 @@ msgstr ""
|
|
44 |
msgid "All supported types"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: src/Tribe/Admin/Move_Ticket_Types.php:
|
48 |
msgid ""
|
49 |
-
"
|
50 |
-
"invalid."
|
51 |
msgstr ""
|
52 |
|
53 |
-
#: src/Tribe/Admin/Move_Ticket_Types.php:
|
54 |
-
msgid "
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: src/Tribe/Admin/Move_Ticket_Types.php:
|
58 |
msgid ""
|
59 |
-
"
|
60 |
-
"
|
61 |
-
"
|
62 |
-
"
|
63 |
msgstr ""
|
64 |
|
65 |
-
#: src/Tribe/Admin/Move_Ticket_Types.php:
|
66 |
msgid ""
|
67 |
-
"
|
68 |
-
"href=\"%
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: src/Tribe/Admin/Move_Ticket_Types.php:
|
72 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
73 |
msgid "Changes to your tickets from %s"
|
74 |
msgstr ""
|
75 |
|
@@ -104,29 +103,28 @@ msgctxt "attendee screen bulk actions"
|
|
104 |
msgid "Move"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
108 |
msgid ""
|
109 |
-
"
|
110 |
"provided."
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
114 |
msgid ""
|
115 |
-
"
|
116 |
-
"reassignment."
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
120 |
msgctxt "moved tickets success message fragment"
|
121 |
msgid "assigned to %s"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
125 |
msgctxt "moved tickets success message fragment"
|
126 |
msgid "moved to %s and"
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
130 |
msgid ""
|
131 |
"%1$d attendee for %2$s was successfully %3$s. By default, we adjust capacity "
|
132 |
"and stock, however, we recommend reviewing each as needed to ensure numbers "
|
@@ -140,11 +138,11 @@ msgid_plural ""
|
|
140 |
msgstr[0] ""
|
141 |
msgstr[1] ""
|
142 |
|
143 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
144 |
msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: src/Tribe/Admin/Move_Tickets.php:
|
148 |
msgid "This ticket was moved to %1$s from %2$s"
|
149 |
msgstr ""
|
150 |
|
@@ -169,12 +167,6 @@ msgstr ""
|
|
169 |
msgid "No history available"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: src/Tribe/Admin/Ticket_Settings.php:22
|
173 |
-
#: src/Tribe/Commerce/PayPal/Main.php:435 src/Tribe/Metabox.php:53
|
174 |
-
#: src/admin-views/editor/list-table.php:30
|
175 |
-
msgid "Tickets"
|
176 |
-
msgstr ""
|
177 |
-
|
178 |
#: src/Tribe/Admin/Views/Ticketed.php:47
|
179 |
msgid "Ticketed"
|
180 |
msgstr ""
|
@@ -183,29 +175,29 @@ msgstr ""
|
|
183 |
msgid "Unticketed"
|
184 |
msgstr ""
|
185 |
|
186 |
-
#: src/Tribe/Assets.php:
|
187 |
-
msgid "
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: src/Tribe/Assets.php:
|
191 |
-
msgid "Set as
|
192 |
msgstr ""
|
193 |
|
194 |
-
#: src/Tribe/Assets.php:
|
195 |
msgid "Are you sure you want to delete this ticket? This cannot be undone."
|
196 |
msgstr ""
|
197 |
|
198 |
-
#: src/Tribe/Assets.php:
|
199 |
msgid ""
|
200 |
"It looks like you have modified your shared capacity setting but have not "
|
201 |
"saved or updated the post."
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: src/Tribe/Assets.php:
|
205 |
msgid "Please enter in without thousand separators and currency symbols."
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: src/Tribe/Assets.php:
|
209 |
msgid ""
|
210 |
"There is unsaved attendee information. Are you sure you want to continue?"
|
211 |
msgstr ""
|
@@ -215,7 +207,7 @@ msgctxt "attendee summary"
|
|
215 |
msgid "Deleted Attendees:"
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: src/Tribe/Attendee_Registration/Template.php:
|
219 |
msgid "Attendee Registration"
|
220 |
msgstr ""
|
221 |
|
@@ -291,7 +283,7 @@ msgstr ""
|
|
291 |
|
292 |
#: src/Tribe/Attendees.php:501
|
293 |
msgctxt "attendee export"
|
294 |
-
msgid "
|
295 |
msgstr ""
|
296 |
|
297 |
#: src/Tribe/Attendees.php:502
|
@@ -304,8 +296,8 @@ msgctxt "attendee export"
|
|
304 |
msgid "Customer Email Address"
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: src/Tribe/Attendees.php:532 src/admin-views/tribe-options-tickets.php:
|
308 |
-
#: src/admin-views/tribe-options-tickets.php:
|
309 |
msgid "Yes"
|
310 |
msgstr ""
|
311 |
|
@@ -349,11 +341,6 @@ msgstr ""
|
|
349 |
msgid "Number of attendees per page:"
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: src/Tribe/Attendees_Table.php:116
|
353 |
-
msgctxt "attendee table"
|
354 |
-
msgid "Ticket"
|
355 |
-
msgstr ""
|
356 |
-
|
357 |
#: src/Tribe/Attendees_Table.php:117
|
358 |
msgctxt "attendee table"
|
359 |
msgid "Primary Information"
|
@@ -419,7 +406,7 @@ msgstr ""
|
|
419 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:100 src/Tribe/Privacy.php:164
|
420 |
#: src/Tribe/Privacy.php:445 src/Tribe/Privacy.php:541
|
421 |
#: src/admin-views/admin-welcome-message.php:62
|
422 |
-
#: src/views/blocks/rsvp/form/email.php:32 src/views/tickets/rsvp.php:
|
423 |
msgid "Email"
|
424 |
msgstr ""
|
425 |
|
@@ -440,34 +427,42 @@ msgid "No matching attendees found."
|
|
440 |
msgstr ""
|
441 |
|
442 |
#: src/Tribe/Attendees_Table.php:979
|
|
|
443 |
msgid "Search by Purchaser Name"
|
444 |
msgstr ""
|
445 |
|
446 |
#: src/Tribe/Attendees_Table.php:980
|
|
|
447 |
msgid "Search by Purchaser Email"
|
448 |
msgstr ""
|
449 |
|
450 |
#: src/Tribe/Attendees_Table.php:981
|
|
|
451 |
msgid "Search by User ID"
|
452 |
msgstr ""
|
453 |
|
454 |
#: src/Tribe/Attendees_Table.php:982
|
|
|
455 |
msgid "Search by Order Status"
|
456 |
msgstr ""
|
457 |
|
458 |
#: src/Tribe/Attendees_Table.php:983
|
|
|
459 |
msgid "Search by Order ID"
|
460 |
msgstr ""
|
461 |
|
462 |
#: src/Tribe/Attendees_Table.php:984
|
|
|
463 |
msgid "Search by Security Code"
|
464 |
msgstr ""
|
465 |
|
466 |
#: src/Tribe/Attendees_Table.php:985
|
467 |
-
|
|
|
468 |
msgstr ""
|
469 |
|
470 |
#: src/Tribe/Attendees_Table.php:986
|
|
|
471 |
msgid "Search by Product ID"
|
472 |
msgstr ""
|
473 |
|
@@ -476,55 +471,45 @@ msgid "Event Name or ID or Slug"
|
|
476 |
msgstr ""
|
477 |
|
478 |
#: src/Tribe/CSV_Importer/Column_Names.php:35
|
479 |
-
msgid "
|
480 |
msgstr ""
|
481 |
|
482 |
#: src/Tribe/CSV_Importer/Column_Names.php:36
|
483 |
-
msgid "
|
484 |
msgstr ""
|
485 |
|
486 |
#: src/Tribe/CSV_Importer/Column_Names.php:37
|
487 |
-
msgid "
|
488 |
msgstr ""
|
489 |
|
490 |
#: src/Tribe/CSV_Importer/Column_Names.php:38
|
491 |
-
msgid "
|
492 |
msgstr ""
|
493 |
|
494 |
#: src/Tribe/CSV_Importer/Column_Names.php:39
|
495 |
-
msgid "
|
496 |
msgstr ""
|
497 |
|
498 |
#: src/Tribe/CSV_Importer/Column_Names.php:40
|
499 |
-
msgid "
|
500 |
msgstr ""
|
501 |
|
502 |
#: src/Tribe/CSV_Importer/Column_Names.php:41
|
503 |
-
msgid "
|
504 |
msgstr ""
|
505 |
|
506 |
#: src/Tribe/CSV_Importer/Column_Names.php:42
|
507 |
-
msgid "
|
508 |
msgstr ""
|
509 |
|
510 |
#: src/Tribe/CSV_Importer/Column_Names.php:43
|
511 |
-
msgid "
|
512 |
msgstr ""
|
513 |
|
514 |
#: src/Tribe/CSV_Importer/RSVP_Importer.php:250
|
515 |
msgid "Recurring event tickets are not supported, event %s."
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: src/Tribe/CSV_Importer/Rows.php:35
|
519 |
-
msgctxt "import type"
|
520 |
-
msgid "RSVPs"
|
521 |
-
msgstr ""
|
522 |
-
|
523 |
-
#: src/Tribe/CSV_Importer/Rows.php:49
|
524 |
-
msgctxt "post type label"
|
525 |
-
msgid "RSVPs"
|
526 |
-
msgstr ""
|
527 |
-
|
528 |
#: src/Tribe/Commerce/Currency.php:189
|
529 |
msgid "Australian Dollar (AUD)"
|
530 |
msgstr ""
|
@@ -625,17 +610,18 @@ msgstr ""
|
|
625 |
msgid "U.S. Dollar (USD)"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:
|
|
|
629 |
msgctxt "attendee summary"
|
630 |
-
msgid "Total
|
631 |
msgstr ""
|
632 |
|
633 |
-
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:
|
634 |
msgctxt "attendee summary"
|
635 |
msgid "Complete:"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:
|
639 |
msgctxt "attendee summary"
|
640 |
msgid "Cancelled:"
|
641 |
msgstr ""
|
@@ -644,47 +630,46 @@ msgstr ""
|
|
644 |
msgid "pending"
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
648 |
msgid "There was an error"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
652 |
msgid "Attendee email and/or full name is missing"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
656 |
msgid ""
|
657 |
-
"Trying to oversell a
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
661 |
-
msgid "
|
662 |
msgstr ""
|
663 |
|
664 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
665 |
msgid ""
|
666 |
-
"In order to purchase
|
667 |
-
"address."
|
668 |
msgstr ""
|
669 |
|
670 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
671 |
-
msgid "You can't add more
|
672 |
msgstr ""
|
673 |
|
674 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
675 |
-
msgid "You should add at least one
|
676 |
msgstr ""
|
677 |
|
678 |
-
#: src/Tribe/Commerce/PayPal/Errors.php:
|
679 |
msgid ""
|
680 |
"Your order is currently processing. Once completed, you'll receive your "
|
681 |
-
"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: src/Tribe/Commerce/PayPal/Frontend/Tickets_Form.php:
|
685 |
msgid ""
|
686 |
-
"Your PayPal
|
687 |
-
"
|
688 |
msgstr ""
|
689 |
|
690 |
#: src/Tribe/Commerce/PayPal/Handler/IPN.php:143
|
@@ -721,6 +706,10 @@ msgctxt "Attendee number"
|
|
721 |
msgid "Attendee %1$s"
|
722 |
msgstr ""
|
723 |
|
|
|
|
|
|
|
|
|
724 |
#: src/Tribe/Commerce/PayPal/Main.php:437
|
725 |
msgid "Tribe Commerce Tickets"
|
726 |
msgstr ""
|
@@ -733,7 +722,7 @@ msgstr ""
|
|
733 |
msgid "Orders"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1153
|
737 |
msgid "Your tickets from %s"
|
738 |
msgstr ""
|
739 |
|
@@ -745,31 +734,31 @@ msgstr ""
|
|
745 |
msgid "Report"
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1884 src/Tribe/RSVP.php:
|
749 |
msgid "Return to the %1$sAttendees Report%2$s."
|
750 |
msgstr ""
|
751 |
|
752 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1891 src/Tribe/RSVP.php:
|
753 |
msgid "Post updated. %1$s"
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1895 src/Tribe/RSVP.php:
|
757 |
msgid "Post published. %1$s"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1898 src/Tribe/RSVP.php:
|
761 |
msgid "Post submitted."
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1899 src/Tribe/RSVP.php:
|
765 |
msgid "Post scheduled."
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: src/Tribe/Commerce/PayPal/Main.php:1900 src/Tribe/RSVP.php:
|
769 |
msgid "Post draft updated."
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: src/Tribe/Commerce/PayPal/Main.php:2589 src/Tribe/RSVP.php:
|
773 |
msgid "(deleted)"
|
774 |
msgstr ""
|
775 |
|
@@ -818,7 +807,7 @@ msgid "Order"
|
|
818 |
msgstr ""
|
819 |
|
820 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:99
|
821 |
-
#: src/views/tickets/email.php:
|
822 |
msgid "Purchaser"
|
823 |
msgstr ""
|
824 |
|
@@ -851,37 +840,36 @@ msgstr ""
|
|
851 |
msgid "No matching orders found."
|
852 |
msgstr ""
|
853 |
|
854 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
855 |
msgid "An event"
|
856 |
msgstr ""
|
857 |
|
858 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
859 |
msgid "in your PayPal account"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
863 |
msgid ""
|
864 |
-
"%1$s is oversold: there are more
|
865 |
-
"
|
866 |
-
"
|
867 |
-
"
|
868 |
-
"
|
869 |
-
"below."
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
873 |
msgid ""
|
874 |
"Create attendee records and send emails for all tickets in this order "
|
875 |
"(overselling the event)."
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
879 |
msgid ""
|
880 |
"Delete all attendees for this order and do not email tickets. You may also "
|
881 |
"want to refund the order %1$sin your PayPal account%2$s."
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:
|
885 |
msgid "Process order"
|
886 |
msgstr ""
|
887 |
|
@@ -936,136 +924,137 @@ msgid "The ticket post ID"
|
|
936 |
msgstr ""
|
937 |
|
938 |
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:56
|
939 |
-
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:
|
940 |
msgid "Invalid nonce"
|
941 |
msgstr ""
|
942 |
|
943 |
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:66
|
944 |
-
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:
|
945 |
-
#: src/Tribe/Metabox.php:
|
946 |
-
#: src/Tribe/Metabox.php:
|
947 |
msgid "Commerce Module invalid"
|
948 |
msgstr ""
|
949 |
|
950 |
-
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:
|
951 |
-
msgid "
|
952 |
msgstr ""
|
953 |
|
954 |
#: src/Tribe/Editor.php:209
|
955 |
msgid "Tickets Blocks"
|
956 |
msgstr ""
|
957 |
|
958 |
-
#: src/Tribe/JSON_LD/Order.php:132 src/Tribe/RSVP.php:
|
959 |
#: src/admin-views/editor/column-body-price.php:18
|
960 |
msgid "Free"
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: src/Tribe/Main.php:
|
|
|
|
|
|
|
|
|
|
|
964 |
msgid ""
|
965 |
"When The Events Calendar and Event Tickets are both activated, The Events "
|
966 |
"Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
|
967 |
msgstr ""
|
968 |
|
969 |
-
#: src/Tribe/Main.php:
|
970 |
msgid ""
|
971 |
"Sorry, Event Tickets requires WordPress %s or higher. Please upgrade your "
|
972 |
"WordPress install."
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: src/Tribe/Main.php:
|
976 |
msgid ""
|
977 |
"Sorry, Event Tickets requires PHP %s or higher. Talk to your Web host about "
|
978 |
"moving you to a newer version of PHP."
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: src/Tribe/Main.php:
|
982 |
msgid "Support for Event Tickets"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: src/Tribe/Main.php:
|
986 |
msgid "Settings overview"
|
987 |
msgstr ""
|
988 |
|
989 |
-
#: src/Tribe/Main.php:
|
990 |
msgid "Features overview"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: src/Tribe/Main.php:
|
994 |
msgid "Troubleshooting common problems"
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: src/Tribe/Main.php:
|
998 |
msgid "Customizing Event Tickets"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: src/Tribe/Main.php:
|
1002 |
msgid "New User Primer"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: src/Tribe/Main.php:
|
|
|
1006 |
msgid ""
|
1007 |
-
"We are committed to helping you sell
|
1008 |
-
"handy %s to get started."
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: src/Tribe/Main.php:
|
1012 |
msgid "open-source forum on WordPress.org"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: src/Tribe/Main.php:
|
1016 |
msgid ""
|
1017 |
"If you have tried the above steps and are still having trouble, you can post "
|
1018 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
1019 |
"and would be happy to assist you there."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: src/Tribe/Main.php:
|
1023 |
msgid "premium support on our website"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: src/Tribe/Main.php:
|
1027 |
-
msgid "
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: src/Tribe/Main.php:
|
1031 |
msgid ""
|
1032 |
"Looking for more immediate support? We offer %1$s with the purchase of any "
|
1033 |
"of our premium plugins (like %2$s). Pick up a license and you can post there "
|
1034 |
"directly and expect a response within 24-48 hours during weekdays."
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: src/Tribe/Main.php:
|
1038 |
msgid "post a thread"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: src/Tribe/Main.php:
|
1042 |
msgid ""
|
1043 |
-
"Already have
|
1044 |
"Our support team monitors the forums and will respond to your thread within "
|
1045 |
"24-48 hours (during the week)."
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: src/Tribe/Main.php:
|
1049 |
msgid ""
|
1050 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
1051 |
"premium support forums. Our support team monitors the forums and will "
|
1052 |
"respond to your thread within 24-48 hours (during the week)."
|
1053 |
msgstr ""
|
1054 |
|
1055 |
-
#: src/Tribe/Main.php:
|
1056 |
msgid "Welcome to Event Tickets!"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: src/Tribe/Main.php:
|
1060 |
msgid "Buy"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
-
#: src/Tribe/Main.php:
|
1064 |
-
msgctxt "button text"
|
1065 |
-
msgid "RSVP"
|
1066 |
-
msgstr ""
|
1067 |
-
|
1068 |
-
#: src/Tribe/Main.php:948
|
1069 |
msgid ""
|
1070 |
"When Event Tickets and Event Tickets Plus are both activated, Event Tickets "
|
1071 |
"Plus must be running version %1$s or greater. Please %2$smanually update now"
|
@@ -1076,13 +1065,13 @@ msgstr ""
|
|
1076 |
msgid "Invalid Post ID"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: src/Tribe/Metabox.php:188 src/Tribe/Metabox.php:
|
1080 |
-
#: src/Tribe/Metabox.php:
|
1081 |
msgid "Invalid parent Post"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
#: src/Tribe/Metabox.php:198
|
1085 |
-
msgid "Failed to
|
1086 |
msgstr ""
|
1087 |
|
1088 |
#: src/Tribe/Metabox.php:202
|
@@ -1090,22 +1079,22 @@ msgid "Commerce Provider invalid"
|
|
1090 |
msgstr ""
|
1091 |
|
1092 |
#: src/Tribe/Metabox.php:220
|
1093 |
-
msgid "Failed to
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: src/Tribe/Metabox.php:
|
1097 |
-
msgid "Invalid
|
1098 |
msgstr ""
|
1099 |
|
1100 |
-
#: src/Tribe/Metabox.php:
|
1101 |
-
msgid "Failed to
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#: src/Tribe/Metabox.php:
|
1105 |
-
msgid "Failed to
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: src/Tribe/Metabox.php:
|
1109 |
msgid "The attendee ID is missing from the request parameters."
|
1110 |
msgstr ""
|
1111 |
|
@@ -1130,7 +1119,7 @@ msgid "RSVP Title"
|
|
1130 |
msgstr ""
|
1131 |
|
1132 |
#: src/Tribe/Privacy.php:159 src/Tribe/Privacy.php:440
|
1133 |
-
#: src/views/blocks/rsvp/form/name.php:31 src/views/tickets/rsvp.php:
|
1134 |
msgid "Full Name"
|
1135 |
msgstr ""
|
1136 |
|
@@ -1168,7 +1157,7 @@ msgstr ""
|
|
1168 |
msgid "Order Number"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: src/Tribe/Privacy.php:524 src/views/tickets/tpp-success.php:
|
1172 |
msgid "Order Total"
|
1173 |
msgstr ""
|
1174 |
|
@@ -1254,7 +1243,7 @@ msgstr ""
|
|
1254 |
#: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:105
|
1255 |
msgid ""
|
1256 |
"If the attendee is for an RSVP ticket, this will be set to true if he/she is "
|
1257 |
-
"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
#: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:112
|
@@ -1262,23 +1251,23 @@ msgid "The attendee information; requires ET+"
|
|
1262 |
msgstr ""
|
1263 |
|
1264 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:20
|
1265 |
-
msgid "The
|
1266 |
msgstr ""
|
1267 |
|
1268 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:24
|
1269 |
-
msgid "The
|
1270 |
msgstr ""
|
1271 |
|
1272 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:28
|
1273 |
-
msgid "The
|
1274 |
msgstr ""
|
1275 |
|
1276 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:32
|
1277 |
-
msgid "The
|
1278 |
msgstr ""
|
1279 |
|
1280 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:36
|
1281 |
-
msgid "The
|
1282 |
msgstr ""
|
1283 |
|
1284 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:20
|
@@ -1286,7 +1275,7 @@ msgid "The time the attendee checked in"
|
|
1286 |
msgstr ""
|
1287 |
|
1288 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:27
|
1289 |
-
msgid "The check-in source for the attendee; e.g.
|
1290 |
msgstr ""
|
1291 |
|
1292 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:31
|
@@ -1328,11 +1317,11 @@ msgid "The payment date"
|
|
1328 |
msgstr ""
|
1329 |
|
1330 |
#: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:20
|
1331 |
-
msgid "How many attendees are
|
1332 |
msgstr ""
|
1333 |
|
1334 |
#: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:24
|
1335 |
-
msgid "How many attendees are
|
1336 |
msgstr ""
|
1337 |
|
1338 |
#: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:20
|
@@ -1831,11 +1820,6 @@ msgstr ""
|
|
1831 |
msgid "An error happened while building the response: "
|
1832 |
msgstr ""
|
1833 |
|
1834 |
-
#: src/Tribe/RSVP/Attendance_Totals.php:41
|
1835 |
-
msgctxt "attendee summary"
|
1836 |
-
msgid "Total RSVPs:"
|
1837 |
-
msgstr ""
|
1838 |
-
|
1839 |
#: src/Tribe/RSVP/Attendance_Totals.php:42
|
1840 |
msgctxt "attendee summary"
|
1841 |
msgid "Going:"
|
@@ -1846,11 +1830,6 @@ msgctxt "attendee summary"
|
|
1846 |
msgid "Not Going:"
|
1847 |
msgstr ""
|
1848 |
|
1849 |
-
#: src/Tribe/RSVP.php:168
|
1850 |
-
msgctxt "ticket provider"
|
1851 |
-
msgid "RSVP"
|
1852 |
-
msgstr ""
|
1853 |
-
|
1854 |
#: src/Tribe/RSVP.php:336
|
1855 |
msgid "RSVP Tickets"
|
1856 |
msgstr ""
|
@@ -1859,21 +1838,25 @@ msgstr ""
|
|
1859 |
msgid "RSVP Ticket"
|
1860 |
msgstr ""
|
1861 |
|
1862 |
-
#: src/Tribe/RSVP.php:
|
|
|
|
|
|
|
|
|
1863 |
msgid "You confirmed you will not be attending %s"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#: src/Tribe/RSVP.php:
|
1867 |
msgid ""
|
1868 |
-
"Your
|
1869 |
msgstr ""
|
1870 |
|
1871 |
-
#: src/Tribe/RSVP.php:
|
1872 |
-
msgid "You can't
|
1873 |
msgstr ""
|
1874 |
|
1875 |
-
#: src/Tribe/RSVP.php:
|
1876 |
-
msgid "In order to
|
1877 |
msgstr ""
|
1878 |
|
1879 |
#: src/Tribe/Status/Abstract_Commerce.php:168
|
@@ -1920,52 +1903,47 @@ msgstr ""
|
|
1920 |
msgid "Capacity"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
-
#: src/Tribe/Tickets.php:
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
#: src/Tribe/Tickets.php:405
|
1928 |
-
msgid "Delete Ticket"
|
1929 |
-
msgstr ""
|
1930 |
-
|
1931 |
-
#: src/Tribe/Tickets.php:480
|
1932 |
-
msgid "Move RSVP"
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#: src/Tribe/Tickets.php:
|
1936 |
-
msgid "Move
|
1937 |
msgstr ""
|
1938 |
|
1939 |
-
#: src/Tribe/Tickets.php:
|
1940 |
-
|
|
|
1941 |
msgstr ""
|
1942 |
|
1943 |
-
#: src/Tribe/Tickets.php:
|
1944 |
-
|
|
|
1945 |
msgstr ""
|
1946 |
|
1947 |
-
#: src/Tribe/Tickets.php:
|
1948 |
-
msgid "
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#: src/Tribe/Tickets.php:
|
1952 |
-
msgid "
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#: src/Tribe/Tickets.php:
|
1956 |
msgid " at "
|
1957 |
msgstr ""
|
1958 |
|
1959 |
-
#: src/Tribe/Tickets.php:
|
1960 |
-
msgid "
|
1961 |
msgstr ""
|
1962 |
|
1963 |
-
#: src/Tribe/Tickets.php:
|
1964 |
-
msgid "
|
1965 |
msgstr ""
|
1966 |
|
1967 |
-
#: src/Tribe/Tickets.php:
|
1968 |
-
msgid "There are no
|
1969 |
msgstr ""
|
1970 |
|
1971 |
#: src/Tribe/Tickets_Handler.php:84
|
@@ -1975,27 +1953,41 @@ msgstr ""
|
|
1975 |
msgid "Unlimited"
|
1976 |
msgstr ""
|
1977 |
|
1978 |
-
#: src/Tribe/Tickets_View.php:
|
1979 |
-
|
1980 |
-
|
1981 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1982 |
msgstr[0] ""
|
1983 |
msgstr[1] ""
|
1984 |
|
1985 |
-
#: src/Tribe/
|
1986 |
-
|
1987 |
-
|
1988 |
-
msgid_plural "Tickets"
|
1989 |
msgstr[0] ""
|
1990 |
msgstr[1] ""
|
1991 |
|
1992 |
-
#: src/Tribe/
|
1993 |
-
|
1994 |
-
msgid "
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#: src/Tribe/
|
1998 |
-
|
|
|
1999 |
msgstr ""
|
2000 |
|
2001 |
#: src/admin-views/admin-welcome-message.php:7
|
@@ -2172,11 +2164,6 @@ msgstr ""
|
|
2172 |
msgid "Price:"
|
2173 |
msgstr ""
|
2174 |
|
2175 |
-
#: src/admin-views/editor/column-body-price.php:16
|
2176 |
-
#: src/views/blocks/rsvp/icon.php:21
|
2177 |
-
msgid "RSVP"
|
2178 |
-
msgstr ""
|
2179 |
-
|
2180 |
#: src/admin-views/editor/column-head-price.php:1
|
2181 |
#: src/views/registration/summary/tickets-header.php:19
|
2182 |
msgid "Price"
|
@@ -2222,7 +2209,7 @@ msgid "at"
|
|
2222 |
msgstr ""
|
2223 |
|
2224 |
#: src/admin-views/editor/fieldset/advanced.php:95
|
2225 |
-
msgid "
|
2226 |
msgstr ""
|
2227 |
|
2228 |
#: src/admin-views/editor/fieldset/advanced.php:97
|
@@ -2231,8 +2218,7 @@ msgid "HH:MM"
|
|
2231 |
msgstr ""
|
2232 |
|
2233 |
#: src/admin-views/editor/fieldset/advanced.php:98
|
2234 |
-
msgid ""
|
2235 |
-
"If you do not set a start sale date, tickets will be available immediately."
|
2236 |
msgstr ""
|
2237 |
|
2238 |
#: src/admin-views/editor/fieldset/advanced.php:102
|
@@ -2241,17 +2227,17 @@ msgid "End sale:"
|
|
2241 |
msgstr ""
|
2242 |
|
2243 |
#: src/admin-views/editor/fieldset/advanced.php:124
|
2244 |
-
msgid "
|
2245 |
msgstr ""
|
2246 |
|
2247 |
#: src/admin-views/editor/fieldset/advanced.php:130
|
2248 |
msgid ""
|
2249 |
-
"If you do not set an end sale date,
|
2250 |
-
"
|
2251 |
msgstr ""
|
2252 |
|
2253 |
#: src/admin-views/editor/fieldset/advanced.php:132
|
2254 |
-
msgid "If you do not set an end sale date,
|
2255 |
msgstr ""
|
2256 |
|
2257 |
#: src/admin-views/editor/fieldset/history.php:27
|
@@ -2263,11 +2249,13 @@ msgid "Ti"
|
|
2263 |
msgstr ""
|
2264 |
|
2265 |
#: src/admin-views/editor/fieldset/price.php:7
|
2266 |
-
|
|
|
2267 |
msgstr ""
|
2268 |
|
2269 |
#: src/admin-views/editor/fieldset/price.php:21
|
2270 |
-
|
|
|
2271 |
msgstr ""
|
2272 |
|
2273 |
#: src/admin-views/editor/fieldset/price.php:99
|
@@ -2308,7 +2296,8 @@ msgid ""
|
|
2308 |
msgstr ""
|
2309 |
|
2310 |
#: src/admin-views/editor/list-row.php:43
|
2311 |
-
|
|
|
2312 |
msgstr ""
|
2313 |
|
2314 |
#: src/admin-views/editor/list-row.php:91
|
@@ -2321,8 +2310,9 @@ msgstr ""
|
|
2321 |
msgid "Available:"
|
2322 |
msgstr ""
|
2323 |
|
2324 |
-
#: src/admin-views/editor/list-row.php:
|
2325 |
-
|
|
|
2326 |
msgstr ""
|
2327 |
|
2328 |
#: src/admin-views/editor/list-table.php:40
|
@@ -2346,15 +2336,18 @@ msgid "View Attendees"
|
|
2346 |
msgstr ""
|
2347 |
|
2348 |
#: src/admin-views/editor/panel/list.php:66
|
2349 |
-
|
|
|
2350 |
msgstr ""
|
2351 |
|
2352 |
#: src/admin-views/editor/panel/list.php:72
|
2353 |
-
|
|
|
2354 |
msgstr ""
|
2355 |
|
2356 |
#: src/admin-views/editor/panel/list.php:74
|
2357 |
-
|
|
|
2358 |
msgstr ""
|
2359 |
|
2360 |
#: src/admin-views/editor/panel/list.php:79
|
@@ -2362,52 +2355,49 @@ msgid "Settings"
|
|
2362 |
msgstr ""
|
2363 |
|
2364 |
#: src/admin-views/editor/panel/settings.php:14
|
2365 |
-
|
2366 |
-
msgid "
|
2367 |
msgstr ""
|
2368 |
|
2369 |
-
#: src/admin-views/editor/panel/settings.php:
|
2370 |
-
|
|
|
2371 |
msgstr ""
|
2372 |
|
2373 |
-
#: src/admin-views/editor/panel/settings.php:
|
|
|
2374 |
msgid ""
|
2375 |
-
"Select an image from your Media Library to display on emailed
|
2376 |
-
"
|
2377 |
msgstr ""
|
2378 |
|
2379 |
-
#: src/admin-views/editor/panel/settings.php:
|
2380 |
msgid "Select an Image"
|
2381 |
msgstr ""
|
2382 |
|
2383 |
-
#: src/admin-views/editor/panel/settings.php:
|
2384 |
msgid "Remove"
|
2385 |
msgstr ""
|
2386 |
|
2387 |
-
#: src/admin-views/editor/panel/settings.php:
|
2388 |
msgid "Save settings"
|
2389 |
msgstr ""
|
2390 |
|
2391 |
-
#: src/admin-views/editor/panel/settings.php:
|
2392 |
-
#: src/admin-views/editor/panel/ticket.php:
|
2393 |
msgid "Cancel"
|
2394 |
msgstr ""
|
2395 |
|
2396 |
-
#: src/admin-views/editor/panel/ticket.php:53
|
2397 |
-
#: src/admin-views/meta-box.php:122
|
2398 |
-
msgid "Add new ticket"
|
2399 |
-
msgstr ""
|
2400 |
-
|
2401 |
-
#: src/admin-views/editor/panel/ticket.php:61 src/admin-views/meta-box.php:123
|
2402 |
-
msgid "Edit ticket"
|
2403 |
-
msgstr ""
|
2404 |
-
|
2405 |
#: src/admin-views/editor/panel/ticket.php:75
|
2406 |
-
|
|
|
2407 |
msgstr ""
|
2408 |
|
|
|
2409 |
#: src/admin-views/editor/panel/ticket.php:83
|
2410 |
-
|
|
|
2411 |
msgstr ""
|
2412 |
|
2413 |
#: src/admin-views/editor/panel/ticket.php:88
|
@@ -2415,23 +2405,27 @@ msgid "Type:"
|
|
2415 |
msgstr ""
|
2416 |
|
2417 |
#: src/admin-views/editor/panel/ticket.php:97
|
2418 |
-
|
|
|
2419 |
msgstr ""
|
2420 |
|
2421 |
-
#: src/admin-views/editor/panel/ticket.php:
|
2422 |
-
|
|
|
2423 |
msgstr ""
|
2424 |
|
2425 |
-
#: src/admin-views/editor/panel/ticket.php:
|
2426 |
msgid "Sell using:"
|
2427 |
msgstr ""
|
2428 |
|
2429 |
-
#: src/admin-views/editor/panel/ticket.php:
|
2430 |
-
|
|
|
2431 |
msgstr ""
|
2432 |
|
2433 |
-
#: src/admin-views/editor/panel/ticket.php:
|
2434 |
-
|
|
|
2435 |
msgstr ""
|
2436 |
|
2437 |
#: src/admin-views/legacy-ticket-fields.php:19
|
@@ -2461,13 +2455,15 @@ msgid "Move"
|
|
2461 |
msgstr ""
|
2462 |
|
2463 |
#: src/admin-views/meta-box.php:31
|
|
|
2464 |
msgid ""
|
2465 |
"This event was created using Community Events. Are you sure you want to sell "
|
2466 |
-
"
|
2467 |
msgstr ""
|
2468 |
|
2469 |
#: src/admin-views/meta-box.php:42
|
2470 |
-
|
|
|
2471 |
msgstr ""
|
2472 |
|
2473 |
#: src/admin-views/meta-box.php:43
|
@@ -2491,12 +2487,27 @@ msgid_plural "(%s sold)"
|
|
2491 |
msgstr[0] ""
|
2492 |
msgstr[1] ""
|
2493 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2494 |
#: src/admin-views/meta-box.php:145
|
2495 |
-
|
|
|
2496 |
msgstr ""
|
2497 |
|
2498 |
#: src/admin-views/meta-box.php:152
|
2499 |
-
|
|
|
2500 |
msgstr ""
|
2501 |
|
2502 |
#: src/admin-views/meta-box.php:215
|
@@ -2510,7 +2521,8 @@ msgid ""
|
|
2510 |
msgstr ""
|
2511 |
|
2512 |
#: src/admin-views/meta-box.php:239
|
2513 |
-
|
|
|
2514 |
msgstr ""
|
2515 |
|
2516 |
#: src/admin-views/move-tickets.php:19
|
@@ -2592,135 +2604,135 @@ msgid ""
|
|
2592 |
"statuses:"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#: src/admin-views/privacy.php:
|
2596 |
msgid "Hello,"
|
2597 |
msgstr ""
|
2598 |
|
2599 |
-
#: src/admin-views/privacy.php:
|
2600 |
msgid ""
|
2601 |
"This information serves as a guide on what sections need to be modified due "
|
2602 |
"to usage of Event Tickets and its Add-ons."
|
2603 |
msgstr ""
|
2604 |
|
2605 |
-
#: src/admin-views/privacy.php:
|
2606 |
msgid ""
|
2607 |
"You should include the information below in the correct sections of you "
|
2608 |
"privacy policy."
|
2609 |
msgstr ""
|
2610 |
|
2611 |
-
#: src/admin-views/privacy.php:
|
2612 |
msgid "Disclaimer:"
|
2613 |
msgstr ""
|
2614 |
|
2615 |
-
#: src/admin-views/privacy.php:
|
2616 |
msgid ""
|
2617 |
"This information is only for guidance and not to be considered as legal "
|
2618 |
"advice."
|
2619 |
msgstr ""
|
2620 |
|
2621 |
-
#: src/admin-views/privacy.php:
|
2622 |
msgid "What personal data we collect and why we collect it"
|
2623 |
msgstr ""
|
2624 |
|
2625 |
-
#: src/admin-views/privacy.php:
|
2626 |
msgid "Event, Attendee, and Ticket Purchaser Information"
|
2627 |
msgstr ""
|
2628 |
|
2629 |
-
#: src/admin-views/privacy.php:
|
2630 |
msgid ""
|
2631 |
"Through the usage of Event Tickets, Event Tickets Plus, and Community "
|
2632 |
"Tickets, information may be collected and stored within your website’s "
|
2633 |
"database."
|
2634 |
msgstr ""
|
2635 |
|
2636 |
-
#: src/admin-views/privacy.php:
|
2637 |
msgid "Suggested text:"
|
2638 |
msgstr ""
|
2639 |
|
2640 |
-
#: src/admin-views/privacy.php:
|
2641 |
msgid ""
|
2642 |
-
"If you create, submit, import, save, or publish event
|
2643 |
-
"well as
|
2644 |
-
"the local database:"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
-
#: src/admin-views/privacy.php:
|
2648 |
-
msgid "Attendees information (
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#: src/admin-views/privacy.php:
|
2652 |
msgid ""
|
2653 |
-
"
|
2654 |
-
"
|
2655 |
msgstr ""
|
2656 |
|
2657 |
-
#: src/admin-views/privacy.php:
|
2658 |
-
msgid "
|
2659 |
msgstr ""
|
2660 |
|
2661 |
-
#: src/admin-views/privacy.php:
|
2662 |
msgid ""
|
2663 |
-
"
|
2664 |
"WooCommerce, Easy Digital Downloads, or PayPal"
|
2665 |
msgstr ""
|
2666 |
|
2667 |
-
#: src/admin-views/privacy.php:
|
2668 |
msgid ""
|
2669 |
"Please note: The website owner can collect nearly any Attendee Information "
|
2670 |
-
"requested from
|
2671 |
msgstr ""
|
2672 |
|
2673 |
-
#: src/admin-views/privacy.php:
|
2674 |
msgid "API Keys"
|
2675 |
msgstr ""
|
2676 |
|
2677 |
-
#: src/admin-views/privacy.php:
|
2678 |
msgid ""
|
2679 |
-
"
|
2680 |
"functions are to enhance the features we've built in, some of which use "
|
2681 |
"Google Maps and PayPal. These API keys are not supplied by Modern Tribe."
|
2682 |
msgstr ""
|
2683 |
|
2684 |
-
#: src/admin-views/privacy.php:
|
2685 |
msgid "We make use of certain API keys, in order to provide specific features."
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: src/admin-views/privacy.php:
|
2689 |
msgid ""
|
2690 |
"These API keys may include the following third party services: Google Maps "
|
2691 |
"and PayPal."
|
2692 |
msgstr ""
|
2693 |
|
2694 |
-
#: src/admin-views/privacy.php:
|
2695 |
msgid "How Long You Retain this Data"
|
2696 |
msgstr ""
|
2697 |
|
2698 |
-
#: src/admin-views/privacy.php:
|
2699 |
msgid ""
|
2700 |
"All information (data) is retained in the local database indefinitely, "
|
2701 |
"unless otherwise deleted."
|
2702 |
msgstr ""
|
2703 |
|
2704 |
-
#: src/admin-views/privacy.php:
|
2705 |
msgid ""
|
2706 |
"Certain data may be exported or removed upon users request via the existing "
|
2707 |
-
"Exporter or Eraser. Please note, however, that several
|
2708 |
-
"which we are unable to perfect the gathering and export of all data for
|
2709 |
-
"end users. We suggest running a search in your local database, as well
|
2710 |
-
"within the WordPress Dashboard, in order to identify all data collected
|
2711 |
-
"stored for your specific user requests."
|
2712 |
msgstr ""
|
2713 |
|
2714 |
-
#: src/admin-views/privacy.php:
|
2715 |
msgid "Where We Send Your Data"
|
2716 |
msgstr ""
|
2717 |
|
2718 |
-
#: src/admin-views/privacy.php:
|
2719 |
msgid ""
|
2720 |
"Modern Tribe does not send any user data outside of your website by default."
|
2721 |
msgstr ""
|
2722 |
|
2723 |
-
#: src/admin-views/privacy.php:
|
2724 |
msgid ""
|
2725 |
"If you have extended our plugin(s) to send data to a third-party service "
|
2726 |
"such as Eventbrite, Google Maps, or PayPal, user information may be passed "
|
@@ -2733,7 +2745,8 @@ msgid "Leave blank for unlimited"
|
|
2733 |
msgstr ""
|
2734 |
|
2735 |
#: src/admin-views/ticket-type-history.php:10
|
2736 |
-
|
|
|
2737 |
msgstr ""
|
2738 |
|
2739 |
#: src/admin-views/ticket-type-history.php:14
|
@@ -2773,237 +2786,253 @@ msgstr ""
|
|
2773 |
msgid "Total Tickets Ordered"
|
2774 |
msgstr ""
|
2775 |
|
2776 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2777 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2778 |
msgstr ""
|
2779 |
|
2780 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2781 |
-
|
|
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2785 |
-
|
|
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2789 |
msgid "Below the event details [default]"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2793 |
msgid "Above the event details"
|
2794 |
msgstr ""
|
2795 |
|
2796 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2797 |
msgid "Below the event description"
|
2798 |
msgstr ""
|
2799 |
|
2800 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2801 |
msgid "Above the event description"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2805 |
-
|
|
|
|
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2809 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2810 |
msgid "This setting only impacts events made with the classic editor."
|
2811 |
msgstr ""
|
2812 |
|
2813 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2814 |
-
|
2815 |
-
|
2816 |
-
|
2817 |
-
#: src/admin-views/tribe-options-tickets.php:112
|
2818 |
-
msgid "Display # tickets left threshold"
|
2819 |
msgstr ""
|
2820 |
|
2821 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2822 |
msgid ""
|
2823 |
-
"If this number is less than the number of
|
2824 |
-
"
|
2825 |
-
"
|
2826 |
msgstr ""
|
2827 |
|
2828 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2829 |
msgid "Login Requirements"
|
2830 |
msgstr ""
|
2831 |
|
2832 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2833 |
msgid ""
|
2834 |
-
"You can require that users log into your site before they are able to
|
2835 |
-
"(or buy
|
2836 |
-
"
|
2837 |
msgstr ""
|
2838 |
|
2839 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2840 |
msgid "Tribe Commerce"
|
2841 |
msgstr ""
|
2842 |
|
2843 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2844 |
msgid "Check it out!"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2848 |
msgid ""
|
2849 |
"Tribe Commerce is a light implementation of a commerce gateway using PayPal "
|
2850 |
"and simplified stock handling. If you need more advanced features, take a "
|
2851 |
"look at %1$s. In addition to integrating with your favorite ecommerce "
|
2852 |
"provider, Event Tickets Plus includes options to collect custom information "
|
2853 |
-
"for attendees, check users in via QR codes, and share stock between
|
2854 |
-
"%
|
2855 |
msgstr ""
|
2856 |
|
2857 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2858 |
msgid "Enable Tribe Commerce "
|
2859 |
msgstr ""
|
2860 |
|
2861 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2862 |
msgid "Check this box if you wish to turn on Tribe Commerce functionality"
|
2863 |
msgstr ""
|
2864 |
|
2865 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2866 |
msgid "these instructions"
|
2867 |
msgstr ""
|
2868 |
|
2869 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2870 |
msgid ""
|
2871 |
-
"In order to use Tribe Commerce to sell
|
2872 |
-
"
|
2873 |
-
"
|
2874 |
msgstr ""
|
2875 |
|
2876 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2877 |
msgid ""
|
2878 |
"Have you entered this site's address in the Notification URL field in IPN "
|
2879 |
"Settings?"
|
2880 |
msgstr ""
|
2881 |
|
2882 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2883 |
msgid "Your site address is: %s"
|
2884 |
msgstr ""
|
2885 |
|
2886 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2887 |
msgid "Configure PayPal:"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2891 |
msgid "PayPal email to receive payments:"
|
2892 |
msgstr ""
|
2893 |
|
2894 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2895 |
msgid ""
|
2896 |
"Have you enabled instant payment notifications (IPN) in your PayPal "
|
2897 |
"account's Selling Tools?"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2901 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2902 |
msgid "No"
|
2903 |
msgstr ""
|
2904 |
|
2905 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2906 |
msgid "PayPal configuration status:"
|
2907 |
msgstr ""
|
2908 |
|
2909 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2910 |
msgid ""
|
2911 |
"For help creating and configuring your account, call PayPal at "
|
2912 |
"1-844-720-4038 (USA)"
|
2913 |
msgstr ""
|
2914 |
|
2915 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2916 |
msgid "PayPal Sandbox"
|
2917 |
msgstr ""
|
2918 |
|
2919 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2920 |
msgid "Enables PayPal Sandbox mode for testing."
|
2921 |
msgstr ""
|
2922 |
|
2923 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2924 |
msgid "Currency Code"
|
2925 |
msgstr ""
|
2926 |
|
2927 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2928 |
msgid "The currency that will be used for Tribe Commerce transactions."
|
2929 |
msgstr ""
|
2930 |
|
2931 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2932 |
msgid "Stock Handling"
|
2933 |
msgstr ""
|
2934 |
|
2935 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2936 |
msgid ""
|
2937 |
-
"When a customer purchases a
|
2938 |
-
"
|
2939 |
msgstr ""
|
2940 |
|
2941 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2942 |
msgid "Decrease available ticket stock as soon as a Pending order is created."
|
2943 |
msgstr ""
|
2944 |
|
2945 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2946 |
msgid ""
|
2947 |
"Only decrease available ticket stock if an order is confirmed as Completed "
|
2948 |
"by PayPal."
|
2949 |
msgstr ""
|
2950 |
|
2951 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2952 |
msgid "Success page"
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2956 |
msgid ""
|
2957 |
"After a successful PayPal order users will be redirected to this page; use "
|
2958 |
"the %s shortcode to display the order confirmation to the user in the page "
|
2959 |
"content."
|
2960 |
msgstr ""
|
2961 |
|
2962 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2963 |
msgid "Confirmation email sender address"
|
2964 |
msgstr ""
|
2965 |
|
2966 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2967 |
msgid ""
|
2968 |
-
"Email address PayPal
|
2969 |
"empty to use the default WordPress site email address."
|
2970 |
msgstr ""
|
2971 |
|
2972 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2973 |
msgid "Confirmation email sender name"
|
2974 |
msgstr ""
|
2975 |
|
2976 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2977 |
msgid ""
|
2978 |
-
"Sender name of the confirmation email sent to customers when confirming a "
|
2979 |
-
"
|
2980 |
msgstr ""
|
2981 |
|
2982 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2983 |
msgid "Confirmation email subject"
|
2984 |
msgstr ""
|
2985 |
|
2986 |
-
#: src/admin-views/tribe-options-tickets.php:
|
|
|
2987 |
msgid ""
|
2988 |
-
"Subject of the confirmation email sent to customers when confirming a
|
2989 |
"purchase."
|
2990 |
msgstr ""
|
2991 |
|
2992 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2993 |
-
|
|
|
2994 |
msgstr ""
|
2995 |
|
2996 |
-
#: src/admin-views/tribe-options-tickets.php:
|
2997 |
msgid ""
|
2998 |
"You can see and manage your IPN Notifications history from the IPN "
|
2999 |
"Notifications settings area (%s)."
|
3000 |
msgstr ""
|
3001 |
|
3002 |
-
#: src/admin-views/tribe-options-tickets.php:
|
3003 |
msgid "IPN Notify URL"
|
3004 |
msgstr ""
|
3005 |
|
3006 |
-
#: src/admin-views/tribe-options-tickets.php:
|
3007 |
msgid ""
|
3008 |
"Override the default IPN notify URL with this value. This value must be the "
|
3009 |
"same set in PayPal IPN Notifications settings area (%s)."
|
@@ -3037,90 +3066,131 @@ msgid ""
|
|
3037 |
"latest version of PHP."
|
3038 |
msgstr ""
|
3039 |
|
3040 |
-
#: src/template-tags/tickets.php:
|
3041 |
-
msgctxt "list view stock sold out"
|
3042 |
-
msgid "Sold out"
|
3043 |
-
msgstr ""
|
3044 |
-
|
3045 |
-
#: src/template-tags/tickets.php:243
|
3046 |
-
msgid "%s spot left"
|
3047 |
-
msgid_plural "%s spots left"
|
3048 |
-
msgstr[0] ""
|
3049 |
-
msgstr[1] ""
|
3050 |
-
|
3051 |
-
#: src/template-tags/tickets.php:245
|
3052 |
-
msgid "%s ticket left"
|
3053 |
-
msgid_plural "%s tickets left"
|
3054 |
-
msgstr[0] ""
|
3055 |
-
msgstr[1] ""
|
3056 |
-
|
3057 |
-
#: src/template-tags/tickets.php:257
|
3058 |
msgctxt "list view rsvp now ticket button"
|
3059 |
-
msgid "
|
3060 |
msgstr ""
|
3061 |
|
3062 |
-
#: src/template-tags/tickets.php:
|
3063 |
msgctxt "list view buy now ticket button"
|
3064 |
msgid "Buy Now!"
|
3065 |
msgstr ""
|
3066 |
|
3067 |
-
#: src/template-tags/tickets.php:
|
3068 |
msgid "issued"
|
3069 |
msgstr ""
|
3070 |
|
3071 |
-
#: src/template-tags/tickets.php:
|
3072 |
-
msgctxt "
|
3073 |
-
msgid "
|
3074 |
msgstr ""
|
3075 |
|
3076 |
-
#: src/template-tags/tickets.php:
|
3077 |
msgctxt "unlimited remaining stock message"
|
3078 |
msgid "%1$s available"
|
3079 |
msgstr ""
|
3080 |
|
3081 |
-
#: src/template-tags/tickets.php:
|
3082 |
msgctxt "ticket shared capacity message (remaining stock)"
|
3083 |
msgid "%1$d available of shared capacity"
|
3084 |
msgstr ""
|
3085 |
|
3086 |
-
#: src/template-tags/tickets.php:
|
3087 |
msgctxt "ticket stock message (remaining stock)"
|
3088 |
msgid "%1$d available"
|
3089 |
msgstr ""
|
3090 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3091 |
#: src/views/blocks/attendees/description.php:25
|
3092 |
msgid "One person is attending %2$s"
|
3093 |
msgid_plural "%d people are attending %s"
|
3094 |
msgstr[0] ""
|
3095 |
msgstr[1] ""
|
3096 |
|
3097 |
-
#: src/views/blocks/attendees/view-link.php:
|
|
|
|
|
|
|
|
|
|
|
3098 |
#: src/views/blocks/attendees/view-link.php:46
|
3099 |
-
|
3100 |
-
|
3101 |
-
|
3102 |
-
msgstr
|
3103 |
|
3104 |
-
#: src/views/blocks/attendees/view-link.php:
|
3105 |
-
#: src/views/tickets/view-link.php:
|
3106 |
-
|
|
|
3107 |
msgstr ""
|
3108 |
|
3109 |
-
#: src/views/blocks/attendees/view-link.php:
|
3110 |
-
#: src/views/tickets/view-link.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3111 |
msgid "View your %s"
|
3112 |
msgstr ""
|
3113 |
|
3114 |
-
#: src/views/blocks/rsvp/content-inactive.php:
|
3115 |
-
|
|
|
3116 |
msgstr ""
|
3117 |
|
3118 |
-
#: src/views/blocks/rsvp/content-inactive.php:
|
3119 |
-
|
|
|
3120 |
msgstr ""
|
3121 |
|
3122 |
#: src/views/blocks/rsvp/details/availability.php:23
|
3123 |
-
#: src/views/tickets/rsvp.php:
|
3124 |
msgid "Out of stock!"
|
3125 |
msgstr ""
|
3126 |
|
@@ -3128,28 +3198,32 @@ msgstr ""
|
|
3128 |
msgid "remaining"
|
3129 |
msgstr ""
|
3130 |
|
3131 |
-
#: src/views/blocks/rsvp/form/error.php:
|
3132 |
-
msgid "Please fill in the
|
3133 |
msgstr ""
|
3134 |
|
3135 |
#: src/views/blocks/rsvp/form/opt-out.php:39
|
3136 |
msgid "Don't show my information on public attendee lists"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
-
#: src/views/blocks/rsvp/form/
|
3140 |
-
|
3141 |
-
|
3142 |
-
|
3143 |
-
#: src/views/blocks/rsvp/form/submit-button.php:25
|
3144 |
-
msgid "Submit RSVP"
|
3145 |
msgstr ""
|
3146 |
|
3147 |
#: src/views/blocks/rsvp/form/submit-login.php:25
|
3148 |
msgid "Log in to RSVP"
|
3149 |
msgstr ""
|
3150 |
|
3151 |
-
#: src/views/blocks/rsvp/
|
3152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3153 |
msgstr ""
|
3154 |
|
3155 |
#: src/views/blocks/rsvp/status/going.php:25
|
@@ -3164,6 +3238,10 @@ msgstr ""
|
|
3164 |
msgid "Tickets are no longer available"
|
3165 |
msgstr ""
|
3166 |
|
|
|
|
|
|
|
|
|
3167 |
#: src/views/blocks/tickets/quantity-add.php:24
|
3168 |
msgid "+"
|
3169 |
msgstr ""
|
@@ -3191,8 +3269,8 @@ msgstr ""
|
|
3191 |
msgid "1"
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#: src/views/blocks/tickets/registration/summary/title.php:
|
3195 |
-
msgid "
|
3196 |
msgstr ""
|
3197 |
|
3198 |
#: src/views/blocks/tickets/submit-button.php:23
|
@@ -3259,11 +3337,11 @@ msgstr ""
|
|
3259 |
msgid "Find events to attend on %1$s"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
-
#: src/views/registration/content.php:
|
3263 |
msgid "Save and Checkout"
|
3264 |
msgstr ""
|
3265 |
|
3266 |
-
#: src/views/registration/content.php:
|
3267 |
msgid "Save Attendee Info"
|
3268 |
msgstr ""
|
3269 |
|
@@ -3285,7 +3363,7 @@ msgstr ""
|
|
3285 |
|
3286 |
#: src/views/tickets/email-non-attendance.php:39
|
3287 |
#: src/views/tickets/email-ticket-type-moved.php:25
|
3288 |
-
#: src/views/tickets/email-tickets-moved.php:26 src/views/tickets/email.php:
|
3289 |
msgid "Your tickets"
|
3290 |
msgstr ""
|
3291 |
|
@@ -3328,106 +3406,96 @@ msgid_plural ""
|
|
3328 |
msgstr[0] ""
|
3329 |
msgstr[1] ""
|
3330 |
|
3331 |
-
#: src/views/tickets/email.php:
|
3332 |
msgid "Ticket #"
|
3333 |
msgstr ""
|
3334 |
|
3335 |
-
#: src/views/tickets/email.php:
|
3336 |
-
|
|
|
3337 |
msgstr ""
|
3338 |
|
3339 |
-
#: src/views/tickets/email.php:
|
3340 |
msgid "Security Code"
|
3341 |
msgstr ""
|
3342 |
|
3343 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3344 |
-
|
|
|
3345 |
msgstr ""
|
3346 |
|
3347 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3348 |
msgid "Purchased by %1$s (%2$s)"
|
3349 |
msgstr ""
|
3350 |
|
3351 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3352 |
-
#: src/views/tickets/orders-rsvp.php:
|
3353 |
msgid " on %s"
|
3354 |
msgstr ""
|
3355 |
|
3356 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3357 |
-
#: src/views/tickets/orders-rsvp.php:
|
3358 |
msgid "Attendee %d"
|
3359 |
msgstr ""
|
3360 |
|
3361 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3362 |
msgctxt "order status label"
|
3363 |
msgid "Payment status: "
|
3364 |
msgstr ""
|
3365 |
|
3366 |
-
#: src/views/tickets/orders-pp-tickets.php:
|
3367 |
-
#: src/views/tickets/orders-rsvp.php:
|
3368 |
msgid "Type: "
|
3369 |
msgstr ""
|
3370 |
|
3371 |
-
#: src/views/tickets/orders-rsvp.php:
|
3372 |
-
msgid "My RSVPs for This %s"
|
3373 |
-
msgstr ""
|
3374 |
-
|
3375 |
-
#: src/views/tickets/orders-rsvp.php:38
|
3376 |
msgid "Reserved by %1$s (%2$s)"
|
3377 |
msgstr ""
|
3378 |
|
3379 |
-
#: src/views/tickets/orders-rsvp.php:
|
3380 |
msgctxt "order status label"
|
3381 |
msgid "RSVP: "
|
3382 |
msgstr ""
|
3383 |
|
3384 |
-
#: src/views/tickets/orders.php:
|
3385 |
-
|
|
|
3386 |
msgstr ""
|
3387 |
|
3388 |
-
#: src/views/tickets/orders.php:
|
3389 |
msgid "View %s"
|
3390 |
msgstr ""
|
3391 |
|
3392 |
-
#: src/views/tickets/orders.php:
|
3393 |
msgid "Update %s"
|
3394 |
msgstr ""
|
3395 |
|
3396 |
-
#: src/views/tickets/rsvp.php:
|
3397 |
-
msgctxt "form heading"
|
3398 |
-
msgid "RSVP"
|
3399 |
-
msgstr ""
|
3400 |
-
|
3401 |
-
#: src/views/tickets/rsvp.php:51
|
3402 |
msgid "Please fill in the RSVP quantity, confirmation name, and email fields."
|
3403 |
msgstr ""
|
3404 |
|
3405 |
-
#: src/views/tickets/rsvp.php:
|
3406 |
msgid "%1$s available"
|
3407 |
msgstr ""
|
3408 |
|
3409 |
-
#: src/views/tickets/rsvp.php:
|
3410 |
msgid "Send RSVP confirmation to:"
|
3411 |
msgstr ""
|
3412 |
|
3413 |
-
#: src/views/tickets/rsvp.php:
|
3414 |
-
msgctxt "order status label"
|
3415 |
-
msgid "RSVP"
|
3416 |
-
msgstr ""
|
3417 |
-
|
3418 |
-
#: src/views/tickets/rsvp.php:205
|
3419 |
msgid "Don't list me on the public attendee list"
|
3420 |
msgstr ""
|
3421 |
|
3422 |
-
#: src/views/tickets/rsvp.php:
|
3423 |
msgid "Login to RSVP"
|
3424 |
msgstr ""
|
3425 |
|
3426 |
-
#: src/views/tickets/rsvp.php:
|
3427 |
-
|
|
|
3428 |
msgstr ""
|
3429 |
|
3430 |
-
#: src/views/tickets/rsvp.php:
|
3431 |
msgid ""
|
3432 |
"You must have JavaScript activated to purchase tickets. Please enable "
|
3433 |
"JavaScript in your browser."
|
@@ -3437,80 +3505,62 @@ msgstr ""
|
|
3437 |
msgid "Return to Cart"
|
3438 |
msgstr ""
|
3439 |
|
3440 |
-
#: src/views/tickets/tpp-success.php:
|
3441 |
msgid "No order confirmation is available because no purchase was made."
|
3442 |
msgstr ""
|
3443 |
|
3444 |
-
#: src/views/tickets/tpp-success.php:
|
3445 |
msgid ""
|
3446 |
"Whoops! It looks like there was a problem with your order. Please contact "
|
3447 |
"the site owner for assistance."
|
3448 |
msgstr ""
|
3449 |
|
3450 |
-
#: src/views/tickets/tpp-success.php:
|
3451 |
msgid ""
|
3452 |
"Your order (#%s) is currently processing. Once completed, you'll receive "
|
3453 |
"your ticket(s) in an email."
|
3454 |
msgstr ""
|
3455 |
|
3456 |
-
#: src/views/tickets/tpp-success.php:
|
3457 |
msgid ""
|
3458 |
"Thank you for your purchase! You will receive your receipt and tickets via "
|
3459 |
"email."
|
3460 |
msgstr ""
|
3461 |
|
3462 |
-
#: src/views/tickets/tpp-success.php:
|
3463 |
msgid "Purchaser Name"
|
3464 |
msgstr ""
|
3465 |
|
3466 |
-
#: src/views/tickets/tpp-success.php:
|
3467 |
msgid "Purchaser Email"
|
3468 |
msgstr ""
|
3469 |
|
3470 |
-
#: src/views/tickets/tpp-success.php:
|
3471 |
-
msgctxt "Success page tickets table header"
|
3472 |
-
msgid "Ticket"
|
3473 |
-
msgstr ""
|
3474 |
-
|
3475 |
-
#: src/views/tickets/tpp-success.php:78
|
3476 |
msgctxt "Success page tickets table header"
|
3477 |
msgid "Price"
|
3478 |
msgstr ""
|
3479 |
|
3480 |
-
#: src/views/tickets/tpp-success.php:
|
3481 |
msgctxt "Success page tickets table header"
|
3482 |
msgid "Quantity"
|
3483 |
msgstr ""
|
3484 |
|
3485 |
-
#: src/views/tickets/tpp-success.php:
|
3486 |
msgctxt "Success page tickets table header"
|
3487 |
msgid "Subtotal"
|
3488 |
msgstr ""
|
3489 |
|
3490 |
-
#: src/views/tickets/tpp.php:
|
3491 |
-
msgctxt "form heading"
|
3492 |
-
msgid "Tickets"
|
3493 |
-
msgstr ""
|
3494 |
-
|
3495 |
-
#: src/views/tickets/tpp.php:60
|
3496 |
msgid "Please fill in the ticket confirmation name and email fields."
|
3497 |
msgstr ""
|
3498 |
|
3499 |
-
#: src/views/tickets/tpp.php:
|
3500 |
msgid "Buy now"
|
3501 |
msgstr ""
|
3502 |
|
3503 |
-
#: src/views/tickets/view-link.php:
|
3504 |
-
msgid "%
|
3505 |
-
|
3506 |
-
msgstr[0] ""
|
3507 |
-
msgstr[1] ""
|
3508 |
-
|
3509 |
-
#: src/views/tickets/view-link.php:48
|
3510 |
-
msgid "%d Ticket"
|
3511 |
-
msgid_plural "%d Tickets"
|
3512 |
-
msgstr[0] ""
|
3513 |
-
msgstr[1] ""
|
3514 |
|
3515 |
#. Plugin URI of the plugin/theme
|
3516 |
msgid "http://m.tri.be/1acb"
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Event Tickets 4.10.9\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
+
"POT-Creation-Date: 2019-09-30 14:56:11+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: 2019-09-30 14:56\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
+
#. #-#-#-#-# event-tickets.pot (Event Tickets 4.10.9) #-#-#-#-#
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
+
#: event-tickets.php:62 src/Tribe/Main.php:649 src/Tribe/Privacy.php:32
|
18 |
msgid "Event Tickets"
|
19 |
msgstr ""
|
20 |
|
36 |
msgstr ""
|
37 |
|
38 |
#: src/Tribe/Admin/Move_Ticket_Types.php:28
|
39 |
+
msgid "Move %s Types"
|
40 |
msgstr ""
|
41 |
|
42 |
#: src/Tribe/Admin/Move_Ticket_Types.php:72
|
44 |
msgid "All supported types"
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: src/Tribe/Admin/Move_Ticket_Types.php:106
|
48 |
msgid ""
|
49 |
+
"%1$s type could not be moved: the %2$s type or destination post was invalid."
|
|
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: src/Tribe/Admin/Move_Ticket_Types.php:115
|
53 |
+
msgid "%s type could not be moved: unexpected failure during reassignment."
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: src/Tribe/Admin/Move_Ticket_Types.php:121
|
57 |
msgid ""
|
58 |
+
"%1$s type %2$s for %3$s was successfully moved to %4$s. All previously sold "
|
59 |
+
"%5$s of this type have been transferred to %4$s. Please adjust capacity and "
|
60 |
+
"stock manually as needed. %2$s %6$s holders have received an email notifying "
|
61 |
+
"them of the change. You may now close this window!"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: src/Tribe/Admin/Move_Ticket_Types.php:216
|
65 |
msgid ""
|
66 |
+
"%1$s type was moved to <a href=\"%2$s\" target=\"_blank\">%3$s</a> from <a "
|
67 |
+
"href=\"%4$s\" target=\"_blank\">%5$s</a>"
|
68 |
msgstr ""
|
69 |
|
70 |
+
#: src/Tribe/Admin/Move_Ticket_Types.php:317
|
71 |
+
#: src/Tribe/Admin/Move_Tickets.php:746
|
72 |
msgid "Changes to your tickets from %s"
|
73 |
msgstr ""
|
74 |
|
103 |
msgid "Move"
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: src/Tribe/Admin/Move_Tickets.php:441
|
107 |
msgid ""
|
108 |
+
"%1$s could not be moved: valid %2$s IDs or a destination ID were not "
|
109 |
"provided."
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: src/Tribe/Admin/Move_Tickets.php:453
|
113 |
msgid ""
|
114 |
+
"%s could not be moved: there was an unexpected failure during reassignment."
|
|
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: src/Tribe/Admin/Move_Tickets.php:462
|
118 |
msgctxt "moved tickets success message fragment"
|
119 |
msgid "assigned to %s"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: src/Tribe/Admin/Move_Tickets.php:469
|
123 |
msgctxt "moved tickets success message fragment"
|
124 |
msgid "moved to %s and"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: src/Tribe/Admin/Move_Tickets.php:476
|
128 |
msgid ""
|
129 |
"%1$d attendee for %2$s was successfully %3$s. By default, we adjust capacity "
|
130 |
"and stock, however, we recommend reviewing each as needed to ensure numbers "
|
138 |
msgstr[0] ""
|
139 |
msgstr[1] ""
|
140 |
|
141 |
+
#: src/Tribe/Admin/Move_Tickets.php:621
|
142 |
msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: src/Tribe/Admin/Move_Tickets.php:808
|
146 |
msgid "This ticket was moved to %1$s from %2$s"
|
147 |
msgstr ""
|
148 |
|
167 |
msgid "No history available"
|
168 |
msgstr ""
|
169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
#: src/Tribe/Admin/Views/Ticketed.php:47
|
171 |
msgid "Ticketed"
|
172 |
msgstr ""
|
175 |
msgid "Unticketed"
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: src/Tribe/Assets.php:54 src/views/tickets/tpp-success.php:99
|
179 |
+
msgid "%s header image"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: src/Tribe/Assets.php:55
|
183 |
+
msgid "Set as %s header"
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: src/Tribe/Assets.php:113
|
187 |
msgid "Are you sure you want to delete this ticket? This cannot be undone."
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: src/Tribe/Assets.php:119
|
191 |
msgid ""
|
192 |
"It looks like you have modified your shared capacity setting but have not "
|
193 |
"saved or updated the post."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: src/Tribe/Assets.php:126 src/Tribe/Metabox.php:557
|
197 |
msgid "Please enter in without thousand separators and currency symbols."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: src/Tribe/Assets.php:194
|
201 |
msgid ""
|
202 |
"There is unsaved attendee information. Are you sure you want to continue?"
|
203 |
msgstr ""
|
207 |
msgid "Deleted Attendees:"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: src/Tribe/Attendee_Registration/Template.php:378
|
211 |
msgid "Attendee Registration"
|
212 |
msgstr ""
|
213 |
|
283 |
|
284 |
#: src/Tribe/Attendees.php:501
|
285 |
msgctxt "attendee export"
|
286 |
+
msgid "%s ID"
|
287 |
msgstr ""
|
288 |
|
289 |
#: src/Tribe/Attendees.php:502
|
296 |
msgid "Customer Email Address"
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: src/Tribe/Attendees.php:532 src/admin-views/tribe-options-tickets.php:241
|
300 |
+
#: src/admin-views/tribe-options-tickets.php:253
|
301 |
msgid "Yes"
|
302 |
msgstr ""
|
303 |
|
341 |
msgid "Number of attendees per page:"
|
342 |
msgstr ""
|
343 |
|
|
|
|
|
|
|
|
|
|
|
344 |
#: src/Tribe/Attendees_Table.php:117
|
345 |
msgctxt "attendee table"
|
346 |
msgid "Primary Information"
|
406 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:100 src/Tribe/Privacy.php:164
|
407 |
#: src/Tribe/Privacy.php:445 src/Tribe/Privacy.php:541
|
408 |
#: src/admin-views/admin-welcome-message.php:62
|
409 |
+
#: src/views/blocks/rsvp/form/email.php:32 src/views/tickets/rsvp.php:173
|
410 |
msgid "Email"
|
411 |
msgstr ""
|
412 |
|
427 |
msgstr ""
|
428 |
|
429 |
#: src/Tribe/Attendees_Table.php:979
|
430 |
+
msgctxt "Attendees Table search options"
|
431 |
msgid "Search by Purchaser Name"
|
432 |
msgstr ""
|
433 |
|
434 |
#: src/Tribe/Attendees_Table.php:980
|
435 |
+
msgctxt "Attendees Table search options"
|
436 |
msgid "Search by Purchaser Email"
|
437 |
msgstr ""
|
438 |
|
439 |
#: src/Tribe/Attendees_Table.php:981
|
440 |
+
msgctxt "Attendees Table search options"
|
441 |
msgid "Search by User ID"
|
442 |
msgstr ""
|
443 |
|
444 |
#: src/Tribe/Attendees_Table.php:982
|
445 |
+
msgctxt "Attendees Table search options"
|
446 |
msgid "Search by Order Status"
|
447 |
msgstr ""
|
448 |
|
449 |
#: src/Tribe/Attendees_Table.php:983
|
450 |
+
msgctxt "Attendees Table search options"
|
451 |
msgid "Search by Order ID"
|
452 |
msgstr ""
|
453 |
|
454 |
#: src/Tribe/Attendees_Table.php:984
|
455 |
+
msgctxt "Attendees Table search options"
|
456 |
msgid "Search by Security Code"
|
457 |
msgstr ""
|
458 |
|
459 |
#: src/Tribe/Attendees_Table.php:985
|
460 |
+
msgctxt "Attendees Table search options"
|
461 |
+
msgid "Search by %s ID"
|
462 |
msgstr ""
|
463 |
|
464 |
#: src/Tribe/Attendees_Table.php:986
|
465 |
+
msgctxt "Attendees Table search options"
|
466 |
msgid "Search by Product ID"
|
467 |
msgstr ""
|
468 |
|
471 |
msgstr ""
|
472 |
|
473 |
#: src/Tribe/CSV_Importer/Column_Names.php:35
|
474 |
+
msgid "%s Name"
|
475 |
msgstr ""
|
476 |
|
477 |
#: src/Tribe/CSV_Importer/Column_Names.php:36
|
478 |
+
msgid "%s Description"
|
479 |
msgstr ""
|
480 |
|
481 |
#: src/Tribe/CSV_Importer/Column_Names.php:37
|
482 |
+
msgid "%s Show Description"
|
483 |
msgstr ""
|
484 |
|
485 |
#: src/Tribe/CSV_Importer/Column_Names.php:38
|
486 |
+
msgid "%s Start Sale Date"
|
487 |
msgstr ""
|
488 |
|
489 |
#: src/Tribe/CSV_Importer/Column_Names.php:39
|
490 |
+
msgid "%s Start Sale Time"
|
491 |
msgstr ""
|
492 |
|
493 |
#: src/Tribe/CSV_Importer/Column_Names.php:40
|
494 |
+
msgid "%s End Sale Date"
|
495 |
msgstr ""
|
496 |
|
497 |
#: src/Tribe/CSV_Importer/Column_Names.php:41
|
498 |
+
msgid "%s End Sale Time"
|
499 |
msgstr ""
|
500 |
|
501 |
#: src/Tribe/CSV_Importer/Column_Names.php:42
|
502 |
+
msgid "%s Stock"
|
503 |
msgstr ""
|
504 |
|
505 |
#: src/Tribe/CSV_Importer/Column_Names.php:43
|
506 |
+
msgid "%s Capacity"
|
507 |
msgstr ""
|
508 |
|
509 |
#: src/Tribe/CSV_Importer/RSVP_Importer.php:250
|
510 |
msgid "Recurring event tickets are not supported, event %s."
|
511 |
msgstr ""
|
512 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
513 |
#: src/Tribe/Commerce/Currency.php:189
|
514 |
msgid "Australian Dollar (AUD)"
|
515 |
msgstr ""
|
610 |
msgid "U.S. Dollar (USD)"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:77
|
614 |
+
#: src/Tribe/RSVP/Attendance_Totals.php:41
|
615 |
msgctxt "attendee summary"
|
616 |
+
msgid "Total %s:"
|
617 |
msgstr ""
|
618 |
|
619 |
+
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:78
|
620 |
msgctxt "attendee summary"
|
621 |
msgid "Complete:"
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: src/Tribe/Commerce/PayPal/Attendance_Totals.php:79
|
625 |
msgctxt "attendee summary"
|
626 |
msgid "Cancelled:"
|
627 |
msgstr ""
|
630 |
msgid "pending"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:24
|
634 |
msgid "There was an error"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:25
|
638 |
msgid "Attendee email and/or full name is missing"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:26
|
642 |
msgid ""
|
643 |
+
"Trying to oversell a %s but the current oversell policy does not allow it"
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:27
|
647 |
+
msgid "%s quantity is 0"
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:30
|
651 |
msgid ""
|
652 |
+
"In order to purchase %s, you must enter your name and a valid email address."
|
|
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:31
|
656 |
+
msgid "You can't add more %1$s than the total remaining %1$s."
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:32
|
660 |
+
msgid "You should add at least one %s."
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: src/Tribe/Commerce/PayPal/Errors.php:35
|
664 |
msgid ""
|
665 |
"Your order is currently processing. Once completed, you'll receive your "
|
666 |
+
"%s(s) in an email."
|
667 |
msgstr ""
|
668 |
|
669 |
+
#: src/Tribe/Commerce/PayPal/Frontend/Tickets_Form.php:77
|
670 |
msgid ""
|
671 |
+
"Your PayPal %1$s has been received! Check your email for your PayPal %1$s "
|
672 |
+
"confirmation."
|
673 |
msgstr ""
|
674 |
|
675 |
#: src/Tribe/Commerce/PayPal/Handler/IPN.php:143
|
706 |
msgid "Attendee %1$s"
|
707 |
msgstr ""
|
708 |
|
709 |
+
#: src/Tribe/Commerce/PayPal/Main.php:435
|
710 |
+
msgid "Tickets"
|
711 |
+
msgstr ""
|
712 |
+
|
713 |
#: src/Tribe/Commerce/PayPal/Main.php:437
|
714 |
msgid "Tribe Commerce Tickets"
|
715 |
msgstr ""
|
722 |
msgid "Orders"
|
723 |
msgstr ""
|
724 |
|
725 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1153
|
726 |
msgid "Your tickets from %s"
|
727 |
msgstr ""
|
728 |
|
734 |
msgid "Report"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1884 src/Tribe/RSVP.php:1707
|
738 |
msgid "Return to the %1$sAttendees Report%2$s."
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1891 src/Tribe/RSVP.php:1714
|
742 |
msgid "Post updated. %1$s"
|
743 |
msgstr ""
|
744 |
|
745 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1895 src/Tribe/RSVP.php:1718
|
746 |
msgid "Post published. %1$s"
|
747 |
msgstr ""
|
748 |
|
749 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1898 src/Tribe/RSVP.php:1721
|
750 |
msgid "Post submitted."
|
751 |
msgstr ""
|
752 |
|
753 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1899 src/Tribe/RSVP.php:1722
|
754 |
msgid "Post scheduled."
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: src/Tribe/Commerce/PayPal/Main.php:1900 src/Tribe/RSVP.php:1723
|
758 |
msgid "Post draft updated."
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: src/Tribe/Commerce/PayPal/Main.php:2589 src/Tribe/RSVP.php:1379
|
762 |
msgid "(deleted)"
|
763 |
msgstr ""
|
764 |
|
807 |
msgstr ""
|
808 |
|
809 |
#: src/Tribe/Commerce/PayPal/Orders/Table.php:99
|
810 |
+
#: src/views/tickets/email.php:414
|
811 |
msgid "Purchaser"
|
812 |
msgstr ""
|
813 |
|
840 |
msgid "No matching orders found."
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:111
|
844 |
msgid "An event"
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:123
|
848 |
msgid "in your PayPal account"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:125
|
852 |
msgid ""
|
853 |
+
"%1$s is oversold: there are more %2$s sold than the available capacity. This "
|
854 |
+
"can occur when the PayPal transaction is not completed immediately, delaying "
|
855 |
+
"the decrease in %3$s availability. Order %4$s includes %5$s %3$s(s). There "
|
856 |
+
"are only %6$s %3$s(s) left. %7$s emails have not yet been sent for this "
|
857 |
+
"order. Choose how to process this order from the options below."
|
|
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:221
|
861 |
msgid ""
|
862 |
"Create attendee records and send emails for all tickets in this order "
|
863 |
"(overselling the event)."
|
864 |
msgstr ""
|
865 |
|
866 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:228
|
867 |
msgid ""
|
868 |
"Delete all attendees for this order and do not email tickets. You may also "
|
869 |
"want to refund the order %1$sin your PayPal account%2$s."
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:246
|
873 |
msgid "Process order"
|
874 |
msgstr ""
|
875 |
|
924 |
msgstr ""
|
925 |
|
926 |
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:56
|
927 |
+
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:229
|
928 |
msgid "Invalid nonce"
|
929 |
msgstr ""
|
930 |
|
931 |
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:66
|
932 |
+
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:243
|
933 |
+
#: src/Tribe/Metabox.php:269 src/Tribe/Metabox.php:315
|
934 |
+
#: src/Tribe/Metabox.php:353 src/Tribe/Metabox.php:390
|
935 |
msgid "Commerce Module invalid"
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:274
|
939 |
+
msgid "%s was not able to be updated"
|
940 |
msgstr ""
|
941 |
|
942 |
#: src/Tribe/Editor.php:209
|
943 |
msgid "Tickets Blocks"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: src/Tribe/JSON_LD/Order.php:132 src/Tribe/RSVP.php:1038
|
947 |
#: src/admin-views/editor/column-body-price.php:18
|
948 |
msgid "Free"
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: src/Tribe/Main.php:141
|
952 |
+
msgctxt "provider_plugin_name"
|
953 |
+
msgid "Tickets"
|
954 |
+
msgstr ""
|
955 |
+
|
956 |
+
#: src/Tribe/Main.php:406
|
957 |
msgid ""
|
958 |
"When The Events Calendar and Event Tickets are both activated, The Events "
|
959 |
"Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
|
960 |
msgstr ""
|
961 |
|
962 |
+
#: src/Tribe/Main.php:469
|
963 |
msgid ""
|
964 |
"Sorry, Event Tickets requires WordPress %s or higher. Please upgrade your "
|
965 |
"WordPress install."
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: src/Tribe/Main.php:473
|
969 |
msgid ""
|
970 |
"Sorry, Event Tickets requires PHP %s or higher. Talk to your Web host about "
|
971 |
"moving you to a newer version of PHP."
|
972 |
msgstr ""
|
973 |
|
974 |
+
#: src/Tribe/Main.php:581
|
975 |
msgid "Support for Event Tickets"
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: src/Tribe/Main.php:583
|
979 |
msgid "Settings overview"
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: src/Tribe/Main.php:584
|
983 |
msgid "Features overview"
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: src/Tribe/Main.php:585
|
987 |
msgid "Troubleshooting common problems"
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: src/Tribe/Main.php:586
|
991 |
msgid "Customizing Event Tickets"
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: src/Tribe/Main.php:603 src/admin-views/admin-welcome-message.php:34
|
995 |
msgid "New User Primer"
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: src/Tribe/Main.php:605
|
999 |
+
msgctxt "help feature box section"
|
1000 |
msgid ""
|
1001 |
+
"We are committed to helping you sell %1$s for your event. Check out our "
|
1002 |
+
"handy %2$s to get started."
|
1003 |
msgstr ""
|
1004 |
|
1005 |
+
#: src/Tribe/Main.php:622
|
1006 |
msgid "open-source forum on WordPress.org"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
+
#: src/Tribe/Main.php:623
|
1010 |
msgid ""
|
1011 |
"If you have tried the above steps and are still having trouble, you can post "
|
1012 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
1013 |
"and would be happy to assist you there."
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: src/Tribe/Main.php:625
|
1017 |
msgid "premium support on our website"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: src/Tribe/Main.php:626 src/admin-views/tribe-options-tickets.php:158
|
1021 |
+
msgid "Event Tickets Plus"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
+
#: src/Tribe/Main.php:627
|
1025 |
msgid ""
|
1026 |
"Looking for more immediate support? We offer %1$s with the purchase of any "
|
1027 |
"of our premium plugins (like %2$s). Pick up a license and you can post there "
|
1028 |
"directly and expect a response within 24-48 hours during weekdays."
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: src/Tribe/Main.php:629 src/Tribe/Main.php:634
|
1032 |
msgid "post a thread"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
+
#: src/Tribe/Main.php:630
|
1036 |
msgid ""
|
1037 |
+
"Already have Event Tickets Plus? You can %s in our premium support forums. "
|
1038 |
"Our support team monitors the forums and will respond to your thread within "
|
1039 |
"24-48 hours (during the week)."
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: src/Tribe/Main.php:635
|
1043 |
msgid ""
|
1044 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
1045 |
"premium support forums. Our support team monitors the forums and will "
|
1046 |
"respond to your thread within 24-48 hours (during the week)."
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: src/Tribe/Main.php:736
|
1050 |
msgid "Welcome to Event Tickets!"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: src/Tribe/Main.php:874
|
1054 |
msgid "Buy"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: src/Tribe/Main.php:953
|
|
|
|
|
|
|
|
|
|
|
1058 |
msgid ""
|
1059 |
"When Event Tickets and Event Tickets Plus are both activated, Event Tickets "
|
1060 |
"Plus must be running version %1$s or greater. Please %2$smanually update now"
|
1065 |
msgid "Invalid Post ID"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: src/Tribe/Metabox.php:188 src/Tribe/Metabox.php:247
|
1069 |
+
#: src/Tribe/Metabox.php:299
|
1070 |
msgid "Invalid parent Post"
|
1071 |
msgstr ""
|
1072 |
|
1073 |
#: src/Tribe/Metabox.php:198
|
1074 |
+
msgid "Failed to add the %s. Refresh the page to try again."
|
1075 |
msgstr ""
|
1076 |
|
1077 |
#: src/Tribe/Metabox.php:202
|
1079 |
msgstr ""
|
1080 |
|
1081 |
#: src/Tribe/Metabox.php:220
|
1082 |
+
msgid "Failed to add the %s"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: src/Tribe/Metabox.php:253 src/Tribe/Metabox.php:305
|
1086 |
+
msgid "Invalid %s"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: src/Tribe/Metabox.php:263
|
1090 |
+
msgid "Failed to edit the %s. Refresh the page to try again."
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: src/Tribe/Metabox.php:309
|
1094 |
+
msgid "Failed to delete the %s. Refresh the page to try again."
|
1095 |
msgstr ""
|
1096 |
|
1097 |
+
#: src/Tribe/Metabox.php:347 src/Tribe/Metabox.php:384
|
1098 |
msgid "The attendee ID is missing from the request parameters."
|
1099 |
msgstr ""
|
1100 |
|
1119 |
msgstr ""
|
1120 |
|
1121 |
#: src/Tribe/Privacy.php:159 src/Tribe/Privacy.php:440
|
1122 |
+
#: src/views/blocks/rsvp/form/name.php:31 src/views/tickets/rsvp.php:165
|
1123 |
msgid "Full Name"
|
1124 |
msgstr ""
|
1125 |
|
1157 |
msgid "Order Number"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
+
#: src/Tribe/Privacy.php:524 src/views/tickets/tpp-success.php:138
|
1161 |
msgid "Order Total"
|
1162 |
msgstr ""
|
1163 |
|
1243 |
#: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:105
|
1244 |
msgid ""
|
1245 |
"If the attendee is for an RSVP ticket, this will be set to true if he/she is "
|
1246 |
+
"\"Going\", false otherwise"
|
1247 |
msgstr ""
|
1248 |
|
1249 |
#: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:112
|
1251 |
msgstr ""
|
1252 |
|
1253 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:20
|
1254 |
+
msgid "The %s available capacity percentage"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:24
|
1258 |
+
msgid "The %s max capacity"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:28
|
1262 |
+
msgid "The %s current available capacity"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:32
|
1266 |
+
msgid "The %s sale count"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
#: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:36
|
1270 |
+
msgid "The %s pending count"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:20
|
1275 |
msgstr ""
|
1276 |
|
1277 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:27
|
1278 |
+
msgid "The check-in source for the attendee; e.g. \"kiosk\" or \"site\""
|
1279 |
msgstr ""
|
1280 |
|
1281 |
#: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:31
|
1317 |
msgstr ""
|
1318 |
|
1319 |
#: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:20
|
1320 |
+
msgid "How many attendees are \"Going\""
|
1321 |
msgstr ""
|
1322 |
|
1323 |
#: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:24
|
1324 |
+
msgid "How many attendees are \"Not going\""
|
1325 |
msgstr ""
|
1326 |
|
1327 |
#: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:20
|
1820 |
msgid "An error happened while building the response: "
|
1821 |
msgstr ""
|
1822 |
|
|
|
|
|
|
|
|
|
|
|
1823 |
#: src/Tribe/RSVP/Attendance_Totals.php:42
|
1824 |
msgctxt "attendee summary"
|
1825 |
msgid "Going:"
|
1830 |
msgid "Not Going:"
|
1831 |
msgstr ""
|
1832 |
|
|
|
|
|
|
|
|
|
|
|
1833 |
#: src/Tribe/RSVP.php:336
|
1834 |
msgid "RSVP Tickets"
|
1835 |
msgstr ""
|
1838 |
msgid "RSVP Ticket"
|
1839 |
msgstr ""
|
1840 |
|
1841 |
+
#: src/Tribe/RSVP.php:732
|
1842 |
+
msgid "Your %1$s from %2$s"
|
1843 |
+
msgstr ""
|
1844 |
+
|
1845 |
+
#: src/Tribe/RSVP.php:823
|
1846 |
msgid "You confirmed you will not be attending %s"
|
1847 |
msgstr ""
|
1848 |
|
1849 |
+
#: src/Tribe/RSVP.php:1136
|
1850 |
msgid ""
|
1851 |
+
"Your %1$s has been received! Check your email for your %1$s confirmation."
|
1852 |
msgstr ""
|
1853 |
|
1854 |
+
#: src/Tribe/RSVP.php:1143
|
1855 |
+
msgid "You can't %1$s more than the total remaining %2$s."
|
1856 |
msgstr ""
|
1857 |
|
1858 |
+
#: src/Tribe/RSVP.php:1151
|
1859 |
+
msgid "In order to %s, you must enter your name and a valid email address."
|
1860 |
msgstr ""
|
1861 |
|
1862 |
#: src/Tribe/Status/Abstract_Commerce.php:168
|
1903 |
msgid "Capacity"
|
1904 |
msgstr ""
|
1905 |
|
1906 |
+
#: src/Tribe/Tickets.php:406
|
1907 |
+
msgctxt "delete link"
|
1908 |
+
msgid "Delete %s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1909 |
msgstr ""
|
1910 |
|
1911 |
+
#: src/Tribe/Tickets.php:488
|
1912 |
+
msgid "Move %s"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
+
#: src/Tribe/Tickets.php:1548
|
1916 |
+
msgctxt "global stock mode option"
|
1917 |
+
msgid "Shared capacity with other %s"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: src/Tribe/Tickets.php:1549
|
1921 |
+
msgctxt "global stock mode option (individual)"
|
1922 |
+
msgid "Set capacity for this %s only"
|
1923 |
msgstr ""
|
1924 |
|
1925 |
+
#: src/Tribe/Tickets.php:2197
|
1926 |
+
msgid "%s are not available as this %s has passed."
|
1927 |
msgstr ""
|
1928 |
|
1929 |
+
#: src/Tribe/Tickets.php:2233
|
1930 |
+
msgid "%s will be available on "
|
1931 |
msgstr ""
|
1932 |
|
1933 |
+
#: src/Tribe/Tickets.php:2239
|
1934 |
msgid " at "
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: src/Tribe/Tickets.php:2242
|
1938 |
+
msgid "%s are not yet available"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: src/Tribe/Tickets.php:2245
|
1942 |
+
msgid "%s are no longer available."
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: src/Tribe/Tickets.php:2247
|
1946 |
+
msgid "There are no %s available at this time."
|
1947 |
msgstr ""
|
1948 |
|
1949 |
#: src/Tribe/Tickets_Handler.php:84
|
1953 |
msgid "Unlimited"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: src/Tribe/Tickets_View.php:820 src/views/blocks/attendees/view-link.php:61
|
1957 |
+
#: src/views/tickets/view-link.php:58
|
1958 |
+
msgctxt "separator if there are both RSVPs and Tickets"
|
1959 |
+
msgid " and "
|
1960 |
+
msgstr ""
|
1961 |
+
|
1962 |
+
#: src/Tribe/Tickets_View.php:881
|
1963 |
+
msgid "This %s is no longer active."
|
1964 |
+
msgstr ""
|
1965 |
+
|
1966 |
+
#: src/Tribe/Views/V2/Models/Tickets.php:138 src/template-tags/tickets.php:215
|
1967 |
+
msgctxt "list view stock sold out"
|
1968 |
+
msgid "Sold out"
|
1969 |
+
msgstr ""
|
1970 |
+
|
1971 |
+
#: src/Tribe/Views/V2/Models/Tickets.php:170 src/template-tags/tickets.php:248
|
1972 |
+
msgid "%s spot left"
|
1973 |
+
msgid_plural "%s spots left"
|
1974 |
msgstr[0] ""
|
1975 |
msgstr[1] ""
|
1976 |
|
1977 |
+
#: src/Tribe/Views/V2/Models/Tickets.php:172 src/template-tags/tickets.php:250
|
1978 |
+
msgid "%s ticket left"
|
1979 |
+
msgid_plural "%s tickets left"
|
|
|
1980 |
msgstr[0] ""
|
1981 |
msgstr[1] ""
|
1982 |
|
1983 |
+
#: src/Tribe/Views/V2/Models/Tickets.php:182
|
1984 |
+
msgctxt "list view rsvp now ticket button"
|
1985 |
+
msgid "%s Now"
|
1986 |
msgstr ""
|
1987 |
|
1988 |
+
#: src/Tribe/Views/V2/Models/Tickets.php:185
|
1989 |
+
msgctxt "list view buy now ticket button"
|
1990 |
+
msgid "Get %s"
|
1991 |
msgstr ""
|
1992 |
|
1993 |
#: src/admin-views/admin-welcome-message.php:7
|
2164 |
msgid "Price:"
|
2165 |
msgstr ""
|
2166 |
|
|
|
|
|
|
|
|
|
|
|
2167 |
#: src/admin-views/editor/column-head-price.php:1
|
2168 |
#: src/views/registration/summary/tickets-header.php:19
|
2169 |
msgid "Price"
|
2209 |
msgstr ""
|
2210 |
|
2211 |
#: src/admin-views/editor/fieldset/advanced.php:95
|
2212 |
+
msgid "%s start date"
|
2213 |
msgstr ""
|
2214 |
|
2215 |
#: src/admin-views/editor/fieldset/advanced.php:97
|
2218 |
msgstr ""
|
2219 |
|
2220 |
#: src/admin-views/editor/fieldset/advanced.php:98
|
2221 |
+
msgid "If you do not set a start sale date, %s will be available immediately."
|
|
|
2222 |
msgstr ""
|
2223 |
|
2224 |
#: src/admin-views/editor/fieldset/advanced.php:102
|
2227 |
msgstr ""
|
2228 |
|
2229 |
#: src/admin-views/editor/fieldset/advanced.php:124
|
2230 |
+
msgid "%s end date"
|
2231 |
msgstr ""
|
2232 |
|
2233 |
#: src/admin-views/editor/fieldset/advanced.php:130
|
2234 |
msgid ""
|
2235 |
+
"If you do not set an end sale date, %s will be available until the event "
|
2236 |
+
"begins."
|
2237 |
msgstr ""
|
2238 |
|
2239 |
#: src/admin-views/editor/fieldset/advanced.php:132
|
2240 |
+
msgid "If you do not set an end sale date, %s will be available forever."
|
2241 |
msgstr ""
|
2242 |
|
2243 |
#: src/admin-views/editor/fieldset/history.php:27
|
2249 |
msgstr ""
|
2250 |
|
2251 |
#: src/admin-views/editor/fieldset/price.php:7
|
2252 |
+
msgctxt "ticket price validation error"
|
2253 |
+
msgid "%s price must be greater than zero."
|
2254 |
msgstr ""
|
2255 |
|
2256 |
#: src/admin-views/editor/fieldset/price.php:21
|
2257 |
+
msgctxt "price description"
|
2258 |
+
msgid "Leave blank for free %s"
|
2259 |
msgstr ""
|
2260 |
|
2261 |
#: src/admin-views/editor/fieldset/price.php:99
|
2296 |
msgstr ""
|
2297 |
|
2298 |
#: src/admin-views/editor/list-row.php:43
|
2299 |
+
msgctxt "ticket type label"
|
2300 |
+
msgid "%s Type:"
|
2301 |
msgstr ""
|
2302 |
|
2303 |
#: src/admin-views/editor/list-row.php:91
|
2310 |
msgid "Available:"
|
2311 |
msgstr ""
|
2312 |
|
2313 |
+
#: src/admin-views/editor/list-row.php:108
|
2314 |
+
msgctxt "ticket ID title attribute"
|
2315 |
+
msgid "%s ID: %d"
|
2316 |
msgstr ""
|
2317 |
|
2318 |
#: src/admin-views/editor/list-table.php:40
|
2336 |
msgstr ""
|
2337 |
|
2338 |
#: src/admin-views/editor/panel/list.php:66
|
2339 |
+
msgctxt "admin editor panel list button label"
|
2340 |
+
msgid "New %s"
|
2341 |
msgstr ""
|
2342 |
|
2343 |
#: src/admin-views/editor/panel/list.php:72
|
2344 |
+
msgctxt "RSVP form toggle button label"
|
2345 |
+
msgid "Add a new %s"
|
2346 |
msgstr ""
|
2347 |
|
2348 |
#: src/admin-views/editor/panel/list.php:74
|
2349 |
+
msgctxt "RSVP form toggle button text"
|
2350 |
+
msgid "New %s"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
#: src/admin-views/editor/panel/list.php:79
|
2355 |
msgstr ""
|
2356 |
|
2357 |
#: src/admin-views/editor/panel/settings.php:14
|
2358 |
+
msgctxt "meta box ticket form heading"
|
2359 |
+
msgid "%s Settings"
|
2360 |
msgstr ""
|
2361 |
|
2362 |
+
#: src/admin-views/editor/panel/settings.php:42
|
2363 |
+
msgctxt "ticket image upload label"
|
2364 |
+
msgid "%s header image:"
|
2365 |
msgstr ""
|
2366 |
|
2367 |
+
#: src/admin-views/editor/panel/settings.php:44
|
2368 |
+
msgctxt "ticket image upload label description"
|
2369 |
msgid ""
|
2370 |
+
"Select an image from your Media Library to display on emailed %s. For best "
|
2371 |
+
"results, use a .jpg, .png, or .gif at least 1160px wide."
|
2372 |
msgstr ""
|
2373 |
|
2374 |
+
#: src/admin-views/editor/panel/settings.php:52 src/admin-views/meta-box.php:46
|
2375 |
msgid "Select an Image"
|
2376 |
msgstr ""
|
2377 |
|
2378 |
+
#: src/admin-views/editor/panel/settings.php:68 src/admin-views/meta-box.php:54
|
2379 |
msgid "Remove"
|
2380 |
msgstr ""
|
2381 |
|
2382 |
+
#: src/admin-views/editor/panel/settings.php:81
|
2383 |
msgid "Save settings"
|
2384 |
msgstr ""
|
2385 |
|
2386 |
+
#: src/admin-views/editor/panel/settings.php:82
|
2387 |
+
#: src/admin-views/editor/panel/ticket.php:203 src/admin-views/meta-box.php:240
|
2388 |
msgid "Cancel"
|
2389 |
msgstr ""
|
2390 |
|
2391 |
+
#: src/admin-views/editor/panel/ticket.php:53
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2392 |
#: src/admin-views/editor/panel/ticket.php:75
|
2393 |
+
msgctxt "admin add new ticket panel heading"
|
2394 |
+
msgid "Add new %s"
|
2395 |
msgstr ""
|
2396 |
|
2397 |
+
#: src/admin-views/editor/panel/ticket.php:61
|
2398 |
#: src/admin-views/editor/panel/ticket.php:83
|
2399 |
+
msgctxt "admin edit ticket panel heading"
|
2400 |
+
msgid "Edit %s"
|
2401 |
msgstr ""
|
2402 |
|
2403 |
#: src/admin-views/editor/panel/ticket.php:88
|
2405 |
msgstr ""
|
2406 |
|
2407 |
#: src/admin-views/editor/panel/ticket.php:97
|
2408 |
+
msgctxt "admin edit ticket panel error"
|
2409 |
+
msgid "%s type is a required field"
|
2410 |
msgstr ""
|
2411 |
|
2412 |
+
#: src/admin-views/editor/panel/ticket.php:100
|
2413 |
+
msgctxt "admin edit ticket panel note"
|
2414 |
+
msgid "%1$s type name shows on the front end and emailed %2$s"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
+
#: src/admin-views/editor/panel/ticket.php:106 src/admin-views/meta-box.php:128
|
2418 |
msgid "Sell using:"
|
2419 |
msgstr ""
|
2420 |
|
2421 |
+
#: src/admin-views/editor/panel/ticket.php:185
|
2422 |
+
msgctxt "meta box ticket form button text"
|
2423 |
+
msgid "Save %s"
|
2424 |
msgstr ""
|
2425 |
|
2426 |
+
#: src/admin-views/editor/panel/ticket.php:194
|
2427 |
+
msgctxt "RSVP form save value"
|
2428 |
+
msgid "Save %s"
|
2429 |
msgstr ""
|
2430 |
|
2431 |
#: src/admin-views/legacy-ticket-fields.php:19
|
2455 |
msgstr ""
|
2456 |
|
2457 |
#: src/admin-views/meta-box.php:31
|
2458 |
+
msgctxt "meta box ticket form CE warning"
|
2459 |
msgid ""
|
2460 |
"This event was created using Community Events. Are you sure you want to sell "
|
2461 |
+
"%s for it?"
|
2462 |
msgstr ""
|
2463 |
|
2464 |
#: src/admin-views/meta-box.php:42
|
2465 |
+
msgctxt "meta box ticket form image"
|
2466 |
+
msgid "Upload image for the %s header."
|
2467 |
msgstr ""
|
2468 |
|
2469 |
#: src/admin-views/meta-box.php:43
|
2487 |
msgstr[0] ""
|
2488 |
msgstr[1] ""
|
2489 |
|
2490 |
+
#: src/admin-views/meta-box.php:112
|
2491 |
+
msgctxt "meta box ticket form toggle"
|
2492 |
+
msgid "Add new %s"
|
2493 |
+
msgstr ""
|
2494 |
+
|
2495 |
+
#: src/admin-views/meta-box.php:122
|
2496 |
+
msgid "Add new ticket"
|
2497 |
+
msgstr ""
|
2498 |
+
|
2499 |
+
#: src/admin-views/meta-box.php:123
|
2500 |
+
msgid "Edit ticket"
|
2501 |
+
msgstr ""
|
2502 |
+
|
2503 |
#: src/admin-views/meta-box.php:145
|
2504 |
+
msgctxt "meta box ticket form"
|
2505 |
+
msgid "%s Name:"
|
2506 |
msgstr ""
|
2507 |
|
2508 |
#: src/admin-views/meta-box.php:152
|
2509 |
+
msgctxt "meta box ticket form"
|
2510 |
+
msgid "%s Description:"
|
2511 |
msgstr ""
|
2512 |
|
2513 |
#: src/admin-views/meta-box.php:215
|
2521 |
msgstr ""
|
2522 |
|
2523 |
#: src/admin-views/meta-box.php:239
|
2524 |
+
msgctxt "meta box form save button"
|
2525 |
+
msgid "Save this %s"
|
2526 |
msgstr ""
|
2527 |
|
2528 |
#: src/admin-views/move-tickets.php:19
|
2604 |
"statuses:"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
+
#: src/admin-views/privacy.php:16
|
2608 |
msgid "Hello,"
|
2609 |
msgstr ""
|
2610 |
|
2611 |
+
#: src/admin-views/privacy.php:17
|
2612 |
msgid ""
|
2613 |
"This information serves as a guide on what sections need to be modified due "
|
2614 |
"to usage of Event Tickets and its Add-ons."
|
2615 |
msgstr ""
|
2616 |
|
2617 |
+
#: src/admin-views/privacy.php:18
|
2618 |
msgid ""
|
2619 |
"You should include the information below in the correct sections of you "
|
2620 |
"privacy policy."
|
2621 |
msgstr ""
|
2622 |
|
2623 |
+
#: src/admin-views/privacy.php:19
|
2624 |
msgid "Disclaimer:"
|
2625 |
msgstr ""
|
2626 |
|
2627 |
+
#: src/admin-views/privacy.php:19
|
2628 |
msgid ""
|
2629 |
"This information is only for guidance and not to be considered as legal "
|
2630 |
"advice."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
+
#: src/admin-views/privacy.php:21
|
2634 |
msgid "What personal data we collect and why we collect it"
|
2635 |
msgstr ""
|
2636 |
|
2637 |
+
#: src/admin-views/privacy.php:23
|
2638 |
msgid "Event, Attendee, and Ticket Purchaser Information"
|
2639 |
msgstr ""
|
2640 |
|
2641 |
+
#: src/admin-views/privacy.php:25
|
2642 |
msgid ""
|
2643 |
"Through the usage of Event Tickets, Event Tickets Plus, and Community "
|
2644 |
"Tickets, information may be collected and stored within your website’s "
|
2645 |
"database."
|
2646 |
msgstr ""
|
2647 |
|
2648 |
+
#: src/admin-views/privacy.php:26 src/admin-views/privacy.php:63
|
2649 |
msgid "Suggested text:"
|
2650 |
msgstr ""
|
2651 |
|
2652 |
+
#: src/admin-views/privacy.php:29
|
2653 |
msgid ""
|
2654 |
+
"If you create, submit, import, save, or publish event %1$s information, as "
|
2655 |
+
"well as obtain %2$s or purchase %3$s to events, such information is retained "
|
2656 |
+
"in the local database:"
|
2657 |
msgstr ""
|
2658 |
|
2659 |
+
#: src/admin-views/privacy.php:39
|
2660 |
+
msgid "Attendees information (%1$s and %2$s): name and email address"
|
2661 |
msgstr ""
|
2662 |
|
2663 |
+
#: src/admin-views/privacy.php:46
|
2664 |
msgid ""
|
2665 |
+
"%1$s information (%2$s and %3$s): name, email address, and %4$s number/SKU "
|
2666 |
+
"(via check-in page)"
|
2667 |
msgstr ""
|
2668 |
|
2669 |
+
#: src/admin-views/privacy.php:53
|
2670 |
+
msgid "%s purchaser information: name and email address"
|
2671 |
msgstr ""
|
2672 |
|
2673 |
+
#: src/admin-views/privacy.php:54
|
2674 |
msgid ""
|
2675 |
+
"%s purchaser billing address, which is collected through the use of "
|
2676 |
"WooCommerce, Easy Digital Downloads, or PayPal"
|
2677 |
msgstr ""
|
2678 |
|
2679 |
+
#: src/admin-views/privacy.php:57
|
2680 |
msgid ""
|
2681 |
"Please note: The website owner can collect nearly any Attendee Information "
|
2682 |
+
"requested from %s buyers by creating a custom registration form."
|
2683 |
msgstr ""
|
2684 |
|
2685 |
+
#: src/admin-views/privacy.php:59
|
2686 |
msgid "API Keys"
|
2687 |
msgstr ""
|
2688 |
|
2689 |
+
#: src/admin-views/privacy.php:61
|
2690 |
msgid ""
|
2691 |
+
"Event Tickets suite offers the use of third-party API keys. The primary "
|
2692 |
"functions are to enhance the features we've built in, some of which use "
|
2693 |
"Google Maps and PayPal. These API keys are not supplied by Modern Tribe."
|
2694 |
msgstr ""
|
2695 |
|
2696 |
+
#: src/admin-views/privacy.php:65
|
2697 |
msgid "We make use of certain API keys, in order to provide specific features."
|
2698 |
msgstr ""
|
2699 |
|
2700 |
+
#: src/admin-views/privacy.php:67
|
2701 |
msgid ""
|
2702 |
"These API keys may include the following third party services: Google Maps "
|
2703 |
"and PayPal."
|
2704 |
msgstr ""
|
2705 |
|
2706 |
+
#: src/admin-views/privacy.php:69
|
2707 |
msgid "How Long You Retain this Data"
|
2708 |
msgstr ""
|
2709 |
|
2710 |
+
#: src/admin-views/privacy.php:71
|
2711 |
msgid ""
|
2712 |
"All information (data) is retained in the local database indefinitely, "
|
2713 |
"unless otherwise deleted."
|
2714 |
msgstr ""
|
2715 |
|
2716 |
+
#: src/admin-views/privacy.php:73
|
2717 |
msgid ""
|
2718 |
"Certain data may be exported or removed upon users request via the existing "
|
2719 |
+
"Exporter or Eraser. Please note, however, that several \"edge cases\" exist "
|
2720 |
+
"in which we are unable to perfect the gathering and export of all data for "
|
2721 |
+
"your end users. We suggest running a search in your local database, as well "
|
2722 |
+
"as within the WordPress Dashboard, in order to identify all data collected "
|
2723 |
+
"and stored for your specific user requests."
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: src/admin-views/privacy.php:75
|
2727 |
msgid "Where We Send Your Data"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
+
#: src/admin-views/privacy.php:77
|
2731 |
msgid ""
|
2732 |
"Modern Tribe does not send any user data outside of your website by default."
|
2733 |
msgstr ""
|
2734 |
|
2735 |
+
#: src/admin-views/privacy.php:79
|
2736 |
msgid ""
|
2737 |
"If you have extended our plugin(s) to send data to a third-party service "
|
2738 |
"such as Eventbrite, Google Maps, or PayPal, user information may be passed "
|
2745 |
msgstr ""
|
2746 |
|
2747 |
#: src/admin-views/ticket-type-history.php:10
|
2748 |
+
msgctxt "ticket type history"
|
2749 |
+
msgid "%s history:"
|
2750 |
msgstr ""
|
2751 |
|
2752 |
#: src/admin-views/ticket-type-history.php:14
|
2786 |
msgid "Total Tickets Ordered"
|
2787 |
msgstr ""
|
2788 |
|
2789 |
+
#: src/admin-views/tribe-options-tickets.php:55
|
2790 |
+
msgctxt "login requirement setting"
|
2791 |
+
msgid "Require users to log in before they %s"
|
2792 |
+
msgstr ""
|
2793 |
+
|
2794 |
+
#: src/admin-views/tribe-options-tickets.php:56
|
2795 |
+
msgctxt "login requirement setting"
|
2796 |
+
msgid "Require users to log in before they purchase %s"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
+
#: src/admin-views/tribe-options-tickets.php:67
|
2800 |
+
msgctxt "tickets fields settings title"
|
2801 |
+
msgid "%s Settings"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: src/admin-views/tribe-options-tickets.php:71
|
2805 |
+
msgctxt "tickets fields settings enabled post types"
|
2806 |
+
msgid "Post types that can have %s"
|
2807 |
msgstr ""
|
2808 |
|
2809 |
+
#: src/admin-views/tribe-options-tickets.php:86
|
2810 |
msgid "Below the event details [default]"
|
2811 |
msgstr ""
|
2812 |
|
2813 |
+
#: src/admin-views/tribe-options-tickets.php:87
|
2814 |
msgid "Above the event details"
|
2815 |
msgstr ""
|
2816 |
|
2817 |
+
#: src/admin-views/tribe-options-tickets.php:88
|
2818 |
msgid "Below the event description"
|
2819 |
msgstr ""
|
2820 |
|
2821 |
+
#: src/admin-views/tribe-options-tickets.php:89
|
2822 |
msgid "Above the event description"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
+
#: src/admin-views/tribe-options-tickets.php:94
|
2826 |
+
#: src/admin-views/tribe-options-tickets.php:104
|
2827 |
+
msgctxt "form location setting"
|
2828 |
+
msgid "Location of %s form"
|
2829 |
msgstr ""
|
2830 |
|
2831 |
+
#: src/admin-views/tribe-options-tickets.php:95
|
2832 |
+
#: src/admin-views/tribe-options-tickets.php:105
|
2833 |
msgid "This setting only impacts events made with the classic editor."
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: src/admin-views/tribe-options-tickets.php:114
|
2837 |
+
msgctxt "tickets remaining threshold label"
|
2838 |
+
msgid "Display # %s left threshold"
|
|
|
|
|
|
|
2839 |
msgstr ""
|
2840 |
|
2841 |
+
#: src/admin-views/tribe-options-tickets.php:115
|
2842 |
+
msgctxt "tickets remaining threshold tooltip"
|
2843 |
msgid ""
|
2844 |
+
"If this number is less than the number of %1$s left for sale on your event, "
|
2845 |
+
"this will prevent the \"# of %1$s left\" text from showing on your website. "
|
2846 |
+
"You can leave this blank if you would like to always show the text."
|
2847 |
msgstr ""
|
2848 |
|
2849 |
+
#: src/admin-views/tribe-options-tickets.php:126
|
2850 |
msgid "Login Requirements"
|
2851 |
msgstr ""
|
2852 |
|
2853 |
+
#: src/admin-views/tribe-options-tickets.php:131
|
2854 |
+
msgctxt "ticket authentication requirements"
|
2855 |
msgid ""
|
2856 |
+
"You can require that users log into your site before they are able to %1$s "
|
2857 |
+
"(or buy %2$s). Please review your WordPress Membership option (via the "
|
2858 |
+
"%3$sGeneral Settings admin screen%4$s) before adjusting this setting."
|
2859 |
msgstr ""
|
2860 |
|
2861 |
+
#: src/admin-views/tribe-options-tickets.php:152
|
2862 |
msgid "Tribe Commerce"
|
2863 |
msgstr ""
|
2864 |
|
2865 |
+
#: src/admin-views/tribe-options-tickets.php:163
|
2866 |
msgid "Check it out!"
|
2867 |
msgstr ""
|
2868 |
|
2869 |
+
#: src/admin-views/tribe-options-tickets.php:167
|
2870 |
+
msgctxt "about Tribe Commerce"
|
2871 |
msgid ""
|
2872 |
"Tribe Commerce is a light implementation of a commerce gateway using PayPal "
|
2873 |
"and simplified stock handling. If you need more advanced features, take a "
|
2874 |
"look at %1$s. In addition to integrating with your favorite ecommerce "
|
2875 |
"provider, Event Tickets Plus includes options to collect custom information "
|
2876 |
+
"for attendees, check users in via QR codes, and share stock between %2$s. "
|
2877 |
+
"%3$s"
|
2878 |
msgstr ""
|
2879 |
|
2880 |
+
#: src/admin-views/tribe-options-tickets.php:182
|
2881 |
msgid "Enable Tribe Commerce "
|
2882 |
msgstr ""
|
2883 |
|
2884 |
+
#: src/admin-views/tribe-options-tickets.php:183
|
2885 |
msgid "Check this box if you wish to turn on Tribe Commerce functionality"
|
2886 |
msgstr ""
|
2887 |
|
2888 |
+
#: src/admin-views/tribe-options-tickets.php:210
|
2889 |
msgid "these instructions"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
+
#: src/admin-views/tribe-options-tickets.php:211
|
2893 |
+
msgctxt "tickets fields settings PayPal setup"
|
2894 |
msgid ""
|
2895 |
+
"In order to use Tribe Commerce to sell %1$s, you must configure your PayPal "
|
2896 |
+
"account to communicate with your WordPress site. If you need help getting "
|
2897 |
+
"set up, follow %2$s"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
+
#: src/admin-views/tribe-options-tickets.php:215
|
2901 |
msgid ""
|
2902 |
"Have you entered this site's address in the Notification URL field in IPN "
|
2903 |
"Settings?"
|
2904 |
msgstr ""
|
2905 |
|
2906 |
+
#: src/admin-views/tribe-options-tickets.php:217
|
2907 |
msgid "Your site address is: %s"
|
2908 |
msgstr ""
|
2909 |
|
2910 |
+
#: src/admin-views/tribe-options-tickets.php:225
|
2911 |
msgid "Configure PayPal:"
|
2912 |
msgstr ""
|
2913 |
|
2914 |
+
#: src/admin-views/tribe-options-tickets.php:231
|
2915 |
msgid "PayPal email to receive payments:"
|
2916 |
msgstr ""
|
2917 |
|
2918 |
+
#: src/admin-views/tribe-options-tickets.php:239
|
2919 |
msgid ""
|
2920 |
"Have you enabled instant payment notifications (IPN) in your PayPal "
|
2921 |
"account's Selling Tools?"
|
2922 |
msgstr ""
|
2923 |
|
2924 |
+
#: src/admin-views/tribe-options-tickets.php:242
|
2925 |
+
#: src/admin-views/tribe-options-tickets.php:254
|
2926 |
msgid "No"
|
2927 |
msgstr ""
|
2928 |
|
2929 |
+
#: src/admin-views/tribe-options-tickets.php:265
|
2930 |
msgid "PayPal configuration status:"
|
2931 |
msgstr ""
|
2932 |
|
2933 |
+
#: src/admin-views/tribe-options-tickets.php:268
|
2934 |
msgid ""
|
2935 |
"For help creating and configuring your account, call PayPal at "
|
2936 |
"1-844-720-4038 (USA)"
|
2937 |
msgstr ""
|
2938 |
|
2939 |
+
#: src/admin-views/tribe-options-tickets.php:277
|
2940 |
msgid "PayPal Sandbox"
|
2941 |
msgstr ""
|
2942 |
|
2943 |
+
#: src/admin-views/tribe-options-tickets.php:278
|
2944 |
msgid "Enables PayPal Sandbox mode for testing."
|
2945 |
msgstr ""
|
2946 |
|
2947 |
+
#: src/admin-views/tribe-options-tickets.php:284
|
2948 |
msgid "Currency Code"
|
2949 |
msgstr ""
|
2950 |
|
2951 |
+
#: src/admin-views/tribe-options-tickets.php:285
|
2952 |
msgid "The currency that will be used for Tribe Commerce transactions."
|
2953 |
msgstr ""
|
2954 |
|
2955 |
+
#: src/admin-views/tribe-options-tickets.php:292
|
2956 |
msgid "Stock Handling"
|
2957 |
msgstr ""
|
2958 |
|
2959 |
+
#: src/admin-views/tribe-options-tickets.php:293
|
2960 |
+
msgctxt "tickets fields settings paypal stock handling"
|
2961 |
msgid ""
|
2962 |
+
"When a customer purchases a %s, PayPal might flag the order as Pending. The "
|
2963 |
+
"order will be Complete once payment is confirmed by PayPal."
|
2964 |
msgstr ""
|
2965 |
|
2966 |
+
#: src/admin-views/tribe-options-tickets.php:297
|
2967 |
msgid "Decrease available ticket stock as soon as a Pending order is created."
|
2968 |
msgstr ""
|
2969 |
|
2970 |
+
#: src/admin-views/tribe-options-tickets.php:298
|
2971 |
msgid ""
|
2972 |
"Only decrease available ticket stock if an order is confirmed as Completed "
|
2973 |
"by PayPal."
|
2974 |
msgstr ""
|
2975 |
|
2976 |
+
#: src/admin-views/tribe-options-tickets.php:304
|
2977 |
msgid "Success page"
|
2978 |
msgstr ""
|
2979 |
|
2980 |
+
#: src/admin-views/tribe-options-tickets.php:307
|
2981 |
msgid ""
|
2982 |
"After a successful PayPal order users will be redirected to this page; use "
|
2983 |
"the %s shortcode to display the order confirmation to the user in the page "
|
2984 |
"content."
|
2985 |
msgstr ""
|
2986 |
|
2987 |
+
#: src/admin-views/tribe-options-tickets.php:318
|
2988 |
msgid "Confirmation email sender address"
|
2989 |
msgstr ""
|
2990 |
|
2991 |
+
#: src/admin-views/tribe-options-tickets.php:319
|
2992 |
+
msgctxt "tickets fields settings paypal confirmation email"
|
2993 |
msgid ""
|
2994 |
+
"Email address PayPal %s customers will receive confirmation from. Leave "
|
2995 |
"empty to use the default WordPress site email address."
|
2996 |
msgstr ""
|
2997 |
|
2998 |
+
#: src/admin-views/tribe-options-tickets.php:327
|
2999 |
msgid "Confirmation email sender name"
|
3000 |
msgstr ""
|
3001 |
|
3002 |
+
#: src/admin-views/tribe-options-tickets.php:328
|
3003 |
+
msgctxt "tickets fields settings paypal email sender"
|
3004 |
msgid ""
|
3005 |
+
"Sender name of the confirmation email sent to customers when confirming a %s "
|
3006 |
+
"purchase."
|
3007 |
msgstr ""
|
3008 |
|
3009 |
+
#: src/admin-views/tribe-options-tickets.php:336
|
3010 |
msgid "Confirmation email subject"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
+
#: src/admin-views/tribe-options-tickets.php:337
|
3014 |
+
msgctxt "tickets fields settings paypal email subject"
|
3015 |
msgid ""
|
3016 |
+
"Subject of the confirmation email sent to customers when confirming a %s "
|
3017 |
"purchase."
|
3018 |
msgstr ""
|
3019 |
|
3020 |
+
#: src/admin-views/tribe-options-tickets.php:339
|
3021 |
+
msgctxt "tickets fields settings paypal email subject"
|
3022 |
+
msgid "You have %s!"
|
3023 |
msgstr ""
|
3024 |
|
3025 |
+
#: src/admin-views/tribe-options-tickets.php:351
|
3026 |
msgid ""
|
3027 |
"You can see and manage your IPN Notifications history from the IPN "
|
3028 |
"Notifications settings area (%s)."
|
3029 |
msgstr ""
|
3030 |
|
3031 |
+
#: src/admin-views/tribe-options-tickets.php:361
|
3032 |
msgid "IPN Notify URL"
|
3033 |
msgstr ""
|
3034 |
|
3035 |
+
#: src/admin-views/tribe-options-tickets.php:363
|
3036 |
msgid ""
|
3037 |
"Override the default IPN notify URL with this value. This value must be the "
|
3038 |
"same set in PayPal IPN Notifications settings area (%s)."
|
3066 |
"latest version of PHP."
|
3067 |
msgstr ""
|
3068 |
|
3069 |
+
#: src/template-tags/tickets.php:262
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3070 |
msgctxt "list view rsvp now ticket button"
|
3071 |
+
msgid "%s Now!"
|
3072 |
msgstr ""
|
3073 |
|
3074 |
+
#: src/template-tags/tickets.php:265
|
3075 |
msgctxt "list view buy now ticket button"
|
3076 |
msgid "Buy Now!"
|
3077 |
msgstr ""
|
3078 |
|
3079 |
+
#: src/template-tags/tickets.php:459
|
3080 |
msgid "issued"
|
3081 |
msgstr ""
|
3082 |
|
3083 |
+
#: src/template-tags/tickets.php:461
|
3084 |
+
msgctxt "RSVPs going"
|
3085 |
+
msgid "%s'd going"
|
3086 |
msgstr ""
|
3087 |
|
3088 |
+
#: src/template-tags/tickets.php:466
|
3089 |
msgctxt "unlimited remaining stock message"
|
3090 |
msgid "%1$s available"
|
3091 |
msgstr ""
|
3092 |
|
3093 |
+
#: src/template-tags/tickets.php:468
|
3094 |
msgctxt "ticket shared capacity message (remaining stock)"
|
3095 |
msgid "%1$d available of shared capacity"
|
3096 |
msgstr ""
|
3097 |
|
3098 |
+
#: src/template-tags/tickets.php:471
|
3099 |
msgctxt "ticket stock message (remaining stock)"
|
3100 |
msgid "%1$d available"
|
3101 |
msgstr ""
|
3102 |
|
3103 |
+
#: src/template-tags/tickets.php:1099
|
3104 |
+
msgctxt "singular label for RSVP"
|
3105 |
+
msgid "RSVP"
|
3106 |
+
msgstr ""
|
3107 |
+
|
3108 |
+
#: src/template-tags/tickets.php:1123
|
3109 |
+
msgctxt "lowercase singular label for RSVP"
|
3110 |
+
msgid "rsvp"
|
3111 |
+
msgstr ""
|
3112 |
+
|
3113 |
+
#: src/template-tags/tickets.php:1147
|
3114 |
+
msgctxt "plural label for RSVPs"
|
3115 |
+
msgid "RSVPs"
|
3116 |
+
msgstr ""
|
3117 |
+
|
3118 |
+
#: src/template-tags/tickets.php:1171
|
3119 |
+
msgctxt "lowercase plural label for RSVPs"
|
3120 |
+
msgid "rsvps"
|
3121 |
+
msgstr ""
|
3122 |
+
|
3123 |
+
#: src/template-tags/tickets.php:1195
|
3124 |
+
msgctxt "singular label for Ticket"
|
3125 |
+
msgid "Ticket"
|
3126 |
+
msgstr ""
|
3127 |
+
|
3128 |
+
#: src/template-tags/tickets.php:1219
|
3129 |
+
msgctxt "lowercase singular label for Ticket"
|
3130 |
+
msgid "ticket"
|
3131 |
+
msgstr ""
|
3132 |
+
|
3133 |
+
#: src/template-tags/tickets.php:1243
|
3134 |
+
msgctxt "plural label for Tickets"
|
3135 |
+
msgid "Tickets"
|
3136 |
+
msgstr ""
|
3137 |
+
|
3138 |
+
#: src/template-tags/tickets.php:1267
|
3139 |
+
msgctxt "lowercase plural label for Tickets"
|
3140 |
+
msgid "tickets"
|
3141 |
+
msgstr ""
|
3142 |
+
|
3143 |
#: src/views/blocks/attendees/description.php:25
|
3144 |
msgid "One person is attending %2$s"
|
3145 |
msgid_plural "%d people are attending %s"
|
3146 |
msgstr[0] ""
|
3147 |
msgstr[1] ""
|
3148 |
|
3149 |
+
#: src/views/blocks/attendees/view-link.php:44
|
3150 |
+
#: src/views/tickets/view-link.php:43
|
3151 |
+
msgctxt "RSVP count singular"
|
3152 |
+
msgid "%1d %2s"
|
3153 |
+
msgstr ""
|
3154 |
+
|
3155 |
#: src/views/blocks/attendees/view-link.php:46
|
3156 |
+
#: src/views/tickets/view-link.php:45
|
3157 |
+
msgctxt "RSVP count plural"
|
3158 |
+
msgid "%1d %2s"
|
3159 |
+
msgstr ""
|
3160 |
|
3161 |
+
#: src/views/blocks/attendees/view-link.php:50
|
3162 |
+
#: src/views/tickets/view-link.php:49
|
3163 |
+
msgctxt "Ticket count singular"
|
3164 |
+
msgid "%1d %2s"
|
3165 |
msgstr ""
|
3166 |
|
3167 |
+
#: src/views/blocks/attendees/view-link.php:52
|
3168 |
+
#: src/views/tickets/view-link.php:51
|
3169 |
+
msgctxt "Ticket count plural"
|
3170 |
+
msgid "%1d %2s"
|
3171 |
+
msgstr ""
|
3172 |
+
|
3173 |
+
#: src/views/blocks/attendees/view-link.php:61
|
3174 |
+
msgid "You have %1s for this %2s."
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
#: src/views/blocks/attendees/view-link.php:66
|
3178 |
+
#: src/views/tickets/view-link.php:61
|
3179 |
msgid "View your %s"
|
3180 |
msgstr ""
|
3181 |
|
3182 |
+
#: src/views/blocks/rsvp/content-inactive.php:20
|
3183 |
+
msgctxt "RSVP block inactive content in the past"
|
3184 |
+
msgid "%s are no longer available"
|
3185 |
msgstr ""
|
3186 |
|
3187 |
+
#: src/views/blocks/rsvp/content-inactive.php:21
|
3188 |
+
msgctxt "RSVP block inactive content"
|
3189 |
+
msgid "%s are not yet available"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
#: src/views/blocks/rsvp/details/availability.php:23
|
3193 |
+
#: src/views/tickets/rsvp.php:108 src/views/tickets/tpp.php:112
|
3194 |
msgid "Out of stock!"
|
3195 |
msgstr ""
|
3196 |
|
3198 |
msgid "remaining"
|
3199 |
msgstr ""
|
3200 |
|
3201 |
+
#: src/views/blocks/rsvp/form/error.php:21
|
3202 |
+
msgid "Please fill in the %s confirmation name and email fields."
|
3203 |
msgstr ""
|
3204 |
|
3205 |
#: src/views/blocks/rsvp/form/opt-out.php:39
|
3206 |
msgid "Don't show my information on public attendee lists"
|
3207 |
msgstr ""
|
3208 |
|
3209 |
+
#: src/views/blocks/rsvp/form/submit-button.php:26
|
3210 |
+
msgctxt "blocks rsvp form submit button"
|
3211 |
+
msgid "Submit %s"
|
|
|
|
|
|
|
3212 |
msgstr ""
|
3213 |
|
3214 |
#: src/views/blocks/rsvp/form/submit-login.php:25
|
3215 |
msgid "Log in to RSVP"
|
3216 |
msgstr ""
|
3217 |
|
3218 |
+
#: src/views/blocks/rsvp/messages/success.php:22
|
3219 |
+
msgctxt "blocks rsvp messages success"
|
3220 |
+
msgid ""
|
3221 |
+
"Your %1$s has been received! Check your email for your %1$s confirmation."
|
3222 |
+
msgstr ""
|
3223 |
+
|
3224 |
+
#: src/views/blocks/rsvp/status/full.php:19
|
3225 |
+
msgctxt "blocks rsvp status full"
|
3226 |
+
msgid "%s Full"
|
3227 |
msgstr ""
|
3228 |
|
3229 |
#: src/views/blocks/rsvp/status/going.php:25
|
3238 |
msgid "Tickets are no longer available"
|
3239 |
msgstr ""
|
3240 |
|
3241 |
+
#: src/views/blocks/tickets/content-inactive.php:18
|
3242 |
+
msgid "Tickets are not yet available"
|
3243 |
+
msgstr ""
|
3244 |
+
|
3245 |
#: src/views/blocks/tickets/quantity-add.php:24
|
3246 |
msgid "+"
|
3247 |
msgstr ""
|
3269 |
msgid "1"
|
3270 |
msgstr ""
|
3271 |
|
3272 |
+
#: src/views/blocks/tickets/registration/summary/title.php:22
|
3273 |
+
msgid "%s Registration"
|
3274 |
msgstr ""
|
3275 |
|
3276 |
#: src/views/blocks/tickets/submit-button.php:23
|
3337 |
msgid "Find events to attend on %1$s"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: src/views/registration/content.php:77
|
3341 |
msgid "Save and Checkout"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: src/views/registration/content.php:79
|
3345 |
msgid "Save Attendee Info"
|
3346 |
msgstr ""
|
3347 |
|
3363 |
|
3364 |
#: src/views/tickets/email-non-attendance.php:39
|
3365 |
#: src/views/tickets/email-ticket-type-moved.php:25
|
3366 |
+
#: src/views/tickets/email-tickets-moved.php:26 src/views/tickets/email.php:35
|
3367 |
msgid "Your tickets"
|
3368 |
msgstr ""
|
3369 |
|
3406 |
msgstr[0] ""
|
3407 |
msgstr[1] ""
|
3408 |
|
3409 |
+
#: src/views/tickets/email.php:406
|
3410 |
msgid "Ticket #"
|
3411 |
msgstr ""
|
3412 |
|
3413 |
+
#: src/views/tickets/email.php:410
|
3414 |
+
msgctxt "ticket type email heading"
|
3415 |
+
msgid "%s Type"
|
3416 |
msgstr ""
|
3417 |
|
3418 |
+
#: src/views/tickets/email.php:418
|
3419 |
msgid "Security Code"
|
3420 |
msgstr ""
|
3421 |
|
3422 |
+
#: src/views/tickets/orders-pp-tickets.php:35
|
3423 |
+
#: src/views/tickets/orders-rsvp.php:32
|
3424 |
+
msgid "My %1$s for this %2$s"
|
3425 |
msgstr ""
|
3426 |
|
3427 |
+
#: src/views/tickets/orders-pp-tickets.php:47
|
3428 |
msgid "Purchased by %1$s (%2$s)"
|
3429 |
msgstr ""
|
3430 |
|
3431 |
+
#: src/views/tickets/orders-pp-tickets.php:53
|
3432 |
+
#: src/views/tickets/orders-rsvp.php:47
|
3433 |
msgid " on %s"
|
3434 |
msgstr ""
|
3435 |
|
3436 |
+
#: src/views/tickets/orders-pp-tickets.php:72
|
3437 |
+
#: src/views/tickets/orders-rsvp.php:66
|
3438 |
msgid "Attendee %d"
|
3439 |
msgstr ""
|
3440 |
|
3441 |
+
#: src/views/tickets/orders-pp-tickets.php:77
|
3442 |
msgctxt "order status label"
|
3443 |
msgid "Payment status: "
|
3444 |
msgstr ""
|
3445 |
|
3446 |
+
#: src/views/tickets/orders-pp-tickets.php:82
|
3447 |
+
#: src/views/tickets/orders-rsvp.php:90
|
3448 |
msgid "Type: "
|
3449 |
msgstr ""
|
3450 |
|
3451 |
+
#: src/views/tickets/orders-rsvp.php:41
|
|
|
|
|
|
|
|
|
3452 |
msgid "Reserved by %1$s (%2$s)"
|
3453 |
msgstr ""
|
3454 |
|
3455 |
+
#: src/views/tickets/orders-rsvp.php:71
|
3456 |
msgctxt "order status label"
|
3457 |
msgid "RSVP: "
|
3458 |
msgstr ""
|
3459 |
|
3460 |
+
#: src/views/tickets/orders.php:35
|
3461 |
+
msgctxt "notice if user does not have tickets"
|
3462 |
+
msgid "You don't have %s for this event"
|
3463 |
msgstr ""
|
3464 |
|
3465 |
+
#: src/views/tickets/orders.php:44
|
3466 |
msgid "View %s"
|
3467 |
msgstr ""
|
3468 |
|
3469 |
+
#: src/views/tickets/orders.php:90
|
3470 |
msgid "Update %s"
|
3471 |
msgstr ""
|
3472 |
|
3473 |
+
#: src/views/tickets/rsvp.php:53
|
|
|
|
|
|
|
|
|
|
|
3474 |
msgid "Please fill in the RSVP quantity, confirmation name, and email fields."
|
3475 |
msgstr ""
|
3476 |
|
3477 |
+
#: src/views/tickets/rsvp.php:103 src/views/tickets/tpp.php:107
|
3478 |
msgid "%1$s available"
|
3479 |
msgstr ""
|
3480 |
|
3481 |
+
#: src/views/tickets/rsvp.php:135
|
3482 |
msgid "Send RSVP confirmation to:"
|
3483 |
msgstr ""
|
3484 |
|
3485 |
+
#: src/views/tickets/rsvp.php:210
|
|
|
|
|
|
|
|
|
|
|
3486 |
msgid "Don't list me on the public attendee list"
|
3487 |
msgstr ""
|
3488 |
|
3489 |
+
#: src/views/tickets/rsvp.php:222
|
3490 |
msgid "Login to RSVP"
|
3491 |
msgstr ""
|
3492 |
|
3493 |
+
#: src/views/tickets/rsvp.php:232
|
3494 |
+
msgctxt "tickets process button text"
|
3495 |
+
msgid "Confirm %s"
|
3496 |
msgstr ""
|
3497 |
|
3498 |
+
#: src/views/tickets/rsvp.php:241 src/views/tickets/tpp.php:168
|
3499 |
msgid ""
|
3500 |
"You must have JavaScript activated to purchase tickets. Please enable "
|
3501 |
"JavaScript in your browser."
|
3505 |
msgid "Return to Cart"
|
3506 |
msgstr ""
|
3507 |
|
3508 |
+
#: src/views/tickets/tpp-success.php:46
|
3509 |
msgid "No order confirmation is available because no purchase was made."
|
3510 |
msgstr ""
|
3511 |
|
3512 |
+
#: src/views/tickets/tpp-success.php:52
|
3513 |
msgid ""
|
3514 |
"Whoops! It looks like there was a problem with your order. Please contact "
|
3515 |
"the site owner for assistance."
|
3516 |
msgstr ""
|
3517 |
|
3518 |
+
#: src/views/tickets/tpp-success.php:60
|
3519 |
msgid ""
|
3520 |
"Your order (#%s) is currently processing. Once completed, you'll receive "
|
3521 |
"your ticket(s) in an email."
|
3522 |
msgstr ""
|
3523 |
|
3524 |
+
#: src/views/tickets/tpp-success.php:69
|
3525 |
msgid ""
|
3526 |
"Thank you for your purchase! You will receive your receipt and tickets via "
|
3527 |
"email."
|
3528 |
msgstr ""
|
3529 |
|
3530 |
+
#: src/views/tickets/tpp-success.php:72
|
3531 |
msgid "Purchaser Name"
|
3532 |
msgstr ""
|
3533 |
|
3534 |
+
#: src/views/tickets/tpp-success.php:75
|
3535 |
msgid "Purchaser Email"
|
3536 |
msgstr ""
|
3537 |
|
3538 |
+
#: src/views/tickets/tpp-success.php:82
|
|
|
|
|
|
|
|
|
|
|
3539 |
msgctxt "Success page tickets table header"
|
3540 |
msgid "Price"
|
3541 |
msgstr ""
|
3542 |
|
3543 |
+
#: src/views/tickets/tpp-success.php:83
|
3544 |
msgctxt "Success page tickets table header"
|
3545 |
msgid "Quantity"
|
3546 |
msgstr ""
|
3547 |
|
3548 |
+
#: src/views/tickets/tpp-success.php:84
|
3549 |
msgctxt "Success page tickets table header"
|
3550 |
msgid "Subtotal"
|
3551 |
msgstr ""
|
3552 |
|
3553 |
+
#: src/views/tickets/tpp.php:61
|
|
|
|
|
|
|
|
|
|
|
3554 |
msgid "Please fill in the ticket confirmation name and email fields."
|
3555 |
msgstr ""
|
3556 |
|
3557 |
+
#: src/views/tickets/tpp.php:126
|
3558 |
msgid "Buy now"
|
3559 |
msgstr ""
|
3560 |
|
3561 |
+
#: src/views/tickets/view-link.php:57
|
3562 |
+
msgid "You have %1$s for this %2$s."
|
3563 |
+
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3564 |
|
3565 |
#. Plugin URI of the plugin/theme
|
3566 |
msgid "http://m.tri.be/1acb"
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, brianjessee, camwynsp, paulkim, sc0ttkclark, aguseo,
|
|
4 |
Tags: RSVP, events, tickets, event management, calendar, ticket sales, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, ticket integration, event ticketing
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.2
|
7 |
-
Stable tag: 4.10.
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -117,6 +117,21 @@ Currently, the following add-ons are available for Event Tickets:
|
|
117 |
|
118 |
== Changelog ==
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
= [4.10.8] 2019-09-16 =
|
121 |
|
122 |
* Tweak - Renamed `src/views/tickets/orders-link.php` to `src/views/tickets/view-link.php` and renamed `src/views/blocks/attendees/order-links.php` to `src/views/blocks/attendees/view-link.php` for improved and consistent naming between Classic and Block Editor templates [130955]
|
4 |
Tags: RSVP, events, tickets, event management, calendar, ticket sales, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, ticket integration, event ticketing
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.2
|
7 |
+
Stable tag: 4.10.9
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
117 |
|
118 |
== Changelog ==
|
119 |
|
120 |
+
= [4.10.9] 2019-10-01 =
|
121 |
+
|
122 |
+
* Feature - New functions to easily rename ticket types and ensure consistent wording: `tribe_get_rsvp_label_singular()`, `tribe_get_rsvp_label_singular_lowercase()`, `tribe_get_rsvp_label_plural()`, `tribe_get_rsvp_label_plural_lowercase()`, `tribe_get_ticket_label_singular()`, `tribe_get_ticket_label_singular_lowercase()`, `tribe_get_ticket_label_plural()`, and `tribe_get_ticket_label_plural_lowercase()` [130897]
|
123 |
+
* Tweak - Allow Admin and Editor users to see Attendees in REST API responses by default [128298]
|
124 |
+
* Tweak - Notify Promoter if an event with tickets is deleted [134113]
|
125 |
+
* Tweak - Added filters: `tribe_display_tickets_left_threshold`, `tribe_events_tickets_views_v2_is_enabled`, `tribe_get_rsvp_label_singular`, `tribe_get_rsvp_label_singular_lowercase`, `tribe_get_rsvp_label_plural`, `tribe_get_rsvp_label_plural_lowercase`, `tribe_get_ticket_label_singular`, `tribe_get_ticket_label_singular_lowercase`, `tribe_get_ticket_label_plural`, `tribe_get_ticket_label_plural_lowercase`, `tribe_tickets_filter_showing_tickets_on_attendee_registration`
|
126 |
+
* Tweak - Changed views: `blocks/attendees/view-link`, `blocks/rsvp/content-inactive`, `blocks/rsvp/form/error`, `blocks/rsvp/form/quantity`, `blocks/rsvp/form/submit-button`, `blocks/rsvp/icon`, `blocks/rsvp/messages/success`, `blocks/rsvp/status/full`, `blocks/tickets/registration/summary/title`, `registration/content`, `tickets/email`, `tickets/orders-pp-tickets`, `tickets/orders-rsvp`, `tickets/orders`, `tickets/rsvp`, `tickets/tpp-success`, `tickets/tpp`, `tickets/view-link`, `v2/day/event/cost`, `v2/list/event/cost`, `v2/map/event-cards/event-card/event/actions/cost`, `v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost`, `v2/month/mobile-events/mobile-day/mobile-event/cost`, `v2/photo/event/cost`, `v2/week/grid-body/events-day/event/tooltip/cost`, `v2/week/mobile-events/day/event/cost`
|
127 |
+
* Fix - The attendee link in the ticket and RSVP block so it shows after the creation of a ticket or RSVP. [128521]
|
128 |
+
* Fix - Prevent conflict with Genesis Framework where content or the excerpt does not show in the post archives [125496]
|
129 |
+
* Fix - Prevent tickets that do not have attendee meta from showing on the attendee registration page [125021]
|
130 |
+
* Fix - Prevent multiple clicks on `Confirm RSVP` from submitting entries [132961]
|
131 |
+
* Fix - Make 'Not going' available to translate in RSVP dropdown [134358]
|
132 |
+
* Fix - Update how we intercept the singular event template when The Events Calendar is active, on events created using the Block editor so that you can view 'My Tickets' correctly [134583]
|
133 |
+
* Language: 101 new strings added, 158 updated, 48 fuzzied, and 104 obsoleted
|
134 |
+
|
135 |
= [4.10.8] 2019-09-16 =
|
136 |
|
137 |
* Tweak - Renamed `src/views/tickets/orders-link.php` to `src/views/tickets/view-link.php` and renamed `src/views/blocks/attendees/order-links.php` to `src/views/blocks/attendees/view-link.php` for improved and consistent naming between Classic and Block Editor templates [130955]
|
src/Tribe/Admin/Move_Ticket_Types.php
CHANGED
@@ -25,7 +25,7 @@ class Tribe__Tickets__Admin__Move_Ticket_Types extends Tribe__Tickets__Admin__Mo
|
|
25 |
}
|
26 |
|
27 |
return array_merge( $vars, array(
|
28 |
-
'title' => __( 'Move
|
29 |
'mode' => 'ticket_type_only',
|
30 |
) );
|
31 |
}
|
@@ -81,6 +81,8 @@ class Tribe__Tickets__Admin__Move_Ticket_Types extends Tribe__Tickets__Admin__Mo
|
|
81 |
|
82 |
/**
|
83 |
* Listens out for ajax requests to move a ticket type to a new post.
|
|
|
|
|
84 |
*/
|
85 |
public function move_ticket_type_requests() {
|
86 |
$args = wp_parse_args( $_POST, array(
|
@@ -100,22 +102,29 @@ class Tribe__Tickets__Admin__Move_Ticket_Types extends Tribe__Tickets__Admin__Mo
|
|
100 |
|
101 |
if ( ! $ticket_type_id || ! $destination_id ) {
|
102 |
wp_send_json_error( array(
|
103 |
-
'message' =>
|
|
|
|
|
|
|
|
|
104 |
) );
|
105 |
}
|
106 |
|
107 |
if ( ! $this->move_ticket_type( $ticket_type_id, $destination_id ) ) {
|
108 |
wp_send_json_error( array(
|
109 |
-
'message' => __( '
|
110 |
) );
|
111 |
}
|
112 |
|
113 |
wp_send_json_success( array(
|
114 |
'message' => sprintf(
|
115 |
-
'<p>' .
|
116 |
-
|
117 |
-
'<a href="' . esc_url( get_admin_url( null, '/post.php?post=' . $
|
118 |
-
'<a href="' . esc_url( get_admin_url( null, '/post.php?post=' . $
|
|
|
|
|
|
|
119 |
),
|
120 |
'remove_ticket_type' => $ticket_type_id,
|
121 |
) );
|
@@ -131,6 +140,8 @@ class Tribe__Tickets__Admin__Move_Ticket_Types extends Tribe__Tickets__Admin__Mo
|
|
131 |
* Moving the ticket type, rather than recreating it, can be useful when ticket orders
|
132 |
* have already been placed.
|
133 |
*
|
|
|
|
|
134 |
* @param int $ticket_type_id
|
135 |
* @param int $destination_post_id
|
136 |
* @param int $instigator_id (optional) the user who initiated or requested the change
|
@@ -202,10 +213,11 @@ class Tribe__Tickets__Admin__Move_Ticket_Types extends Tribe__Tickets__Admin__Mo
|
|
202 |
$provider->clear_attendees_cache( $destination_post_id );
|
203 |
|
204 |
$history_message = sprintf(
|
205 |
-
__( '
|
206 |
-
|
207 |
-
|
208 |
-
|
|
|
209 |
get_the_title( $src_post_id )
|
210 |
);
|
211 |
|
25 |
}
|
26 |
|
27 |
return array_merge( $vars, array(
|
28 |
+
'title' => esc_html( sprintf( __( 'Move %s Types', 'event-tickets' ), tribe_get_ticket_label_singular( 'move_ticket_type_title' ) ) ),
|
29 |
'mode' => 'ticket_type_only',
|
30 |
) );
|
31 |
}
|
81 |
|
82 |
/**
|
83 |
* Listens out for ajax requests to move a ticket type to a new post.
|
84 |
+
*
|
85 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
86 |
*/
|
87 |
public function move_ticket_type_requests() {
|
88 |
$args = wp_parse_args( $_POST, array(
|
102 |
|
103 |
if ( ! $ticket_type_id || ! $destination_id ) {
|
104 |
wp_send_json_error( array(
|
105 |
+
'message' => esc_html( sprintf(
|
106 |
+
__( '%1$s type could not be moved: the %2$s type or destination post was invalid.', 'event-tickets' ),
|
107 |
+
tribe_get_ticket_label_singular( 'move_ticket_type_error' ),
|
108 |
+
tribe_get_ticket_label_singular_lowercase( 'move_ticket_type_error' )
|
109 |
+
) )
|
110 |
) );
|
111 |
}
|
112 |
|
113 |
if ( ! $this->move_ticket_type( $ticket_type_id, $destination_id ) ) {
|
114 |
wp_send_json_error( array(
|
115 |
+
'message' => esc_html( sprintf( __( '%s type could not be moved: unexpected failure during reassignment.', 'event-tickets' ), tribe_get_ticket_label_singular( 'move_ticket_type_error' ) ) )
|
116 |
) );
|
117 |
}
|
118 |
|
119 |
wp_send_json_success( array(
|
120 |
'message' => sprintf(
|
121 |
+
'<p>' . esc_html__( '%1$s type %2$s for %3$s was successfully moved to %4$s. All previously sold %5$s of this type have been transferred to %4$s. Please adjust capacity and stock manually as needed. %2$s %6$s holders have received an email notifying them of the change. You may now close this window!', 'event-tickets' ) . '</p>',
|
122 |
+
esc_html( tribe_get_ticket_label_singular( 'move_ticket_type_success' ) ),
|
123 |
+
'<a href="' . esc_url( get_admin_url( null, '/post.php?post=' . $ticket_type_id . '&action=edit' ) ) . '" target="_blank">' . esc_html( get_the_title( $ticket_type_id ) ) . '</a>',
|
124 |
+
'<a href="' . esc_url( get_admin_url( null, '/post.php?post=' . $src_post_id . '&action=edit' ) ) . '" target="_blank">' . esc_html( get_the_title( $src_post_id ) ) . '</a>',
|
125 |
+
'<a href="' . esc_url( get_admin_url( null, '/post.php?post=' . $destination_id . '&action=edit' ) ) . '" target="_blank">' . esc_html( get_the_title( $destination_id ) ) . '</a>',
|
126 |
+
esc_html( tribe_get_ticket_label_plural_lowercase( 'move_ticket_type_success' ) ),
|
127 |
+
esc_html( tribe_get_ticket_label_singular_lowercase( 'move_ticket_type_success' ) )
|
128 |
),
|
129 |
'remove_ticket_type' => $ticket_type_id,
|
130 |
) );
|
140 |
* Moving the ticket type, rather than recreating it, can be useful when ticket orders
|
141 |
* have already been placed.
|
142 |
*
|
143 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
144 |
+
*
|
145 |
* @param int $ticket_type_id
|
146 |
* @param int $destination_post_id
|
147 |
* @param int $instigator_id (optional) the user who initiated or requested the change
|
213 |
$provider->clear_attendees_cache( $destination_post_id );
|
214 |
|
215 |
$history_message = sprintf(
|
216 |
+
__( '%1$s type was moved to <a href="%2$s" target="_blank">%3$s</a> from <a href="%4$s" target="_blank">%5$s</a>', 'event-tickets' ),
|
217 |
+
esc_html( tribe_get_ticket_label_singular( 'move_ticket_type_history_message' ) ),
|
218 |
+
esc_url( get_permalink( $destination_post_id ) ),
|
219 |
+
esc_html( get_the_title( $destination_post_id ) ),
|
220 |
+
esc_url( get_permalink( $src_post_id ) ),
|
221 |
get_the_title( $src_post_id )
|
222 |
);
|
223 |
|
src/Tribe/Admin/Move_Tickets.php
CHANGED
@@ -413,8 +413,9 @@ class Tribe__Tickets__Admin__Move_Tickets {
|
|
413 |
}
|
414 |
|
415 |
/**
|
416 |
-
* Listens for and handles requests to reassign tickets from one ticket type
|
417 |
-
*
|
|
|
418 |
*/
|
419 |
public function move_tickets_request() {
|
420 |
if ( ! wp_verify_nonce( $_POST['check'], 'move_tickets' ) ) {
|
@@ -435,7 +436,13 @@ class Tribe__Tickets__Admin__Move_Tickets {
|
|
435 |
|
436 |
if ( ! $ticket_ids || ! $target_type_id ) {
|
437 |
wp_send_json_error( array(
|
438 |
-
'message' =>
|
|
|
|
|
|
|
|
|
|
|
|
|
439 |
) );
|
440 |
}
|
441 |
|
@@ -443,7 +450,8 @@ class Tribe__Tickets__Admin__Move_Tickets {
|
|
443 |
|
444 |
if ( ! $moved_tickets ) {
|
445 |
wp_send_json_error( array(
|
446 |
-
'message' => __( '
|
|
|
447 |
) );
|
448 |
}
|
449 |
|
413 |
}
|
414 |
|
415 |
/**
|
416 |
+
* Listens for and handles requests to reassign tickets from one ticket type to another.
|
417 |
+
*
|
418 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
419 |
*/
|
420 |
public function move_tickets_request() {
|
421 |
if ( ! wp_verify_nonce( $_POST['check'], 'move_tickets' ) ) {
|
436 |
|
437 |
if ( ! $ticket_ids || ! $target_type_id ) {
|
438 |
wp_send_json_error( array(
|
439 |
+
'message' => esc_html(
|
440 |
+
sprintf(
|
441 |
+
__( '%1$s could not be moved: valid %2$s IDs or a destination ID were not provided.', 'event-tickets' ),
|
442 |
+
tribe_get_ticket_label_plural( 'move_tickets_request_error' ),
|
443 |
+
tribe_get_ticket_label_singular( 'move_tickets_request_error' )
|
444 |
+
)
|
445 |
+
)
|
446 |
) );
|
447 |
}
|
448 |
|
450 |
|
451 |
if ( ! $moved_tickets ) {
|
452 |
wp_send_json_error( array(
|
453 |
+
'message' => esc_html( sprintf( __( '%s could not be moved: there was an unexpected failure during reassignment.', 'event-tickets' ), tribe_get_ticket_label_plural( 'move_tickets_request_error' )
|
454 |
+
) )
|
455 |
) );
|
456 |
}
|
457 |
|
src/Tribe/Admin/Ticket_Settings.php
CHANGED
@@ -14,12 +14,12 @@ class Tribe__Tickets__Admin__Ticket_Settings {
|
|
14 |
/**
|
15 |
* Loads the ticket settings from an admin-view file and returns them as an array.
|
16 |
*
|
17 |
-
* @
|
18 |
*/
|
19 |
public function settings_ui() {
|
20 |
$settings = $this->get_settings_array();
|
21 |
|
22 |
-
new Tribe__Settings_Tab( 'event-tickets',
|
23 |
}
|
24 |
|
25 |
/**
|
14 |
/**
|
15 |
* Loads the ticket settings from an admin-view file and returns them as an array.
|
16 |
*
|
17 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
18 |
*/
|
19 |
public function settings_ui() {
|
20 |
$settings = $this->get_settings_array();
|
21 |
|
22 |
+
new Tribe__Settings_Tab( 'event-tickets', tribe_get_ticket_label_plural( 'settings_tab' ), $settings );
|
23 |
}
|
24 |
|
25 |
/**
|
src/Tribe/Admin/Views/Ticketed.php
CHANGED
@@ -29,7 +29,7 @@ class Tribe__Tickets__Admin__Views__Ticketed {
|
|
29 |
*
|
30 |
* @return array
|
31 |
*/
|
32 |
-
public function filter_edit_link( array $views =
|
33 |
/** @var Tribe__Tickets__Cache__Cache_Interface $cache */
|
34 |
$cache = tribe( 'tickets.cache' );
|
35 |
|
@@ -37,27 +37,27 @@ class Tribe__Tickets__Admin__Views__Ticketed {
|
|
37 |
|
38 |
$ticketed_query_var = Tribe__Tickets__Query::$has_tickets;
|
39 |
|
40 |
-
$ticketed_args =
|
41 |
'post_type' => $this->post_type,
|
42 |
$ticketed_query_var => '1',
|
43 |
'post_status' => 'any',
|
44 |
'paged' => 1,
|
45 |
-
|
46 |
$ticketed_url = add_query_arg( $ticketed_args );
|
47 |
$ticketed_label = __( 'Ticketed', 'event-tickets' );
|
48 |
-
$ticketed_count = count( $cache->posts_with_ticket_types(
|
49 |
|
50 |
$views['tickets-ticketed'] = sprintf( '<a href="%s">%s</a> (%d)', $ticketed_url, $ticketed_label, $ticketed_count );
|
51 |
|
52 |
-
$unticketed_args =
|
53 |
'post_type' => $this->post_type,
|
54 |
$ticketed_query_var => '0',
|
55 |
'post_status' => 'any',
|
56 |
'paged' => 1,
|
57 |
-
|
58 |
$unticketed_url = add_query_arg( $unticketed_args );
|
59 |
$unticketed_label = __( 'Unticketed', 'event-tickets' );
|
60 |
-
$unticketed_count = count( $cache->posts_without_ticket_types(
|
61 |
|
62 |
$views['tickets-unticketed'] = sprintf( '<a href="%s">%s</a> (%d)', $unticketed_url, $unticketed_label,
|
63 |
$unticketed_count );
|
@@ -66,4 +66,4 @@ class Tribe__Tickets__Admin__Views__Ticketed {
|
|
66 |
|
67 |
return $views;
|
68 |
}
|
69 |
-
}
|
29 |
*
|
30 |
* @return array
|
31 |
*/
|
32 |
+
public function filter_edit_link( array $views = [] ) {
|
33 |
/** @var Tribe__Tickets__Cache__Cache_Interface $cache */
|
34 |
$cache = tribe( 'tickets.cache' );
|
35 |
|
37 |
|
38 |
$ticketed_query_var = Tribe__Tickets__Query::$has_tickets;
|
39 |
|
40 |
+
$ticketed_args = [
|
41 |
'post_type' => $this->post_type,
|
42 |
$ticketed_query_var => '1',
|
43 |
'post_status' => 'any',
|
44 |
'paged' => 1,
|
45 |
+
];
|
46 |
$ticketed_url = add_query_arg( $ticketed_args );
|
47 |
$ticketed_label = __( 'Ticketed', 'event-tickets' );
|
48 |
+
$ticketed_count = count( $cache->posts_with_ticket_types( [ $this->post_type ], true ) );
|
49 |
|
50 |
$views['tickets-ticketed'] = sprintf( '<a href="%s">%s</a> (%d)', $ticketed_url, $ticketed_label, $ticketed_count );
|
51 |
|
52 |
+
$unticketed_args = [
|
53 |
'post_type' => $this->post_type,
|
54 |
$ticketed_query_var => '0',
|
55 |
'post_status' => 'any',
|
56 |
'paged' => 1,
|
57 |
+
];
|
58 |
$unticketed_url = add_query_arg( $unticketed_args );
|
59 |
$unticketed_label = __( 'Unticketed', 'event-tickets' );
|
60 |
+
$unticketed_count = count( $cache->posts_without_ticket_types( [ $this->post_type ], true ) );
|
61 |
|
62 |
$views['tickets-unticketed'] = sprintf( '<a href="%s">%s</a> (%d)', $unticketed_url, $unticketed_label,
|
63 |
$unticketed_count );
|
66 |
|
67 |
return $views;
|
68 |
}
|
69 |
+
}
|
src/Tribe/Assets.php
CHANGED
@@ -42,16 +42,17 @@ class Tribe__Tickets__Assets {
|
|
42 |
}
|
43 |
|
44 |
/**
|
45 |
-
* Enqueue scripts for admin views
|
46 |
*
|
47 |
* @since 4.6
|
|
|
48 |
*/
|
49 |
public function admin_enqueue_scripts() {
|
50 |
// Set up some data for our localize scripts
|
51 |
|
52 |
$upload_header_data = array(
|
53 |
-
'title' =>
|
54 |
-
'button' =>
|
55 |
);
|
56 |
|
57 |
$nonces = array(
|
42 |
}
|
43 |
|
44 |
/**
|
45 |
+
* Enqueue scripts for admin views.
|
46 |
*
|
47 |
* @since 4.6
|
48 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
49 |
*/
|
50 |
public function admin_enqueue_scripts() {
|
51 |
// Set up some data for our localize scripts
|
52 |
|
53 |
$upload_header_data = array(
|
54 |
+
'title' => esc_html( sprintf( __( '%s header image', 'event-tickets' ), tribe_get_ticket_label_singular( 'header_image_title' ) ) ),
|
55 |
+
'button' => esc_html( sprintf( __( 'Set as %s header', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'header_button' ) ) ),
|
56 |
);
|
57 |
|
58 |
$nonces = array(
|
src/Tribe/Attendee_Registration/Main.php
CHANGED
@@ -161,4 +161,35 @@ class Tribe__Tickets__Attendee_Registration__Main {
|
|
161 |
|
162 |
return get_page_by_path( $slug );
|
163 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
}
|
161 |
|
162 |
return get_page_by_path( $slug );
|
163 |
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Check if any Ticket "Products" has Attendee Registration Enabled.
|
167 |
+
*
|
168 |
+
* @since 4.10.9
|
169 |
+
*
|
170 |
+
* @param array $tickets An array of tickets to check if registration is enabled.
|
171 |
+
*
|
172 |
+
* @return bool Return true if any of the ticket products has attendee registration enabled.
|
173 |
+
*/
|
174 |
+
public function has_attendee_registration_enabled_in_array_of_tickets( $tickets ) {
|
175 |
+
|
176 |
+
if ( ! is_array( $tickets ) ) {
|
177 |
+
return false;
|
178 |
+
}
|
179 |
+
|
180 |
+
foreach ( $tickets as $ticket ) {
|
181 |
+
|
182 |
+
if ( ! isset( $ticket['id'] ) ) {
|
183 |
+
continue;
|
184 |
+
}
|
185 |
+
|
186 |
+
if ( tribe( 'tickets.data_api' )->ticket_has_meta_fields( $ticket['id'] ) ) {
|
187 |
+
return true;
|
188 |
+
}
|
189 |
+
}
|
190 |
+
|
191 |
+
return false;
|
192 |
+
|
193 |
+
}
|
194 |
+
|
195 |
}
|
src/Tribe/Attendee_Registration/Template.php
CHANGED
@@ -304,17 +304,20 @@ class Tribe__Tickets__Attendee_Registration__Template extends Tribe__Templates {
|
|
304 |
/**
|
305 |
* Hooks into the genesis excerpt filter and forces it "off" on the AR page
|
306 |
*
|
|
|
|
|
307 |
* @param string|null $unused_null Unused variable
|
308 |
* @param string $setting
|
309 |
*
|
310 |
-
* @return string
|
311 |
*/
|
312 |
public function override_genesis_limit( $unused_null, $setting ) {
|
313 |
// Bail if we're not on the attendee info page
|
314 |
if ( ! $this->is_on_ar_page() ) {
|
315 |
-
return
|
316 |
}
|
317 |
|
|
|
318 |
return '';
|
319 |
}
|
320 |
|
304 |
/**
|
305 |
* Hooks into the genesis excerpt filter and forces it "off" on the AR page
|
306 |
*
|
307 |
+
* @since 4.10.9 - Return null if not on ar page and true if on ar page.
|
308 |
+
*
|
309 |
* @param string|null $unused_null Unused variable
|
310 |
* @param string $setting
|
311 |
*
|
312 |
+
* @return null|string
|
313 |
*/
|
314 |
public function override_genesis_limit( $unused_null, $setting ) {
|
315 |
// Bail if we're not on the attendee info page
|
316 |
if ( ! $this->is_on_ar_page() ) {
|
317 |
+
return null;
|
318 |
}
|
319 |
|
320 |
+
// Return empty string on AR to get no content.
|
321 |
return '';
|
322 |
}
|
323 |
|
src/Tribe/Attendees.php
CHANGED
@@ -498,7 +498,7 @@ class Tribe__Tickets__Attendees {
|
|
498 |
// Add additional expected columns
|
499 |
$export_columns['order_id'] = esc_html_x( 'Order ID', 'attendee export', 'event-tickets' );
|
500 |
$export_columns['order_status_label'] = esc_html_x( 'Order Status', 'attendee export', 'event-tickets' );
|
501 |
-
$export_columns['attendee_id'] =
|
502 |
$export_columns['purchaser_name'] = esc_html_x( 'Customer Name', 'attendee export', 'event-tickets' );
|
503 |
$export_columns['purchaser_email'] = esc_html_x( 'Customer Email Address', 'attendee export', 'event-tickets' );
|
504 |
|
498 |
// Add additional expected columns
|
499 |
$export_columns['order_id'] = esc_html_x( 'Order ID', 'attendee export', 'event-tickets' );
|
500 |
$export_columns['order_status_label'] = esc_html_x( 'Order Status', 'attendee export', 'event-tickets' );
|
501 |
+
$export_columns['attendee_id'] = esc_html( sprintf( _x( '%s ID', 'attendee export', 'event-tickets' ), tribe_get_ticket_label_singular( 'attendee_export_ticket_id' ) ) );
|
502 |
$export_columns['purchaser_name'] = esc_html_x( 'Customer Name', 'attendee export', 'event-tickets' );
|
503 |
$export_columns['purchaser_email'] = esc_html_x( 'Customer Email Address', 'attendee export', 'event-tickets' );
|
504 |
|
src/Tribe/Attendees_Table.php
CHANGED
@@ -113,7 +113,7 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
113 |
public function get_table_columns() {
|
114 |
$columns = [
|
115 |
'cb' => '<input type="checkbox" />',
|
116 |
-
'ticket' =>
|
117 |
'primary_info' => esc_html_x( 'Primary Information', 'attendee table', 'event-tickets' ),
|
118 |
'security' => esc_html_x( 'Security Code', 'attendee table', 'event-tickets' ),
|
119 |
'status' => esc_html_x( 'Status', 'attendee table', 'event-tickets' ),
|
@@ -976,14 +976,14 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
976 |
*/
|
977 |
private function get_search_options() {
|
978 |
return [
|
979 |
-
'purchaser_name' =>
|
980 |
-
'purchaser_email' =>
|
981 |
-
'user' =>
|
982 |
-
'order_status' =>
|
983 |
-
'order' =>
|
984 |
-
'security_code' =>
|
985 |
-
'ID' =>
|
986 |
-
'product_id' =>
|
987 |
];
|
988 |
}
|
989 |
|
@@ -1049,4 +1049,4 @@ class Tribe__Tickets__Attendees_Table extends WP_List_Table {
|
|
1049 |
|
1050 |
echo $search_box;
|
1051 |
}
|
1052 |
-
}
|
113 |
public function get_table_columns() {
|
114 |
$columns = [
|
115 |
'cb' => '<input type="checkbox" />',
|
116 |
+
'ticket' => esc_html( tribe_get_ticket_label_singular( 'attendee_table_column' ) ),
|
117 |
'primary_info' => esc_html_x( 'Primary Information', 'attendee table', 'event-tickets' ),
|
118 |
'security' => esc_html_x( 'Security Code', 'attendee table', 'event-tickets' ),
|
119 |
'status' => esc_html_x( 'Status', 'attendee table', 'event-tickets' ),
|
976 |
*/
|
977 |
private function get_search_options() {
|
978 |
return [
|
979 |
+
'purchaser_name' => esc_html_x( 'Search by Purchaser Name', 'Attendees Table search options', 'event-tickets' ),
|
980 |
+
'purchaser_email' => esc_html_x( 'Search by Purchaser Email', 'Attendees Table search options', 'event-tickets' ),
|
981 |
+
'user' => esc_html_x( 'Search by User ID', 'Attendees Table search options', 'event-tickets' ),
|
982 |
+
'order_status' => esc_html_x( 'Search by Order Status', 'Attendees Table search options', 'event-tickets' ),
|
983 |
+
'order' => esc_html_x( 'Search by Order ID', 'Attendees Table search options', 'event-tickets' ),
|
984 |
+
'security_code' => esc_html_x( 'Search by Security Code', 'Attendees Table search options', 'event-tickets' ),
|
985 |
+
'ID' => esc_html( sprintf( _x( 'Search by %s ID', 'Attendees Table search options', 'event-tickets' ), tribe_get_ticket_label_singular( 'attendees_table_search_box_ticket_id' ) ) ),
|
986 |
+
'product_id' => esc_html_x( 'Search by Product ID', 'Attendees Table search options', 'event-tickets' ),
|
987 |
];
|
988 |
}
|
989 |
|
1049 |
|
1050 |
echo $search_box;
|
1051 |
}
|
1052 |
+
}
|
src/Tribe/CSV_Importer/Column_Names.php
CHANGED
@@ -31,16 +31,16 @@ class Tribe__Tickets__CSV_Importer__Column_Names {
|
|
31 |
public function filter_rsvp_column_names( array $column_names ) {
|
32 |
$column_names = array_merge( $column_names,
|
33 |
array(
|
34 |
-
'event_name'
|
35 |
-
'ticket_name'
|
36 |
-
'ticket_description'
|
37 |
-
'ticket_show_description' =>
|
38 |
-
'ticket_start_sale_date'
|
39 |
-
'ticket_start_sale_time'
|
40 |
-
'ticket_end_sale_date'
|
41 |
-
'ticket_end_sale_time'
|
42 |
-
'ticket_stock'
|
43 |
-
'ticket_capacity'
|
44 |
) );
|
45 |
|
46 |
return $column_names;
|
31 |
public function filter_rsvp_column_names( array $column_names ) {
|
32 |
$column_names = array_merge( $column_names,
|
33 |
array(
|
34 |
+
'event_name' => esc_html__( 'Event Name or ID or Slug', 'event-tickets' ),
|
35 |
+
'ticket_name' => esc_html( sprintf( __( '%s Name', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_name' ) ) ),
|
36 |
+
'ticket_description' => esc_html( sprintf( __( '%s Description', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_description' ) ) ),
|
37 |
+
'ticket_show_description' => esc_html( sprintf( __( '%s Show Description', 'event-tickets-plus' ), tribe_get_ticket_label_singular( 'rsvp_column_name_show_description' ) ) ),
|
38 |
+
'ticket_start_sale_date' => esc_html( sprintf( __( '%s Start Sale Date', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_start_sale_date' ) ) ),
|
39 |
+
'ticket_start_sale_time' => esc_html( sprintf( __( '%s Start Sale Time', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_start_sale_time' ) ) ),
|
40 |
+
'ticket_end_sale_date' => esc_html( sprintf( __( '%s End Sale Date', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_end_sale_date' ) ) ),
|
41 |
+
'ticket_end_sale_time' => esc_html( sprintf( __( '%s End Sale Time', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_end_sale_time' ) ) ),
|
42 |
+
'ticket_stock' => esc_html( sprintf( __( '%s Stock', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_stock' ) ) ),
|
43 |
+
'ticket_capacity' => esc_html( sprintf( __( '%s Capacity', 'event-tickets' ), tribe_get_ticket_label_singular( 'rsvp_column_name_capacity' ) ) ),
|
44 |
) );
|
45 |
|
46 |
return $column_names;
|
src/Tribe/CSV_Importer/Rows.php
CHANGED
@@ -32,7 +32,7 @@ class Tribe__Tickets__CSV_Importer__Rows {
|
|
32 |
* @return array
|
33 |
*/
|
34 |
public function filter_import_options_rows( array $import_options ) {
|
35 |
-
$import_options['rsvp'] =
|
36 |
|
37 |
return $import_options;
|
38 |
}
|
@@ -46,7 +46,7 @@ class Tribe__Tickets__CSV_Importer__Rows {
|
|
46 |
*/
|
47 |
public function filter_csv_post_types( array $post_types ) {
|
48 |
$post_type = get_post_type_object( Tribe__Tickets__RSVP::get_instance()->ticket_object );
|
49 |
-
$post_type->labels->name =
|
50 |
$post_types[] = $post_type;
|
51 |
return $post_types;
|
52 |
}
|
32 |
* @return array
|
33 |
*/
|
34 |
public function filter_import_options_rows( array $import_options ) {
|
35 |
+
$import_options['rsvp'] = esc_html( tribe_get_rsvp_label_plural( 'import_type' ) );
|
36 |
|
37 |
return $import_options;
|
38 |
}
|
46 |
*/
|
47 |
public function filter_csv_post_types( array $post_types ) {
|
48 |
$post_type = get_post_type_object( Tribe__Tickets__RSVP::get_instance()->ticket_object );
|
49 |
+
$post_type->labels->name = esc_html( tribe_get_rsvp_label_plural( 'post_type_label' ) );
|
50 |
$post_types[] = $post_type;
|
51 |
return $post_types;
|
52 |
}
|
src/Tribe/Commerce/PayPal/Attendance_Totals.php
CHANGED
@@ -70,10 +70,11 @@ class Tribe__Tickets__Commerce__PayPal__Attendance_Totals extends Tribe__Tickets
|
|
70 |
* Prints an HTML (unordered) list of attendance totals.
|
71 |
*
|
72 |
* @since 4.7
|
|
|
73 |
*/
|
74 |
public function print_totals() {
|
75 |
$args = [
|
76 |
-
'total_sold_label' => _x( 'Total
|
77 |
'total_complete_label' => _x( 'Complete:', 'attendee summary', 'event-tickets' ),
|
78 |
'total_cancelled_label' => _x( 'Cancelled:', 'attendee summary', 'event-tickets' ),
|
79 |
'total_sold' => $this->get_total_sold(),
|
70 |
* Prints an HTML (unordered) list of attendance totals.
|
71 |
*
|
72 |
* @since 4.7
|
73 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
74 |
*/
|
75 |
public function print_totals() {
|
76 |
$args = [
|
77 |
+
'total_sold_label' => esc_html( sprintf( _x( 'Total %s:', 'attendee summary', 'event-tickets' ), tribe_get_ticket_label_plural( 'total_sold_label' ) ) ),
|
78 |
'total_complete_label' => _x( 'Complete:', 'attendee summary', 'event-tickets' ),
|
79 |
'total_cancelled_label' => _x( 'Cancelled:', 'attendee summary', 'event-tickets' ),
|
80 |
'total_sold' => $this->get_total_sold(),
|
src/Tribe/Commerce/PayPal/Errors.php
CHANGED
@@ -13,6 +13,7 @@ class Tribe__Tickets__Commerce__PayPal__Errors {
|
|
13 |
* Casts a numeric error code related to PayPal tickets to a localized string.
|
14 |
*
|
15 |
* @since 4.7
|
|
|
16 |
*
|
17 |
* @param string|int $error_code
|
18 |
*
|
@@ -22,16 +23,16 @@ class Tribe__Tickets__Commerce__PayPal__Errors {
|
|
22 |
$map = array(
|
23 |
'-1' => __( 'There was an error', 'event-tickets' ),
|
24 |
'1' => __( 'Attendee email and/or full name is missing', 'event-tickets' ),
|
25 |
-
'2' => __( 'Trying to oversell a
|
26 |
-
'3' => __( '
|
27 |
|
28 |
// a numeric namespace reserved for front-end errors
|
29 |
-
'101' => __( 'In order to purchase
|
30 |
-
'102' => __( 'You can\'t add more
|
31 |
-
'103' => __( 'You should add at least one
|
32 |
|
33 |
// a numeric namespace reserved for front-end messages
|
34 |
-
'201' => __( "Your order is currently processing. Once completed, you'll receive your
|
35 |
);
|
36 |
|
37 |
/**
|
13 |
* Casts a numeric error code related to PayPal tickets to a localized string.
|
14 |
*
|
15 |
* @since 4.7
|
16 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
17 |
*
|
18 |
* @param string|int $error_code
|
19 |
*
|
23 |
$map = array(
|
24 |
'-1' => __( 'There was an error', 'event-tickets' ),
|
25 |
'1' => __( 'Attendee email and/or full name is missing', 'event-tickets' ),
|
26 |
+
'2' => esc_html( sprintf( __( 'Trying to oversell a %s but the current oversell policy does not allow it', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'paypal_error_oversell_policy' ) ) ),
|
27 |
+
'3' => esc_html( sprintf( __( '%s quantity is 0', 'event-tickets' ), tribe_get_ticket_label_singular( 'paypal_error_zero_quantity' ) ) ),
|
28 |
|
29 |
// a numeric namespace reserved for front-end errors
|
30 |
+
'101' => esc_html( sprintf( __( 'In order to purchase %s, you must enter your name and a valid email address.', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'paypal_error_missing_name_or_email' ) ) ),
|
31 |
+
'102' => esc_html( sprintf( __( 'You can\'t add more %1$s than the total remaining %1$s.', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'paypal_error_added_too_many' ) ) ),
|
32 |
+
'103' => esc_html( sprintf( __( 'You should add at least one %s.', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'paypal_error_zero_added' ) ) ),
|
33 |
|
34 |
// a numeric namespace reserved for front-end messages
|
35 |
+
'201' => esc_html( sprintf( __( "Your order is currently processing. Once completed, you'll receive your %s(s) in an email.", 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'paypal_error_order_processing' ) ) ),
|
36 |
);
|
37 |
|
38 |
/**
|
src/Tribe/Commerce/PayPal/Frontend/Tickets_Form.php
CHANGED
@@ -34,6 +34,7 @@ class Tribe__Tickets__Commerce__PayPal__Frontend__Tickets_Form {
|
|
34 |
* Modifies the passed content to inject the front-end tickets form.
|
35 |
*
|
36 |
* @since 4.7
|
|
|
37 |
*
|
38 |
* @return void The method will echo in the context of a buffered output.
|
39 |
*
|
@@ -73,7 +74,7 @@ class Tribe__Tickets__Commerce__PayPal__Frontend__Tickets_Form {
|
|
73 |
$ticket_sent = empty( $_GET['tpp_sent'] ) ? false : true;
|
74 |
|
75 |
if ( $ticket_sent ) {
|
76 |
-
$this->main->add_message( __( 'Your PayPal
|
77 |
}
|
78 |
|
79 |
$ticket_error = empty( $_GET['tpp_error'] ) ? false : (int) $_GET['tpp_error'];
|
34 |
* Modifies the passed content to inject the front-end tickets form.
|
35 |
*
|
36 |
* @since 4.7
|
37 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
38 |
*
|
39 |
* @return void The method will echo in the context of a buffered output.
|
40 |
*
|
74 |
$ticket_sent = empty( $_GET['tpp_sent'] ) ? false : true;
|
75 |
|
76 |
if ( $ticket_sent ) {
|
77 |
+
$this->main->add_message( esc_html( sprintf( __( 'Your PayPal %1$s has been received! Check your email for your PayPal %1$s confirmation.', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_sent' ) ) ), 'success' );
|
78 |
}
|
79 |
|
80 |
$ticket_error = empty( $_GET['tpp_error'] ) ? false : (int) $_GET['tpp_error'];
|
src/Tribe/Commerce/PayPal/Main.php
CHANGED
@@ -178,7 +178,7 @@ class Tribe__Tickets__Commerce__PayPal__Main extends Tribe__Tickets__Tickets {
|
|
178 |
$main = Tribe__Tickets__Main::instance();
|
179 |
|
180 |
/* Set up some parent's vars */
|
181 |
-
$this->plugin_name =
|
182 |
$this->plugin_path = $main->plugin_path;
|
183 |
$this->plugin_url = $main->plugin_url;
|
184 |
|
178 |
$main = Tribe__Tickets__Main::instance();
|
179 |
|
180 |
/* Set up some parent's vars */
|
181 |
+
$this->plugin_name = esc_html_x( 'Tribe Commerce', 'ticket provider', 'event-tickets' );
|
182 |
$this->plugin_path = $main->plugin_path;
|
183 |
$this->plugin_url = $main->plugin_url;
|
184 |
|
src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php
CHANGED
@@ -95,6 +95,7 @@ class Tribe__Tickets__Commerce__PayPal__Oversell__Admin_Notice_Decorator impleme
|
|
95 |
* Returns the notice header HTML.
|
96 |
*
|
97 |
* @since 4.7
|
|
|
98 |
*
|
99 |
* @param int $qty
|
100 |
* @param int $inventory
|
@@ -121,8 +122,8 @@ class Tribe__Tickets__Commerce__PayPal__Oversell__Admin_Notice_Decorator impleme
|
|
121 |
$links = tribe( 'tickets.commerce.paypal.links' );
|
122 |
$order_paypal_link = $links->order_link( 'tag', $this->get_order_id(), __( 'in your PayPal account', 'event-tickets' ) );
|
123 |
|
124 |
-
$message =
|
125 |
-
'%1$s is oversold: there are more
|
126 |
'event-tickets'
|
127 |
);
|
128 |
|
@@ -132,11 +133,14 @@ class Tribe__Tickets__Commerce__PayPal__Oversell__Admin_Notice_Decorator impleme
|
|
132 |
return sprintf(
|
133 |
'<p class="tribe-tickets-paypal-oversell-header">%s</p>',
|
134 |
sprintf(
|
135 |
-
$message,
|
136 |
-
$post_title,
|
|
|
|
|
137 |
esc_html( $this->get_order_id() ),
|
138 |
"<strong>{$qty}</strong>",
|
139 |
-
"<strong>{$inventory}</strong>"
|
|
|
140 |
)
|
141 |
);
|
142 |
}
|
95 |
* Returns the notice header HTML.
|
96 |
*
|
97 |
* @since 4.7
|
98 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
99 |
*
|
100 |
* @param int $qty
|
101 |
* @param int $inventory
|
122 |
$links = tribe( 'tickets.commerce.paypal.links' );
|
123 |
$order_paypal_link = $links->order_link( 'tag', $this->get_order_id(), __( 'in your PayPal account', 'event-tickets' ) );
|
124 |
|
125 |
+
$message = __(
|
126 |
+
'%1$s is oversold: there are more %2$s sold than the available capacity. This can occur when the PayPal transaction is not completed immediately, delaying the decrease in %3$s availability. Order %4$s includes %5$s %3$s(s). There are only %6$s %3$s(s) left. %7$s emails have not yet been sent for this order. Choose how to process this order from the options below.',
|
127 |
'event-tickets'
|
128 |
);
|
129 |
|
133 |
return sprintf(
|
134 |
'<p class="tribe-tickets-paypal-oversell-header">%s</p>',
|
135 |
sprintf(
|
136 |
+
esc_html( $message ),
|
137 |
+
esc_html( $post_title ),
|
138 |
+
esc_html( tribe_get_ticket_label_plural_lowercase( 'oversold_message' ) ),
|
139 |
+
esc_html( tribe_get_ticket_label_singular_lowercase( 'oversold_message' ) ),
|
140 |
esc_html( $this->get_order_id() ),
|
141 |
"<strong>{$qty}</strong>",
|
142 |
+
"<strong>{$inventory}</strong>",
|
143 |
+
esc_html( tribe_get_ticket_label_singular( 'oversold_message' ) )
|
144 |
)
|
145 |
);
|
146 |
}
|
src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php
CHANGED
@@ -203,6 +203,7 @@ class Tribe__Tickets__Editor__REST__V1__Endpoints__Single_ticket
|
|
203 |
* Add ticket callback executed to update / add a new ticket.
|
204 |
*
|
205 |
* @since 4.9
|
|
|
206 |
*
|
207 |
* @param WP_REST_Request $request
|
208 |
* @param $nonce_action
|
@@ -270,7 +271,7 @@ class Tribe__Tickets__Editor__REST__V1__Endpoints__Single_ticket
|
|
270 |
if ( ! $ticket ) {
|
271 |
return new WP_Error(
|
272 |
'not_acceptable',
|
273 |
-
__( '
|
274 |
array( 'status' => 406 )
|
275 |
);
|
276 |
}
|
203 |
* Add ticket callback executed to update / add a new ticket.
|
204 |
*
|
205 |
* @since 4.9
|
206 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
207 |
*
|
208 |
* @param WP_REST_Request $request
|
209 |
* @param $nonce_action
|
271 |
if ( ! $ticket ) {
|
272 |
return new WP_Error(
|
273 |
'not_acceptable',
|
274 |
+
esc_html( sprintf( __( '%s was not able to be updated', 'event-tickets' ), tribe_get_ticket_label_singular( 'rest_add_ticket_error' ) ) ),
|
275 |
array( 'status' => 406 )
|
276 |
);
|
277 |
}
|
src/Tribe/Main.php
CHANGED
@@ -4,7 +4,7 @@ class Tribe__Tickets__Main {
|
|
4 |
/**
|
5 |
* Current version of this plugin
|
6 |
*/
|
7 |
-
const VERSION = '4.10.
|
8 |
|
9 |
/**
|
10 |
* Min required The Events Calendar version
|
@@ -138,7 +138,7 @@ class Tribe__Tickets__Main {
|
|
138 |
*/
|
139 |
protected function __construct() {
|
140 |
/* Set up some parent's vars */
|
141 |
-
$this->plugin_name = 'Tickets';
|
142 |
$this->plugin_slug = 'tickets';
|
143 |
$this->plugin_path = trailingslashit( EVENT_TICKETS_DIR );
|
144 |
$this->plugin_dir = trailingslashit( basename( $this->plugin_path ) );
|
@@ -153,10 +153,10 @@ class Tribe__Tickets__Main {
|
|
153 |
|
154 |
$this->maybe_set_common_lib_info();
|
155 |
|
156 |
-
add_action( 'plugins_loaded',
|
157 |
-
add_action( 'plugins_loaded',
|
158 |
-
add_action( 'plugins_loaded',
|
159 |
-
register_activation_hook( EVENT_TICKETS_MAIN_PLUGIN_FILE,
|
160 |
}
|
161 |
|
162 |
/**
|
@@ -178,7 +178,7 @@ class Tribe__Tickets__Main {
|
|
178 |
|
179 |
// if there isn't a tribe-common version, bail
|
180 |
if ( ! preg_match( $this->common_version_regex, $common_version, $matches ) ) {
|
181 |
-
add_action( 'admin_head',
|
182 |
|
183 |
return;
|
184 |
}
|
@@ -193,10 +193,10 @@ class Tribe__Tickets__Main {
|
|
193 |
empty( $GLOBALS['tribe-common-info'] )
|
194 |
|| version_compare( $GLOBALS['tribe-common-info']['version'], $common_version, '<' )
|
195 |
) {
|
196 |
-
$GLOBALS['tribe-common-info'] =
|
197 |
'dir' => "{$this->plugin_path}common/src/Tribe",
|
198 |
'version' => $common_version,
|
199 |
-
|
200 |
}
|
201 |
}
|
202 |
|
@@ -266,8 +266,8 @@ class Tribe__Tickets__Main {
|
|
266 |
return;
|
267 |
}
|
268 |
|
269 |
-
add_action( 'admin_notices',
|
270 |
-
add_action( 'network_admin_notices',
|
271 |
|
272 |
// if we get in here, we need to reset the global common to TEC's version so that we don't cause a fatal
|
273 |
$this->reset_common_lib_info_back_to_tec();
|
@@ -296,7 +296,7 @@ class Tribe__Tickets__Main {
|
|
296 |
// Start Up Common
|
297 |
Tribe__Main::instance();
|
298 |
|
299 |
-
add_action( 'tribe_common_loaded',
|
300 |
}
|
301 |
|
302 |
/**
|
@@ -343,7 +343,7 @@ class Tribe__Tickets__Main {
|
|
343 |
tribe_singleton( 'tickets.main', $this );
|
344 |
|
345 |
tribe_singleton( 'tickets.rsvp', new Tribe__Tickets__RSVP );
|
346 |
-
tribe_singleton( 'tickets.commerce.currency', 'Tribe__Tickets__Commerce__Currency',
|
347 |
tribe_singleton( 'tickets.commerce.paypal', new Tribe__Tickets__Commerce__PayPal__Main );
|
348 |
tribe_singleton( 'tickets.redirections', 'Tribe__Tickets__Redirections' );
|
349 |
|
@@ -362,7 +362,12 @@ class Tribe__Tickets__Main {
|
|
362 |
tribe_register_provider( 'Tribe__Tickets__Editor__Provider' );
|
363 |
|
364 |
// Privacy
|
365 |
-
tribe_singleton( 'tickets.privacy', 'Tribe__Tickets__Privacy',
|
|
|
|
|
|
|
|
|
|
|
366 |
}
|
367 |
|
368 |
/**
|
@@ -390,10 +395,10 @@ class Tribe__Tickets__Main {
|
|
390 |
|
391 |
$upgrade_path = wp_nonce_url(
|
392 |
add_query_arg(
|
393 |
-
|
394 |
'action' => 'upgrade-plugin',
|
395 |
'plugin' => $plugin_short_path,
|
396 |
-
|
397 |
), 'upgrade-plugin_' . $plugin_short_path
|
398 |
);
|
399 |
|
@@ -476,7 +481,7 @@ class Tribe__Tickets__Main {
|
|
476 |
if ( version_compare( Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' ), self::VERSION, '<' ) ) {
|
477 |
$previous_versions = Tribe__Settings_Manager::get_option( 'previous_event_tickets_versions' )
|
478 |
? Tribe__Settings_Manager::get_option( 'previous_event_tickets_versions' )
|
479 |
-
:
|
480 |
|
481 |
$previous_versions[] = Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' )
|
482 |
? Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' )
|
@@ -509,38 +514,38 @@ class Tribe__Tickets__Main {
|
|
509 |
* set up hooks for this class
|
510 |
*/
|
511 |
public function hooks() {
|
512 |
-
add_action( 'init',
|
513 |
|
514 |
// connect upgrade script
|
515 |
-
add_action( 'init',
|
516 |
|
517 |
-
add_filter( 'tribe_post_types',
|
518 |
|
519 |
// Setup Help Tab texting
|
520 |
-
add_action( 'tribe_help_pre_get_sections',
|
521 |
-
add_action( 'tribe_help_pre_get_sections',
|
522 |
-
add_action( 'tribe_help_pre_get_sections',
|
523 |
-
add_filter( 'tribe_support_registered_template_systems',
|
524 |
-
add_action( 'tribe_tickets_plugin_loaded',
|
525 |
|
526 |
// Setup Front End Display
|
527 |
add_action( 'tribe_events_inside_cost', 'tribe_tickets_buy_button', 10, 0 );
|
528 |
|
529 |
// Hook to oembeds
|
530 |
-
add_action( 'tribe_events_embed_after_the_cost_value',
|
531 |
-
add_action( 'embed_head',
|
532 |
|
533 |
// Attendee screen enhancements
|
534 |
-
add_action( 'tribe_events_tickets_attendees_event_details_top',
|
535 |
|
536 |
// CSV Import options
|
537 |
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
538 |
-
add_filter( 'tribe_events_import_options_rows',
|
539 |
-
add_filter( 'tribe_aggregator_csv_post_types',
|
540 |
-
add_filter( 'tribe_aggregator_csv_column_mapping',
|
541 |
-
add_filter( 'tribe_event_import_rsvp_tickets_column_names',
|
542 |
-
add_filter( 'tribe_events_import_rsvp_tickets_importer',
|
543 |
-
add_action( 'tribe_tickets_ticket_deleted',
|
544 |
|
545 |
/**
|
546 |
* Hooking to "rsvp" to fetch an importer to fetch Column names is deprecated
|
@@ -551,8 +556,8 @@ class Tribe__Tickets__Main {
|
|
551 |
*
|
552 |
* @todo remove these two hooks when the old CSV interface is retired, maybe 5.0?
|
553 |
*/
|
554 |
-
add_filter( 'tribe_events_import_rsvp_importer',
|
555 |
-
add_filter( 'tribe_event_import_rsvp_column_names',
|
556 |
}
|
557 |
|
558 |
// Load our assets
|
@@ -574,12 +579,12 @@ class Tribe__Tickets__Main {
|
|
574 |
*/
|
575 |
public function add_help_section_support_content( $help ) {
|
576 |
$help->add_section_content( 'support', '<strong>' . esc_html__( 'Support for Event Tickets', 'event-tickets' ) . '</strong>', 20 );
|
577 |
-
$help->add_section_content( 'support',
|
578 |
'<strong><a href="http://m.tri.be/18ne" target="_blank">' . esc_html__( 'Settings overview', 'event-tickets' ) . '</a></strong>',
|
579 |
'<strong><a href="http://m.tri.be/18nf" target="_blank">' . esc_html__( 'Features overview', 'event-tickets' ) . '</a></strong>',
|
580 |
'<strong><a href="http://m.tri.be/18jb" target="_blank">' . esc_html__( 'Troubleshooting common problems', 'event-tickets' ) . '</a></strong>',
|
581 |
'<strong><a href="http://m.tri.be/18ng" target="_blank">' . esc_html__( 'Customizing Event Tickets', 'event-tickets' ) . '</a></strong>',
|
582 |
-
|
583 |
}
|
584 |
|
585 |
/**
|
@@ -597,7 +602,7 @@ class Tribe__Tickets__Main {
|
|
597 |
|
598 |
$link = '<a href="http://m.tri.be/18nd" target="_blank">' . esc_html__( 'New User Primer', 'event-tickets' ) . '</a>';
|
599 |
|
600 |
-
$help->add_section_content( 'feature-box', sprintf(
|
601 |
}
|
602 |
|
603 |
/**
|
@@ -608,7 +613,7 @@ class Tribe__Tickets__Main {
|
|
608 |
* @return void
|
609 |
*/
|
610 |
public function add_help_section_extra_content( $help ) {
|
611 |
-
if ( ! $help->is_active(
|
612 |
// We just skip because it's treated on TEC
|
613 |
return;
|
614 |
} elseif ( ! $help->is_active( 'the-events-calendar' ) ) {
|
@@ -618,11 +623,11 @@ class Tribe__Tickets__Main {
|
|
618 |
$help->add_section_content( 'extra-help', sprintf( __( 'If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there.', 'event-tickets' ), $link ), 20 );
|
619 |
|
620 |
$link_forum = '<a href="http://m.tri.be/4w/" target="_blank">' . esc_html__( 'premium support on our website', 'event-tickets' ) . '</a>';
|
621 |
-
$link_plus = '<a href="http://m.tri.be/18ni" target="_blank">' . esc_html__( '
|
622 |
$help->add_section_content( 'extra-help', sprintf( __( 'Looking for more immediate support? We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays.', 'event-tickets' ), $link_forum, $link_plus ), 20 );
|
623 |
|
624 |
$link = '<a href="http://m.tri.be/4w/" target="_blank">' . esc_html__( 'post a thread', 'event-tickets' ) . '</a>';
|
625 |
-
$help->add_section_content( 'extra-help', sprintf( __( 'Already have
|
626 |
|
627 |
} else {
|
628 |
|
@@ -641,11 +646,11 @@ class Tribe__Tickets__Main {
|
|
641 |
* @return array
|
642 |
*/
|
643 |
public function add_template_updates_check( $plugins ) {
|
644 |
-
$plugins[ __( 'Event Tickets', 'event-tickets' ) ] =
|
645 |
self::VERSION,
|
646 |
$this->plugin_path . 'src/views/tickets',
|
647 |
trailingslashit( get_stylesheet_directory() ) . 'tribe-events/tickets',
|
648 |
-
|
649 |
|
650 |
return $plugins;
|
651 |
}
|
@@ -722,7 +727,7 @@ class Tribe__Tickets__Main {
|
|
722 |
*/
|
723 |
public function activation_page() {
|
724 |
if ( empty( $this->activation_page ) ) {
|
725 |
-
$this->activation_page = new Tribe__Admin__Activation_Page(
|
726 |
'slug' => 'event-tickets',
|
727 |
'version' => self::VERSION,
|
728 |
'activation_transient' => '_tribe_tickets_activation_redirect',
|
@@ -730,7 +735,7 @@ class Tribe__Tickets__Main {
|
|
730 |
'version_history_slug' => 'previous_event_tickets_versions',
|
731 |
'welcome_page_title' => esc_html__( 'Welcome to Event Tickets!', 'event-tickets' ),
|
732 |
'welcome_page_template' => $this->plugin_path . 'src/admin-views/admin-welcome-message.php',
|
733 |
-
|
734 |
}
|
735 |
|
736 |
return $this->activation_page;
|
@@ -805,11 +810,11 @@ class Tribe__Tickets__Main {
|
|
805 |
* Returns the supported post types for tickets
|
806 |
*/
|
807 |
public function post_types() {
|
808 |
-
$options = (array) get_option( Tribe__Main::OPTIONNAME,
|
809 |
|
810 |
// if the ticket-enabled-post-types index has never been set, default it to tribe_events
|
811 |
if ( ! array_key_exists( 'ticket-enabled-post-types', $options ) ) {
|
812 |
-
$defaults =
|
813 |
$options['ticket-enabled-post-types'] = $defaults;
|
814 |
tribe_update_option( 'ticket-enabled-post-types', $defaults );
|
815 |
}
|
@@ -834,7 +839,7 @@ class Tribe__Tickets__Main {
|
|
834 |
}
|
835 |
|
836 |
/**
|
837 |
-
* Injects a buy/RSVP button into
|
838 |
*/
|
839 |
public function inject_buy_button_into_oembed() {
|
840 |
$event_id = get_the_ID();
|
@@ -866,7 +871,7 @@ class Tribe__Tickets__Main {
|
|
866 |
return;
|
867 |
}
|
868 |
|
869 |
-
$button_text = $has_non_rsvp ? __( 'Buy', 'event-tickets' ) :
|
870 |
/**
|
871 |
* Filters the text that appears in the buy/rsvp button on event oembeds
|
872 |
*
|
@@ -976,9 +981,9 @@ class Tribe__Tickets__Main {
|
|
976 |
* @since 4.10.6
|
977 |
*/
|
978 |
public function register_plugin_autoload_paths() {
|
979 |
-
$prefixes =
|
980 |
'Tribe__Tickets__' => $this->plugin_path . 'src/Tribe',
|
981 |
-
|
982 |
|
983 |
$this->get_autoloader_instance()->register_prefixes( $prefixes );
|
984 |
}
|
4 |
/**
|
5 |
* Current version of this plugin
|
6 |
*/
|
7 |
+
const VERSION = '4.10.9';
|
8 |
|
9 |
/**
|
10 |
* Min required The Events Calendar version
|
138 |
*/
|
139 |
protected function __construct() {
|
140 |
/* Set up some parent's vars */
|
141 |
+
$this->plugin_name = esc_html_x( 'Tickets', 'provider_plugin_name', 'event-tickets' );
|
142 |
$this->plugin_slug = 'tickets';
|
143 |
$this->plugin_path = trailingslashit( EVENT_TICKETS_DIR );
|
144 |
$this->plugin_dir = trailingslashit( basename( $this->plugin_path ) );
|
153 |
|
154 |
$this->maybe_set_common_lib_info();
|
155 |
|
156 |
+
add_action( 'plugins_loaded', [ $this, 'maybe_bail_if_old_tec_is_present' ], -1 );
|
157 |
+
add_action( 'plugins_loaded', [ $this, 'maybe_bail_if_invalid_wp_or_php' ], -1 );
|
158 |
+
add_action( 'plugins_loaded', [ $this, 'plugins_loaded' ], 0 );
|
159 |
+
register_activation_hook( EVENT_TICKETS_MAIN_PLUGIN_FILE, [ $this, 'on_activation' ] );
|
160 |
}
|
161 |
|
162 |
/**
|
178 |
|
179 |
// if there isn't a tribe-common version, bail
|
180 |
if ( ! preg_match( $this->common_version_regex, $common_version, $matches ) ) {
|
181 |
+
add_action( 'admin_head', [ $this, 'missing_common_libs' ] );
|
182 |
|
183 |
return;
|
184 |
}
|
193 |
empty( $GLOBALS['tribe-common-info'] )
|
194 |
|| version_compare( $GLOBALS['tribe-common-info']['version'], $common_version, '<' )
|
195 |
) {
|
196 |
+
$GLOBALS['tribe-common-info'] = [
|
197 |
'dir' => "{$this->plugin_path}common/src/Tribe",
|
198 |
'version' => $common_version,
|
199 |
+
];
|
200 |
}
|
201 |
}
|
202 |
|
266 |
return;
|
267 |
}
|
268 |
|
269 |
+
add_action( 'admin_notices', [ $this, 'not_supported_error' ] );
|
270 |
+
add_action( 'network_admin_notices', [ $this, 'not_supported_error' ] );
|
271 |
|
272 |
// if we get in here, we need to reset the global common to TEC's version so that we don't cause a fatal
|
273 |
$this->reset_common_lib_info_back_to_tec();
|
296 |
// Start Up Common
|
297 |
Tribe__Main::instance();
|
298 |
|
299 |
+
add_action( 'tribe_common_loaded', [ $this, 'bootstrap' ], 0 );
|
300 |
}
|
301 |
|
302 |
/**
|
343 |
tribe_singleton( 'tickets.main', $this );
|
344 |
|
345 |
tribe_singleton( 'tickets.rsvp', new Tribe__Tickets__RSVP );
|
346 |
+
tribe_singleton( 'tickets.commerce.currency', 'Tribe__Tickets__Commerce__Currency', [ 'hook' ] );
|
347 |
tribe_singleton( 'tickets.commerce.paypal', new Tribe__Tickets__Commerce__PayPal__Main );
|
348 |
tribe_singleton( 'tickets.redirections', 'Tribe__Tickets__Redirections' );
|
349 |
|
362 |
tribe_register_provider( 'Tribe__Tickets__Editor__Provider' );
|
363 |
|
364 |
// Privacy
|
365 |
+
tribe_singleton( 'tickets.privacy', 'Tribe__Tickets__Privacy', [ 'hook' ] );
|
366 |
+
|
367 |
+
// Views V2
|
368 |
+
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
369 |
+
tribe_register_provider( Tribe\Events\Tickets\Views\V2\Service_Provider::class );
|
370 |
+
}
|
371 |
}
|
372 |
|
373 |
/**
|
395 |
|
396 |
$upgrade_path = wp_nonce_url(
|
397 |
add_query_arg(
|
398 |
+
[
|
399 |
'action' => 'upgrade-plugin',
|
400 |
'plugin' => $plugin_short_path,
|
401 |
+
], get_admin_url() . 'update.php'
|
402 |
), 'upgrade-plugin_' . $plugin_short_path
|
403 |
);
|
404 |
|
481 |
if ( version_compare( Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' ), self::VERSION, '<' ) ) {
|
482 |
$previous_versions = Tribe__Settings_Manager::get_option( 'previous_event_tickets_versions' )
|
483 |
? Tribe__Settings_Manager::get_option( 'previous_event_tickets_versions' )
|
484 |
+
: [];
|
485 |
|
486 |
$previous_versions[] = Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' )
|
487 |
? Tribe__Settings_Manager::get_option( 'latest_event_tickets_version' )
|
514 |
* set up hooks for this class
|
515 |
*/
|
516 |
public function hooks() {
|
517 |
+
add_action( 'init', [ $this, 'init' ] );
|
518 |
|
519 |
// connect upgrade script
|
520 |
+
add_action( 'init', [ $this, 'run_updates' ], 0, 0 );
|
521 |
|
522 |
+
add_filter( 'tribe_post_types', [ $this, 'inject_post_types' ] );
|
523 |
|
524 |
// Setup Help Tab texting
|
525 |
+
add_action( 'tribe_help_pre_get_sections', [ $this, 'add_help_section_support_content' ] );
|
526 |
+
add_action( 'tribe_help_pre_get_sections', [ $this, 'add_help_section_featured_content' ] );
|
527 |
+
add_action( 'tribe_help_pre_get_sections', [ $this, 'add_help_section_extra_content' ] );
|
528 |
+
add_filter( 'tribe_support_registered_template_systems', [ $this, 'add_template_updates_check' ] );
|
529 |
+
add_action( 'tribe_tickets_plugin_loaded', [ 'Tribe__Support', 'getInstance' ] );
|
530 |
|
531 |
// Setup Front End Display
|
532 |
add_action( 'tribe_events_inside_cost', 'tribe_tickets_buy_button', 10, 0 );
|
533 |
|
534 |
// Hook to oembeds
|
535 |
+
add_action( 'tribe_events_embed_after_the_cost_value', [ $this, 'inject_buy_button_into_oembed' ] );
|
536 |
+
add_action( 'embed_head', [ $this, 'embed_head' ] );
|
537 |
|
538 |
// Attendee screen enhancements
|
539 |
+
add_action( 'tribe_events_tickets_attendees_event_details_top', [ $this, 'setup_attendance_totals' ], 20 );
|
540 |
|
541 |
// CSV Import options
|
542 |
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
543 |
+
add_filter( 'tribe_events_import_options_rows', [ Tribe__Tickets__CSV_Importer__Rows::instance(), 'filter_import_options_rows' ] );
|
544 |
+
add_filter( 'tribe_aggregator_csv_post_types', [ Tribe__Tickets__CSV_Importer__Rows::instance(), 'filter_csv_post_types' ] );
|
545 |
+
add_filter( 'tribe_aggregator_csv_column_mapping', [ Tribe__Tickets__CSV_Importer__Column_Names::instance(), 'filter_rsvp_column_mapping' ] );
|
546 |
+
add_filter( 'tribe_event_import_rsvp_tickets_column_names', [ Tribe__Tickets__CSV_Importer__Column_Names::instance(), 'filter_rsvp_column_names' ] );
|
547 |
+
add_filter( 'tribe_events_import_rsvp_tickets_importer', [ 'Tribe__Tickets__CSV_Importer__RSVP_Importer', 'instance' ], 10, 2 );
|
548 |
+
add_action( 'tribe_tickets_ticket_deleted', [ 'Tribe__Tickets__Attendance', 'delete_attendees_caches' ] );
|
549 |
|
550 |
/**
|
551 |
* Hooking to "rsvp" to fetch an importer to fetch Column names is deprecated
|
556 |
*
|
557 |
* @todo remove these two hooks when the old CSV interface is retired, maybe 5.0?
|
558 |
*/
|
559 |
+
add_filter( 'tribe_events_import_rsvp_importer', [ 'Tribe__Tickets__CSV_Importer__RSVP_Importer', 'instance' ], 10, 2 );
|
560 |
+
add_filter( 'tribe_event_import_rsvp_column_names', [ Tribe__Tickets__CSV_Importer__Column_Names::instance(), 'filter_rsvp_column_names' ] );
|
561 |
}
|
562 |
|
563 |
// Load our assets
|
579 |
*/
|
580 |
public function add_help_section_support_content( $help ) {
|
581 |
$help->add_section_content( 'support', '<strong>' . esc_html__( 'Support for Event Tickets', 'event-tickets' ) . '</strong>', 20 );
|
582 |
+
$help->add_section_content( 'support', [
|
583 |
'<strong><a href="http://m.tri.be/18ne" target="_blank">' . esc_html__( 'Settings overview', 'event-tickets' ) . '</a></strong>',
|
584 |
'<strong><a href="http://m.tri.be/18nf" target="_blank">' . esc_html__( 'Features overview', 'event-tickets' ) . '</a></strong>',
|
585 |
'<strong><a href="http://m.tri.be/18jb" target="_blank">' . esc_html__( 'Troubleshooting common problems', 'event-tickets' ) . '</a></strong>',
|
586 |
'<strong><a href="http://m.tri.be/18ng" target="_blank">' . esc_html__( 'Customizing Event Tickets', 'event-tickets' ) . '</a></strong>',
|
587 |
+
], 20 );
|
588 |
}
|
589 |
|
590 |
/**
|
602 |
|
603 |
$link = '<a href="http://m.tri.be/18nd" target="_blank">' . esc_html__( 'New User Primer', 'event-tickets' ) . '</a>';
|
604 |
|
605 |
+
$help->add_section_content( 'feature-box', sprintf( _x( 'We are committed to helping you sell %1$s for your event. Check out our handy %2$s to get started.', 'help feature box section', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'help_feature_box_section' ), $link ), 20 );
|
606 |
}
|
607 |
|
608 |
/**
|
613 |
* @return void
|
614 |
*/
|
615 |
public function add_help_section_extra_content( $help ) {
|
616 |
+
if ( ! $help->is_active( [ 'events-calendar-pro', 'event-tickets-plus' ] ) && $help->is_active( 'the-events-calendar' ) ) {
|
617 |
// We just skip because it's treated on TEC
|
618 |
return;
|
619 |
} elseif ( ! $help->is_active( 'the-events-calendar' ) ) {
|
623 |
$help->add_section_content( 'extra-help', sprintf( __( 'If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there.', 'event-tickets' ), $link ), 20 );
|
624 |
|
625 |
$link_forum = '<a href="http://m.tri.be/4w/" target="_blank">' . esc_html__( 'premium support on our website', 'event-tickets' ) . '</a>';
|
626 |
+
$link_plus = '<a href="http://m.tri.be/18ni" target="_blank">' . esc_html__( 'Event Tickets Plus', 'event-tickets' ) . '</a>';
|
627 |
$help->add_section_content( 'extra-help', sprintf( __( 'Looking for more immediate support? We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays.', 'event-tickets' ), $link_forum, $link_plus ), 20 );
|
628 |
|
629 |
$link = '<a href="http://m.tri.be/4w/" target="_blank">' . esc_html__( 'post a thread', 'event-tickets' ) . '</a>';
|
630 |
+
$help->add_section_content( 'extra-help', sprintf( __( 'Already have Event Tickets Plus? You can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week).', 'event-tickets' ), $link ), 20 );
|
631 |
|
632 |
} else {
|
633 |
|
646 |
* @return array
|
647 |
*/
|
648 |
public function add_template_updates_check( $plugins ) {
|
649 |
+
$plugins[ __( 'Event Tickets', 'event-tickets' ) ] = [
|
650 |
self::VERSION,
|
651 |
$this->plugin_path . 'src/views/tickets',
|
652 |
trailingslashit( get_stylesheet_directory() ) . 'tribe-events/tickets',
|
653 |
+
];
|
654 |
|
655 |
return $plugins;
|
656 |
}
|
727 |
*/
|
728 |
public function activation_page() {
|
729 |
if ( empty( $this->activation_page ) ) {
|
730 |
+
$this->activation_page = new Tribe__Admin__Activation_Page( [
|
731 |
'slug' => 'event-tickets',
|
732 |
'version' => self::VERSION,
|
733 |
'activation_transient' => '_tribe_tickets_activation_redirect',
|
735 |
'version_history_slug' => 'previous_event_tickets_versions',
|
736 |
'welcome_page_title' => esc_html__( 'Welcome to Event Tickets!', 'event-tickets' ),
|
737 |
'welcome_page_template' => $this->plugin_path . 'src/admin-views/admin-welcome-message.php',
|
738 |
+
] );
|
739 |
}
|
740 |
|
741 |
return $this->activation_page;
|
810 |
* Returns the supported post types for tickets
|
811 |
*/
|
812 |
public function post_types() {
|
813 |
+
$options = (array) get_option( Tribe__Main::OPTIONNAME, [] );
|
814 |
|
815 |
// if the ticket-enabled-post-types index has never been set, default it to tribe_events
|
816 |
if ( ! array_key_exists( 'ticket-enabled-post-types', $options ) ) {
|
817 |
+
$defaults = [ 'tribe_events' ];
|
818 |
$options['ticket-enabled-post-types'] = $defaults;
|
819 |
tribe_update_option( 'ticket-enabled-post-types', $defaults );
|
820 |
}
|
839 |
}
|
840 |
|
841 |
/**
|
842 |
+
* Injects a buy/RSVP button into oEmbeds for events when necessary
|
843 |
*/
|
844 |
public function inject_buy_button_into_oembed() {
|
845 |
$event_id = get_the_ID();
|
871 |
return;
|
872 |
}
|
873 |
|
874 |
+
$button_text = $has_non_rsvp ? __( 'Buy', 'event-tickets' ) : tribe_get_rsvp_label_singular( 'button_text' );
|
875 |
/**
|
876 |
* Filters the text that appears in the buy/rsvp button on event oembeds
|
877 |
*
|
981 |
* @since 4.10.6
|
982 |
*/
|
983 |
public function register_plugin_autoload_paths() {
|
984 |
+
$prefixes = [
|
985 |
'Tribe__Tickets__' => $this->plugin_path . 'src/Tribe',
|
986 |
+
];
|
987 |
|
988 |
$this->get_autoloader_instance()->register_prefixes( $prefixes );
|
989 |
}
|
src/Tribe/Metabox.php
CHANGED
@@ -50,7 +50,7 @@ class Tribe__Tickets__Metabox {
|
|
50 |
|
51 |
add_meta_box(
|
52 |
'tribetickets',
|
53 |
-
|
54 |
array( $this, 'render' ),
|
55 |
$post_type,
|
56 |
'normal',
|
@@ -176,10 +176,10 @@ class Tribe__Tickets__Metabox {
|
|
176 |
}
|
177 |
|
178 |
/**
|
179 |
-
* Sanitizes the data for the new/edit ticket ajax call,
|
180 |
-
* and calls the child save_ticket function.
|
181 |
*
|
182 |
-
* @since
|
|
|
183 |
*/
|
184 |
public function ajax_ticket_add() {
|
185 |
$post_id = absint( tribe_get_request_var( 'post_id', 0 ) );
|
@@ -195,7 +195,7 @@ class Tribe__Tickets__Metabox {
|
|
195 |
$data = wp_parse_args( tribe_get_request_var( array( 'data' ), array() ), array() );
|
196 |
|
197 |
if ( ! $this->has_permission( $post_id, $_POST, 'add_ticket_nonce' ) ) {
|
198 |
-
wp_send_json_error(
|
199 |
}
|
200 |
|
201 |
if ( ! isset( $data['ticket_provider'] ) || ! $this->module_is_valid( $data['ticket_provider'] ) ) {
|
@@ -217,7 +217,7 @@ class Tribe__Tickets__Metabox {
|
|
217 |
*/
|
218 |
do_action( 'tribe_tickets_ticket_added', $post_id );
|
219 |
} else {
|
220 |
-
wp_send_json_error(
|
221 |
}
|
222 |
|
223 |
$return = $this->get_panels( $post_id );
|
@@ -235,12 +235,10 @@ class Tribe__Tickets__Metabox {
|
|
235 |
}
|
236 |
|
237 |
/**
|
238 |
-
* Returns the data from a single ticket to populate
|
239 |
-
* the edit form.
|
240 |
-
*
|
241 |
-
* @since 4.6.2
|
242 |
*
|
243 |
-
* @
|
|
|
244 |
*/
|
245 |
public function ajax_ticket_edit() {
|
246 |
$post_id = absint( tribe_get_request_var( 'post_id', 0 ) );
|
@@ -252,7 +250,7 @@ class Tribe__Tickets__Metabox {
|
|
252 |
$ticket_id = absint( tribe_get_request_var( 'ticket_id', 0 ) );
|
253 |
|
254 |
if ( ! $ticket_id ) {
|
255 |
-
wp_send_json_error(
|
256 |
}
|
257 |
|
258 |
/**
|
@@ -262,7 +260,7 @@ class Tribe__Tickets__Metabox {
|
|
262 |
$data = wp_parse_args( tribe_get_request_var( array( 'data' ), array() ), array() );
|
263 |
|
264 |
if ( ! $this->has_permission( $post_id, $_POST, 'edit_ticket_nonce' ) ) {
|
265 |
-
wp_send_json_error(
|
266 |
}
|
267 |
|
268 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
@@ -304,11 +302,11 @@ class Tribe__Tickets__Metabox {
|
|
304 |
$ticket_id = absint( tribe_get_request_var( 'ticket_id', 0 ) );
|
305 |
|
306 |
if ( ! $ticket_id ) {
|
307 |
-
wp_send_json_error(
|
308 |
}
|
309 |
|
310 |
if ( ! $this->has_permission( $post_id, $_POST, 'remove_ticket_nonce' ) ) {
|
311 |
-
wp_send_json_error(
|
312 |
}
|
313 |
|
314 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
@@ -459,9 +457,9 @@ class Tribe__Tickets__Metabox {
|
|
459 |
*
|
460 |
* @since 4.6.2
|
461 |
*
|
462 |
-
* @param
|
463 |
-
* @param
|
464 |
-
* @param
|
465 |
*
|
466 |
* @return boolean
|
467 |
*/
|
50 |
|
51 |
add_meta_box(
|
52 |
'tribetickets',
|
53 |
+
esc_html( tribe_get_ticket_label_plural( 'meta_box_title' ) ),
|
54 |
array( $this, 'render' ),
|
55 |
$post_type,
|
56 |
'normal',
|
176 |
}
|
177 |
|
178 |
/**
|
179 |
+
* Sanitizes the data for the new/edit ticket ajax call, and calls the child save_ticket function.
|
|
|
180 |
*
|
181 |
+
* @since 4.6.2
|
182 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
183 |
*/
|
184 |
public function ajax_ticket_add() {
|
185 |
$post_id = absint( tribe_get_request_var( 'post_id', 0 ) );
|
195 |
$data = wp_parse_args( tribe_get_request_var( array( 'data' ), array() ), array() );
|
196 |
|
197 |
if ( ! $this->has_permission( $post_id, $_POST, 'add_ticket_nonce' ) ) {
|
198 |
+
wp_send_json_error( esc_html( sprintf( __( 'Failed to add the %s. Refresh the page to try again.', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_add_error' ) ) ) );
|
199 |
}
|
200 |
|
201 |
if ( ! isset( $data['ticket_provider'] ) || ! $this->module_is_valid( $data['ticket_provider'] ) ) {
|
217 |
*/
|
218 |
do_action( 'tribe_tickets_ticket_added', $post_id );
|
219 |
} else {
|
220 |
+
wp_send_json_error( esc_html( sprintf( __( 'Failed to add the %s', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_add_error' ) ) ) );
|
221 |
}
|
222 |
|
223 |
$return = $this->get_panels( $post_id );
|
235 |
}
|
236 |
|
237 |
/**
|
238 |
+
* Returns the data from a single ticket to populate the edit form.
|
|
|
|
|
|
|
239 |
*
|
240 |
+
* @since 4.6.2
|
241 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
242 |
*/
|
243 |
public function ajax_ticket_edit() {
|
244 |
$post_id = absint( tribe_get_request_var( 'post_id', 0 ) );
|
250 |
$ticket_id = absint( tribe_get_request_var( 'ticket_id', 0 ) );
|
251 |
|
252 |
if ( ! $ticket_id ) {
|
253 |
+
wp_send_json_error( esc_html( sprintf( __( 'Invalid %s', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_edit_error' ) ) ) );
|
254 |
}
|
255 |
|
256 |
/**
|
260 |
$data = wp_parse_args( tribe_get_request_var( array( 'data' ), array() ), array() );
|
261 |
|
262 |
if ( ! $this->has_permission( $post_id, $_POST, 'edit_ticket_nonce' ) ) {
|
263 |
+
wp_send_json_error( esc_html( sprintf( __( 'Failed to edit the %s. Refresh the page to try again.', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_edit_error' ) ) ) );
|
264 |
}
|
265 |
|
266 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
302 |
$ticket_id = absint( tribe_get_request_var( 'ticket_id', 0 ) );
|
303 |
|
304 |
if ( ! $ticket_id ) {
|
305 |
+
wp_send_json_error( esc_html( sprintf( __( 'Invalid %s', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_delete_error' ) ) ) );
|
306 |
}
|
307 |
|
308 |
if ( ! $this->has_permission( $post_id, $_POST, 'remove_ticket_nonce' ) ) {
|
309 |
+
wp_send_json_error( esc_html( sprintf( __( 'Failed to delete the %s. Refresh the page to try again.', 'event-tickets' ), tribe_get_ticket_label_singular( 'ajax_ticket_delete_error' ) ) ) );
|
310 |
}
|
311 |
|
312 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
457 |
*
|
458 |
* @since 4.6.2
|
459 |
*
|
460 |
+
* @param WP_Post|int $post
|
461 |
+
* @param array $data
|
462 |
+
* @param string $nonce_action
|
463 |
*
|
464 |
* @return boolean
|
465 |
*/
|
src/Tribe/Plugin_Register.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
*/
|
6 |
class Tribe__Tickets__Plugin_Register extends Tribe__Abstract_Plugin_Register {
|
7 |
|
8 |
-
protected $main_class
|
9 |
protected $dependencies = array(
|
10 |
'addon-dependencies' => array(
|
11 |
'Tribe__Tickets_Plus__Main' => '4.10.6-dev',
|
5 |
*/
|
6 |
class Tribe__Tickets__Plugin_Register extends Tribe__Abstract_Plugin_Register {
|
7 |
|
8 |
+
protected $main_class = 'Tribe__Tickets__Main';
|
9 |
protected $dependencies = array(
|
10 |
'addon-dependencies' => array(
|
11 |
'Tribe__Tickets_Plus__Main' => '4.10.6-dev',
|
src/Tribe/Promoter/Observer.php
CHANGED
@@ -9,6 +9,15 @@
|
|
9 |
*/
|
10 |
class Tribe__Tickets__Promoter__Observer {
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
/**
|
13 |
* Hooks on which this observer notifies promoter.
|
14 |
*
|
@@ -22,6 +31,13 @@ class Tribe__Tickets__Promoter__Observer {
|
|
22 |
return;
|
23 |
}
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
$this->registered_types();
|
26 |
|
27 |
// Listen for changes on RSVP as Gutenberg Uses the post_type API to update RSVP's
|
@@ -61,23 +77,34 @@ class Tribe__Tickets__Promoter__Observer {
|
|
61 |
}
|
62 |
|
63 |
/**
|
64 |
-
* Attach
|
65 |
-
*
|
66 |
-
*
|
|
|
67 |
*
|
68 |
* @since 4.10.1.1
|
69 |
*/
|
70 |
public function registered_types() {
|
71 |
-
$event_type = class_exists( 'Tribe__Events__Main' ) ? Tribe__Events__Main::POSTTYPE : 'tribe_events';
|
72 |
-
$post_types = (array) tribe_get_option( 'ticket-enabled-post-types', [] );
|
73 |
-
|
74 |
-
$events_support_tickets = in_array( $event_type, $post_types, true );
|
75 |
|
76 |
-
if ( ! $
|
77 |
return;
|
78 |
}
|
79 |
|
80 |
-
add_action( 'save_post_' . $event_type, [ $this, 'notify' ], 10, 1 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
|
83 |
/**
|
@@ -110,6 +137,19 @@ class Tribe__Tickets__Promoter__Observer {
|
|
110 |
}
|
111 |
}
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
/**
|
114 |
* Function used to notify the promoter endpoint of a new change on an event.
|
115 |
*
|
9 |
*/
|
10 |
class Tribe__Tickets__Promoter__Observer {
|
11 |
|
12 |
+
/**
|
13 |
+
* Holding the reference to the event post type
|
14 |
+
*
|
15 |
+
* @since 4.10.9
|
16 |
+
*
|
17 |
+
* @var string
|
18 |
+
*/
|
19 |
+
protected $event_type = 'tribe_events';
|
20 |
+
|
21 |
/**
|
22 |
* Hooks on which this observer notifies promoter.
|
23 |
*
|
31 |
return;
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* In case the class for TEC is defined we use the value defined there
|
36 |
+
*/
|
37 |
+
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
38 |
+
$this->event_type = Tribe__Events__Main::POSTTYPE;
|
39 |
+
}
|
40 |
+
|
41 |
$this->registered_types();
|
42 |
|
43 |
// Listen for changes on RSVP as Gutenberg Uses the post_type API to update RSVP's
|
77 |
}
|
78 |
|
79 |
/**
|
80 |
+
* Attach hooks only if events has support for tickets, to the following actions:
|
81 |
+
*
|
82 |
+
* - `save_post_tribe_events`
|
83 |
+
* - `delete_post`
|
84 |
*
|
85 |
* @since 4.10.1.1
|
86 |
*/
|
87 |
public function registered_types() {
|
|
|
|
|
|
|
|
|
88 |
|
89 |
+
if ( ! $this->event_support_tickets() ) {
|
90 |
return;
|
91 |
}
|
92 |
|
93 |
+
add_action( 'save_post_' . $this->event_type, [ $this, 'notify' ], 10, 1 );
|
94 |
+
add_action( 'delete_post', [ $this, 'delete_post' ], 10, 1 );
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Check if the Event post type has support for tickets
|
99 |
+
*
|
100 |
+
* @since 4.10.9
|
101 |
+
*
|
102 |
+
* @return bool
|
103 |
+
*/
|
104 |
+
private function event_support_tickets() {
|
105 |
+
$post_types = (array) tribe_get_option( 'ticket-enabled-post-types', [] );
|
106 |
+
|
107 |
+
return in_array( $this->event_type, $post_types, true );
|
108 |
}
|
109 |
|
110 |
/**
|
137 |
}
|
138 |
}
|
139 |
|
140 |
+
/**
|
141 |
+
* Notify the connector of changes when the event was deleted
|
142 |
+
*
|
143 |
+
* @since 4.10.9
|
144 |
+
*
|
145 |
+
* @param $post_id
|
146 |
+
*/
|
147 |
+
public function delete_post( $post_id ) {
|
148 |
+
if ( $this->event_type === get_post_type( $post_id ) ) {
|
149 |
+
$this->notify( $post_id );
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
/**
|
154 |
* Function used to notify the promoter endpoint of a new change on an event.
|
155 |
*
|
src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php
CHANGED
@@ -102,7 +102,7 @@ class Tribe__Tickets__REST__V1__Documentation__Attendee_Definition_Provider
|
|
102 |
),
|
103 |
'rsvp_going' => array(
|
104 |
'type' => 'boolean',
|
105 |
-
'description' => __( 'If the attendee is for an RSVP ticket, this will be set to true if he/she is
|
106 |
),
|
107 |
'payment' => array(
|
108 |
'$ref' => '#/components/schemas/PaymentDetails',
|
102 |
),
|
103 |
'rsvp_going' => array(
|
104 |
'type' => 'boolean',
|
105 |
+
'description' => __( 'If the attendee is for an RSVP ticket, this will be set to true if he/she is "Going", false otherwise', 'event-tickets' ),
|
106 |
),
|
107 |
'payment' => array(
|
108 |
'$ref' => '#/components/schemas/PaymentDetails',
|
src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php
CHANGED
@@ -12,31 +12,31 @@ class Tribe__Tickets__REST__V1__Documentation__Capacity_Details_Definition_Provi
|
|
12 |
* {@inheritdoc}
|
13 |
*/
|
14 |
public function get_documentation() {
|
15 |
-
$documentation =
|
16 |
'type' => 'object',
|
17 |
-
'properties' =>
|
18 |
-
'
|
19 |
'type' => 'integer',
|
20 |
-
'description' => __( 'The
|
21 |
-
|
22 |
-
'max' =>
|
23 |
'type' => 'integer',
|
24 |
-
'description' => __( 'The
|
25 |
-
|
26 |
-
'available' =>
|
27 |
'type' => 'integer',
|
28 |
-
'description' => __( 'The
|
29 |
-
|
30 |
-
'sold' =>
|
31 |
'type' => 'integer',
|
32 |
-
'description' => __( 'The
|
33 |
-
|
34 |
-
'pending' =>
|
35 |
'type' => 'integer',
|
36 |
-
'description' => __( 'The
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
|
41 |
/**
|
42 |
* Filters the Swagger documentation generated for capacity details in the Event Tickets REST API.
|
12 |
* {@inheritdoc}
|
13 |
*/
|
14 |
public function get_documentation() {
|
15 |
+
$documentation = [
|
16 |
'type' => 'object',
|
17 |
+
'properties' => [
|
18 |
+
'available_percentage' => [
|
19 |
'type' => 'integer',
|
20 |
+
'description' => esc_html( sprintf( __( 'The %s available capacity percentage', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'capacity_details_documentation_available_percentage' ) ) ),
|
21 |
+
],
|
22 |
+
'max' => [
|
23 |
'type' => 'integer',
|
24 |
+
'description' => esc_html( sprintf( __( 'The %s max capacity', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'capacity_details_documentation_max' ) ) ),
|
25 |
+
],
|
26 |
+
'available' => [
|
27 |
'type' => 'integer',
|
28 |
+
'description' => esc_html( sprintf( __( 'The %s current available capacity', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'capacity_details_documentation_available' ) ) ),
|
29 |
+
],
|
30 |
+
'sold' => [
|
31 |
'type' => 'integer',
|
32 |
+
'description' => esc_html( sprintf( __( 'The %s sale count', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'capacity_details_documentation_sold' ) ) ),
|
33 |
+
],
|
34 |
+
'pending' => [
|
35 |
'type' => 'integer',
|
36 |
+
'description' => esc_html( sprintf( __( 'The %s pending count', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'capacity_details_documentation_pending' ) ) ),
|
37 |
+
],
|
38 |
+
],
|
39 |
+
];
|
40 |
|
41 |
/**
|
42 |
* Filters the Swagger documentation generated for capacity details in the Event Tickets REST API.
|
src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php
CHANGED
@@ -24,7 +24,7 @@ class Tribe__Tickets__REST__V1__Documentation__Checkin_Details_Definition_Provid
|
|
24 |
),
|
25 |
'source' => array(
|
26 |
'type' => 'string',
|
27 |
-
'description' => __( 'The check-in source for the attendee; e.g.
|
28 |
),
|
29 |
'author' => array(
|
30 |
'type' => 'string',
|
24 |
),
|
25 |
'source' => array(
|
26 |
'type' => 'string',
|
27 |
+
'description' => __( 'The check-in source for the attendee; e.g. "kiosk" or "site"', 'event-tickets' ),
|
28 |
),
|
29 |
'author' => array(
|
30 |
'type' => 'string',
|
src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php
CHANGED
@@ -17,11 +17,11 @@ class Tribe__Tickets__REST__V1__Documentation__RSVP_Report_Definition_Provider
|
|
17 |
'properties' => array(
|
18 |
'rsvp_going' => array(
|
19 |
'type' => 'integer',
|
20 |
-
'description' => __( 'How many attendees are
|
21 |
),
|
22 |
'rsvp_not_going' => array(
|
23 |
'type' => 'integer',
|
24 |
-
'description' => __( 'How many attendees are
|
25 |
),
|
26 |
),
|
27 |
);
|
17 |
'properties' => array(
|
18 |
'rsvp_going' => array(
|
19 |
'type' => 'integer',
|
20 |
+
'description' => __( 'How many attendees are "Going"', 'event-tickets' ),
|
21 |
),
|
22 |
'rsvp_not_going' => array(
|
23 |
'type' => 'integer',
|
24 |
+
'description' => __( 'How many attendees are "Not going"', 'event-tickets' ),
|
25 |
),
|
26 |
),
|
27 |
);
|
src/Tribe/REST/V1/Post_Repository.php
CHANGED
@@ -654,10 +654,11 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
654 |
*
|
655 |
* @since 4.10.2
|
656 |
*
|
657 |
-
* @param bool
|
658 |
-
*
|
|
|
659 |
*/
|
660 |
-
$always_show_attendees_data = apply_filters( 'tribe_tickets_rest_api_always_show_attendee_data',
|
661 |
|
662 |
// Check if we have an event or attendees block/shortcode.
|
663 |
if ( ! $always_show_attendees_data ) {
|
@@ -668,7 +669,10 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
668 |
|
669 |
// Return if event is not showing attendees.
|
670 |
if (
|
671 |
-
(
|
|
|
|
|
|
|
672 |
&& ! has_shortcode( $event->post_content, 'tribe_attendees_list' )
|
673 |
// In case has_shortcode does not work.
|
674 |
&& false === strpos( $event->post_content, '[tribe_attendees_list]' )
|
654 |
*
|
655 |
* @since 4.10.2
|
656 |
*
|
657 |
+
* @param bool $always_show_attendees_data Whether to always show attendees data. By default, Admin and Editor
|
658 |
+
* can see this information.
|
659 |
+
* @param array $data Ticket REST data.
|
660 |
*/
|
661 |
+
$always_show_attendees_data = apply_filters( 'tribe_tickets_rest_api_always_show_attendee_data', current_user_can( 'read_private_posts' ), $data );
|
662 |
|
663 |
// Check if we have an event or attendees block/shortcode.
|
664 |
if ( ! $always_show_attendees_data ) {
|
669 |
|
670 |
// Return if event is not showing attendees.
|
671 |
if (
|
672 |
+
(
|
673 |
+
! function_exists( 'has_block' )
|
674 |
+
|| ! has_block( 'tribe/attendees', $event )
|
675 |
+
)
|
676 |
&& ! has_shortcode( $event->post_content, 'tribe_attendees_list' )
|
677 |
// In case has_shortcode does not work.
|
678 |
&& false === strpos( $event->post_content, '[tribe_attendees_list]' )
|
src/Tribe/REST/V1/Ticket_Repository.php
CHANGED
@@ -32,7 +32,7 @@ class Tribe__Tickets__REST__V1__Ticket_Repository
|
|
32 |
$this->decorated->set_query_builder( $this );
|
33 |
$this->decorated->set_default_args( array_merge(
|
34 |
$this->decorated->get_default_args(),
|
35 |
-
|
36 |
) );
|
37 |
}
|
38 |
|
@@ -100,7 +100,7 @@ class Tribe__Tickets__REST__V1__Ticket_Repository
|
|
100 |
ON {$wpdb->posts}.ID != related_event.ID" );
|
101 |
$this->decorated->join_clause( "JOIN {$wpdb->postmeta} related_event_meta
|
102 |
ON {$wpdb->posts}.ID = related_event_meta.post_id" );
|
103 |
-
$keys =
|
104 |
foreach ( $this->decorated->ticket_to_event_keys() as $key ) {
|
105 |
$keys[] = $wpdb->prepare( '%s', $key );
|
106 |
}
|
@@ -110,4 +110,4 @@ class Tribe__Tickets__REST__V1__Ticket_Repository
|
|
110 |
|
111 |
$this->decorated->set_query_builder( null );
|
112 |
}
|
113 |
-
}
|
32 |
$this->decorated->set_query_builder( $this );
|
33 |
$this->decorated->set_default_args( array_merge(
|
34 |
$this->decorated->get_default_args(),
|
35 |
+
[ 'order' => 'ASC', 'orderby' => [ 'id', 'title' ] ]
|
36 |
) );
|
37 |
}
|
38 |
|
100 |
ON {$wpdb->posts}.ID != related_event.ID" );
|
101 |
$this->decorated->join_clause( "JOIN {$wpdb->postmeta} related_event_meta
|
102 |
ON {$wpdb->posts}.ID = related_event_meta.post_id" );
|
103 |
+
$keys = [];
|
104 |
foreach ( $this->decorated->ticket_to_event_keys() as $key ) {
|
105 |
$keys[] = $wpdb->prepare( '%s', $key );
|
106 |
}
|
110 |
|
111 |
$this->decorated->set_query_builder( null );
|
112 |
}
|
113 |
+
}
|
src/Tribe/RSVP.php
CHANGED
@@ -165,7 +165,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
165 |
$main = Tribe__Tickets__Main::instance();
|
166 |
$this->tickets_view = Tribe__Tickets__Tickets_View::instance();
|
167 |
/* Set up parent vars */
|
168 |
-
$this->plugin_name = $this->pluginName =
|
169 |
$this->plugin_path = $this->pluginPath = $main->plugin_path;
|
170 |
$this->plugin_url = $this->pluginUrl = $main->plugin_url;
|
171 |
|
@@ -721,13 +721,18 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
721 |
* Filters the RSVP tickets email subject
|
722 |
*
|
723 |
* @since 4.5.2 added new parameters $event_id and $order_id
|
|
|
724 |
*
|
725 |
* @param string
|
726 |
-
* @param int
|
727 |
-
* @param int
|
728 |
*/
|
729 |
-
$subject
|
730 |
-
|
|
|
|
|
|
|
|
|
731 |
$event_id,
|
732 |
$order_id
|
733 |
);
|
@@ -1128,24 +1133,28 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1128 |
$rsvp_error = empty( $_GET['rsvp_error'] ) ? false : intval( $_GET['rsvp_error'] );
|
1129 |
|
1130 |
if ( $rsvp_sent ) {
|
1131 |
-
$this->add_message( __( 'Your
|
1132 |
}
|
1133 |
|
1134 |
if ( $rsvp_error ) {
|
1135 |
switch ( $rsvp_error ) {
|
1136 |
case 2:
|
1137 |
-
$this->add_message(
|
|
|
|
|
|
|
|
|
1138 |
break;
|
1139 |
|
1140 |
case 1:
|
1141 |
default:
|
1142 |
-
$this->add_message( __( 'In order to
|
1143 |
break;
|
1144 |
}
|
1145 |
}
|
1146 |
|
1147 |
/**
|
1148 |
-
* Allow for the addition of content (namely the "Who's
|
1149 |
*
|
1150 |
* @since 4.5.5
|
1151 |
*/
|
@@ -1423,7 +1432,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1423 |
}
|
1424 |
|
1425 |
/**
|
1426 |
-
*
|
1427 |
* Important: On RSVP the order is the Attendee Object
|
1428 |
*
|
1429 |
* order_id
|
@@ -1436,8 +1445,8 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1436 |
* @return array
|
1437 |
*/
|
1438 |
public function get_order_data( $order_id ) {
|
1439 |
-
$name
|
1440 |
-
$email
|
1441 |
|
1442 |
$data = array(
|
1443 |
'order_id' => $order_id,
|
165 |
$main = Tribe__Tickets__Main::instance();
|
166 |
$this->tickets_view = Tribe__Tickets__Tickets_View::instance();
|
167 |
/* Set up parent vars */
|
168 |
+
$this->plugin_name = $this->pluginName = esc_html( tribe_get_rsvp_label_plural( 'provider_plugin_name' ) );
|
169 |
$this->plugin_path = $this->pluginPath = $main->plugin_path;
|
170 |
$this->plugin_url = $this->pluginUrl = $main->plugin_url;
|
171 |
|
721 |
* Filters the RSVP tickets email subject
|
722 |
*
|
723 |
* @since 4.5.2 added new parameters $event_id and $order_id
|
724 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
725 |
*
|
726 |
* @param string
|
727 |
+
* @param int $event_id
|
728 |
+
* @param int $order_id
|
729 |
*/
|
730 |
+
$subject = apply_filters( 'tribe_rsvp_email_subject',
|
731 |
+
esc_html( sprintf(
|
732 |
+
__( 'Your %1$s from %2$s', 'event-tickets' ),
|
733 |
+
tribe_get_ticket_label_plural_lowercase( 'tribe_rsvp_email_subject' ),
|
734 |
+
stripslashes_deep( html_entity_decode( get_bloginfo( 'name' ), ENT_QUOTES ) )
|
735 |
+
) ),
|
736 |
$event_id,
|
737 |
$order_id
|
738 |
);
|
1133 |
$rsvp_error = empty( $_GET['rsvp_error'] ) ? false : intval( $_GET['rsvp_error'] );
|
1134 |
|
1135 |
if ( $rsvp_sent ) {
|
1136 |
+
$this->add_message( esc_html( sprintf( __( 'Your %1$s has been received! Check your email for your %1$s confirmation.', 'event-tickets' ), tribe_get_rsvp_label_singular( basename( __FILE__ ) ) ) ), 'success' );
|
1137 |
}
|
1138 |
|
1139 |
if ( $rsvp_error ) {
|
1140 |
switch ( $rsvp_error ) {
|
1141 |
case 2:
|
1142 |
+
$this->add_message( esc_html( sprintf(
|
1143 |
+
__( 'You can\'t %1$s more than the total remaining %2$s.', 'event-tickets' ),
|
1144 |
+
tribe_get_rsvp_label_singular( 'verb' ),
|
1145 |
+
tribe_get_ticket_label_plural_lowercase( 'rsvp_error_attempt_too_many' )
|
1146 |
+
) ), 'error' );
|
1147 |
break;
|
1148 |
|
1149 |
case 1:
|
1150 |
default:
|
1151 |
+
$this->add_message( esc_html( sprintf( __( 'In order to %s, you must enter your name and a valid email address.', 'event-tickets' ), tribe_get_rsvp_label_singular( 'verb' ) ) ), 'error' );
|
1152 |
break;
|
1153 |
}
|
1154 |
}
|
1155 |
|
1156 |
/**
|
1157 |
+
* Allow for the addition of content (namely the "Who's Attending?" list) above the ticket form.
|
1158 |
*
|
1159 |
* @since 4.5.5
|
1160 |
*/
|
1432 |
}
|
1433 |
|
1434 |
/**
|
1435 |
+
* Retrieve only order related information
|
1436 |
* Important: On RSVP the order is the Attendee Object
|
1437 |
*
|
1438 |
* order_id
|
1445 |
* @return array
|
1446 |
*/
|
1447 |
public function get_order_data( $order_id ) {
|
1448 |
+
$name = get_post_meta( $order_id, $this->full_name, true );
|
1449 |
+
$email = get_post_meta( $order_id, $this->email, true );
|
1450 |
|
1451 |
$data = array(
|
1452 |
'order_id' => $order_id,
|
src/Tribe/RSVP/Attendance_Totals.php
CHANGED
@@ -38,7 +38,7 @@ class Tribe__Tickets__RSVP__Attendance_Totals extends Tribe__Tickets__Abstract_A
|
|
38 |
public function print_totals() {
|
39 |
//Note this now uses the `attendees-totals-list` template, so the array values don't quite logically line up
|
40 |
$args = [
|
41 |
-
'total_sold_label' => _x( 'Total
|
42 |
'total_complete_label' => _x( 'Going:', 'attendee summary', 'event-tickets' ),
|
43 |
'total_cancelled_label' => _x( 'Not Going:', 'attendee summary', 'event-tickets' ),
|
44 |
'total_sold' => $this->get_total_rsvps(),
|
38 |
public function print_totals() {
|
39 |
//Note this now uses the `attendees-totals-list` template, so the array values don't quite logically line up
|
40 |
$args = [
|
41 |
+
'total_sold_label' => esc_html( sprintf( _x( 'Total %s:', 'attendee summary', 'event-tickets' ), tribe_get_rsvp_label_plural( 'total_sold_label' ) ) ),
|
42 |
'total_complete_label' => _x( 'Going:', 'attendee summary', 'event-tickets' ),
|
43 |
'total_cancelled_label' => _x( 'Not Going:', 'attendee summary', 'event-tickets' ),
|
44 |
'total_sold' => $this->get_total_rsvps(),
|
src/Tribe/RSVP/Status/Not_Going.php
CHANGED
@@ -10,10 +10,10 @@
|
|
10 |
class Tribe__Tickets__RSVP__Status__Not_Going extends Tribe__Tickets__Status__Abstract {
|
11 |
|
12 |
//Cancelled by an admin or the customer – no further action required (Cancelling an order does not affect stock quantity by default)
|
13 |
-
public $name = 'Not
|
14 |
public $provider_name = 'no';
|
15 |
public $post_type = 'tribe_rsvp_attendees';
|
16 |
|
17 |
public $count_not_going = true;
|
18 |
|
19 |
-
}
|
10 |
class Tribe__Tickets__RSVP__Status__Not_Going extends Tribe__Tickets__Status__Abstract {
|
11 |
|
12 |
//Cancelled by an admin or the customer – no further action required (Cancelling an order does not affect stock quantity by default)
|
13 |
+
public $name = 'Not going';
|
14 |
public $provider_name = 'no';
|
15 |
public $post_type = 'tribe_rsvp_attendees';
|
16 |
|
17 |
public $count_not_going = true;
|
18 |
|
19 |
+
}
|
src/Tribe/Tickets.php
CHANGED
@@ -395,14 +395,19 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
395 |
* @since 4.6
|
396 |
*
|
397 |
* @param object $ticket Ticket object
|
398 |
-
*
|
|
|
399 |
*/
|
400 |
public function get_ticket_delete_link( $ticket = null ) {
|
401 |
if ( empty( $ticket ) ) {
|
402 |
-
return;
|
403 |
}
|
404 |
|
405 |
-
$
|
|
|
|
|
|
|
|
|
406 |
|
407 |
/**
|
408 |
* Allows for the filtering and testing if a user can delete tickets
|
@@ -411,6 +416,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
411 |
*
|
412 |
* @param bool true
|
413 |
* @param int ticket post ID
|
|
|
414 |
* @return string HTML link | void HTML link
|
415 |
*/
|
416 |
if ( apply_filters( 'tribe_tickets_current_user_can_delete_ticket', true, $ticket->ID, $ticket->provider_class ) ) {
|
@@ -439,24 +445,25 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
439 |
*
|
440 |
* @since 4.6
|
441 |
*
|
442 |
-
* @param int
|
443 |
-
* @param object $ticket
|
|
|
444 |
* @return string HTML link | void HTML link
|
445 |
*/
|
446 |
public function get_ticket_move_url( $post_id, $ticket = null ) {
|
447 |
if ( empty( $ticket ) || empty( $post_id ) ) {
|
448 |
-
return;
|
449 |
}
|
450 |
|
451 |
$post_url = get_edit_post_link( $post_id, 'admin' );
|
452 |
|
453 |
$move_type_url = add_query_arg(
|
454 |
-
|
455 |
'dialog' => Tribe__Tickets__Main::instance()->move_ticket_types()->dialog_name(),
|
456 |
'ticket_type_id' => $ticket->ID,
|
457 |
'check' => wp_create_nonce( 'move_tickets' ),
|
458 |
'TB_iframe' => 'true',
|
459 |
-
|
460 |
$post_url
|
461 |
);
|
462 |
|
@@ -468,27 +475,30 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
468 |
*
|
469 |
* @since 4.6
|
470 |
*
|
471 |
-
* @param int
|
472 |
-
* @param object $ticket
|
|
|
473 |
* @return string HTML link | void HTML link
|
474 |
*/
|
475 |
public function get_ticket_move_link( $post_id, $ticket = null ) {
|
476 |
if ( empty( $ticket ) ) {
|
477 |
-
return;
|
478 |
}
|
479 |
|
480 |
-
$
|
|
|
|
|
481 |
|
482 |
$move_url = $this->get_ticket_move_url( $post_id, $ticket );
|
483 |
|
484 |
if ( empty( $move_url ) ) {
|
485 |
-
return;
|
486 |
}
|
487 |
|
488 |
// Make sure Thickbox is available regardless of which admin page we're on.
|
489 |
add_thickbox();
|
490 |
|
491 |
-
$move_link = sprintf( '<a href="%1$s" class="thickbox tribe-ticket-move-link">'
|
492 |
|
493 |
return $move_link;
|
494 |
}
|
@@ -1527,18 +1537,17 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1527 |
}
|
1528 |
|
1529 |
/**
|
1530 |
-
* Returns an array of standard stock mode options that can be
|
1531 |
-
* reused by implementations.
|
1532 |
*
|
1533 |
* Format is: ['identifier' => 'Localized name', ... ]
|
1534 |
*
|
1535 |
* @return array
|
1536 |
*/
|
1537 |
protected function global_stock_mode_options() {
|
1538 |
-
return
|
1539 |
-
Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE =>
|
1540 |
-
Tribe__Tickets__Global_Stock::OWN_STOCK_MODE =>
|
1541 |
-
|
1542 |
}
|
1543 |
|
1544 |
/**
|
@@ -1584,19 +1593,19 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1584 |
* This order is important so that tickets overwrite RSVP on
|
1585 |
* the Buy Now Button on the front-end
|
1586 |
*/
|
1587 |
-
$types['rsvp'] =
|
1588 |
'count' => 0,
|
1589 |
'stock' => 0,
|
1590 |
'unlimited' => 0,
|
1591 |
'available' => 0,
|
1592 |
-
|
1593 |
-
$types['tickets'] =
|
1594 |
'count' => 0, // count of ticket types currently for sale
|
1595 |
'stock' => 0, // current stock of tickets available for sale
|
1596 |
'global' => 0, // global stock ticket
|
1597 |
'unlimited' => 0, // unlimited stock tickets
|
1598 |
'available' => 0, // are tickets available for sale right now
|
1599 |
-
|
1600 |
|
1601 |
foreach ( $tickets as $ticket ) {
|
1602 |
// If a ticket is not current for sale do not count it
|
@@ -1699,10 +1708,10 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1699 |
* Takes any global stock data and makes it available via a wp_localize_script() call.
|
1700 |
*/
|
1701 |
public static function enqueue_frontend_stock_data() {
|
1702 |
-
$data =
|
1703 |
'tickets' => [],
|
1704 |
'events' => [],
|
1705 |
-
|
1706 |
|
1707 |
foreach ( self::$frontend_ticket_data as $ticket ) {
|
1708 |
$post = $ticket->get_event();
|
@@ -1725,9 +1734,9 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
1725 |
$ticket_data['stock'] = $ticket->available();
|
1726 |
}
|
1727 |
|
1728 |
-
$data['events'][ $post_id ] =
|
1729 |
'stock' => $global_stock->get_stock_level(),
|
1730 |
-
|
1731 |
|
1732 |
$data['tickets'][ $ticket->ID ] = $ticket_data;
|
1733 |
}
|
@@ -2169,6 +2178,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2169 |
* Returns a tickets unavailable message based on the availability slug of a collection of tickets
|
2170 |
*
|
2171 |
* @since 4.2
|
|
|
2172 |
*
|
2173 |
* @param array $tickets Collection of tickets
|
2174 |
* @return string
|
@@ -2178,9 +2188,13 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2178 |
$message = null;
|
2179 |
$post_type = get_post_type();
|
2180 |
|
2181 |
-
if (
|
|
|
|
|
|
|
|
|
2182 |
$events_label_singular_lowercase = tribe_get_event_label_singular_lowercase();
|
2183 |
-
$message = sprintf(
|
2184 |
} elseif ( 'availability-future' === $availability_slug ) {
|
2185 |
/**
|
2186 |
* Allows inclusion of ticket start sale date in unavailability message
|
@@ -2216,7 +2230,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2216 |
$date_format = tribe_get_date_format( true );
|
2217 |
$start_sale_date = Tribe__Date_Utils::reformat( $start_sale_date, $date_format );
|
2218 |
|
2219 |
-
$message = __( '
|
2220 |
$message .= $start_sale_date;
|
2221 |
|
2222 |
if ( $display_time ) {
|
@@ -2225,12 +2239,12 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2225 |
$message .= __( ' at ', 'event_tickets' ) . $start_sale_time;
|
2226 |
}
|
2227 |
} else {
|
2228 |
-
$message = __( '
|
2229 |
}
|
2230 |
} elseif ( 'availability-past' === $availability_slug ) {
|
2231 |
-
$message = __( '
|
2232 |
} elseif ( 'availability-mixed' === $availability_slug ) {
|
2233 |
-
$message = __( 'There are no
|
2234 |
}
|
2235 |
|
2236 |
/**
|
395 |
* @since 4.6
|
396 |
*
|
397 |
* @param object $ticket Ticket object
|
398 |
+
*
|
399 |
+
* @return string HTML link
|
400 |
*/
|
401 |
public function get_ticket_delete_link( $ticket = null ) {
|
402 |
if ( empty( $ticket ) ) {
|
403 |
+
return '';
|
404 |
}
|
405 |
|
406 |
+
$delete_text = _x( 'Delete %s', 'delete link', 'event-tickets' );
|
407 |
+
|
408 |
+
$button_text = ( 'Tribe__Tickets__RSVP' === $ticket->provider_class )
|
409 |
+
? sprintf( $delete_text, tribe_get_rsvp_label_singular( 'delete_link' ) )
|
410 |
+
: sprintf( $delete_text, tribe_get_ticket_label_singular( 'delete_link' ) );
|
411 |
|
412 |
/**
|
413 |
* Allows for the filtering and testing if a user can delete tickets
|
416 |
*
|
417 |
* @param bool true
|
418 |
* @param int ticket post ID
|
419 |
+
*
|
420 |
* @return string HTML link | void HTML link
|
421 |
*/
|
422 |
if ( apply_filters( 'tribe_tickets_current_user_can_delete_ticket', true, $ticket->ID, $ticket->provider_class ) ) {
|
445 |
*
|
446 |
* @since 4.6
|
447 |
*
|
448 |
+
* @param int $post_id ID of parent "event" post
|
449 |
+
* @param object $ticket Ticket object
|
450 |
+
*
|
451 |
* @return string HTML link | void HTML link
|
452 |
*/
|
453 |
public function get_ticket_move_url( $post_id, $ticket = null ) {
|
454 |
if ( empty( $ticket ) || empty( $post_id ) ) {
|
455 |
+
return '';
|
456 |
}
|
457 |
|
458 |
$post_url = get_edit_post_link( $post_id, 'admin' );
|
459 |
|
460 |
$move_type_url = add_query_arg(
|
461 |
+
[
|
462 |
'dialog' => Tribe__Tickets__Main::instance()->move_ticket_types()->dialog_name(),
|
463 |
'ticket_type_id' => $ticket->ID,
|
464 |
'check' => wp_create_nonce( 'move_tickets' ),
|
465 |
'TB_iframe' => 'true',
|
466 |
+
],
|
467 |
$post_url
|
468 |
);
|
469 |
|
475 |
*
|
476 |
* @since 4.6
|
477 |
*
|
478 |
+
* @param int $post_id ID of parent "event" post
|
479 |
+
* @param object $ticket Ticket object
|
480 |
+
*
|
481 |
* @return string HTML link | void HTML link
|
482 |
*/
|
483 |
public function get_ticket_move_link( $post_id, $ticket = null ) {
|
484 |
if ( empty( $ticket ) ) {
|
485 |
+
return '';
|
486 |
}
|
487 |
|
488 |
+
$move_text = __( 'Move %s', 'event-tickets' );
|
489 |
+
|
490 |
+
$button_text = ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) ? sprintf( $move_text, tribe_get_rsvp_label_singular( 'move_ticket_button_text' ) ) : sprintf( $move_text, tribe_get_ticket_label_singular( 'move_ticket_button_text' ) ) ;
|
491 |
|
492 |
$move_url = $this->get_ticket_move_url( $post_id, $ticket );
|
493 |
|
494 |
if ( empty( $move_url ) ) {
|
495 |
+
return '';
|
496 |
}
|
497 |
|
498 |
// Make sure Thickbox is available regardless of which admin page we're on.
|
499 |
add_thickbox();
|
500 |
|
501 |
+
$move_link = sprintf( '<a href="%1$s" class="thickbox tribe-ticket-move-link">%2$s</a>', $move_url, esc_html( $button_text ) );
|
502 |
|
503 |
return $move_link;
|
504 |
}
|
1537 |
}
|
1538 |
|
1539 |
/**
|
1540 |
+
* Returns an array of standard stock mode options that can be reused by implementations.
|
|
|
1541 |
*
|
1542 |
* Format is: ['identifier' => 'Localized name', ... ]
|
1543 |
*
|
1544 |
* @return array
|
1545 |
*/
|
1546 |
protected function global_stock_mode_options() {
|
1547 |
+
return [
|
1548 |
+
Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE => sprintf( _x( 'Shared capacity with other %s', 'global stock mode option', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'global_stock_mode_options' ) ),
|
1549 |
+
Tribe__Tickets__Global_Stock::OWN_STOCK_MODE => sprintf( _x( 'Set capacity for this %s only', 'global stock mode option (individual)', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'global_stock_mode_options_individual' ) )
|
1550 |
+
];
|
1551 |
}
|
1552 |
|
1553 |
/**
|
1593 |
* This order is important so that tickets overwrite RSVP on
|
1594 |
* the Buy Now Button on the front-end
|
1595 |
*/
|
1596 |
+
$types['rsvp'] = [
|
1597 |
'count' => 0,
|
1598 |
'stock' => 0,
|
1599 |
'unlimited' => 0,
|
1600 |
'available' => 0,
|
1601 |
+
];
|
1602 |
+
$types['tickets'] = [
|
1603 |
'count' => 0, // count of ticket types currently for sale
|
1604 |
'stock' => 0, // current stock of tickets available for sale
|
1605 |
'global' => 0, // global stock ticket
|
1606 |
'unlimited' => 0, // unlimited stock tickets
|
1607 |
'available' => 0, // are tickets available for sale right now
|
1608 |
+
];
|
1609 |
|
1610 |
foreach ( $tickets as $ticket ) {
|
1611 |
// If a ticket is not current for sale do not count it
|
1708 |
* Takes any global stock data and makes it available via a wp_localize_script() call.
|
1709 |
*/
|
1710 |
public static function enqueue_frontend_stock_data() {
|
1711 |
+
$data = [
|
1712 |
'tickets' => [],
|
1713 |
'events' => [],
|
1714 |
+
];
|
1715 |
|
1716 |
foreach ( self::$frontend_ticket_data as $ticket ) {
|
1717 |
$post = $ticket->get_event();
|
1734 |
$ticket_data['stock'] = $ticket->available();
|
1735 |
}
|
1736 |
|
1737 |
+
$data['events'][ $post_id ] = [
|
1738 |
'stock' => $global_stock->get_stock_level(),
|
1739 |
+
];
|
1740 |
|
1741 |
$data['tickets'][ $ticket->ID ] = $ticket_data;
|
1742 |
}
|
2178 |
* Returns a tickets unavailable message based on the availability slug of a collection of tickets
|
2179 |
*
|
2180 |
* @since 4.2
|
2181 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
2182 |
*
|
2183 |
* @param array $tickets Collection of tickets
|
2184 |
* @return string
|
2188 |
$message = null;
|
2189 |
$post_type = get_post_type();
|
2190 |
|
2191 |
+
if (
|
2192 |
+
'tribe_events' == $post_type
|
2193 |
+
&& function_exists( 'tribe_is_past_event' )
|
2194 |
+
&& tribe_is_past_event()
|
2195 |
+
) {
|
2196 |
$events_label_singular_lowercase = tribe_get_event_label_singular_lowercase();
|
2197 |
+
$message = esc_html( sprintf( __( '%s are not available as this %s has passed.', 'event-tickets' ), tribe_get_ticket_label_plural( 'unavailable_past_tribe_events' ), $events_label_singular_lowercase ) );
|
2198 |
} elseif ( 'availability-future' === $availability_slug ) {
|
2199 |
/**
|
2200 |
* Allows inclusion of ticket start sale date in unavailability message
|
2230 |
$date_format = tribe_get_date_format( true );
|
2231 |
$start_sale_date = Tribe__Date_Utils::reformat( $start_sale_date, $date_format );
|
2232 |
|
2233 |
+
$message = esc_html( sprintf( __( '%s will be available on ', 'event-tickets' ), tribe_get_ticket_label_plural( 'unavailable_future_display_date' ) ) );
|
2234 |
$message .= $start_sale_date;
|
2235 |
|
2236 |
if ( $display_time ) {
|
2239 |
$message .= __( ' at ', 'event_tickets' ) . $start_sale_time;
|
2240 |
}
|
2241 |
} else {
|
2242 |
+
$message = esc_html( sprintf( __( '%s are not yet available', 'event-tickets' ), tribe_get_ticket_label_plural( 'unavailable_future_without_date' ) ) );
|
2243 |
}
|
2244 |
} elseif ( 'availability-past' === $availability_slug ) {
|
2245 |
+
$message = esc_html( sprintf( __( '%s are no longer available.', 'event-tickets' ), tribe_get_ticket_label_plural( 'unavailable_past' ) ) );
|
2246 |
} elseif ( 'availability-mixed' === $availability_slug ) {
|
2247 |
+
$message = esc_html( sprintf( __( 'There are no %s available at this time.', 'event-tickets' ), tribe_get_ticket_label_plural( 'unavailable_mixed' ) ) );
|
2248 |
}
|
2249 |
|
2250 |
/**
|
src/Tribe/Tickets_View.php
CHANGED
@@ -50,7 +50,7 @@ class Tribe__Tickets__Tickets_View {
|
|
50 |
|
51 |
// Intercept Template file for Tickets
|
52 |
add_action( 'tribe_events_pre_get_posts', array( $myself, 'modify_ticket_display_query' ) );
|
53 |
-
add_filter( '
|
54 |
|
55 |
// We will inject on the Priority 4, to be happen before RSVP
|
56 |
add_action( 'tribe_events_single_event_after_the_meta', array( $myself, 'inject_link_template' ), 4 );
|
@@ -289,7 +289,7 @@ class Tribe__Tickets__Tickets_View {
|
|
289 |
}
|
290 |
|
291 |
// Now fetch the display and check it
|
292 |
-
if ( 'tickets' !== get_query_var( 'eventDisplay', false ) ) {
|
293 |
return;
|
294 |
}
|
295 |
|
@@ -373,10 +373,15 @@ class Tribe__Tickets__Tickets_View {
|
|
373 |
// Prevents firing more then it needs too outside of the loop
|
374 |
$in_the_loop = isset( $GLOBALS['wp_query']->in_the_loop ) && $GLOBALS['wp_query']->in_the_loop;
|
375 |
|
376 |
-
//
|
|
|
|
|
377 |
if (
|
378 |
-
! $
|
379 |
-
||
|
|
|
|
|
|
|
380 |
) {
|
381 |
return $content;
|
382 |
}
|
@@ -414,13 +419,13 @@ class Tribe__Tickets__Tickets_View {
|
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
-
* We need to intercept the template loading and load the correct file
|
418 |
*
|
419 |
-
* @param
|
420 |
-
*
|
421 |
-
* @return string
|
422 |
*/
|
423 |
-
public function intercept_template( $old_file
|
424 |
global $wp_query;
|
425 |
|
426 |
/**
|
@@ -440,12 +445,8 @@ class Tribe__Tickets__Tickets_View {
|
|
440 |
|
441 |
// Now fetch the display and check it
|
442 |
$display = get_query_var( 'eventDisplay', false );
|
443 |
-
if ( 'tickets' !== $display ) {
|
444 |
-
return $old_file;
|
445 |
-
}
|
446 |
|
447 |
-
|
448 |
-
if ( 'single-event.php' !== $template ) {
|
449 |
return $old_file;
|
450 |
}
|
451 |
|
@@ -799,12 +800,16 @@ class Tribe__Tickets__Tickets_View {
|
|
799 |
|
800 |
$ticket_count = $this->count_ticket_attendees( $event_id, $user_id );
|
801 |
|
802 |
-
if (
|
803 |
-
$descriptions[] =
|
|
|
|
|
804 |
}
|
805 |
|
806 |
-
if (
|
807 |
-
$descriptions[] =
|
|
|
|
|
808 |
}
|
809 |
|
810 |
// Just return false if array is empty
|
@@ -812,7 +817,7 @@ class Tribe__Tickets__Tickets_View {
|
|
812 |
return '';
|
813 |
}
|
814 |
|
815 |
-
return implode(
|
816 |
}
|
817 |
|
818 |
/**
|
@@ -862,16 +867,18 @@ class Tribe__Tickets__Tickets_View {
|
|
862 |
}
|
863 |
|
864 |
/**
|
865 |
-
* Gets a HTML Attribute for input/select/textarea to be disabled
|
866 |
*
|
867 |
-
* @param
|
868 |
-
* @param
|
869 |
-
*
|
|
|
870 |
*/
|
871 |
public function get_restriction_attr( $event_id = null, $ticket_id = null ) {
|
872 |
$is_disabled = '';
|
|
|
873 |
if ( $this->is_rsvp_restricted( $event_id, $ticket_id ) ) {
|
874 |
-
$is_disabled = 'disabled title="' .
|
875 |
}
|
876 |
|
877 |
return $is_disabled;
|
50 |
|
51 |
// Intercept Template file for Tickets
|
52 |
add_action( 'tribe_events_pre_get_posts', array( $myself, 'modify_ticket_display_query' ) );
|
53 |
+
add_filter( 'tribe_events_template_single-event.php', array( $myself, 'intercept_template' ), 20, 2 );
|
54 |
|
55 |
// We will inject on the Priority 4, to be happen before RSVP
|
56 |
add_action( 'tribe_events_single_event_after_the_meta', array( $myself, 'inject_link_template' ), 4 );
|
289 |
}
|
290 |
|
291 |
// Now fetch the display and check it
|
292 |
+
if ( 'tickets' !== get_query_var( 'eventDisplay', false ) && ! $this->is_edit_page() ) {
|
293 |
return;
|
294 |
}
|
295 |
|
373 |
// Prevents firing more then it needs too outside of the loop
|
374 |
$in_the_loop = isset( $GLOBALS['wp_query']->in_the_loop ) && $GLOBALS['wp_query']->in_the_loop;
|
375 |
|
376 |
+
// Now fetch the display and check it
|
377 |
+
$display = get_query_var( 'eventDisplay', false );
|
378 |
+
|
379 |
if (
|
380 |
+
! $in_the_loop
|
381 |
+
|| (
|
382 |
+
'tickets' !== $display
|
383 |
+
&& ! $this->is_edit_page()
|
384 |
+
)
|
385 |
) {
|
386 |
return $content;
|
387 |
}
|
419 |
}
|
420 |
|
421 |
/**
|
422 |
+
* We need to intercept the template loading and load the correct file.
|
423 |
*
|
424 |
+
* @param string $old_file Non important variable with the previous path.
|
425 |
+
*
|
426 |
+
* @return string The correct File path for the tickets endpoint.
|
427 |
*/
|
428 |
+
public function intercept_template( $old_file ) {
|
429 |
global $wp_query;
|
430 |
|
431 |
/**
|
445 |
|
446 |
// Now fetch the display and check it
|
447 |
$display = get_query_var( 'eventDisplay', false );
|
|
|
|
|
|
|
448 |
|
449 |
+
if ( 'tickets' !== $display && ! $this->is_edit_page() ) {
|
|
|
450 |
return $old_file;
|
451 |
}
|
452 |
|
800 |
|
801 |
$ticket_count = $this->count_ticket_attendees( $event_id, $user_id );
|
802 |
|
803 |
+
if ( 1 === $rsvp_count ) {
|
804 |
+
$descriptions[] = tribe_get_rsvp_label_singular( 'tickets_view_description' );
|
805 |
+
} elseif ( 1 < $rsvp_count ) {
|
806 |
+
$descriptions[] = tribe_get_rsvp_label_plural( 'tickets_view_description' );
|
807 |
}
|
808 |
|
809 |
+
if ( 1 === $ticket_count ) {
|
810 |
+
$descriptions[] = tribe_get_ticket_label_singular( 'tickets_view_description' );
|
811 |
+
} elseif ( 1 < $ticket_count ) {
|
812 |
+
$descriptions[] = tribe_get_ticket_label_plural( 'tickets_view_description' );
|
813 |
}
|
814 |
|
815 |
// Just return false if array is empty
|
817 |
return '';
|
818 |
}
|
819 |
|
820 |
+
return esc_html( implode( _x( ' and ', 'separator if there are both RSVPs and Tickets', 'event-tickets' ), $descriptions ) );
|
821 |
}
|
822 |
|
823 |
/**
|
867 |
}
|
868 |
|
869 |
/**
|
870 |
+
* Gets a HTML Attribute for input/select/textarea to be disabled.
|
871 |
*
|
872 |
+
* @param int $event_id The Event/Post ID (optional).
|
873 |
+
* @param int $ticket_id The Ticket/RSVP ID (optional).
|
874 |
+
*
|
875 |
+
* @return bool
|
876 |
*/
|
877 |
public function get_restriction_attr( $event_id = null, $ticket_id = null ) {
|
878 |
$is_disabled = '';
|
879 |
+
|
880 |
if ( $this->is_rsvp_restricted( $event_id, $ticket_id ) ) {
|
881 |
+
$is_disabled = 'disabled title="' . esc_attr( sprintf( __( 'This %s is no longer active.', 'event-tickets' ), tribe_get_rsvp_label_singular( 'rsvp_restricted_title_text' ) ) ) . '"';
|
882 |
}
|
883 |
|
884 |
return $is_disabled;
|
src/Tribe/Views/V2/Hooks.php
ADDED
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles hooking all the actions and filters used by the module.
|
4 |
+
*
|
5 |
+
* To remove a filter:
|
6 |
+
* remove_filter( 'some_filter', [ tribe( Tribe\Events\Tickets\Views\V2\Hooks::class ), 'some_filtering_method' ] );
|
7 |
+
* remove_filter( 'some_filter', [ tribe( 'tickets.views.v2.hooks' ), 'some_filtering_method' ] );
|
8 |
+
*
|
9 |
+
* To remove an action:
|
10 |
+
* remove_action( 'some_action', [ tribe( Tribe\Events\Tickets\Views\V2\Hooks::class ), 'some_method' ] );
|
11 |
+
* remove_action( 'some_action', [ tribe( 'tickets.views.v2.hooks' ), 'some_method' ] );
|
12 |
+
*
|
13 |
+
* @since 4.10.9
|
14 |
+
*
|
15 |
+
* @package Tribe\Events\Tickets\Views\V2
|
16 |
+
*/
|
17 |
+
|
18 |
+
namespace Tribe\Events\Tickets\Views\V2;
|
19 |
+
|
20 |
+
use Tribe\Events\Tickets\Views\V2\Models\Tickets;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Class Hooks.
|
24 |
+
*
|
25 |
+
* @since 4.10.9
|
26 |
+
*
|
27 |
+
* @package Tribe\Events\Tickets\Views\V2
|
28 |
+
*/
|
29 |
+
class Hooks extends \tad_DI52_ServiceProvider {
|
30 |
+
/**
|
31 |
+
* Binds and sets up implementations.
|
32 |
+
*
|
33 |
+
* @since 4.10.9
|
34 |
+
*/
|
35 |
+
public function register() {
|
36 |
+
$this->add_actions();
|
37 |
+
$this->add_filters();
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Filters the list of folders TEC will look up to find templates to add the ones defined by Tickets.
|
42 |
+
*
|
43 |
+
* @since 4.10.9
|
44 |
+
*
|
45 |
+
* @param array $folders The current list of folders that will be searched template files.
|
46 |
+
*
|
47 |
+
* @return array The filtered list of folders that will be searched for the templates.
|
48 |
+
*/
|
49 |
+
public function filter_template_path_list( array $folders = [] ) {
|
50 |
+
$folders[] = [
|
51 |
+
'id' => 'event-tickets',
|
52 |
+
'priority' => 17,
|
53 |
+
'path' => \Tribe__Tickets__Main::instance()->plugin_path . 'src/views/v2',
|
54 |
+
];
|
55 |
+
|
56 |
+
return $folders;
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
* Add tickets data to the event object.
|
61 |
+
*
|
62 |
+
* @since 4.10.9
|
63 |
+
*
|
64 |
+
* @param array $props An associative array of all the properties that will be set on the "decorated" post
|
65 |
+
* object.
|
66 |
+
* @param \WP_Post $post The post object handled by the class.
|
67 |
+
*
|
68 |
+
* @return array The model properties. This value might be cached.
|
69 |
+
*/
|
70 |
+
public function add_tickets_data( $props, $event ) {
|
71 |
+
$props['tickets'] = new Tickets( $event->ID );
|
72 |
+
|
73 |
+
return $props;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Adds the actions required by each Tickets Views v2 component.
|
78 |
+
*
|
79 |
+
* @since 4.10.9
|
80 |
+
*/
|
81 |
+
protected function add_actions() {
|
82 |
+
// silence is golden
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Adds the filters required by each Tickets Views v2 component.
|
87 |
+
*
|
88 |
+
* @since 4.10.9
|
89 |
+
*/
|
90 |
+
protected function add_filters() {
|
91 |
+
add_filter( 'tribe_template_path_list', [ $this, 'filter_template_path_list' ] );
|
92 |
+
add_filter( 'tribe_post_type_events_properties', [ $this, 'add_tickets_data' ], 20, 2 );
|
93 |
+
}
|
94 |
+
}
|
src/Tribe/Views/V2/Models/Tickets.php
ADDED
@@ -0,0 +1,294 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Tickets abstraction objece, used to add tickets-related properties to the event object crated by the
|
4 |
+
* `trib_get_event` function.
|
5 |
+
*
|
6 |
+
* @since TBD
|
7 |
+
*
|
8 |
+
* @package Tribe\Events\Tickets\Views\V2\Models
|
9 |
+
*/
|
10 |
+
|
11 |
+
namespace Tribe\Events\Tickets\Views\V2\Models;
|
12 |
+
|
13 |
+
|
14 |
+
use Tribe\Utils\Lazy_Events;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class Tickets
|
18 |
+
*
|
19 |
+
* @since TBD
|
20 |
+
*
|
21 |
+
* @package Tribe\Events\Tickets\Views\V2\Models
|
22 |
+
*/
|
23 |
+
class Tickets implements \ArrayAccess, \Serializable{
|
24 |
+
use Lazy_Events;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* The post ID this tickets model is for.
|
28 |
+
*
|
29 |
+
* @since 4.10.9
|
30 |
+
*
|
31 |
+
* @var int
|
32 |
+
*/
|
33 |
+
protected $post_id;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* The tickets data.
|
37 |
+
*
|
38 |
+
* @since 4.10.9
|
39 |
+
*
|
40 |
+
* @var array
|
41 |
+
*/
|
42 |
+
protected $data;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* A flag property indicating whether tickets for the post exists or not.
|
46 |
+
*
|
47 |
+
* @since 4.10.9
|
48 |
+
*
|
49 |
+
* @var bool
|
50 |
+
*/
|
51 |
+
protected $exists;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* An array of all the tickets for this event.
|
55 |
+
*
|
56 |
+
* @since 4.10.9
|
57 |
+
*
|
58 |
+
* @var array
|
59 |
+
*/
|
60 |
+
protected $all_tickets;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Tickets constructor.
|
64 |
+
*
|
65 |
+
* @param int $post_id The post ID.
|
66 |
+
*/
|
67 |
+
public function __construct( $post_id ) {
|
68 |
+
$this->post_id = $post_id;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* {@inheritDoc}
|
73 |
+
*/
|
74 |
+
public function __get( $property ) {
|
75 |
+
if ( 'exist' === $property ) {
|
76 |
+
return $this->exist();
|
77 |
+
}
|
78 |
+
|
79 |
+
return $this->offsetGet( $property );
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* {@inheritDoc}
|
84 |
+
*/
|
85 |
+
public function __set( $property, $value ) {
|
86 |
+
throw new \InvalidArgumentException( "The `Tickets::{$property}` property cannot be set." );
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* {@inheritDoc}
|
91 |
+
*/
|
92 |
+
public function __isset( $property ) {
|
93 |
+
return $this->offsetExists( $property );
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Returns the data about the event tickets, if any.
|
98 |
+
*
|
99 |
+
* @since 4.10.9
|
100 |
+
*
|
101 |
+
* @return array An array of objects containing the post thumbnail data.
|
102 |
+
*/
|
103 |
+
public function fetch_data() {
|
104 |
+
if ( ! $this->exist() ) {
|
105 |
+
return [];
|
106 |
+
}
|
107 |
+
|
108 |
+
if ( null !== $this->data ) {
|
109 |
+
return $this->data;
|
110 |
+
}
|
111 |
+
|
112 |
+
if ( ! tribe_events_has_tickets_on_sale( $this->post_id ) ) {
|
113 |
+
return [];
|
114 |
+
}
|
115 |
+
|
116 |
+
// Get an array for ticket and rsvp counts.
|
117 |
+
$types = \Tribe__Tickets__Tickets::get_ticket_counts( $this->post_id );
|
118 |
+
|
119 |
+
// If no rsvp or tickets return.
|
120 |
+
if ( ! $types ) {
|
121 |
+
return [];
|
122 |
+
}
|
123 |
+
|
124 |
+
$html = [];
|
125 |
+
$parts = [];
|
126 |
+
$stock_html = '';
|
127 |
+
$link_label = '';
|
128 |
+
$link_anchor = '';
|
129 |
+
|
130 |
+
// If we have tickets or RSVP, but everything is Sold Out then display the Sold Out message.
|
131 |
+
foreach ( $types as $type => $data ) {
|
132 |
+
|
133 |
+
if ( ! $data['count'] ) {
|
134 |
+
continue;
|
135 |
+
}
|
136 |
+
|
137 |
+
if ( ! $data['available'] ) {
|
138 |
+
$parts[ $type . '_stock' ] = esc_html_x( 'Sold out', 'list view stock sold out', 'event-tickets' );
|
139 |
+
|
140 |
+
// Only re-apply if we don't have a stock yet
|
141 |
+
if ( empty( $html['stock'] ) ) {
|
142 |
+
$html['stock'] = $parts[ $type . '_stock' ];
|
143 |
+
}
|
144 |
+
} else {
|
145 |
+
$stock = $data['stock'];
|
146 |
+
if ( $data['unlimited'] || ! $data['stock'] ) {
|
147 |
+
// If unlimited tickets, tickets with no stock and rsvp, or no tickets and rsvp unlimited - hide the remaining count.
|
148 |
+
$stock = false;
|
149 |
+
}
|
150 |
+
|
151 |
+
if ( $stock ) {
|
152 |
+
$threshold = \Tribe__Settings_Manager::get_option( 'ticket-display-tickets-left-threshold', 0 );
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Overwrites the threshold to display "# tickets left".
|
156 |
+
*
|
157 |
+
* @param int $threshold Stock threshold to trigger display of "# tickets left"
|
158 |
+
* @param array $data Ticket data.
|
159 |
+
* @param int $event_id Event ID.
|
160 |
+
*
|
161 |
+
* @since 4.10.1
|
162 |
+
*/
|
163 |
+
$threshold = absint( apply_filters( 'tribe_display_tickets_left_threshold', $threshold, $data, $this->post_id ) );
|
164 |
+
|
165 |
+
if ( ! $threshold || $stock <= $threshold ) {
|
166 |
+
|
167 |
+
$number = number_format_i18n( $stock );
|
168 |
+
|
169 |
+
if ( 'rsvp' === $type ) {
|
170 |
+
$text = _n( '%s spot left', '%s spots left', $stock, 'event-tickets' );
|
171 |
+
} else {
|
172 |
+
$text = _n( '%s ticket left', '%s tickets left', $stock, 'event-tickets' );
|
173 |
+
}
|
174 |
+
|
175 |
+
$stock_html = esc_html( sprintf( $text, $number ) );
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
$parts[ $type . '_stock' ] = $html['stock'] = $stock_html;
|
180 |
+
|
181 |
+
if ( 'rsvp' === $type ) {
|
182 |
+
$link_label = esc_html( sprintf( _x( '%s Now', 'list view rsvp now ticket button', 'event-tickets' ), tribe_get_rsvp_label_singular( 'list_view_rsvp_now_button' ) ) );
|
183 |
+
$link_anchor = '#rsvp-now';
|
184 |
+
} else {
|
185 |
+
$link_label = esc_html( sprintf( _x( 'Get %s', 'list view buy now ticket button', 'event-tickets' ), tribe_get_ticket_label_plural( 'list_view_buy_now_button' ) ) );
|
186 |
+
$link_anchor = '#buy-tickets';
|
187 |
+
}
|
188 |
+
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
$this->data['link'] = (object) [
|
193 |
+
'anchor' => get_permalink( $this->post_id ) . $link_anchor,
|
194 |
+
'label' => $link_label,
|
195 |
+
];
|
196 |
+
|
197 |
+
$this->data['stock'] = (object) [
|
198 |
+
'available' => $stock_html,
|
199 |
+
];
|
200 |
+
|
201 |
+
return $this->data;
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* {@inheritDoc}
|
206 |
+
*/
|
207 |
+
public function offsetExists( $offset ) {
|
208 |
+
$this->data = $this->fetch_data();
|
209 |
+
|
210 |
+
return isset( $this->data[ $offset ] );
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* {@inheritDoc}
|
215 |
+
*/
|
216 |
+
public function offsetGet( $offset ) {
|
217 |
+
$this->data = $this->fetch_data();
|
218 |
+
|
219 |
+
return isset( $this->data[ $offset ] )
|
220 |
+
? $this->data[ $offset ]
|
221 |
+
: null;
|
222 |
+
}
|
223 |
+
|
224 |
+
/**
|
225 |
+
* {@inheritDoc}
|
226 |
+
*/
|
227 |
+
public function offsetSet( $offset, $value ) {
|
228 |
+
$this->data = $this->fetch_data();
|
229 |
+
|
230 |
+
$this->data[ $offset ] = $value;
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* {@inheritDoc}
|
235 |
+
*/
|
236 |
+
public function offsetUnset( $offset ) {
|
237 |
+
$this->data = $this->fetch_data();
|
238 |
+
|
239 |
+
unset( $this->data[ $offset ] );
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Returns an array representation of the event tickets data.
|
244 |
+
*
|
245 |
+
* @since 4.10.9
|
246 |
+
*
|
247 |
+
*
|
248 |
+
* @return array An array representation of the event tickets data.
|
249 |
+
*/
|
250 |
+
public function to_array() {
|
251 |
+
$this->data = $this->fetch_data();
|
252 |
+
|
253 |
+
return json_decode( json_encode( $this->data ), true );
|
254 |
+
}
|
255 |
+
|
256 |
+
/**
|
257 |
+
* {@inheritDoc}
|
258 |
+
*/
|
259 |
+
public function serialize() {
|
260 |
+
$data = $this->fetch_data();
|
261 |
+
$data['post_id'] = $this->post_id;
|
262 |
+
|
263 |
+
return serialize( $data );
|
264 |
+
}
|
265 |
+
|
266 |
+
/**
|
267 |
+
* {@inheritDoc}
|
268 |
+
*/
|
269 |
+
public function unserialize( $serialized ) {
|
270 |
+
$data = unserialize( $serialized );
|
271 |
+
$this->post_id = $data['post_id'];
|
272 |
+
unset( $data['post_id'] );
|
273 |
+
$this->data = $data;
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Returns whether an event has tickets at all or not.
|
278 |
+
*
|
279 |
+
* @since 4.10.9
|
280 |
+
*
|
281 |
+
* @return bool Whether an event has tickets at all or not.
|
282 |
+
*/
|
283 |
+
public function exist() {
|
284 |
+
if ( null !== $this->exists ) {
|
285 |
+
return $this->exists;
|
286 |
+
}
|
287 |
+
|
288 |
+
$this->all_tickets = \Tribe__Tickets__Tickets::get_all_event_tickets( $this->post_id );
|
289 |
+
|
290 |
+
$this->exists = ! empty( $this->all_tickets );
|
291 |
+
|
292 |
+
return $this->exists;
|
293 |
+
}
|
294 |
+
}
|
src/Tribe/Views/V2/Service_Provider.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Tribe\Events\Tickets\Views\V2;
|
3 |
+
|
4 |
+
/**
|
5 |
+
* The main service provider for Event Tickets support and additions to the Views V2 functions.
|
6 |
+
*
|
7 |
+
* @since TBD
|
8 |
+
* @package Tribe\Events\Tickets\Views\V2
|
9 |
+
*/
|
10 |
+
class Service_Provider extends \tad_DI52_ServiceProvider {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Binds and sets up implementations.
|
14 |
+
*
|
15 |
+
* @since 4.10.9
|
16 |
+
*/
|
17 |
+
public function register() {
|
18 |
+
|
19 |
+
require_once tribe( 'tickets.main' )->plugin_path . 'src/functions/views/provider.php';
|
20 |
+
|
21 |
+
if ( ! tribe_events_tickets_views_v2_is_enabled() ) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
+
|
25 |
+
$this->register_hooks();
|
26 |
+
|
27 |
+
// Register the SP on the container
|
28 |
+
$this->container->singleton( 'tickets.views.v2.provider', $this );
|
29 |
+
$this->container->singleton( static::class, $this );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Registers the provider handling all the 1st level filters and actions for Views v2.
|
34 |
+
*
|
35 |
+
* @since 4.10.9
|
36 |
+
*/
|
37 |
+
protected function register_hooks() {
|
38 |
+
$hooks = new Hooks( $this->container );
|
39 |
+
$hooks->register();
|
40 |
+
|
41 |
+
// Allow Hooks to be removed, by having the them registred to the container
|
42 |
+
$this->container->singleton( Hooks::class, $hooks );
|
43 |
+
$this->container->singleton( 'tickets.views.v2.hooks', $hooks );
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
}
|
src/admin-views/editor/column-body-price.php
CHANGED
@@ -13,7 +13,7 @@ if ( method_exists( $provider_obj, 'get_price_value' ) ) {
|
|
13 |
echo $provider_obj->get_price_html( $ticket->ID );
|
14 |
} else {
|
15 |
if ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) {
|
16 |
-
|
17 |
} else {
|
18 |
esc_html_e( 'Free', 'event-tickets' );
|
19 |
}
|
13 |
echo $provider_obj->get_price_html( $ticket->ID );
|
14 |
} else {
|
15 |
if ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) {
|
16 |
+
echo esc_html( tribe_get_rsvp_label_singular( basename( __FILE__ ) ) );
|
17 |
} else {
|
18 |
esc_html_e( 'Free', 'event-tickets' );
|
19 |
}
|
src/admin-views/editor/fieldset/advanced.php
CHANGED
@@ -92,10 +92,10 @@ $start_date_errors = array(
|
|
92 |
data-step="<?php echo esc_attr( $timepicker_step ); ?>"
|
93 |
data-round="<?php echo esc_attr( $timepicker_round ); ?>"
|
94 |
value="<?php echo esc_attr( $ticket ? $ticket->start_time : null ); ?>"
|
95 |
-
aria-label="<?php
|
96 |
/>
|
97 |
<span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
|
98 |
-
<span class="dashicons dashicons-editor-help" title="<?php
|
99 |
</div>
|
100 |
</div>
|
101 |
<div class="input_block">
|
@@ -121,15 +121,15 @@ $start_date_errors = array(
|
|
121 |
data-step="<?php echo esc_attr( $timepicker_step ); ?>"
|
122 |
data-round="<?php echo esc_attr( $timepicker_round ); ?>"
|
123 |
value="<?php echo esc_attr( $ticket ? $ticket->end_time : null ); ?>"
|
124 |
-
aria-label="<?php
|
125 |
/>
|
126 |
<span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
|
127 |
<span
|
128 |
class="dashicons dashicons-editor-help"
|
129 |
<?php if ( class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === get_post_type( $post_id ) ) : ?>
|
130 |
-
title="<?php
|
131 |
<?php else : ?>
|
132 |
-
title="<?php
|
133 |
<?php endif; ?>
|
134 |
></span>
|
135 |
</div>
|
92 |
data-step="<?php echo esc_attr( $timepicker_step ); ?>"
|
93 |
data-round="<?php echo esc_attr( $timepicker_round ); ?>"
|
94 |
value="<?php echo esc_attr( $ticket ? $ticket->start_time : null ); ?>"
|
95 |
+
aria-label="<?php echo esc_html( sprintf( __( '%s start date', 'event-tickets' ), tribe_get_ticket_label_singular( 'input_start_time_aria_label' ) ) ); ?>"
|
96 |
/>
|
97 |
<span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
|
98 |
+
<span class="dashicons dashicons-editor-help" title="<?php echo esc_html( sprintf( __( 'If you do not set a start sale date, %s will be available immediately.', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'input_start_time_help_text_title' ) ) ); ?>"></span>
|
99 |
</div>
|
100 |
</div>
|
101 |
<div class="input_block">
|
121 |
data-step="<?php echo esc_attr( $timepicker_step ); ?>"
|
122 |
data-round="<?php echo esc_attr( $timepicker_round ); ?>"
|
123 |
value="<?php echo esc_attr( $ticket ? $ticket->end_time : null ); ?>"
|
124 |
+
aria-label="<?php echo esc_html( sprintf( __( '%s end date', 'event-tickets' ), tribe_get_ticket_label_singular( 'input_end_time_aria_label' ) ) ); ?>"
|
125 |
/>
|
126 |
<span class="helper-text hide-if-js"><?php esc_html_e( 'HH:MM', 'event-tickets' ) ?></span>
|
127 |
<span
|
128 |
class="dashicons dashicons-editor-help"
|
129 |
<?php if ( class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === get_post_type( $post_id ) ) : ?>
|
130 |
+
title="<?php echo esc_html( sprintf( __( 'If you do not set an end sale date, %s will be available until the event begins.', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' ) ) ); ?>"
|
131 |
<?php else : ?>
|
132 |
+
title="<?php echo esc_html( sprintf( __( 'If you do not set an end sale date, %s will be available forever.', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'input_end_time_help_text_title' ) ) ); ?>"
|
133 |
<?php endif; ?>
|
134 |
></span>
|
135 |
</div>
|
src/admin-views/editor/fieldset/price.php
CHANGED
@@ -3,9 +3,9 @@
|
|
3 |
if ( ! isset( $post_id ) ) {
|
4 |
$post_id = get_the_ID();
|
5 |
}
|
6 |
-
$validation_attrs =
|
7 |
-
'data-validation-error="' .
|
8 |
-
|
9 |
|
10 |
if ( ! isset( $ticket_id ) ) {
|
11 |
$provider = null;
|
@@ -18,7 +18,7 @@ if ( ! isset( $ticket_id ) ) {
|
|
18 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
19 |
$is_paypal_ticket = $provider instanceof Tribe__Tickets__Commerce__PayPal__Main;
|
20 |
|
21 |
-
$description_string =
|
22 |
$description_string = esc_html( apply_filters( 'tribe_tickets_price_description', $description_string, $ticket_id ) );
|
23 |
$price_description = $is_paypal_ticket ? '' : $description_string;
|
24 |
|
@@ -29,11 +29,11 @@ if ( ! isset( $ticket_id ) ) {
|
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
-
* Filters whether we
|
33 |
*
|
34 |
* @since 4.10.8
|
35 |
*
|
36 |
-
* @param boolean
|
37 |
* @param WP_Post|int $ticket_id The current ticket object or its ID
|
38 |
*/
|
39 |
$disabled = apply_filters( 'tribe_tickets_price_disabled', false, $ticket_id );
|
@@ -118,4 +118,4 @@ if ( ! isset( $ticket_id ) ) {
|
|
118 |
<p class="description ticket_form_right"><?php echo $sale_price_desc; ?></p>
|
119 |
</div>
|
120 |
<?php endif; ?>
|
121 |
-
</div>
|
3 |
if ( ! isset( $post_id ) ) {
|
4 |
$post_id = get_the_ID();
|
5 |
}
|
6 |
+
$validation_attrs = [
|
7 |
+
'data-validation-error="' . esc_attr( sprintf( _x( '%s price must be greater than zero.', 'ticket price validation error', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_price_validation_error' ) ) ) . '"'
|
8 |
+
];
|
9 |
|
10 |
if ( ! isset( $ticket_id ) ) {
|
11 |
$provider = null;
|
18 |
$provider = tribe_tickets_get_ticket_provider( $ticket_id );
|
19 |
$is_paypal_ticket = $provider instanceof Tribe__Tickets__Commerce__PayPal__Main;
|
20 |
|
21 |
+
$description_string = sprintf( _x( 'Leave blank for free %s', 'price description', 'event-tickets' ), tribe_get_ticket_label_singular( 'price_description' ) );
|
22 |
$description_string = esc_html( apply_filters( 'tribe_tickets_price_description', $description_string, $ticket_id ) );
|
23 |
$price_description = $is_paypal_ticket ? '' : $description_string;
|
24 |
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
+
* Filters whether we should disable the ticket - separate from tribe-dependency.
|
33 |
*
|
34 |
* @since 4.10.8
|
35 |
*
|
36 |
+
* @param boolean $disabled The boolean value tested against
|
37 |
* @param WP_Post|int $ticket_id The current ticket object or its ID
|
38 |
*/
|
39 |
$disabled = apply_filters( 'tribe_tickets_price_disabled', false, $ticket_id );
|
118 |
<p class="description ticket_form_right"><?php echo $sale_price_desc; ?></p>
|
119 |
</div>
|
120 |
<?php endif; ?>
|
121 |
+
</div>
|
src/admin-views/editor/list-row.php
CHANGED
@@ -40,7 +40,7 @@ if (
|
|
40 |
|
41 |
?>
|
42 |
<tr class="<?php echo esc_attr( $provider ); ?> is-expanded" data-ticket-order-id="order_<?php echo esc_attr( $ticket->ID ); ?>" data-ticket-type-id="<?php echo esc_attr( $ticket->ID ); ?>">
|
43 |
-
<td class="column-primary ticket_name <?php echo esc_attr( $provider ); ?>" data-label="<?php
|
44 |
<span class="dashicons dashicons-screenoptions tribe-handle"></span>
|
45 |
<input
|
46 |
type="hidden"
|
@@ -104,7 +104,11 @@ if (
|
|
104 |
"<button data-provider='%s' data-ticket-id='%s' title='%s' class='ticket_edit_button'><span class='ticket_edit_text'>%s</span></a>",
|
105 |
esc_attr( $ticket->provider_class ),
|
106 |
esc_attr( $ticket->ID ),
|
107 |
-
esc_attr( sprintf(
|
|
|
|
|
|
|
|
|
108 |
esc_html( $ticket->name )
|
109 |
);
|
110 |
?>
|
40 |
|
41 |
?>
|
42 |
<tr class="<?php echo esc_attr( $provider ); ?> is-expanded" data-ticket-order-id="order_<?php echo esc_attr( $ticket->ID ); ?>" data-ticket-type-id="<?php echo esc_attr( $ticket->ID ); ?>">
|
43 |
+
<td class="column-primary ticket_name <?php echo esc_attr( $provider ); ?>" data-label="<?php echo esc_attr( sprintf( _x( '%s Type:', 'ticket type label', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_type_label' ) ) ); ?>">
|
44 |
<span class="dashicons dashicons-screenoptions tribe-handle"></span>
|
45 |
<input
|
46 |
type="hidden"
|
104 |
"<button data-provider='%s' data-ticket-id='%s' title='%s' class='ticket_edit_button'><span class='ticket_edit_text'>%s</span></a>",
|
105 |
esc_attr( $ticket->provider_class ),
|
106 |
esc_attr( $ticket->ID ),
|
107 |
+
esc_attr( sprintf(
|
108 |
+
_x( '%s ID: %d', 'ticket ID title attribute', 'event-tickets' ),
|
109 |
+
tribe_get_ticket_label_singular( 'ticket_id_title_attribute' ),
|
110 |
+
$ticket->ID
|
111 |
+
) ),
|
112 |
esc_html( $ticket->name )
|
113 |
);
|
114 |
?>
|
src/admin-views/editor/list-table.php
CHANGED
@@ -27,7 +27,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
27 |
<table id="tribe_ticket_list_table" class="tribe-tickets-editor-table eventtable ticket_list eventForm widefat fixed">
|
28 |
<thead>
|
29 |
<tr class="table-header">
|
30 |
-
<th class="ticket_name column-primary"><?php
|
31 |
<?php
|
32 |
/**
|
33 |
* Allows for the insertion of additional columns into the ticket table header
|
@@ -78,4 +78,4 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
78 |
|
79 |
<?php if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) : ?>
|
80 |
</div>
|
81 |
-
<?php endif;
|
27 |
<table id="tribe_ticket_list_table" class="tribe-tickets-editor-table eventtable ticket_list eventForm widefat fixed">
|
28 |
<thead>
|
29 |
<tr class="table-header">
|
30 |
+
<th class="ticket_name column-primary"><?php echo esc_html( tribe_get_ticket_label_plural( basename( __FILE__ ) ) ); ?></th>
|
31 |
<?php
|
32 |
/**
|
33 |
* Allows for the insertion of additional columns into the ticket table header
|
78 |
|
79 |
<?php if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) : ?>
|
80 |
</div>
|
81 |
+
<?php endif;
|
src/admin-views/editor/panel/list.php
CHANGED
@@ -63,15 +63,15 @@ $add_new_ticket_label = count( $ticket_providing_modules ) > 0
|
|
63 |
aria-label="<?php echo $add_new_ticket_label ?>"
|
64 |
"<?php echo disabled( count( $ticket_providing_modules ) === 0 ) ?>"
|
65 |
>
|
66 |
-
<?php
|
67 |
</button>
|
68 |
|
69 |
<button
|
70 |
id="rsvp_form_toggle"
|
71 |
class="button-secondary ticket_form_toggle tribe-button-icon tribe-button-icon-plus"
|
72 |
-
aria-label="<?php
|
73 |
>
|
74 |
-
<?php
|
75 |
</button>
|
76 |
|
77 |
|
@@ -102,4 +102,4 @@ $add_new_ticket_label = count( $ticket_providing_modules ) > 0
|
|
102 |
do_action( 'tribe_events_tickets_after_new_ticket_panel', $post_id );
|
103 |
?>
|
104 |
|
105 |
-
</div>
|
63 |
aria-label="<?php echo $add_new_ticket_label ?>"
|
64 |
"<?php echo disabled( count( $ticket_providing_modules ) === 0 ) ?>"
|
65 |
>
|
66 |
+
<?php echo esc_html( sprintf( _x( 'New %s', 'admin editor panel list button label', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'admin_editor_panel_list_button_label' ) ) ); ?>
|
67 |
</button>
|
68 |
|
69 |
<button
|
70 |
id="rsvp_form_toggle"
|
71 |
class="button-secondary ticket_form_toggle tribe-button-icon tribe-button-icon-plus"
|
72 |
+
aria-label="<?php echo esc_attr( sprintf( _x( 'Add a new %s', 'RSVP form toggle button label', 'event-tickets' ), tribe_get_rsvp_label_singular( 'rsvp_form_toggle_button_label' ) ) ); ?>"
|
73 |
>
|
74 |
+
<?php echo esc_html( sprintf( _x( 'New %s', 'RSVP form toggle button text', 'event-tickets' ), tribe_get_rsvp_label_singular( 'rsvp_form_toggle_button_text' ) ) ); ?>
|
75 |
</button>
|
76 |
|
77 |
|
102 |
do_action( 'tribe_events_tickets_after_new_ticket_panel', $post_id );
|
103 |
?>
|
104 |
|
105 |
+
</div>
|
src/admin-views/editor/panel/settings.php
CHANGED
@@ -11,7 +11,7 @@ if ( ! empty( $header_id ) ) {
|
|
11 |
?>
|
12 |
|
13 |
<div id="tribe_panel_settings" class="ticket_panel panel_settings" aria-hidden="true" >
|
14 |
-
<h4><?php
|
15 |
|
16 |
<section class="settings_main">
|
17 |
<?php
|
@@ -19,6 +19,7 @@ if ( ! empty( $header_id ) ) {
|
|
19 |
* Allows for the insertion of additional elements into the ticket settings admin panel above the ticket table
|
20 |
*
|
21 |
* @param int Post ID
|
|
|
22 |
* @since 4.6
|
23 |
*/
|
24 |
do_action( 'tribe_events_tickets_settings_content_before', $post_id );
|
@@ -38,9 +39,9 @@ if ( ! empty( $header_id ) ) {
|
|
38 |
<section id="tribe-tickets-image">
|
39 |
<div class="tribe-tickets-image-upload">
|
40 |
<div class="input_block">
|
41 |
-
<span class="ticket_form_label tribe-strong-label"><?php
|
42 |
<p class="description">
|
43 |
-
<?php
|
44 |
</p>
|
45 |
</div>
|
46 |
<input
|
11 |
?>
|
12 |
|
13 |
<div id="tribe_panel_settings" class="ticket_panel panel_settings" aria-hidden="true" >
|
14 |
+
<h4><?php echo esc_html( sprintf( _x( '%s Settings', 'meta box ticket form heading', 'event-tickets' ), tribe_get_ticket_label_singular( 'meta_box_ticket_form_heading' ) ) ); ?></h4>
|
15 |
|
16 |
<section class="settings_main">
|
17 |
<?php
|
19 |
* Allows for the insertion of additional elements into the ticket settings admin panel above the ticket table
|
20 |
*
|
21 |
* @param int Post ID
|
22 |
+
*
|
23 |
* @since 4.6
|
24 |
*/
|
25 |
do_action( 'tribe_events_tickets_settings_content_before', $post_id );
|
39 |
<section id="tribe-tickets-image">
|
40 |
<div class="tribe-tickets-image-upload">
|
41 |
<div class="input_block">
|
42 |
+
<span class="ticket_form_label tribe-strong-label"><?php echo esc_html( sprintf( _x( '%s header image:', 'ticket image upload label', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_image_upload_label' ) ) ); ?></span>
|
43 |
<p class="description">
|
44 |
+
<?php echo esc_html( sprintf( _x( 'Select an image from your Media Library to display on emailed %s. For best results, use a .jpg, .png, or .gif at least 1160px wide.', 'ticket image upload label description', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'ticket_image_upload_label_description' ) ) ); ?>
|
45 |
</p>
|
46 |
</div>
|
47 |
<input
|
src/admin-views/editor/panel/ticket.php
CHANGED
@@ -50,7 +50,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
50 |
data-depends="#ticket_id"
|
51 |
data-condition-is-empty
|
52 |
>
|
53 |
-
<?php
|
54 |
</h4>
|
55 |
<h4
|
56 |
id="ticket_title_edit"
|
@@ -58,7 +58,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
58 |
data-depends="#ticket_id"
|
59 |
data-condition-is-not-empty
|
60 |
>
|
61 |
-
<?php
|
62 |
</h4>
|
63 |
</div>
|
64 |
<div
|
@@ -72,7 +72,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
72 |
data-depends="#ticket_id"
|
73 |
data-condition-is-empty
|
74 |
>
|
75 |
-
<?php
|
76 |
</h4>
|
77 |
<h4
|
78 |
id="rsvp_title_edit"
|
@@ -80,7 +80,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
80 |
data-depends="#ticket_id"
|
81 |
data-condition-is-not-empty
|
82 |
>
|
83 |
-
<?php
|
84 |
</h4>
|
85 |
</div>
|
86 |
<section id="ticket_form_main" class="main">
|
@@ -94,9 +94,13 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
94 |
size='25'
|
95 |
value="<?php echo esc_attr( $ticket ? $ticket->name : null ); ?>"
|
96 |
data-validation-is-required
|
97 |
-
data-validation-error="<?php
|
98 |
/>
|
99 |
-
<span class="tribe_soft_note ticket_form_right"><?php
|
|
|
|
|
|
|
|
|
100 |
</div>
|
101 |
<fieldset id="tribe_ticket_provider_wrapper" class="input_block" aria-hidden="true" >
|
102 |
<legend class="ticket_form_label"><?php esc_html_e( 'Sell using:', 'event-tickets' ); ?></legend>
|
@@ -137,9 +141,9 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
137 |
</section>
|
138 |
|
139 |
<div class="accordion">
|
140 |
-
<?php tribe( 'tickets.admin.views' )->template( 'editor/fieldset/advanced',
|
141 |
|
142 |
-
<?php tribe( 'tickets.admin.views' )->template( 'editor/fieldset/history',
|
143 |
|
144 |
<?php
|
145 |
/**
|
@@ -178,7 +182,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
178 |
id="ticket_form_save"
|
179 |
class="button-primary tribe-dependent tribe-validation-submit"
|
180 |
name="ticket_form_save"
|
181 |
-
value="<?php
|
182 |
data-depends="#Tribe__Tickets__RSVP_radio"
|
183 |
data-condition-is-not-checked
|
184 |
/>
|
@@ -187,7 +191,7 @@ $default_provider = Tribe__Tickets__Tickets::get_event_ticket_provider( $post_id
|
|
187 |
id="rsvp_form_save"
|
188 |
class="button-primary tribe-dependent tribe-validation-submit"
|
189 |
name="ticket_form_save"
|
190 |
-
value="<?php
|
191 |
data-depends="#Tribe__Tickets__RSVP_radio"
|
192 |
data-condition-is-checked
|
193 |
/>
|
50 |
data-depends="#ticket_id"
|
51 |
data-condition-is-empty
|
52 |
>
|
53 |
+
<?php echo esc_html( sprintf( _x( 'Add new %s', 'admin add new ticket panel heading', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'admin_add_new_ticket_panel_heading' ) ) ); ?>
|
54 |
</h4>
|
55 |
<h4
|
56 |
id="ticket_title_edit"
|
58 |
data-depends="#ticket_id"
|
59 |
data-condition-is-not-empty
|
60 |
>
|
61 |
+
<?php echo esc_html( sprintf( _x( 'Edit %s', 'admin edit ticket panel heading', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'admin_edit_ticket_panel_heading' ) ) ); ?>
|
62 |
</h4>
|
63 |
</div>
|
64 |
<div
|
72 |
data-depends="#ticket_id"
|
73 |
data-condition-is-empty
|
74 |
>
|
75 |
+
<?php echo esc_html( sprintf( _x( 'Add new %s', 'admin add new ticket panel heading', 'event-tickets' ), tribe_get_rsvp_label_singular( 'admin_add_new_ticket_panel_heading' ) ) ); ?>
|
76 |
</h4>
|
77 |
<h4
|
78 |
id="rsvp_title_edit"
|
80 |
data-depends="#ticket_id"
|
81 |
data-condition-is-not-empty
|
82 |
>
|
83 |
+
<?php echo esc_html( sprintf( _x( 'Edit %s', 'admin edit ticket panel heading', 'event-tickets' ), tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_heading' ) ) ); ?>
|
84 |
</h4>
|
85 |
</div>
|
86 |
<section id="ticket_form_main" class="main">
|
94 |
size='25'
|
95 |
value="<?php echo esc_attr( $ticket ? $ticket->name : null ); ?>"
|
96 |
data-validation-is-required
|
97 |
+
data-validation-error="<?php echo esc_attr( sprintf( _x( '%s type is a required field', 'admin edit ticket panel error', 'event-tickets' ), tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_error' ) ) ); ?>"
|
98 |
/>
|
99 |
+
<span class="tribe_soft_note ticket_form_right"><?php echo esc_html( sprintf(
|
100 |
+
_x( '%1$s type name shows on the front end and emailed %2$s', 'admin edit ticket panel note', 'event-tickets' ),
|
101 |
+
tribe_get_rsvp_label_singular( 'admin_edit_ticket_panel_note' ),
|
102 |
+
tribe_get_ticket_label_plural_lowercase( 'admin_edit_ticket_panel_note' )
|
103 |
+
) ); ?></span>
|
104 |
</div>
|
105 |
<fieldset id="tribe_ticket_provider_wrapper" class="input_block" aria-hidden="true" >
|
106 |
<legend class="ticket_form_label"><?php esc_html_e( 'Sell using:', 'event-tickets' ); ?></legend>
|
141 |
</section>
|
142 |
|
143 |
<div class="accordion">
|
144 |
+
<?php tribe( 'tickets.admin.views' )->template( 'editor/fieldset/advanced', [ 'post_id' => $post_id, 'ticket_id' => $ticket_id ] ); ?>
|
145 |
|
146 |
+
<?php tribe( 'tickets.admin.views' )->template( 'editor/fieldset/history', [ 'post_id' => $post_id, 'ticket_id' => $ticket_id ] ); ?>
|
147 |
|
148 |
<?php
|
149 |
/**
|
182 |
id="ticket_form_save"
|
183 |
class="button-primary tribe-dependent tribe-validation-submit"
|
184 |
name="ticket_form_save"
|
185 |
+
value="<?php echo esc_attr( sprintf( _x( 'Save %s', 'meta box ticket form button text', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'meta_box_ticket_form_button_text' ) ) ); ?>"
|
186 |
data-depends="#Tribe__Tickets__RSVP_radio"
|
187 |
data-condition-is-not-checked
|
188 |
/>
|
191 |
id="rsvp_form_save"
|
192 |
class="button-primary tribe-dependent tribe-validation-submit"
|
193 |
name="ticket_form_save"
|
194 |
+
value="<?php echo esc_attr( sprintf( _x( 'Save %s', 'RSVP form save value', 'event-tickets' ), tribe_get_rsvp_label_singular( 'form_save_value' ) ) ); ?>"
|
195 |
data-depends="#Tribe__Tickets__RSVP_radio"
|
196 |
data-condition-is-checked
|
197 |
/>
|
src/admin-views/meta-box.php
CHANGED
@@ -28,7 +28,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
28 |
?>
|
29 |
<tr>
|
30 |
<td colspan="2" class="tribe_sectionheader updated">
|
31 |
-
<p class="error-message"><?php
|
32 |
</td>
|
33 |
</tr>
|
34 |
<?php
|
@@ -39,7 +39,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
39 |
<table class="eventtable ticket_list eventForm">
|
40 |
<tr class="tribe-tickets-image-upload">
|
41 |
<td>
|
42 |
-
<?php
|
43 |
<p class="description"><?php esc_html_e( 'The maximum image size in the email will be 580px wide by any height, and then scaled for mobile. If you would like "retina" support use an image sized to 1160px wide.', 'event-tickets' ); ?></p>
|
44 |
</td>
|
45 |
<td>
|
@@ -95,7 +95,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
95 |
/**
|
96 |
* Fired to allow for the insertion of additional content into the ticket admin form before the tickets listing
|
97 |
*
|
98 |
-
* @param Post ID
|
99 |
*/
|
100 |
do_action( 'tribe_events_tickets_metabox_pre', get_the_ID() ); ?>
|
101 |
|
@@ -109,7 +109,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
109 |
<tr>
|
110 |
<td colspan="2" class="tribe_sectionheader">
|
111 |
<a href="#" class="button-secondary"
|
112 |
-
id="ticket_form_toggle"><?php
|
113 |
</td>
|
114 |
</tr>
|
115 |
<tr id="ticket_form" class="ticket_form">
|
@@ -142,14 +142,14 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
142 |
</td>
|
143 |
</tr>
|
144 |
<tr class="ticket">
|
145 |
-
<td><label for="ticket_name"><?php
|
146 |
<td>
|
147 |
<input type='text' id='ticket_name' name='ticket_name' class="ticket_field" size='25' value='' />
|
148 |
</td>
|
149 |
</tr>
|
150 |
<tr class="ticket">
|
151 |
<td><label
|
152 |
-
for="ticket_description"><?php
|
153 |
</td>
|
154 |
<td>
|
155 |
<textarea rows="5" cols="40" name="ticket_description" class="ticket_field"
|
@@ -227,7 +227,7 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
227 |
/**
|
228 |
* Fired to allow for the insertion of additional content into the ticket admin form
|
229 |
*
|
230 |
-
* @var Post ID
|
231 |
* @var null Ticket ID
|
232 |
*/
|
233 |
do_action( 'tribe_events_tickets_metabox_advanced', get_the_ID(), null ); ?>
|
@@ -236,11 +236,11 @@ $modules = Tribe__Tickets__Tickets::modules();
|
|
236 |
<td></td>
|
237 |
<td>
|
238 |
<input type="hidden" name="ticket_id" id="ticket_id" class="ticket_field" value="" />
|
239 |
-
<input type="button" id="ticket_form_save" name="ticket_form_save" value="<?php
|
240 |
<input type="button" id="ticket_form_cancel" name="ticket_form_cancel" value="<?php esc_attr_e( 'Cancel', 'event-tickets' ); ?>" class="button-secondary" />
|
241 |
</td>
|
242 |
</tr>
|
243 |
</table>
|
244 |
</td>
|
245 |
</tr>
|
246 |
-
</table>
|
28 |
?>
|
29 |
<tr>
|
30 |
<td colspan="2" class="tribe_sectionheader updated">
|
31 |
+
<p class="error-message"><?php echo esc_html( sprintf( _x( 'This event was created using Community Events. Are you sure you want to sell %s for it?', 'meta box ticket form CE warning', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'meta_box_ticket_form_ce_warning' ) ) ); ?></p>
|
32 |
</td>
|
33 |
</tr>
|
34 |
<?php
|
39 |
<table class="eventtable ticket_list eventForm">
|
40 |
<tr class="tribe-tickets-image-upload">
|
41 |
<td>
|
42 |
+
<?php echo esc_html( sprintf( _x( 'Upload image for the %s header.', 'meta box ticket form image', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'meta_box_ticket_form_image' ) ) ); ?>
|
43 |
<p class="description"><?php esc_html_e( 'The maximum image size in the email will be 580px wide by any height, and then scaled for mobile. If you would like "retina" support use an image sized to 1160px wide.', 'event-tickets' ); ?></p>
|
44 |
</td>
|
45 |
<td>
|
95 |
/**
|
96 |
* Fired to allow for the insertion of additional content into the ticket admin form before the tickets listing
|
97 |
*
|
98 |
+
* @param int Post ID
|
99 |
*/
|
100 |
do_action( 'tribe_events_tickets_metabox_pre', get_the_ID() ); ?>
|
101 |
|
109 |
<tr>
|
110 |
<td colspan="2" class="tribe_sectionheader">
|
111 |
<a href="#" class="button-secondary"
|
112 |
+
id="ticket_form_toggle"><?php echo esc_html( sprintf( _x( 'Add new %s', 'meta box ticket form toggle', 'event-tickets' ), tribe_get_ticket_label_singular( 'meta_box_ticket_form_toggle' ) ) ); ?></a>
|
113 |
</td>
|
114 |
</tr>
|
115 |
<tr id="ticket_form" class="ticket_form">
|
142 |
</td>
|
143 |
</tr>
|
144 |
<tr class="ticket">
|
145 |
+
<td><label for="ticket_name"><?php echo esc_html( sprintf( _x( '%s Name:', 'meta box ticket form', 'event-tickets' ), tribe_get_ticket_label_singular( 'meta_box_ticket_form' ) ) ); ?></label></td>
|
146 |
<td>
|
147 |
<input type='text' id='ticket_name' name='ticket_name' class="ticket_field" size='25' value='' />
|
148 |
</td>
|
149 |
</tr>
|
150 |
<tr class="ticket">
|
151 |
<td><label
|
152 |
+
for="ticket_description"><?php echo esc_html( sprintf( _x( '%s Description:', 'meta box ticket form', 'event-tickets' ), tribe_get_ticket_label_singular( 'meta_box_ticket_form' ) ) ); ?></label>
|
153 |
</td>
|
154 |
<td>
|
155 |
<textarea rows="5" cols="40" name="ticket_description" class="ticket_field"
|
227 |
/**
|
228 |
* Fired to allow for the insertion of additional content into the ticket admin form
|
229 |
*
|
230 |
+
* @var int Post ID
|
231 |
* @var null Ticket ID
|
232 |
*/
|
233 |
do_action( 'tribe_events_tickets_metabox_advanced', get_the_ID(), null ); ?>
|
236 |
<td></td>
|
237 |
<td>
|
238 |
<input type="hidden" name="ticket_id" id="ticket_id" class="ticket_field" value="" />
|
239 |
+
<input type="button" id="ticket_form_save" name="ticket_form_save" value="<?php echo esc_attr( sprintf( _x( 'Save this %s', 'meta box form save button', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'meta_box_form_save_button' ) ) ); ?>" class="button-primary" />
|
240 |
<input type="button" id="ticket_form_cancel" name="ticket_form_cancel" value="<?php esc_attr_e( 'Cancel', 'event-tickets' ); ?>" class="button-secondary" />
|
241 |
</td>
|
242 |
</tr>
|
243 |
</table>
|
244 |
</td>
|
245 |
</tr>
|
246 |
+
</table>
|
src/admin-views/privacy.php
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Event Tickets Privacy
|
|
|
|
|
4 |
*/
|
5 |
|
6 |
// Don't load directly
|
@@ -22,20 +24,41 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
22 |
|
23 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'Through the usage of Event Tickets, Event Tickets Plus, and Community Tickets, information may be collected and stored within your website’s database.', 'event-tickets' ); ?></p>
|
24 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
25 |
-
<p><?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
<ol>
|
28 |
-
<li><?php
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
</ol>
|
33 |
|
34 |
-
<p><?php
|
35 |
|
36 |
<h3><?php esc_html_e( 'API Keys', 'event-tickets' ); ?></h3>
|
37 |
|
38 |
-
<p class="privacy-policy-tutorial"><?php esc_html_e( '
|
39 |
|
40 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
41 |
|
@@ -47,7 +70,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
47 |
|
48 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'All information (data) is retained in the local database indefinitely, unless otherwise deleted.', 'event-tickets' ); ?></p>
|
49 |
|
50 |
-
<p class="privacy-policy-tutorial"><?php esc_html_e( 'Certain data may be exported or removed upon users request via the existing Exporter or Eraser. Please note, however, that several
|
51 |
|
52 |
<h3 class="privacy-policy-tutorial"><?php esc_html_e( 'Where We Send Your Data', 'event-tickets' ); ?></h3>
|
53 |
|
@@ -55,4 +78,4 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
55 |
|
56 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'If you have extended our plugin(s) to send data to a third-party service such as Eventbrite, Google Maps, or PayPal, user information may be passed to these external services. These services may be located abroad.', 'event-tickets' ); ?></p>
|
57 |
|
58 |
-
</div>
|
1 |
<?php
|
2 |
/**
|
3 |
* Event Tickets Privacy
|
4 |
+
*
|
5 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
6 |
*/
|
7 |
|
8 |
// Don't load directly
|
24 |
|
25 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'Through the usage of Event Tickets, Event Tickets Plus, and Community Tickets, information may be collected and stored within your website’s database.', 'event-tickets' ); ?></p>
|
26 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
27 |
+
<p><?php echo esc_html(
|
28 |
+
sprintf(
|
29 |
+
__( 'If you create, submit, import, save, or publish event %1$s information, as well as obtain %2$s or purchase %3$s to events, such information is retained in the local database:', 'event-tickets' ),
|
30 |
+
tribe_get_ticket_label_singular_lowercase( basename( __FILE__ ) ),
|
31 |
+
tribe_get_rsvp_label_plural( basename( __FILE__ ) ),
|
32 |
+
tribe_get_ticket_label_plural_lowercase( basename( __FILE__ ) )
|
33 |
+
)
|
34 |
+
); ?></p>
|
35 |
|
36 |
<ol>
|
37 |
+
<li><?php echo esc_html(
|
38 |
+
sprintf(
|
39 |
+
__( 'Attendees information (%1$s and %2$s): name and email address', 'event-tickets' ),
|
40 |
+
tribe_get_rsvp_label_plural( basename( __FILE__ ) ),
|
41 |
+
tribe_get_ticket_label_plural( basename( __FILE__ ) )
|
42 |
+
)
|
43 |
+
); ?></li>
|
44 |
+
<li><?php echo esc_html(
|
45 |
+
sprintf(
|
46 |
+
__( '%1$s information (%2$s and %3$s): name, email address, and %4$s number/SKU (via check-in page)', 'event-tickets' ),
|
47 |
+
tribe_get_ticket_label_singular( basename( __FILE__ ) ),
|
48 |
+
tribe_get_rsvp_label_plural( basename( __FILE__ ) ),
|
49 |
+
tribe_get_ticket_label_plural( basename( __FILE__ ) ),
|
50 |
+
tribe_get_ticket_label_singular_lowercase( basename( __FILE__ ) )
|
51 |
+
)
|
52 |
+
); ?></li>
|
53 |
+
<li><?php echo esc_html( sprintf( __( '%s purchaser information: name and email address', 'event-tickets' ), tribe_get_ticket_label_singular( basename( __FILE__ ) ) ) ); ?></li>
|
54 |
+
<li><?php echo esc_html( sprintf( __( '%s purchaser billing address, which is collected through the use of WooCommerce, Easy Digital Downloads, or PayPal', 'event-tickets' ), tribe_get_ticket_label_singular( basename( __FILE__ ) ) ) ); ?></li>
|
55 |
</ol>
|
56 |
|
57 |
+
<p><?php echo esc_html( sprintf( __( 'Please note: The website owner can collect nearly any Attendee Information requested from %s buyers by creating a custom registration form.', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( basename( __FILE__ ) ) ) ); ?></p>
|
58 |
|
59 |
<h3><?php esc_html_e( 'API Keys', 'event-tickets' ); ?></h3>
|
60 |
|
61 |
+
<p class="privacy-policy-tutorial"><?php esc_html_e( 'Event Tickets suite offers the use of third-party API keys. The primary functions are to enhance the features we\'ve built in, some of which use Google Maps and PayPal. These API keys are not supplied by Modern Tribe.', 'event-tickets' ); ?></p>
|
62 |
|
63 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
64 |
|
70 |
|
71 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'All information (data) is retained in the local database indefinitely, unless otherwise deleted.', 'event-tickets' ); ?></p>
|
72 |
|
73 |
+
<p class="privacy-policy-tutorial"><?php esc_html_e( 'Certain data may be exported or removed upon users request via the existing Exporter or Eraser. Please note, however, that several "edge cases" exist in which we are unable to perfect the gathering and export of all data for your end users. We suggest running a search in your local database, as well as within the WordPress Dashboard, in order to identify all data collected and stored for your specific user requests.', 'event-tickets' ); ?></p>
|
74 |
|
75 |
<h3 class="privacy-policy-tutorial"><?php esc_html_e( 'Where We Send Your Data', 'event-tickets' ); ?></h3>
|
76 |
|
78 |
|
79 |
<p class="privacy-policy-tutorial"><?php esc_html_e( 'If you have extended our plugin(s) to send data to a third-party service such as Eventbrite, Google Maps, or PayPal, user information may be passed to these external services. These services may be located abroad.', 'event-tickets' ); ?></p>
|
80 |
|
81 |
+
</div>
|
src/admin-views/ticket-type-history.php
CHANGED
@@ -7,7 +7,7 @@ $entry_list = $history->get_entries();
|
|
7 |
if ( ! empty( $entry_list ) ) : ?>
|
8 |
<div class="input_block ticket_advanced ticket_advanced_<?php echo esc_attr( $provider ); ?> history">
|
9 |
|
10 |
-
<label for="ticket_history" class="ticket_form_label ticket_form_left"> <?php
|
11 |
|
12 |
<div class="ticket_form_right">
|
13 |
<a href="#" class="toggle-history">
|
7 |
if ( ! empty( $entry_list ) ) : ?>
|
8 |
<div class="input_block ticket_advanced ticket_advanced_<?php echo esc_attr( $provider ); ?> history">
|
9 |
|
10 |
+
<label for="ticket_history" class="ticket_form_label ticket_form_left"> <?php echo esc_html( sprintf( _x( '%s history:', 'ticket type history', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_type_history' ) ) ); ?> </label>
|
11 |
|
12 |
<div class="ticket_form_right">
|
13 |
<a href="#" class="toggle-history">
|
src/admin-views/tribe-options-tickets.php
CHANGED
@@ -5,14 +5,16 @@
|
|
5 |
*
|
6 |
* @since 4.7
|
7 |
* @since 4.10.2 Update tooltip text for Confirmation email sender address and allow it to be saved as empty
|
8 |
-
* @
|
|
|
|
|
9 |
*/
|
10 |
-
$post_types_to_ignore = apply_filters( 'tribe_tickets_settings_post_type_ignore_list',
|
11 |
'attachment',
|
12 |
-
|
13 |
|
14 |
-
$all_post_type_objects = get_post_types(
|
15 |
-
$all_post_types =
|
16 |
|
17 |
foreach ( $all_post_type_objects as $post_type => $post_type_object ) {
|
18 |
$should_ignore = false;
|
@@ -33,7 +35,7 @@ foreach ( $all_post_type_objects as $post_type => $post_type_object ) {
|
|
33 |
|
34 |
$all_post_types = apply_filters( 'tribe_tickets_settings_post_types', $all_post_types );
|
35 |
|
36 |
-
$options = get_option( Tribe__Main::OPTIONNAME,
|
37 |
|
38 |
|
39 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
@@ -49,106 +51,111 @@ $is_tickets_plus_available = array_key_exists( $tickets_plus_plugin, $available_
|
|
49 |
*
|
50 |
* @param array $ticket_systems
|
51 |
*/
|
52 |
-
$ticket_addons = apply_filters( 'tribe_tickets_settings_systems_supporting_login_requirements',
|
53 |
-
'event-tickets_rsvp' =>
|
54 |
-
'event-tickets_all' =>
|
55 |
-
|
|
|
56 |
|
57 |
-
$tickets_fields =
|
58 |
-
'tribe-form-content-start' =>
|
59 |
'type' => 'html',
|
60 |
'html' => '<div class="tribe-settings-form-wrap">',
|
61 |
-
|
62 |
-
'tickets-title' =>
|
63 |
'type' => 'html',
|
64 |
-
'html' => '<h3>' .
|
65 |
-
|
66 |
-
'ticket-enabled-post-types' =>
|
67 |
'type' => 'checkbox_list',
|
68 |
-
'label' =>
|
69 |
-
// only set the default to tribe_events if the ticket-
|
70 |
'default' => array_key_exists( 'ticket-enabled-post-types', $options ) ? false : 'tribe_events',
|
71 |
'options' => $all_post_types,
|
72 |
'can_be_empty' => true,
|
73 |
'validation_type' => 'options_multi',
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
|
78 |
/**
|
79 |
* If The Events Calendar is active let's add an option to control the position
|
80 |
* of the ticket forms in the events view.
|
81 |
*/
|
82 |
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
83 |
-
$ticket_form_location_options =
|
84 |
'tribe_events_single_event_after_the_meta' => __( 'Below the event details [default]', 'event-tickets' ),
|
85 |
'tribe_events_single_event_before_the_meta' => __( 'Above the event details', 'event-tickets' ),
|
86 |
'tribe_events_single_event_after_the_content' => __( 'Below the event description', 'event-tickets' ),
|
87 |
'tribe_events_single_event_before_the_content' => __( 'Above the event description', 'event-tickets' ),
|
88 |
-
|
89 |
|
90 |
-
$tickets_fields['ticket-rsvp-form-location'] =
|
91 |
'type' => 'dropdown',
|
92 |
-
'label' =>
|
93 |
'tooltip' => esc_html__( 'This setting only impacts events made with the classic editor.', 'event-tickets' ),
|
94 |
'options' => $ticket_form_location_options,
|
95 |
'validation_type' => 'options',
|
96 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
97 |
'default' => reset( $ticket_form_location_options ),
|
98 |
-
|
99 |
|
100 |
-
$tickets_fields['ticket-commerce-form-location'] =
|
101 |
'type' => 'dropdown',
|
102 |
-
'label' =>
|
103 |
'tooltip' => esc_html__( 'This setting only impacts events made with the classic editor.', 'event-tickets' ),
|
104 |
'options' => $ticket_form_location_options,
|
105 |
'validation_type' => 'options',
|
106 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
107 |
'default' => reset( $ticket_form_location_options ),
|
108 |
-
|
109 |
|
110 |
-
$tickets_fields['ticket-display-tickets-left-threshold'] =
|
111 |
'type' => 'text',
|
112 |
-
'label' =>
|
113 |
-
'tooltip' =>
|
114 |
'validation_type' => 'int',
|
115 |
'size' => 'small',
|
116 |
'can_be_empty' => true,
|
117 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
118 |
-
|
119 |
}
|
120 |
|
121 |
-
$tickets_fields = array_merge( $tickets_fields,
|
122 |
-
'ticket-authentication-requirements-heading' =>
|
123 |
'type' => 'html',
|
124 |
'html' => '<h3>' . __( 'Login Requirements', 'event-tickets' ) . '</h3>',
|
125 |
-
|
126 |
-
'ticket-authentication-requirements-advice' =>
|
127 |
'type' => 'html',
|
128 |
-
'html' => '<p>'
|
129 |
-
|
130 |
-
'
|
131 |
-
|
132 |
-
|
133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
'type' => 'checkbox_list',
|
135 |
'options' => $ticket_addons,
|
136 |
'validation_type' => 'options_multi',
|
137 |
'can_be_empty' => true,
|
138 |
-
|
139 |
-
|
140 |
);
|
141 |
|
142 |
-
$tickets_fields['ticket-paypal-heading'] =
|
143 |
'type' => 'html',
|
144 |
'html' => '<h3>' . __( 'Tribe Commerce', 'event-tickets' ) . '</h3>',
|
145 |
-
|
146 |
-
|
147 |
|
148 |
if ( ! $is_tickets_plus_available ) {
|
149 |
$plus_link = sprintf(
|
150 |
'<a href="http://m.tri.be/19zl" target="_blank">%s</a>',
|
151 |
-
__( '
|
152 |
);
|
153 |
|
154 |
$plus_link_2 = sprintf(
|
@@ -157,36 +164,37 @@ if ( ! $is_tickets_plus_available ) {
|
|
157 |
);
|
158 |
|
159 |
$plus_message = sprintf(
|
160 |
-
|
161 |
$plus_link,
|
|
|
162 |
$plus_link_2
|
163 |
);
|
164 |
|
165 |
-
$tickets_fields['ticket-paypal-et-plus-header'] =
|
166 |
'type' => 'html',
|
167 |
'html' => '<p>' . $plus_message . '</p>',
|
168 |
-
|
169 |
}
|
170 |
|
171 |
//@todo clicking this should hide/show the settings
|
172 |
-
$tickets_fields['ticket-paypal-enable'] =
|
173 |
'type' => 'checkbox_bool',
|
174 |
'label' => esc_html__( 'Enable Tribe Commerce ', 'event-tickets' ),
|
175 |
'tooltip' => esc_html__( 'Check this box if you wish to turn on Tribe Commerce functionality', 'event-tickets' ),
|
176 |
'size' => 'medium',
|
177 |
'default' => false,
|
178 |
'validation_type' => 'boolean',
|
179 |
-
'attributes' =>
|
180 |
-
|
181 |
|
182 |
-
$pages = get_pages(
|
183 |
|
184 |
if ( ! empty( $pages ) ) {
|
185 |
$pages = array_combine( wp_list_pluck( $pages, 'ID' ), wp_list_pluck( $pages, 'post_title' ) );
|
186 |
}
|
187 |
|
188 |
// add an empty entry at the start
|
189 |
-
$pages =
|
190 |
$default_page = reset( $pages );
|
191 |
|
192 |
$tpp_success_shortcode = 'tribe-tpp-success';
|
@@ -200,10 +208,7 @@ $paypal_setup_kb_url = class_exists( 'Tribe__Tickets_Plus__Main' )
|
|
200 |
? 'http://m.tri.be/19yk'
|
201 |
: 'http://m.tri.be/19yj';
|
202 |
$paypal_setup_kb_link = '<a href="' . esc_url( $paypal_setup_kb_url ) . '" target="_blank">' . esc_html__( 'these instructions', 'event-tickets' ) . '</a>';
|
203 |
-
$paypal_setup_note = sprintf(
|
204 |
-
esc_html__( 'In order to use Tribe Commerce to sell tickets, you must configure your PayPal account to communicate with your WordPress site. If you need help getting set up, follow %s', 'event-tickets' ),
|
205 |
-
$paypal_setup_kb_link
|
206 |
-
);
|
207 |
|
208 |
$ipn_setup_line = sprintf(
|
209 |
'<span class="clear">%s</span><span class="clear">%s</span>',
|
@@ -214,46 +219,46 @@ $ipn_setup_line = sprintf(
|
|
214 |
)
|
215 |
);
|
216 |
|
217 |
-
$paypal_fields =
|
218 |
-
'ticket-paypal-configure' =>
|
219 |
'type' => 'wrapped_html',
|
220 |
'label' => esc_html__( 'Configure PayPal:', 'event-tickets' ),
|
221 |
'html' => '<p>' . $paypal_setup_note . '</p>',
|
222 |
'validation_type' => 'html',
|
223 |
-
|
224 |
-
'ticket-paypal-email' =>
|
225 |
'type' => 'email',
|
226 |
'label' => esc_html__( 'PayPal email to receive payments:', 'event-tickets' ),
|
227 |
'size' => 'large',
|
228 |
'default' => '',
|
229 |
'validation_type' => 'email',
|
230 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
231 |
-
|
232 |
-
'ticket-paypal-ipn-enabled' =>
|
233 |
'type' => 'radio',
|
234 |
'label' => esc_html__( "Have you enabled instant payment notifications (IPN) in your PayPal account's Selling Tools?", 'event-tickets' ),
|
235 |
-
'options' =>
|
236 |
'yes' => __( 'Yes', 'event-tickets' ),
|
237 |
'no' => __( 'No', 'event-tic->valuekets' ),
|
238 |
-
|
239 |
'size' => 'large',
|
240 |
'default' => 'no',
|
241 |
'validation_type' => 'options',
|
242 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
243 |
-
|
244 |
-
'ticket-paypal-ipn-address-set' =>
|
245 |
'type' => 'radio',
|
246 |
'label' => $ipn_setup_line,
|
247 |
-
'options' =>
|
248 |
'yes' => __( 'Yes', 'event-tickets' ),
|
249 |
'no' => __( 'No', 'event-tickets' ),
|
250 |
-
|
251 |
'size' => 'large',
|
252 |
'default' => 'no',
|
253 |
'validation_type' => 'options',
|
254 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
255 |
-
|
256 |
-
'ticket-paypal-ipn-config-status' =>
|
257 |
'type' => 'wrapped_html',
|
258 |
'html' => sprintf(
|
259 |
'<strong>%1$s <span id="paypal-ipn-config-status" data-status="%2$s">%3$s</span></strong><p class="description"><i>%4$s</i></p>',
|
@@ -266,35 +271,35 @@ $paypal_fields = array(
|
|
266 |
'default' => 'no',
|
267 |
'validation_type' => 'html',
|
268 |
'class' => 'indent light-bordered',
|
269 |
-
|
270 |
-
'ticket-paypal-sandbox' =>
|
271 |
'type' => 'checkbox_bool',
|
272 |
'label' => esc_html__( 'PayPal Sandbox', 'event-tickets' ),
|
273 |
'tooltip' => esc_html__( 'Enables PayPal Sandbox mode for testing.', 'event-tickets' ),
|
274 |
'default' => false,
|
275 |
'validation_type' => 'boolean',
|
276 |
-
|
277 |
-
'ticket-commerce-currency-code' =>
|
278 |
'type' => 'dropdown',
|
279 |
'label' => esc_html__( 'Currency Code', 'event-tickets' ),
|
280 |
'tooltip' => esc_html__( 'The currency that will be used for Tribe Commerce transactions.', 'event-tickets' ),
|
281 |
'default' => 'USD',
|
282 |
'validation_type' => 'options',
|
283 |
'options' => $paypal_currency_code_options,
|
284 |
-
|
285 |
-
'ticket-paypal-stock-handling' =>
|
286 |
'type' => 'radio',
|
287 |
'label' => esc_html__( 'Stock Handling', 'event-tickets' ),
|
288 |
-
'tooltip' =>
|
289 |
'default' => 'on-pending',
|
290 |
'validation_type' => 'options',
|
291 |
-
'options' =>
|
292 |
'on-pending' => esc_html__( 'Decrease available ticket stock as soon as a Pending order is created.', 'event-tickets' ),
|
293 |
'on-complete' => esc_html__( 'Only decrease available ticket stock if an order is confirmed as Completed by PayPal.', 'event-tickets' ),
|
294 |
-
|
295 |
'tooltip_first' => true,
|
296 |
-
|
297 |
-
'ticket-paypal-success-page' =>
|
298 |
'type' => 'dropdown',
|
299 |
'label' => esc_html__( 'Success page', 'event-tickets' ),
|
300 |
'tooltip' => esc_html(
|
@@ -307,39 +312,39 @@ $paypal_fields = array(
|
|
307 |
'validation_type' => 'options',
|
308 |
'options' => $pages,
|
309 |
'required' => true,
|
310 |
-
|
311 |
-
'ticket-paypal-confirmation-email-sender-email' =>
|
312 |
'type' => 'email',
|
313 |
'label' => esc_html__( 'Confirmation email sender address', 'event-tickets' ),
|
314 |
-
'tooltip' =>
|
315 |
'size' => 'medium',
|
316 |
'default' => $current_user->user_email,
|
317 |
'validation_type' => 'email',
|
318 |
'can_be_empty' => true,
|
319 |
-
|
320 |
-
'ticket-paypal-confirmation-email-sender-name' =>
|
321 |
'type' => 'text',
|
322 |
'label' => esc_html__( 'Confirmation email sender name', 'event-tickets' ),
|
323 |
-
'tooltip' =>
|
324 |
'size' => 'medium',
|
325 |
'default' => $current_user->user_nicename,
|
326 |
'validation_callback' => 'is_string',
|
327 |
'validation_type' => 'textarea',
|
328 |
-
|
329 |
-
'ticket-paypal-confirmation-email-subject' =>
|
330 |
'type' => 'text',
|
331 |
'label' => esc_html__( 'Confirmation email subject', 'event-tickets' ),
|
332 |
-
'tooltip' =>
|
333 |
'size' => 'large',
|
334 |
-
'default' =>
|
335 |
'validation_callback' => 'is_string',
|
336 |
'validation_type' => 'textarea',
|
337 |
-
|
338 |
-
|
339 |
|
340 |
if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
|
341 |
$ipn_fields = [
|
342 |
-
'ticket-paypal-notify-history' =>
|
343 |
'type' => 'wrapped_html',
|
344 |
'html' => '<p>' .
|
345 |
sprintf(
|
@@ -350,8 +355,8 @@ if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
|
|
350 |
'size' => 'medium',
|
351 |
'validation_type' => 'html',
|
352 |
'class' => 'indent light-bordered',
|
353 |
-
|
354 |
-
'ticket-paypal-notify-url' =>
|
355 |
'type' => 'text',
|
356 |
'label' => esc_html__( 'IPN Notify URL', 'event-tickets' ),
|
357 |
'tooltip' => sprintf(
|
@@ -360,21 +365,21 @@ if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
|
|
360 |
),
|
361 |
'default' => home_url(),
|
362 |
'validation_type' => 'html',
|
363 |
-
|
364 |
];
|
365 |
|
366 |
$paypal_fields = Tribe__Main::array_insert_after_key( 'ticket-paypal-ipn-config-status', $paypal_fields, $ipn_fields );
|
367 |
}
|
368 |
|
369 |
foreach ( $paypal_fields as $key => &$commerce_field ) {
|
370 |
-
$field_classes = (array) Tribe__Utils__Array::get( $commerce_field, 'class',
|
371 |
array_push( $field_classes, 'tribe-dependent' );
|
372 |
$commerce_field['class'] = implode( ' ', $field_classes );
|
373 |
-
$existing_field_attributes = Tribe__Utils__Array::get( $commerce_field, 'fieldset_attributes',
|
374 |
-
$additional_attributes =
|
375 |
'data-depends' => '#ticket-paypal-enable-input',
|
376 |
'data-condition-is-checked' => '',
|
377 |
-
|
378 |
if ( 'checkbox_bool' === $commerce_field['type'] ) {
|
379 |
$additional_attributes['data-dependency-dont-disable'] = '1';
|
380 |
}
|
@@ -389,12 +394,13 @@ $tickets_fields = array_merge(
|
|
389 |
$paypal_fields
|
390 |
);
|
391 |
|
392 |
-
$tickets_fields = array_merge( $tickets_fields,
|
393 |
-
'tribe-form-content-end' =>
|
394 |
'type' => 'html',
|
395 |
'html' => '</div>',
|
396 |
-
|
397 |
-
|
|
|
398 |
|
399 |
/**
|
400 |
* Filters the fields to be registered in the Events > Settings > Tickets tab.
|
@@ -408,7 +414,7 @@ $tickets_fields = array_merge( $tickets_fields, array(
|
|
408 |
*/
|
409 |
$tickets_fields = apply_filters( 'tribe_tickets_settings_tab_fields', $tickets_fields );
|
410 |
|
411 |
-
$tickets_tab =
|
412 |
'priority' => 20,
|
413 |
'fields' => $tickets_fields,
|
414 |
-
|
5 |
*
|
6 |
* @since 4.7
|
7 |
* @since 4.10.2 Update tooltip text for Confirmation email sender address and allow it to be saved as empty
|
8 |
+
* @since 4.10.9 Use function for text.
|
9 |
+
*
|
10 |
+
* @version TBD
|
11 |
*/
|
12 |
+
$post_types_to_ignore = apply_filters( 'tribe_tickets_settings_post_type_ignore_list', [
|
13 |
'attachment',
|
14 |
+
] );
|
15 |
|
16 |
+
$all_post_type_objects = get_post_types( [ 'public' => true ], 'objects' );
|
17 |
+
$all_post_types = [];
|
18 |
|
19 |
foreach ( $all_post_type_objects as $post_type => $post_type_object ) {
|
20 |
$should_ignore = false;
|
35 |
|
36 |
$all_post_types = apply_filters( 'tribe_tickets_settings_post_types', $all_post_types );
|
37 |
|
38 |
+
$options = get_option( Tribe__Main::OPTIONNAME, [] );
|
39 |
|
40 |
|
41 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
51 |
*
|
52 |
* @param array $ticket_systems
|
53 |
*/
|
54 |
+
$ticket_addons = apply_filters( 'tribe_tickets_settings_systems_supporting_login_requirements', [
|
55 |
+
'event-tickets_rsvp' => sprintf( _x( 'Require users to log in before they %s', 'login requirement setting', 'event-tickets' ), tribe_get_rsvp_label_singular( 'require_login_to_rsvp_setting' ) ),
|
56 |
+
'event-tickets_all' => sprintf( _x( 'Require users to log in before they purchase %s', 'login requirement setting', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'require_login_to_purchase_setting' ) ),
|
57 |
+
]
|
58 |
+
);
|
59 |
|
60 |
+
$tickets_fields = [
|
61 |
+
'tribe-form-content-start' => [
|
62 |
'type' => 'html',
|
63 |
'html' => '<div class="tribe-settings-form-wrap">',
|
64 |
+
],
|
65 |
+
'tickets-title' => [
|
66 |
'type' => 'html',
|
67 |
+
'html' => '<h3>' . esc_html( sprintf( _x( '%s Settings', 'tickets fields settings title', 'event-tickets' ), tribe_get_ticket_label_singular( 'tickets_fields_settings_title' ) ) ) . '</h3>',
|
68 |
+
],
|
69 |
+
'ticket-enabled-post-types' => [
|
70 |
'type' => 'checkbox_list',
|
71 |
+
'label' => esc_html( sprintf( _x( 'Post types that can have %s', 'tickets fields settings enabled post types', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_enabled_post_types' ) ) ),
|
72 |
+
// only set the default to tribe_events if the ticket-enabled-post-types index has never been saved
|
73 |
'default' => array_key_exists( 'ticket-enabled-post-types', $options ) ? false : 'tribe_events',
|
74 |
'options' => $all_post_types,
|
75 |
'can_be_empty' => true,
|
76 |
'validation_type' => 'options_multi',
|
77 |
+
],
|
78 |
+
];
|
|
|
79 |
|
80 |
/**
|
81 |
* If The Events Calendar is active let's add an option to control the position
|
82 |
* of the ticket forms in the events view.
|
83 |
*/
|
84 |
if ( class_exists( 'Tribe__Events__Main' ) ) {
|
85 |
+
$ticket_form_location_options = [
|
86 |
'tribe_events_single_event_after_the_meta' => __( 'Below the event details [default]', 'event-tickets' ),
|
87 |
'tribe_events_single_event_before_the_meta' => __( 'Above the event details', 'event-tickets' ),
|
88 |
'tribe_events_single_event_after_the_content' => __( 'Below the event description', 'event-tickets' ),
|
89 |
'tribe_events_single_event_before_the_content' => __( 'Above the event description', 'event-tickets' ),
|
90 |
+
];
|
91 |
|
92 |
+
$tickets_fields['ticket-rsvp-form-location'] = [
|
93 |
'type' => 'dropdown',
|
94 |
+
'label' => esc_html( sprintf( _x( 'Location of %s form', 'form location setting', 'event-tickets' ), tribe_get_rsvp_label_singular( 'form_location_setting' ) ) ),
|
95 |
'tooltip' => esc_html__( 'This setting only impacts events made with the classic editor.', 'event-tickets' ),
|
96 |
'options' => $ticket_form_location_options,
|
97 |
'validation_type' => 'options',
|
98 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
99 |
'default' => reset( $ticket_form_location_options ),
|
100 |
+
];
|
101 |
|
102 |
+
$tickets_fields['ticket-commerce-form-location'] = [
|
103 |
'type' => 'dropdown',
|
104 |
+
'label' => esc_html( sprintf( _x( 'Location of %s form', 'form location setting', 'event-tickets' ), tribe_get_ticket_label_plural( 'form_location_setting' ) ) ),
|
105 |
'tooltip' => esc_html__( 'This setting only impacts events made with the classic editor.', 'event-tickets' ),
|
106 |
'options' => $ticket_form_location_options,
|
107 |
'validation_type' => 'options',
|
108 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
109 |
'default' => reset( $ticket_form_location_options ),
|
110 |
+
];
|
111 |
|
112 |
+
$tickets_fields['ticket-display-tickets-left-threshold'] = [
|
113 |
'type' => 'text',
|
114 |
+
'label' => esc_html( sprintf( _x( 'Display # %s left threshold', 'tickets remaining threshold label', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'remaining_threshold_setting_label' ) ) ),
|
115 |
+
'tooltip' => esc_html( sprintf( _x( 'If this number is less than the number of %1$s left for sale on your event, this will prevent the "# of %1$s left" text from showing on your website. You can leave this blank if you would like to always show the text.', 'tickets remaining threshold tooltip', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'remaining_threshold_setting_tooltip' ) ) ),
|
116 |
'validation_type' => 'int',
|
117 |
'size' => 'small',
|
118 |
'can_be_empty' => true,
|
119 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
120 |
+
];
|
121 |
}
|
122 |
|
123 |
+
$tickets_fields = array_merge( $tickets_fields, [
|
124 |
+
'ticket-authentication-requirements-heading' => [
|
125 |
'type' => 'html',
|
126 |
'html' => '<h3>' . __( 'Login Requirements', 'event-tickets' ) . '</h3>',
|
127 |
+
],
|
128 |
+
'ticket-authentication-requirements-advice' => [
|
129 |
'type' => 'html',
|
130 |
+
'html' => '<p>' . sprintf(
|
131 |
+
_x( 'You can require that users log into your site before they are able to %1$s (or buy %2$s). Please review your WordPress Membership option (via the %3$sGeneral Settings admin screen%4$s) before adjusting this setting.',
|
132 |
+
'ticket authentication requirements',
|
133 |
+
'event-tickets'
|
134 |
+
),
|
135 |
+
tribe_get_rsvp_label_singular( 'authentication_requirements_advice' ),
|
136 |
+
tribe_get_ticket_label_plural_lowercase( 'authentication_requirements_advice' ),
|
137 |
+
'<a href="' . esc_url( get_admin_url( null, 'options-general.php' ) ) . '" target="_blank">',
|
138 |
+
'</a>'
|
139 |
+
) . '</p>',
|
140 |
+
],
|
141 |
+
'ticket-authentication-requirements' => [
|
142 |
'type' => 'checkbox_list',
|
143 |
'options' => $ticket_addons,
|
144 |
'validation_type' => 'options_multi',
|
145 |
'can_be_empty' => true,
|
146 |
+
],
|
147 |
+
]
|
148 |
);
|
149 |
|
150 |
+
$tickets_fields['ticket-paypal-heading'] = [
|
151 |
'type' => 'html',
|
152 |
'html' => '<h3>' . __( 'Tribe Commerce', 'event-tickets' ) . '</h3>',
|
153 |
+
];
|
|
|
154 |
|
155 |
if ( ! $is_tickets_plus_available ) {
|
156 |
$plus_link = sprintf(
|
157 |
'<a href="http://m.tri.be/19zl" target="_blank">%s</a>',
|
158 |
+
__( 'Event Tickets Plus', 'tribe-common' )
|
159 |
);
|
160 |
|
161 |
$plus_link_2 = sprintf(
|
164 |
);
|
165 |
|
166 |
$plus_message = sprintf(
|
167 |
+
_x( 'Tribe Commerce is a light implementation of a commerce gateway using PayPal and simplified stock handling. If you need more advanced features, take a look at %1$s. In addition to integrating with your favorite ecommerce provider, Event Tickets Plus includes options to collect custom information for attendees, check users in via QR codes, and share stock between %2$s. %3$s', 'about Tribe Commerce', 'event-tickets' ),
|
168 |
$plus_link,
|
169 |
+
tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_about_tribe_commerce' ),
|
170 |
$plus_link_2
|
171 |
);
|
172 |
|
173 |
+
$tickets_fields['ticket-paypal-et-plus-header'] = [
|
174 |
'type' => 'html',
|
175 |
'html' => '<p>' . $plus_message . '</p>',
|
176 |
+
];
|
177 |
}
|
178 |
|
179 |
//@todo clicking this should hide/show the settings
|
180 |
+
$tickets_fields['ticket-paypal-enable'] = [
|
181 |
'type' => 'checkbox_bool',
|
182 |
'label' => esc_html__( 'Enable Tribe Commerce ', 'event-tickets' ),
|
183 |
'tooltip' => esc_html__( 'Check this box if you wish to turn on Tribe Commerce functionality', 'event-tickets' ),
|
184 |
'size' => 'medium',
|
185 |
'default' => false,
|
186 |
'validation_type' => 'boolean',
|
187 |
+
'attributes' => [ 'id' => 'ticket-paypal-enable-input' ],
|
188 |
+
];
|
189 |
|
190 |
+
$pages = get_pages( [ 'post_status' => 'publish', 'posts_per_page' => -1 ] );
|
191 |
|
192 |
if ( ! empty( $pages ) ) {
|
193 |
$pages = array_combine( wp_list_pluck( $pages, 'ID' ), wp_list_pluck( $pages, 'post_title' ) );
|
194 |
}
|
195 |
|
196 |
// add an empty entry at the start
|
197 |
+
$pages = [ 0 => '' ] + $pages;
|
198 |
$default_page = reset( $pages );
|
199 |
|
200 |
$tpp_success_shortcode = 'tribe-tpp-success';
|
208 |
? 'http://m.tri.be/19yk'
|
209 |
: 'http://m.tri.be/19yj';
|
210 |
$paypal_setup_kb_link = '<a href="' . esc_url( $paypal_setup_kb_url ) . '" target="_blank">' . esc_html__( 'these instructions', 'event-tickets' ) . '</a>';
|
211 |
+
$paypal_setup_note = sprintf( esc_html_x( 'In order to use Tribe Commerce to sell %1$s, you must configure your PayPal account to communicate with your WordPress site. If you need help getting set up, follow %2$s', 'tickets fields settings PayPal setup', 'event-tickets' ), esc_html( tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_paypal_setup' ) ), $paypal_setup_kb_link );
|
|
|
|
|
|
|
212 |
|
213 |
$ipn_setup_line = sprintf(
|
214 |
'<span class="clear">%s</span><span class="clear">%s</span>',
|
219 |
)
|
220 |
);
|
221 |
|
222 |
+
$paypal_fields = [
|
223 |
+
'ticket-paypal-configure' => [
|
224 |
'type' => 'wrapped_html',
|
225 |
'label' => esc_html__( 'Configure PayPal:', 'event-tickets' ),
|
226 |
'html' => '<p>' . $paypal_setup_note . '</p>',
|
227 |
'validation_type' => 'html',
|
228 |
+
],
|
229 |
+
'ticket-paypal-email' => [
|
230 |
'type' => 'email',
|
231 |
'label' => esc_html__( 'PayPal email to receive payments:', 'event-tickets' ),
|
232 |
'size' => 'large',
|
233 |
'default' => '',
|
234 |
'validation_type' => 'email',
|
235 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
236 |
+
],
|
237 |
+
'ticket-paypal-ipn-enabled' => [
|
238 |
'type' => 'radio',
|
239 |
'label' => esc_html__( "Have you enabled instant payment notifications (IPN) in your PayPal account's Selling Tools?", 'event-tickets' ),
|
240 |
+
'options' => [
|
241 |
'yes' => __( 'Yes', 'event-tickets' ),
|
242 |
'no' => __( 'No', 'event-tic->valuekets' ),
|
243 |
+
],
|
244 |
'size' => 'large',
|
245 |
'default' => 'no',
|
246 |
'validation_type' => 'options',
|
247 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
248 |
+
],
|
249 |
+
'ticket-paypal-ipn-address-set' => [
|
250 |
'type' => 'radio',
|
251 |
'label' => $ipn_setup_line,
|
252 |
+
'options' => [
|
253 |
'yes' => __( 'Yes', 'event-tickets' ),
|
254 |
'no' => __( 'No', 'event-tickets' ),
|
255 |
+
],
|
256 |
'size' => 'large',
|
257 |
'default' => 'no',
|
258 |
'validation_type' => 'options',
|
259 |
'class' => 'indent light-bordered checkmark checkmark-right checkmark-hide ipn-required',
|
260 |
+
],
|
261 |
+
'ticket-paypal-ipn-config-status' => [
|
262 |
'type' => 'wrapped_html',
|
263 |
'html' => sprintf(
|
264 |
'<strong>%1$s <span id="paypal-ipn-config-status" data-status="%2$s">%3$s</span></strong><p class="description"><i>%4$s</i></p>',
|
271 |
'default' => 'no',
|
272 |
'validation_type' => 'html',
|
273 |
'class' => 'indent light-bordered',
|
274 |
+
],
|
275 |
+
'ticket-paypal-sandbox' => [
|
276 |
'type' => 'checkbox_bool',
|
277 |
'label' => esc_html__( 'PayPal Sandbox', 'event-tickets' ),
|
278 |
'tooltip' => esc_html__( 'Enables PayPal Sandbox mode for testing.', 'event-tickets' ),
|
279 |
'default' => false,
|
280 |
'validation_type' => 'boolean',
|
281 |
+
],
|
282 |
+
'ticket-commerce-currency-code' => [
|
283 |
'type' => 'dropdown',
|
284 |
'label' => esc_html__( 'Currency Code', 'event-tickets' ),
|
285 |
'tooltip' => esc_html__( 'The currency that will be used for Tribe Commerce transactions.', 'event-tickets' ),
|
286 |
'default' => 'USD',
|
287 |
'validation_type' => 'options',
|
288 |
'options' => $paypal_currency_code_options,
|
289 |
+
],
|
290 |
+
'ticket-paypal-stock-handling' => [
|
291 |
'type' => 'radio',
|
292 |
'label' => esc_html__( 'Stock Handling', 'event-tickets' ),
|
293 |
+
'tooltip' => esc_html( sprintf( _x( 'When a customer purchases a %s, PayPal might flag the order as Pending. The order will be Complete once payment is confirmed by PayPal.', 'tickets fields settings paypal stock handling', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_paypal_stock_handling' ) ) ),
|
294 |
'default' => 'on-pending',
|
295 |
'validation_type' => 'options',
|
296 |
+
'options' => [
|
297 |
'on-pending' => esc_html__( 'Decrease available ticket stock as soon as a Pending order is created.', 'event-tickets' ),
|
298 |
'on-complete' => esc_html__( 'Only decrease available ticket stock if an order is confirmed as Completed by PayPal.', 'event-tickets' ),
|
299 |
+
],
|
300 |
'tooltip_first' => true,
|
301 |
+
],
|
302 |
+
'ticket-paypal-success-page' => [
|
303 |
'type' => 'dropdown',
|
304 |
'label' => esc_html__( 'Success page', 'event-tickets' ),
|
305 |
'tooltip' => esc_html(
|
312 |
'validation_type' => 'options',
|
313 |
'options' => $pages,
|
314 |
'required' => true,
|
315 |
+
],
|
316 |
+
'ticket-paypal-confirmation-email-sender-email' => [
|
317 |
'type' => 'email',
|
318 |
'label' => esc_html__( 'Confirmation email sender address', 'event-tickets' ),
|
319 |
+
'tooltip' => esc_html( sprintf( _x( 'Email address PayPal %s customers will receive confirmation from. Leave empty to use the default WordPress site email address.', 'tickets fields settings paypal confirmation email', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'tickets_fields_settings_paypal_confirmation_email' ) ) ),
|
320 |
'size' => 'medium',
|
321 |
'default' => $current_user->user_email,
|
322 |
'validation_type' => 'email',
|
323 |
'can_be_empty' => true,
|
324 |
+
],
|
325 |
+
'ticket-paypal-confirmation-email-sender-name' => [
|
326 |
'type' => 'text',
|
327 |
'label' => esc_html__( 'Confirmation email sender name', 'event-tickets' ),
|
328 |
+
'tooltip' => esc_html( sprintf( _x( 'Sender name of the confirmation email sent to customers when confirming a %s purchase.', 'tickets fields settings paypal email sender', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_paypal_email_sender' ) ) ),
|
329 |
'size' => 'medium',
|
330 |
'default' => $current_user->user_nicename,
|
331 |
'validation_callback' => 'is_string',
|
332 |
'validation_type' => 'textarea',
|
333 |
+
],
|
334 |
+
'ticket-paypal-confirmation-email-subject' => [
|
335 |
'type' => 'text',
|
336 |
'label' => esc_html__( 'Confirmation email subject', 'event-tickets' ),
|
337 |
+
'tooltip' => esc_html( sprintf( _x( 'Subject of the confirmation email sent to customers when confirming a %s purchase.', 'tickets fields settings paypal email subject', 'event-tickets' ), tribe_get_ticket_label_singular_lowercase( 'tickets_fields_settings_paypal_email_subject' ) ) ),
|
338 |
'size' => 'large',
|
339 |
+
'default' => esc_html( sprintf( _x( 'You have %s!', 'tickets fields settings paypal email subject', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'tickets_fields_settings_paypal_email_subject' ) ) ),
|
340 |
'validation_callback' => 'is_string',
|
341 |
'validation_type' => 'textarea',
|
342 |
+
],
|
343 |
+
];
|
344 |
|
345 |
if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
|
346 |
$ipn_fields = [
|
347 |
+
'ticket-paypal-notify-history' => [
|
348 |
'type' => 'wrapped_html',
|
349 |
'html' => '<p>' .
|
350 |
sprintf(
|
355 |
'size' => 'medium',
|
356 |
'validation_type' => 'html',
|
357 |
'class' => 'indent light-bordered',
|
358 |
+
],
|
359 |
+
'ticket-paypal-notify-url' => [
|
360 |
'type' => 'text',
|
361 |
'label' => esc_html__( 'IPN Notify URL', 'event-tickets' ),
|
362 |
'tooltip' => sprintf(
|
365 |
),
|
366 |
'default' => home_url(),
|
367 |
'validation_type' => 'html',
|
368 |
+
],
|
369 |
];
|
370 |
|
371 |
$paypal_fields = Tribe__Main::array_insert_after_key( 'ticket-paypal-ipn-config-status', $paypal_fields, $ipn_fields );
|
372 |
}
|
373 |
|
374 |
foreach ( $paypal_fields as $key => &$commerce_field ) {
|
375 |
+
$field_classes = (array) Tribe__Utils__Array::get( $commerce_field, 'class', [] );
|
376 |
array_push( $field_classes, 'tribe-dependent' );
|
377 |
$commerce_field['class'] = implode( ' ', $field_classes );
|
378 |
+
$existing_field_attributes = Tribe__Utils__Array::get( $commerce_field, 'fieldset_attributes', [] );
|
379 |
+
$additional_attributes = [
|
380 |
'data-depends' => '#ticket-paypal-enable-input',
|
381 |
'data-condition-is-checked' => '',
|
382 |
+
];
|
383 |
if ( 'checkbox_bool' === $commerce_field['type'] ) {
|
384 |
$additional_attributes['data-dependency-dont-disable'] = '1';
|
385 |
}
|
394 |
$paypal_fields
|
395 |
);
|
396 |
|
397 |
+
$tickets_fields = array_merge( $tickets_fields, [
|
398 |
+
'tribe-form-content-end' => [
|
399 |
'type' => 'html',
|
400 |
'html' => '</div>',
|
401 |
+
],
|
402 |
+
]
|
403 |
+
);
|
404 |
|
405 |
/**
|
406 |
* Filters the fields to be registered in the Events > Settings > Tickets tab.
|
414 |
*/
|
415 |
$tickets_fields = apply_filters( 'tribe_tickets_settings_tab_fields', $tickets_fields );
|
416 |
|
417 |
+
$tickets_tab = [
|
418 |
'priority' => 20,
|
419 |
'fields' => $tickets_fields,
|
420 |
+
];
|
src/functions/views/provider.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// @todo: Discuss with @be @bordoni how we should approach the duplication here.
|
3 |
+
/**
|
4 |
+
* Checks whether v2 of the Views is enabled or not.
|
5 |
+
*
|
6 |
+
* In order the function will check the `TRIBE_EVENTS_V2_VIEWS` constant,
|
7 |
+
* the `TRIBE_EVENTS_V2_VIEWS` environment variable.
|
8 |
+
*
|
9 |
+
* @since 4.10.9
|
10 |
+
*
|
11 |
+
* @return bool Whether v2 of the Views are enabled or not.
|
12 |
+
*/
|
13 |
+
function tribe_events_tickets_views_v2_is_enabled() {
|
14 |
+
$enabled = false;
|
15 |
+
|
16 |
+
if ( defined( 'TRIBE_EVENTS_V2_VIEWS' ) ) {
|
17 |
+
$enabled = (bool) TRIBE_EVENTS_V2_VIEWS;
|
18 |
+
}
|
19 |
+
|
20 |
+
$env_var = getenv( 'TRIBE_EVENTS_V2_VIEWS' );
|
21 |
+
if ( false !== $env_var ) {
|
22 |
+
$enabled = (bool) $env_var;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Allows filtering of the Events Views V2 provider, doing so will render
|
27 |
+
* the methods and classes no longer load-able so keep that in mind.
|
28 |
+
*
|
29 |
+
* @since 4.10.9
|
30 |
+
*
|
31 |
+
* @param boolean $enabled Determining if V2 Views is enabled.
|
32 |
+
*/
|
33 |
+
return apply_filters( 'tribe_events_tickets_views_v2_is_enabled', $enabled );
|
34 |
+
}
|
src/modules/blocks/rsvp/action-dashboard/template.js
CHANGED
@@ -53,13 +53,14 @@ class RSVPActionDashboard extends PureComponent {
|
|
53 |
|
54 |
getActions = () => {
|
55 |
const {
|
|
|
56 |
hasTicketsPlus,
|
57 |
hasRecurrenceRules,
|
58 |
isLoading,
|
59 |
} = this.props;
|
60 |
|
61 |
const actions = [ <SettingsActionButton /> ];
|
62 |
-
if (
|
63 |
actions.push( <AttendeesActionButton /> );
|
64 |
}
|
65 |
if ( hasRecurrenceRules ) {
|
53 |
|
54 |
getActions = () => {
|
55 |
const {
|
56 |
+
created,
|
57 |
hasTicketsPlus,
|
58 |
hasRecurrenceRules,
|
59 |
isLoading,
|
60 |
} = this.props;
|
61 |
|
62 |
const actions = [ <SettingsActionButton /> ];
|
63 |
+
if ( created ) {
|
64 |
actions.push( <AttendeesActionButton /> );
|
65 |
}
|
66 |
if ( hasRecurrenceRules ) {
|
src/modules/blocks/tickets/action-dashboard/template.js
CHANGED
@@ -52,9 +52,9 @@ class TicketsDashboardAction extends PureComponent {
|
|
52 |
|
53 |
const actions = [ <SettingsActionButton /> ];
|
54 |
if ( hasCreatedTickets ) {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
if ( hasOrdersPage ) {
|
59 |
actions.push( <OrdersActionButton /> );
|
60 |
}
|
52 |
|
53 |
const actions = [ <SettingsActionButton /> ];
|
54 |
if ( hasCreatedTickets ) {
|
55 |
+
|
56 |
+
actions.push( <AttendeesActionButton /> );
|
57 |
+
|
58 |
if ( hasOrdersPage ) {
|
59 |
actions.push( <OrdersActionButton /> );
|
60 |
}
|
src/resources/js/app/blocks.js
CHANGED
@@ -42714,13 +42714,14 @@ var template_RSVPActionDashboard = function (_PureComponent) {
|
|
42714 |
|
42715 |
_this.getActions = function () {
|
42716 |
var _this$props = _this.props,
|
|
|
42717 |
hasTicketsPlus = _this$props.hasTicketsPlus,
|
42718 |
hasRecurrenceRules = _this$props.hasRecurrenceRules,
|
42719 |
isLoading = _this$props.isLoading;
|
42720 |
|
42721 |
|
42722 |
var actions = [wp.element.createElement(settings_action_button_container, null)];
|
42723 |
-
if (
|
42724 |
actions.push(wp.element.createElement(attendees_action_button_container, null));
|
42725 |
}
|
42726 |
if (hasRecurrenceRules) {
|
@@ -43891,9 +43892,9 @@ var template_TicketsDashboardAction = function (_PureComponent) {
|
|
43891 |
|
43892 |
var actions = [wp.element.createElement(settings_container, null)];
|
43893 |
if (hasCreatedTickets) {
|
43894 |
-
|
43895 |
-
|
43896 |
-
|
43897 |
if (hasOrdersPage) {
|
43898 |
actions.push(wp.element.createElement(orders_container, null));
|
43899 |
}
|
42714 |
|
42715 |
_this.getActions = function () {
|
42716 |
var _this$props = _this.props,
|
42717 |
+
created = _this$props.created,
|
42718 |
hasTicketsPlus = _this$props.hasTicketsPlus,
|
42719 |
hasRecurrenceRules = _this$props.hasRecurrenceRules,
|
42720 |
isLoading = _this$props.isLoading;
|
42721 |
|
42722 |
|
42723 |
var actions = [wp.element.createElement(settings_action_button_container, null)];
|
42724 |
+
if (created) {
|
42725 |
actions.push(wp.element.createElement(attendees_action_button_container, null));
|
42726 |
}
|
42727 |
if (hasRecurrenceRules) {
|
43892 |
|
43893 |
var actions = [wp.element.createElement(settings_container, null)];
|
43894 |
if (hasCreatedTickets) {
|
43895 |
+
|
43896 |
+
actions.push(wp.element.createElement(attendees_container, null));
|
43897 |
+
|
43898 |
if (hasOrdersPage) {
|
43899 |
actions.push(wp.element.createElement(orders_container, null));
|
43900 |
}
|
src/resources/js/app/blocks.min.js
CHANGED
@@ -17,4 +17,4 @@ var tribe="object"==typeof tribe?tribe:{};tribe.tickets=tribe.tickets||{},tribe.
|
|
17 |
*
|
18 |
* This source code is licensed under the MIT license found in the
|
19 |
* LICENSE file in the root directory of this source tree.
|
20 |
-
*/Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,a=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,o=r?Symbol.for("react.strict_mode"):60108,c=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,_=r?Symbol.for("react.async_mode"):60111,l=r?Symbol.for("react.concurrent_mode"):60111,m=r?Symbol.for("react.forward_ref"):60112,p=r?Symbol.for("react.suspense"):60113,f=r?Symbol.for("react.memo"):60115,T=r?Symbol.for("react.lazy"):60116;function h(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case a:switch(e=e.type){case _:case l:case s:case c:case o:case p:return e;default:switch(e=e&&e.$$typeof){case d:case m:case u:return e;default:return t}}case T:case f:case i:return t}}}function y(e){return h(e)===l}t.typeOf=h,t.AsyncMode=_,t.ConcurrentMode=l,t.ContextConsumer=d,t.ContextProvider=u,t.Element=a,t.ForwardRef=m,t.Fragment=s,t.Lazy=T,t.Memo=f,t.Portal=i,t.Profiler=c,t.StrictMode=o,t.Suspense=p,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===l||e===c||e===o||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===T||e.$$typeof===f||e.$$typeof===u||e.$$typeof===d||e.$$typeof===m)},t.isAsyncMode=function(e){return y(e)||h(e)===_},t.isConcurrentMode=y,t.isContextConsumer=function(e){return h(e)===d},t.isContextProvider=function(e){return h(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},t.isForwardRef=function(e){return h(e)===m},t.isFragment=function(e){return h(e)===s},t.isLazy=function(e){return h(e)===T},t.isMemo=function(e){return h(e)===f},t.isPortal=function(e){return h(e)===i},t.isProfiler=function(e){return h(e)===c},t.isStrictMode=function(e){return h(e)===o},t.isSuspense=function(e){return h(e)===p}},function(e,t,n){},function(e,t,n){},function(e,t){var n,r,a=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var c,u=[],d=!1,_=-1;function l(){d&&c&&(d=!1,c.length?u=c.concat(u):_=-1,u.length&&m())}function m(){if(!d){var e=o(l);d=!0;for(var t=u.length;t;){for(c=u,u=[];++_<t;)c&&c[_].run();_=-1,t=u.length}c=null,d=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function f(){}a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||d||o(m)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=f,a.addListener=f,a.once=f,a.off=f,a.removeListener=f,a.removeAllListeners=f,a.emit=f,a.prependListener=f,a.prependOnceListener=f,a.listeners=function(e){return[]},a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(111),a=n(324),i=n(15),s=n(30);function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var c=n(13),u=n(1),d=n.n(u),_=d.a.shape({trySubscribe:d.a.func.isRequired,tryUnsubscribe:d.a.func.isRequired,notifyNestedSubs:d.a.func.isRequired,isSubscribed:d.a.func.isRequired}),l=d.a.shape({subscribe:d.a.func.isRequired,dispatch:d.a.func.isRequired,getState:d.a.func.isRequired});!function(e){var t;void 0===e&&(e="store");var n=e+"Subscription",r=function(t){o(a,t);var r=a.prototype;function a(n,r){var a;return(a=t.call(this,n,r)||this)[e]=n.store,a}return r.getChildContext=function(){var t;return(t={})[e]=this[e],t[n]=null,t},r.render=function(){return c.Children.only(this.props.children)},a}(c.Component);r.propTypes={store:l.isRequired,children:d.a.element.isRequired},r.childContextTypes=((t={})[e]=l.isRequired,t[n]=_,t)}();function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function f(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}var T=n(489),h=n.n(T),y=n(325),b=n.n(y),M=n(488),S=null,E={notify:function(){}};var g=function(){function e(e,t,n){this.store=e,this.parentSub=t,this.onStateChange=n,this.unsubscribe=null,this.listeners=E}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){var e,t;this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=(e=[],t=[],{clear:function(){t=S,e=S},notify:function(){for(var n=e=t,r=0;r<n.length;r++)n[r]()},get:function(){return t},subscribe:function(n){var r=!0;return t===e&&(t=e.slice()),t.push(n),function(){r&&e!==S&&(r=!1,t===e&&(t=e.slice()),t.splice(t.indexOf(n),1))}}}))},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=E)},e}(),v=0,k={};function D(){}function L(e,t){var n,r;void 0===t&&(t={});var a=t,i=a.getDisplayName,s=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,u=a.methodName,d=void 0===u?"connectAdvanced":u,T=a.renderCountProp,y=void 0===T?void 0:T,S=a.shouldHandleStateChanges,E=void 0===S||S,L=a.storeKey,O=void 0===L?"store":L,Y=a.withRef,w=void 0!==Y&&Y,j=f(a,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),I=O+"Subscription",P=v++,C=((n={})[O]=l,n[I]=_,n),x=((r={})[I]=_,r);return function(t){b()(Object(M.isValidElementType)(t),"You must pass a component to the function returned by "+d+". Instead received "+JSON.stringify(t));var n=t.displayName||t.name||"Component",r=s(n),a=p({},j,{getDisplayName:s,methodName:d,renderCountProp:y,shouldHandleStateChanges:E,storeKey:O,withRef:w,displayName:r,wrappedComponentName:n,WrappedComponent:t}),i=function(n){function i(e,t){var a;return(a=n.call(this,e,t)||this).version=P,a.state={},a.renderCount=0,a.store=e[O]||t[O],a.propsMode=Boolean(e[O]),a.setWrappedInstance=a.setWrappedInstance.bind(m(m(a))),b()(a.store,'Could not find "'+O+'" in either the context or props of "'+r+'". Either wrap the root component in a <Provider>, or explicitly pass "'+O+'" as a prop to "'+r+'".'),a.initSelector(),a.initSubscription(),a}o(i,n);var s=i.prototype;return s.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[I]=t||this.context[I],e},s.componentDidMount=function(){E&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},s.componentWillReceiveProps=function(e){this.selector.run(e)},s.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},s.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=D,this.store=null,this.selector.run=D,this.selector.shouldComponentUpdate=!1},s.getWrappedInstance=function(){return b()(w,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+d+"() call."),this.wrappedInstance},s.setWrappedInstance=function(e){this.wrappedInstance=e},s.initSelector=function(){var t=e(this.store.dispatch,a);this.selector=function(e,t){var n={run:function(r){try{var a=e(t.getState(),r);(a!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=a,n.error=null)}catch(e){n.shouldComponentUpdate=!0,n.error=e}}};return n}(t,this.store),this.selector.run(this.props)},s.initSubscription=function(){if(E){var e=(this.propsMode?this.props:this.context)[I];this.subscription=new g(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},s.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(k)):this.notifyNestedSubs()},s.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},s.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},s.addExtraProps=function(e){if(!(w||y||this.propsMode&&this.subscription))return e;var t=p({},e);return w&&(t.ref=this.setWrappedInstance),y&&(t[y]=this.renderCount++),this.propsMode&&this.subscription&&(t[I]=this.subscription),t},s.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(c.createElement)(t,this.addExtraProps(e.props))},i}(c.Component);return i.WrappedComponent=t,i.displayName=r,i.childContextTypes=x,i.contextTypes=C,i.propTypes=C,h()(i,t)}}var O=Object.prototype.hasOwnProperty;function Y(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function w(e,t){if(Y(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var a=0;a<n.length;a++)if(!O.call(t,n[a])||!Y(e[n[a]],t[n[a]]))return!1;return!0}var j=n(16);function I(e){return function(t,n){var r=e(t,n);function a(){return r}return a.dependsOnOwnProps=!1,a}}function P(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function C(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=P(e);var a=r(t,n);return"function"==typeof a&&(r.mapToProps=a,r.dependsOnOwnProps=P(a),a=r(t,n)),a},r}}var x=[function(e){return"function"==typeof e?C(e):void 0},function(e){return e?void 0:I(function(e){return{dispatch:e}})},function(e){return e&&"object"==typeof e?I(function(t){return Object(j.a)(e,t)}):void 0}];var R=[function(e){return"function"==typeof e?C(e):void 0},function(e){return e?void 0:I(function(){return{}})}];function A(e,t,n){return p({},n,e,t)}var H=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r,a=n.pure,i=n.areMergedPropsEqual,s=!1;return function(t,n,o){var c=e(t,n,o);return s?a&&i(c,r)||(r=c):(s=!0,r=c),r}}}(e):void 0},function(e){return e?void 0:function(){return A}}];function N(e,t,n,r){return function(a,i){return n(e(a,i),t(r,i),i)}}function V(e,t,n,r,a){var i,s,o,c,u,d=a.areStatesEqual,_=a.areOwnPropsEqual,l=a.areStatePropsEqual,m=!1;function p(a,m){var p,f,T=!_(m,s),h=!d(a,i);return i=a,s=m,T&&h?(o=e(i,s),t.dependsOnOwnProps&&(c=t(r,s)),u=n(o,c,s)):T?(e.dependsOnOwnProps&&(o=e(i,s)),t.dependsOnOwnProps&&(c=t(r,s)),u=n(o,c,s)):h?(p=e(i,s),f=!l(p,o),o=p,f&&(u=n(o,c,s)),u):u}return function(a,d){return m?p(a,d):(o=e(i=a,s=d),c=t(r,s),u=n(o,c,s),m=!0,u)}}function F(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,a=t.initMergeProps,i=f(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),s=n(e,i),o=r(e,i),c=a(e,i);return(i.pure?V:N)(s,o,c,e,i)}function K(e,t,n){for(var r=t.length-1;r>=0;r--){var a=t[r](e);if(a)return a}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function W(e,t){return e===t}var U,z,G,B,q,J,$,Z,Q,X,ee,te,ne=(G=(z=void 0===U?{}:U).connectHOC,B=void 0===G?L:G,q=z.mapStateToPropsFactories,J=void 0===q?R:q,$=z.mapDispatchToPropsFactories,Z=void 0===$?x:$,Q=z.mergePropsFactories,X=void 0===Q?H:Q,ee=z.selectorFactory,te=void 0===ee?F:ee,function(e,t,n,r){void 0===r&&(r={});var a=r,i=a.pure,s=void 0===i||i,o=a.areStatesEqual,c=void 0===o?W:o,u=a.areOwnPropsEqual,d=void 0===u?w:u,_=a.areStatePropsEqual,l=void 0===_?w:_,m=a.areMergedPropsEqual,T=void 0===m?w:m,h=f(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),y=K(e,J,"mapStateToProps"),b=K(t,Z,"mapDispatchToProps"),M=K(n,X,"mergeProps");return B(te,p({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:y,initMapDispatchToProps:b,initMergeProps:M,pure:s,areStatesEqual:c,areOwnPropsEqual:d,areStatePropsEqual:l,areMergedPropsEqual:T},h))}),re=n(4),ae=n.n(re),ie=n(20),se=n(35),oe=n.n(se),ce=n(36),ue=n.n(ce),de=n(33),_e=n.n(de),le=n(37),me=n.n(le),pe=n(22),fe=n.n(pe),Te=n(26),he=n(24),ye=n(109),be=n(86),Me=n.n(be),Se=n(21),Ee=(n(492),function(e){var t=e.goingCount,n=e.notGoingCount,r=e.showNotGoing;return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__counters"},wp.element.createElement(Se.Counter,{className:"tribe-editor__rsvp-container-header__going-counter",count:t,label:Object(i.__)("Going","event-tickets")}),r&&wp.element.createElement(Se.Counter,{className:"tribe-editor__rsvp-container-header__not-going-counter",count:n,label:Object(i.__)("Not going","event-tickets")}))});Ee.propTypes={goingCount:d.a.number,notGoingCount:d.a.number,showNotGoing:d.a.bool};var ge=Ee,ve=n(12),ke=n(18),De=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{goingCount:ve.d.getRSVPGoingCount(e),notGoingCount:ve.d.getRSVPNotGoingCount(e),showNotGoing:ve.d.getRSVPNotGoingResponses(e)}}))(ge),Le=n(62),Oe=(n(493),wp.element.createElement(Se.Tooltip,{labelClassName:"tribe-editor__ticket__container-header-clipboard-tooltip",label:wp.element.createElement(Le.Clipboard,null),text:Object(i.__)("This ticket has Attendee Information Fields configured.","event-tickets")})),Ye=function(e){var t,n,r,a,s=e.description,o=e.hasAttendeeInfoFields,u=e.isCreated,d=e.isDisabled,_=e.isSelected,l=e.onTempDescriptionChange,m=e.onTempTitleChange,p=e.tempDescription,f=e.tempTitle,T=e.title,h=e.available;return wp.element.createElement(c.Fragment,null,wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__header-details"},function(e,t,n,r,a,s){return n?wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__title-input-wrapper"},wp.element.createElement(Me.a,{className:"tribe-editor__rsvp-container-header__title-input",value:a,placeholder:Object(i.__)("RSVP Title","event-tickets"),onChange:r,disabled:t}),e&&Oe):wp.element.createElement("h2",{className:"tribe-editor__rsvp-container-header__title"},s)}(o,d,_,m,f,T),function(e,t,n,r,a){return t?wp.element.createElement(Me.a,{className:"tribe-editor__rsvp-container-header__description-input",value:r,placeholder:Object(i.__)("description","event-tickets"),onChange:n,disabled:e}):a&&wp.element.createElement("span",{className:"tribe-editor__rsvp-container-header__description"},a)}(d,_,l,p,s),u&&(t=h,n=Object(i.__)("%d available","event-tickets"),r=n,a=wp.element.createElement("span",{className:"tribe-editor__rsvp-container-header__capacity-label-fallback"},Object(i.__)("Unlimited","event-tickets")),wp.element.createElement(he.NumericLabel,{className:"tribe-editor__rsvp-container-header__capacity-label",count:t,includeZero:!0,singular:n,plural:r,fallback:a}))),wp.element.createElement(De,null))};Ye.propTypes={available:d.a.number,description:d.a.string,hasAttendeeInfoFields:d.a.bool,isCreated:d.a.bool,isDisabled:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,onTempDescriptionChange:d.a.func,onTempTitleChange:d.a.func,tempDescription:d.a.string,tempTitle:d.a.string,title:d.a.string};var we=Ye,je=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},Ie=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{available:ve.d.getRSVPAvailable(e),description:ve.d.getRSVPDescription(e),hasAttendeeInfoFields:ve.d.getRSVPHasAttendeeInfoFields(e),isCreated:ve.d.getRSVPCreated(e),isDisabled:je(e),tempDescription:ve.d.getRSVPTempDescription(e),tempTitle:ve.d.getRSVPTempTitle(e),title:ve.d.getRSVPTitle(e)}},function(e){return{onTempDescriptionChange:function(t){e(ve.a.setRSVPTempDescription(t.target.value)),e(ve.a.setRSVPHasChanges(!0))},onTempTitleChange:function(t){e(ve.a.setRSVPTempTitle(t.target.value)),e(ve.a.setRSVPHasChanges(!0))}}}))(we),Pe=n(72),Ce=n.n(Pe),xe=(n(495),wp.element.createElement(Te.Dashicon,{className:"tribe-editor__rsvp-duration__duration-tooltip-label",icon:"info-outline"})),Re=function(e){var t=e.tooltipDisabled;return wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__rsvp-duration__duration-label",label:Object(i.__)("Duration","event-tickets"),tooltipDisabled:t,tooltipLabel:xe,tooltipText:Object(i.__)("By default, sales will begin as soon as you save the ticket and end when the event begins","event-tickets")})},Ae=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},He=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:Ae(e)}}))(Re),Ne=n(9),Ve=n.n(Ne),Fe=n(38),Ke=n.n(Fe),We=(n(496),function(e){return wp.element.createElement(he.DateTimeRangePicker,Ve()({className:"tribe-editor__rsvp-duration__duration-picker"},e))});We.propTypes={fromDate:d.a.instanceOf(Date),fromDateInput:d.a.string,fromDateDisabled:d.a.bool,fromTime:d.a.string,fromTimeDisabled:d.a.bool,onFromDateChange:d.a.func,onFromTimePickerBlur:d.a.func,onFromTimePickerChange:d.a.func,onFromTimePickerClick:d.a.func,onToDateChange:d.a.func,onToTimePickerBlur:d.a.func,onToTimePickerChange:d.a.func,onToTimePickerClick:d.a.func,toDate:d.a.instanceOf(Date),toDateInput:d.a.string,toDateDisabled:d.a.bool,toTime:d.a.string,toTimeDisabled:d.a.bool};var Ue=We,ze=n(3),Ge=function(e){return function(t,n,r){var a={date:t,dayPickerInput:r};e(ve.a.handleRSVPStartDate(a))}},Be=function(e){return function(t){return e(ve.a.setRSVPTempStartTimeInput(t.target.value))}},qe=function(e){return function(t,n){e(ve.a.handleRSVPStartTime(t)),n()}},Je=function(e){return function(t,n,r){var a={date:t,dayPickerInput:r};e(ve.a.handleRSVPEndDate(a))}},$e=function(e){return function(t){return e(ve.a.setRSVPTempEndTimeInput(t.target.value))}},Ze=function(e){return function(t,n){e(ve.a.handleRSVPEndTime(t)),n()}},Qe=function(e,t){return function(n){var r=ze.moment.toMoment(n.target.value,ze.moment.TIME_FORMAT,!1);if(!r.isValid()){var a=ve.d.getRSVPStartTimeInput(e);r=ze.moment.toMoment(a,ze.moment.TIME_FORMAT,!1)}var i=ze.moment.totalSeconds(r);t(ve.a.handleRSVPStartTime(i))}},Xe=function(e,t){return function(n){var r=ze.moment.toMoment(n.target.value,ze.moment.TIME_FORMAT,!1);if(!r.isValid()){var a=ve.d.getRSVPEndTimeInput(e);r=ze.moment.toMoment(a,ze.moment.TIME_FORMAT,!1)}var i=ze.moment.totalSeconds(r);t(ve.a.handleRSVPEndTime(i))}},et=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ze.globals.tecDateSettings().datepickerFormat?ze.moment.toFormat(ze.globals.tecDateSettings().datepickerFormat):"LL",n=ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e),r=ve.d.getRSVPTempStartDateMoment(e),a=ve.d.getRSVPTempEndDateMoment(e),i=r&&r.toDate(),s=a&&a.toDate();return{fromDate:i,fromDateInput:ve.d.getRSVPTempStartDateInput(e),fromDateDisabled:n,fromDateFormat:t,fromTime:ve.d.getRSVPTempStartTimeInput(e),fromTimeDisabled:n,toDate:s,toDateInput:ve.d.getRSVPTempEndDateInput(e),toDateDisabled:n,toDateFormat:t,toTime:ve.d.getRSVPTempEndTimeInput(e),toTimeDisabled:n,state:e}},function(e){return{onFromDateChange:Ge(e),onFromTimePickerChange:Be(e),onFromTimePickerClick:qe(e),onToDateChange:Je(e),onToTimePickerChange:$e(e),onToTimePickerClick:Ze(e),dispatch:e}},function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch,s=Ke()(t,["dispatch"]);return Ve()({},n,a,s,{onFromTimePickerBlur:Qe(r,i),onToTimePickerBlur:Xe(r,i)})}))(Ue),tt=(n(497),function(e){var t=e.hasDurationError;return wp.element.createElement("div",{className:"tribe-editor__rsvp-duration"},wp.element.createElement(He,null),wp.element.createElement(et,null),t&&wp.element.createElement("span",{className:"tribe-editor__rsvp-duration__error"},Object(i.__)("There is an error with the selected sales duration. Please fix the issue before saving.","event-tickets")))}),nt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasDurationError:ve.d.getRSVPHasDurationError(e)}}))(tt),rt=(n(498),function(e){var t=e.moveRSVP,n=e.removeRSVP,r=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__rsvp__content-row--move-delete"},wp.element.createElement(Se.Button,{type:"button",onClick:t,disabled:r},Object(i.__)("Move RSVP","event-tickets")),wp.element.createElement(Se.Button,{type:"button",onClick:n,disabled:r},Object(i.__)("Remove RSVP","event-tickets")))});rt.propTypes={moveRSVP:d.a.func.isRequired,removeRSVP:d.a.func.isRequired,isDisabled:d.a.bool.isRequired};var at=rt,it=n(68),st=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e),rsvpId:ve.d.getRSVPId(e),isDisabled:ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)}},function(e,t){return{moveRSVP:function(n){return e(Object(it.c)(n,t.clientId))},dispatch:e}},function(e,t,n){var r=t.dispatch,a=Ke()(t,["dispatch"]);return Ve()({},n,e,a,{removeRSVP:function(){window.confirm(Object(i.__)("Are you sure you want to delete this RSVP? It cannot be undone.","event-tickets"))&&(r(ve.a.deleteRSVP()),e.created&&e.rsvpId&&r(ve.e.deleteRSVP(e.rsvpId)),Object(ie.dispatch)("core/editor").removeBlocks([n.clientId]))},moveRSVP:function(){return t.moveRSVP(e.rsvpId)}})}))(at),ot=(n(499),function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getContent=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(nt,null),n.props.hasBeenCreated&&wp.element.createElement(st,{clientId:n.props.clientId}))},n.getHeader=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(Te.Dashicon,{className:"tribe-editor__rsvp__advanced-options-header-icon",icon:"arrow-down"}),wp.element.createElement("span",{className:"tribe-editor__rsvp__advanced-options-header-text"},Object(i.__)("Advanced Options","event-tickets")))},n.getRows=function(){return[{accordionId:n.accordionId,content:n.getContent(),contentClassName:"tribe-editor__rsvp__advanced-options-content",header:n.getHeader(),headerAttrs:{disabled:n.props.isDisabled},headerClassName:"tribe-editor__rsvp__advanced-options-header"}]},n.accordionId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){return wp.element.createElement(Se.Accordion,{className:"tribe-editor__rsvp__advanced-options",rows:this.getRows()})}}]),t}(c.PureComponent));ot.propTypes={isDisabled:d.a.bool.isRequired,hasBeenCreated:d.a.bool,clientId:d.a.string};var ct=ot,ut=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},dt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:ut(e),hasBeenCreated:ve.d.getRSVPCreated(e)}}))(ct),_t=(n(500),Object(i.__)("+ Add","event-tickets")),lt=Object(i.__)("Edit","event-tickets"),mt=function(e){var t=e.attendeeRegistrationURL,n=e.hasAttendeeInfoFields,r=e.isCreated,a=e.isDisabled,s=e.isModalOpen,o=e.onClick,c=e.onClose,u=e.onIframeLoad,d=n?lt:_t;return wp.element.createElement(he.AttendeesRegistration,{helperText:Object(i.__)("Save your RSVP to enable attendee information fields","event-tickets"),iframeURL:t,isDisabled:a,isModalOpen:s,label:Object(i.__)("Attendee Information","event-tickets"),linkText:d,modalTitle:Object(i.__)("Attendee Information","event-tickets"),onClick:o,onClose:c,onIframeLoad:u,showHelperText:!r})};mt.propTypes={attendeeRegistrationURL:d.a.string.isRequired,hasAttendeeInfoFields:d.a.bool.isRequired,isCreated:d.a.bool.isRequired,isDisabled:d.a.bool.isRequired,isModalOpen:d.a.bool.isRequired,onClick:d.a.func.isRequired,onClose:d.a.func.isRequired,onIframeLoad:d.a.func.isRequired};var pt=mt,ft=function(e){return ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=attendee-registration&ticket_id="+ve.d.getRSVPId(e)+"&tribe_events_modal=1"},Tt=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)||!ve.d.getRSVPCreated(e)},ht=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{attendeeRegistrationURL:ft(e),hasAttendeeInfoFields:ve.d.getRSVPHasAttendeeInfoFields(e),isCreated:ve.d.getRSVPCreated(e),isDisabled:Tt(e),isModalOpen:ve.d.getRSVPIsModalOpen(e)}},function(e,t){return{onClick:function(){e(ve.a.setRSVPIsModalOpen(!0))},onClose:function(){e(ve.a.setRSVPIsModalOpen(!1))},onIframeLoad:function(t){var n=t.contentWindow,r=function(){t.nextSibling.classList.add("tribe-editor__attendee-registration__modal-overlay--show")},a=n.document.querySelector("#event-tickets-attendee-information");a.addEventListener("submit",r);var i=function(){n.removeEventListener("unload",s),a.removeEventListener("submit",r)},s=function(){i();var t=n.document.querySelector("#tribe-tickets-attendee-sortables"),r=Boolean(t.firstElementChild);e(ve.a.setRSVPHasAttendeeInfoFields(r)),e(ve.a.setRSVPIsModalOpen(!1))};n.addEventListener("unload",s);var o=n.document.querySelector(".tribe-intro > a");o&&o.setAttribute("target","_blank")}}}))(pt),yt=(n(501),function(){return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-content__labels"},wp.element.createElement("span",{className:"tribe-editor__rsvp-container-content__capacity-label"},Object(i.__)("RSVP Capacity","event-tickets")),wp.element.createElement("span",{className:"tribe-editor__rsvp-container-content__capacity-label-help"},Object(i.__)("Leave blank if unlimited","event-tickets")))}),bt=function(e){var t=e.capacityId,n=e.isDisabled,r=e.notGoingId,a=e.onTempCapacityChange,s=e.onTempNotGoingResponsesChange,o=e.tempCapacity,c=e.tempNotGoingResponses;return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-content__options"},wp.element.createElement(Se.NumberInput,{className:"tribe-editor__rsvp-container-content__capacity-input",disabled:n,id:t,min:0,onChange:a,value:o}),wp.element.createElement(Se.Checkbox,{checked:c,className:"tribe-editor__rsvp-container-content__not-going-responses",disabled:n,id:r,label:Object(i.__)('Enable "Not Going" responses',"event-tickets"),onChange:s}))};bt.propTypes={capacityId:d.a.string.isRequired,isDisabled:d.a.bool.isRequired,notGoingId:d.a.string.isRequired,onTempCapacityChange:d.a.func.isRequired,onTempNotGoingResponsesChange:d.a.func.isRequired,tempCapacity:d.a.string.isRequired,tempNotGoingResponses:d.a.bool.isRequired};var Mt=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.capacityId=Ce()(),n.notGoingId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.isDisabled,n=e.onTempCapacityChange,r=e.onTempNotGoingResponsesChange,a=e.tempCapacity,i=e.tempNotGoingResponses,s=e.clientId,o={capacityId:this.capacityId,isDisabled:t,notGoingId:this.notGoingId,onTempCapacityChange:n,onTempNotGoingResponsesChange:r,tempCapacity:a,tempNotGoingResponses:i};return wp.element.createElement(c.Fragment,null,wp.element.createElement(yt,null),wp.element.createElement(bt,o),wp.element.createElement(dt,{clientId:s}),this.props.hasTicketsPlus&&wp.element.createElement(ht,null))}}]),t}(c.PureComponent);Mt.propTypes={clientId:d.a.string,hasTicketsPlus:d.a.bool,onTempCapacityChange:d.a.func,onTempNotGoingResponsesChange:d.a.func,tempCapacity:d.a.string,tempNotGoingResponses:d.a.bool};var St=Mt,Et=n(31),gt=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},vt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isDisabled:gt(e),tempCapacity:ve.d.getRSVPTempCapacity(e),tempNotGoingResponses:ve.d.getRSVPTempNotGoingResponses(e)}},function(e){return{onTempCapacityChange:function(t){e(ve.a.setRSVPTempCapacity(t.target.value)),e(ve.a.setRSVPHasChanges(!0))},onTempNotGoingResponsesChange:function(t){e(ve.a.setRSVPTempNotGoingResponses(t.target.checked)),e(ve.a.setRSVPHasChanges(!0))}}}))(St),kt=(n(502),function(e){var t=e.isDisabled;return wp.element.createElement(c.Fragment,null,t?wp.element.createElement(s.RSVPInactive,null):wp.element.createElement(s.RSVPActive,null),wp.element.createElement("span",{className:"tribe-editor__rsvp-container__icon-label"},Object(i.__)("RSVP","event-tickets")))});kt.propTypes={isDisabled:d.a.bool.isRequired};var Dt=function(e){var t=e.isDisabled,n=e.isSelected,r=e.clientId;return wp.element.createElement(he.ContainerPanel,{className:fe()("tribe-editor__rsvp-container",{"tribe-editor__rsvp-container--disabled":t}),layout:ye.a.rsvp,icon:wp.element.createElement(kt,{isDisabled:t}),header:wp.element.createElement(Ie,{isSelected:n}),content:wp.element.createElement(vt,{clientId:r})})};Dt.propTypes={isDisabled:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,clientId:d.a.string.isRequired};var Lt=Dt,Ot=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},Yt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:Ot(e)}}))(Lt),wt=function(e){var t=e.href,n=e.isDisabled;return wp.element.createElement(he.ActionButton,{asLink:!0,className:"tribe-editor__rsvp__action-button tribe-editor__rsvp__action-button--attendees",disabled:n,href:t,icon:wp.element.createElement(s.Attendees,null),target:"_blank"},Object(i.__)("Attendees","event-tickets"))};wt.propTypes={href:d.a.string,isDisabled:d.a.bool};var jt=wt,It=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{href:ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=tickets-attendees&event_id="+Object(ie.select)("core/editor").getCurrentPostId(),isDisabled:ve.d.getRSVPIsLoading(e)}}))(jt),Pt=n(53),Ct=function(e){var t=e.isDisabled,n=e.onClick;return wp.element.createElement(he.ActionButton,{className:"tribe-editor__rsvp__action-button tribe-editor__rsvp__action-button--settings",disabled:t,icon:wp.element.createElement(Le.Cog,null),onClick:n},Object(i.__)("Settings","event-tickets"))};Ct.defaultProps={onClick:n.n(Pt).a},Ct.propTypes={isDisabled:d.a.bool,onClick:d.a.func};var xt=Ct,Rt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:ve.d.getRSVPIsLoading(e)}},function(e){return{onClick:function(){return e(ve.a.setRSVPSettingsOpen(!0))}}}))(xt),At=(n(503),function(e){return e?Object(i.__)("Update RSVP","event-tickets"):Object(i.__)("Create RSVP","event-tickets")}),Ht=Object(i.__)("Cancel","event-tickets"),Nt=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onWarningClick=function(){n.setState({isWarningOpen:!n.state.isWarningOpen})},n.getActions=function(){var e=n.props,t=e.hasTicketsPlus,r=e.hasRecurrenceRules,a=e.isLoading,s=[wp.element.createElement(Rt,null)];if(t&&s.push(wp.element.createElement(It,null)),r){var o=n.state.isWarningOpen?"no":"info-outline",c=n.state.isWarningOpen?Object(i.__)("Hide Warning","event-tickets"):Object(i.__)("Warning","event-tickets");s.push(wp.element.createElement(he.WarningButton,{icon:o,onClick:n.onWarningClick,isDisabled:a},c))}return s},n.state={isWarningOpen:!1},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.created,n=e.isCancelDisabled,r=e.isConfirmDisabled,a=e.onCancelClick,s=e.onConfirmClick,o=e.showCancel;return wp.element.createElement(c.Fragment,null,wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__rsvp__action-dashboard",actions:this.getActions(),cancelLabel:Ht,confirmLabel:At(t),isCancelDisabled:n,isConfirmDisabled:r,onCancelClick:a,onConfirmClick:s,showCancel:o}),this.state.isWarningOpen&&wp.element.createElement("div",{className:"tribe-editor__rsvp__warning"},Object(i.__)("This is a recurring event. If you add tickets they will only show up on the next upcoming event in the recurrence pattern. The same ticket form will appear across all events in the series. Please configure your events accordingly.","event-tickets")))}}]),t}(c.PureComponent);Nt.propTypes={created:d.a.bool.isRequired,hasTicketsPlus:d.a.bool.isRequired,hasRecurrenceRules:d.a.bool.isRequired,isCancelDisabled:d.a.bool.isRequired,isConfirmDisabled:d.a.bool.isRequired,isLoading:d.a.bool.isRequired,onCancelClick:d.a.func.isRequired,onConfirmClick:d.a.func.isRequired,showCancel:d.a.bool.isRequired};var Vt=Nt,Ft=function(e){var t=!1;try{t=window.tribe[Et.plugins.constants.EVENTS_PRO_PLUGIN].data.blocks.recurring.selectors.hasRules(e)}catch(e){}return t},Kt=function(e){return!ve.d.getRSVPTempTitle(e)||!ve.d.getRSVPHasChanges(e)||ve.d.getRSVPIsLoading(e)||ve.d.getRSVPHasDurationError(e)},Wt=function(e,t){return function(){t(ve.a.setRSVPTempDetails({tempTitle:ve.d.getRSVPTitle(e),tempDescription:ve.d.getRSVPDescription(e),tempCapacity:ve.d.getRSVPCapacity(e),tempNotGoingResponses:ve.d.getRSVPNotGoingResponses(e),tempStartDate:ve.d.getRSVPStartDate(e),tempStartDateInput:ve.d.getRSVPStartDateInput(e),tempStartDateMoment:ve.d.getRSVPStartDateMoment(e),tempEndDate:ve.d.getRSVPEndDate(e),tempEndDateInput:ve.d.getRSVPEndDateInput(e),tempEndDateMoment:ve.d.getRSVPEndDateMoment(e),tempStartTime:ve.d.getRSVPStartTime(e),tempEndTime:ve.d.getRSVPEndTime(e),tempStartTimeInput:ve.d.getRSVPStartTimeInput(e),tempEndTimeInput:ve.d.getRSVPEndTimeInput(e)})),t(ve.a.setRSVPHasChanges(!1)),Object(ie.dispatch)("core/editor").clearSelectedBlock()}},Ut=function(e,t){return function(){var n={title:ve.d.getRSVPTempTitle(e),description:ve.d.getRSVPTempDescription(e),capacity:ve.d.getRSVPTempCapacity(e),notGoingResponses:ve.d.getRSVPTempNotGoingResponses(e),startDate:ve.d.getRSVPTempStartDate(e),startDateInput:ve.d.getRSVPTempStartDateInput(e),startDateMoment:ve.d.getRSVPTempStartDateMoment(e),endDate:ve.d.getRSVPTempEndDate(e),endDateInput:ve.d.getRSVPTempEndDateInput(e),endDateMoment:ve.d.getRSVPTempEndDateMoment(e),startTime:ve.d.getRSVPTempStartTime(e),endTime:ve.d.getRSVPTempEndTime(e),startTimeInput:ve.d.getRSVPTempStartTimeInput(e),endTimeInput:ve.d.getRSVPTempEndTimeInput(e)};ve.d.getRSVPCreated(e)?t(ve.e.updateRSVP(Ve()({},n,{id:ve.d.getRSVPId(e)}))):t(ve.e.createRSVP(Ve()({},n,{postId:Object(ie.select)("core/editor").getCurrentPostId()})))}},zt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e),hasRecurrenceRules:Ft(e),hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isCancelDisabled:ve.d.getRSVPIsLoading(e),isConfirmDisabled:Kt(e),isLoading:ve.d.getRSVPIsLoading(e),showCancel:ve.d.getRSVPCreated(e),state:e}},null,function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch;return Ve()({},n,a,{onCancelClick:Wt(r,i),onConfirmClick:Ut(r,i)})}))(Vt),Gt=(n(504),function(e){var t=e.image,n=e.isSettingsLoading,r=e.onRemove,a=e.onSelect,s={title:Object(i.__)("Ticket Header Image","event-tickets"),description:Object(i.__)("Select an image from your Media Library to display on emailed tickets and RSVPs. For best results, use a .jpg, .png, or .gif at least 1160px wide.","event-tickets"),className:"tribe-editor__rsvp__image-upload",buttonDisabled:n,buttonLabel:Object(i.__)("Upload Image","event-tickets"),image:t,onRemove:r,onSelect:a,removeButtonDisabled:n};return wp.element.createElement(Se.ImageUpload,s)});Gt.propTypes={image:d.a.shape({alt:d.a.string.isRequired,id:d.a.number.isRequired,src:d.a.string.isRequired}).isRequired,isSettingsLoading:d.a.bool.isRequired,onRemove:d.a.func.isRequired,onSelect:d.a.func.isRequired};var Bt=Gt,qt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{image:{id:ve.d.getRSVPHeaderImageId(e),alt:ve.d.getRSVPHeaderImageAlt(e),src:ve.d.getRSVPHeaderImageSrc(e)},isSettingsLoading:ve.d.getRSVPIsSettingsLoading(e)}},function(e){return{onRemove:function(){return e(ve.a.deleteRSVPHeaderImage())},onSelect:function(t){return e(ve.a.updateRSVPHeaderImage(t))}}}))(Bt),Jt=(n(505),function(e){var t=e.isSettingsLoading,n=e.onCloseClick;return wp.element.createElement(he.SettingsDashboard,{className:fe()("tribe-editor__rsvp__settings-dashboard",{"tribe-editor__rsvp__settings-dashboard--loading":t}),closeButtonDisabled:t,content:wp.element.createElement(c.Fragment,null,wp.element.createElement(qt,null),t&&wp.element.createElement(Te.Spinner,null)),onCloseClick:n})});Jt.propTypes={isSettingsLoading:d.a.bool.isRequired,onCloseClick:d.a.func.isRequired};var $t=Jt,Zt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsLoading:ve.d.getRSVPIsSettingsLoading(e)}},function(e){return{onCloseClick:function(){return e(ve.a.setRSVPSettingsOpen(!1))}}}))($t),Qt=function(e){var t=e.isSelected,n=e.isSettingsOpen;return t?n?wp.element.createElement(Zt,null):wp.element.createElement(zt,null):null};Qt.propTypes={isSelected:d.a.bool.isRequired,isSettingsOpen:d.a.bool.isRequired};var Xt=Qt,en=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsOpen:ve.d.getRSVPSettingsOpen(e)}}))(Xt),tn=n(95),nn={className:"tribe-editor__rsvp__inactive-block",icon:wp.element.createElement(s.RSVPInactive,null),layout:tn.a.rsvp},rn=function(e){var t=e.created;return nn.title=t?Object(i.__)("RSVP is not currently active","event-tickets"):Object(i.__)("There is no RSVP configured","event-tickets"),nn.description=t?Object(i.__)("Edit this block to change RSVP settings.","event-tickets"):Object(i.__)("Edit this block to create an RSVP form.","event-tickets"),wp.element.createElement(tn.b,nn)};rn.propTypes={created:d.a.bool.isRequired};var an=rn,sn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e)}}))(an),on=n(28),cn=n(19),un=(n(506),function(e){function t(){var e,n,r,a;oe()(this,t);for(var s=arguments.length,o=Array(s),c=0;c<s;c++)o[c]=arguments[c];return n=r=_e()(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(o))),r.renderPostTypes=function(){return r.props.isFetchingPosts?wp.element.createElement(Te.Spinner,null):r.props.postOptions.length?wp.element.createElement(Te.MenuGroup,null,wp.element.createElement(Te.MenuItemsChoice,{choices:r.props.postOptions,value:r.props.postValue,onSelect:r.props.onPostSelect})):wp.element.createElement(Te.Notice,{isDismissible:!1,status:"warning"},Object(i.__)("No posts found","event-tickets"))},a=n,_e()(r,a)}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.initialize()}},{key:"render",value:function(){return wp.element.createElement(Te.Modal,{title:this.props.title,onRequestClose:this.props.hideModal,className:"tribe-editor__tickets__move-modal"},wp.element.createElement("label",{htmlFor:"post_type"},Object(i.__)("You can optionally focus on a specific post type:","event-tickets")),wp.element.createElement(Se.Select,{id:"post_type",options:this.props.postTypeOptions,onChange:this.props.onPostTypeChange,value:this.props.postTypeOptionValue}),wp.element.createElement("label",{htmlFor:"search"},Object(i.__)("You can also enter keywords to help find the target event by title or description","event-tickets")),wp.element.createElement(Se.Input,{id:"search",type:"text",onChange:this.props.onSearchChange,value:this.props.search}),wp.element.createElement("label",null,Object(i.__)("Select the post you wish to move the ticket type to:","event-tickets")),this.renderPostTypes(),wp.element.createElement("footer",null,wp.element.createElement(Te.Button,{isLarge:!0,isPrimary:!0,isBusy:this.props.isModalSubmitting,disabled:!this.props.hasSelectedPost||this.props.isFetchingPosts,onClick:this.props.onSubmit},Object(i.__)("Finish!","event-tickets"))))}}]),t}(c.PureComponent));un.propTypes={hasSelectedPost:d.a.bool.isRequired,hideModal:d.a.func.isRequired,initialize:d.a.func.isRequired,isFetchingPosts:d.a.bool.isRequired,isModalSubmitting:d.a.bool.isRequired,onPostSelect:d.a.func.isRequired,onPostTypeChange:d.a.func.isRequired,onSearchChange:d.a.func.isRequired,onSubmit:d.a.func.isRequired,postOptions:d.a.arrayOf(d.a.object),postTypeOptions:d.a.arrayOf(d.a.object),postTypeOptionValue:d.a.object,postValue:d.a.string.isRequired,search:d.a.string.isRequired,title:d.a.string.isRequired},un.defaultProps={title:Object(i.__)("Move Ticket Types","event-tickets")};var dn=un,_n=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasSelectedPost:on.i(e),isFetchingPosts:on.k(e),isFetchingPostTypes:on.j(e),isModalSubmitting:on.m(e),postOptions:on.f(e),postTypeOptions:on.h(e),postTypeOptionValue:on.g(e),postValue:on.d(e),search:on.c(e)}},function(e,t){return{initialize:function(){return e({type:cn.h})},hideModal:function(){return e(Object(it.a)())},onSearchChange:function(t){return e(Object(it.b)({search_terms:t.target.value}))},onPostTypeChange:function(t){return e(Object(it.b)({post_type:t.value}))},onPostSelect:function(t){return e(Object(it.b)({target_post_id:t}))},onSubmit:function(){return e({type:cn.o})}}}))(dn),ln=(n(507),function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){!this.props.rsvpId&&this.props.initializeRSVP()}},{key:"render",value:function(){var e=this.props,t=e.created,n=e.isInactive,r=e.isLoading,a=e.isSelected,i=e.clientId,s=e.isModalShowing;return wp.element.createElement(c.Fragment,null,!a&&(t&&n||!t)?wp.element.createElement(sn,null):wp.element.createElement("div",{className:fe()("tribe-editor__rsvp",{"tribe-editor__rsvp--selected":a},{"tribe-editor__rsvp--loading":r})},wp.element.createElement(Yt,{isSelected:a,clientId:i}),wp.element.createElement(en,{isSelected:a}),r&&wp.element.createElement(Te.Spinner,null)),s&&wp.element.createElement(_n,null))}}]),t}(c.PureComponent));ln.propTypes={clientId:d.a.string.isRequired,created:d.a.bool.isRequired,initializeRSVP:d.a.func.isRequired,isInactive:d.a.bool.isRequired,isLoading:d.a.bool.isRequired,isModalShowing:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,rsvpId:d.a.number.isRequired};var mn=ln,pn=function(e){var t=ve.d.getRSVPStartDateMoment(e),n=ve.d.getRSVPStartTimeNoSeconds(e),r=ve.d.getRSVPEndDateMoment(e),a=ve.d.getRSVPEndTimeNoSeconds(e);if(!t||!r)return!1;var i=ze.moment.setTimeInSeconds(t.clone(),ze.time.toSeconds(n,ze.time.TIME_FORMAT_HH_MM)),s=ze.moment.setTimeInSeconds(r.clone(),ze.time.toSeconds(a,ze.time.TIME_FORMAT_HH_MM)),o=ae()();return!(o.isAfter(i)&&o.isBefore(s))},fn=function(e,t){return function(){var n=Object(ie.select)("core/editor").getCurrentPostId();e(ve.e.getRSVP(n));var r=t.attributes,a=void 0===r?{}:r;parseInt(a.headerImageId,10)&&e(ve.a.fetchRSVPHeaderImage(a.headerImageId)),a.goingCount&&e(ve.a.setRSVPGoingCount(parseInt(a.goingCount,10))),a.notGoingCount&&e(ve.a.setRSVPNotGoingCount(parseInt(a.notGoingCount,10)))}},Tn=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ve.d.getRSVPId(e);return{created:ve.d.getRSVPCreated(e),isInactive:pn(e),isLoading:ve.d.getRSVPIsLoading(e),isModalShowing:Object(on.l)(e)&&Object(on.e)(e)===t,rsvpId:t}},function(e,t){return{initializeRSVP:function(){return e(ve.a.initializeRSVP())},onBlockRemoved:function(){return e(ve.a.deleteRSVP())},setInitialState:fn(e,t)}}),Object(ke.withSaveData)())(mn),hn=n(8),yn={id:"rsvp",title:Object(i.__)("RSVP","event-tickets"),description:Object(i.__)("Find out who is planning to attend!","event-tickets"),icon:wp.element.createElement(s.RSVP,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1,multiple:!1},attributes:{goingCount:{type:"integer",source:"meta",meta:hn.g},notGoingCount:{type:"integer",source:"meta",meta:hn.j},headerImageId:{type:"integer",source:"meta",meta:hn.i}},edit:Tn,save:function(){return null}},bn=n(96),Mn=function(e){var t=e.onClick;return wp.element.createElement(he.ActionButton,{icon:wp.element.createElement(Le.Cog,null),onClick:t},Object(i.__)("Settings","event-tickets"))};Mn.propTypes={onClick:d.a.func};var Sn=Mn,En=n(6),gn=Object(j.c)(Object(ke.withStore)(),ne(null,function(e){return{onClick:function(){return e(En.a.openSettings())}}}))(Sn),vn=function(e){var t=e.href;return t?wp.element.createElement(he.ActionButton,{asLink:!0,href:t,icon:wp.element.createElement(s.Orders,null),target:"_blank"},Object(i.__)("Orders","event-tickets")):null};vn.propTypes={href:d.a.string.isRequired};var kn=vn,Dn=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ze.globals.adminUrl(),n=Object(ie.select)("core/editor").getCurrentPostType(),r=Object(ie.select)("core/editor").getCurrentPostId(),a=En.f.getTicketsProvider(e),i=En.b.TICKET_ORDERS_PAGE_SLUG[a];return{href:i?t+"edit.php?post_type="+n+"&page="+i+"&event_id="+r:""}}))(kn),Ln=function(e){var t=e.href;return e.canCreateTickets&&wp.element.createElement(he.ActionButton,{asLink:!0,href:t,icon:wp.element.createElement(s.Attendees,null),target:"_blank"},Object(i.__)("Attendees","event-tickets"))};Ln.propTypes={href:d.a.string.isRequired,canCreateTickets:d.a.bool};var On=Ln,Yn=Object(j.c)(Object(ke.withStore)(),ne(function(){return{href:ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=tickets-attendees&event_id="+Object(ie.select)("core/editor").getCurrentPostId(),canCreateTickets:En.f.canCreateTickets()}}))(On),wn=(n(508),Object(i.__)("Add Tickets","event-tickets")),jn=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onWarningClick=function(){n.setState({isWarningOpen:!n.state.isWarningOpen})},n.getActions=function(){var e=n.props,t=e.hasCreatedTickets,r=e.hasOrdersPage,a=e.hasRecurrenceRules,s=e.hasTicketsPlus,o=[wp.element.createElement(gn,null)];if(t&&(s&&o.push(wp.element.createElement(Yn,null)),r&&o.push(wp.element.createElement(Dn,null))),a){var c=n.state.isWarningOpen?"no":"info-outline",u=n.state.isWarningOpen?Object(i.__)("Hide Warning","event-tickets"):Object(i.__)("Warning","event-tickets");o.push(wp.element.createElement(he.WarningButton,{icon:c,onClick:n.onWarningClick},u))}return o},n.state={isWarningOpen:!1},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props.onConfirmClick;return wp.element.createElement(c.Fragment,null,wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__tickets__action-dashboard",actions:this.getActions(),confirmLabel:wn,onConfirmClick:e,showCancel:!1}),this.state.isWarningOpen&&wp.element.createElement("div",{className:"tribe-editor__tickets__warning"},Object(i.__)("This is a recurring event. If you add tickets they will only show up on the next upcoming event in the recurrence pattern. The same ticket form will appear across all events in the series. Please configure your events accordingly.","event-tickets")))}}]),t}(c.PureComponent);jn.propTypes={hasCreatedTickets:d.a.bool,hasOrdersPage:d.a.bool,hasRecurrenceRules:d.a.bool,hasTicketsPlus:d.a.bool,onConfirmClick:d.a.func};var In=jn,Pn=function(e){var t=!1;try{t=window.tribe[Et.plugins.constants.EVENTS_PRO_PLUGIN].data.blocks.recurring.selectors.hasRules(e)}catch(e){}return t},Cn=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketsProvider(e),a=En.b.TICKET_ORDERS_PAGE_SLUG[n];return{hasCreatedTickets:En.f.hasCreatedTickets(e),hasOrdersPage:Boolean(a),hasRecurrenceRules:Pn(e),hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),onConfirmClick:function(){var e=t.clientId,n=Object(ie.select)("core/editor").getBlockCount,a=Object(ie.dispatch)("core/editor").insertBlock,i=n(e);a(Object(r.createBlock)("tribe/tickets-item",{}),i,e)}}}))(In),xn=(n(509),function(e){var t=e.label,n=e.items,r=e.right;return wp.element.createElement("div",{className:"tribe-editor__tickets__capacity-row"},wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-left"},t&&wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-label"},t),n&&wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-items"},n)),wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-right"},r))});xn.propTypes={label:d.a.string,items:d.a.string,right:d.a.node},xn.defaultProps={label:"",items:"",right:""};var Rn=xn,An=(n(510),function(e){var t=e.isSettingsLoading,n=e.independentCapacity,r=e.sharedCapacity,a=e.independentAndSharedCapacity,s=e.independentTicketItems,o=e.sharedTicketItems,c=e.onSharedCapacityChange,u=wp.element.createElement(Se.NumberInput,{onChange:c,value:r,disabled:t,min:0});return wp.element.createElement("div",{className:"tribe-editor__tickets__capacity-table"},wp.element.createElement("h3",{className:"tribe-editor__tickets__capacity-table-title"},Object(i.__)("Capacity","event-tickets")),wp.element.createElement(Rn,{label:Object(i.__)("Shared capacity","event-tickets"),items:o,right:u}),wp.element.createElement(Rn,{label:Object(i.__)("Independent capacity","event-tickets"),items:s,right:n}),wp.element.createElement(Rn,{label:Object(i.__)("Total Capacity","event-tickets"),right:a}))});An.propTypes={isSettingsLoading:d.a.bool,independentCapacity:d.a.number,sharedCapacity:d.a.string,independentAndSharedCapacity:d.a.number,independentTicketItems:d.a.string,sharedTicketItems:d.a.string,onSharedCapacityChange:d.a.func};var Hn=An,Nn=function(e){var t=e.filter(function(e){return e.details.title}).map(function(e){return e.details.title}).join(", ");return t?" ("+t+") ":""},Vn=function(e){var t=En.f.getIndependentTickets(e);return Nn(t)},Fn=function(e){var t=En.f.getSharedTickets(e);return Nn(t)},Kn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsLoading:En.f.getTicketsIsSettingsLoading(e),independentCapacity:En.f.getIndependentTicketsCapacity(e),sharedCapacity:En.f.getTicketsSharedCapacity(e),independentAndSharedCapacity:En.f.getIndependentAndSharedTicketsCapacity(e),independentTicketItems:Vn(e),sharedTicketItems:Fn(e)}},function(e){return{onSharedCapacityChange:function(t){e(En.a.setTicketsSharedCapacity(t.target.value)),e(En.a.setTicketsTempSharedCapacity(t.target.value))}}}))(Hn),Wn=(n(511),function(e){var t=e.image,n=e.isSettingsLoading,r=e.onRemove,a=e.onSelect,s={title:Object(i.__)("Ticket Header Image","event-tickets"),description:Object(i.__)("Select an image from your Media Library to display on emailed tickets and RSVPs. For best results, use a .jpg, .png, or .gif at least 1160px wide.","event-tickets"),className:"tribe-editor__rsvp__image-upload",buttonDisabled:n,buttonLabel:Object(i.__)("Upload Image","event-tickets"),image:t,onRemove:r,onSelect:a,removeButtonDisabled:n};return wp.element.createElement(Se.ImageUpload,s)});Wn.propTypes={image:d.a.shape({alt:d.a.string.isRequired,id:d.a.number.isRequired,src:d.a.string.isRequired}).isRequired,isSettingsLoading:d.a.bool.isRequired,onRemove:d.a.func.isRequired,onSelect:d.a.func.isRequired};var Un=Wn,zn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{image:{id:En.f.getTicketsHeaderImageId(e),alt:En.f.getTicketsHeaderImageAlt(e),src:En.f.getTicketsHeaderImageSrc(e)},isSettingsLoading:En.f.getTicketsIsSettingsLoading(e)}},function(e){return{onSelect:function(t){return e(En.a.updateTicketsHeaderImage(t))},onRemove:function(){return e(En.a.deleteTicketsHeaderImage())}}}))(Un),Gn=(n(512),function(e){var t=e.hasTicketsPlus,n=e.isSettingsLoading,r=e.onCloseClick;return wp.element.createElement(he.SettingsDashboard,{className:fe()("tribe-editor__tickets__settings-dashboard",{"tribe-editor__tickets__settings-dashboard--loading":n}),closeButtonDisabled:n,content:wp.element.createElement(c.Fragment,null,t&&wp.element.createElement(Kn,null),wp.element.createElement(zn,null),n&&wp.element.createElement(Te.Spinner,null)),onCloseClick:r})});Gn.propTypes={hasTicketsPlus:d.a.bool,isSettingsLoading:d.a.bool.isRequired,onCloseClick:d.a.func.isRequired};var Bn=Gn,qn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isSettingsLoading:En.f.getTicketsIsSettingsLoading(e)}},function(e){return{onCloseClick:function(){return e(En.a.closeSettings())}}}))(Bn),Jn=function(e){var t=e.clientId,n=e.isSelected,r=e.isSettingsOpen;return n?r?wp.element.createElement(qn,null):wp.element.createElement(Cn,{clientId:t}):null};Jn.propTypes={clientId:d.a.string,isSelected:d.a.bool,isSettingsOpen:d.a.bool};var $n=Jn,Zn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsOpen:En.f.getTicketsIsSettingsOpen(e)}}))($n),Qn=(n(513),function(e){var t=e.available,n=e.total,r=wp.element.createElement(he.NumericLabel,{className:fe()("tribe-editor__tickets__availability-label","tribe-editor__tickets__availability-label--available","tribe-tooltip"),count:t,singular:Object(i.__)("%d ticket available","event-tickets"),plural:Object(i.__)("%d tickets available","event-tickets")}),a=wp.element.createElement(he.NumericLabel,{className:fe()("tribe-editor__tickets__availability-label","tribe-editor__tickets__availability-label--total"),count:n,singular:Object(i.__)("%d total ticket","event-tickets"),plural:Object(i.__)("%d total tickets","event-tickets")});return wp.element.createElement("div",{className:"tribe-editor__tickets__availability"},wp.element.createElement("span",{class:"tribe-tooltip",title:Object(i.__)("Ticket availability is based on the lowest number of inventory, stock, and capacity.","event-tickets")},r,wp.element.createElement("span",{className:"dashicons dashicons-info"})),a)});Qn.propTypes={available:d.a.number,total:d.a.number};var Xn=Qn,er=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{total:En.f.getIndependentAndSharedTicketsCapacity(e),available:En.f.getIndependentAndSharedTicketsAvailable(e)}}))(Xn),tr=(n(514),function(){return wp.element.createElement("div",{className:"tribe-editor__tickets__overlay"})}),nr=function(e){var t=e.allTicketsPast,n=e.canCreateTickets,r=e.hasCreatedTickets,a=e.hasOverlay,o=e.showAvailability,c=e.showInactiveBlock,u={title:"",description:""};n?r?u.title=t?Object(i.__)("Tickets are no longer available","event-tickets"):Object(i.__)("Tickets are not yet available","event-tickets"):(u.title=Object(i.__)("There are no tickets yet","event-tickets"),u.description=Object(i.__)("Edit this block to create your first ticket.","event-tickets")):(u.title=Object(i.__)("There is no ecommerce available","event-tickets"),u.description=Object(i.__)("To create tickets, you'll need to enable an ecommerce solution.","event-tickets"));var d=fe()({"tribe-editor__tickets__inner-blocks":!0,"tribe-editor__tickets__inner-blocks--show":!c});return wp.element.createElement("div",{className:"tribe-editor__tickets__container"},wp.element.createElement("div",{className:d},wp.element.createElement(bn.InnerBlocks,{allowedBlocks:["tribe/tickets-item"]})),c&&wp.element.createElement(he.InactiveBlock,{layout:tn.a.ticket,title:u.title,description:u.description,icon:wp.element.createElement(s.TicketInactive,null)}),o&&wp.element.createElement(er,null),a&&wp.element.createElement(tr,null))};nr.propTypes={allTicketsPast:d.a.bool,canCreateTickets:d.a.bool,hasCreatedTickets:d.a.bool,hasOverlay:d.a.bool,showAvailability:d.a.bool,showInactiveBlock:d.a.bool};var rr=nr,ar=function(e,t){return En.f.getTicketsIsSettingsOpen(e)||!En.f.hasATicketSelected(e)&&!t.isSelected},ir=function(e,t){var n=t.isSelected&&!En.f.hasTickets(e),r=!(t.isSelected||En.f.hasATicketSelected(e)||En.f.hasCreatedTickets(e)&&En.f.hasTicketOnSale(e));return n||r},sr=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{allTicketsPast:En.f.allTicketsPast(e),canCreateTickets:En.f.canCreateTickets(),hasCreatedTickets:En.f.hasCreatedTickets(e),hasOverlay:ar(e,t),showAvailability:t.isSelected&&En.f.hasCreatedTickets(e),showInactiveBlock:ir(e,t)}}))(rr),or=(n(515),Object(i.__)("It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event. ","event-tickets")),cr=Object(i.__)("Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin","event-tickets"),ur=function(e){var t=e.provider,n=e.onProviderChange,r=Ke()(e,["provider","onProviderChange"]);return wp.element.createElement("div",{className:"tribe-editor__tickets-control-container"},wp.element.createElement("input",Ve()({className:"tribe-editor__tickets-control__input tribe-editor__tickets-control__input--radio",type:"radio",id:t.class,name:t.class,onChange:n},r)),wp.element.createElement("label",{className:"tribe-editor__tickets-control__label",htmlFor:t.class},t.name))},dr=function(e){var t=e.hasMultipleProviders,n=e.providers,r=e.selectedProvider,a=e.onProviderChange;return t&&wp.element.createElement(bn.InspectorControls,{key:"inspector"},wp.element.createElement(Te.PanelBody,{title:Object(i.__)("Tickets Settings","event-tickets")},wp.element.createElement(Te.PanelRow,null,wp.element.createElement("fieldset",{className:"tribe-editor__tickets-controls-provider"},wp.element.createElement("legend",null,Object(i.__)("Sell tickets using","event-tickets")),wp.element.createElement("p",null,or,wp.element.createElement("em",null,cr)),n.map(function(e,t){return wp.element.createElement(ur,{key:"provider-option-"+(t+1),provider:e,onProviderChange:a,checked:r===e.class})})))))};dr.propTypes={hasMultipleProviders:d.a.bool,providers:d.a.arrayOf(d.a.shape({name:d.a.string,class:d.a.string})),selectedProvider:d.a.string,onProviderChange:d.a.func};var _r=dr,lr=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasMultipleProviders:En.f.hasMultipleTicketProviders(),providers:En.f.getTicketProviders(),selectedProvider:En.f.getTicketsProvider(e)}},function(e){return{onProviderChange:function(t){return e(En.a.setTicketsProvider(t.target.name))}}}),Object(ke.withSaveData)())(_r),mr=(n(516),function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.onBlockUpdate(this.props.isSelected)}},{key:"componentDidUpdate",value:function(e){e.isSelected!==this.props.isSelected&&this.props.onBlockUpdate(this.props.isSelected)}},{key:"render",value:function(){var e=this.props,t=e.isSelected,n=e.canCreateTickets,r=e.isSettingsOpen,a=e.clientId;return wp.element.createElement("div",{className:fe()("tribe-editor__tickets",{"tribe-editor__tickets--selected":t},{"tribe-editor__tickets--settings-open":r})},wp.element.createElement(sr,{isSelected:t}),n&&wp.element.createElement(Zn,{isSelected:t,clientId:a}),wp.element.createElement(lr,null))}}]),t}(c.PureComponent));mr.propTypes={canCreateTickets:d.a.bool,clientId:d.a.string,hasProviders:d.a.bool,header:d.a.string,isSelected:d.a.bool,isSettingsOpen:d.a.bool,onBlockUpdate:d.a.func};var pr=mr,fr=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=En.f.getTicketsHeaderImageId(e);return{header:t?""+t:"",hasProviders:En.f.hasTicketProviders(),isSettingsOpen:En.f.getTicketsIsSettingsOpen(e),provider:En.f.getTicketsProvider(e),sharedCapacity:En.f.getTicketsSharedCapacity(e),canCreateTickets:En.f.canCreateTickets()}},function(e){return{setInitialState:function(t){e(En.a.setTicketsInitialState(t))},onBlockUpdate:function(t){e(En.a.setTicketsIsSelected(t))},onBlockRemoved:function(){e(En.a.resetTicketsBlock())}}}),Object(ke.withSaveData)())(pr),Tr={id:"tickets",title:Object(i.__)("Tickets","event-tickets"),description:Object(i.__)("Sell tickets and register attendees.","event-tickets"),icon:wp.element.createElement(s.Tickets,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1,multiple:!1},attributes:{sharedCapacity:{type:"string",source:"meta",meta:hn.d},header:{type:"string",source:"meta",meta:hn.i},provider:{type:"string",source:"meta",meta:hn.e},tickets:{type:"array",source:"meta",meta:hn.c}},edit:fr,save:function(){return wp.element.createElement("div",null,wp.element.createElement(bn.InnerBlocks.Content,null))}},hr=(n(517),n(518),function(e){var t=e.hasAttendeeInfoFields,n=e.isDisabled,r=e.isSelected,a=e.onTempTitleChange,s=e.tempTitle,o=e.title,u=t&&wp.element.createElement(Se.Tooltip,{labelClassName:"tribe-editor__ticket__container-header-clipboard-tooltip",label:wp.element.createElement(Le.Clipboard,null),text:Object(i.__)("This ticket has Attendee Information Fields configured.","event-tickets")});return wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-title"},r?wp.element.createElement(c.Fragment,null,wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-title-input",value:s,placeholder:Object(i.__)("Ticket Type *","event-tickets"),onChange:a,disabled:n,required:!0}),u):wp.element.createElement(c.Fragment,null,wp.element.createElement("h3",{className:"tribe-editor__ticket__container-header-title-label"},o),u,wp.element.createElement(Le.Pencil,null)))});hr.propTypes={hasAttendeeInfoFields:d.a.bool,isDisabled:d.a.bool,isSelected:d.a.bool,onTempTitleChange:d.a.func,tempTitle:d.a.string,title:d.a.string};var yr=hr,br=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasAttendeeInfoFields:En.f.getTicketHasAttendeeInfoFields(e,t),isDisabled:En.f.isTicketDisabled(e,t),tempTitle:En.f.getTicketTempTitle(e,t),title:En.f.getTicketTitle(e,t)}},function(e,t){return{onTempTitleChange:function(n){var r=t.clientId;e(En.a.setTicketTempTitle(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(yr),Mr=(n(519),function(e){var t=e.isDisabled,n=e.isSelected,r=e.onTempDescriptionChange,a=e.tempDescription,s=e.description;return n?wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-description-input",value:a,placeholder:Object(i.__)("Description","event-tickets"),onChange:r,disabled:t}):wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-description"},s)});Mr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,onTempDescriptionChange:d.a.func,tempDescription:d.a.string,description:d.a.string};var Sr=Mr,Er=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),tempDescription:En.f.getTicketTempDescription(e,t),description:En.f.getTicketDescription(e,t)}},function(e,t){return{onTempDescriptionChange:function(n){var r=t.clientId;e(En.a.setTicketTempDescription(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(Sr),gr=n(23),vr=(n(520),function(e){var t=e.isDisabled,n=e.currencyPosition,r=e.currencySymbol,a=e.onTempPriceChange,s=e.tempPrice;return wp.element.createElement(c.Fragment,null,n===gr.PREFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},r),wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-price-input",value:s,placeholder:Object(i.__)("0","event-tickets"),onChange:a,disabled:t,type:"number",min:"0"}),n===gr.SUFFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},r))});vr.propTypes={isDisabled:d.a.bool,currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,onTempPriceChange:d.a.func,tempPrice:d.a.string};var kr=function(e){var t=e.currencyPosition,n=e.currencySymbol,r=e.price;return wp.element.createElement(c.Fragment,null,t===gr.PREFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},n),wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-value"},r),t===gr.SUFFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},n))};kr.propTypes={currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,price:d.a.string};var Dr=function(e){var t=e.isDisabled,n=e.isSelected,r=e.currencyPosition,a=e.currencySymbol,i=e.onTempPriceChange,s=e.tempPrice,o=e.price;return wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-price"},n?wp.element.createElement(vr,{currencyPosition:r,currencySymbol:a,onTempPriceChange:i,tempPrice:s,isDisabled:t}):wp.element.createElement(kr,{currencyPosition:r,currencySymbol:a,price:o}))};Dr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,onTempPriceChange:d.a.func,tempPrice:d.a.string,price:d.a.string};var Lr=Dr,Or=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),currencyPosition:En.f.getTicketCurrencyPosition(e,t),currencySymbol:En.f.getTicketCurrencySymbol(e,t),tempPrice:En.f.getTicketTempPrice(e,t),price:En.f.getTicketPrice(e,t)||"0"}},function(e,t){return{onTempPriceChange:function(n){var r=t.clientId;e(En.a.setTicketTempPrice(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(Lr),Yr=(n(521),function(e){var t=e.children,n=e.className,r=e.value,a=e.total;if(0===r||0===a)return null;var i=void 0;try{i=ze.number.percentage(r,a)}catch(e){i=0}var s={width:Math.max(0,Math.min(100,i)).toFixed(2)+"%"};return wp.element.createElement("span",{className:fe()("tribe-editor__quantity-bar__bar",n),style:s},t)});Yr.propTypes={children:d.a.node,className:d.a.oneOfType([d.a.string,d.a.arrayOf(d.a.string),ze.TribePropTypes.nullType]),value:d.a.number,total:d.a.number},Yr.defaultProps={className:null,value:0,total:0};var wr=Yr,jr=function(e){var t=e.sharedSold,n=e.sold,r=e.capacity,a=e.total,s=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__quantity-bar"},!s&&wp.element.createElement(c.Fragment,null,wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--shared-sold",value:t,total:a}),wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--sold",value:n,total:a}),!!r&&!(r===a)&&wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--capacity",value:r,total:a},wp.element.createElement("span",{className:"tribe-editor__quantity-bar__bar-label"},Object(i.__)("cap","event-tickets")))))};jr.propTypes={sharedSold:d.a.number,capacity:d.a.number,sold:d.a.number,total:d.a.number,isDisabled:d.a.bool},jr.defaultProps={sharedSold:0,capacity:0,sold:0,total:0,isDisabled:!1};var Ir=jr,Pr=(n(522),function(e){var t=e.isDisabled,n=e.isSelected,r=e.isShared,a=e.isUnlimited,s=e.sold,o=e.capacity,c=e.sharedSold,u=e.sharedCapacity,d=r?u:o;return!n&&wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-quantity tribe-tooltip",title:Object(i.__)("This pertains to Orders that have been marked Completed.","event-tickets")},wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-quantity-label"},a?Object(i.sprintf)(Object(i.__)("%d sold","event-tickets"),s):Object(i.sprintf)(Object(i.__)("%d of %d sold","event-tickets"),s,d),wp.element.createElement("span",{class:"dashicons dashicons-info"})),a?wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-quantity-unlimited"},Object(i.__)("unlimited","event-tickets")):wp.element.createElement(Ir,{sold:s,sharedSold:c,capacity:o,total:d,isDisabled:t}))});Pr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,isShared:d.a.bool,isUnlimited:d.a.bool,sold:d.a.number,capacity:d.a.number,sharedSold:d.a.number,sharedCapacity:d.a.number},Pr.defaultProps={sold:0,sharedCapacity:0,capacity:0};var Cr=Pr,xr=function(e,t){return t?En.f.getSharedTicketsSold(e):0},Rr=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.isSharedTicket(e,t);return{isDisabled:En.f.isTicketDisabled(e,t),isShared:n,isUnlimited:En.f.isUnlimitedTicket(e,t),sold:En.f.getTicketSold(e,t),capacity:En.f.getTicketCapacityInt(e,t),sharedSold:xr(e,n),sharedCapacity:En.f.getTicketsSharedCapacityInt(e)}}))(Cr),Ar=(n(523),function(e){var t=e.clientId,n=e.isSelected;return wp.element.createElement(c.Fragment,null,wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-details"},wp.element.createElement(br,{clientId:t,isSelected:n}),wp.element.createElement(Er,{clientId:t,isSelected:n})),wp.element.createElement(Or,{clientId:t,isSelected:n}),wp.element.createElement(Rr,{clientId:t,isSelected:n}))});Ar.propTypes={clientId:d.a.string,isSelected:d.a.bool};var Hr=Ar,Nr=n(87),Vr=n.n(Nr),Fr=n(112),Kr=n.n(Fr),Wr=n(490),Ur=(n(524),En.b.INDEPENDENT),zr=En.b.SHARED,Gr=En.b.TICKET_TYPES,Br=En.d.CAPACITY_TYPE_OPTIONS,qr=function(e){var t=e.className,n=e.id,r=e.label,a=Ke()(e,["className","id","label"]);return wp.element.createElement(Se.LabeledItem,{className:fe()("tribe-editor__labeled-number-input",t),forId:n,label:r,isLabel:!0},wp.element.createElement(Se.NumberInput,a))};qr.propTypes={className:d.a.string,id:d.a.string,label:d.a.string};var Jr=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getInputs=function(){var e=n.props,t=e.isDisabled,r=e.sharedCapacity,a=e.tempCapacityType,s=e.tempCapacity,o=e.tempSharedCapacity,c=e.onTempCapacityChange,u=e.onTempSharedCapacityChange,d=[];if(a===Gr[zr]&&""===r&&d.push(wp.element.createElement(qr,{key:"shared-capacity",className:fe()("tribe-editor__ticket__capacity-input-row","tribe-editor__ticket__capacity-input-row--shared-capacity"),id:n.ids.sharedCapacity,label:Object(i.__)("Set shared capacity:","event-tickets"),value:o,onChange:u,disabled:t,min:0,required:!0})),Kr()([Gr[zr],Gr[Ur]],a)){var _={},l=a===Gr[zr]?zr:Ur;if(a===Gr[zr]&&(r||o)){var m=r||o;_.max=parseInt(m,10)||0}a===Gr[Ur]&&(_.required=!0),_.label=a===Gr[zr]?Object(i.__)("(optional) Limit sales of this ticket to:","event-tickets"):Object(i.__)("Number of tickets available","event-tickets"),d.push(wp.element.createElement(qr,Ve()({key:"capacity",className:fe()("tribe-editor__ticket__capacity-input-row","tribe-editor__ticket__capacity-input-row--capacity","tribe-editor__ticket__capacity-input-row--capacity-"+l),id:n.ids.capacity,value:s,onChange:c,disabled:t,min:0},_)))}return d},n.getCapacityForm=function(){var e=n.props,t=e.isDisabled,r=e.tempCapacityTypeOption,a=e.onTempCapacityTypeChange;return wp.element.createElement(c.Fragment,null,wp.element.createElement(Se.Select,{id:n.ids.select,className:"tribe-editor__ticket__capacity-type-select",backspaceRemovesValue:!1,value:r,isSearchable:!1,isDisabled:t,options:Br,onChange:a}),n.getInputs())},n.getNoPlusCapacityForm=function(){var e=n.props,t=e.isDisabled,r=e.tempCapacity,a=e.onTempCapacityNoPlusChange;return wp.element.createElement(c.Fragment,null,wp.element.createElement(Se.NumberInput,{className:"tribe-editor__ticket__capacity-input",id:n.ids.capacity,value:r,onChange:a,disabled:t,min:0}),wp.element.createElement("span",{className:"tribe-editor__ticket__capacity-input-helper-text"},Object(i.__)("Leave blank for unlimited","event-tickets")))},n.ids={select:Ce()("capacity-type-"),capacity:Ce()("capacity-"),sharedCapacity:Ce()("shared-capacity-")},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props.hasTicketsPlus;return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__capacity","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--capacity")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__capacity-label-with-tooltip",forId:e?this.ids.select:this.ids.capacity,isLabel:!0,label:Object(i.__)("Ticket Capacity","event-tickets"),tooltipText:Object(i.__)("Ticket capacity will only be used by attendees buying this ticket type","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement("div",{className:"tribe-editor__ticket__capacity-form"},e?this.getCapacityForm():this.getNoPlusCapacityForm()))}}]),t}(c.PureComponent);Jr.propTypes={hasTicketsPlus:d.a.bool,isDisabled:d.a.bool,sharedCapacity:d.a.string,tempCapacity:d.a.string,tempCapacityType:d.a.string,tempCapacityTypeOption:Wr.ReactSelectOption,tempSharedCapacity:d.a.string,onTempCapacityChange:d.a.func,onTempCapacityNoPlusChange:d.a.func,onTempCapacityTypeChange:d.a.func,onTempSharedCapacityChange:d.a.func};var $r=Jr,Zr=En.b.UNLIMITED,Qr=En.b.INDEPENDENT,Xr=En.b.TICKET_TYPES,ea=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isDisabled:En.f.isTicketDisabled(e,t),sharedCapacity:En.f.getTicketsSharedCapacity(e),tempCapacity:En.f.getTicketTempCapacity(e,t),tempCapacityType:En.f.getTicketTempCapacityType(e,t),tempCapacityTypeOption:En.f.getTicketTempCapacityTypeOption(e,t),tempSharedCapacity:En.f.getTicketsTempSharedCapacity(e)}},function(e,t){var n=t.clientId;return{onTempCapacityChange:function(t){e(En.a.setTicketTempCapacity(n,t.target.value)),e(En.a.setTicketHasChanges(n,!0))},onTempCapacityNoPlusChange:function(t){var r=t.target.value,a=""===Vr()(r)?Xr[Zr]:Xr[Qr];e(En.a.setTicketTempCapacityType(n,a)),e(En.a.setTicketTempCapacity(n,r)),e(En.a.setTicketHasChanges(n,!0))},onTempCapacityTypeChange:function(t){e(En.a.setTicketTempCapacityType(n,t.value)),e(En.a.setTicketHasChanges(n,!0))},onTempSharedCapacityChange:function(t){e(En.a.setTicketsTempSharedCapacity(t.target.value)),e(En.a.setTicketHasChanges(n,!0))}}}))($r),ta=(n(525),n(526),function(e){var t=e.hasDurationError,n=Ke()(e,["hasDurationError"]);return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__duration","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--duration")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__duration-label-with-tooltip",label:Object(i.__)("Sale Duration","event-tickets"),tooltipText:Object(i.__)("If you do not set a start sale date, tickets will be available immediately.","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement(he.DateTimeRangePicker,Ve()({className:"tribe-editor__ticket__duration-picker"},n)),t&&wp.element.createElement("span",{className:"tribe-editor__ticket__duration-error"},Object(i.__)("There is an error with the selected sales duration. Please fix the issue before saving.","event-tickets")))});ta.propTypes={fromDate:d.a.instanceOf(Date),fromDateInput:d.a.string,fromDateDisabled:d.a.bool,fromTime:d.a.string,fromTimeDisabled:d.a.bool,hasDurationError:d.a.bool,onFromDateChange:d.a.func,onFromTimePickerBlur:d.a.func,onFromTimePickerChange:d.a.func,onFromTimePickerClick:d.a.func,onToDateChange:d.a.func,onToTimePickerBlur:d.a.func,onToTimePickerChange:d.a.func,onToTimePickerClick:d.a.func,toDate:d.a.instanceOf(Date),toDateInput:d.a.string,toDateDisabled:d.a.bool,toTime:d.a.string,toTimeDisabled:d.a.bool};var na=ta,ra=function(e,t){return function(n,r,a){e(En.a.handleTicketStartDate(t.clientId,n,a))}},aa=function(e,t){return function(n){e(En.a.setTicketTempStartTimeInput(t.clientId,n.target.value))}},ia=function(e,t){return function(n,r){e(En.a.handleTicketStartTime(t.clientId,n)),r()}},sa=function(e,t){return function(n,r,a){e(En.a.handleTicketEndDate(t.clientId,n,a))}},oa=function(e,t){return function(n){e(En.a.setTicketTempEndTimeInput(t.clientId,n.target.value))}},ca=function(e,t){return function(n,r){e(En.a.handleTicketEndTime(t.clientId,n)),r()}},ua=function(e,t,n){return function(r){var a=ze.moment.toMoment(r.target.value,ze.moment.TIME_FORMAT,!1);if(!a.isValid()){var i=En.f.getTicketStartTimeInput(e,n);a=ze.moment.toMoment(i,ze.moment.TIME_FORMAT,!1)}var s=ze.moment.totalSeconds(a);t(En.a.handleTicketStartTime(n.clientId,s))}},da=function(e,t,n){return function(r){var a=ze.moment.toMoment(r.target.value,ze.moment.TIME_FORMAT,!1);if(!a.isValid()){var i=En.f.getTicketEndTimeInput(e,n);a=ze.moment.toMoment(i,ze.moment.TIME_FORMAT,!1)}var s=ze.moment.totalSeconds(a);t(En.a.handleTicketEndTime(n.clientId,s))}},_a=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=ze.globals.tecDateSettings().datepickerFormat?ze.moment.toFormat(ze.globals.tecDateSettings().datepickerFormat):"LL",r=En.f.isTicketDisabled(e,t),a=En.f.getTicketTempStartDateMoment(e,t),i=En.f.getTicketTempEndDateMoment(e,t),s=a&&a.toDate(),o=i&&i.toDate();return{fromDate:s,fromDateInput:En.f.getTicketTempStartDateInput(e,t),fromDateDisabled:r,fromDateFormat:n,fromTime:En.f.getTicketTempStartTimeInput(e,t),fromTimeDisabled:r,hasDurationError:En.f.getTicketHasDurationError(e,t),toDate:o,toDateInput:En.f.getTicketTempEndDateInput(e,t),toDateDisabled:r,toDateFormat:n,toTime:En.f.getTicketTempEndTimeInput(e,t),toTimeDisabled:r,state:e}},function(e,t){return{onFromDateChange:ra(e,t),onFromTimePickerChange:aa(e,t),onFromTimePickerClick:ia(e,t),onToDateChange:sa(e,t),onToTimePickerChange:oa(e,t),onToTimePickerClick:ca(e,t),dispatch:e}},function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch,s=Ke()(t,["dispatch"]);return Ve()({},n,a,s,{onFromTimePickerBlur:ua(r,i,n),onToTimePickerBlur:da(r,i,n)})}))(na),la=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.id=Ce()("ticket-sku"),n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.sku,n=e.isDisabled,r=e.onChange;return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__sku","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--sku")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__sku-label-with-tooltip",forId:this.id,isLabel:!0,label:Object(i.__)("Ticket SKU","event-tickets"),tooltipText:Object(i.__)("A unique identifying code for each ticket type you're selling","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement(Se.Input,{className:"tribe-editor__ticket__sku-input",id:this.id,type:"text",value:t,onChange:r,disabled:n}))}}]),t}(c.PureComponent);la.propTypes={isDisabled:d.a.bool,onChange:d.a.func.isRequired,sku:d.a.string};var ma=la,pa=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),sku:En.f.getTicketTempSku(e,t)}},function(e,t){return{onChange:function(n){var r=t.clientId;e(En.a.setTicketTempSku(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(ma),fa=n(262),Ta=n.n(fa),ha=(n(527),En.b.EDD),ya=En.b.WOO,ba=En.b.PROVIDER_TYPES,Ma=["edit-ticket","report"],Sa=function(e){var t=e.editTicketLink,n=e.isDisabled,r=e.provider,a=e.reportLink,s=e.showEcommerceOptions,o=function(e){var s=fe()("tribe-editor__ticket__ecommerce-options-link","tribe-editor__ticket__ecommerce-options-link--"+e),o="report"===e?a:t,c="report"===e?Object(i.__)("View Sales Report","event-tickets"):function(e){var t="";return e===ha?t=Object(i.__)("Edit Ticket in Easy Digital Downloads","event-tickets"):e===ya&&(t=Object(i.__)("Edit Ticket in WooCommerce","event-tickets")),t}(r);return n?wp.element.createElement("span",{className:s},c):wp.element.createElement(Se.Link,{className:s,href:o,target:"_blank"},c)};return s&&wp.element.createElement(Se.LabeledItem,{className:fe()("tribe-editor__ticket__ecommerce-options","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--ecommerce-options"),label:Object(i.__)("Ecommerce","event-tickets")},wp.element.createElement("div",{className:"tribe-editor__ticket__ecommerce-options-links"},Ma.map(function(e){return wp.element.createElement("span",{key:e,className:"tribe-editor__ticket__ecommerce-options-link-wrapper"},o(e))})))};Sa.propTypes={editTicketLink:d.a.string,isDisabled:d.a.bool,provider:d.a.oneOf([].concat(Ta()(ba),[""])),reportLink:d.a.string,showEcommerceOptions:d.a.bool};var Ea=Sa,ga=En.b.EDD,va=En.b.WOO,ka=function(e){return Kr()([ga,va],e)},Da=function(e,t,n){var r="";ka(n)&&(r=ze.globals.adminUrl()+"post.php?post="+En.f.getTicketId(e,t)+"&action=edit");return r},La=function(e,t,n){var r="";if(ka(n)){var a=ze.globals.adminUrl(),i=En.f.getTicketId(e,t),s="";n===ga?s="edit.php?page=edd-reports&view=sales&post_type=download&tab=logs&download="+i:n===va&&(s="admin.php?page=wc-reports&tab=orders&report=sales_by_product&product_ids="+i),r=""+a+s}return r},Oa=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketProvider(e,t);return{isDisabled:En.f.isTicketDisabled(e,t),provider:n,editTicketLink:Da(e,t,n),reportLink:La(e,t,n),showEcommerceOptions:ka(n)}}))(Ea),Ya=(n(528),function(e){var t=e.moveTicket,n=e.removeTicket,r=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__ticket__content-row--move-delete"},wp.element.createElement(Se.Button,{type:"button",onClick:t,disabled:r},Object(i.__)("Move Ticket","event-tickets")),wp.element.createElement(Se.Button,{type:"button",onClick:n,disabled:r},Object(i.__)("Remove Ticket","event-tickets")))});Ya.propTypes={moveTicket:d.a.func.isRequired,removeTicket:d.a.func.isRequired,isDisabled:d.a.bool.isRequired};var wa=Ya,ja=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),ticketId:En.f.getTicketId(e,t)}},function(e,t){return{removeTicket:function(){e(En.a.deleteTicket(t.clientId))},moveTicket:function(n){return e(Object(it.c)(n,t.clientId))}}},function(e,t,n){return Ve()({},e,t,n,{moveTicket:function(){return t.moveTicket(e.ticketId)}})}))(wa),Ia=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getHeader=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__advanced-options-header-icon",icon:"arrow-down"}),wp.element.createElement("span",{className:"tribe-editor__ticket__advanced-options-header-text"},Object(i.__)("Advanced Options","event-tickets")))},n.getContent=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(_a,{clientId:n.props.clientId}),wp.element.createElement(pa,{clientId:n.props.clientId}),wp.element.createElement(Oa,{clientId:n.props.clientId}),n.props.hasBeenCreated&&wp.element.createElement(ja,{clientId:n.props.clientId}))},n.getRows=function(){return[{accordionId:n.accordionId,content:n.getContent(),contentClassName:"tribe-editor__ticket__advanced-options-content",header:n.getHeader(),headerAttrs:{disabled:n.props.isDisabled},headerClassName:"tribe-editor__ticket__advanced-options-header"}]},n.accordionId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){return wp.element.createElement(Se.Accordion,{className:"tribe-editor__ticket__advanced-options",rows:this.getRows()})}}]),t}(c.Component);Ia.propTypes={clientId:d.a.string.isRequired,isDisabled:d.a.bool,hasBeenCreated:d.a.bool};var Pa=Ia,Ca=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),hasBeenCreated:En.f.getTicketHasBeenCreated(e,t)}}))(Pa),xa=(n(529),Object(i.__)("+ Add","event-tickets")),Ra=Object(i.__)("Edit","event-tickets"),Aa=function(e){var t=e.attendeeRegistrationURL,n=e.hasAttendeeInfoFields,r=e.isCreated,a=e.isDisabled,s=e.isModalOpen,o=e.onClick,c=e.onClose,u=e.onIframeLoad,d=n?Ra:xa;return wp.element.createElement(he.AttendeesRegistration,{helperText:Object(i.__)("Save your ticket to enable attendee information fields","event-tickets"),iframeURL:t,isDisabled:a,isModalOpen:s,label:Object(i.__)("Attendee Information","event-tickets"),linkText:d,modalTitle:Object(i.__)("Attendee Information","event-tickets"),onClick:o,onClose:c,onIframeLoad:u,showHelperText:!r})};Aa.propTypes={attendeeRegistrationURL:d.a.string.isRequired,hasAttendeeInfoFields:d.a.bool.isRequired,isCreated:d.a.bool.isRequired,isDisabled:d.a.bool.isRequired,isModalOpen:d.a.bool.isRequired,onClick:d.a.func.isRequired,onClose:d.a.func.isRequired,onIframeLoad:d.a.func.isRequired};var Ha=Aa,Na=function(e,t){return ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=attendee-registration&ticket_id="+En.f.getTicketId(e,t)+"&tribe_events_modal=1"},Va=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketHasBeenCreated(e,t);return{attendeeRegistrationURL:Na(e,t),hasAttendeeInfoFields:En.f.getTicketHasAttendeeInfoFields(e,t),isCreated:n,isDisabled:En.f.isTicketDisabled(e,t)||!n,isModalOpen:En.f.getTicketIsModalOpen(e,t)}},function(e,t){return{onClick:function(){e(En.a.setTicketIsModalOpen(t.clientId,!0))},onClose:function(){e(En.a.setTicketIsModalOpen(t.clientId,!1))},onIframeLoad:function(n){var r=n.contentWindow,a=function(){n.nextSibling.classList.add("tribe-editor__attendee-registration__modal-overlay--show")},i=r.document.querySelector("#event-tickets-attendee-information");i.addEventListener("submit",a);var s=function(){r.removeEventListener("unload",o),i.removeEventListener("submit",a)},o=function(){s();var n=r.document.querySelector("#tribe-tickets-attendee-sortables"),a=Boolean(n.firstElementChild);e(En.a.setTicketHasAttendeeInfoFields(t.clientId,a)),e(En.a.setTicketIsModalOpen(t.clientId,!1))};r.addEventListener("unload",o);var c=r.document.querySelector(".tribe-intro > a");c&&c.setAttribute("target","_blank")}}}))(Ha),Fa=(n(530),function(e){var t=e.clientId,n=e.hasTicketsPlus;return wp.element.createElement(c.Fragment,null,wp.element.createElement(ea,{clientId:t}),wp.element.createElement(Ca,{clientId:t}),n&&wp.element.createElement(Va,{clientId:t}))});Fa.propTypes={clientId:d.a.string.isRequired,hasTicketsPlus:d.a.bool};var Ka=Fa,Wa=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS)}}))(Ka),Ua=function(e){return e.isDisabled?wp.element.createElement(s.ClockInactive,null):wp.element.createElement(s.ClockActive,null)},za=function(e){return e.isDisabled?wp.element.createElement(s.TicketInactive,null):wp.element.createElement(s.TicketActive,null)},Ga=function(e){var t=e.isDisabled,n=e.isFuture,r=e.isPast;return n||r?wp.element.createElement(Ua,{isDisabled:t}):wp.element.createElement(za,{isDisabled:t})};Ga.propTypes={isDisabled:d.a.bool.isRequired,isFuture:d.a.bool,isPast:d.a.bool};var Ba=function(e){var t=e.clientId,n=e.isDisabled,r=e.isFuture,a=e.isPast,i=e.isSelected;return wp.element.createElement(he.ContainerPanel,{className:"tribe-editor__ticket__container",layout:ye.a.ticket,icon:wp.element.createElement(Ga,{isDisabled:n,isFuture:r,isPast:a}),header:wp.element.createElement(Hr,{clientId:t,isSelected:i}),content:wp.element.createElement(Wa,{clientId:t})})};Ba.propTypes={clientId:d.a.string.isRequired,isDisabled:d.a.bool,isFuture:d.a.bool,isPast:d.a.bool,isSelected:d.a.bool};var qa=Ba,Ja=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),isFuture:En.f.isTicketFuture(e,t),isPast:En.f.isTicketPast(e,t)}}))(qa),$a=(n(531),function(e){return e?Object(i.__)("Update Ticket","event-tickets"):Object(i.__)("Create Ticket","event-tickets")}),Za=Object(i.__)("Cancel","event-tickets"),Qa=function(e){var t=e.hasBeenCreated,n=e.isCancelDisabled,r=e.isConfirmDisabled,a=e.onCancelClick,i=e.onConfirmClick;return wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__ticket__dashboard",cancelLabel:Za,confirmLabel:$a(t),isCancelDisabled:n,isConfirmDisabled:r,onCancelClick:a,onConfirmClick:i})};Qa.propTypes={hasBeenCreated:d.a.bool,isCancelDisabled:d.a.bool,isConfirmDisabled:d.a.bool,onCancelClick:d.a.func,onConfirmClick:d.a.func};var Xa=Qa,ei=function(e,t){return!En.f.isTicketValid(e,t)||!En.f.getTicketHasChanges(e,t)||En.f.isTicketDisabled(e,t)||En.f.getTicketHasDurationError(e,t)},ti=function(e,t,n){return function(){En.f.getTicketHasBeenCreated(e,n)?(t(En.a.setTicketTempDetails(n.clientId,{title:En.f.getTicketTitle(e,n),description:En.f.getTicketDescription(e,n),price:En.f.getTicketPrice(e,n),sku:En.f.getTicketSku(e,n),startDate:En.f.getTicketStartDate(e,n),startDateInput:En.f.getTicketStartDateInput(e,n),startDateMoment:En.f.getTicketStartDateMoment(e,n),endDate:En.f.getTicketEndDate(e,n),endDateInput:En.f.getTicketEndDateInput(e,n),endDateMoment:En.f.getTicketEndDateMoment(e,n),startTime:En.f.getTicketStartTime(e,n),endTime:En.f.getTicketEndTime(e,n),startTimeInput:En.f.getTicketStartTimeInput(e,n),endTimeInput:En.f.getTicketEndTimeInput(e,n),capacityType:En.f.getTicketCapacityType(e,n),capacity:En.f.getTicketCapacity(e,n)})),t(En.a.setTicketsTempSharedCapacity(En.f.getTicketsSharedCapacity(e))),t(En.a.setTicketHasChanges(n.clientId,!1))):(t(En.a.removeTicketBlock(n.clientId)),Object(ie.dispatch)("core/editor").removeBlocks(n.clientId)),Object(ie.dispatch)("core/editor").clearSelectedBlock()}},ni=function(e,t,n){return function(){return En.f.getTicketHasBeenCreated(e,n)?t(En.a.updateTicket(n.clientId)):t(En.a.createNewTicket(n.clientId))}},ri=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasBeenCreated:En.f.getTicketHasBeenCreated(e,t),isCancelDisabled:En.f.isTicketDisabled(e,t),isConfirmDisabled:ei(e,t),state:e}},null,function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch;return Ve()({},n,a,{onCancelClick:ti(r,i,n),onConfirmClick:ni(r,i,n)})}))(Xa),ai=function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.onBlockUpdate(this.props.isSelected)}},{key:"componentDidUpdate",value:function(e){e.isSelected!==this.props.isSelected&&this.props.onBlockUpdate(this.props.isSelected)}},{key:"render",value:function(){var e=this.props,t=e.clientId,n=e.hasTicketsPlus,r=e.isDisabled,a=e.isLoading,i=e.isSelected,s=e.isModalShowing;return e.showTicket?wp.element.createElement(c.Fragment,null,wp.element.createElement("article",{className:fe()("tribe-editor__ticket",{"tribe-editor__ticket--disabled":r},{"tribe-editor__ticket--selected":i},{"tribe-editor__ticket--has-tickets-plus":n})},wp.element.createElement(Ja,{clientId:t,isSelected:i}),wp.element.createElement(ri,{clientId:t,isSelected:i}),a&&wp.element.createElement(Te.Spinner,null)),s&&wp.element.createElement(_n,null)):null}}]),t}(c.PureComponent);ai.propTypes={clientId:d.a.string.isRequired,hasTicketsPlus:d.a.bool,isDisabled:d.a.bool,isLoading:d.a.bool,isModalShowing:d.a.bool,isSelected:d.a.bool,onBlockUpdate:d.a.func,removeTicketBlock:d.a.func,showTicket:d.a.bool};var ii=ai,si=function(e,t){return En.f.getTicketsIsSelected(e)||En.f.hasATicketSelected(e)||En.f.isTicketOnSale(e,t)},oi=Object(j.c)(Object(ke.withStore)({isolated:!0}),ne(function(e,t){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),hasBeenCreated:En.f.getTicketHasBeenCreated(e,t),isDisabled:En.f.isTicketDisabled(e,t),isLoading:En.f.getTicketIsLoading(e,t),isModalShowing:Object(on.l)(e),modalTicketId:Object(on.e)(e),showTicket:si(e,t),ticketId:En.f.getTicketId(e,t)}},function(e,t){var n=t.clientId;return{onBlockUpdate:function(t){return e(En.a.setTicketIsSelected(n,t))},setInitialState:function(t){e(En.a.registerTicketBlock(n)),e(En.a.setTicketInitialState(t))}}},function(e,t,n){return Ve()({},e,t,n,{isModalShowing:e.isModalShowing&&e.modalTicketId===e.ticketId})}),Object(ke.withSaveData)())(ii),ci={id:"tickets-item",title:Object(i.__)("Event Ticket","event-tickets"),description:Object(i.__)("A single configured ticket type.","event-tickets"),icon:wp.element.createElement(s.Tickets,null),category:"tribe-tickets",keywords:["event","event-tickets","tribe"],parent:["tribe/tickets"],supports:{html:!1},attributes:{hasBeenCreated:{type:"boolean",default:!1},ticketId:{type:"integer",default:0}},edit:oi,save:function(){return wp.element.createElement("div",null,wp.element.createElement(bn.InnerBlocks.Content,null))}},ui=n(54),di=n(110),_i=(n(532),Object(i.__)("Who's Attending?","event-tickets")),li=Object(i.__)("(X) people are attending this event","event-tickets"),mi=function(){return wp.element.createElement("div",{className:"tribe-editor__event-attendees__gravatars"},wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null))},pi=function(){return wp.element.createElement("div",{className:"tribe-editor__event-attendees__subtitle"},wp.element.createElement("p",null,li))},fi=function(e){var t=e.isSelected,n=e.title,r=e.displayTitle,a=e.displaySubtitle,i=t||n?function(e){var t=e.isSelected,n=e.isEmpty,r=e.title,a=e.setTitle,i=fe()({"tribe-editor__event-attendees__title":!0,"tribe-editor__event-attendees__title--selected":t}),s=fe()({"tribe-editor__event-attendees__title-text":!0,"tribe-editor__event-attendees__title-text--empty":n&&t});return wp.element.createElement("div",{key:"tribe-events-attendees-label",className:i},wp.element.createElement(Me.a,{id:"tribe-events-attendees-link",className:s,value:r,placeholder:_i,onChange:a}))}(e):wp.element.createElement("span",{className:fe()(["tribe-editor__event-attendees__title","tribe-editor__event-attendees__title--placeholder"])},_i);return wp.element.createElement("div",{className:"tribe-editor__block tribe-editor__event-attendees"},r?i:"",a?wp.element.createElement(pi,null):"",wp.element.createElement(mi,null))},Ti=function(e){var t=e.isSelected,n=e.displayTitle,r=e.displaySubtitle,a=e.onSetDisplayTitleChange,s=e.onSetDisplaySubtitleChange;return t&&wp.element.createElement(bn.InspectorControls,{key:"inspector"},wp.element.createElement(Te.PanelBody,{title:Object(i.__)("Attendees Settings","event-tickets")},wp.element.createElement(Te.ToggleControl,{label:Object(i.__)("Display Title","event-tickets"),checked:n,onChange:a}),wp.element.createElement(Te.ToggleControl,{label:Object(i.__)("Display Subtitle","event-tickets"),checked:r,onChange:s})))},hi=function(e){return wp.element.createElement(c.Fragment,null,wp.element.createElement(fi,e),wp.element.createElement(Ti,e))};hi.propTypes={setTitle:d.a.func,title:d.a.string,isSelected:d.a.bool,isEmpty:d.a.bool,displayTitle:d.a.bool,displaySubtitle:d.a.bool,onSetDisplaySubtitleChange:d.a.func,onSetDisplayTitleChange:d.a.func};var yi=hi,bi=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{title:di.c(e),displayTitle:di.b(e),displaySubtitle:di.a(e)}},function(e){return{setInitialState:function(t){return e(ui.c(t))},setTitle:function(t){return e(ui.d(t.target.value))},onSetDisplayTitleChange:function(t){return e(ui.b(t))},onSetDisplaySubtitleChange:function(t){return e(ui.a(t))}}}),Object(ke.withSaveData)())(yi),Mi=[yn,Tr,ci,{id:"attendees",title:Object(i.__)("Attendee List","event-tickets"),description:Object(i.__)("Show the gravatars of people coming to this event.","event-tickets"),icon:wp.element.createElement(s.Attendees,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1},attributes:{title:{type:"html",default:Object(i.__)("Who's Attending?","event-tickets")},displayTitle:{type:"boolean",default:!0},displaySubtitle:{type:"boolean",default:!0}},edit:bi,save:function(){return null}}];Mi.forEach(function(e){return Object(r.registerBlockType)("tribe/"+e.id,e)}),Object(a.initStore)();t.default=Mi}]);
|
17 |
*
|
18 |
* This source code is licensed under the MIT license found in the
|
19 |
* LICENSE file in the root directory of this source tree.
|
20 |
+
*/Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&Symbol.for,a=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,s=r?Symbol.for("react.fragment"):60107,o=r?Symbol.for("react.strict_mode"):60108,c=r?Symbol.for("react.profiler"):60114,u=r?Symbol.for("react.provider"):60109,d=r?Symbol.for("react.context"):60110,_=r?Symbol.for("react.async_mode"):60111,l=r?Symbol.for("react.concurrent_mode"):60111,m=r?Symbol.for("react.forward_ref"):60112,p=r?Symbol.for("react.suspense"):60113,f=r?Symbol.for("react.memo"):60115,T=r?Symbol.for("react.lazy"):60116;function h(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case a:switch(e=e.type){case _:case l:case s:case c:case o:case p:return e;default:switch(e=e&&e.$$typeof){case d:case m:case u:return e;default:return t}}case T:case f:case i:return t}}}function y(e){return h(e)===l}t.typeOf=h,t.AsyncMode=_,t.ConcurrentMode=l,t.ContextConsumer=d,t.ContextProvider=u,t.Element=a,t.ForwardRef=m,t.Fragment=s,t.Lazy=T,t.Memo=f,t.Portal=i,t.Profiler=c,t.StrictMode=o,t.Suspense=p,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===s||e===l||e===c||e===o||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===T||e.$$typeof===f||e.$$typeof===u||e.$$typeof===d||e.$$typeof===m)},t.isAsyncMode=function(e){return y(e)||h(e)===_},t.isConcurrentMode=y,t.isContextConsumer=function(e){return h(e)===d},t.isContextProvider=function(e){return h(e)===u},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===a},t.isForwardRef=function(e){return h(e)===m},t.isFragment=function(e){return h(e)===s},t.isLazy=function(e){return h(e)===T},t.isMemo=function(e){return h(e)===f},t.isPortal=function(e){return h(e)===i},t.isProfiler=function(e){return h(e)===c},t.isStrictMode=function(e){return h(e)===o},t.isSuspense=function(e){return h(e)===p}},function(e,t,n){},function(e,t,n){},function(e,t){var n,r,a=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var c,u=[],d=!1,_=-1;function l(){d&&c&&(d=!1,c.length?u=c.concat(u):_=-1,u.length&&m())}function m(){if(!d){var e=o(l);d=!0;for(var t=u.length;t;){for(c=u,u=[];++_<t;)c&&c[_].run();_=-1,t=u.length}c=null,d=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function f(){}a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||d||o(m)},p.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=f,a.addListener=f,a.once=f,a.off=f,a.removeListener=f,a.removeAllListeners=f,a.emit=f,a.prependListener=f,a.prependOnceListener=f,a.listeners=function(e){return[]},a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var r=n(111),a=n(324),i=n(15),s=n(30);function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var c=n(13),u=n(1),d=n.n(u),_=d.a.shape({trySubscribe:d.a.func.isRequired,tryUnsubscribe:d.a.func.isRequired,notifyNestedSubs:d.a.func.isRequired,isSubscribed:d.a.func.isRequired}),l=d.a.shape({subscribe:d.a.func.isRequired,dispatch:d.a.func.isRequired,getState:d.a.func.isRequired});!function(e){var t;void 0===e&&(e="store");var n=e+"Subscription",r=function(t){o(a,t);var r=a.prototype;function a(n,r){var a;return(a=t.call(this,n,r)||this)[e]=n.store,a}return r.getChildContext=function(){var t;return(t={})[e]=this[e],t[n]=null,t},r.render=function(){return c.Children.only(this.props.children)},a}(c.Component);r.propTypes={store:l.isRequired,children:d.a.element.isRequired},r.childContextTypes=((t={})[e]=l.isRequired,t[n]=_,t)}();function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function f(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}var T=n(489),h=n.n(T),y=n(325),b=n.n(y),M=n(488),S=null,E={notify:function(){}};var g=function(){function e(e,t,n){this.store=e,this.parentSub=t,this.onStateChange=n,this.unsubscribe=null,this.listeners=E}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){var e,t;this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=(e=[],t=[],{clear:function(){t=S,e=S},notify:function(){for(var n=e=t,r=0;r<n.length;r++)n[r]()},get:function(){return t},subscribe:function(n){var r=!0;return t===e&&(t=e.slice()),t.push(n),function(){r&&e!==S&&(r=!1,t===e&&(t=e.slice()),t.splice(t.indexOf(n),1))}}}))},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=E)},e}(),v=0,k={};function D(){}function L(e,t){var n,r;void 0===t&&(t={});var a=t,i=a.getDisplayName,s=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,u=a.methodName,d=void 0===u?"connectAdvanced":u,T=a.renderCountProp,y=void 0===T?void 0:T,S=a.shouldHandleStateChanges,E=void 0===S||S,L=a.storeKey,O=void 0===L?"store":L,Y=a.withRef,w=void 0!==Y&&Y,j=f(a,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef"]),I=O+"Subscription",P=v++,C=((n={})[O]=l,n[I]=_,n),x=((r={})[I]=_,r);return function(t){b()(Object(M.isValidElementType)(t),"You must pass a component to the function returned by "+d+". Instead received "+JSON.stringify(t));var n=t.displayName||t.name||"Component",r=s(n),a=p({},j,{getDisplayName:s,methodName:d,renderCountProp:y,shouldHandleStateChanges:E,storeKey:O,withRef:w,displayName:r,wrappedComponentName:n,WrappedComponent:t}),i=function(n){function i(e,t){var a;return(a=n.call(this,e,t)||this).version=P,a.state={},a.renderCount=0,a.store=e[O]||t[O],a.propsMode=Boolean(e[O]),a.setWrappedInstance=a.setWrappedInstance.bind(m(m(a))),b()(a.store,'Could not find "'+O+'" in either the context or props of "'+r+'". Either wrap the root component in a <Provider>, or explicitly pass "'+O+'" as a prop to "'+r+'".'),a.initSelector(),a.initSubscription(),a}o(i,n);var s=i.prototype;return s.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[I]=t||this.context[I],e},s.componentDidMount=function(){E&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},s.componentWillReceiveProps=function(e){this.selector.run(e)},s.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},s.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=D,this.store=null,this.selector.run=D,this.selector.shouldComponentUpdate=!1},s.getWrappedInstance=function(){return b()(w,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+d+"() call."),this.wrappedInstance},s.setWrappedInstance=function(e){this.wrappedInstance=e},s.initSelector=function(){var t=e(this.store.dispatch,a);this.selector=function(e,t){var n={run:function(r){try{var a=e(t.getState(),r);(a!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=a,n.error=null)}catch(e){n.shouldComponentUpdate=!0,n.error=e}}};return n}(t,this.store),this.selector.run(this.props)},s.initSubscription=function(){if(E){var e=(this.propsMode?this.props:this.context)[I];this.subscription=new g(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},s.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(k)):this.notifyNestedSubs()},s.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},s.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},s.addExtraProps=function(e){if(!(w||y||this.propsMode&&this.subscription))return e;var t=p({},e);return w&&(t.ref=this.setWrappedInstance),y&&(t[y]=this.renderCount++),this.propsMode&&this.subscription&&(t[I]=this.subscription),t},s.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(c.createElement)(t,this.addExtraProps(e.props))},i}(c.Component);return i.WrappedComponent=t,i.displayName=r,i.childContextTypes=x,i.contextTypes=C,i.propTypes=C,h()(i,t)}}var O=Object.prototype.hasOwnProperty;function Y(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function w(e,t){if(Y(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var a=0;a<n.length;a++)if(!O.call(t,n[a])||!Y(e[n[a]],t[n[a]]))return!1;return!0}var j=n(16);function I(e){return function(t,n){var r=e(t,n);function a(){return r}return a.dependsOnOwnProps=!1,a}}function P(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function C(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=P(e);var a=r(t,n);return"function"==typeof a&&(r.mapToProps=a,r.dependsOnOwnProps=P(a),a=r(t,n)),a},r}}var x=[function(e){return"function"==typeof e?C(e):void 0},function(e){return e?void 0:I(function(e){return{dispatch:e}})},function(e){return e&&"object"==typeof e?I(function(t){return Object(j.a)(e,t)}):void 0}];var R=[function(e){return"function"==typeof e?C(e):void 0},function(e){return e?void 0:I(function(){return{}})}];function A(e,t,n){return p({},n,e,t)}var H=[function(e){return"function"==typeof e?function(e){return function(t,n){n.displayName;var r,a=n.pure,i=n.areMergedPropsEqual,s=!1;return function(t,n,o){var c=e(t,n,o);return s?a&&i(c,r)||(r=c):(s=!0,r=c),r}}}(e):void 0},function(e){return e?void 0:function(){return A}}];function N(e,t,n,r){return function(a,i){return n(e(a,i),t(r,i),i)}}function V(e,t,n,r,a){var i,s,o,c,u,d=a.areStatesEqual,_=a.areOwnPropsEqual,l=a.areStatePropsEqual,m=!1;function p(a,m){var p,f,T=!_(m,s),h=!d(a,i);return i=a,s=m,T&&h?(o=e(i,s),t.dependsOnOwnProps&&(c=t(r,s)),u=n(o,c,s)):T?(e.dependsOnOwnProps&&(o=e(i,s)),t.dependsOnOwnProps&&(c=t(r,s)),u=n(o,c,s)):h?(p=e(i,s),f=!l(p,o),o=p,f&&(u=n(o,c,s)),u):u}return function(a,d){return m?p(a,d):(o=e(i=a,s=d),c=t(r,s),u=n(o,c,s),m=!0,u)}}function F(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,a=t.initMergeProps,i=f(t,["initMapStateToProps","initMapDispatchToProps","initMergeProps"]),s=n(e,i),o=r(e,i),c=a(e,i);return(i.pure?V:N)(s,o,c,e,i)}function K(e,t,n){for(var r=t.length-1;r>=0;r--){var a=t[r](e);if(a)return a}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function W(e,t){return e===t}var U,z,G,B,q,J,$,Z,Q,X,ee,te,ne=(G=(z=void 0===U?{}:U).connectHOC,B=void 0===G?L:G,q=z.mapStateToPropsFactories,J=void 0===q?R:q,$=z.mapDispatchToPropsFactories,Z=void 0===$?x:$,Q=z.mergePropsFactories,X=void 0===Q?H:Q,ee=z.selectorFactory,te=void 0===ee?F:ee,function(e,t,n,r){void 0===r&&(r={});var a=r,i=a.pure,s=void 0===i||i,o=a.areStatesEqual,c=void 0===o?W:o,u=a.areOwnPropsEqual,d=void 0===u?w:u,_=a.areStatePropsEqual,l=void 0===_?w:_,m=a.areMergedPropsEqual,T=void 0===m?w:m,h=f(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),y=K(e,J,"mapStateToProps"),b=K(t,Z,"mapDispatchToProps"),M=K(n,X,"mergeProps");return B(te,p({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:y,initMapDispatchToProps:b,initMergeProps:M,pure:s,areStatesEqual:c,areOwnPropsEqual:d,areStatePropsEqual:l,areMergedPropsEqual:T},h))}),re=n(4),ae=n.n(re),ie=n(20),se=n(35),oe=n.n(se),ce=n(36),ue=n.n(ce),de=n(33),_e=n.n(de),le=n(37),me=n.n(le),pe=n(22),fe=n.n(pe),Te=n(26),he=n(24),ye=n(109),be=n(86),Me=n.n(be),Se=n(21),Ee=(n(492),function(e){var t=e.goingCount,n=e.notGoingCount,r=e.showNotGoing;return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__counters"},wp.element.createElement(Se.Counter,{className:"tribe-editor__rsvp-container-header__going-counter",count:t,label:Object(i.__)("Going","event-tickets")}),r&&wp.element.createElement(Se.Counter,{className:"tribe-editor__rsvp-container-header__not-going-counter",count:n,label:Object(i.__)("Not going","event-tickets")}))});Ee.propTypes={goingCount:d.a.number,notGoingCount:d.a.number,showNotGoing:d.a.bool};var ge=Ee,ve=n(12),ke=n(18),De=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{goingCount:ve.d.getRSVPGoingCount(e),notGoingCount:ve.d.getRSVPNotGoingCount(e),showNotGoing:ve.d.getRSVPNotGoingResponses(e)}}))(ge),Le=n(62),Oe=(n(493),wp.element.createElement(Se.Tooltip,{labelClassName:"tribe-editor__ticket__container-header-clipboard-tooltip",label:wp.element.createElement(Le.Clipboard,null),text:Object(i.__)("This ticket has Attendee Information Fields configured.","event-tickets")})),Ye=function(e){var t,n,r,a,s=e.description,o=e.hasAttendeeInfoFields,u=e.isCreated,d=e.isDisabled,_=e.isSelected,l=e.onTempDescriptionChange,m=e.onTempTitleChange,p=e.tempDescription,f=e.tempTitle,T=e.title,h=e.available;return wp.element.createElement(c.Fragment,null,wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__header-details"},function(e,t,n,r,a,s){return n?wp.element.createElement("div",{className:"tribe-editor__rsvp-container-header__title-input-wrapper"},wp.element.createElement(Me.a,{className:"tribe-editor__rsvp-container-header__title-input",value:a,placeholder:Object(i.__)("RSVP Title","event-tickets"),onChange:r,disabled:t}),e&&Oe):wp.element.createElement("h2",{className:"tribe-editor__rsvp-container-header__title"},s)}(o,d,_,m,f,T),function(e,t,n,r,a){return t?wp.element.createElement(Me.a,{className:"tribe-editor__rsvp-container-header__description-input",value:r,placeholder:Object(i.__)("description","event-tickets"),onChange:n,disabled:e}):a&&wp.element.createElement("span",{className:"tribe-editor__rsvp-container-header__description"},a)}(d,_,l,p,s),u&&(t=h,n=Object(i.__)("%d available","event-tickets"),r=n,a=wp.element.createElement("span",{className:"tribe-editor__rsvp-container-header__capacity-label-fallback"},Object(i.__)("Unlimited","event-tickets")),wp.element.createElement(he.NumericLabel,{className:"tribe-editor__rsvp-container-header__capacity-label",count:t,includeZero:!0,singular:n,plural:r,fallback:a}))),wp.element.createElement(De,null))};Ye.propTypes={available:d.a.number,description:d.a.string,hasAttendeeInfoFields:d.a.bool,isCreated:d.a.bool,isDisabled:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,onTempDescriptionChange:d.a.func,onTempTitleChange:d.a.func,tempDescription:d.a.string,tempTitle:d.a.string,title:d.a.string};var we=Ye,je=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},Ie=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{available:ve.d.getRSVPAvailable(e),description:ve.d.getRSVPDescription(e),hasAttendeeInfoFields:ve.d.getRSVPHasAttendeeInfoFields(e),isCreated:ve.d.getRSVPCreated(e),isDisabled:je(e),tempDescription:ve.d.getRSVPTempDescription(e),tempTitle:ve.d.getRSVPTempTitle(e),title:ve.d.getRSVPTitle(e)}},function(e){return{onTempDescriptionChange:function(t){e(ve.a.setRSVPTempDescription(t.target.value)),e(ve.a.setRSVPHasChanges(!0))},onTempTitleChange:function(t){e(ve.a.setRSVPTempTitle(t.target.value)),e(ve.a.setRSVPHasChanges(!0))}}}))(we),Pe=n(72),Ce=n.n(Pe),xe=(n(495),wp.element.createElement(Te.Dashicon,{className:"tribe-editor__rsvp-duration__duration-tooltip-label",icon:"info-outline"})),Re=function(e){var t=e.tooltipDisabled;return wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__rsvp-duration__duration-label",label:Object(i.__)("Duration","event-tickets"),tooltipDisabled:t,tooltipLabel:xe,tooltipText:Object(i.__)("By default, sales will begin as soon as you save the ticket and end when the event begins","event-tickets")})},Ae=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},He=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:Ae(e)}}))(Re),Ne=n(9),Ve=n.n(Ne),Fe=n(38),Ke=n.n(Fe),We=(n(496),function(e){return wp.element.createElement(he.DateTimeRangePicker,Ve()({className:"tribe-editor__rsvp-duration__duration-picker"},e))});We.propTypes={fromDate:d.a.instanceOf(Date),fromDateInput:d.a.string,fromDateDisabled:d.a.bool,fromTime:d.a.string,fromTimeDisabled:d.a.bool,onFromDateChange:d.a.func,onFromTimePickerBlur:d.a.func,onFromTimePickerChange:d.a.func,onFromTimePickerClick:d.a.func,onToDateChange:d.a.func,onToTimePickerBlur:d.a.func,onToTimePickerChange:d.a.func,onToTimePickerClick:d.a.func,toDate:d.a.instanceOf(Date),toDateInput:d.a.string,toDateDisabled:d.a.bool,toTime:d.a.string,toTimeDisabled:d.a.bool};var Ue=We,ze=n(3),Ge=function(e){return function(t,n,r){var a={date:t,dayPickerInput:r};e(ve.a.handleRSVPStartDate(a))}},Be=function(e){return function(t){return e(ve.a.setRSVPTempStartTimeInput(t.target.value))}},qe=function(e){return function(t,n){e(ve.a.handleRSVPStartTime(t)),n()}},Je=function(e){return function(t,n,r){var a={date:t,dayPickerInput:r};e(ve.a.handleRSVPEndDate(a))}},$e=function(e){return function(t){return e(ve.a.setRSVPTempEndTimeInput(t.target.value))}},Ze=function(e){return function(t,n){e(ve.a.handleRSVPEndTime(t)),n()}},Qe=function(e,t){return function(n){var r=ze.moment.toMoment(n.target.value,ze.moment.TIME_FORMAT,!1);if(!r.isValid()){var a=ve.d.getRSVPStartTimeInput(e);r=ze.moment.toMoment(a,ze.moment.TIME_FORMAT,!1)}var i=ze.moment.totalSeconds(r);t(ve.a.handleRSVPStartTime(i))}},Xe=function(e,t){return function(n){var r=ze.moment.toMoment(n.target.value,ze.moment.TIME_FORMAT,!1);if(!r.isValid()){var a=ve.d.getRSVPEndTimeInput(e);r=ze.moment.toMoment(a,ze.moment.TIME_FORMAT,!1)}var i=ze.moment.totalSeconds(r);t(ve.a.handleRSVPEndTime(i))}},et=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ze.globals.tecDateSettings().datepickerFormat?ze.moment.toFormat(ze.globals.tecDateSettings().datepickerFormat):"LL",n=ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e),r=ve.d.getRSVPTempStartDateMoment(e),a=ve.d.getRSVPTempEndDateMoment(e),i=r&&r.toDate(),s=a&&a.toDate();return{fromDate:i,fromDateInput:ve.d.getRSVPTempStartDateInput(e),fromDateDisabled:n,fromDateFormat:t,fromTime:ve.d.getRSVPTempStartTimeInput(e),fromTimeDisabled:n,toDate:s,toDateInput:ve.d.getRSVPTempEndDateInput(e),toDateDisabled:n,toDateFormat:t,toTime:ve.d.getRSVPTempEndTimeInput(e),toTimeDisabled:n,state:e}},function(e){return{onFromDateChange:Ge(e),onFromTimePickerChange:Be(e),onFromTimePickerClick:qe(e),onToDateChange:Je(e),onToTimePickerChange:$e(e),onToTimePickerClick:Ze(e),dispatch:e}},function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch,s=Ke()(t,["dispatch"]);return Ve()({},n,a,s,{onFromTimePickerBlur:Qe(r,i),onToTimePickerBlur:Xe(r,i)})}))(Ue),tt=(n(497),function(e){var t=e.hasDurationError;return wp.element.createElement("div",{className:"tribe-editor__rsvp-duration"},wp.element.createElement(He,null),wp.element.createElement(et,null),t&&wp.element.createElement("span",{className:"tribe-editor__rsvp-duration__error"},Object(i.__)("There is an error with the selected sales duration. Please fix the issue before saving.","event-tickets")))}),nt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasDurationError:ve.d.getRSVPHasDurationError(e)}}))(tt),rt=(n(498),function(e){var t=e.moveRSVP,n=e.removeRSVP,r=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__rsvp__content-row--move-delete"},wp.element.createElement(Se.Button,{type:"button",onClick:t,disabled:r},Object(i.__)("Move RSVP","event-tickets")),wp.element.createElement(Se.Button,{type:"button",onClick:n,disabled:r},Object(i.__)("Remove RSVP","event-tickets")))});rt.propTypes={moveRSVP:d.a.func.isRequired,removeRSVP:d.a.func.isRequired,isDisabled:d.a.bool.isRequired};var at=rt,it=n(68),st=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e),rsvpId:ve.d.getRSVPId(e),isDisabled:ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)}},function(e,t){return{moveRSVP:function(n){return e(Object(it.c)(n,t.clientId))},dispatch:e}},function(e,t,n){var r=t.dispatch,a=Ke()(t,["dispatch"]);return Ve()({},n,e,a,{removeRSVP:function(){window.confirm(Object(i.__)("Are you sure you want to delete this RSVP? It cannot be undone.","event-tickets"))&&(r(ve.a.deleteRSVP()),e.created&&e.rsvpId&&r(ve.e.deleteRSVP(e.rsvpId)),Object(ie.dispatch)("core/editor").removeBlocks([n.clientId]))},moveRSVP:function(){return t.moveRSVP(e.rsvpId)}})}))(at),ot=(n(499),function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getContent=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(nt,null),n.props.hasBeenCreated&&wp.element.createElement(st,{clientId:n.props.clientId}))},n.getHeader=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(Te.Dashicon,{className:"tribe-editor__rsvp__advanced-options-header-icon",icon:"arrow-down"}),wp.element.createElement("span",{className:"tribe-editor__rsvp__advanced-options-header-text"},Object(i.__)("Advanced Options","event-tickets")))},n.getRows=function(){return[{accordionId:n.accordionId,content:n.getContent(),contentClassName:"tribe-editor__rsvp__advanced-options-content",header:n.getHeader(),headerAttrs:{disabled:n.props.isDisabled},headerClassName:"tribe-editor__rsvp__advanced-options-header"}]},n.accordionId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){return wp.element.createElement(Se.Accordion,{className:"tribe-editor__rsvp__advanced-options",rows:this.getRows()})}}]),t}(c.PureComponent));ot.propTypes={isDisabled:d.a.bool.isRequired,hasBeenCreated:d.a.bool,clientId:d.a.string};var ct=ot,ut=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},dt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:ut(e),hasBeenCreated:ve.d.getRSVPCreated(e)}}))(ct),_t=(n(500),Object(i.__)("+ Add","event-tickets")),lt=Object(i.__)("Edit","event-tickets"),mt=function(e){var t=e.attendeeRegistrationURL,n=e.hasAttendeeInfoFields,r=e.isCreated,a=e.isDisabled,s=e.isModalOpen,o=e.onClick,c=e.onClose,u=e.onIframeLoad,d=n?lt:_t;return wp.element.createElement(he.AttendeesRegistration,{helperText:Object(i.__)("Save your RSVP to enable attendee information fields","event-tickets"),iframeURL:t,isDisabled:a,isModalOpen:s,label:Object(i.__)("Attendee Information","event-tickets"),linkText:d,modalTitle:Object(i.__)("Attendee Information","event-tickets"),onClick:o,onClose:c,onIframeLoad:u,showHelperText:!r})};mt.propTypes={attendeeRegistrationURL:d.a.string.isRequired,hasAttendeeInfoFields:d.a.bool.isRequired,isCreated:d.a.bool.isRequired,isDisabled:d.a.bool.isRequired,isModalOpen:d.a.bool.isRequired,onClick:d.a.func.isRequired,onClose:d.a.func.isRequired,onIframeLoad:d.a.func.isRequired};var pt=mt,ft=function(e){return ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=attendee-registration&ticket_id="+ve.d.getRSVPId(e)+"&tribe_events_modal=1"},Tt=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)||!ve.d.getRSVPCreated(e)},ht=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{attendeeRegistrationURL:ft(e),hasAttendeeInfoFields:ve.d.getRSVPHasAttendeeInfoFields(e),isCreated:ve.d.getRSVPCreated(e),isDisabled:Tt(e),isModalOpen:ve.d.getRSVPIsModalOpen(e)}},function(e,t){return{onClick:function(){e(ve.a.setRSVPIsModalOpen(!0))},onClose:function(){e(ve.a.setRSVPIsModalOpen(!1))},onIframeLoad:function(t){var n=t.contentWindow,r=function(){t.nextSibling.classList.add("tribe-editor__attendee-registration__modal-overlay--show")},a=n.document.querySelector("#event-tickets-attendee-information");a.addEventListener("submit",r);var i=function(){n.removeEventListener("unload",s),a.removeEventListener("submit",r)},s=function(){i();var t=n.document.querySelector("#tribe-tickets-attendee-sortables"),r=Boolean(t.firstElementChild);e(ve.a.setRSVPHasAttendeeInfoFields(r)),e(ve.a.setRSVPIsModalOpen(!1))};n.addEventListener("unload",s);var o=n.document.querySelector(".tribe-intro > a");o&&o.setAttribute("target","_blank")}}}))(pt),yt=(n(501),function(){return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-content__labels"},wp.element.createElement("span",{className:"tribe-editor__rsvp-container-content__capacity-label"},Object(i.__)("RSVP Capacity","event-tickets")),wp.element.createElement("span",{className:"tribe-editor__rsvp-container-content__capacity-label-help"},Object(i.__)("Leave blank if unlimited","event-tickets")))}),bt=function(e){var t=e.capacityId,n=e.isDisabled,r=e.notGoingId,a=e.onTempCapacityChange,s=e.onTempNotGoingResponsesChange,o=e.tempCapacity,c=e.tempNotGoingResponses;return wp.element.createElement("div",{className:"tribe-editor__rsvp-container-content__options"},wp.element.createElement(Se.NumberInput,{className:"tribe-editor__rsvp-container-content__capacity-input",disabled:n,id:t,min:0,onChange:a,value:o}),wp.element.createElement(Se.Checkbox,{checked:c,className:"tribe-editor__rsvp-container-content__not-going-responses",disabled:n,id:r,label:Object(i.__)('Enable "Not Going" responses',"event-tickets"),onChange:s}))};bt.propTypes={capacityId:d.a.string.isRequired,isDisabled:d.a.bool.isRequired,notGoingId:d.a.string.isRequired,onTempCapacityChange:d.a.func.isRequired,onTempNotGoingResponsesChange:d.a.func.isRequired,tempCapacity:d.a.string.isRequired,tempNotGoingResponses:d.a.bool.isRequired};var Mt=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.capacityId=Ce()(),n.notGoingId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.isDisabled,n=e.onTempCapacityChange,r=e.onTempNotGoingResponsesChange,a=e.tempCapacity,i=e.tempNotGoingResponses,s=e.clientId,o={capacityId:this.capacityId,isDisabled:t,notGoingId:this.notGoingId,onTempCapacityChange:n,onTempNotGoingResponsesChange:r,tempCapacity:a,tempNotGoingResponses:i};return wp.element.createElement(c.Fragment,null,wp.element.createElement(yt,null),wp.element.createElement(bt,o),wp.element.createElement(dt,{clientId:s}),this.props.hasTicketsPlus&&wp.element.createElement(ht,null))}}]),t}(c.PureComponent);Mt.propTypes={clientId:d.a.string,hasTicketsPlus:d.a.bool,onTempCapacityChange:d.a.func,onTempNotGoingResponsesChange:d.a.func,tempCapacity:d.a.string,tempNotGoingResponses:d.a.bool};var St=Mt,Et=n(31),gt=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},vt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isDisabled:gt(e),tempCapacity:ve.d.getRSVPTempCapacity(e),tempNotGoingResponses:ve.d.getRSVPTempNotGoingResponses(e)}},function(e){return{onTempCapacityChange:function(t){e(ve.a.setRSVPTempCapacity(t.target.value)),e(ve.a.setRSVPHasChanges(!0))},onTempNotGoingResponsesChange:function(t){e(ve.a.setRSVPTempNotGoingResponses(t.target.checked)),e(ve.a.setRSVPHasChanges(!0))}}}))(St),kt=(n(502),function(e){var t=e.isDisabled;return wp.element.createElement(c.Fragment,null,t?wp.element.createElement(s.RSVPInactive,null):wp.element.createElement(s.RSVPActive,null),wp.element.createElement("span",{className:"tribe-editor__rsvp-container__icon-label"},Object(i.__)("RSVP","event-tickets")))});kt.propTypes={isDisabled:d.a.bool.isRequired};var Dt=function(e){var t=e.isDisabled,n=e.isSelected,r=e.clientId;return wp.element.createElement(he.ContainerPanel,{className:fe()("tribe-editor__rsvp-container",{"tribe-editor__rsvp-container--disabled":t}),layout:ye.a.rsvp,icon:wp.element.createElement(kt,{isDisabled:t}),header:wp.element.createElement(Ie,{isSelected:n}),content:wp.element.createElement(vt,{clientId:r})})};Dt.propTypes={isDisabled:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,clientId:d.a.string.isRequired};var Lt=Dt,Ot=function(e){return ve.d.getRSVPIsLoading(e)||ve.d.getRSVPSettingsOpen(e)},Yt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:Ot(e)}}))(Lt),wt=function(e){var t=e.href,n=e.isDisabled;return wp.element.createElement(he.ActionButton,{asLink:!0,className:"tribe-editor__rsvp__action-button tribe-editor__rsvp__action-button--attendees",disabled:n,href:t,icon:wp.element.createElement(s.Attendees,null),target:"_blank"},Object(i.__)("Attendees","event-tickets"))};wt.propTypes={href:d.a.string,isDisabled:d.a.bool};var jt=wt,It=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{href:ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=tickets-attendees&event_id="+Object(ie.select)("core/editor").getCurrentPostId(),isDisabled:ve.d.getRSVPIsLoading(e)}}))(jt),Pt=n(53),Ct=function(e){var t=e.isDisabled,n=e.onClick;return wp.element.createElement(he.ActionButton,{className:"tribe-editor__rsvp__action-button tribe-editor__rsvp__action-button--settings",disabled:t,icon:wp.element.createElement(Le.Cog,null),onClick:n},Object(i.__)("Settings","event-tickets"))};Ct.defaultProps={onClick:n.n(Pt).a},Ct.propTypes={isDisabled:d.a.bool,onClick:d.a.func};var xt=Ct,Rt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isDisabled:ve.d.getRSVPIsLoading(e)}},function(e){return{onClick:function(){return e(ve.a.setRSVPSettingsOpen(!0))}}}))(xt),At=(n(503),function(e){return e?Object(i.__)("Update RSVP","event-tickets"):Object(i.__)("Create RSVP","event-tickets")}),Ht=Object(i.__)("Cancel","event-tickets"),Nt=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onWarningClick=function(){n.setState({isWarningOpen:!n.state.isWarningOpen})},n.getActions=function(){var e=n.props,t=e.created,r=(e.hasTicketsPlus,e.hasRecurrenceRules),a=e.isLoading,s=[wp.element.createElement(Rt,null)];if(t&&s.push(wp.element.createElement(It,null)),r){var o=n.state.isWarningOpen?"no":"info-outline",c=n.state.isWarningOpen?Object(i.__)("Hide Warning","event-tickets"):Object(i.__)("Warning","event-tickets");s.push(wp.element.createElement(he.WarningButton,{icon:o,onClick:n.onWarningClick,isDisabled:a},c))}return s},n.state={isWarningOpen:!1},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.created,n=e.isCancelDisabled,r=e.isConfirmDisabled,a=e.onCancelClick,s=e.onConfirmClick,o=e.showCancel;return wp.element.createElement(c.Fragment,null,wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__rsvp__action-dashboard",actions:this.getActions(),cancelLabel:Ht,confirmLabel:At(t),isCancelDisabled:n,isConfirmDisabled:r,onCancelClick:a,onConfirmClick:s,showCancel:o}),this.state.isWarningOpen&&wp.element.createElement("div",{className:"tribe-editor__rsvp__warning"},Object(i.__)("This is a recurring event. If you add tickets they will only show up on the next upcoming event in the recurrence pattern. The same ticket form will appear across all events in the series. Please configure your events accordingly.","event-tickets")))}}]),t}(c.PureComponent);Nt.propTypes={created:d.a.bool.isRequired,hasTicketsPlus:d.a.bool.isRequired,hasRecurrenceRules:d.a.bool.isRequired,isCancelDisabled:d.a.bool.isRequired,isConfirmDisabled:d.a.bool.isRequired,isLoading:d.a.bool.isRequired,onCancelClick:d.a.func.isRequired,onConfirmClick:d.a.func.isRequired,showCancel:d.a.bool.isRequired};var Vt=Nt,Ft=function(e){var t=!1;try{t=window.tribe[Et.plugins.constants.EVENTS_PRO_PLUGIN].data.blocks.recurring.selectors.hasRules(e)}catch(e){}return t},Kt=function(e){return!ve.d.getRSVPTempTitle(e)||!ve.d.getRSVPHasChanges(e)||ve.d.getRSVPIsLoading(e)||ve.d.getRSVPHasDurationError(e)},Wt=function(e,t){return function(){t(ve.a.setRSVPTempDetails({tempTitle:ve.d.getRSVPTitle(e),tempDescription:ve.d.getRSVPDescription(e),tempCapacity:ve.d.getRSVPCapacity(e),tempNotGoingResponses:ve.d.getRSVPNotGoingResponses(e),tempStartDate:ve.d.getRSVPStartDate(e),tempStartDateInput:ve.d.getRSVPStartDateInput(e),tempStartDateMoment:ve.d.getRSVPStartDateMoment(e),tempEndDate:ve.d.getRSVPEndDate(e),tempEndDateInput:ve.d.getRSVPEndDateInput(e),tempEndDateMoment:ve.d.getRSVPEndDateMoment(e),tempStartTime:ve.d.getRSVPStartTime(e),tempEndTime:ve.d.getRSVPEndTime(e),tempStartTimeInput:ve.d.getRSVPStartTimeInput(e),tempEndTimeInput:ve.d.getRSVPEndTimeInput(e)})),t(ve.a.setRSVPHasChanges(!1)),Object(ie.dispatch)("core/editor").clearSelectedBlock()}},Ut=function(e,t){return function(){var n={title:ve.d.getRSVPTempTitle(e),description:ve.d.getRSVPTempDescription(e),capacity:ve.d.getRSVPTempCapacity(e),notGoingResponses:ve.d.getRSVPTempNotGoingResponses(e),startDate:ve.d.getRSVPTempStartDate(e),startDateInput:ve.d.getRSVPTempStartDateInput(e),startDateMoment:ve.d.getRSVPTempStartDateMoment(e),endDate:ve.d.getRSVPTempEndDate(e),endDateInput:ve.d.getRSVPTempEndDateInput(e),endDateMoment:ve.d.getRSVPTempEndDateMoment(e),startTime:ve.d.getRSVPTempStartTime(e),endTime:ve.d.getRSVPTempEndTime(e),startTimeInput:ve.d.getRSVPTempStartTimeInput(e),endTimeInput:ve.d.getRSVPTempEndTimeInput(e)};ve.d.getRSVPCreated(e)?t(ve.e.updateRSVP(Ve()({},n,{id:ve.d.getRSVPId(e)}))):t(ve.e.createRSVP(Ve()({},n,{postId:Object(ie.select)("core/editor").getCurrentPostId()})))}},zt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e),hasRecurrenceRules:Ft(e),hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isCancelDisabled:ve.d.getRSVPIsLoading(e),isConfirmDisabled:Kt(e),isLoading:ve.d.getRSVPIsLoading(e),showCancel:ve.d.getRSVPCreated(e),state:e}},null,function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch;return Ve()({},n,a,{onCancelClick:Wt(r,i),onConfirmClick:Ut(r,i)})}))(Vt),Gt=(n(504),function(e){var t=e.image,n=e.isSettingsLoading,r=e.onRemove,a=e.onSelect,s={title:Object(i.__)("Ticket Header Image","event-tickets"),description:Object(i.__)("Select an image from your Media Library to display on emailed tickets and RSVPs. For best results, use a .jpg, .png, or .gif at least 1160px wide.","event-tickets"),className:"tribe-editor__rsvp__image-upload",buttonDisabled:n,buttonLabel:Object(i.__)("Upload Image","event-tickets"),image:t,onRemove:r,onSelect:a,removeButtonDisabled:n};return wp.element.createElement(Se.ImageUpload,s)});Gt.propTypes={image:d.a.shape({alt:d.a.string.isRequired,id:d.a.number.isRequired,src:d.a.string.isRequired}).isRequired,isSettingsLoading:d.a.bool.isRequired,onRemove:d.a.func.isRequired,onSelect:d.a.func.isRequired};var Bt=Gt,qt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{image:{id:ve.d.getRSVPHeaderImageId(e),alt:ve.d.getRSVPHeaderImageAlt(e),src:ve.d.getRSVPHeaderImageSrc(e)},isSettingsLoading:ve.d.getRSVPIsSettingsLoading(e)}},function(e){return{onRemove:function(){return e(ve.a.deleteRSVPHeaderImage())},onSelect:function(t){return e(ve.a.updateRSVPHeaderImage(t))}}}))(Bt),Jt=(n(505),function(e){var t=e.isSettingsLoading,n=e.onCloseClick;return wp.element.createElement(he.SettingsDashboard,{className:fe()("tribe-editor__rsvp__settings-dashboard",{"tribe-editor__rsvp__settings-dashboard--loading":t}),closeButtonDisabled:t,content:wp.element.createElement(c.Fragment,null,wp.element.createElement(qt,null),t&&wp.element.createElement(Te.Spinner,null)),onCloseClick:n})});Jt.propTypes={isSettingsLoading:d.a.bool.isRequired,onCloseClick:d.a.func.isRequired};var $t=Jt,Zt=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsLoading:ve.d.getRSVPIsSettingsLoading(e)}},function(e){return{onCloseClick:function(){return e(ve.a.setRSVPSettingsOpen(!1))}}}))($t),Qt=function(e){var t=e.isSelected,n=e.isSettingsOpen;return t?n?wp.element.createElement(Zt,null):wp.element.createElement(zt,null):null};Qt.propTypes={isSelected:d.a.bool.isRequired,isSettingsOpen:d.a.bool.isRequired};var Xt=Qt,en=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsOpen:ve.d.getRSVPSettingsOpen(e)}}))(Xt),tn=n(95),nn={className:"tribe-editor__rsvp__inactive-block",icon:wp.element.createElement(s.RSVPInactive,null),layout:tn.a.rsvp},rn=function(e){var t=e.created;return nn.title=t?Object(i.__)("RSVP is not currently active","event-tickets"):Object(i.__)("There is no RSVP configured","event-tickets"),nn.description=t?Object(i.__)("Edit this block to change RSVP settings.","event-tickets"):Object(i.__)("Edit this block to create an RSVP form.","event-tickets"),wp.element.createElement(tn.b,nn)};rn.propTypes={created:d.a.bool.isRequired};var an=rn,sn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{created:ve.d.getRSVPCreated(e)}}))(an),on=n(28),cn=n(19),un=(n(506),function(e){function t(){var e,n,r,a;oe()(this,t);for(var s=arguments.length,o=Array(s),c=0;c<s;c++)o[c]=arguments[c];return n=r=_e()(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(o))),r.renderPostTypes=function(){return r.props.isFetchingPosts?wp.element.createElement(Te.Spinner,null):r.props.postOptions.length?wp.element.createElement(Te.MenuGroup,null,wp.element.createElement(Te.MenuItemsChoice,{choices:r.props.postOptions,value:r.props.postValue,onSelect:r.props.onPostSelect})):wp.element.createElement(Te.Notice,{isDismissible:!1,status:"warning"},Object(i.__)("No posts found","event-tickets"))},a=n,_e()(r,a)}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.initialize()}},{key:"render",value:function(){return wp.element.createElement(Te.Modal,{title:this.props.title,onRequestClose:this.props.hideModal,className:"tribe-editor__tickets__move-modal"},wp.element.createElement("label",{htmlFor:"post_type"},Object(i.__)("You can optionally focus on a specific post type:","event-tickets")),wp.element.createElement(Se.Select,{id:"post_type",options:this.props.postTypeOptions,onChange:this.props.onPostTypeChange,value:this.props.postTypeOptionValue}),wp.element.createElement("label",{htmlFor:"search"},Object(i.__)("You can also enter keywords to help find the target event by title or description","event-tickets")),wp.element.createElement(Se.Input,{id:"search",type:"text",onChange:this.props.onSearchChange,value:this.props.search}),wp.element.createElement("label",null,Object(i.__)("Select the post you wish to move the ticket type to:","event-tickets")),this.renderPostTypes(),wp.element.createElement("footer",null,wp.element.createElement(Te.Button,{isLarge:!0,isPrimary:!0,isBusy:this.props.isModalSubmitting,disabled:!this.props.hasSelectedPost||this.props.isFetchingPosts,onClick:this.props.onSubmit},Object(i.__)("Finish!","event-tickets"))))}}]),t}(c.PureComponent));un.propTypes={hasSelectedPost:d.a.bool.isRequired,hideModal:d.a.func.isRequired,initialize:d.a.func.isRequired,isFetchingPosts:d.a.bool.isRequired,isModalSubmitting:d.a.bool.isRequired,onPostSelect:d.a.func.isRequired,onPostTypeChange:d.a.func.isRequired,onSearchChange:d.a.func.isRequired,onSubmit:d.a.func.isRequired,postOptions:d.a.arrayOf(d.a.object),postTypeOptions:d.a.arrayOf(d.a.object),postTypeOptionValue:d.a.object,postValue:d.a.string.isRequired,search:d.a.string.isRequired,title:d.a.string.isRequired},un.defaultProps={title:Object(i.__)("Move Ticket Types","event-tickets")};var dn=un,_n=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasSelectedPost:on.i(e),isFetchingPosts:on.k(e),isFetchingPostTypes:on.j(e),isModalSubmitting:on.m(e),postOptions:on.f(e),postTypeOptions:on.h(e),postTypeOptionValue:on.g(e),postValue:on.d(e),search:on.c(e)}},function(e,t){return{initialize:function(){return e({type:cn.h})},hideModal:function(){return e(Object(it.a)())},onSearchChange:function(t){return e(Object(it.b)({search_terms:t.target.value}))},onPostTypeChange:function(t){return e(Object(it.b)({post_type:t.value}))},onPostSelect:function(t){return e(Object(it.b)({target_post_id:t}))},onSubmit:function(){return e({type:cn.o})}}}))(dn),ln=(n(507),function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){!this.props.rsvpId&&this.props.initializeRSVP()}},{key:"render",value:function(){var e=this.props,t=e.created,n=e.isInactive,r=e.isLoading,a=e.isSelected,i=e.clientId,s=e.isModalShowing;return wp.element.createElement(c.Fragment,null,!a&&(t&&n||!t)?wp.element.createElement(sn,null):wp.element.createElement("div",{className:fe()("tribe-editor__rsvp",{"tribe-editor__rsvp--selected":a},{"tribe-editor__rsvp--loading":r})},wp.element.createElement(Yt,{isSelected:a,clientId:i}),wp.element.createElement(en,{isSelected:a}),r&&wp.element.createElement(Te.Spinner,null)),s&&wp.element.createElement(_n,null))}}]),t}(c.PureComponent));ln.propTypes={clientId:d.a.string.isRequired,created:d.a.bool.isRequired,initializeRSVP:d.a.func.isRequired,isInactive:d.a.bool.isRequired,isLoading:d.a.bool.isRequired,isModalShowing:d.a.bool.isRequired,isSelected:d.a.bool.isRequired,rsvpId:d.a.number.isRequired};var mn=ln,pn=function(e){var t=ve.d.getRSVPStartDateMoment(e),n=ve.d.getRSVPStartTimeNoSeconds(e),r=ve.d.getRSVPEndDateMoment(e),a=ve.d.getRSVPEndTimeNoSeconds(e);if(!t||!r)return!1;var i=ze.moment.setTimeInSeconds(t.clone(),ze.time.toSeconds(n,ze.time.TIME_FORMAT_HH_MM)),s=ze.moment.setTimeInSeconds(r.clone(),ze.time.toSeconds(a,ze.time.TIME_FORMAT_HH_MM)),o=ae()();return!(o.isAfter(i)&&o.isBefore(s))},fn=function(e,t){return function(){var n=Object(ie.select)("core/editor").getCurrentPostId();e(ve.e.getRSVP(n));var r=t.attributes,a=void 0===r?{}:r;parseInt(a.headerImageId,10)&&e(ve.a.fetchRSVPHeaderImage(a.headerImageId)),a.goingCount&&e(ve.a.setRSVPGoingCount(parseInt(a.goingCount,10))),a.notGoingCount&&e(ve.a.setRSVPNotGoingCount(parseInt(a.notGoingCount,10)))}},Tn=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ve.d.getRSVPId(e);return{created:ve.d.getRSVPCreated(e),isInactive:pn(e),isLoading:ve.d.getRSVPIsLoading(e),isModalShowing:Object(on.l)(e)&&Object(on.e)(e)===t,rsvpId:t}},function(e,t){return{initializeRSVP:function(){return e(ve.a.initializeRSVP())},onBlockRemoved:function(){return e(ve.a.deleteRSVP())},setInitialState:fn(e,t)}}),Object(ke.withSaveData)())(mn),hn=n(8),yn={id:"rsvp",title:Object(i.__)("RSVP","event-tickets"),description:Object(i.__)("Find out who is planning to attend!","event-tickets"),icon:wp.element.createElement(s.RSVP,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1,multiple:!1},attributes:{goingCount:{type:"integer",source:"meta",meta:hn.g},notGoingCount:{type:"integer",source:"meta",meta:hn.j},headerImageId:{type:"integer",source:"meta",meta:hn.i}},edit:Tn,save:function(){return null}},bn=n(96),Mn=function(e){var t=e.onClick;return wp.element.createElement(he.ActionButton,{icon:wp.element.createElement(Le.Cog,null),onClick:t},Object(i.__)("Settings","event-tickets"))};Mn.propTypes={onClick:d.a.func};var Sn=Mn,En=n(6),gn=Object(j.c)(Object(ke.withStore)(),ne(null,function(e){return{onClick:function(){return e(En.a.openSettings())}}}))(Sn),vn=function(e){var t=e.href;return t?wp.element.createElement(he.ActionButton,{asLink:!0,href:t,icon:wp.element.createElement(s.Orders,null),target:"_blank"},Object(i.__)("Orders","event-tickets")):null};vn.propTypes={href:d.a.string.isRequired};var kn=vn,Dn=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=ze.globals.adminUrl(),n=Object(ie.select)("core/editor").getCurrentPostType(),r=Object(ie.select)("core/editor").getCurrentPostId(),a=En.f.getTicketsProvider(e),i=En.b.TICKET_ORDERS_PAGE_SLUG[a];return{href:i?t+"edit.php?post_type="+n+"&page="+i+"&event_id="+r:""}}))(kn),Ln=function(e){var t=e.href;return e.canCreateTickets&&wp.element.createElement(he.ActionButton,{asLink:!0,href:t,icon:wp.element.createElement(s.Attendees,null),target:"_blank"},Object(i.__)("Attendees","event-tickets"))};Ln.propTypes={href:d.a.string.isRequired,canCreateTickets:d.a.bool};var On=Ln,Yn=Object(j.c)(Object(ke.withStore)(),ne(function(){return{href:ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=tickets-attendees&event_id="+Object(ie.select)("core/editor").getCurrentPostId(),canCreateTickets:En.f.canCreateTickets()}}))(On),wn=(n(508),Object(i.__)("Add Tickets","event-tickets")),jn=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onWarningClick=function(){n.setState({isWarningOpen:!n.state.isWarningOpen})},n.getActions=function(){var e=n.props,t=e.hasCreatedTickets,r=e.hasOrdersPage,a=e.hasRecurrenceRules,s=(e.hasTicketsPlus,[wp.element.createElement(gn,null)]);if(t&&(s.push(wp.element.createElement(Yn,null)),r&&s.push(wp.element.createElement(Dn,null))),a){var o=n.state.isWarningOpen?"no":"info-outline",c=n.state.isWarningOpen?Object(i.__)("Hide Warning","event-tickets"):Object(i.__)("Warning","event-tickets");s.push(wp.element.createElement(he.WarningButton,{icon:o,onClick:n.onWarningClick},c))}return s},n.state={isWarningOpen:!1},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props.onConfirmClick;return wp.element.createElement(c.Fragment,null,wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__tickets__action-dashboard",actions:this.getActions(),confirmLabel:wn,onConfirmClick:e,showCancel:!1}),this.state.isWarningOpen&&wp.element.createElement("div",{className:"tribe-editor__tickets__warning"},Object(i.__)("This is a recurring event. If you add tickets they will only show up on the next upcoming event in the recurrence pattern. The same ticket form will appear across all events in the series. Please configure your events accordingly.","event-tickets")))}}]),t}(c.PureComponent);jn.propTypes={hasCreatedTickets:d.a.bool,hasOrdersPage:d.a.bool,hasRecurrenceRules:d.a.bool,hasTicketsPlus:d.a.bool,onConfirmClick:d.a.func};var In=jn,Pn=function(e){var t=!1;try{t=window.tribe[Et.plugins.constants.EVENTS_PRO_PLUGIN].data.blocks.recurring.selectors.hasRules(e)}catch(e){}return t},Cn=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketsProvider(e),a=En.b.TICKET_ORDERS_PAGE_SLUG[n];return{hasCreatedTickets:En.f.hasCreatedTickets(e),hasOrdersPage:Boolean(a),hasRecurrenceRules:Pn(e),hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),onConfirmClick:function(){var e=t.clientId,n=Object(ie.select)("core/editor").getBlockCount,a=Object(ie.dispatch)("core/editor").insertBlock,i=n(e);a(Object(r.createBlock)("tribe/tickets-item",{}),i,e)}}}))(In),xn=(n(509),function(e){var t=e.label,n=e.items,r=e.right;return wp.element.createElement("div",{className:"tribe-editor__tickets__capacity-row"},wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-left"},t&&wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-label"},t),n&&wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-items"},n)),wp.element.createElement("span",{className:"tribe-editor__tickets__capacity-row-right"},r))});xn.propTypes={label:d.a.string,items:d.a.string,right:d.a.node},xn.defaultProps={label:"",items:"",right:""};var Rn=xn,An=(n(510),function(e){var t=e.isSettingsLoading,n=e.independentCapacity,r=e.sharedCapacity,a=e.independentAndSharedCapacity,s=e.independentTicketItems,o=e.sharedTicketItems,c=e.onSharedCapacityChange,u=wp.element.createElement(Se.NumberInput,{onChange:c,value:r,disabled:t,min:0});return wp.element.createElement("div",{className:"tribe-editor__tickets__capacity-table"},wp.element.createElement("h3",{className:"tribe-editor__tickets__capacity-table-title"},Object(i.__)("Capacity","event-tickets")),wp.element.createElement(Rn,{label:Object(i.__)("Shared capacity","event-tickets"),items:o,right:u}),wp.element.createElement(Rn,{label:Object(i.__)("Independent capacity","event-tickets"),items:s,right:n}),wp.element.createElement(Rn,{label:Object(i.__)("Total Capacity","event-tickets"),right:a}))});An.propTypes={isSettingsLoading:d.a.bool,independentCapacity:d.a.number,sharedCapacity:d.a.string,independentAndSharedCapacity:d.a.number,independentTicketItems:d.a.string,sharedTicketItems:d.a.string,onSharedCapacityChange:d.a.func};var Hn=An,Nn=function(e){var t=e.filter(function(e){return e.details.title}).map(function(e){return e.details.title}).join(", ");return t?" ("+t+") ":""},Vn=function(e){var t=En.f.getIndependentTickets(e);return Nn(t)},Fn=function(e){var t=En.f.getSharedTickets(e);return Nn(t)},Kn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsLoading:En.f.getTicketsIsSettingsLoading(e),independentCapacity:En.f.getIndependentTicketsCapacity(e),sharedCapacity:En.f.getTicketsSharedCapacity(e),independentAndSharedCapacity:En.f.getIndependentAndSharedTicketsCapacity(e),independentTicketItems:Vn(e),sharedTicketItems:Fn(e)}},function(e){return{onSharedCapacityChange:function(t){e(En.a.setTicketsSharedCapacity(t.target.value)),e(En.a.setTicketsTempSharedCapacity(t.target.value))}}}))(Hn),Wn=(n(511),function(e){var t=e.image,n=e.isSettingsLoading,r=e.onRemove,a=e.onSelect,s={title:Object(i.__)("Ticket Header Image","event-tickets"),description:Object(i.__)("Select an image from your Media Library to display on emailed tickets and RSVPs. For best results, use a .jpg, .png, or .gif at least 1160px wide.","event-tickets"),className:"tribe-editor__rsvp__image-upload",buttonDisabled:n,buttonLabel:Object(i.__)("Upload Image","event-tickets"),image:t,onRemove:r,onSelect:a,removeButtonDisabled:n};return wp.element.createElement(Se.ImageUpload,s)});Wn.propTypes={image:d.a.shape({alt:d.a.string.isRequired,id:d.a.number.isRequired,src:d.a.string.isRequired}).isRequired,isSettingsLoading:d.a.bool.isRequired,onRemove:d.a.func.isRequired,onSelect:d.a.func.isRequired};var Un=Wn,zn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{image:{id:En.f.getTicketsHeaderImageId(e),alt:En.f.getTicketsHeaderImageAlt(e),src:En.f.getTicketsHeaderImageSrc(e)},isSettingsLoading:En.f.getTicketsIsSettingsLoading(e)}},function(e){return{onSelect:function(t){return e(En.a.updateTicketsHeaderImage(t))},onRemove:function(){return e(En.a.deleteTicketsHeaderImage())}}}))(Un),Gn=(n(512),function(e){var t=e.hasTicketsPlus,n=e.isSettingsLoading,r=e.onCloseClick;return wp.element.createElement(he.SettingsDashboard,{className:fe()("tribe-editor__tickets__settings-dashboard",{"tribe-editor__tickets__settings-dashboard--loading":n}),closeButtonDisabled:n,content:wp.element.createElement(c.Fragment,null,t&&wp.element.createElement(Kn,null),wp.element.createElement(zn,null),n&&wp.element.createElement(Te.Spinner,null)),onCloseClick:r})});Gn.propTypes={hasTicketsPlus:d.a.bool,isSettingsLoading:d.a.bool.isRequired,onCloseClick:d.a.func.isRequired};var Bn=Gn,qn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isSettingsLoading:En.f.getTicketsIsSettingsLoading(e)}},function(e){return{onCloseClick:function(){return e(En.a.closeSettings())}}}))(Bn),Jn=function(e){var t=e.clientId,n=e.isSelected,r=e.isSettingsOpen;return n?r?wp.element.createElement(qn,null):wp.element.createElement(Cn,{clientId:t}):null};Jn.propTypes={clientId:d.a.string,isSelected:d.a.bool,isSettingsOpen:d.a.bool};var $n=Jn,Zn=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{isSettingsOpen:En.f.getTicketsIsSettingsOpen(e)}}))($n),Qn=(n(513),function(e){var t=e.available,n=e.total,r=wp.element.createElement(he.NumericLabel,{className:fe()("tribe-editor__tickets__availability-label","tribe-editor__tickets__availability-label--available","tribe-tooltip"),count:t,singular:Object(i.__)("%d ticket available","event-tickets"),plural:Object(i.__)("%d tickets available","event-tickets")}),a=wp.element.createElement(he.NumericLabel,{className:fe()("tribe-editor__tickets__availability-label","tribe-editor__tickets__availability-label--total"),count:n,singular:Object(i.__)("%d total ticket","event-tickets"),plural:Object(i.__)("%d total tickets","event-tickets")});return wp.element.createElement("div",{className:"tribe-editor__tickets__availability"},wp.element.createElement("span",{class:"tribe-tooltip",title:Object(i.__)("Ticket availability is based on the lowest number of inventory, stock, and capacity.","event-tickets")},r,wp.element.createElement("span",{className:"dashicons dashicons-info"})),a)});Qn.propTypes={available:d.a.number,total:d.a.number};var Xn=Qn,er=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{total:En.f.getIndependentAndSharedTicketsCapacity(e),available:En.f.getIndependentAndSharedTicketsAvailable(e)}}))(Xn),tr=(n(514),function(){return wp.element.createElement("div",{className:"tribe-editor__tickets__overlay"})}),nr=function(e){var t=e.allTicketsPast,n=e.canCreateTickets,r=e.hasCreatedTickets,a=e.hasOverlay,o=e.showAvailability,c=e.showInactiveBlock,u={title:"",description:""};n?r?u.title=t?Object(i.__)("Tickets are no longer available","event-tickets"):Object(i.__)("Tickets are not yet available","event-tickets"):(u.title=Object(i.__)("There are no tickets yet","event-tickets"),u.description=Object(i.__)("Edit this block to create your first ticket.","event-tickets")):(u.title=Object(i.__)("There is no ecommerce available","event-tickets"),u.description=Object(i.__)("To create tickets, you'll need to enable an ecommerce solution.","event-tickets"));var d=fe()({"tribe-editor__tickets__inner-blocks":!0,"tribe-editor__tickets__inner-blocks--show":!c});return wp.element.createElement("div",{className:"tribe-editor__tickets__container"},wp.element.createElement("div",{className:d},wp.element.createElement(bn.InnerBlocks,{allowedBlocks:["tribe/tickets-item"]})),c&&wp.element.createElement(he.InactiveBlock,{layout:tn.a.ticket,title:u.title,description:u.description,icon:wp.element.createElement(s.TicketInactive,null)}),o&&wp.element.createElement(er,null),a&&wp.element.createElement(tr,null))};nr.propTypes={allTicketsPast:d.a.bool,canCreateTickets:d.a.bool,hasCreatedTickets:d.a.bool,hasOverlay:d.a.bool,showAvailability:d.a.bool,showInactiveBlock:d.a.bool};var rr=nr,ar=function(e,t){return En.f.getTicketsIsSettingsOpen(e)||!En.f.hasATicketSelected(e)&&!t.isSelected},ir=function(e,t){var n=t.isSelected&&!En.f.hasTickets(e),r=!(t.isSelected||En.f.hasATicketSelected(e)||En.f.hasCreatedTickets(e)&&En.f.hasTicketOnSale(e));return n||r},sr=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{allTicketsPast:En.f.allTicketsPast(e),canCreateTickets:En.f.canCreateTickets(),hasCreatedTickets:En.f.hasCreatedTickets(e),hasOverlay:ar(e,t),showAvailability:t.isSelected&&En.f.hasCreatedTickets(e),showInactiveBlock:ir(e,t)}}))(rr),or=(n(515),Object(i.__)("It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event. ","event-tickets")),cr=Object(i.__)("Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin","event-tickets"),ur=function(e){var t=e.provider,n=e.onProviderChange,r=Ke()(e,["provider","onProviderChange"]);return wp.element.createElement("div",{className:"tribe-editor__tickets-control-container"},wp.element.createElement("input",Ve()({className:"tribe-editor__tickets-control__input tribe-editor__tickets-control__input--radio",type:"radio",id:t.class,name:t.class,onChange:n},r)),wp.element.createElement("label",{className:"tribe-editor__tickets-control__label",htmlFor:t.class},t.name))},dr=function(e){var t=e.hasMultipleProviders,n=e.providers,r=e.selectedProvider,a=e.onProviderChange;return t&&wp.element.createElement(bn.InspectorControls,{key:"inspector"},wp.element.createElement(Te.PanelBody,{title:Object(i.__)("Tickets Settings","event-tickets")},wp.element.createElement(Te.PanelRow,null,wp.element.createElement("fieldset",{className:"tribe-editor__tickets-controls-provider"},wp.element.createElement("legend",null,Object(i.__)("Sell tickets using","event-tickets")),wp.element.createElement("p",null,or,wp.element.createElement("em",null,cr)),n.map(function(e,t){return wp.element.createElement(ur,{key:"provider-option-"+(t+1),provider:e,onProviderChange:a,checked:r===e.class})})))))};dr.propTypes={hasMultipleProviders:d.a.bool,providers:d.a.arrayOf(d.a.shape({name:d.a.string,class:d.a.string})),selectedProvider:d.a.string,onProviderChange:d.a.func};var _r=dr,lr=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasMultipleProviders:En.f.hasMultipleTicketProviders(),providers:En.f.getTicketProviders(),selectedProvider:En.f.getTicketsProvider(e)}},function(e){return{onProviderChange:function(t){return e(En.a.setTicketsProvider(t.target.name))}}}),Object(ke.withSaveData)())(_r),mr=(n(516),function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.onBlockUpdate(this.props.isSelected)}},{key:"componentDidUpdate",value:function(e){e.isSelected!==this.props.isSelected&&this.props.onBlockUpdate(this.props.isSelected)}},{key:"render",value:function(){var e=this.props,t=e.isSelected,n=e.canCreateTickets,r=e.isSettingsOpen,a=e.clientId;return wp.element.createElement("div",{className:fe()("tribe-editor__tickets",{"tribe-editor__tickets--selected":t},{"tribe-editor__tickets--settings-open":r})},wp.element.createElement(sr,{isSelected:t}),n&&wp.element.createElement(Zn,{isSelected:t,clientId:a}),wp.element.createElement(lr,null))}}]),t}(c.PureComponent));mr.propTypes={canCreateTickets:d.a.bool,clientId:d.a.string,hasProviders:d.a.bool,header:d.a.string,isSelected:d.a.bool,isSettingsOpen:d.a.bool,onBlockUpdate:d.a.func};var pr=mr,fr=Object(j.c)(Object(ke.withStore)(),ne(function(e){var t=En.f.getTicketsHeaderImageId(e);return{header:t?""+t:"",hasProviders:En.f.hasTicketProviders(),isSettingsOpen:En.f.getTicketsIsSettingsOpen(e),provider:En.f.getTicketsProvider(e),sharedCapacity:En.f.getTicketsSharedCapacity(e),canCreateTickets:En.f.canCreateTickets()}},function(e){return{setInitialState:function(t){e(En.a.setTicketsInitialState(t))},onBlockUpdate:function(t){e(En.a.setTicketsIsSelected(t))},onBlockRemoved:function(){e(En.a.resetTicketsBlock())}}}),Object(ke.withSaveData)())(pr),Tr={id:"tickets",title:Object(i.__)("Tickets","event-tickets"),description:Object(i.__)("Sell tickets and register attendees.","event-tickets"),icon:wp.element.createElement(s.Tickets,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1,multiple:!1},attributes:{sharedCapacity:{type:"string",source:"meta",meta:hn.d},header:{type:"string",source:"meta",meta:hn.i},provider:{type:"string",source:"meta",meta:hn.e},tickets:{type:"array",source:"meta",meta:hn.c}},edit:fr,save:function(){return wp.element.createElement("div",null,wp.element.createElement(bn.InnerBlocks.Content,null))}},hr=(n(517),n(518),function(e){var t=e.hasAttendeeInfoFields,n=e.isDisabled,r=e.isSelected,a=e.onTempTitleChange,s=e.tempTitle,o=e.title,u=t&&wp.element.createElement(Se.Tooltip,{labelClassName:"tribe-editor__ticket__container-header-clipboard-tooltip",label:wp.element.createElement(Le.Clipboard,null),text:Object(i.__)("This ticket has Attendee Information Fields configured.","event-tickets")});return wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-title"},r?wp.element.createElement(c.Fragment,null,wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-title-input",value:s,placeholder:Object(i.__)("Ticket Type *","event-tickets"),onChange:a,disabled:n,required:!0}),u):wp.element.createElement(c.Fragment,null,wp.element.createElement("h3",{className:"tribe-editor__ticket__container-header-title-label"},o),u,wp.element.createElement(Le.Pencil,null)))});hr.propTypes={hasAttendeeInfoFields:d.a.bool,isDisabled:d.a.bool,isSelected:d.a.bool,onTempTitleChange:d.a.func,tempTitle:d.a.string,title:d.a.string};var yr=hr,br=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasAttendeeInfoFields:En.f.getTicketHasAttendeeInfoFields(e,t),isDisabled:En.f.isTicketDisabled(e,t),tempTitle:En.f.getTicketTempTitle(e,t),title:En.f.getTicketTitle(e,t)}},function(e,t){return{onTempTitleChange:function(n){var r=t.clientId;e(En.a.setTicketTempTitle(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(yr),Mr=(n(519),function(e){var t=e.isDisabled,n=e.isSelected,r=e.onTempDescriptionChange,a=e.tempDescription,s=e.description;return n?wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-description-input",value:a,placeholder:Object(i.__)("Description","event-tickets"),onChange:r,disabled:t}):wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-description"},s)});Mr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,onTempDescriptionChange:d.a.func,tempDescription:d.a.string,description:d.a.string};var Sr=Mr,Er=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),tempDescription:En.f.getTicketTempDescription(e,t),description:En.f.getTicketDescription(e,t)}},function(e,t){return{onTempDescriptionChange:function(n){var r=t.clientId;e(En.a.setTicketTempDescription(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(Sr),gr=n(23),vr=(n(520),function(e){var t=e.isDisabled,n=e.currencyPosition,r=e.currencySymbol,a=e.onTempPriceChange,s=e.tempPrice;return wp.element.createElement(c.Fragment,null,n===gr.PREFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},r),wp.element.createElement(Me.a,{className:"tribe-editor__ticket__container-header-price-input",value:s,placeholder:Object(i.__)("0","event-tickets"),onChange:a,disabled:t,type:"number",min:"0"}),n===gr.SUFFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},r))});vr.propTypes={isDisabled:d.a.bool,currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,onTempPriceChange:d.a.func,tempPrice:d.a.string};var kr=function(e){var t=e.currencyPosition,n=e.currencySymbol,r=e.price;return wp.element.createElement(c.Fragment,null,t===gr.PREFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},n),wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-value"},r),t===gr.SUFFIX&&wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-price-currency"},n))};kr.propTypes={currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,price:d.a.string};var Dr=function(e){var t=e.isDisabled,n=e.isSelected,r=e.currencyPosition,a=e.currencySymbol,i=e.onTempPriceChange,s=e.tempPrice,o=e.price;return wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-price"},n?wp.element.createElement(vr,{currencyPosition:r,currencySymbol:a,onTempPriceChange:i,tempPrice:s,isDisabled:t}):wp.element.createElement(kr,{currencyPosition:r,currencySymbol:a,price:o}))};Dr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,currencyPosition:d.a.oneOf(gr.PRICE_POSITIONS),currencySymbol:d.a.string,onTempPriceChange:d.a.func,tempPrice:d.a.string,price:d.a.string};var Lr=Dr,Or=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),currencyPosition:En.f.getTicketCurrencyPosition(e,t),currencySymbol:En.f.getTicketCurrencySymbol(e,t),tempPrice:En.f.getTicketTempPrice(e,t),price:En.f.getTicketPrice(e,t)||"0"}},function(e,t){return{onTempPriceChange:function(n){var r=t.clientId;e(En.a.setTicketTempPrice(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(Lr),Yr=(n(521),function(e){var t=e.children,n=e.className,r=e.value,a=e.total;if(0===r||0===a)return null;var i=void 0;try{i=ze.number.percentage(r,a)}catch(e){i=0}var s={width:Math.max(0,Math.min(100,i)).toFixed(2)+"%"};return wp.element.createElement("span",{className:fe()("tribe-editor__quantity-bar__bar",n),style:s},t)});Yr.propTypes={children:d.a.node,className:d.a.oneOfType([d.a.string,d.a.arrayOf(d.a.string),ze.TribePropTypes.nullType]),value:d.a.number,total:d.a.number},Yr.defaultProps={className:null,value:0,total:0};var wr=Yr,jr=function(e){var t=e.sharedSold,n=e.sold,r=e.capacity,a=e.total,s=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__quantity-bar"},!s&&wp.element.createElement(c.Fragment,null,wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--shared-sold",value:t,total:a}),wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--sold",value:n,total:a}),!!r&&!(r===a)&&wp.element.createElement(wr,{className:"tribe-editor__quantity-bar__bar--capacity",value:r,total:a},wp.element.createElement("span",{className:"tribe-editor__quantity-bar__bar-label"},Object(i.__)("cap","event-tickets")))))};jr.propTypes={sharedSold:d.a.number,capacity:d.a.number,sold:d.a.number,total:d.a.number,isDisabled:d.a.bool},jr.defaultProps={sharedSold:0,capacity:0,sold:0,total:0,isDisabled:!1};var Ir=jr,Pr=(n(522),function(e){var t=e.isDisabled,n=e.isSelected,r=e.isShared,a=e.isUnlimited,s=e.sold,o=e.capacity,c=e.sharedSold,u=e.sharedCapacity,d=r?u:o;return!n&&wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-quantity tribe-tooltip",title:Object(i.__)("This pertains to Orders that have been marked Completed.","event-tickets")},wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-quantity-label"},a?Object(i.sprintf)(Object(i.__)("%d sold","event-tickets"),s):Object(i.sprintf)(Object(i.__)("%d of %d sold","event-tickets"),s,d),wp.element.createElement("span",{class:"dashicons dashicons-info"})),a?wp.element.createElement("span",{className:"tribe-editor__ticket__container-header-quantity-unlimited"},Object(i.__)("unlimited","event-tickets")):wp.element.createElement(Ir,{sold:s,sharedSold:c,capacity:o,total:d,isDisabled:t}))});Pr.propTypes={isDisabled:d.a.bool,isSelected:d.a.bool,isShared:d.a.bool,isUnlimited:d.a.bool,sold:d.a.number,capacity:d.a.number,sharedSold:d.a.number,sharedCapacity:d.a.number},Pr.defaultProps={sold:0,sharedCapacity:0,capacity:0};var Cr=Pr,xr=function(e,t){return t?En.f.getSharedTicketsSold(e):0},Rr=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.isSharedTicket(e,t);return{isDisabled:En.f.isTicketDisabled(e,t),isShared:n,isUnlimited:En.f.isUnlimitedTicket(e,t),sold:En.f.getTicketSold(e,t),capacity:En.f.getTicketCapacityInt(e,t),sharedSold:xr(e,n),sharedCapacity:En.f.getTicketsSharedCapacityInt(e)}}))(Cr),Ar=(n(523),function(e){var t=e.clientId,n=e.isSelected;return wp.element.createElement(c.Fragment,null,wp.element.createElement("div",{className:"tribe-editor__ticket__container-header-details"},wp.element.createElement(br,{clientId:t,isSelected:n}),wp.element.createElement(Er,{clientId:t,isSelected:n})),wp.element.createElement(Or,{clientId:t,isSelected:n}),wp.element.createElement(Rr,{clientId:t,isSelected:n}))});Ar.propTypes={clientId:d.a.string,isSelected:d.a.bool};var Hr=Ar,Nr=n(87),Vr=n.n(Nr),Fr=n(112),Kr=n.n(Fr),Wr=n(490),Ur=(n(524),En.b.INDEPENDENT),zr=En.b.SHARED,Gr=En.b.TICKET_TYPES,Br=En.d.CAPACITY_TYPE_OPTIONS,qr=function(e){var t=e.className,n=e.id,r=e.label,a=Ke()(e,["className","id","label"]);return wp.element.createElement(Se.LabeledItem,{className:fe()("tribe-editor__labeled-number-input",t),forId:n,label:r,isLabel:!0},wp.element.createElement(Se.NumberInput,a))};qr.propTypes={className:d.a.string,id:d.a.string,label:d.a.string};var Jr=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getInputs=function(){var e=n.props,t=e.isDisabled,r=e.sharedCapacity,a=e.tempCapacityType,s=e.tempCapacity,o=e.tempSharedCapacity,c=e.onTempCapacityChange,u=e.onTempSharedCapacityChange,d=[];if(a===Gr[zr]&&""===r&&d.push(wp.element.createElement(qr,{key:"shared-capacity",className:fe()("tribe-editor__ticket__capacity-input-row","tribe-editor__ticket__capacity-input-row--shared-capacity"),id:n.ids.sharedCapacity,label:Object(i.__)("Set shared capacity:","event-tickets"),value:o,onChange:u,disabled:t,min:0,required:!0})),Kr()([Gr[zr],Gr[Ur]],a)){var _={},l=a===Gr[zr]?zr:Ur;if(a===Gr[zr]&&(r||o)){var m=r||o;_.max=parseInt(m,10)||0}a===Gr[Ur]&&(_.required=!0),_.label=a===Gr[zr]?Object(i.__)("(optional) Limit sales of this ticket to:","event-tickets"):Object(i.__)("Number of tickets available","event-tickets"),d.push(wp.element.createElement(qr,Ve()({key:"capacity",className:fe()("tribe-editor__ticket__capacity-input-row","tribe-editor__ticket__capacity-input-row--capacity","tribe-editor__ticket__capacity-input-row--capacity-"+l),id:n.ids.capacity,value:s,onChange:c,disabled:t,min:0},_)))}return d},n.getCapacityForm=function(){var e=n.props,t=e.isDisabled,r=e.tempCapacityTypeOption,a=e.onTempCapacityTypeChange;return wp.element.createElement(c.Fragment,null,wp.element.createElement(Se.Select,{id:n.ids.select,className:"tribe-editor__ticket__capacity-type-select",backspaceRemovesValue:!1,value:r,isSearchable:!1,isDisabled:t,options:Br,onChange:a}),n.getInputs())},n.getNoPlusCapacityForm=function(){var e=n.props,t=e.isDisabled,r=e.tempCapacity,a=e.onTempCapacityNoPlusChange;return wp.element.createElement(c.Fragment,null,wp.element.createElement(Se.NumberInput,{className:"tribe-editor__ticket__capacity-input",id:n.ids.capacity,value:r,onChange:a,disabled:t,min:0}),wp.element.createElement("span",{className:"tribe-editor__ticket__capacity-input-helper-text"},Object(i.__)("Leave blank for unlimited","event-tickets")))},n.ids={select:Ce()("capacity-type-"),capacity:Ce()("capacity-"),sharedCapacity:Ce()("shared-capacity-")},n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props.hasTicketsPlus;return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__capacity","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--capacity")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__capacity-label-with-tooltip",forId:e?this.ids.select:this.ids.capacity,isLabel:!0,label:Object(i.__)("Ticket Capacity","event-tickets"),tooltipText:Object(i.__)("Ticket capacity will only be used by attendees buying this ticket type","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement("div",{className:"tribe-editor__ticket__capacity-form"},e?this.getCapacityForm():this.getNoPlusCapacityForm()))}}]),t}(c.PureComponent);Jr.propTypes={hasTicketsPlus:d.a.bool,isDisabled:d.a.bool,sharedCapacity:d.a.string,tempCapacity:d.a.string,tempCapacityType:d.a.string,tempCapacityTypeOption:Wr.ReactSelectOption,tempSharedCapacity:d.a.string,onTempCapacityChange:d.a.func,onTempCapacityNoPlusChange:d.a.func,onTempCapacityTypeChange:d.a.func,onTempSharedCapacityChange:d.a.func};var $r=Jr,Zr=En.b.UNLIMITED,Qr=En.b.INDEPENDENT,Xr=En.b.TICKET_TYPES,ea=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),isDisabled:En.f.isTicketDisabled(e,t),sharedCapacity:En.f.getTicketsSharedCapacity(e),tempCapacity:En.f.getTicketTempCapacity(e,t),tempCapacityType:En.f.getTicketTempCapacityType(e,t),tempCapacityTypeOption:En.f.getTicketTempCapacityTypeOption(e,t),tempSharedCapacity:En.f.getTicketsTempSharedCapacity(e)}},function(e,t){var n=t.clientId;return{onTempCapacityChange:function(t){e(En.a.setTicketTempCapacity(n,t.target.value)),e(En.a.setTicketHasChanges(n,!0))},onTempCapacityNoPlusChange:function(t){var r=t.target.value,a=""===Vr()(r)?Xr[Zr]:Xr[Qr];e(En.a.setTicketTempCapacityType(n,a)),e(En.a.setTicketTempCapacity(n,r)),e(En.a.setTicketHasChanges(n,!0))},onTempCapacityTypeChange:function(t){e(En.a.setTicketTempCapacityType(n,t.value)),e(En.a.setTicketHasChanges(n,!0))},onTempSharedCapacityChange:function(t){e(En.a.setTicketsTempSharedCapacity(t.target.value)),e(En.a.setTicketHasChanges(n,!0))}}}))($r),ta=(n(525),n(526),function(e){var t=e.hasDurationError,n=Ke()(e,["hasDurationError"]);return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__duration","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--duration")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__duration-label-with-tooltip",label:Object(i.__)("Sale Duration","event-tickets"),tooltipText:Object(i.__)("If you do not set a start sale date, tickets will be available immediately.","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement(he.DateTimeRangePicker,Ve()({className:"tribe-editor__ticket__duration-picker"},n)),t&&wp.element.createElement("span",{className:"tribe-editor__ticket__duration-error"},Object(i.__)("There is an error with the selected sales duration. Please fix the issue before saving.","event-tickets")))});ta.propTypes={fromDate:d.a.instanceOf(Date),fromDateInput:d.a.string,fromDateDisabled:d.a.bool,fromTime:d.a.string,fromTimeDisabled:d.a.bool,hasDurationError:d.a.bool,onFromDateChange:d.a.func,onFromTimePickerBlur:d.a.func,onFromTimePickerChange:d.a.func,onFromTimePickerClick:d.a.func,onToDateChange:d.a.func,onToTimePickerBlur:d.a.func,onToTimePickerChange:d.a.func,onToTimePickerClick:d.a.func,toDate:d.a.instanceOf(Date),toDateInput:d.a.string,toDateDisabled:d.a.bool,toTime:d.a.string,toTimeDisabled:d.a.bool};var na=ta,ra=function(e,t){return function(n,r,a){e(En.a.handleTicketStartDate(t.clientId,n,a))}},aa=function(e,t){return function(n){e(En.a.setTicketTempStartTimeInput(t.clientId,n.target.value))}},ia=function(e,t){return function(n,r){e(En.a.handleTicketStartTime(t.clientId,n)),r()}},sa=function(e,t){return function(n,r,a){e(En.a.handleTicketEndDate(t.clientId,n,a))}},oa=function(e,t){return function(n){e(En.a.setTicketTempEndTimeInput(t.clientId,n.target.value))}},ca=function(e,t){return function(n,r){e(En.a.handleTicketEndTime(t.clientId,n)),r()}},ua=function(e,t,n){return function(r){var a=ze.moment.toMoment(r.target.value,ze.moment.TIME_FORMAT,!1);if(!a.isValid()){var i=En.f.getTicketStartTimeInput(e,n);a=ze.moment.toMoment(i,ze.moment.TIME_FORMAT,!1)}var s=ze.moment.totalSeconds(a);t(En.a.handleTicketStartTime(n.clientId,s))}},da=function(e,t,n){return function(r){var a=ze.moment.toMoment(r.target.value,ze.moment.TIME_FORMAT,!1);if(!a.isValid()){var i=En.f.getTicketEndTimeInput(e,n);a=ze.moment.toMoment(i,ze.moment.TIME_FORMAT,!1)}var s=ze.moment.totalSeconds(a);t(En.a.handleTicketEndTime(n.clientId,s))}},_a=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=ze.globals.tecDateSettings().datepickerFormat?ze.moment.toFormat(ze.globals.tecDateSettings().datepickerFormat):"LL",r=En.f.isTicketDisabled(e,t),a=En.f.getTicketTempStartDateMoment(e,t),i=En.f.getTicketTempEndDateMoment(e,t),s=a&&a.toDate(),o=i&&i.toDate();return{fromDate:s,fromDateInput:En.f.getTicketTempStartDateInput(e,t),fromDateDisabled:r,fromDateFormat:n,fromTime:En.f.getTicketTempStartTimeInput(e,t),fromTimeDisabled:r,hasDurationError:En.f.getTicketHasDurationError(e,t),toDate:o,toDateInput:En.f.getTicketTempEndDateInput(e,t),toDateDisabled:r,toDateFormat:n,toTime:En.f.getTicketTempEndTimeInput(e,t),toTimeDisabled:r,state:e}},function(e,t){return{onFromDateChange:ra(e,t),onFromTimePickerChange:aa(e,t),onFromTimePickerClick:ia(e,t),onToDateChange:sa(e,t),onToTimePickerChange:oa(e,t),onToTimePickerClick:ca(e,t),dispatch:e}},function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch,s=Ke()(t,["dispatch"]);return Ve()({},n,a,s,{onFromTimePickerBlur:ua(r,i,n),onToTimePickerBlur:da(r,i,n)})}))(na),la=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.id=Ce()("ticket-sku"),n}return me()(t,e),ue()(t,[{key:"render",value:function(){var e=this.props,t=e.sku,n=e.isDisabled,r=e.onChange;return wp.element.createElement("div",{className:fe()("tribe-editor__ticket__sku","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--sku")},wp.element.createElement(he.LabelWithTooltip,{className:"tribe-editor__ticket__sku-label-with-tooltip",forId:this.id,isLabel:!0,label:Object(i.__)("Ticket SKU","event-tickets"),tooltipText:Object(i.__)("A unique identifying code for each ticket type you're selling","event-tickets"),tooltipLabel:wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__tooltip-label",icon:"info-outline"})}),wp.element.createElement(Se.Input,{className:"tribe-editor__ticket__sku-input",id:this.id,type:"text",value:t,onChange:r,disabled:n}))}}]),t}(c.PureComponent);la.propTypes={isDisabled:d.a.bool,onChange:d.a.func.isRequired,sku:d.a.string};var ma=la,pa=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),sku:En.f.getTicketTempSku(e,t)}},function(e,t){return{onChange:function(n){var r=t.clientId;e(En.a.setTicketTempSku(r,n.target.value)),e(En.a.setTicketHasChanges(r,!0))}}}))(ma),fa=n(262),Ta=n.n(fa),ha=(n(527),En.b.EDD),ya=En.b.WOO,ba=En.b.PROVIDER_TYPES,Ma=["edit-ticket","report"],Sa=function(e){var t=e.editTicketLink,n=e.isDisabled,r=e.provider,a=e.reportLink,s=e.showEcommerceOptions,o=function(e){var s=fe()("tribe-editor__ticket__ecommerce-options-link","tribe-editor__ticket__ecommerce-options-link--"+e),o="report"===e?a:t,c="report"===e?Object(i.__)("View Sales Report","event-tickets"):function(e){var t="";return e===ha?t=Object(i.__)("Edit Ticket in Easy Digital Downloads","event-tickets"):e===ya&&(t=Object(i.__)("Edit Ticket in WooCommerce","event-tickets")),t}(r);return n?wp.element.createElement("span",{className:s},c):wp.element.createElement(Se.Link,{className:s,href:o,target:"_blank"},c)};return s&&wp.element.createElement(Se.LabeledItem,{className:fe()("tribe-editor__ticket__ecommerce-options","tribe-editor__ticket__content-row","tribe-editor__ticket__content-row--ecommerce-options"),label:Object(i.__)("Ecommerce","event-tickets")},wp.element.createElement("div",{className:"tribe-editor__ticket__ecommerce-options-links"},Ma.map(function(e){return wp.element.createElement("span",{key:e,className:"tribe-editor__ticket__ecommerce-options-link-wrapper"},o(e))})))};Sa.propTypes={editTicketLink:d.a.string,isDisabled:d.a.bool,provider:d.a.oneOf([].concat(Ta()(ba),[""])),reportLink:d.a.string,showEcommerceOptions:d.a.bool};var Ea=Sa,ga=En.b.EDD,va=En.b.WOO,ka=function(e){return Kr()([ga,va],e)},Da=function(e,t,n){var r="";ka(n)&&(r=ze.globals.adminUrl()+"post.php?post="+En.f.getTicketId(e,t)+"&action=edit");return r},La=function(e,t,n){var r="";if(ka(n)){var a=ze.globals.adminUrl(),i=En.f.getTicketId(e,t),s="";n===ga?s="edit.php?page=edd-reports&view=sales&post_type=download&tab=logs&download="+i:n===va&&(s="admin.php?page=wc-reports&tab=orders&report=sales_by_product&product_ids="+i),r=""+a+s}return r},Oa=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketProvider(e,t);return{isDisabled:En.f.isTicketDisabled(e,t),provider:n,editTicketLink:Da(e,t,n),reportLink:La(e,t,n),showEcommerceOptions:ka(n)}}))(Ea),Ya=(n(528),function(e){var t=e.moveTicket,n=e.removeTicket,r=e.isDisabled;return wp.element.createElement("div",{className:"tribe-editor__ticket__content-row--move-delete"},wp.element.createElement(Se.Button,{type:"button",onClick:t,disabled:r},Object(i.__)("Move Ticket","event-tickets")),wp.element.createElement(Se.Button,{type:"button",onClick:n,disabled:r},Object(i.__)("Remove Ticket","event-tickets")))});Ya.propTypes={moveTicket:d.a.func.isRequired,removeTicket:d.a.func.isRequired,isDisabled:d.a.bool.isRequired};var wa=Ya,ja=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),ticketId:En.f.getTicketId(e,t)}},function(e,t){return{removeTicket:function(){e(En.a.deleteTicket(t.clientId))},moveTicket:function(n){return e(Object(it.c)(n,t.clientId))}}},function(e,t,n){return Ve()({},e,t,n,{moveTicket:function(){return t.moveTicket(e.ticketId)}})}))(wa),Ia=function(e){function t(e){oe()(this,t);var n=_e()(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.getHeader=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(Te.Dashicon,{className:"tribe-editor__ticket__advanced-options-header-icon",icon:"arrow-down"}),wp.element.createElement("span",{className:"tribe-editor__ticket__advanced-options-header-text"},Object(i.__)("Advanced Options","event-tickets")))},n.getContent=function(){return wp.element.createElement(c.Fragment,null,wp.element.createElement(_a,{clientId:n.props.clientId}),wp.element.createElement(pa,{clientId:n.props.clientId}),wp.element.createElement(Oa,{clientId:n.props.clientId}),n.props.hasBeenCreated&&wp.element.createElement(ja,{clientId:n.props.clientId}))},n.getRows=function(){return[{accordionId:n.accordionId,content:n.getContent(),contentClassName:"tribe-editor__ticket__advanced-options-content",header:n.getHeader(),headerAttrs:{disabled:n.props.isDisabled},headerClassName:"tribe-editor__ticket__advanced-options-header"}]},n.accordionId=Ce()(),n}return me()(t,e),ue()(t,[{key:"render",value:function(){return wp.element.createElement(Se.Accordion,{className:"tribe-editor__ticket__advanced-options",rows:this.getRows()})}}]),t}(c.Component);Ia.propTypes={clientId:d.a.string.isRequired,isDisabled:d.a.bool,hasBeenCreated:d.a.bool};var Pa=Ia,Ca=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),hasBeenCreated:En.f.getTicketHasBeenCreated(e,t)}}))(Pa),xa=(n(529),Object(i.__)("+ Add","event-tickets")),Ra=Object(i.__)("Edit","event-tickets"),Aa=function(e){var t=e.attendeeRegistrationURL,n=e.hasAttendeeInfoFields,r=e.isCreated,a=e.isDisabled,s=e.isModalOpen,o=e.onClick,c=e.onClose,u=e.onIframeLoad,d=n?Ra:xa;return wp.element.createElement(he.AttendeesRegistration,{helperText:Object(i.__)("Save your ticket to enable attendee information fields","event-tickets"),iframeURL:t,isDisabled:a,isModalOpen:s,label:Object(i.__)("Attendee Information","event-tickets"),linkText:d,modalTitle:Object(i.__)("Attendee Information","event-tickets"),onClick:o,onClose:c,onIframeLoad:u,showHelperText:!r})};Aa.propTypes={attendeeRegistrationURL:d.a.string.isRequired,hasAttendeeInfoFields:d.a.bool.isRequired,isCreated:d.a.bool.isRequired,isDisabled:d.a.bool.isRequired,isModalOpen:d.a.bool.isRequired,onClick:d.a.func.isRequired,onClose:d.a.func.isRequired,onIframeLoad:d.a.func.isRequired};var Ha=Aa,Na=function(e,t){return ze.globals.adminUrl()+"edit.php?post_type="+Object(ie.select)("core/editor").getCurrentPostType()+"&page=attendee-registration&ticket_id="+En.f.getTicketId(e,t)+"&tribe_events_modal=1"},Va=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){var n=En.f.getTicketHasBeenCreated(e,t);return{attendeeRegistrationURL:Na(e,t),hasAttendeeInfoFields:En.f.getTicketHasAttendeeInfoFields(e,t),isCreated:n,isDisabled:En.f.isTicketDisabled(e,t)||!n,isModalOpen:En.f.getTicketIsModalOpen(e,t)}},function(e,t){return{onClick:function(){e(En.a.setTicketIsModalOpen(t.clientId,!0))},onClose:function(){e(En.a.setTicketIsModalOpen(t.clientId,!1))},onIframeLoad:function(n){var r=n.contentWindow,a=function(){n.nextSibling.classList.add("tribe-editor__attendee-registration__modal-overlay--show")},i=r.document.querySelector("#event-tickets-attendee-information");i.addEventListener("submit",a);var s=function(){r.removeEventListener("unload",o),i.removeEventListener("submit",a)},o=function(){s();var n=r.document.querySelector("#tribe-tickets-attendee-sortables"),a=Boolean(n.firstElementChild);e(En.a.setTicketHasAttendeeInfoFields(t.clientId,a)),e(En.a.setTicketIsModalOpen(t.clientId,!1))};r.addEventListener("unload",o);var c=r.document.querySelector(".tribe-intro > a");c&&c.setAttribute("target","_blank")}}}))(Ha),Fa=(n(530),function(e){var t=e.clientId,n=e.hasTicketsPlus;return wp.element.createElement(c.Fragment,null,wp.element.createElement(ea,{clientId:t}),wp.element.createElement(Ca,{clientId:t}),n&&wp.element.createElement(Va,{clientId:t}))});Fa.propTypes={clientId:d.a.string.isRequired,hasTicketsPlus:d.a.bool};var Ka=Fa,Wa=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS)}}))(Ka),Ua=function(e){return e.isDisabled?wp.element.createElement(s.ClockInactive,null):wp.element.createElement(s.ClockActive,null)},za=function(e){return e.isDisabled?wp.element.createElement(s.TicketInactive,null):wp.element.createElement(s.TicketActive,null)},Ga=function(e){var t=e.isDisabled,n=e.isFuture,r=e.isPast;return n||r?wp.element.createElement(Ua,{isDisabled:t}):wp.element.createElement(za,{isDisabled:t})};Ga.propTypes={isDisabled:d.a.bool.isRequired,isFuture:d.a.bool,isPast:d.a.bool};var Ba=function(e){var t=e.clientId,n=e.isDisabled,r=e.isFuture,a=e.isPast,i=e.isSelected;return wp.element.createElement(he.ContainerPanel,{className:"tribe-editor__ticket__container",layout:ye.a.ticket,icon:wp.element.createElement(Ga,{isDisabled:n,isFuture:r,isPast:a}),header:wp.element.createElement(Hr,{clientId:t,isSelected:i}),content:wp.element.createElement(Wa,{clientId:t})})};Ba.propTypes={clientId:d.a.string.isRequired,isDisabled:d.a.bool,isFuture:d.a.bool,isPast:d.a.bool,isSelected:d.a.bool};var qa=Ba,Ja=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{isDisabled:En.f.isTicketDisabled(e,t),isFuture:En.f.isTicketFuture(e,t),isPast:En.f.isTicketPast(e,t)}}))(qa),$a=(n(531),function(e){return e?Object(i.__)("Update Ticket","event-tickets"):Object(i.__)("Create Ticket","event-tickets")}),Za=Object(i.__)("Cancel","event-tickets"),Qa=function(e){var t=e.hasBeenCreated,n=e.isCancelDisabled,r=e.isConfirmDisabled,a=e.onCancelClick,i=e.onConfirmClick;return wp.element.createElement(he.ActionDashboard,{className:"tribe-editor__ticket__dashboard",cancelLabel:Za,confirmLabel:$a(t),isCancelDisabled:n,isConfirmDisabled:r,onCancelClick:a,onConfirmClick:i})};Qa.propTypes={hasBeenCreated:d.a.bool,isCancelDisabled:d.a.bool,isConfirmDisabled:d.a.bool,onCancelClick:d.a.func,onConfirmClick:d.a.func};var Xa=Qa,ei=function(e,t){return!En.f.isTicketValid(e,t)||!En.f.getTicketHasChanges(e,t)||En.f.isTicketDisabled(e,t)||En.f.getTicketHasDurationError(e,t)},ti=function(e,t,n){return function(){En.f.getTicketHasBeenCreated(e,n)?(t(En.a.setTicketTempDetails(n.clientId,{title:En.f.getTicketTitle(e,n),description:En.f.getTicketDescription(e,n),price:En.f.getTicketPrice(e,n),sku:En.f.getTicketSku(e,n),startDate:En.f.getTicketStartDate(e,n),startDateInput:En.f.getTicketStartDateInput(e,n),startDateMoment:En.f.getTicketStartDateMoment(e,n),endDate:En.f.getTicketEndDate(e,n),endDateInput:En.f.getTicketEndDateInput(e,n),endDateMoment:En.f.getTicketEndDateMoment(e,n),startTime:En.f.getTicketStartTime(e,n),endTime:En.f.getTicketEndTime(e,n),startTimeInput:En.f.getTicketStartTimeInput(e,n),endTimeInput:En.f.getTicketEndTimeInput(e,n),capacityType:En.f.getTicketCapacityType(e,n),capacity:En.f.getTicketCapacity(e,n)})),t(En.a.setTicketsTempSharedCapacity(En.f.getTicketsSharedCapacity(e))),t(En.a.setTicketHasChanges(n.clientId,!1))):(t(En.a.removeTicketBlock(n.clientId)),Object(ie.dispatch)("core/editor").removeBlocks(n.clientId)),Object(ie.dispatch)("core/editor").clearSelectedBlock()}},ni=function(e,t,n){return function(){return En.f.getTicketHasBeenCreated(e,n)?t(En.a.updateTicket(n.clientId)):t(En.a.createNewTicket(n.clientId))}},ri=Object(j.c)(Object(ke.withStore)(),ne(function(e,t){return{hasBeenCreated:En.f.getTicketHasBeenCreated(e,t),isCancelDisabled:En.f.isTicketDisabled(e,t),isConfirmDisabled:ei(e,t),state:e}},null,function(e,t,n){var r=e.state,a=Ke()(e,["state"]),i=t.dispatch;return Ve()({},n,a,{onCancelClick:ti(r,i,n),onConfirmClick:ni(r,i,n)})}))(Xa),ai=function(e){function t(){return oe()(this,t),_e()(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return me()(t,e),ue()(t,[{key:"componentDidMount",value:function(){this.props.onBlockUpdate(this.props.isSelected)}},{key:"componentDidUpdate",value:function(e){e.isSelected!==this.props.isSelected&&this.props.onBlockUpdate(this.props.isSelected)}},{key:"render",value:function(){var e=this.props,t=e.clientId,n=e.hasTicketsPlus,r=e.isDisabled,a=e.isLoading,i=e.isSelected,s=e.isModalShowing;return e.showTicket?wp.element.createElement(c.Fragment,null,wp.element.createElement("article",{className:fe()("tribe-editor__ticket",{"tribe-editor__ticket--disabled":r},{"tribe-editor__ticket--selected":i},{"tribe-editor__ticket--has-tickets-plus":n})},wp.element.createElement(Ja,{clientId:t,isSelected:i}),wp.element.createElement(ri,{clientId:t,isSelected:i}),a&&wp.element.createElement(Te.Spinner,null)),s&&wp.element.createElement(_n,null)):null}}]),t}(c.PureComponent);ai.propTypes={clientId:d.a.string.isRequired,hasTicketsPlus:d.a.bool,isDisabled:d.a.bool,isLoading:d.a.bool,isModalShowing:d.a.bool,isSelected:d.a.bool,onBlockUpdate:d.a.func,removeTicketBlock:d.a.func,showTicket:d.a.bool};var ii=ai,si=function(e,t){return En.f.getTicketsIsSelected(e)||En.f.hasATicketSelected(e)||En.f.isTicketOnSale(e,t)},oi=Object(j.c)(Object(ke.withStore)({isolated:!0}),ne(function(e,t){return{hasTicketsPlus:Et.plugins.selectors.hasPlugin(e)(Et.plugins.constants.TICKETS_PLUS),hasBeenCreated:En.f.getTicketHasBeenCreated(e,t),isDisabled:En.f.isTicketDisabled(e,t),isLoading:En.f.getTicketIsLoading(e,t),isModalShowing:Object(on.l)(e),modalTicketId:Object(on.e)(e),showTicket:si(e,t),ticketId:En.f.getTicketId(e,t)}},function(e,t){var n=t.clientId;return{onBlockUpdate:function(t){return e(En.a.setTicketIsSelected(n,t))},setInitialState:function(t){e(En.a.registerTicketBlock(n)),e(En.a.setTicketInitialState(t))}}},function(e,t,n){return Ve()({},e,t,n,{isModalShowing:e.isModalShowing&&e.modalTicketId===e.ticketId})}),Object(ke.withSaveData)())(ii),ci={id:"tickets-item",title:Object(i.__)("Event Ticket","event-tickets"),description:Object(i.__)("A single configured ticket type.","event-tickets"),icon:wp.element.createElement(s.Tickets,null),category:"tribe-tickets",keywords:["event","event-tickets","tribe"],parent:["tribe/tickets"],supports:{html:!1},attributes:{hasBeenCreated:{type:"boolean",default:!1},ticketId:{type:"integer",default:0}},edit:oi,save:function(){return wp.element.createElement("div",null,wp.element.createElement(bn.InnerBlocks.Content,null))}},ui=n(54),di=n(110),_i=(n(532),Object(i.__)("Who's Attending?","event-tickets")),li=Object(i.__)("(X) people are attending this event","event-tickets"),mi=function(){return wp.element.createElement("div",{className:"tribe-editor__event-attendees__gravatars"},wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null),wp.element.createElement(s.AttendeesGravatar,null))},pi=function(){return wp.element.createElement("div",{className:"tribe-editor__event-attendees__subtitle"},wp.element.createElement("p",null,li))},fi=function(e){var t=e.isSelected,n=e.title,r=e.displayTitle,a=e.displaySubtitle,i=t||n?function(e){var t=e.isSelected,n=e.isEmpty,r=e.title,a=e.setTitle,i=fe()({"tribe-editor__event-attendees__title":!0,"tribe-editor__event-attendees__title--selected":t}),s=fe()({"tribe-editor__event-attendees__title-text":!0,"tribe-editor__event-attendees__title-text--empty":n&&t});return wp.element.createElement("div",{key:"tribe-events-attendees-label",className:i},wp.element.createElement(Me.a,{id:"tribe-events-attendees-link",className:s,value:r,placeholder:_i,onChange:a}))}(e):wp.element.createElement("span",{className:fe()(["tribe-editor__event-attendees__title","tribe-editor__event-attendees__title--placeholder"])},_i);return wp.element.createElement("div",{className:"tribe-editor__block tribe-editor__event-attendees"},r?i:"",a?wp.element.createElement(pi,null):"",wp.element.createElement(mi,null))},Ti=function(e){var t=e.isSelected,n=e.displayTitle,r=e.displaySubtitle,a=e.onSetDisplayTitleChange,s=e.onSetDisplaySubtitleChange;return t&&wp.element.createElement(bn.InspectorControls,{key:"inspector"},wp.element.createElement(Te.PanelBody,{title:Object(i.__)("Attendees Settings","event-tickets")},wp.element.createElement(Te.ToggleControl,{label:Object(i.__)("Display Title","event-tickets"),checked:n,onChange:a}),wp.element.createElement(Te.ToggleControl,{label:Object(i.__)("Display Subtitle","event-tickets"),checked:r,onChange:s})))},hi=function(e){return wp.element.createElement(c.Fragment,null,wp.element.createElement(fi,e),wp.element.createElement(Ti,e))};hi.propTypes={setTitle:d.a.func,title:d.a.string,isSelected:d.a.bool,isEmpty:d.a.bool,displayTitle:d.a.bool,displaySubtitle:d.a.bool,onSetDisplaySubtitleChange:d.a.func,onSetDisplayTitleChange:d.a.func};var yi=hi,bi=Object(j.c)(Object(ke.withStore)(),ne(function(e){return{title:di.c(e),displayTitle:di.b(e),displaySubtitle:di.a(e)}},function(e){return{setInitialState:function(t){return e(ui.c(t))},setTitle:function(t){return e(ui.d(t.target.value))},onSetDisplayTitleChange:function(t){return e(ui.b(t))},onSetDisplaySubtitleChange:function(t){return e(ui.a(t))}}}),Object(ke.withSaveData)())(yi),Mi=[yn,Tr,ci,{id:"attendees",title:Object(i.__)("Attendee List","event-tickets"),description:Object(i.__)("Show the gravatars of people coming to this event.","event-tickets"),icon:wp.element.createElement(s.Attendees,null),category:"tribe-tickets",keywords:["event","events-gutenberg","tribe"],supports:{html:!1},attributes:{title:{type:"html",default:Object(i.__)("Who's Attending?","event-tickets")},displayTitle:{type:"boolean",default:!0},displaySubtitle:{type:"boolean",default:!0}},edit:bi,save:function(){return null}}];Mi.forEach(function(e){return Object(r.registerBlockType)("tribe/"+e.id,e)}),Object(a.initStore)();t.default=Mi}]);
|
src/resources/js/tpp.js
CHANGED
@@ -50,19 +50,40 @@ var tribe_tickets_tpp = {
|
|
50 |
my.quantity_changed( $( this ) );
|
51 |
};
|
52 |
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
if ( ! my.validate_submission() ) {
|
55 |
e.preventDefault();
|
56 |
-
var $form = $( this ).closest( 'form' );
|
57 |
|
58 |
$form.addClass( 'tribe-tpp-message-display' );
|
59 |
$form.find( '.tribe-tpp-message-confirmation-error' ).show();
|
60 |
|
61 |
-
$( 'html, body').animate({
|
62 |
scrollTop: $form.offset().top
|
63 |
}, 300 );
|
|
|
64 |
return false;
|
65 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
};
|
67 |
|
68 |
$( function() {
|
50 |
my.quantity_changed( $( this ) );
|
51 |
};
|
52 |
|
53 |
+
/**
|
54 |
+
* Handle Submission of RSVP
|
55 |
+
*
|
56 |
+
* @since 4.10.9 - Prevent multiple clicks on "Confirm RSVP" from submitting.
|
57 |
+
*
|
58 |
+
* @param e The event passed to the method.
|
59 |
+
* @returns {my.event|boolean}
|
60 |
+
*/
|
61 |
+
my.event.handle_submission = function ( e ) {
|
62 |
+
|
63 |
+
var $form = $( this ).closest( 'form' );
|
64 |
+
|
65 |
if ( ! my.validate_submission() ) {
|
66 |
e.preventDefault();
|
|
|
67 |
|
68 |
$form.addClass( 'tribe-tpp-message-display' );
|
69 |
$form.find( '.tribe-tpp-message-confirmation-error' ).show();
|
70 |
|
71 |
+
$( 'html, body' ).animate( {
|
72 |
scrollTop: $form.offset().top
|
73 |
}, 300 );
|
74 |
+
|
75 |
return false;
|
76 |
}
|
77 |
+
|
78 |
+
// Check if Form is Submitted Already.
|
79 |
+
if ( $form.data( 'submitted' ) === true ) {
|
80 |
+
e.preventDefault();
|
81 |
+
} else {
|
82 |
+
$form.data( 'submitted', true );
|
83 |
+
}
|
84 |
+
|
85 |
+
// Keep chainability.
|
86 |
+
return this;
|
87 |
};
|
88 |
|
89 |
$( function() {
|
src/resources/js/tpp.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var tribe_tickets_tpp={num_attendees:0,event:{}};!function(t,e){"use strict";e.init=function(){this.$rsvp=t(".tribe-events-tickets-rsvp"),this.attendee_template=t(document.getElementById("tribe-tickets-tpp-tmpl")).html(),this.$rsvp.on("change",".tribe-ticket-quantity",this.event.quantity_changed),this.$rsvp.closest(".cart").on("submit",this.event.handle_submission),t(".tribe-rsvp-list").on("click",".attendee-meta-row .toggle",function(){t(this).toggleClass("on").siblings(".attendee-meta-details").slideToggle()})},e.quantity_changed=function(t){var e=t.closest(".tribe-events-tickets-tpp");parseInt(t.val(),10)?e.addClass("tribe-tickets-has-tpp"):e.removeClass("tribe-tickets-has-tpp")},e.validate_submission=function(){var e=t(document.getElementById("tribe-tickets-full-name")),i=t(document.getElementById("tribe-tickets-email"));return!(!t.trim(e.val()).length||!t.trim(i.val()).length)},e.event.quantity_changed=function(){e.quantity_changed(t(this))},e.event.handle_submission=function(i){
|
1 |
+
var tribe_tickets_tpp={num_attendees:0,event:{}};!function(t,e){"use strict";e.init=function(){this.$rsvp=t(".tribe-events-tickets-rsvp"),this.attendee_template=t(document.getElementById("tribe-tickets-tpp-tmpl")).html(),this.$rsvp.on("change",".tribe-ticket-quantity",this.event.quantity_changed),this.$rsvp.closest(".cart").on("submit",this.event.handle_submission),t(".tribe-rsvp-list").on("click",".attendee-meta-row .toggle",function(){t(this).toggleClass("on").siblings(".attendee-meta-details").slideToggle()})},e.quantity_changed=function(t){var e=t.closest(".tribe-events-tickets-tpp");parseInt(t.val(),10)?e.addClass("tribe-tickets-has-tpp"):e.removeClass("tribe-tickets-has-tpp")},e.validate_submission=function(){var e=t(document.getElementById("tribe-tickets-full-name")),i=t(document.getElementById("tribe-tickets-email"));return!(!t.trim(e.val()).length||!t.trim(i.val()).length)},e.event.quantity_changed=function(){e.quantity_changed(t(this))},e.event.handle_submission=function(i){var s=t(this).closest("form");return e.validate_submission()?(!0===s.data("submitted")?i.preventDefault():s.data("submitted",!0),this):(i.preventDefault(),s.addClass("tribe-tpp-message-display"),s.find(".tribe-tpp-message-confirmation-error").show(),t("html, body").animate({scrollTop:s.offset().top},300),!1)},t(function(){e.init()})}(jQuery,tribe_tickets_tpp);
|
src/template-tags/tickets.php
CHANGED
@@ -11,6 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
}
|
12 |
|
13 |
if ( ! function_exists( 'tribe_tickets_parent_post' ) ) {
|
|
|
14 |
/**
|
15 |
* Returns the current post object that can have tickets attached to it
|
16 |
*
|
@@ -50,6 +51,7 @@ if ( ! function_exists( 'tribe_tickets_parent_post' ) ) {
|
|
50 |
}
|
51 |
|
52 |
if ( ! function_exists( 'tribe_events_has_tickets' ) ) {
|
|
|
53 |
/**
|
54 |
* Determines if any tickets exist for the current event (a specific event
|
55 |
* may be specified, though, by passing the post ID or post object).
|
@@ -69,6 +71,7 @@ if ( ! function_exists( 'tribe_events_has_tickets' ) ) {
|
|
69 |
}//end if
|
70 |
|
71 |
if ( ! function_exists( 'tribe_events_has_soldout' ) ) {
|
|
|
72 |
/**
|
73 |
* Determines if the event has sold out of tickets.
|
74 |
*
|
@@ -90,6 +93,7 @@ if ( ! function_exists( 'tribe_events_has_soldout' ) ) {
|
|
90 |
}
|
91 |
|
92 |
if ( ! function_exists( 'tribe_events_partially_soldout' ) ) {
|
|
|
93 |
/**
|
94 |
* Indicates if one or more of the tickets available for this event (but not
|
95 |
* all) have sold out.
|
@@ -128,6 +132,7 @@ if ( ! function_exists( 'tribe_events_partially_soldout' ) ) {
|
|
128 |
}//end if
|
129 |
|
130 |
if ( ! function_exists( 'tribe_events_count_available_tickets' ) ) {
|
|
|
131 |
/**
|
132 |
* Counts the total number of tickets still available for sale for a
|
133 |
* specific event.
|
@@ -254,16 +259,16 @@ if ( ! function_exists( 'tribe_tickets_buy_button' ) ) {
|
|
254 |
$parts[ $type . '-stock' ] = $html['stock'] = $stock_html;
|
255 |
|
256 |
if ( 'rsvp' === $type ) {
|
257 |
-
$button_label =
|
258 |
$button_anchor = '#rsvp-now';
|
259 |
} else {
|
260 |
-
$button_label =
|
261 |
$button_anchor = '#buy-tickets';
|
262 |
}
|
263 |
|
264 |
$permalink = get_the_permalink( $event_id );
|
265 |
$query_string = parse_url( $permalink, PHP_URL_QUERY );
|
266 |
-
$query_params = empty( $query_string ) ?
|
267 |
|
268 |
$button = '<form method="get" action="' . esc_url( $permalink . $button_anchor ) . '">';
|
269 |
|
@@ -278,7 +283,7 @@ if ( ! function_exists( 'tribe_tickets_buy_button' ) ) {
|
|
278 |
}
|
279 |
}
|
280 |
|
281 |
-
$button .= '<button type="submit" name="tickets_process" class="tribe-button">' . $button_label . '</button></form>';
|
282 |
|
283 |
$parts[ $type . '-button' ] = $html['button'] = $button;
|
284 |
}
|
@@ -306,6 +311,7 @@ if ( ! function_exists( 'tribe_tickets_buy_button' ) ) {
|
|
306 |
}
|
307 |
|
308 |
if ( ! function_exists( 'tribe_tickets_has_unlimited_stock_tickets' ) ) {
|
|
|
309 |
/**
|
310 |
* Returns true if the event contains one or more tickets which are not
|
311 |
* subject to any inventory limitations.
|
@@ -335,6 +341,7 @@ if ( ! function_exists( 'tribe_tickets_has_unlimited_stock_tickets' ) ) {
|
|
335 |
}//end if
|
336 |
|
337 |
if ( ! function_exists( 'tribe_events_product_is_ticket' ) ) {
|
|
|
338 |
/**
|
339 |
* Determines if the product object (or product ID) represents a ticket for
|
340 |
* an event.
|
@@ -350,6 +357,7 @@ if ( ! function_exists( 'tribe_events_product_is_ticket' ) ) {
|
|
350 |
}//end if
|
351 |
|
352 |
if ( ! function_exists( 'tribe_events_get_ticket_event' ) ) {
|
|
|
353 |
/**
|
354 |
* Accepts the post object or ID for a product and, if it represents an event
|
355 |
* ticket, returns the corresponding event object.
|
@@ -366,6 +374,7 @@ if ( ! function_exists( 'tribe_events_get_ticket_event' ) ) {
|
|
366 |
}//end if
|
367 |
|
368 |
if ( ! function_exists( 'tribe_events_ticket_is_on_sale' ) ) {
|
|
|
369 |
/**
|
370 |
* Checks if the ticket is on sale (in relation to it's start/end sale dates).
|
371 |
*
|
@@ -384,6 +393,7 @@ if ( ! function_exists( 'tribe_events_ticket_is_on_sale' ) ) {
|
|
384 |
}//end if
|
385 |
|
386 |
if ( ! function_exists( 'tribe_events_has_tickets_on_sale' ) ) {
|
|
|
387 |
/**
|
388 |
* Checks if the event has any tickets on sale
|
389 |
*
|
@@ -403,11 +413,14 @@ if ( ! function_exists( 'tribe_events_has_tickets_on_sale' ) ) {
|
|
403 |
}
|
404 |
|
405 |
if ( ! function_exists( 'tribe_tickets_get_ticket_stock_message' ) ) {
|
|
|
406 |
/**
|
407 |
* Gets the "tickets sold" message for a given ticket
|
408 |
*
|
409 |
* @param Tribe__Tickets__Ticket_Object $ticket Ticket to analyze
|
410 |
*
|
|
|
|
|
411 |
* @return string
|
412 |
*/
|
413 |
function tribe_tickets_get_ticket_stock_message( Tribe__Tickets__Ticket_Object $ticket ) {
|
@@ -445,7 +458,7 @@ if ( ! function_exists( 'tribe_tickets_get_ticket_stock_message' ) ) {
|
|
445 |
|
446 |
$sold_label = __( 'issued', 'event-tickets' );
|
447 |
if ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) {
|
448 |
-
$sold_label = _x( "
|
449 |
}
|
450 |
|
451 |
// Message for how many remain available
|
@@ -472,193 +485,202 @@ if ( ! function_exists( 'tribe_tickets_get_ticket_stock_message' ) ) {
|
|
472 |
}
|
473 |
}
|
474 |
|
475 |
-
|
476 |
-
* Returns or echoes a url to a file in the Event Tickets plugin resources directory
|
477 |
-
*
|
478 |
-
* @category Tickets
|
479 |
-
* @param string $resource the filename of the resource
|
480 |
-
* @param bool $echo whether or not to echo the url
|
481 |
-
* @param string $root_dir directory to hunt for resource files (src or common)
|
482 |
-
*
|
483 |
-
* @return string
|
484 |
-
**/
|
485 |
-
function tribe_tickets_resource_url( $resource, $echo = false, $root_dir = 'src' ) {
|
486 |
-
$extension = pathinfo( $resource, PATHINFO_EXTENSION );
|
487 |
-
|
488 |
-
if ( 'src' !== $root_dir ) {
|
489 |
-
return tribe_resource_url( $resource, $echo, $root_dir );
|
490 |
-
}
|
491 |
-
|
492 |
-
$resources_path = $root_dir . '/resources/';
|
493 |
-
switch ( $extension ) {
|
494 |
-
case 'css':
|
495 |
-
$resource_path = $resources_path .'css/';
|
496 |
-
break;
|
497 |
-
case 'js':
|
498 |
-
$resource_path = $resources_path .'js/';
|
499 |
-
break;
|
500 |
-
case 'scss':
|
501 |
-
$resource_path = $resources_path .'scss/';
|
502 |
-
break;
|
503 |
-
default:
|
504 |
-
$resource_path = $resources_path;
|
505 |
-
break;
|
506 |
-
}
|
507 |
-
|
508 |
-
$path = $resource_path . $resource;
|
509 |
-
|
510 |
-
$url = plugins_url( Tribe__Tickets__Main::instance()->plugin_dir . $path );
|
511 |
|
512 |
/**
|
513 |
-
*
|
|
|
|
|
|
|
|
|
514 |
*
|
515 |
-
* @
|
516 |
-
* @
|
517 |
*/
|
518 |
-
|
|
|
519 |
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
|
524 |
-
|
525 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
|
527 |
-
|
528 |
-
* Includes a template part, similar to the WP get template part, but looks
|
529 |
-
* in the correct directories for Tribe Tickets templates
|
530 |
-
*
|
531 |
-
* @param string $slug The Base template name
|
532 |
-
* @param null|string $name (optional) if set will try to include `{$slug}-{$name}.php` file
|
533 |
-
* @param array $data (optional) array of vars to inject into the template part
|
534 |
-
* @param boolean $echo (optional) Allows the user to print or return the template
|
535 |
-
*
|
536 |
-
* @uses Tribe__Tickets__Templates::get_template_hierarchy
|
537 |
-
*
|
538 |
-
* @return string|void It will depend if it's echoing or not
|
539 |
-
**/
|
540 |
-
function tribe_tickets_get_template_part( $slug, $name = null, array $data = null, $echo = true ) {
|
541 |
|
542 |
-
|
543 |
-
* Fires an Action before echoing the Template
|
544 |
-
*
|
545 |
-
* @param string $slug Slug for this template
|
546 |
-
* @param string $name Template name
|
547 |
-
* @param array $data The Data that will be used on this template
|
548 |
-
*/
|
549 |
-
do_action( 'tribe_tickets_pre_get_template_part', $slug, $name, $data );
|
550 |
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
|
|
557 |
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
562 |
-
* @param string $slug Slug for this template
|
563 |
-
* @param string $name Template name
|
564 |
-
* @param array $data The Data that will be used on this template
|
565 |
-
*/
|
566 |
-
$templates = apply_filters( 'tribe_tickets_get_template_part_templates', $templates, $slug, $name, $data );
|
567 |
|
568 |
-
|
569 |
-
if ( is_array( $data ) ) {
|
570 |
-
extract( $data );
|
571 |
}
|
|
|
572 |
|
573 |
-
|
574 |
-
|
575 |
-
// loop through templates, return first one found.
|
576 |
-
foreach ( $templates as $template ) {
|
577 |
-
$file = Tribe__Tickets__Templates::get_template_hierarchy( $template, array( 'disable_view_check' => true ) );
|
578 |
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
|
|
|
|
|
|
|
|
589 |
|
590 |
/**
|
591 |
-
*
|
592 |
*
|
593 |
-
* @param string $
|
594 |
-
* @param string $
|
595 |
-
* @param
|
596 |
-
* @param array $data The Data that will be used on this template
|
597 |
*/
|
598 |
-
|
599 |
|
600 |
-
|
601 |
-
|
|
|
|
|
602 |
}
|
|
|
603 |
|
604 |
-
ob_start();
|
605 |
/**
|
606 |
-
*
|
607 |
*
|
608 |
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
609 |
-
* @param string $file Complete path to include the PHP File
|
610 |
* @param string $slug Slug for this template
|
611 |
* @param string $name Template name
|
612 |
* @param array $data The Data that will be used on this template
|
613 |
*/
|
614 |
-
|
615 |
-
include( $file );
|
616 |
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
* @param string $slug Slug for this template
|
622 |
-
* @param string $name Template name
|
623 |
-
* @param array $data The Data that will be used on this template
|
624 |
-
*/
|
625 |
-
do_action( 'tribe_tickets_after_get_template_part', $template, $file, $slug, $name, $data );
|
626 |
-
$html = ob_get_clean();
|
627 |
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
638 |
|
639 |
-
|
640 |
-
|
641 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
642 |
|
643 |
-
|
644 |
-
|
645 |
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
|
655 |
-
|
656 |
-
|
657 |
-
|
|
|
658 |
}
|
659 |
}
|
660 |
|
661 |
if ( ! function_exists( 'tribe_tickets_post_type_enabled' ) ) {
|
|
|
662 |
/**
|
663 |
* Returns whether or not the provided post type allows tickets to be attached
|
664 |
*
|
@@ -748,291 +770,500 @@ if ( ! function_exists( 'tribe_tickets_has_meta_fields' ) ) {
|
|
748 |
}
|
749 |
}
|
750 |
|
751 |
-
|
752 |
-
* Removes all meta for a given object capacity. Object can be a ticket, or an event/post with tickets.
|
753 |
-
*
|
754 |
-
* Note, you can pass an event/post to this function and it will merrily change the meta values
|
755 |
-
* for the event - not for the tickets!
|
756 |
-
*
|
757 |
-
* @since 4.6.2
|
758 |
-
*
|
759 |
-
* @param int|WP_Post $object WP_Post (or ID of post) We are trying to delete capacity from.
|
760 |
-
*
|
761 |
-
* @return int|false
|
762 |
-
*/
|
763 |
-
function tribe_tickets_delete_capacity( $object ) {
|
764 |
|
765 |
-
|
766 |
-
|
767 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
|
773 |
-
|
|
|
|
|
774 |
|
775 |
-
|
776 |
-
return $deleted;
|
777 |
-
}
|
778 |
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
$shared_cap_object->disable();
|
783 |
|
784 |
-
//
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
}
|
789 |
|
790 |
-
|
791 |
-
|
|
|
|
|
|
|
792 |
|
793 |
-
|
794 |
-
* Updates a given Object Capacity
|
795 |
-
*
|
796 |
-
* Note, you can pass an event/post to this function and it will merrily change the meta values
|
797 |
-
* for the event - not for the tickets!
|
798 |
-
*
|
799 |
-
* @since 4.6.2
|
800 |
-
*
|
801 |
-
* @param int|WP_Post|Tribe__Tickets__Ticket_Object $object Post We are trying to save capacity
|
802 |
-
* @param int $capacty What we are trying to update the capacity to.
|
803 |
-
*
|
804 |
-
* @return int|false
|
805 |
-
*/
|
806 |
-
function tribe_tickets_update_capacity( $object, $capacity ) {
|
807 |
-
if ( ! is_numeric( $capacity ) ) {
|
808 |
-
return false;
|
809 |
}
|
|
|
810 |
|
811 |
-
|
812 |
-
$object = get_post( $object );
|
813 |
-
}
|
814 |
|
815 |
-
|
816 |
-
|
817 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
818 |
|
819 |
-
|
820 |
-
|
821 |
-
}
|
822 |
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
* Note while we can send a post/event we do not store capacity on events
|
827 |
-
* so the return values will always be null.
|
828 |
-
*
|
829 |
-
* @since 4.6
|
830 |
-
*
|
831 |
-
* @param int|WP_Post $post Post we are trying to fetch capacity for.
|
832 |
-
*
|
833 |
-
* @return int|null
|
834 |
-
*/
|
835 |
-
function tribe_tickets_get_capacity( $post ) {
|
836 |
-
// When not dealing with a instance of Post try to set it up.
|
837 |
-
if ( ! $post instanceof WP_Post ) {
|
838 |
-
$post = get_post( $post );
|
839 |
-
}
|
840 |
|
841 |
-
|
842 |
-
|
843 |
-
! $post instanceof WP_Post
|
844 |
-
|| empty( $post->ID )
|
845 |
-
) {
|
846 |
-
return null;
|
847 |
}
|
|
|
848 |
|
849 |
-
|
850 |
|
851 |
/**
|
852 |
-
*
|
853 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
854 |
*/
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
// When we have a legacy ticket we migrate it
|
861 |
-
if (
|
862 |
-
! in_array( $post->post_type, $event_types )
|
863 |
-
&& $version->is_legacy( $post->ID )
|
864 |
-
) {
|
865 |
-
$legacy_capacity = $handler->filter_capacity_support( null, $post->ID, $key );
|
866 |
-
|
867 |
-
// Cast as integer as it might be returned as numeric string on some cases
|
868 |
-
return (int) $legacy_capacity;
|
869 |
-
}
|
870 |
|
871 |
-
|
872 |
-
|
|
|
|
|
873 |
|
874 |
-
|
875 |
-
|
876 |
-
|
|
|
|
|
|
|
|
|
877 |
|
878 |
-
$
|
879 |
|
880 |
-
// When we
|
881 |
if (
|
882 |
! in_array( $post->post_type, $event_types )
|
883 |
-
&&
|
884 |
) {
|
885 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
886 |
|
887 |
-
|
888 |
-
|
889 |
-
|
|
|
|
|
|
|
890 |
}
|
891 |
-
} else {
|
892 |
-
return null;
|
893 |
}
|
894 |
-
}
|
895 |
|
896 |
-
|
897 |
-
|
898 |
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
|
904 |
-
|
|
|
905 |
}
|
906 |
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
920 |
|
921 |
-
|
922 |
-
if ( $show_parens ) {
|
923 |
-
$html[] = '(';
|
924 |
}
|
|
|
925 |
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
932 |
|
933 |
-
$
|
934 |
-
} else {
|
935 |
-
$html[] = esc_html( $number );
|
936 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
937 |
|
938 |
-
|
939 |
-
$html[] = ')';
|
940 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
|
942 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
943 |
|
944 |
-
|
945 |
-
echo $html;
|
946 |
}
|
|
|
947 |
|
948 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
949 |
}
|
950 |
|
951 |
-
|
952 |
-
* Checks if the specified user (defaults to currently-logged-in user) belongs to any active
|
953 |
-
* WooCommerce Membership plans, *and* if the specified ticket (by ticket ID) has any active
|
954 |
-
* member discounts applied to it. It may not be the user's membership plan specifically, so this
|
955 |
-
* template tag *may* produce some false positives.
|
956 |
-
*
|
957 |
-
* @since 4.7.3
|
958 |
-
*
|
959 |
-
* @param int $ticket_id
|
960 |
-
* @param int $user_id
|
961 |
-
* @return boolean
|
962 |
-
*/
|
963 |
-
function tribe_tickets_ticket_in_wc_membership_for_user( $ticket_id, $user_id = 0 ) {
|
964 |
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
970 |
}
|
|
|
|
|
|
|
971 |
|
972 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
973 |
|
974 |
-
|
975 |
-
$ticket_has_member_discount = wc_memberships_product_has_member_discount( $ticket_id );
|
976 |
|
977 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
978 |
}
|
979 |
|
980 |
-
|
981 |
-
* Builds and returns the correct ticket repository.
|
982 |
-
*
|
983 |
-
* @since 4.8
|
984 |
-
*
|
985 |
-
* @param string $repository The slug of the repository to build/return.
|
986 |
-
*
|
987 |
-
* @return Tribe__Repository__Interface
|
988 |
-
*/
|
989 |
-
function tribe_tickets( $repository = 'default' ) {
|
990 |
-
$map = [
|
991 |
-
'default' => 'tickets.ticket-repository',
|
992 |
-
'rsvp' => 'tickets.ticket-repository.rsvp',
|
993 |
-
'tribe-commerce' => 'tickets.ticket-repository.commerce',
|
994 |
-
'restv1' => 'tickets.rest-v1.ticket-repository',
|
995 |
-
];
|
996 |
|
997 |
/**
|
998 |
-
*
|
999 |
*
|
1000 |
-
* @since 4.
|
1001 |
*
|
1002 |
-
* @param
|
1003 |
-
*
|
|
|
1004 |
*/
|
1005 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1006 |
|
1007 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1008 |
}
|
1009 |
|
1010 |
-
|
1011 |
-
* Builds and returns the correct attendee repository.
|
1012 |
-
*
|
1013 |
-
* @since 4.8
|
1014 |
-
*
|
1015 |
-
* @param string $repository The slug of the repository to build/return.
|
1016 |
-
*
|
1017 |
-
* @return Tribe__Repository__Interface
|
1018 |
-
*/
|
1019 |
-
function tribe_attendees( $repository = 'default' ) {
|
1020 |
-
$map = [
|
1021 |
-
'default' => 'tickets.attendee-repository',
|
1022 |
-
'rsvp' => 'tickets.attendee-repository.rsvp',
|
1023 |
-
'tribe-commerce' => 'tickets.attendee-repository.commerce',
|
1024 |
-
'restv1' => 'tickets.rest-v1.attendee-repository',
|
1025 |
-
];
|
1026 |
|
1027 |
/**
|
1028 |
-
*
|
1029 |
*
|
1030 |
-
* @since 4.
|
|
|
|
|
1031 |
*
|
1032 |
-
* @
|
1033 |
-
* @param string $repository The currently requested implementation.
|
1034 |
*/
|
1035 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1036 |
|
1037 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1038 |
}
|
11 |
}
|
12 |
|
13 |
if ( ! function_exists( 'tribe_tickets_parent_post' ) ) {
|
14 |
+
|
15 |
/**
|
16 |
* Returns the current post object that can have tickets attached to it
|
17 |
*
|
51 |
}
|
52 |
|
53 |
if ( ! function_exists( 'tribe_events_has_tickets' ) ) {
|
54 |
+
|
55 |
/**
|
56 |
* Determines if any tickets exist for the current event (a specific event
|
57 |
* may be specified, though, by passing the post ID or post object).
|
71 |
}//end if
|
72 |
|
73 |
if ( ! function_exists( 'tribe_events_has_soldout' ) ) {
|
74 |
+
|
75 |
/**
|
76 |
* Determines if the event has sold out of tickets.
|
77 |
*
|
93 |
}
|
94 |
|
95 |
if ( ! function_exists( 'tribe_events_partially_soldout' ) ) {
|
96 |
+
|
97 |
/**
|
98 |
* Indicates if one or more of the tickets available for this event (but not
|
99 |
* all) have sold out.
|
132 |
}//end if
|
133 |
|
134 |
if ( ! function_exists( 'tribe_events_count_available_tickets' ) ) {
|
135 |
+
|
136 |
/**
|
137 |
* Counts the total number of tickets still available for sale for a
|
138 |
* specific event.
|
259 |
$parts[ $type . '-stock' ] = $html['stock'] = $stock_html;
|
260 |
|
261 |
if ( 'rsvp' === $type ) {
|
262 |
+
$button_label = sprintf( _x( '%s Now!', 'list view rsvp now ticket button', 'event-tickets' ), tribe_get_rsvp_label_singular( 'list_view_rsvp_now_button' ) );
|
263 |
$button_anchor = '#rsvp-now';
|
264 |
} else {
|
265 |
+
$button_label = _x( 'Buy Now!', 'list view buy now ticket button', 'event-tickets' );
|
266 |
$button_anchor = '#buy-tickets';
|
267 |
}
|
268 |
|
269 |
$permalink = get_the_permalink( $event_id );
|
270 |
$query_string = parse_url( $permalink, PHP_URL_QUERY );
|
271 |
+
$query_params = empty( $query_string ) ? [] : (array) explode( '&', $query_string );
|
272 |
|
273 |
$button = '<form method="get" action="' . esc_url( $permalink . $button_anchor ) . '">';
|
274 |
|
283 |
}
|
284 |
}
|
285 |
|
286 |
+
$button .= '<button type="submit" name="tickets_process" class="tribe-button">' . esc_html( $button_label ) . '</button></form>';
|
287 |
|
288 |
$parts[ $type . '-button' ] = $html['button'] = $button;
|
289 |
}
|
311 |
}
|
312 |
|
313 |
if ( ! function_exists( 'tribe_tickets_has_unlimited_stock_tickets' ) ) {
|
314 |
+
|
315 |
/**
|
316 |
* Returns true if the event contains one or more tickets which are not
|
317 |
* subject to any inventory limitations.
|
341 |
}//end if
|
342 |
|
343 |
if ( ! function_exists( 'tribe_events_product_is_ticket' ) ) {
|
344 |
+
|
345 |
/**
|
346 |
* Determines if the product object (or product ID) represents a ticket for
|
347 |
* an event.
|
357 |
}//end if
|
358 |
|
359 |
if ( ! function_exists( 'tribe_events_get_ticket_event' ) ) {
|
360 |
+
|
361 |
/**
|
362 |
* Accepts the post object or ID for a product and, if it represents an event
|
363 |
* ticket, returns the corresponding event object.
|
374 |
}//end if
|
375 |
|
376 |
if ( ! function_exists( 'tribe_events_ticket_is_on_sale' ) ) {
|
377 |
+
|
378 |
/**
|
379 |
* Checks if the ticket is on sale (in relation to it's start/end sale dates).
|
380 |
*
|
393 |
}//end if
|
394 |
|
395 |
if ( ! function_exists( 'tribe_events_has_tickets_on_sale' ) ) {
|
396 |
+
|
397 |
/**
|
398 |
* Checks if the event has any tickets on sale
|
399 |
*
|
413 |
}
|
414 |
|
415 |
if ( ! function_exists( 'tribe_tickets_get_ticket_stock_message' ) ) {
|
416 |
+
|
417 |
/**
|
418 |
* Gets the "tickets sold" message for a given ticket
|
419 |
*
|
420 |
* @param Tribe__Tickets__Ticket_Object $ticket Ticket to analyze
|
421 |
*
|
422 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
423 |
+
*
|
424 |
* @return string
|
425 |
*/
|
426 |
function tribe_tickets_get_ticket_stock_message( Tribe__Tickets__Ticket_Object $ticket ) {
|
458 |
|
459 |
$sold_label = __( 'issued', 'event-tickets' );
|
460 |
if ( 'Tribe__Tickets__RSVP' === $ticket->provider_class ) {
|
461 |
+
$sold_label = sprintf( _x( "%s'd going", 'RSVPs going', 'event-tickets' ), tribe_get_rsvp_label_singular() );
|
462 |
}
|
463 |
|
464 |
// Message for how many remain available
|
485 |
}
|
486 |
}
|
487 |
|
488 |
+
if ( ! function_exists( 'tribe_tickets_resource_url' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
|
490 |
/**
|
491 |
+
* Returns or echoes a url to a file in the Event Tickets plugin resources directory
|
492 |
+
*
|
493 |
+
* @param string $resource the filename of the resource
|
494 |
+
* @param bool $echo whether or not to echo the url
|
495 |
+
* @param string $root_dir directory to hunt for resource files (src or common)
|
496 |
*
|
497 |
+
* @return string
|
498 |
+
* @category Tickets
|
499 |
*/
|
500 |
+
function tribe_tickets_resource_url( $resource, $echo = false, $root_dir = 'src' ) {
|
501 |
+
$extension = pathinfo( $resource, PATHINFO_EXTENSION );
|
502 |
|
503 |
+
if ( 'src' !== $root_dir ) {
|
504 |
+
return tribe_resource_url( $resource, $echo, $root_dir );
|
505 |
+
}
|
506 |
|
507 |
+
$resources_path = $root_dir . '/resources/';
|
508 |
+
switch ( $extension ) {
|
509 |
+
case 'css':
|
510 |
+
$resource_path = $resources_path . 'css/';
|
511 |
+
break;
|
512 |
+
case 'js':
|
513 |
+
$resource_path = $resources_path . 'js/';
|
514 |
+
break;
|
515 |
+
case 'scss':
|
516 |
+
$resource_path = $resources_path . 'scss/';
|
517 |
+
break;
|
518 |
+
default:
|
519 |
+
$resource_path = $resources_path;
|
520 |
+
break;
|
521 |
+
}
|
522 |
|
523 |
+
$path = $resource_path . $resource;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
|
525 |
+
$url = plugins_url( Tribe__Tickets__Main::instance()->plugin_dir . $path );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
|
527 |
+
/**
|
528 |
+
* Filter the ticket resource URL
|
529 |
+
*
|
530 |
+
* @var $url Resource URL
|
531 |
+
* @var $resource The filename of the resource
|
532 |
+
*/
|
533 |
+
$url = apply_filters( 'tribe_tickets_resource_url', $url, $resource );
|
534 |
|
535 |
+
if ( $echo ) {
|
536 |
+
echo esc_url( $url );
|
537 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
538 |
|
539 |
+
return $url;
|
|
|
|
|
540 |
}
|
541 |
+
}
|
542 |
|
543 |
+
if ( ! function_exists( 'tribe_tickets_get_template_part' ) ) {
|
|
|
|
|
|
|
|
|
544 |
|
545 |
+
/**
|
546 |
+
* Includes a template part, similar to the WP get template part, but looks
|
547 |
+
* in the correct directories for Tribe Tickets templates
|
548 |
+
*
|
549 |
+
* @param string $slug The Base template name
|
550 |
+
* @param null|string $name (optional) if set will try to include `{$slug}-{$name}.php` file
|
551 |
+
* @param array $data (optional) array of vars to inject into the template part
|
552 |
+
* @param boolean $echo (optional) Allows the user to print or return the template
|
553 |
+
*
|
554 |
+
* @return string|void It will depend if it's echoing or not
|
555 |
+
* @uses Tribe__Tickets__Templates::get_template_hierarchy
|
556 |
+
*
|
557 |
+
*/
|
558 |
+
function tribe_tickets_get_template_part( $slug, $name = null, array $data = null, $echo = true ) {
|
559 |
|
560 |
/**
|
561 |
+
* Fires an Action before echoing the Template
|
562 |
*
|
563 |
+
* @param string $slug Slug for this template
|
564 |
+
* @param string $name Template name
|
565 |
+
* @param array $data The Data that will be used on this template
|
|
|
566 |
*/
|
567 |
+
do_action( 'tribe_tickets_pre_get_template_part', $slug, $name, $data );
|
568 |
|
569 |
+
// Setup possible parts
|
570 |
+
$templates = array();
|
571 |
+
if ( isset( $name ) ) {
|
572 |
+
$templates[] = $slug . '-' . $name . '.php';
|
573 |
}
|
574 |
+
$templates[] = $slug . '.php';
|
575 |
|
|
|
576 |
/**
|
577 |
+
* Allow users to filter which templates can be included
|
578 |
*
|
579 |
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
|
|
580 |
* @param string $slug Slug for this template
|
581 |
* @param string $name Template name
|
582 |
* @param array $data The Data that will be used on this template
|
583 |
*/
|
584 |
+
$templates = apply_filters( 'tribe_tickets_get_template_part_templates', $templates, $slug, $name, $data );
|
|
|
585 |
|
586 |
+
// Make any provided variables available in the template's symbol table
|
587 |
+
if ( is_array( $data ) ) {
|
588 |
+
extract( $data );
|
589 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
|
591 |
+
$html = null;
|
592 |
+
|
593 |
+
// loop through templates, return first one found.
|
594 |
+
foreach ( $templates as $template ) {
|
595 |
+
$file = Tribe__Tickets__Templates::get_template_hierarchy( $template, array( 'disable_view_check' => true ) );
|
596 |
+
|
597 |
+
/**
|
598 |
+
* Allow users to filter which template will be included
|
599 |
+
*
|
600 |
+
* @param string $file Complete path to include the PHP File
|
601 |
+
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
602 |
+
* @param string $slug Slug for this template
|
603 |
+
* @param string $name Template name
|
604 |
+
* @param array $data The Data that will be used on this template
|
605 |
+
*/
|
606 |
+
$file = apply_filters( 'tribe_tickets_get_template_part_path', $file, $template, $slug, $name, $data );
|
607 |
+
|
608 |
+
/**
|
609 |
+
* A more Specific Filter that will include the template name
|
610 |
+
*
|
611 |
+
* @param string $file Complete path to include the PHP File
|
612 |
+
* @param string $slug Slug for this template
|
613 |
+
* @param string $name Template name
|
614 |
+
* @param array $data The Data that will be used on this template
|
615 |
+
*/
|
616 |
+
$file = apply_filters( "tribe_tickets_get_template_part_path_{$template}", $file, $slug, $name, $data );
|
617 |
+
|
618 |
+
if ( ! file_exists( $file ) ) {
|
619 |
+
continue;
|
620 |
+
}
|
621 |
|
622 |
+
ob_start();
|
623 |
+
/**
|
624 |
+
* Fires an Action before including the template file
|
625 |
+
*
|
626 |
+
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
627 |
+
* @param string $file Complete path to include the PHP File
|
628 |
+
* @param string $slug Slug for this template
|
629 |
+
* @param string $name Template name
|
630 |
+
* @param array $data The Data that will be used on this template
|
631 |
+
*/
|
632 |
+
do_action( 'tribe_tickets_before_get_template_part', $template, $file, $slug, $name, $data );
|
633 |
+
include( $file );
|
634 |
+
|
635 |
+
/**
|
636 |
+
* Fires an Action After including the template file
|
637 |
+
*
|
638 |
+
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
639 |
+
* @param string $file Complete path to include the PHP File
|
640 |
+
* @param string $slug Slug for this template
|
641 |
+
* @param string $name Template name
|
642 |
+
* @param array $data The Data that will be used on this template
|
643 |
+
*/
|
644 |
+
do_action( 'tribe_tickets_after_get_template_part', $template, $file, $slug, $name, $data );
|
645 |
+
$html = ob_get_clean();
|
646 |
+
|
647 |
+
/**
|
648 |
+
* Allow users to filter the final HTML
|
649 |
+
*
|
650 |
+
* @param string $html The final HTML
|
651 |
+
* @param string $template The Template file, which is a relative path from the Folder we are dealing with
|
652 |
+
* @param string $file Complete path to include the PHP File
|
653 |
+
* @param string $slug Slug for this template
|
654 |
+
* @param string $name Template name
|
655 |
+
* @param array $data The Data that will be used on this template
|
656 |
+
*/
|
657 |
+
$html = apply_filters( 'tribe_tickets_get_template_part_content', $html, $template, $file, $slug, $name, $data );
|
658 |
+
|
659 |
+
if ( $echo ) {
|
660 |
+
echo $html;
|
661 |
+
}
|
662 |
|
663 |
+
break;
|
664 |
+
}
|
665 |
|
666 |
+
/**
|
667 |
+
* Files an Action after echoing/saving the html Template
|
668 |
+
*
|
669 |
+
* @param string $slug Slug for this template
|
670 |
+
* @param string $name Template name
|
671 |
+
* @param array $data The Data that will be used on this template
|
672 |
+
*/
|
673 |
+
do_action( 'tribe_tickets_post_get_template_part', $slug, $name, $data );
|
674 |
|
675 |
+
if ( ! $echo ) {
|
676 |
+
// Return should come at the end
|
677 |
+
return $html;
|
678 |
+
}
|
679 |
}
|
680 |
}
|
681 |
|
682 |
if ( ! function_exists( 'tribe_tickets_post_type_enabled' ) ) {
|
683 |
+
|
684 |
/**
|
685 |
* Returns whether or not the provided post type allows tickets to be attached
|
686 |
*
|
770 |
}
|
771 |
}
|
772 |
|
773 |
+
if ( ! function_exists( 'tribe_tickets_delete_capacity' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
774 |
|
775 |
+
/**
|
776 |
+
* Removes all meta for a given object capacity. Object can be a ticket, or an event/post with tickets.
|
777 |
+
*
|
778 |
+
* Note, you can pass an event/post to this function and it will merrily change the meta values
|
779 |
+
* for the event - not for the tickets!
|
780 |
+
*
|
781 |
+
* @since 4.6.2
|
782 |
+
*
|
783 |
+
* @param int|WP_Post $object WP_Post (or ID of post) We are trying to delete capacity from.
|
784 |
+
*
|
785 |
+
* @return int|false
|
786 |
+
*/
|
787 |
+
function tribe_tickets_delete_capacity( $object ) {
|
788 |
|
789 |
+
if ( ! $object instanceof WP_Post ) {
|
790 |
+
$object = get_post( $object );
|
791 |
+
}
|
792 |
|
793 |
+
if ( ! $object instanceof WP_Post ) {
|
794 |
+
return false;
|
795 |
+
}
|
796 |
|
797 |
+
$deleted = delete_post_meta( $object->ID, tribe( 'tickets.handler' )->key_capacity );
|
|
|
|
|
798 |
|
799 |
+
if ( ! $deleted ) {
|
800 |
+
return $deleted;
|
801 |
+
}
|
|
|
802 |
|
803 |
+
// We only apply these when we are talking about event-like posts
|
804 |
+
if ( tribe_tickets_post_type_enabled( $object->post_type ) ) {
|
805 |
+
$shared_cap_object = new Tribe__Tickets__Global_Stock( $object->ID );
|
806 |
+
$shared_cap_object->disable();
|
|
|
807 |
|
808 |
+
// This is mostly to make sure
|
809 |
+
delete_post_meta( $object->ID, Tribe__Tickets__Global_Stock::GLOBAL_STOCK_LEVEL );
|
810 |
+
delete_post_meta( $object->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_MODE );
|
811 |
+
delete_post_meta( $object->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_CAP );
|
812 |
+
}
|
813 |
|
814 |
+
return $deleted;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
815 |
}
|
816 |
+
}
|
817 |
|
818 |
+
if ( ! function_exists( 'tribe_tickets_update_capacity' ) ) {
|
|
|
|
|
819 |
|
820 |
+
/**
|
821 |
+
* Updates a given Object Capacity
|
822 |
+
*
|
823 |
+
* Note, you can pass an event/post to this function and it will merrily change the meta values
|
824 |
+
* for the event - not for the tickets!
|
825 |
+
*
|
826 |
+
* @since 4.6.2
|
827 |
+
*
|
828 |
+
* @param int|WP_Post|Tribe__Tickets__Ticket_Object $object Post We are trying to save capacity
|
829 |
+
* @param int $capacty What we are trying to update the capacity to.
|
830 |
+
*
|
831 |
+
* @return int|false
|
832 |
+
*/
|
833 |
+
function tribe_tickets_update_capacity( $object, $capacity ) {
|
834 |
+
if ( ! is_numeric( $capacity ) ) {
|
835 |
+
return false;
|
836 |
+
}
|
837 |
|
838 |
+
if ( ! $object instanceof WP_Post ) {
|
839 |
+
$object = get_post( $object );
|
840 |
+
}
|
841 |
|
842 |
+
if ( ! $object instanceof WP_Post ) {
|
843 |
+
return false;
|
844 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
845 |
|
846 |
+
// Do the actual Updating of the Meta value
|
847 |
+
return update_post_meta( $object->ID, tribe( 'tickets.handler' )->key_capacity, $capacity );
|
|
|
|
|
|
|
|
|
848 |
}
|
849 |
+
}
|
850 |
|
851 |
+
if ( ! function_exists( 'tribe_tickets_get_capacity' ) ) {
|
852 |
|
853 |
/**
|
854 |
+
* Returns the capacity for a given Post
|
855 |
+
*
|
856 |
+
* Note while we can send a post/event we do not store capacity on events
|
857 |
+
* so the return values will always be null.
|
858 |
+
*
|
859 |
+
* @since 4.6
|
860 |
+
*
|
861 |
+
* @param int|WP_Post $post Post we are trying to fetch capacity for.
|
862 |
+
*
|
863 |
+
* @return int|null
|
864 |
*/
|
865 |
+
function tribe_tickets_get_capacity( $post ) {
|
866 |
+
// When not dealing with a Instance of Post try to set it up
|
867 |
+
if ( ! $post instanceof WP_Post ) {
|
868 |
+
$post = get_post( $post );
|
869 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
870 |
|
871 |
+
// Bail when it's not a post or ID is 0
|
872 |
+
if ( ! $post instanceof WP_Post || 0 === $post->ID ) {
|
873 |
+
return null;
|
874 |
+
}
|
875 |
|
876 |
+
$event_types = Tribe__Tickets__Main::instance()->post_types();
|
877 |
+
/**
|
878 |
+
* @var Tribe__Tickets__Tickets_Handler $handler
|
879 |
+
* @var Tribe__Tickets__Version $version
|
880 |
+
*/
|
881 |
+
$handler = tribe( 'tickets.handler' );
|
882 |
+
$version = tribe( 'tickets.version' );
|
883 |
|
884 |
+
$key = $handler->key_capacity;
|
885 |
|
886 |
+
// When we have a legacy ticket we migrate it
|
887 |
if (
|
888 |
! in_array( $post->post_type, $event_types )
|
889 |
+
&& $version->is_legacy( $post->ID )
|
890 |
) {
|
891 |
+
$legacy_capacity = $handler->filter_capacity_support( null, $post->ID, $key );
|
892 |
+
|
893 |
+
// Cast as integer as it might be returned as numeric string on some cases
|
894 |
+
return (int) $legacy_capacity;
|
895 |
+
}
|
896 |
+
|
897 |
+
// Defaults to the ticket ID
|
898 |
+
$post_id = $post->ID;
|
899 |
+
|
900 |
+
// Return Null for when we don't have the Capacity Data
|
901 |
+
if ( ! metadata_exists( 'post', $post->ID, $key ) ) {
|
902 |
+
$mode = get_post_meta( $post->ID, Tribe__Tickets__Global_Stock::TICKET_STOCK_MODE, true );
|
903 |
+
$shared_modes = [
|
904 |
+
Tribe__Tickets__Global_Stock::CAPPED_STOCK_MODE,
|
905 |
+
Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE,
|
906 |
+
];
|
907 |
+
|
908 |
+
// When we are in a Ticket Post Type update where we get the value from Event
|
909 |
+
if (
|
910 |
+
! in_array( $post->post_type, $event_types )
|
911 |
+
&& in_array( $mode, $shared_modes )
|
912 |
+
) {
|
913 |
+
$event_id = tribe_tickets_get_event_ids( $post->ID );
|
914 |
|
915 |
+
// It will return an array of Events
|
916 |
+
if ( ! empty( $event_id ) ) {
|
917 |
+
$post_id = current( $event_id );
|
918 |
+
}
|
919 |
+
} else {
|
920 |
+
return null;
|
921 |
}
|
|
|
|
|
922 |
}
|
|
|
923 |
|
924 |
+
// Fetch the value
|
925 |
+
$value = get_post_meta( $post_id, $key, true );
|
926 |
|
927 |
+
// When dealing with an empty string we assume it's unlimited
|
928 |
+
if ( '' === $value ) {
|
929 |
+
$value = -1;
|
930 |
+
}
|
931 |
|
932 |
+
return (int) $value;
|
933 |
+
}
|
934 |
}
|
935 |
|
936 |
+
if ( ! function_exists( 'tribe_tickets_get_readable_amount' ) ) {
|
937 |
+
|
938 |
+
/**
|
939 |
+
* Turns a Stock, Remaining, or Capacity number into a human-readable format.
|
940 |
+
*
|
941 |
+
* @since 4.6
|
942 |
+
*
|
943 |
+
* @param string|int $number Which you are trying to convert.
|
944 |
+
* @param string $mode Mode this post is on.
|
945 |
+
* @param bool $display Whether or not to echo.
|
946 |
+
*
|
947 |
+
* @return string
|
948 |
+
*/
|
949 |
+
function tribe_tickets_get_readable_amount( $number, $mode = 'own', $display = false ) {
|
950 |
+
$html = [];
|
951 |
+
|
952 |
+
$show_parens = Tribe__Tickets__Global_Stock::GLOBAL_STOCK_MODE === $mode || Tribe__Tickets__Global_Stock::CAPPED_STOCK_MODE === $mode;
|
953 |
+
if ( $show_parens ) {
|
954 |
+
$html[] = '(';
|
955 |
+
}
|
956 |
+
|
957 |
+
if ( -1 === (int) $number || Tribe__Tickets__Ticket_Object::UNLIMITED_STOCK === $number ) {
|
958 |
+
/** @var Tribe__Tickets__Tickets_Handler $handler */
|
959 |
+
$handler = tribe( 'tickets.handler' );
|
960 |
+
|
961 |
+
$html[] = esc_html( $handler->unlimited_term );
|
962 |
+
} else {
|
963 |
+
$html[] = esc_html( $number );
|
964 |
+
}
|
965 |
+
|
966 |
+
if ( $show_parens ) {
|
967 |
+
$html[] = ')';
|
968 |
+
}
|
969 |
+
|
970 |
+
$html = implode( '', $html );
|
971 |
+
|
972 |
+
if ( true === $display ) {
|
973 |
+
echo $html;
|
974 |
+
}
|
975 |
|
976 |
+
return $html;
|
|
|
|
|
977 |
}
|
978 |
+
}
|
979 |
|
980 |
+
if ( ! function_exists( 'tribe_tickets_ticket_in_wc_membership_for_user' ) ) {
|
981 |
+
|
982 |
+
/**
|
983 |
+
* Checks if the specified user (defaults to currently-logged-in user) belongs to any active
|
984 |
+
* WooCommerce Membership plans, *and* if the specified ticket (by ticket ID) has any active
|
985 |
+
* member discounts applied to it. It may not be the user's membership plan specifically, so this
|
986 |
+
* template tag *may* produce some false positives.
|
987 |
+
*
|
988 |
+
* @since 4.7.3
|
989 |
+
*
|
990 |
+
* @param int $ticket_id
|
991 |
+
* @param int $user_id
|
992 |
+
*
|
993 |
+
* @return boolean
|
994 |
+
*/
|
995 |
+
function tribe_tickets_ticket_in_wc_membership_for_user( $ticket_id, $user_id = 0 ) {
|
996 |
+
|
997 |
+
if (
|
998 |
+
! function_exists( 'wc_memberships_get_user_active_memberships' )
|
999 |
+
|| ! function_exists( 'wc_memberships_product_has_member_discount' )
|
1000 |
+
) {
|
1001 |
+
return false;
|
1002 |
+
}
|
1003 |
+
|
1004 |
+
$user_id = 0 ? get_current_user_id() : $user_id;
|
1005 |
+
|
1006 |
+
$user_is_member = wc_memberships_get_user_active_memberships( $user_id );
|
1007 |
+
$ticket_has_member_discount = wc_memberships_product_has_member_discount( $ticket_id );
|
1008 |
|
1009 |
+
return $user_is_member && $ticket_has_member_discount;
|
|
|
|
|
1010 |
}
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
if ( ! function_exists( 'tribe_tickets' ) ) {
|
1014 |
+
|
1015 |
+
/**
|
1016 |
+
* Builds and returns the correct ticket repository.
|
1017 |
+
*
|
1018 |
+
* @since 4.8
|
1019 |
+
*
|
1020 |
+
* @param string $repository The slug of the repository to build/return.
|
1021 |
+
*
|
1022 |
+
* @return Tribe__Repository__Interface
|
1023 |
+
*/
|
1024 |
+
function tribe_tickets( $repository = 'default' ) {
|
1025 |
+
$map = [
|
1026 |
+
'default' => 'tickets.ticket-repository',
|
1027 |
+
'rsvp' => 'tickets.ticket-repository.rsvp',
|
1028 |
+
'tribe-commerce' => 'tickets.ticket-repository.commerce',
|
1029 |
+
'restv1' => 'tickets.rest-v1.ticket-repository',
|
1030 |
+
];
|
1031 |
+
|
1032 |
+
/**
|
1033 |
+
* Filters the map relating ticket repository slugs to service container bindings.
|
1034 |
+
*
|
1035 |
+
* @since 4.8
|
1036 |
+
*
|
1037 |
+
* @param array $map A map in the shape [ <repository_slug> => <service_name> ]
|
1038 |
+
* @param string $repository The currently requested implementation.
|
1039 |
+
*/
|
1040 |
+
$map = apply_filters( 'tribe_tickets_ticket_repository_map', $map, $repository );
|
1041 |
|
1042 |
+
return tribe( Tribe__Utils__Array::get( $map, $repository, $map['default'] ) );
|
|
|
1043 |
}
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
if ( ! function_exists( 'tribe_attendees' ) ) {
|
1047 |
+
|
1048 |
+
/**
|
1049 |
+
* Builds and returns the correct attendee repository.
|
1050 |
+
*
|
1051 |
+
* @since 4.8
|
1052 |
+
*
|
1053 |
+
* @param string $repository The slug of the repository to build/return.
|
1054 |
+
*
|
1055 |
+
* @return Tribe__Repository__Interface
|
1056 |
+
*/
|
1057 |
+
function tribe_attendees( $repository = 'default' ) {
|
1058 |
+
$map = [
|
1059 |
+
'default' => 'tickets.attendee-repository',
|
1060 |
+
'rsvp' => 'tickets.attendee-repository.rsvp',
|
1061 |
+
'tribe-commerce' => 'tickets.attendee-repository.commerce',
|
1062 |
+
'restv1' => 'tickets.rest-v1.attendee-repository',
|
1063 |
+
];
|
1064 |
|
1065 |
+
/**
|
1066 |
+
* Filters the map relating attendee repository slugs to service container bindings.
|
1067 |
+
*
|
1068 |
+
* @since 4.8
|
1069 |
+
*
|
1070 |
+
* @param array $map A map in the shape [ <repository_slug> => <service_name> ]
|
1071 |
+
* @param string $repository The currently requested implementation.
|
1072 |
+
*/
|
1073 |
+
$map = apply_filters( 'tribe_tickets_attendee_repository_map', $map, $repository );
|
1074 |
|
1075 |
+
return tribe( Tribe__Utils__Array::get( $map, $repository, $map['default'] ) );
|
|
|
1076 |
}
|
1077 |
+
}
|
1078 |
|
1079 |
+
if ( ! function_exists( 'tribe_get_rsvp_label_singular' ) ) {
|
1080 |
+
|
1081 |
+
/**
|
1082 |
+
* Get the singular version of the RSVP label. May also be used as a verb.
|
1083 |
+
*
|
1084 |
+
* @since 4.10.9
|
1085 |
+
*
|
1086 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1087 |
+
*
|
1088 |
+
* @return string
|
1089 |
+
*/
|
1090 |
+
function tribe_get_rsvp_label_singular( $context = '' ) {
|
1091 |
+
/**
|
1092 |
+
* Allows customization of the singular version of the RSVP label.
|
1093 |
+
*
|
1094 |
+
* @since 4.10.9
|
1095 |
+
*
|
1096 |
+
* @param string $label The singular version of the RSVP label. Defaults to "RSVP".
|
1097 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1098 |
+
*/
|
1099 |
+
return apply_filters( 'tribe_get_rsvp_label_singular', _x( 'RSVP', 'singular label for RSVP', 'event-tickets' ), $context );
|
1100 |
+
}
|
1101 |
}
|
1102 |
|
1103 |
+
if ( ! function_exists( 'tribe_get_rsvp_label_singular_lowercase' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1104 |
|
1105 |
+
/**
|
1106 |
+
* Get the lowercase singular version of the RSVP label. May also be used as a verb.
|
1107 |
+
*
|
1108 |
+
* @since 4.10.9
|
1109 |
+
*
|
1110 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1111 |
+
*
|
1112 |
+
* @return string
|
1113 |
+
*/
|
1114 |
+
function tribe_get_rsvp_label_singular_lowercase( $context = '' ) {
|
1115 |
+
/**
|
1116 |
+
* Allows customization of the lowercase singular version of the RSVP label.
|
1117 |
+
*
|
1118 |
+
* @since 4.10.9
|
1119 |
+
*
|
1120 |
+
* @param string $label The lowercase singular version of the RSVP label. Defaults to "rsvp".
|
1121 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1122 |
+
*/
|
1123 |
+
return apply_filters( 'tribe_get_rsvp_label_singular_lowercase', _x( 'rsvp', 'lowercase singular label for RSVP', 'event-tickets' ), $context );
|
1124 |
}
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
if ( ! function_exists( 'tribe_get_rsvp_label_plural' ) ) {
|
1128 |
|
1129 |
+
/**
|
1130 |
+
* Get the plural version of the RSVP label. May also be used as a verb.
|
1131 |
+
*
|
1132 |
+
* @since 4.10.9
|
1133 |
+
*
|
1134 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1135 |
+
*
|
1136 |
+
* @return string
|
1137 |
+
*/
|
1138 |
+
function tribe_get_rsvp_label_plural( $context = '' ) {
|
1139 |
+
/**
|
1140 |
+
* Allows customization of the plural version of the RSVP label.
|
1141 |
+
*
|
1142 |
+
* @since 4.10.9
|
1143 |
+
*
|
1144 |
+
* @param string $label The plural version of the RSVP label, defaults to "RSVPs".
|
1145 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1146 |
+
*/
|
1147 |
+
return apply_filters( 'tribe_get_rsvp_label_plural', _x( 'RSVPs', 'plural label for RSVPs', 'event-tickets' ), $context );
|
1148 |
+
}
|
1149 |
+
}
|
1150 |
|
1151 |
+
if ( ! function_exists( 'tribe_get_rsvp_label_plural_lowercase' ) ) {
|
|
|
1152 |
|
1153 |
+
/**
|
1154 |
+
* Get the lowercase plural version of the RSVP label. May also be used as a verb.
|
1155 |
+
*
|
1156 |
+
* @since 4.10.9
|
1157 |
+
*
|
1158 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1159 |
+
*
|
1160 |
+
* @return string
|
1161 |
+
*/
|
1162 |
+
function tribe_get_rsvp_label_plural_lowercase( $context = '' ) {
|
1163 |
+
/**
|
1164 |
+
* Allows customization of the lowercase plural version of the RSVP label.
|
1165 |
+
*
|
1166 |
+
* @since 4.10.9
|
1167 |
+
*
|
1168 |
+
* @param string $label The lowercase plural version of the RSVP label, defaults to "rsvps".
|
1169 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1170 |
+
*/
|
1171 |
+
return apply_filters( 'tribe_get_rsvp_label_plural_lowercase', _x( 'rsvps', 'lowercase plural label for RSVPs', 'event-tickets' ), $context );
|
1172 |
+
}
|
1173 |
}
|
1174 |
|
1175 |
+
if ( ! function_exists( 'tribe_get_ticket_label_singular' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1176 |
|
1177 |
/**
|
1178 |
+
* Get the singular version of the Ticket label. May also be used as a verb.
|
1179 |
*
|
1180 |
+
* @since 4.10.9
|
1181 |
*
|
1182 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1183 |
+
*
|
1184 |
+
* @return string
|
1185 |
*/
|
1186 |
+
function tribe_get_ticket_label_singular( $context = '' ) {
|
1187 |
+
/**
|
1188 |
+
* Allows customization of the singular version of the Ticket label.
|
1189 |
+
*
|
1190 |
+
* @since 4.10.9
|
1191 |
+
*
|
1192 |
+
* @param string $label The singular version of the Ticket label, defaults to "Ticket".
|
1193 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1194 |
+
*/
|
1195 |
+
return apply_filters( 'tribe_get_ticket_label_singular', _x( 'Ticket', 'singular label for Ticket', 'event-tickets' ), $context );
|
1196 |
+
}
|
1197 |
+
}
|
1198 |
|
1199 |
+
if ( ! function_exists( 'tribe_get_ticket_label_singular_lowercase' ) ) {
|
1200 |
+
|
1201 |
+
/**
|
1202 |
+
* Get the lowercase singular version of the Ticket label. May also be used as a verb.
|
1203 |
+
*
|
1204 |
+
* @since 4.10.9
|
1205 |
+
*
|
1206 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1207 |
+
*
|
1208 |
+
* @return string
|
1209 |
+
*/
|
1210 |
+
function tribe_get_ticket_label_singular_lowercase( $context = '' ) {
|
1211 |
+
/**
|
1212 |
+
* Allows customization of the lowercase singular version of the Ticket label.
|
1213 |
+
*
|
1214 |
+
* @since 4.10.9
|
1215 |
+
*
|
1216 |
+
* @param string $label The lowercase singular version of the Ticket label, defaults to "ticket".
|
1217 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1218 |
+
*/
|
1219 |
+
return apply_filters( 'tribe_get_ticket_label_singular_lowercase', _x( 'ticket', 'lowercase singular label for Ticket', 'event-tickets' ), $context );
|
1220 |
+
}
|
1221 |
}
|
1222 |
|
1223 |
+
if ( ! function_exists( 'tribe_get_ticket_label_plural' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1224 |
|
1225 |
/**
|
1226 |
+
* Get the plural version of the Ticket label. May also be used as a verb.
|
1227 |
*
|
1228 |
+
* @since 4.10.9
|
1229 |
+
*
|
1230 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1231 |
*
|
1232 |
+
* @return string
|
|
|
1233 |
*/
|
1234 |
+
function tribe_get_ticket_label_plural( $context = '' ) {
|
1235 |
+
/**
|
1236 |
+
* Allows customization of the plural version of the Ticket label.
|
1237 |
+
*
|
1238 |
+
* @since 4.10.9
|
1239 |
+
*
|
1240 |
+
* @param string $label The plural version of the Ticket label, defaults to "Tickets".
|
1241 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1242 |
+
*/
|
1243 |
+
return apply_filters( 'tribe_get_ticket_label_plural', _x( 'Tickets', 'plural label for Tickets', 'event-tickets' ), $context );
|
1244 |
+
}
|
1245 |
+
}
|
1246 |
+
|
1247 |
+
if ( ! function_exists( 'tribe_get_ticket_label_plural_lowercase' ) ) {
|
1248 |
|
1249 |
+
/**
|
1250 |
+
* Get the lowercase plural version of the Ticket label. May also be used as a verb.
|
1251 |
+
*
|
1252 |
+
* @since 4.10.9
|
1253 |
+
*
|
1254 |
+
* @param string $context Allows passing additional context to this function's filter, e.g. 'verb' or 'template.php'.
|
1255 |
+
*
|
1256 |
+
* @return string
|
1257 |
+
*/
|
1258 |
+
function tribe_get_ticket_label_plural_lowercase( $context = '' ) {
|
1259 |
+
/**
|
1260 |
+
* Allows customization of the lowercase plural version of the Ticket label.
|
1261 |
+
*
|
1262 |
+
* @since 4.10.9
|
1263 |
+
*
|
1264 |
+
* @param string $label The lowercase plural version of the Ticket label, defaults to "tickets".
|
1265 |
+
* @param string $context The context in which this string is filtered, e.g. 'verb' or 'template.php'.
|
1266 |
+
*/
|
1267 |
+
return apply_filters( 'tribe_get_ticket_label_plural_lowercase', _x( 'tickets', 'lowercase plural label for Tickets', 'event-tickets' ), $context );
|
1268 |
+
}
|
1269 |
}
|
src/views/blocks/attendees/view-link.php
CHANGED
@@ -7,20 +7,22 @@
|
|
7 |
* the Message that Will link to the Tickets Page
|
8 |
*
|
9 |
* Override this template in your own theme by creating a file at:
|
10 |
-
* [your-theme]/tribe/tickets/blocks/attendees/
|
11 |
*
|
12 |
* See more documentation about our Blocks Editor templating system.
|
13 |
*
|
14 |
-
* @link {INSERT_ARTICLE_LINK_HERE}
|
15 |
-
*
|
16 |
* @since 4.9
|
17 |
* @since 4.10.8 Renamed template from order-links.php to view-link.php. Updated to not use the now-deprecated
|
18 |
-
*
|
|
|
|
|
|
|
|
|
|
|
19 |
*
|
20 |
-
* @
|
21 |
*/
|
22 |
|
23 |
-
|
24 |
if ( ! defined( 'ABSPATH' ) ) {
|
25 |
die( '-1' );
|
26 |
}
|
@@ -34,16 +36,20 @@ $user_id = get_current_user_id();
|
|
34 |
$is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
|
35 |
|
36 |
$events_label_singular = $post_type->labels->singular_name;
|
37 |
-
$counters =
|
38 |
$rsvp_count = $view->count_rsvp_attendees( $event_id, $user_id );
|
39 |
$ticket_count = $view->count_ticket_attendees( $event_id, $user_id );
|
40 |
|
41 |
-
if (
|
42 |
-
$counters[] = sprintf(
|
|
|
|
|
43 |
}
|
44 |
|
45 |
-
if (
|
46 |
-
$counters[] = sprintf(
|
|
|
|
|
47 |
}
|
48 |
|
49 |
if ( empty( $counters ) ) {
|
@@ -52,7 +58,7 @@ if ( empty( $counters ) ) {
|
|
52 |
|
53 |
$link = $view->get_tickets_page_url( $event_id, $is_event_page );
|
54 |
|
55 |
-
$message = sprintf(
|
56 |
?>
|
57 |
|
58 |
<div class="tribe-link-view-attendee">
|
7 |
* the Message that Will link to the Tickets Page
|
8 |
*
|
9 |
* Override this template in your own theme by creating a file at:
|
10 |
+
* [your-theme]/tribe/tickets/blocks/attendees/description.php
|
11 |
*
|
12 |
* See more documentation about our Blocks Editor templating system.
|
13 |
*
|
|
|
|
|
14 |
* @since 4.9
|
15 |
* @since 4.10.8 Renamed template from order-links.php to view-link.php. Updated to not use the now-deprecated
|
16 |
+
* third parameter of `get_description_rsvp_ticket()` and to simplify the template's logic.
|
17 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
18 |
+
*
|
19 |
+
* @link {INSERT_ARTICLE_LINK_HERE}
|
20 |
+
*
|
21 |
+
* @version 4.10.9
|
22 |
*
|
23 |
+
* @var Tribe__Tickets__Editor__Template $this
|
24 |
*/
|
25 |
|
|
|
26 |
if ( ! defined( 'ABSPATH' ) ) {
|
27 |
die( '-1' );
|
28 |
}
|
36 |
$is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
|
37 |
|
38 |
$events_label_singular = $post_type->labels->singular_name;
|
39 |
+
$counters = [];
|
40 |
$rsvp_count = $view->count_rsvp_attendees( $event_id, $user_id );
|
41 |
$ticket_count = $view->count_ticket_attendees( $event_id, $user_id );
|
42 |
|
43 |
+
if ( 1 === $rsvp_count ) {
|
44 |
+
$counters[] = sprintf( _x( '%1d %2s', 'RSVP count singular', 'event-tickets' ), $rsvp_count, tribe_get_rsvp_label_singular( basename( __FILE__ ) ) );
|
45 |
+
} elseif ( 1 < $rsvp_count ) {
|
46 |
+
$counters[] = sprintf( _x( '%1d %2s', 'RSVP count plural', 'event-tickets' ), $rsvp_count, tribe_get_rsvp_label_plural( basename( __FILE__ ) ) );
|
47 |
}
|
48 |
|
49 |
+
if ( 1 === $ticket_count ) {
|
50 |
+
$counters[] = sprintf( _x( '%1d %2s', 'Ticket count singular', 'event-tickets' ), $ticket_count, tribe_get_ticket_label_singular( basename( __FILE__ ) ) );
|
51 |
+
} elseif ( 1 < $ticket_count ) {
|
52 |
+
$counters[] = sprintf( _x( '%1d %2s', 'Ticket count plural', 'event-tickets' ), $ticket_count, tribe_get_ticket_label_plural( basename( __FILE__ ) ) );
|
53 |
}
|
54 |
|
55 |
if ( empty( $counters ) ) {
|
58 |
|
59 |
$link = $view->get_tickets_page_url( $event_id, $is_event_page );
|
60 |
|
61 |
+
$message = esc_html( sprintf( __( 'You have %1s for this %2s.', 'event-tickets' ), implode( _x( ' and ', 'separator if there are both RSVPs and Tickets', 'event-tickets' ), $counters ), $events_label_singular ) );
|
62 |
?>
|
63 |
|
64 |
<div class="tribe-link-view-attendee">
|
src/views/blocks/rsvp/content-inactive.php
CHANGED
@@ -11,11 +11,14 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
-
$message = $this->get( 'all_past' )
|
|
|
|
|
19 |
?>
|
20 |
<div class="tribe-block__rsvp__content tribe-block__rsvp__content--inactive">
|
21 |
<div class="tribe-block__rsvp__details__status">
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9
|
14 |
+
* @since 4.10.9 Use function for text.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
+
$message = $this->get( 'all_past' )
|
20 |
+
? sprintf( _x( '%s are no longer available', 'RSVP block inactive content in the past', 'event-tickets' ), tribe_get_rsvp_label_plural( 'block_inactive_content_past' ) )
|
21 |
+
: sprintf( _x( '%s are not yet available', 'RSVP block inactive content', 'event-tickets' ), tribe_get_rsvp_label_plural( 'block_inactive_content' ) );
|
22 |
?>
|
23 |
<div class="tribe-block__rsvp__content tribe-block__rsvp__content--inactive">
|
24 |
<div class="tribe-block__rsvp__details__status">
|
src/views/blocks/rsvp/form/error.php
CHANGED
@@ -11,12 +11,13 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
?>
|
18 |
<div class="tribe-block__rsvp__message__error">
|
19 |
|
20 |
-
<?php
|
21 |
|
22 |
</div>
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
?>
|
19 |
<div class="tribe-block__rsvp__message__error">
|
20 |
|
21 |
+
<?php echo esc_html( sprintf( __( 'Please fill in the %s confirmation name and email fields.', 'event-tickets' ), tribe_get_rsvp_label_singular( basename( __FILE__ ) ) ) ); ?>
|
22 |
|
23 |
</div>
|
src/views/blocks/rsvp/form/quantity.php
CHANGED
@@ -3,7 +3,9 @@
|
|
3 |
* This template renders the RSVP ticket form quantity input
|
4 |
*
|
5 |
* @since 4.9
|
6 |
-
* @
|
|
|
|
|
7 |
*/
|
8 |
?>
|
9 |
<div class="tribe-block__rsvp__number-input">
|
@@ -15,6 +17,6 @@
|
|
15 |
<?php $this->template( 'blocks/rsvp/form/quantity-plus' ); ?>
|
16 |
</div>
|
17 |
<span class="tribe-block__rsvp__number-input-label">
|
18 |
-
<?php echo
|
19 |
</span>
|
20 |
</div>
|
3 |
* This template renders the RSVP ticket form quantity input
|
4 |
*
|
5 |
* @since 4.9
|
6 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
7 |
+
*
|
8 |
+
* @version 4.10.9
|
9 |
*/
|
10 |
?>
|
11 |
<div class="tribe-block__rsvp__number-input">
|
17 |
<?php $this->template( 'blocks/rsvp/form/quantity-plus' ); ?>
|
18 |
</div>
|
19 |
<span class="tribe-block__rsvp__number-input-label">
|
20 |
+
<?php echo esc_html( tribe_get_rsvp_label_plural( 'number_input_label' ) ); ?>
|
21 |
</span>
|
22 |
</div>
|
src/views/blocks/rsvp/form/submit-button.php
CHANGED
@@ -11,8 +11,9 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
?>
|
@@ -22,5 +23,5 @@
|
|
22 |
value="1"
|
23 |
class="tribe-block__rsvp__submit-button"
|
24 |
>
|
25 |
-
<?php
|
26 |
-
</button>
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Use function for submit button text.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
?>
|
23 |
value="1"
|
24 |
class="tribe-block__rsvp__submit-button"
|
25 |
>
|
26 |
+
<?php echo esc_html( sprintf( _x( 'Submit %s', 'blocks rsvp form submit button', 'event-tickets' ), tribe_get_rsvp_label_singular( 'blocks_rsvp_form_submit_button' ) ) ); ?>
|
27 |
+
</button>
|
src/views/blocks/rsvp/icon.php
CHANGED
@@ -11,12 +11,13 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
?>
|
19 |
<div class="tribe-block__rsvp__icon">
|
20 |
<?php $this->template( 'blocks/rsvp/icon-svg' ); ?>
|
21 |
-
<?php
|
22 |
</div>
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
?>
|
20 |
<div class="tribe-block__rsvp__icon">
|
21 |
<?php $this->template( 'blocks/rsvp/icon-svg' ); ?>
|
22 |
+
<?php echo esc_html( tribe_get_rsvp_label_singular( basename( __FILE__ ) ) ); ?>
|
23 |
</div>
|
src/views/blocks/rsvp/messages/success.php
CHANGED
@@ -11,13 +11,14 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
?>
|
19 |
<div class="tribe-block__rsvp__message__success">
|
20 |
|
21 |
-
<?php
|
22 |
|
23 |
</div>
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Use function for text.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
?>
|
20 |
<div class="tribe-block__rsvp__message__success">
|
21 |
|
22 |
+
<?php echo esc_html( sprintf( _x( 'Your %1$s has been received! Check your email for your %1$s confirmation.', 'blocks rsvp messages success', 'event-tickets' ), tribe_get_rsvp_label_singular( 'blocks_rsvp_messages_success' ) ) ); ?>
|
23 |
|
24 |
</div>
|
src/views/blocks/rsvp/status/full.php
CHANGED
@@ -11,8 +11,9 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
-
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Use function for text.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
+
echo esc_html( sprintf( _x( '%s Full', 'blocks rsvp status full', 'event-tickets' ), tribe_get_rsvp_label_singular( 'blocks_rsvp_status_full' ) ) );
|
src/views/blocks/tickets/registration/summary/title.php
CHANGED
@@ -11,14 +11,15 @@
|
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
-
* @
|
15 |
*
|
|
|
16 |
*/
|
17 |
|
18 |
?>
|
19 |
<div class="tribe-block__tickets__registration__title">
|
20 |
<header>
|
21 |
-
<h2><?php
|
22 |
</header>
|
23 |
</div>
|
24 |
|
11 |
* @link {INSERT_ARTICLE_LINK_HERE}
|
12 |
*
|
13 |
* @since 4.9.3
|
14 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
15 |
*
|
16 |
+
* @version 4.10.9
|
17 |
*/
|
18 |
|
19 |
?>
|
20 |
<div class="tribe-block__tickets__registration__title">
|
21 |
<header>
|
22 |
+
<h2><?php echo esc_html( sprintf( __( '%s Registration', 'event-tickets' ), tribe_get_ticket_label_singular( basename( __FILE__ ) ) ) ); ?></h2>
|
23 |
</header>
|
24 |
</div>
|
25 |
|
src/views/registration/content.php
CHANGED
@@ -7,7 +7,9 @@
|
|
7 |
*
|
8 |
* @since 4.9
|
9 |
* @since 4.10.1 Update template paths to add the "registration/" prefix
|
10 |
-
* @
|
|
|
|
|
11 |
*
|
12 |
*/
|
13 |
// If there are no events with tickets in cart, print the empty cart template
|
@@ -20,8 +22,27 @@ $passed_provider = tribe_get_request_var('provider');
|
|
20 |
$passed_provider_class = $this->get_form_class( $passed_provider );
|
21 |
?>
|
22 |
|
23 |
-
<?php foreach ( $events as $event_id => $tickets ) :
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
$provider_class = $passed_provider_class;
|
26 |
$providers = array_unique( wp_list_pluck( wp_list_pluck( $tickets, 'provider'), 'attendee_object') );
|
27 |
|
7 |
*
|
8 |
* @since 4.9
|
9 |
* @since 4.10.1 Update template paths to add the "registration/" prefix
|
10 |
+
* @since 4.10.9 Add Filter to show an event/post tickets on AR Page
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
*
|
14 |
*/
|
15 |
// If there are no events with tickets in cart, print the empty cart template
|
22 |
$passed_provider_class = $this->get_form_class( $passed_provider );
|
23 |
?>
|
24 |
|
25 |
+
<?php foreach ( $events as $event_id => $tickets ) :
|
26 |
+
|
27 |
+
// Remove an event/post tickets if none have attendee registration.
|
28 |
+
$show_tickets = tribe( 'tickets.attendee_registration' )->has_attendee_registration_enabled_in_array_of_tickets( $tickets );
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Filter to show an event/post tickets on Attendee Registration page regardless if they are enabled.
|
32 |
+
*
|
33 |
+
* @param boolean $show_tickets Rrue or false to show tickets for an event.
|
34 |
+
* @param array $tickets An array of ticket products.
|
35 |
+
* @param int $event_id The event/post ID.
|
36 |
+
*
|
37 |
+
* @since 4.10.9
|
38 |
+
*/
|
39 |
+
$show_tickets = apply_filters( 'tribe_tickets_filter_showing_tickets_on_attendee_registration', $show_tickets, $tickets, $event_id );
|
40 |
+
|
41 |
+
if ( ! $show_tickets ) {
|
42 |
+
continue;
|
43 |
+
}
|
44 |
+
|
45 |
+
|
46 |
$provider_class = $passed_provider_class;
|
47 |
$providers = array_unique( wp_list_pluck( wp_list_pluck( $tickets, 'provider'), 'attendee_object') );
|
48 |
|
src/views/tickets/email.php
CHANGED
@@ -15,7 +15,15 @@
|
|
15 |
* 'ticket_id'
|
16 |
* 'security_code')
|
17 |
*
|
18 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
*
|
20 |
* @var array $tickets An array of tickets in the format documented above.
|
21 |
*/
|
@@ -399,7 +407,7 @@
|
|
399 |
<span style="color:#0a0a0e !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-size:15px;"><?php echo $ticket['ticket_id']; ?></span>
|
400 |
</td>
|
401 |
<td class="ticket-details" valign="top" align="left" width="120" style="padding: 0; width:120px; margin:0 !important;">
|
402 |
-
<h6 style="color:#909090 !important; margin:0 0 10px 0; font-family: 'Helvetica Neue', Helvetica, sans-serif; text-transform:uppercase; font-size:13px; font-weight:700 !important;"><?php
|
403 |
<span style="color:#0a0a0e !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-size:15px;"><?php echo $ticket['ticket_name']; ?></span>
|
404 |
</td>
|
405 |
<td class="ticket-details" valign="top" align="left" width="120" style="padding: 0 !important; width:120px; margin:0 !important;">
|
15 |
* 'ticket_id'
|
16 |
* 'security_code')
|
17 |
*
|
18 |
+
* @since 4.0
|
19 |
+
* @since 4.5.11 Ability to remove display of event date.
|
20 |
+
* @since 4.7.4 Change event date to display by default.
|
21 |
+
* Display WooCommerce featured image.
|
22 |
+
* Current ticket action hook before output.
|
23 |
+
* @since 4.7.6 Ability to filter ticket image.
|
24 |
+
* @since 4.10.9 Use function for text.
|
25 |
+
*
|
26 |
+
* @version 4.10.9
|
27 |
*
|
28 |
* @var array $tickets An array of tickets in the format documented above.
|
29 |
*/
|
407 |
<span style="color:#0a0a0e !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-size:15px;"><?php echo $ticket['ticket_id']; ?></span>
|
408 |
</td>
|
409 |
<td class="ticket-details" valign="top" align="left" width="120" style="padding: 0; width:120px; margin:0 !important;">
|
410 |
+
<h6 style="color:#909090 !important; margin:0 0 10px 0; font-family: 'Helvetica Neue', Helvetica, sans-serif; text-transform:uppercase; font-size:13px; font-weight:700 !important;"><?php echo esc_html( sprintf( _x( '%s Type', 'ticket type email heading', 'event-tickets' ), tribe_get_ticket_label_singular( 'ticket_type_email_heading' ) ) ); ?></h6>
|
411 |
<span style="color:#0a0a0e !important; font-family: 'Helvetica Neue', Helvetica, sans-serif; font-size:15px;"><?php echo $ticket['ticket_name']; ?></span>
|
412 |
</td>
|
413 |
<td class="ticket-details" valign="top" align="left" width="120" style="padding: 0 !important; width:120px; margin:0 !important;">
|
src/views/tickets/orders-pp-tickets.php
CHANGED
@@ -6,8 +6,10 @@
|
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
*
|
9 |
-
* @
|
|
|
10 |
*
|
|
|
11 |
*/
|
12 |
|
13 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -29,7 +31,11 @@ if ( ! $view->has_ticket_attendees( $post_id, $user_id ) ) {
|
|
29 |
$attendee_groups = $view->get_post_attendees_by_purchaser( $post_id, $user_id );
|
30 |
?>
|
31 |
<div class="tribe-pp">
|
32 |
-
<h2><?php
|
|
|
|
|
|
|
|
|
33 |
<?php foreach ( $attendee_groups as $attendee_group ) : ?>
|
34 |
<?php
|
35 |
$first_attendee = reset( $attendee_group );
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
*
|
9 |
+
* @since 4.7
|
10 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
11 |
*
|
12 |
+
* @version 4.10.9
|
13 |
*/
|
14 |
|
15 |
if ( ! defined( 'ABSPATH' ) ) {
|
31 |
$attendee_groups = $view->get_post_attendees_by_purchaser( $post_id, $user_id );
|
32 |
?>
|
33 |
<div class="tribe-pp">
|
34 |
+
<h2><?php echo esc_html( sprintf(
|
35 |
+
__( 'My %1$s for this %2$s', 'event-tickets' ),
|
36 |
+
tribe_get_ticket_label_plural( basename( __FILE__ ) ),
|
37 |
+
$post_type->labels->singular_name
|
38 |
+
) ); ?></h2>
|
39 |
<?php foreach ( $attendee_groups as $attendee_group ) : ?>
|
40 |
<?php
|
41 |
$first_attendee = reset( $attendee_group );
|
src/views/tickets/orders-rsvp.php
CHANGED
@@ -5,8 +5,11 @@
|
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-rsvp.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
-
* @version 4.5.5
|
9 |
*
|
|
|
|
|
|
|
|
|
10 |
*/
|
11 |
|
12 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -26,7 +29,7 @@ if ( ! $view->has_rsvp_attendees( $post_id, $user_id ) ) {
|
|
26 |
$attendee_groups = $view->get_event_rsvp_attendees_by_purchaser( $post_id, $user_id );
|
27 |
?>
|
28 |
<div class="tribe-rsvp">
|
29 |
-
<h2><?php
|
30 |
<?php foreach ( $attendee_groups as $attendee_group ): ?>
|
31 |
<?php
|
32 |
$first_attendee = reset( $attendee_group );
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-rsvp.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
|
|
8 |
*
|
9 |
+
* @since 4.2
|
10 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
*/
|
14 |
|
15 |
if ( ! defined( 'ABSPATH' ) ) {
|
29 |
$attendee_groups = $view->get_event_rsvp_attendees_by_purchaser( $post_id, $user_id );
|
30 |
?>
|
31 |
<div class="tribe-rsvp">
|
32 |
+
<h2><?php echo esc_html( sprintf( __( 'My %1$s for this %2$s', 'event-tickets' ), tribe_get_rsvp_label_plural( basename( __FILE__ ) ), $post_type->labels->singular_name ) ); ?></h2>
|
33 |
<?php foreach ( $attendee_groups as $attendee_group ): ?>
|
34 |
<?php
|
35 |
$first_attendee = reset( $attendee_group );
|
src/views/tickets/orders.php
CHANGED
@@ -9,8 +9,9 @@
|
|
9 |
* @since 4.7.4
|
10 |
* @since 4.10.2 Only show Update button if ticket has meta.
|
11 |
* @since 4.10.8 Show Update button if current user has either RSVP or Ticket with meta. Do not use the now-deprecated third parameter of `get_description_rsvp_ticket()`.
|
|
|
12 |
*
|
13 |
-
* @version 4.10.
|
14 |
*/
|
15 |
|
16 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -31,7 +32,7 @@ $tribe_my_tickets_have_meta = false;
|
|
31 |
* Display a notice if the user doesn't have tickets
|
32 |
*/
|
33 |
if ( ! $view->has_ticket_attendees( $event_id, $user_id ) && ! $view->has_rsvp_attendees( $event_id, $user_id ) ) {
|
34 |
-
Tribe__Notices::set_notice( 'ticket-no-results',
|
35 |
}
|
36 |
|
37 |
$is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
|
9 |
* @since 4.7.4
|
10 |
* @since 4.10.2 Only show Update button if ticket has meta.
|
11 |
* @since 4.10.8 Show Update button if current user has either RSVP or Ticket with meta. Do not use the now-deprecated third parameter of `get_description_rsvp_ticket()`.
|
12 |
+
* @since 4.10.9 Use function for text.
|
13 |
*
|
14 |
+
* @version 4.10.9
|
15 |
*/
|
16 |
|
17 |
if ( ! defined( 'ABSPATH' ) ) {
|
32 |
* Display a notice if the user doesn't have tickets
|
33 |
*/
|
34 |
if ( ! $view->has_ticket_attendees( $event_id, $user_id ) && ! $view->has_rsvp_attendees( $event_id, $user_id ) ) {
|
35 |
+
Tribe__Notices::set_notice( 'ticket-no-results', esc_html( sprintf( _x( "You don't have %s for this event", 'notice if user does not have tickets', 'event-tickets' ), tribe_get_ticket_label_plural_lowercase( 'notice_user_does_not_have_tickets' ) ) ) );
|
36 |
}
|
37 |
|
38 |
$is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
|
src/views/tickets/rsvp.php
CHANGED
@@ -6,12 +6,14 @@
|
|
6 |
*
|
7 |
* [your-theme]/tribe-events/tickets/rsvp.php
|
8 |
*
|
|
|
9 |
* @since 4.10.8 More similar display format to that of other ticket types, including better checking of max quantity available.
|
|
|
10 |
*
|
11 |
-
* @version 4.10.
|
12 |
*
|
13 |
* @var Tribe__Tickets__RSVP $this
|
14 |
-
* @var bool
|
15 |
*/
|
16 |
|
17 |
$is_there_any_product_to_sell = false;
|
@@ -29,7 +31,7 @@ $messages_class = $messages ? 'tribe-rsvp-message-display' : '';
|
|
29 |
enctype='multipart/form-data'
|
30 |
>
|
31 |
<h2 class="tribe-events-tickets-title tribe--rsvp">
|
32 |
-
<?php echo
|
33 |
</h2>
|
34 |
|
35 |
|
@@ -60,7 +62,10 @@ $messages_class = $messages ? 'tribe-rsvp-message-display' : '';
|
|
60 |
}
|
61 |
|
62 |
// if the ticket isn't an RSVP ticket, then let's skip it
|
63 |
-
if (
|
|
|
|
|
|
|
64 |
continue;
|
65 |
}
|
66 |
|
@@ -174,7 +179,7 @@ $messages_class = $messages ? 'tribe-rsvp-message-display' : '';
|
|
174 |
|
175 |
<tr class="tribe-tickets-order_status-row">
|
176 |
<td>
|
177 |
-
<label for="tribe-tickets-order_status"><?php echo
|
178 |
</td>
|
179 |
<td colspan="3">
|
180 |
<?php Tribe__Tickets__Tickets_View::instance()->render_rsvp_selector( 'attendee[order_status]', '' ); ?>
|
@@ -224,7 +229,7 @@ $messages_class = $messages ? 'tribe-rsvp-message-display' : '';
|
|
224 |
value="1"
|
225 |
class="tribe-button tribe-button--rsvp"
|
226 |
>
|
227 |
-
<?php
|
228 |
</button>
|
229 |
<?php endif; ?>
|
230 |
</td>
|
6 |
*
|
7 |
* [your-theme]/tribe-events/tickets/rsvp.php
|
8 |
*
|
9 |
+
* @since 4.0
|
10 |
* @since 4.10.8 More similar display format to that of other ticket types, including better checking of max quantity available.
|
11 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
12 |
*
|
13 |
+
* @version 4.10.9
|
14 |
*
|
15 |
* @var Tribe__Tickets__RSVP $this
|
16 |
+
* @var bool $must_login
|
17 |
*/
|
18 |
|
19 |
$is_there_any_product_to_sell = false;
|
31 |
enctype='multipart/form-data'
|
32 |
>
|
33 |
<h2 class="tribe-events-tickets-title tribe--rsvp">
|
34 |
+
<?php echo esc_html( tribe_get_rsvp_label_singular( 'form_heading' ) ); ?>
|
35 |
</h2>
|
36 |
|
37 |
|
62 |
}
|
63 |
|
64 |
// if the ticket isn't an RSVP ticket, then let's skip it
|
65 |
+
if (
|
66 |
+
! $ticket instanceof Tribe__Tickets__Ticket_Object
|
67 |
+
|| 'Tribe__Tickets__RSVP' !== $ticket->provider_class
|
68 |
+
) {
|
69 |
continue;
|
70 |
}
|
71 |
|
179 |
|
180 |
<tr class="tribe-tickets-order_status-row">
|
181 |
<td>
|
182 |
+
<label for="tribe-tickets-order_status"><?php echo esc_html( tribe_get_rsvp_label_singular( 'order_status_label' ) ); ?>:</label>
|
183 |
</td>
|
184 |
<td colspan="3">
|
185 |
<?php Tribe__Tickets__Tickets_View::instance()->render_rsvp_selector( 'attendee[order_status]', '' ); ?>
|
229 |
value="1"
|
230 |
class="tribe-button tribe-button--rsvp"
|
231 |
>
|
232 |
+
<?php echo esc_html( sprintf( _x( 'Confirm %s', 'tickets process button text', 'event-tickets' ), tribe_get_rsvp_label_singular( 'tickets_process_button_text' ) ) );?>
|
233 |
</button>
|
234 |
<?php endif; ?>
|
235 |
</td>
|
src/views/tickets/tpp-success.php
CHANGED
@@ -5,7 +5,11 @@
|
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/tpp-success.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
-
*
|
|
|
|
|
|
|
|
|
9 |
*
|
10 |
* @var bool $is_just_visiting Whether the current user might just have stumbled on the page or not.
|
11 |
* @var bool $order_is_valid Whether the current order is a valid one or not.
|
@@ -74,10 +78,10 @@ $view = Tribe__Tickets__Tickets_View::instance();
|
|
74 |
<table class="tickets">
|
75 |
<thead>
|
76 |
<tr>
|
77 |
-
<th><?php echo
|
78 |
-
<th><?php echo
|
79 |
-
<th><?php echo esc_html_x( 'Quantity', 'Success page tickets table header', 'event-tickets' ) ?></th>
|
80 |
-
<th><?php echo esc_html_x( 'Subtotal', 'Success page tickets table header', 'event-tickets' ) ?></th>
|
81 |
</tr>
|
82 |
</thead>
|
83 |
<tbody>
|
@@ -92,7 +96,7 @@ $view = Tribe__Tickets__Tickets_View::instance();
|
|
92 |
<div class="thumbnail">
|
93 |
<?php echo get_image_tag(
|
94 |
$ticket['header_image_id'],
|
95 |
-
__( '
|
96 |
get_the_title( $ticket_post_id ),
|
97 |
'none',
|
98 |
'thumbnail'
|
5 |
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/tpp-success.php
|
6 |
*
|
7 |
* @package TribeEventsCalendar
|
8 |
+
*
|
9 |
+
* @since 4.7
|
10 |
+
* @since 4.10.9 Uses new functions to get singular and plural texts.
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
*
|
14 |
* @var bool $is_just_visiting Whether the current user might just have stumbled on the page or not.
|
15 |
* @var bool $order_is_valid Whether the current order is a valid one or not.
|
78 |
<table class="tickets">
|
79 |
<thead>
|
80 |
<tr>
|
81 |
+
<th><?php echo esc_html( tribe_get_ticket_label_singular( basename( __FILE__ ) ) ); ?></th>
|
82 |
+
<th><?php echo esc_html_x( 'Price', 'Success page tickets table header', 'event-tickets' ); ?></th>
|
83 |
+
<th><?php echo esc_html_x( 'Quantity', 'Success page tickets table header', 'event-tickets' ); ?></th>
|
84 |
+
<th><?php echo esc_html_x( 'Subtotal', 'Success page tickets table header', 'event-tickets' ); ?></th>
|
85 |
</tr>
|
86 |
</thead>
|
87 |
<tbody>
|
96 |
<div class="thumbnail">
|
97 |
<?php echo get_image_tag(
|
98 |
$ticket['header_image_id'],
|
99 |
+
esc_html( sprintf( __( '%s header image', 'event-tickets' ), tribe_get_ticket_label_singular( 'header_image_alt' ) ) ),
|
100 |
get_the_title( $ticket_post_id ),
|
101 |
'none',
|
102 |
'thumbnail'
|
src/views/tickets/tpp.php
CHANGED
@@ -7,13 +7,14 @@
|
|
7 |
* [your-theme]/tribe-events/tickets/tpp.php
|
8 |
*
|
9 |
* @since 4.5
|
10 |
-
* @since 4.7
|
11 |
-
* @since 4.7.6
|
12 |
-
* @since 4.8.2
|
13 |
-
* @since 4.9.3
|
14 |
* @since 4.10.8 Removed the date_in_range() check per ticket, since it now happens upstream. Better checking of max quantity available.
|
|
|
15 |
*
|
16 |
-
* @version 4.10.
|
17 |
*
|
18 |
* @var bool $must_login
|
19 |
* @var bool $display_login_link
|
@@ -39,7 +40,7 @@ $cart_url = '';
|
|
39 |
<input type="hidden" name="provider" value="Tribe__Tickets__Commerce__PayPal__Main">
|
40 |
<input type="hidden" name="add" value="1">
|
41 |
<h2 class="tribe-events-tickets-title tribe--tpp">
|
42 |
-
<?php echo
|
43 |
</h2>
|
44 |
|
45 |
<div class="tribe-tpp-messages">
|
@@ -70,7 +71,10 @@ $cart_url = '';
|
|
70 |
}
|
71 |
|
72 |
// if the ticket isn't a Tribe Commerce ticket, then let's skip it
|
73 |
-
if (
|
|
|
|
|
|
|
74 |
continue;
|
75 |
}
|
76 |
|
7 |
* [your-theme]/tribe-events/tickets/tpp.php
|
8 |
*
|
9 |
* @since 4.5
|
10 |
+
* @since 4.7 Make the ticket form more readable.
|
11 |
+
* @since 4.7.6 Add support for showing description option.
|
12 |
+
* @since 4.8.2 Add date_in_range() logic so past tickets do not show.
|
13 |
+
* @since 4.9.3 Display login link if visitor is logged out and logging in is required to purchase.
|
14 |
* @since 4.10.8 Removed the date_in_range() check per ticket, since it now happens upstream. Better checking of max quantity available.
|
15 |
+
* @since TBD Use customizable ticket name functions.
|
16 |
*
|
17 |
+
* @version 4.10.9
|
18 |
*
|
19 |
* @var bool $must_login
|
20 |
* @var bool $display_login_link
|
40 |
<input type="hidden" name="provider" value="Tribe__Tickets__Commerce__PayPal__Main">
|
41 |
<input type="hidden" name="add" value="1">
|
42 |
<h2 class="tribe-events-tickets-title tribe--tpp">
|
43 |
+
<?php echo esc_html( tribe_get_ticket_label_plural( basename( __FILE__ ) ) ); ?>
|
44 |
</h2>
|
45 |
|
46 |
<div class="tribe-tpp-messages">
|
71 |
}
|
72 |
|
73 |
// if the ticket isn't a Tribe Commerce ticket, then let's skip it
|
74 |
+
if (
|
75 |
+
! $ticket instanceof Tribe__Tickets__Ticket_Object
|
76 |
+
|| 'Tribe__Tickets__Commerce__PayPal__Main' !== $ticket->provider_class
|
77 |
+
) {
|
78 |
continue;
|
79 |
}
|
80 |
|
src/views/tickets/view-link.php
CHANGED
@@ -4,23 +4,22 @@
|
|
4 |
* Included on the Events Single Page after the meta
|
5 |
* The Message that will link to the Tickets page
|
6 |
*
|
7 |
-
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/
|
8 |
*
|
9 |
* @since 4.2
|
10 |
* @since 4.10.8 Renamed template from order-links.php to view-link.php. Updated to not use the now-deprecated third
|
11 |
-
*
|
|
|
12 |
*
|
13 |
-
* @version 4.10.
|
|
|
|
|
14 |
*/
|
15 |
|
16 |
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
die( '-1' );
|
18 |
}
|
19 |
|
20 |
-
/**
|
21 |
-
* @var Tribe__Tickets__Tickets_View $this
|
22 |
-
*/
|
23 |
-
|
24 |
$view = Tribe__Tickets__Tickets_View::instance();
|
25 |
$event_id = get_the_ID();
|
26 |
$user_id = get_current_user_id();
|
@@ -40,20 +39,28 @@ $ticket_count = $view->count_ticket_attendees( $event_id, $user_id );
|
|
40 |
|
41 |
$counters = [];
|
42 |
|
43 |
-
if (
|
44 |
-
$counters[] = sprintf(
|
|
|
|
|
45 |
}
|
46 |
|
47 |
-
if (
|
48 |
-
$counters[] = sprintf(
|
|
|
|
|
49 |
}
|
50 |
|
51 |
$link = $view->get_tickets_page_url( $event_id, $is_event_page );
|
52 |
|
53 |
-
$message =
|
54 |
-
|
|
|
|
|
|
|
|
|
55 |
?>
|
56 |
|
57 |
<div class="tribe-link-view-attendee">
|
58 |
<?php echo $message; ?>
|
59 |
-
</div>
|
4 |
* Included on the Events Single Page after the meta
|
5 |
* The Message that will link to the Tickets page
|
6 |
*
|
7 |
+
* Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-link.php
|
8 |
*
|
9 |
* @since 4.2
|
10 |
* @since 4.10.8 Renamed template from order-links.php to view-link.php. Updated to not use the now-deprecated third
|
11 |
+
* parameter of `get_description_rsvp_ticket()`.
|
12 |
+
* @since 4.10.9 Use customizable ticket name functions.
|
13 |
*
|
14 |
+
* @version 4.10.9
|
15 |
+
*
|
16 |
+
* @var Tribe__Tickets__Tickets_View $this
|
17 |
*/
|
18 |
|
19 |
if ( ! defined( 'ABSPATH' ) ) {
|
20 |
die( '-1' );
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
23 |
$view = Tribe__Tickets__Tickets_View::instance();
|
24 |
$event_id = get_the_ID();
|
25 |
$user_id = get_current_user_id();
|
39 |
|
40 |
$counters = [];
|
41 |
|
42 |
+
if ( 1 === $rsvp_count ) {
|
43 |
+
$counters[] = sprintf( _x( '%1d %2s', 'RSVP count singular', 'event-tickets' ), $rsvp_count, tribe_get_rsvp_label_singular( basename( __FILE__ ) ) );
|
44 |
+
} elseif ( 1 < $rsvp_count ) {
|
45 |
+
$counters[] = sprintf( _x( '%1d %2s', 'RSVP count plural', 'event-tickets' ), $rsvp_count, tribe_get_rsvp_label_plural( basename( __FILE__ ) ) );
|
46 |
}
|
47 |
|
48 |
+
if ( 1 === $ticket_count ) {
|
49 |
+
$counters[] = sprintf( _x( '%1d %2s', 'Ticket count singular', 'event-tickets' ), $ticket_count, tribe_get_ticket_label_singular( basename( __FILE__ ) ) );
|
50 |
+
} elseif ( 1 < $ticket_count ) {
|
51 |
+
$counters[] = sprintf( _x( '%1d %2s', 'Ticket count plural', 'event-tickets' ), $ticket_count, tribe_get_ticket_label_plural( basename( __FILE__ ) ) );
|
52 |
}
|
53 |
|
54 |
$link = $view->get_tickets_page_url( $event_id, $is_event_page );
|
55 |
|
56 |
+
$message = esc_html( sprintf(
|
57 |
+
__( 'You have %1$s for this %2$s.', 'event-tickets' ),
|
58 |
+
implode( _x( ' and ', 'separator if there are both RSVPs and Tickets', 'event-tickets' ), $counters ),
|
59 |
+
$events_label_singular )
|
60 |
+
);
|
61 |
+
$message .= ' <a href="' . esc_url( $link ) . '">' . esc_html( sprintf( __( 'View your %s', 'event-tickets' ), $this->get_description_rsvp_ticket( $event_id, $user_id ) ) ) . '</a>';
|
62 |
?>
|
63 |
|
64 |
<div class="tribe-link-view-attendee">
|
65 |
<?php echo $message; ?>
|
66 |
+
</div>
|
src/views/v2/day/event/cost.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Day Single Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/day/event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( empty( $event->cost ) ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
|
24 |
+
?>
|
25 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-calendar-list__event-cost">
|
26 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
27 |
+
<a
|
28 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
29 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
30 |
+
>
|
31 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
32 |
+
</a>
|
33 |
+
<?php endif; ?>
|
34 |
+
<span class="tribe-events-c-small-cta__price">
|
35 |
+
<?php echo esc_html( $event->cost ) ?>
|
36 |
+
</span>
|
37 |
+
<?php if ( ! empty( $event->tickets->stock->available ) ) : ?>
|
38 |
+
<span class="tribe-events-c-small-cta__stock">
|
39 |
+
<?php echo esc_html( $event->tickets->stock->available ) ?>
|
40 |
+
</span>
|
41 |
+
<?php endif; ?>
|
42 |
+
</div>
|
src/views/v2/list/event/cost.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: List Single Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/list/event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( empty( $event->cost ) ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
|
24 |
+
?>
|
25 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-calendar-list__event-cost">
|
26 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
27 |
+
<a
|
28 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
29 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
30 |
+
>
|
31 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
32 |
+
</a>
|
33 |
+
<?php endif; ?>
|
34 |
+
<span class="tribe-events-c-small-cta__price">
|
35 |
+
<?php echo esc_html( $event->cost ) ?>
|
36 |
+
</span>
|
37 |
+
<?php if ( ! empty( $event->tickets->stock->available ) ) : ?>
|
38 |
+
<span class="tribe-events-c-small-cta__stock">
|
39 |
+
<?php echo esc_html( $event->tickets->stock->available ) ?>
|
40 |
+
</span>
|
41 |
+
<?php endif; ?>
|
42 |
+
</div>
|
src/views/v2/map/event-cards/event-card/event/actions/cost.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Map View - Single Event Actions - Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/map/event-cards/event-card/event/actions/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
if ( empty( $event->tickets->exist ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
|
24 |
+
<a
|
25 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
26 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
27 |
+
>
|
28 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
29 |
+
</a>
|
src/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Month View - Single Event Tooltip Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/month/calendar-body/day/calendar-events/calendar-event/tooltip/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
|
19 |
+
if ( empty( $event->cost ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-calendar-month__calendar-event-tooltip-cost">
|
24 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
25 |
+
<a
|
26 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
27 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
28 |
+
>
|
29 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
30 |
+
</a>
|
31 |
+
<?php endif; ?>
|
32 |
+
<span class="tribe-events-c-small-cta__price">
|
33 |
+
<?php echo esc_html( $event->cost ) ?>
|
34 |
+
</span>
|
35 |
+
</div>
|
src/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Month View - Mobile Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/month/mobile-events/mobile-day/mobile-event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( ! $event->featured ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
|
24 |
+
if ( empty( $event->cost ) ) {
|
25 |
+
return;
|
26 |
+
}
|
27 |
+
?>
|
28 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-calendar-month-mobile-events__mobile-event-cost">
|
29 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
30 |
+
<a
|
31 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
32 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
33 |
+
>
|
34 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
35 |
+
</a>
|
36 |
+
<?php endif; ?>
|
37 |
+
<span class="tribe-events-c-small-cta__price">
|
38 |
+
<?php echo esc_html( $event->cost ) ?>
|
39 |
+
</span>
|
40 |
+
<?php if ( ! empty( $event->tickets->stock->available ) ) : ?>
|
41 |
+
<span class="tribe-events-c-small-cta__stock">
|
42 |
+
<?php echo esc_html( $event->tickets->stock->available ) ?>
|
43 |
+
</span>
|
44 |
+
<?php endif; ?>
|
45 |
+
</div>
|
src/views/v2/photo/event/cost.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Photo View - Single Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/photo/event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*/
|
18 |
+
|
19 |
+
if ( empty( $event->cost ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-pro-photo__event-cost">
|
24 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
25 |
+
<a
|
26 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
27 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
28 |
+
>
|
29 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
30 |
+
</a>
|
31 |
+
<?php endif; ?>
|
32 |
+
<span class="tribe-events-c-small-cta__price">
|
33 |
+
<?php echo esc_html( $event->cost ) ?>
|
34 |
+
</span>
|
35 |
+
<?php if ( ! empty( $event->tickets->stock->available ) ) : ?>
|
36 |
+
<span class="tribe-events-c-small-cta__stock">
|
37 |
+
<?php echo esc_html( $event->tickets->stock->available ) ?>
|
38 |
+
</span>
|
39 |
+
<?php endif; ?>
|
40 |
+
</div>
|
src/views/v2/week/grid-body/events-day/event/tooltip/cost.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Week View - Event Tooltip Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/week/grid-body/events-day/event/tooltip/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
if ( empty( $event->cost ) ) {
|
20 |
+
return;
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-pro-week-grid__event-tooltip-cost">
|
24 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
25 |
+
<a
|
26 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
27 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
28 |
+
>
|
29 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
30 |
+
</a>
|
31 |
+
<?php endif; ?>
|
32 |
+
<span class="tribe-events-c-small-cta__price">
|
33 |
+
<?php echo esc_html( $event->cost ) ?>
|
34 |
+
</span>
|
35 |
+
</div>
|
36 |
+
|
src/views/v2/week/mobile-events/day/event/cost.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* View: Week View - Mobile Event Cost
|
4 |
+
*
|
5 |
+
* Override this template in your own theme by creating a file at:
|
6 |
+
* [your-theme]/tribe/event-tickets/views/v2/week/mobile-events/day/event/cost.php
|
7 |
+
*
|
8 |
+
* See more documentation about our views templating system.
|
9 |
+
*
|
10 |
+
* @link {INSERT_ARTCILE_LINK_HERE}
|
11 |
+
*
|
12 |
+
* @version 4.10.9
|
13 |
+
*
|
14 |
+
* @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
|
15 |
+
*
|
16 |
+
* @see tribe_get_event() For the format of the event object.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( empty( $event->cost ) ) {
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
?>
|
24 |
+
<div class="tribe-events-c-small-cta tribe-common-b3 tribe-events-pro-week-mobile-events__event-cost">
|
25 |
+
<?php if ( ! empty( $event->tickets->exist ) ) : ?>
|
26 |
+
<a
|
27 |
+
href="<?php echo esc_url( $event->tickets->link->anchor ); ?>"
|
28 |
+
class="tribe-events-c-small-cta__link tribe-common-cta tribe-common-cta--thin-alt"
|
29 |
+
>
|
30 |
+
<?php echo esc_html( $event->tickets->link->label ); ?>
|
31 |
+
</a>
|
32 |
+
<?php endif; ?>
|
33 |
+
<span class="tribe-events-c-small-cta__price">
|
34 |
+
<?php echo esc_html( $event->cost ) ?>
|
35 |
+
</span>
|
36 |
+
<?php if ( ! empty( $event->tickets->stock->available ) ) : ?>
|
37 |
+
<span class="tribe-events-c-small-cta__stock">
|
38 |
+
<?php echo esc_html( $event->tickets->stock->available ) ?>
|
39 |
+
</span>
|
40 |
+
<?php endif; ?>
|
41 |
+
</div>
|
vendor/autoload.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload.php @generated by Composer
|
4 |
+
|
5 |
+
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
+
|
7 |
+
return ComposerAutoloaderInit6a81194869c912b62599b3b953ab6b73::getLoader();
|
vendor/composer/ClassLoader.php
ADDED
@@ -0,0 +1,445 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Composer.
|
5 |
+
*
|
6 |
+
* (c) Nils Adermann <naderman@naderman.de>
|
7 |
+
* Jordi Boggiano <j.boggiano@seld.be>
|
8 |
+
*
|
9 |
+
* For the full copyright and license information, please view the LICENSE
|
10 |
+
* file that was distributed with this source code.
|
11 |
+
*/
|
12 |
+
|
13 |
+
namespace Composer\Autoload;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
17 |
+
*
|
18 |
+
* $loader = new \Composer\Autoload\ClassLoader();
|
19 |
+
*
|
20 |
+
* // register classes with namespaces
|
21 |
+
* $loader->add('Symfony\Component', __DIR__.'/component');
|
22 |
+
* $loader->add('Symfony', __DIR__.'/framework');
|
23 |
+
*
|
24 |
+
* // activate the autoloader
|
25 |
+
* $loader->register();
|
26 |
+
*
|
27 |
+
* // to enable searching the include path (eg. for PEAR packages)
|
28 |
+
* $loader->setUseIncludePath(true);
|
29 |
+
*
|
30 |
+
* In this example, if you try to use a class in the Symfony\Component
|
31 |
+
* namespace or one of its children (Symfony\Component\Console for instance),
|
32 |
+
* the autoloader will first look for the class under the component/
|
33 |
+
* directory, and it will then fallback to the framework/ directory if not
|
34 |
+
* found before giving up.
|
35 |
+
*
|
36 |
+
* This class is loosely based on the Symfony UniversalClassLoader.
|
37 |
+
*
|
38 |
+
* @author Fabien Potencier <fabien@symfony.com>
|
39 |
+
* @author Jordi Boggiano <j.boggiano@seld.be>
|
40 |
+
* @see http://www.php-fig.org/psr/psr-0/
|
41 |
+
* @see http://www.php-fig.org/psr/psr-4/
|
42 |
+
*/
|
43 |
+
class ClassLoader
|
44 |
+
{
|
45 |
+
// PSR-4
|
46 |
+
private $prefixLengthsPsr4 = array();
|
47 |
+
private $prefixDirsPsr4 = array();
|
48 |
+
private $fallbackDirsPsr4 = array();
|
49 |
+
|
50 |
+
// PSR-0
|
51 |
+
private $prefixesPsr0 = array();
|
52 |
+
private $fallbackDirsPsr0 = array();
|
53 |
+
|
54 |
+
private $useIncludePath = false;
|
55 |
+
private $classMap = array();
|
56 |
+
private $classMapAuthoritative = false;
|
57 |
+
private $missingClasses = array();
|
58 |
+
private $apcuPrefix;
|
59 |
+
|
60 |
+
public function getPrefixes()
|
61 |
+
{
|
62 |
+
if (!empty($this->prefixesPsr0)) {
|
63 |
+
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
64 |
+
}
|
65 |
+
|
66 |
+
return array();
|
67 |
+
}
|
68 |
+
|
69 |
+
public function getPrefixesPsr4()
|
70 |
+
{
|
71 |
+
return $this->prefixDirsPsr4;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function getFallbackDirs()
|
75 |
+
{
|
76 |
+
return $this->fallbackDirsPsr0;
|
77 |
+
}
|
78 |
+
|
79 |
+
public function getFallbackDirsPsr4()
|
80 |
+
{
|
81 |
+
return $this->fallbackDirsPsr4;
|
82 |
+
}
|
83 |
+
|
84 |
+
public function getClassMap()
|
85 |
+
{
|
86 |
+
return $this->classMap;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* @param array $classMap Class to filename map
|
91 |
+
*/
|
92 |
+
public function addClassMap(array $classMap)
|
93 |
+
{
|
94 |
+
if ($this->classMap) {
|
95 |
+
$this->classMap = array_merge($this->classMap, $classMap);
|
96 |
+
} else {
|
97 |
+
$this->classMap = $classMap;
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Registers a set of PSR-0 directories for a given prefix, either
|
103 |
+
* appending or prepending to the ones previously set for this prefix.
|
104 |
+
*
|
105 |
+
* @param string $prefix The prefix
|
106 |
+
* @param array|string $paths The PSR-0 root directories
|
107 |
+
* @param bool $prepend Whether to prepend the directories
|
108 |
+
*/
|
109 |
+
public function add($prefix, $paths, $prepend = false)
|
110 |
+
{
|
111 |
+
if (!$prefix) {
|
112 |
+
if ($prepend) {
|
113 |
+
$this->fallbackDirsPsr0 = array_merge(
|
114 |
+
(array) $paths,
|
115 |
+
$this->fallbackDirsPsr0
|
116 |
+
);
|
117 |
+
} else {
|
118 |
+
$this->fallbackDirsPsr0 = array_merge(
|
119 |
+
$this->fallbackDirsPsr0,
|
120 |
+
(array) $paths
|
121 |
+
);
|
122 |
+
}
|
123 |
+
|
124 |
+
return;
|
125 |
+
}
|
126 |
+
|
127 |
+
$first = $prefix[0];
|
128 |
+
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
129 |
+
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
130 |
+
|
131 |
+
return;
|
132 |
+
}
|
133 |
+
if ($prepend) {
|
134 |
+
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
135 |
+
(array) $paths,
|
136 |
+
$this->prefixesPsr0[$first][$prefix]
|
137 |
+
);
|
138 |
+
} else {
|
139 |
+
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
140 |
+
$this->prefixesPsr0[$first][$prefix],
|
141 |
+
(array) $paths
|
142 |
+
);
|
143 |
+
}
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Registers a set of PSR-4 directories for a given namespace, either
|
148 |
+
* appending or prepending to the ones previously set for this namespace.
|
149 |
+
*
|
150 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
151 |
+
* @param array|string $paths The PSR-4 base directories
|
152 |
+
* @param bool $prepend Whether to prepend the directories
|
153 |
+
*
|
154 |
+
* @throws \InvalidArgumentException
|
155 |
+
*/
|
156 |
+
public function addPsr4($prefix, $paths, $prepend = false)
|
157 |
+
{
|
158 |
+
if (!$prefix) {
|
159 |
+
// Register directories for the root namespace.
|
160 |
+
if ($prepend) {
|
161 |
+
$this->fallbackDirsPsr4 = array_merge(
|
162 |
+
(array) $paths,
|
163 |
+
$this->fallbackDirsPsr4
|
164 |
+
);
|
165 |
+
} else {
|
166 |
+
$this->fallbackDirsPsr4 = array_merge(
|
167 |
+
$this->fallbackDirsPsr4,
|
168 |
+
(array) $paths
|
169 |
+
);
|
170 |
+
}
|
171 |
+
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
172 |
+
// Register directories for a new namespace.
|
173 |
+
$length = strlen($prefix);
|
174 |
+
if ('\\' !== $prefix[$length - 1]) {
|
175 |
+
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
176 |
+
}
|
177 |
+
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
178 |
+
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
179 |
+
} elseif ($prepend) {
|
180 |
+
// Prepend directories for an already registered namespace.
|
181 |
+
$this->prefixDirsPsr4[$prefix] = array_merge(
|
182 |
+
(array) $paths,
|
183 |
+
$this->prefixDirsPsr4[$prefix]
|
184 |
+
);
|
185 |
+
} else {
|
186 |
+
// Append directories for an already registered namespace.
|
187 |
+
$this->prefixDirsPsr4[$prefix] = array_merge(
|
188 |
+
$this->prefixDirsPsr4[$prefix],
|
189 |
+
(array) $paths
|
190 |
+
);
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Registers a set of PSR-0 directories for a given prefix,
|
196 |
+
* replacing any others previously set for this prefix.
|
197 |
+
*
|
198 |
+
* @param string $prefix The prefix
|
199 |
+
* @param array|string $paths The PSR-0 base directories
|
200 |
+
*/
|
201 |
+
public function set($prefix, $paths)
|
202 |
+
{
|
203 |
+
if (!$prefix) {
|
204 |
+
$this->fallbackDirsPsr0 = (array) $paths;
|
205 |
+
} else {
|
206 |
+
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Registers a set of PSR-4 directories for a given namespace,
|
212 |
+
* replacing any others previously set for this namespace.
|
213 |
+
*
|
214 |
+
* @param string $prefix The prefix/namespace, with trailing '\\'
|
215 |
+
* @param array|string $paths The PSR-4 base directories
|
216 |
+
*
|
217 |
+
* @throws \InvalidArgumentException
|
218 |
+
*/
|
219 |
+
public function setPsr4($prefix, $paths)
|
220 |
+
{
|
221 |
+
if (!$prefix) {
|
222 |
+
$this->fallbackDirsPsr4 = (array) $paths;
|
223 |
+
} else {
|
224 |
+
$length = strlen($prefix);
|
225 |
+
if ('\\' !== $prefix[$length - 1]) {
|
226 |
+
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
227 |
+
}
|
228 |
+
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
229 |
+
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Turns on searching the include path for class files.
|
235 |
+
*
|
236 |
+
* @param bool $useIncludePath
|
237 |
+
*/
|
238 |
+
public function setUseIncludePath($useIncludePath)
|
239 |
+
{
|
240 |
+
$this->useIncludePath = $useIncludePath;
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Can be used to check if the autoloader uses the include path to check
|
245 |
+
* for classes.
|
246 |
+
*
|
247 |
+
* @return bool
|
248 |
+
*/
|
249 |
+
public function getUseIncludePath()
|
250 |
+
{
|
251 |
+
return $this->useIncludePath;
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Turns off searching the prefix and fallback directories for classes
|
256 |
+
* that have not been registered with the class map.
|
257 |
+
*
|
258 |
+
* @param bool $classMapAuthoritative
|
259 |
+
*/
|
260 |
+
public function setClassMapAuthoritative($classMapAuthoritative)
|
261 |
+
{
|
262 |
+
$this->classMapAuthoritative = $classMapAuthoritative;
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Should class lookup fail if not found in the current class map?
|
267 |
+
*
|
268 |
+
* @return bool
|
269 |
+
*/
|
270 |
+
public function isClassMapAuthoritative()
|
271 |
+
{
|
272 |
+
return $this->classMapAuthoritative;
|
273 |
+
}
|
274 |
+
|
275 |
+
/**
|
276 |
+
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
277 |
+
*
|
278 |
+
* @param string|null $apcuPrefix
|
279 |
+
*/
|
280 |
+
public function setApcuPrefix($apcuPrefix)
|
281 |
+
{
|
282 |
+
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
283 |
+
}
|
284 |
+
|
285 |
+
/**
|
286 |
+
* The APCu prefix in use, or null if APCu caching is not enabled.
|
287 |
+
*
|
288 |
+
* @return string|null
|
289 |
+
*/
|
290 |
+
public function getApcuPrefix()
|
291 |
+
{
|
292 |
+
return $this->apcuPrefix;
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Registers this instance as an autoloader.
|
297 |
+
*
|
298 |
+
* @param bool $prepend Whether to prepend the autoloader or not
|
299 |
+
*/
|
300 |
+
public function register($prepend = false)
|
301 |
+
{
|
302 |
+
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
303 |
+
}
|
304 |
+
|
305 |
+
/**
|
306 |
+
* Unregisters this instance as an autoloader.
|
307 |
+
*/
|
308 |
+
public function unregister()
|
309 |
+
{
|
310 |
+
spl_autoload_unregister(array($this, 'loadClass'));
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Loads the given class or interface.
|
315 |
+
*
|
316 |
+
* @param string $class The name of the class
|
317 |
+
* @return bool|null True if loaded, null otherwise
|
318 |
+
*/
|
319 |
+
public function loadClass($class)
|
320 |
+
{
|
321 |
+
if ($file = $this->findFile($class)) {
|
322 |
+
includeFile($file);
|
323 |
+
|
324 |
+
return true;
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* Finds the path to the file where the class is defined.
|
330 |
+
*
|
331 |
+
* @param string $class The name of the class
|
332 |
+
*
|
333 |
+
* @return string|false The path if found, false otherwise
|
334 |
+
*/
|
335 |
+
public function findFile($class)
|
336 |
+
{
|
337 |
+
// class map lookup
|
338 |
+
if (isset($this->classMap[$class])) {
|
339 |
+
return $this->classMap[$class];
|
340 |
+
}
|
341 |
+
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
342 |
+
return false;
|
343 |
+
}
|
344 |
+
if (null !== $this->apcuPrefix) {
|
345 |
+
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
346 |
+
if ($hit) {
|
347 |
+
return $file;
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
$file = $this->findFileWithExtension($class, '.php');
|
352 |
+
|
353 |
+
// Search for Hack files if we are running on HHVM
|
354 |
+
if (false === $file && defined('HHVM_VERSION')) {
|
355 |
+
$file = $this->findFileWithExtension($class, '.hh');
|
356 |
+
}
|
357 |
+
|
358 |
+
if (null !== $this->apcuPrefix) {
|
359 |
+
apcu_add($this->apcuPrefix.$class, $file);
|
360 |
+
}
|
361 |
+
|
362 |
+
if (false === $file) {
|
363 |
+
// Remember that this class does not exist.
|
364 |
+
$this->missingClasses[$class] = true;
|
365 |
+
}
|
366 |
+
|
367 |
+
return $file;
|
368 |
+
}
|
369 |
+
|
370 |
+
private function findFileWithExtension($class, $ext)
|
371 |
+
{
|
372 |
+
// PSR-4 lookup
|
373 |
+
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
374 |
+
|
375 |
+
$first = $class[0];
|
376 |
+
if (isset($this->prefixLengthsPsr4[$first])) {
|
377 |
+
$subPath = $class;
|
378 |
+
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
379 |
+
$subPath = substr($subPath, 0, $lastPos);
|
380 |
+
$search = $subPath . '\\';
|
381 |
+
if (isset($this->prefixDirsPsr4[$search])) {
|
382 |
+
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
383 |
+
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
384 |
+
if (file_exists($file = $dir . $pathEnd)) {
|
385 |
+
return $file;
|
386 |
+
}
|
387 |
+
}
|
388 |
+
}
|
389 |
+
}
|
390 |
+
}
|
391 |
+
|
392 |
+
// PSR-4 fallback dirs
|
393 |
+
foreach ($this->fallbackDirsPsr4 as $dir) {
|
394 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
395 |
+
return $file;
|
396 |
+
}
|
397 |
+
}
|
398 |
+
|
399 |
+
// PSR-0 lookup
|
400 |
+
if (false !== $pos = strrpos($class, '\\')) {
|
401 |
+
// namespaced class name
|
402 |
+
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
403 |
+
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
404 |
+
} else {
|
405 |
+
// PEAR-like class name
|
406 |
+
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
407 |
+
}
|
408 |
+
|
409 |
+
if (isset($this->prefixesPsr0[$first])) {
|
410 |
+
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
411 |
+
if (0 === strpos($class, $prefix)) {
|
412 |
+
foreach ($dirs as $dir) {
|
413 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
414 |
+
return $file;
|
415 |
+
}
|
416 |
+
}
|
417 |
+
}
|
418 |
+
}
|
419 |
+
}
|
420 |
+
|
421 |
+
// PSR-0 fallback dirs
|
422 |
+
foreach ($this->fallbackDirsPsr0 as $dir) {
|
423 |
+
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
424 |
+
return $file;
|
425 |
+
}
|
426 |
+
}
|
427 |
+
|
428 |
+
// PSR-0 include paths.
|
429 |
+
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
430 |
+
return $file;
|
431 |
+
}
|
432 |
+
|
433 |
+
return false;
|
434 |
+
}
|
435 |
+
}
|
436 |
+
|
437 |
+
/**
|
438 |
+
* Scope isolated include.
|
439 |
+
*
|
440 |
+
* Prevents access to $this/self from included files.
|
441 |
+
*/
|
442 |
+
function includeFile($file)
|
443 |
+
{
|
444 |
+
include $file;
|
445 |
+
}
|
vendor/composer/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
Copyright (c) Nils Adermann, Jordi Boggiano
|
3 |
+
|
4 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5 |
+
of this software and associated documentation files (the "Software"), to deal
|
6 |
+
in the Software without restriction, including without limitation the rights
|
7 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8 |
+
copies of the Software, and to permit persons to whom the Software is furnished
|
9 |
+
to do so, subject to the following conditions:
|
10 |
+
|
11 |
+
The above copyright notice and this permission notice shall be included in all
|
12 |
+
copies or substantial portions of the Software.
|
13 |
+
|
14 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20 |
+
THE SOFTWARE.
|
21 |
+
|
vendor/composer/autoload_classmap.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_classmap.php @generated by Composer
|
4 |
+
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
+
$baseDir = dirname($vendorDir);
|
7 |
+
|
8 |
+
return array(
|
9 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Hooks' => $baseDir . '/src/Tribe/Views/V2/Hooks.php',
|
10 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Models\\Tickets' => $baseDir . '/src/Tribe/Views/V2/Models/Tickets.php',
|
11 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => $baseDir . '/tests/views_integration/Tribe/Events/Tickets/Views/V2/Partials/Day_View/Event/CostTest.php',
|
12 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Service_Provider' => $baseDir . '/src/Tribe/Views/V2/Service_Provider.php',
|
13 |
+
);
|
vendor/composer/autoload_namespaces.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_namespaces.php @generated by Composer
|
4 |
+
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
+
$baseDir = dirname($vendorDir);
|
7 |
+
|
8 |
+
return array(
|
9 |
+
);
|
vendor/composer/autoload_psr4.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_psr4.php @generated by Composer
|
4 |
+
|
5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
6 |
+
$baseDir = dirname($vendorDir);
|
7 |
+
|
8 |
+
return array(
|
9 |
+
'Tribe\\Tests\\Tickets\\' => array($baseDir . '/tests/_support'),
|
10 |
+
'Tribe\\Tests\\Modules\\Tickets\\' => array($baseDir . '/tests/_support/Modules'),
|
11 |
+
'Tribe\\Events\\Tickets\\Views\\' => array($baseDir . '/tests/views_integration/Tribe/Events/Tickets/Views'),
|
12 |
+
'Tribe\\Events\\Tickets\\' => array($baseDir . '/src/Tribe'),
|
13 |
+
);
|
vendor/composer/autoload_real.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_real.php @generated by Composer
|
4 |
+
|
5 |
+
class ComposerAutoloaderInit6a81194869c912b62599b3b953ab6b73
|
6 |
+
{
|
7 |
+
private static $loader;
|
8 |
+
|
9 |
+
public static function loadClassLoader($class)
|
10 |
+
{
|
11 |
+
if ('Composer\Autoload\ClassLoader' === $class) {
|
12 |
+
require __DIR__ . '/ClassLoader.php';
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
public static function getLoader()
|
17 |
+
{
|
18 |
+
if (null !== self::$loader) {
|
19 |
+
return self::$loader;
|
20 |
+
}
|
21 |
+
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit6a81194869c912b62599b3b953ab6b73', 'loadClassLoader'), true, true);
|
23 |
+
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit6a81194869c912b62599b3b953ab6b73', '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\ComposerStaticInit6a81194869c912b62599b3b953ab6b73::getInitializer($loader));
|
31 |
+
} else {
|
32 |
+
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
+
foreach ($map as $namespace => $path) {
|
34 |
+
$loader->set($namespace, $path);
|
35 |
+
}
|
36 |
+
|
37 |
+
$map = require __DIR__ . '/autoload_psr4.php';
|
38 |
+
foreach ($map as $namespace => $path) {
|
39 |
+
$loader->setPsr4($namespace, $path);
|
40 |
+
}
|
41 |
+
|
42 |
+
$classMap = require __DIR__ . '/autoload_classmap.php';
|
43 |
+
if ($classMap) {
|
44 |
+
$loader->addClassMap($classMap);
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
$loader->register(true);
|
49 |
+
|
50 |
+
return $loader;
|
51 |
+
}
|
52 |
+
}
|
vendor/composer/autoload_static.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// autoload_static.php @generated by Composer
|
4 |
+
|
5 |
+
namespace Composer\Autoload;
|
6 |
+
|
7 |
+
class ComposerStaticInit6a81194869c912b62599b3b953ab6b73
|
8 |
+
{
|
9 |
+
public static $prefixLengthsPsr4 = array (
|
10 |
+
'T' =>
|
11 |
+
array (
|
12 |
+
'Tribe\\Tests\\Tickets\\' => 20,
|
13 |
+
'Tribe\\Tests\\Modules\\Tickets\\' => 28,
|
14 |
+
'Tribe\\Events\\Tickets\\Views\\' => 27,
|
15 |
+
'Tribe\\Events\\Tickets\\' => 21,
|
16 |
+
),
|
17 |
+
);
|
18 |
+
|
19 |
+
public static $prefixDirsPsr4 = array (
|
20 |
+
'Tribe\\Tests\\Tickets\\' =>
|
21 |
+
array (
|
22 |
+
0 => __DIR__ . '/../..' . '/tests/_support',
|
23 |
+
),
|
24 |
+
'Tribe\\Tests\\Modules\\Tickets\\' =>
|
25 |
+
array (
|
26 |
+
0 => __DIR__ . '/../..' . '/tests/_support/Modules',
|
27 |
+
),
|
28 |
+
'Tribe\\Events\\Tickets\\Views\\' =>
|
29 |
+
array (
|
30 |
+
0 => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Tickets/Views',
|
31 |
+
),
|
32 |
+
'Tribe\\Events\\Tickets\\' =>
|
33 |
+
array (
|
34 |
+
0 => __DIR__ . '/../..' . '/src/Tribe',
|
35 |
+
),
|
36 |
+
);
|
37 |
+
|
38 |
+
public static $classMap = array (
|
39 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Hooks' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Hooks.php',
|
40 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Models\\Tickets' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Models/Tickets.php',
|
41 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Partials\\Day_View\\Event\\CostTest' => __DIR__ . '/../..' . '/tests/views_integration/Tribe/Events/Tickets/Views/V2/Partials/Day_View/Event/CostTest.php',
|
42 |
+
'Tribe\\Events\\Tickets\\Views\\V2\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Service_Provider.php',
|
43 |
+
);
|
44 |
+
|
45 |
+
public static function getInitializer(ClassLoader $loader)
|
46 |
+
{
|
47 |
+
return \Closure::bind(function () use ($loader) {
|
48 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit6a81194869c912b62599b3b953ab6b73::$prefixLengthsPsr4;
|
49 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit6a81194869c912b62599b3b953ab6b73::$prefixDirsPsr4;
|
50 |
+
$loader->classMap = ComposerStaticInit6a81194869c912b62599b3b953ab6b73::$classMap;
|
51 |
+
|
52 |
+
}, null, ClassLoader::class);
|
53 |
+
}
|
54 |
+
}
|
vendor/composer/installed.json
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
[]
|