Version Description
Download this release
Release Info
Developer | borkweb |
Plugin | The Events Calendar |
Version | 4.0.2 |
Comparing to | |
See all releases |
Code changes from version 4.0.1 to 4.0.2
- common/src/Tribe/Admin/Notice/Archive_Slug_Conflict.php +1 -3
- common/src/Tribe/Main.php +1 -1
- common/tribe-common.php +1 -1
- readme.txt +18 -1
- src/Tribe/Admin_List.php +18 -12
- src/Tribe/Cost_Utils.php +27 -8
- src/Tribe/Event_Tickets/Main.php +36 -0
- src/Tribe/Event_Tickets/Ticket_Email.php +42 -0
- src/Tribe/List_Widget.php +17 -6
- src/Tribe/Main.php +161 -28
- src/Tribe/Query.php +112 -43
- src/Tribe/Rewrite.php +85 -0
- src/Tribe/Template/List.php +1 -0
- src/admin-views/venue-meta-box.php +2 -3
- src/functions/template-tags/general.php +36 -36
- src/resources/css/tribe-events-full.css +5 -0
- src/resources/css/tribe-events-full.min.css +1 -1
- the-events-calendar.php +1 -1
- vendor/tickets/common/src/Tribe/Admin/Notice/Archive_Slug_Conflict.php +1 -3
- vendor/tickets/common/src/Tribe/Main.php +1 -1
- vendor/tickets/common/tribe-common.php +1 -1
- vendor/tickets/event-tickets.php +1 -1
- vendor/tickets/readme.txt +7 -2
- vendor/tickets/src/Tribe/Main.php +1 -1
- vendor/tickets/src/Tribe/Ticket_Object.php +35 -0
- vendor/tickets/src/admin-views/list.php +13 -1
- vendor/tickets/src/template-tags/tickets.php +1 -1
- vendor/tickets/src/views/tickets/email.php +12 -1
common/src/Tribe/Admin/Notice/Archive_Slug_Conflict.php
CHANGED
@@ -51,20 +51,18 @@ class Tribe__Admin__Notice__Archive_Slug_Conflict {
|
|
51 |
* Echoes the admin notice to the page
|
52 |
*/
|
53 |
public function notice() {
|
54 |
-
|
55 |
// What's happening?
|
56 |
$page_title = apply_filters( 'the_title', $this->page->post_title );
|
57 |
$line_1 = __( sprintf( 'The page "%1$s" uses the "/%2$s" slug: the Events Calendar plugin will show its calendar in place of the page.', $page_title, $this->archive_slug ), 'tribe-common' );
|
58 |
|
59 |
// What the user can do
|
60 |
$page_edit_link = get_edit_post_link( $this->page->ID );
|
61 |
-
// $can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
62 |
$can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
63 |
$page_edit_link_string = current_user_can( 'edit_pages' ) ? $can_edit_page_link : __( 'Ask the site administrator to edit the page slug', 'tribe-common' );
|
64 |
|
65 |
$settings_cap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
|
66 |
$admin_slug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
|
67 |
-
$setting_page_link = apply_filters( 'tribe_settings_url', admin_url( 'edit.php?page=' . $admin_slug . '#tribe-field-
|
68 |
$can_edit_settings_link = sprintf( __( '<a href="%s">edit Events settings</a>.', 'tribe-common' ), $setting_page_link );
|
69 |
$events_settings_link_string = current_user_can( $settings_cap ) ? $can_edit_settings_link : __( ' ask the site administrator set a different Events URL slug.', 'tribe-common' );
|
70 |
|
51 |
* Echoes the admin notice to the page
|
52 |
*/
|
53 |
public function notice() {
|
|
|
54 |
// What's happening?
|
55 |
$page_title = apply_filters( 'the_title', $this->page->post_title );
|
56 |
$line_1 = __( sprintf( 'The page "%1$s" uses the "/%2$s" slug: the Events Calendar plugin will show its calendar in place of the page.', $page_title, $this->archive_slug ), 'tribe-common' );
|
57 |
|
58 |
// What the user can do
|
59 |
$page_edit_link = get_edit_post_link( $this->page->ID );
|
|
|
60 |
$can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
61 |
$page_edit_link_string = current_user_can( 'edit_pages' ) ? $can_edit_page_link : __( 'Ask the site administrator to edit the page slug', 'tribe-common' );
|
62 |
|
63 |
$settings_cap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
|
64 |
$admin_slug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
|
65 |
+
$setting_page_link = apply_filters( 'tribe_settings_url', admin_url( 'edit.php?page=' . $admin_slug . '#tribe-field-eventsSlug' ) );
|
66 |
$can_edit_settings_link = sprintf( __( '<a href="%s">edit Events settings</a>.', 'tribe-common' ), $setting_page_link );
|
67 |
$events_settings_link_string = current_user_can( $settings_cap ) ? $can_edit_settings_link : __( ' ask the site administrator set a different Events URL slug.', 'tribe-common' );
|
68 |
|
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.0.
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
+
const VERSION = '4.0.2';
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
common/tribe-common.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
-
Version:
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
+
Version: 4.0.2
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: events, calendar, event, venue, organizer, dates, date, google maps, confe
|
|
5 |
Donate link: http://m.tri.be/29
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 4.4
|
8 |
-
Stable tag: 4.0.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -309,6 +309,23 @@ At no point during the 3.0 lifecycle will the major version change. But you can
|
|
309 |
|
310 |
== Changelog ==
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
= [4.0.1] 2015-12-10 =
|
313 |
|
314 |
* Tweak - Add a warning message for major updates
|
5 |
Donate link: http://m.tri.be/29
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 4.4
|
8 |
+
Stable tag: 4.0.2
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
309 |
|
310 |
== Changelog ==
|
311 |
|
312 |
+
= [4.0.2] 2015-12-16 =
|
313 |
+
|
314 |
+
* Tweak - Adding better support for non-numeric cost values on events (Props to Mirja for highlighting this!)
|
315 |
+
* Tweak - Avoid notice level errors when advanced events list widget settings are saved (Thank you Johan for reporting the issue!)
|
316 |
+
* Tweak - Improve messaging in the same-slug warning message (Thanks to Simon for bringing this to our attention!)
|
317 |
+
* Tweak - Hook to Event Tickets to inject event dates into ticket emails
|
318 |
+
* Tweak - Adding better support for default venues (Props to Karly for noting this!)
|
319 |
+
* Tweak - Improve handling of internationalized slugs (Cheers to Oliver for the help!)
|
320 |
+
* Fix - Ensure the past events list displays the correct events when accessed via ajax (Thank you Jesse for highlighting this!)
|
321 |
+
* Fix - Support ordering by venue/organizer within event queries (Thank you Doug for bringing this to our attention!)
|
322 |
+
* Fix - Fixed issue where events with the same date/time would sometimes be excluded from single-event navigation (Cheers to JeremyEnglert for the tip!)
|
323 |
+
* Fix - Resolved issue where events set with the explicit cost of 0 were not showing as "Free" (Thank you terrizsolo for reporting this!)
|
324 |
+
* Fix - Fixed bug where the datepicker in Twenty Sixteen was really ugly
|
325 |
+
* Fix - Fixed bug where using Quick Edit on events caused the table columns in the event list to become jumbled on save (Props to A K for the report!)
|
326 |
+
* Fix - Resolved bug where category links sometimes included event category 1 (Thank you Anthony for the original report of this problem!)
|
327 |
+
* Fix - Fixed a settings page URL (Props to Kristy for the heads up!)
|
328 |
+
|
329 |
= [4.0.1] 2015-12-10 =
|
330 |
|
331 |
* Tweak - Add a warning message for major updates
|
src/Tribe/Admin_List.php
CHANGED
@@ -19,25 +19,31 @@ if ( ! class_exists( 'Tribe__Events__Admin_List' ) ) {
|
|
19 |
*
|
20 |
*/
|
21 |
public static function init() {
|
22 |
-
if ( is_admin()
|
23 |
-
|
24 |
-
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
|
29 |
-
|
30 |
|
31 |
-
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
add_filter( 'tribe_apm_headers_' . Tribe__Events__Main::POSTTYPE, array( __CLASS__, 'column_headers_check' ) );
|
36 |
|
37 |
-
|
|
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
40 |
add_action( 'manage_posts_custom_column', array( __CLASS__, 'custom_columns' ), 10, 2 );
|
|
|
41 |
|
42 |
// Registers event start/end date as sortable columns
|
43 |
add_action( 'manage_edit-' . Tribe__Events__Main::POSTTYPE . '_sortable_columns', array( __CLASS__, 'register_sortable_columns' ), 10, 2 );
|
19 |
*
|
20 |
*/
|
21 |
public static function init() {
|
22 |
+
if ( is_admin() ) {
|
23 |
+
if ( ! Tribe__Main::instance()->doing_ajax() ) {
|
24 |
+
// Logic for sorting events by event category or tags
|
25 |
+
add_filter( 'posts_clauses', array( __CLASS__, 'sort_by_tax' ), 10, 2 );
|
26 |
|
27 |
+
// Logic for sorting events by start or end date
|
28 |
+
add_filter( 'posts_clauses', array( __CLASS__, 'sort_by_event_date' ), 11, 2 );
|
29 |
|
30 |
+
add_filter( 'posts_fields', array( __CLASS__, 'events_search_fields' ), 10, 2 );
|
31 |
|
32 |
+
// Pagination
|
33 |
+
add_filter( 'post_limits', array( __CLASS__, 'events_search_limits' ), 10, 2 );
|
34 |
|
35 |
+
add_filter( 'tribe_apm_headers_' . Tribe__Events__Main::POSTTYPE, array( __CLASS__, 'column_headers_check' ) );
|
|
|
36 |
|
37 |
+
add_filter( 'views_edit-tribe_events', array( __CLASS__, 'update_event_counts' ) );
|
38 |
+
}
|
39 |
|
40 |
+
/**
|
41 |
+
* The following actions will need to be fired on AJAX calls, the logic above is required.
|
42 |
+
*
|
43 |
+
* Registers custom event columns category/start date/end date
|
44 |
+
*/
|
45 |
add_action( 'manage_posts_custom_column', array( __CLASS__, 'custom_columns' ), 10, 2 );
|
46 |
+
add_filter( 'manage_' . Tribe__Events__Main::POSTTYPE . '_posts_columns', array( __CLASS__, 'column_headers' ) );
|
47 |
|
48 |
// Registers event start/end date as sortable columns
|
49 |
add_action( 'manage_edit-' . Tribe__Events__Main::POSTTYPE . '_sortable_columns', array( __CLASS__, 'register_sortable_columns' ), 10, 2 );
|
src/Tribe/Cost_Utils.php
CHANGED
@@ -193,6 +193,15 @@ class Tribe__Events__Cost_Utils {
|
|
193 |
|
194 |
$costs = $this->parse_cost_range( $costs );
|
195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
if ( empty( $costs ) ) {
|
197 |
return 0;
|
198 |
}
|
@@ -207,8 +216,8 @@ class Tribe__Events__Cost_Utils {
|
|
207 |
break;
|
208 |
}
|
209 |
|
210 |
-
//
|
211 |
-
if (
|
212 |
return 0;
|
213 |
}
|
214 |
|
@@ -273,11 +282,11 @@ class Tribe__Events__Cost_Utils {
|
|
273 |
return array();
|
274 |
}
|
275 |
|
276 |
-
//
|
277 |
-
$costs =
|
278 |
|
279 |
-
// If
|
280 |
-
if (
|
281 |
return array();
|
282 |
}
|
283 |
|
@@ -289,6 +298,9 @@ class Tribe__Events__Cost_Utils {
|
|
289 |
// Get the required parts
|
290 |
if ( preg_match_all( '/' . $price_regex . '/', $cost, $matches ) ) {
|
291 |
$cost = reset( $matches );
|
|
|
|
|
|
|
292 |
}
|
293 |
|
294 |
// Get the max number of decimals for the range
|
@@ -307,8 +319,15 @@ class Tribe__Events__Cost_Utils {
|
|
307 |
$costs = call_user_func_array( 'array_merge', $costs );
|
308 |
|
309 |
foreach ( $costs as $cost ) {
|
310 |
-
|
311 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
|
313 |
// Keep the Costs in a organizeable array by keys with the "numeric" value
|
314 |
$ocost[ $index ] = $cost;
|
193 |
|
194 |
$costs = $this->parse_cost_range( $costs );
|
195 |
|
196 |
+
// if there's only one item, we're looking at a single event. If the cost is non-numeric, let's
|
197 |
+
// return the non-numeric cost so that value is preserved
|
198 |
+
if ( 1 === count( $costs ) && ! is_numeric( current( $costs ) ) ) {
|
199 |
+
return current( $costs );
|
200 |
+
}
|
201 |
+
|
202 |
+
// make sure we are only trying to get numeric min/max values
|
203 |
+
$costs = array_filter( $costs, 'is_numeric' );
|
204 |
+
|
205 |
if ( empty( $costs ) ) {
|
206 |
return 0;
|
207 |
}
|
216 |
break;
|
217 |
}
|
218 |
|
219 |
+
// If there isn't anything on the cost just return 0
|
220 |
+
if ( empty( $cost ) ) {
|
221 |
return 0;
|
222 |
}
|
223 |
|
282 |
return array();
|
283 |
}
|
284 |
|
285 |
+
// make sure costs is an array
|
286 |
+
$costs = (array) $costs;
|
287 |
|
288 |
+
// If there aren't any costs, return a blank array
|
289 |
+
if ( 0 === count( $costs ) ) {
|
290 |
return array();
|
291 |
}
|
292 |
|
298 |
// Get the required parts
|
299 |
if ( preg_match_all( '/' . $price_regex . '/', $cost, $matches ) ) {
|
300 |
$cost = reset( $matches );
|
301 |
+
} else {
|
302 |
+
$cost = array( $cost );
|
303 |
+
continue;
|
304 |
}
|
305 |
|
306 |
// Get the max number of decimals for the range
|
319 |
$costs = call_user_func_array( 'array_merge', $costs );
|
320 |
|
321 |
foreach ( $costs as $cost ) {
|
322 |
+
$numeric_cost = str_replace( $this->get_separators(), '.', $cost );
|
323 |
+
|
324 |
+
if ( is_numeric( $numeric_cost ) ) {
|
325 |
+
// Creates a Well Balanced Index that will perform good on a Key Sorting method
|
326 |
+
$index = str_replace( array( '.', ',' ), '', number_format( $numeric_cost, $max ) );
|
327 |
+
} else {
|
328 |
+
// Makes sure that we have "index-safe" string
|
329 |
+
$index = sanitize_title( $numeric_cost );
|
330 |
+
}
|
331 |
|
332 |
// Keep the Costs in a organizeable array by keys with the "numeric" value
|
333 |
$ocost[ $index ] = $cost;
|
src/Tribe/Event_Tickets/Main.php
CHANGED
@@ -18,15 +18,27 @@ class Tribe__Events__Event_Tickets__Main {
|
|
18 |
|
19 |
/**
|
20 |
* Contains an instance of the Attendees Report integration class
|
|
|
21 |
* @since 4.0.1
|
|
|
22 |
* @var Tribe__Events__Event_Tickets__Attendees_Report
|
23 |
*/
|
24 |
private $attendees_report;
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* Method to return the private instance of the class
|
28 |
*
|
29 |
* @since 4.0.1
|
|
|
30 |
* @return Tribe__Events__Event_Tickets__Main
|
31 |
*/
|
32 |
public static function instance() {
|
@@ -42,10 +54,16 @@ class Tribe__Events__Event_Tickets__Main {
|
|
42 |
*/
|
43 |
public function __construct() {
|
44 |
$this->attendees_report();
|
|
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
* Attendees Report integration class object accessor method
|
|
|
|
|
|
|
|
|
|
|
49 |
*/
|
50 |
public function attendees_report( $object = null ) {
|
51 |
if ( $object ) {
|
@@ -56,4 +74,22 @@ class Tribe__Events__Event_Tickets__Main {
|
|
56 |
|
57 |
return $this->attendees_report;
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
18 |
|
19 |
/**
|
20 |
* Contains an instance of the Attendees Report integration class
|
21 |
+
*
|
22 |
* @since 4.0.1
|
23 |
+
*
|
24 |
* @var Tribe__Events__Event_Tickets__Attendees_Report
|
25 |
*/
|
26 |
private $attendees_report;
|
27 |
|
28 |
+
/**
|
29 |
+
* Contains an instance of the Ticket Email integration class
|
30 |
+
*
|
31 |
+
* @since 4.0.2
|
32 |
+
*
|
33 |
+
* @var Tribe__Events__Event_Tickets__Ticket_Email
|
34 |
+
*/
|
35 |
+
private $ticket_email;
|
36 |
+
|
37 |
/**
|
38 |
* Method to return the private instance of the class
|
39 |
*
|
40 |
* @since 4.0.1
|
41 |
+
*
|
42 |
* @return Tribe__Events__Event_Tickets__Main
|
43 |
*/
|
44 |
public static function instance() {
|
54 |
*/
|
55 |
public function __construct() {
|
56 |
$this->attendees_report();
|
57 |
+
$this->ticket_email();
|
58 |
}
|
59 |
|
60 |
/**
|
61 |
* Attendees Report integration class object accessor method
|
62 |
+
*
|
63 |
+
* @since 4.0.1
|
64 |
+
*
|
65 |
+
* @param object $object Override Attendees Report object
|
66 |
+
* @return Tribe__Events__Event_Tickets__Attendees_Report
|
67 |
*/
|
68 |
public function attendees_report( $object = null ) {
|
69 |
if ( $object ) {
|
74 |
|
75 |
return $this->attendees_report;
|
76 |
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Ticket email integration class object accessor method
|
80 |
+
*
|
81 |
+
* @since 4.0.2
|
82 |
+
*
|
83 |
+
* @param object $object Override Ticket Email object
|
84 |
+
* @return Tribe__Events__Event_Tickets__Ticket_Email
|
85 |
+
*/
|
86 |
+
public function ticket_email( $object = null ) {
|
87 |
+
if ( $object ) {
|
88 |
+
$this->ticket_email = $object;
|
89 |
+
} elseif ( ! $this->ticket_email ) {
|
90 |
+
$this->ticket_email = new Tribe__Events__Event_Tickets__Ticket_Email;
|
91 |
+
}
|
92 |
+
|
93 |
+
return $this->ticket_email;
|
94 |
+
}
|
95 |
}
|
src/Tribe/Event_Tickets/Ticket_Email.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* The Events Calendar integration with Event Tickets ticket email
|
4 |
+
*
|
5 |
+
* @package The Events Calendar
|
6 |
+
* @subpackage Event Tickets
|
7 |
+
* @since 4.0.2
|
8 |
+
*/
|
9 |
+
class Tribe__Events__Event_Tickets__Ticket_Email {
|
10 |
+
/**
|
11 |
+
* Constructor
|
12 |
+
*/
|
13 |
+
public function __construct() {
|
14 |
+
$this->add_hooks();
|
15 |
+
}
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Adds hooks for injecting/overriding aspects of the ticket emails from Event Tickets
|
19 |
+
*
|
20 |
+
* @since 4.0.2
|
21 |
+
*/
|
22 |
+
public function add_hooks() {
|
23 |
+
add_filter( 'event_tickets_email_include_start_date', array( $this, 'maybe_include_start_date' ), 10, 2 );
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Includes the start date in the ticket email if the post type is appropriate
|
28 |
+
*
|
29 |
+
* @since 4.0.2
|
30 |
+
* @param boolean $include_start_date Whether or not to include the start date
|
31 |
+
* @param int $event_id Event ID
|
32 |
+
* @return boolean
|
33 |
+
*/
|
34 |
+
public function maybe_include_start_date( $include_start_date, $event_id ) {
|
35 |
+
// if the post type isn't the TEC post type, don't change the boolean
|
36 |
+
if ( Tribe__Events__Main::POSTTYPE !== get_post_type( $event_id ) ) {
|
37 |
+
return $include_start_date;
|
38 |
+
}
|
39 |
+
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
}
|
src/Tribe/List_Widget.php
CHANGED
@@ -150,6 +150,7 @@ class Tribe__Events__List_Widget extends WP_Widget {
|
|
150 |
*/
|
151 |
public function update( $new_instance, $old_instance ) {
|
152 |
$instance = $old_instance;
|
|
|
153 |
|
154 |
/* Strip tags (if needed) and update the widget settings. */
|
155 |
$instance['title'] = strip_tags( $new_instance['title'] );
|
@@ -167,14 +168,24 @@ class Tribe__Events__List_Widget extends WP_Widget {
|
|
167 |
* @return string The output for the admin widget form.
|
168 |
*/
|
169 |
public function form( $instance ) {
|
170 |
-
|
171 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
'title' => esc_html__( 'Upcoming Events', 'the-events-calendar' ),
|
173 |
'limit' => '5',
|
174 |
'no_upcoming_events' => false,
|
175 |
-
);
|
176 |
-
$instance = wp_parse_args( (array) $instance, $defaults );
|
177 |
-
$tribe_ecp = Tribe__Events__Main::instance();
|
178 |
-
include( $tribe_ecp->pluginPath . 'src/admin-views/widget-admin-list.php' );
|
179 |
}
|
180 |
}
|
150 |
*/
|
151 |
public function update( $new_instance, $old_instance ) {
|
152 |
$instance = $old_instance;
|
153 |
+
$new_instance = $this->default_instance_args( $new_instance );
|
154 |
|
155 |
/* Strip tags (if needed) and update the widget settings. */
|
156 |
$instance['title'] = strip_tags( $new_instance['title'] );
|
168 |
* @return string The output for the admin widget form.
|
169 |
*/
|
170 |
public function form( $instance ) {
|
171 |
+
$instance = $this->default_instance_args( $instance );
|
172 |
+
$tribe_ecp = Tribe__Events__Main::instance();
|
173 |
+
include( $tribe_ecp->pluginPath . 'src/admin-views/widget-admin-list.php' );
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Accepts and returns the widget's instance array - ensuring any missing
|
178 |
+
* elements are generated and set to their default value.
|
179 |
+
*
|
180 |
+
* @param array $instance
|
181 |
+
*
|
182 |
+
* @return array
|
183 |
+
*/
|
184 |
+
protected function default_instance_args( array $instance ) {
|
185 |
+
return wp_parse_args( $instance, array(
|
186 |
'title' => esc_html__( 'Upcoming Events', 'the-events-calendar' ),
|
187 |
'limit' => '5',
|
188 |
'no_upcoming_events' => false,
|
189 |
+
) );
|
|
|
|
|
|
|
190 |
}
|
191 |
}
|
src/Tribe/Main.php
CHANGED
@@ -32,7 +32,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
34 |
|
35 |
-
const VERSION = '4.0.
|
36 |
const MIN_ADDON_VERSION = '4.0';
|
37 |
const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
|
38 |
|
@@ -487,7 +487,12 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
487 |
add_action( 'plugins_loaded', array( 'Tribe__Cache', 'setup' ) );
|
488 |
add_action( 'plugins_loaded', array( 'Tribe__Support', 'getInstance' ) );
|
489 |
add_action( 'plugins_loaded', array( $this, 'set_meta_factory_global' ) );
|
490 |
-
|
|
|
|
|
|
|
|
|
|
|
491 |
|
492 |
// Load organizer and venue editors
|
493 |
add_action( 'admin_menu', array( $this, 'addVenueAndOrganizerEditor' ) );
|
@@ -764,6 +769,8 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
764 |
* Run on applied action init
|
765 |
*/
|
766 |
public function init() {
|
|
|
|
|
767 |
$this->pluginName = $this->plugin_name = esc_html__( 'The Events Calendar', 'the-events-calendar' );
|
768 |
$this->rewriteSlug = $this->getRewriteSlug();
|
769 |
$this->rewriteSlugSingular = $this->getRewriteSlugSingular();
|
@@ -785,10 +792,10 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
785 |
$this->singular_event_label = $this->get_event_label_singular();
|
786 |
$this->plural_event_label = $this->get_event_label_plural();
|
787 |
|
788 |
-
$this->postTypeArgs['rewrite']['slug'] =
|
789 |
-
$this->postVenueTypeArgs['rewrite']['slug'] =
|
790 |
$this->postVenueTypeArgs['show_in_nav_menus'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
791 |
-
$this->postOrganizerTypeArgs['rewrite']['slug'] =
|
792 |
$this->postOrganizerTypeArgs['show_in_nav_menus'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
793 |
$this->postVenueTypeArgs['public'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
794 |
$this->postOrganizerTypeArgs['public'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
@@ -1636,11 +1643,11 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
1636 |
public function displayEventVenueDropdown( $post_id ) {
|
1637 |
$venue_id = get_post_meta( $post_id, '_EventVenueID', true );
|
1638 |
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
|
1643 |
-
) {
|
1644 |
$venue_id = $this->defaults()->venue_id();
|
1645 |
}
|
1646 |
|
@@ -2322,12 +2329,15 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
2322 |
* @param WP_Screen $screen WP Admin screen object for the current page
|
2323 |
*/
|
2324 |
public function init_admin_list_screen( $screen ) {
|
2325 |
-
|
2326 |
-
|
2327 |
-
|
|
|
|
|
2328 |
|
2329 |
-
|
2330 |
-
|
|
|
2331 |
}
|
2332 |
|
2333 |
Tribe__Events__Admin_List::init();
|
@@ -2651,12 +2661,10 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
2651 |
if ( ! is_wp_error( $term_link ) ) {
|
2652 |
$event_url = trailingslashit( $term_link );
|
2653 |
}
|
2654 |
-
}
|
2655 |
-
|
2656 |
-
|
2657 |
-
|
2658 |
-
$event_url = trailingslashit( $term_link );
|
2659 |
-
}
|
2660 |
}
|
2661 |
}
|
2662 |
|
@@ -3909,17 +3917,113 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
3909 |
}
|
3910 |
|
3911 |
/**
|
3912 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3913 |
*
|
3914 |
* @param WP_Post $post The post/event.
|
3915 |
* @param string $mode Either 'next' or 'previous'.
|
3916 |
-
* @param mixed $anchor
|
3917 |
*
|
3918 |
-
* @return
|
3919 |
*/
|
3920 |
-
public function
|
3921 |
global $wpdb;
|
3922 |
-
$link = '';
|
3923 |
|
3924 |
if ( 'previous' === $mode ) {
|
3925 |
$order = 'DESC';
|
@@ -3956,15 +4060,44 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
3956 |
*
|
3957 |
* @var array $args
|
3958 |
* @var WP_Post $post
|
3959 |
-
* @var boolean $anchor
|
3960 |
*/
|
3961 |
-
$args = (array) apply_filters( "tribe_events_get_{$mode}_event_link", $args, $post
|
|
|
3962 |
$results = tribe_get_events( $args );
|
|
|
|
|
|
|
3963 |
|
3964 |
// If we successfully located the next/prev event, we should have precisely one element in $results
|
3965 |
if ( 1 === count( $results ) ) {
|
3966 |
$event = current( $results );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3967 |
|
|
|
|
|
3968 |
if ( ! $anchor ) {
|
3969 |
$anchor = apply_filters( 'the_title', $event->post_title );
|
3970 |
} elseif ( strpos( $anchor, '%title%' ) !== false ) {
|
32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
34 |
|
35 |
+
const VERSION = '4.0.2';
|
36 |
const MIN_ADDON_VERSION = '4.0';
|
37 |
const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
|
38 |
|
487 |
add_action( 'plugins_loaded', array( 'Tribe__Cache', 'setup' ) );
|
488 |
add_action( 'plugins_loaded', array( 'Tribe__Support', 'getInstance' ) );
|
489 |
add_action( 'plugins_loaded', array( $this, 'set_meta_factory_global' ) );
|
490 |
+
|
491 |
+
if ( ! Tribe__Main::instance()->doing_ajax() ) {
|
492 |
+
add_action( 'current_screen', array( $this, 'init_admin_list_screen' ) );
|
493 |
+
} else {
|
494 |
+
add_action( 'admin_init', array( $this, 'init_admin_list_screen' ) );
|
495 |
+
}
|
496 |
|
497 |
// Load organizer and venue editors
|
498 |
add_action( 'admin_menu', array( $this, 'addVenueAndOrganizerEditor' ) );
|
769 |
* Run on applied action init
|
770 |
*/
|
771 |
public function init() {
|
772 |
+
$rewrite = Tribe__Events__Rewrite::instance();
|
773 |
+
|
774 |
$this->pluginName = $this->plugin_name = esc_html__( 'The Events Calendar', 'the-events-calendar' );
|
775 |
$this->rewriteSlug = $this->getRewriteSlug();
|
776 |
$this->rewriteSlugSingular = $this->getRewriteSlugSingular();
|
792 |
$this->singular_event_label = $this->get_event_label_singular();
|
793 |
$this->plural_event_label = $this->get_event_label_plural();
|
794 |
|
795 |
+
$this->postTypeArgs['rewrite']['slug'] = $rewrite->prepare_slug( $this->rewriteSlugSingular, self::POSTTYPE );
|
796 |
+
$this->postVenueTypeArgs['rewrite']['slug'] = $rewrite->prepare_slug( $this->singular_venue_label, self::VENUE_POST_TYPE );
|
797 |
$this->postVenueTypeArgs['show_in_nav_menus'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
798 |
+
$this->postOrganizerTypeArgs['rewrite']['slug'] = $rewrite->prepare_slug( $this->singular_organizer_label, self::ORGANIZER_POST_TYPE );
|
799 |
$this->postOrganizerTypeArgs['show_in_nav_menus'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
800 |
$this->postVenueTypeArgs['public'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
801 |
$this->postOrganizerTypeArgs['public'] = class_exists( 'Tribe__Events__Pro__Main' ) ? true : false;
|
1643 |
public function displayEventVenueDropdown( $post_id ) {
|
1644 |
$venue_id = get_post_meta( $post_id, '_EventVenueID', true );
|
1645 |
|
1646 |
+
// Strange but true: the following func lives in core so is safe to call without a func_exists check
|
1647 |
+
$new_community_post = tribe_is_community_edit_event_page() && ! $post_id;
|
1648 |
+
$new_admin_post = 'auto-draft' === get_post_status( $post_id );
|
1649 |
+
|
1650 |
+
if ( ! $venue_id && ( $new_admin_post || $new_community_post ) ) {
|
1651 |
$venue_id = $this->defaults()->venue_id();
|
1652 |
}
|
1653 |
|
2329 |
* @param WP_Screen $screen WP Admin screen object for the current page
|
2330 |
*/
|
2331 |
public function init_admin_list_screen( $screen ) {
|
2332 |
+
// If we are dealing with a AJAX call just drop these checks
|
2333 |
+
if ( ! Tribe__Main::instance()->doing_ajax() ) {
|
2334 |
+
if ( 'edit' !== $screen->base ) {
|
2335 |
+
return;
|
2336 |
+
}
|
2337 |
|
2338 |
+
if ( self::POSTTYPE !== $screen->post_type ) {
|
2339 |
+
return;
|
2340 |
+
}
|
2341 |
}
|
2342 |
|
2343 |
Tribe__Events__Admin_List::init();
|
2661 |
if ( ! is_wp_error( $term_link ) ) {
|
2662 |
$event_url = trailingslashit( $term_link );
|
2663 |
}
|
2664 |
+
} elseif ( $term && is_numeric( $term ) ) {
|
2665 |
+
$term_link = get_term_link( (int) $term, self::TAXONOMY );
|
2666 |
+
if ( ! is_wp_error( $term_link ) ) {
|
2667 |
+
$event_url = trailingslashit( $term_link );
|
|
|
|
|
2668 |
}
|
2669 |
}
|
2670 |
|
3917 |
}
|
3918 |
|
3919 |
/**
|
3920 |
+
* Modify the WHERE clause of query when fetching next/prev posts so events with identical times are not excluded
|
3921 |
+
*
|
3922 |
+
* This method ensures that when viewing single events that occur at a given time, other events
|
3923 |
+
* that occur at the exact same time are are not excluded from the prev/next links
|
3924 |
+
*
|
3925 |
+
* @since 4.0.2
|
3926 |
+
*
|
3927 |
+
* @param string $where_sql WHERE SQL statement
|
3928 |
+
* @param WP_Query $query WP_Query object
|
3929 |
+
*
|
3930 |
+
* return string
|
3931 |
+
*/
|
3932 |
+
public function get_closest_event_where( $where_sql ) {
|
3933 |
+
// if we are in this method, we KNOW there is a section of the SQL that looks like this:
|
3934 |
+
// ( table.meta_key = '_EventStartDate' AND CAST( table.meta_value AS DATETIME ) [<|>] '2015-01-01 00:00:00' )
|
3935 |
+
// What we want to do is to extract all the portions of the WHERE BEFORE that section, all the
|
3936 |
+
// portions AFTER that section, and then rebuild that section to be flexible enough to include
|
3937 |
+
// events that have the SAME datetime as the event we're comparing against. Sadly, this requires
|
3938 |
+
// some regex-fu.
|
3939 |
+
//
|
3940 |
+
// The end-game is to change the known SQL line (from above) into the following:
|
3941 |
+
//
|
3942 |
+
// (
|
3943 |
+
// ( table.meta_key = '_EventStartDate' AND CAST( table.meta_value AS DATETIME ) [<|>] '2015-01-01 00:00:00' )
|
3944 |
+
// OR (
|
3945 |
+
// ( table.meta_key = '_EventStartDate' AND CAST( table.meta_value AS DATETIME ) = '2015-01-01 00:00:00' )
|
3946 |
+
// AND
|
3947 |
+
// table.post_id [<|>] POST_ID
|
3948 |
+
// )
|
3949 |
+
// )
|
3950 |
+
//
|
3951 |
+
|
3952 |
+
// Here's the regex portion that matches the part that we know. From that line, we want to
|
3953 |
+
// have a few capture groups.
|
3954 |
+
// 1) We need the whole thing
|
3955 |
+
// 2) We need the meta table alias
|
3956 |
+
// 3) We need the < or > sign
|
3957 |
+
|
3958 |
+
// Here's the regex for getting the meta table alias
|
3959 |
+
$meta_table_regex = '([^\.]+)\.meta_key\s*=\s*';
|
3960 |
+
|
3961 |
+
// Here's the regex for the middle section of the know line
|
3962 |
+
$middle_regex = '[\'"]_EventStartDate[\'"]\s+AND\s+CAST[^\)]+AS DATETIME\s*\)\s*';
|
3963 |
+
|
3964 |
+
// Here's the regex for the < and > sign
|
3965 |
+
$gt_lt_regex = '(\<|\>)';
|
3966 |
+
|
3967 |
+
// Let's put that line together, making sure we are including the wrapping parens and the
|
3968 |
+
// characters that make up the rest of the line - spacing in front, non paren characters at
|
3969 |
+
// the end
|
3970 |
+
$known_sql_regex = "\(\s*{$meta_table_regex}{$middle_regex}{$gt_lt_regex}[^\)]+\)";
|
3971 |
+
|
3972 |
+
// The known SQL line will undoubtedly be included amongst other WHERE statements. We need
|
3973 |
+
// to generically grab the SQL before and after the known line so we can rebuild our nice new
|
3974 |
+
// where statement. Here's the regex that brings it all together.
|
3975 |
+
// Note: We are using the 'm' modifier so that the regex looks over multiple lines as well
|
3976 |
+
// as the 's' modifier so that '.' includes linebreaks
|
3977 |
+
$full_regex = "/(.*)($known_sql_regex)(.*)/ms";
|
3978 |
+
|
3979 |
+
// here's a regex to grab the post ID from a portion of the WHERE statement
|
3980 |
+
$post_id_regex = '/NOT IN\s*\(([0-9]+)\)/';
|
3981 |
+
|
3982 |
+
if ( preg_match( $full_regex, $where_sql, $matches ) ) {
|
3983 |
+
// place capture groups into vars that are easier to read
|
3984 |
+
$before = $matches[1];
|
3985 |
+
$known = $matches[2];
|
3986 |
+
$alias = $matches[3];
|
3987 |
+
$gt_lt = $matches[4];
|
3988 |
+
$after = $matches[5];
|
3989 |
+
|
3990 |
+
// copy the known line but replace the < or > symbol with an =
|
3991 |
+
$equal = preg_replace( '/(\<|\>)/', '=', $known );
|
3992 |
+
|
3993 |
+
// extract the post ID from the extra "before" or "after" WHERE
|
3994 |
+
if (
|
3995 |
+
preg_match( $post_id_regex, $before, $post_id )
|
3996 |
+
|| preg_match( $post_id_regex, $after, $post_id )
|
3997 |
+
) {
|
3998 |
+
$post_id = absint( $post_id[1] );
|
3999 |
+
} else {
|
4000 |
+
// if we can't find the post ID, then let's bail
|
4001 |
+
return $where_sql;
|
4002 |
+
}
|
4003 |
+
|
4004 |
+
// rebuild the WHERE clause
|
4005 |
+
$where_sql = "{$before} (
|
4006 |
+
{$known}
|
4007 |
+
OR (
|
4008 |
+
{$equal}
|
4009 |
+
AND {$alias}.post_id {$gt_lt} {$post_id}
|
4010 |
+
)
|
4011 |
+
) {$after} ";
|
4012 |
+
}
|
4013 |
+
|
4014 |
+
return $where_sql;
|
4015 |
+
}
|
4016 |
+
|
4017 |
+
/**
|
4018 |
+
* Get the prev/next post for a given event. Ordered by start date instead of ID.
|
4019 |
*
|
4020 |
* @param WP_Post $post The post/event.
|
4021 |
* @param string $mode Either 'next' or 'previous'.
|
|
|
4022 |
*
|
4023 |
+
* @return null|WP_Post
|
4024 |
*/
|
4025 |
+
public function get_closest_event( $post, $mode = 'next' ) {
|
4026 |
global $wpdb;
|
|
|
4027 |
|
4028 |
if ( 'previous' === $mode ) {
|
4029 |
$order = 'DESC';
|
4060 |
*
|
4061 |
* @var array $args
|
4062 |
* @var WP_Post $post
|
|
|
4063 |
*/
|
4064 |
+
$args = (array) apply_filters( "tribe_events_get_{$mode}_event_link", $args, $post );
|
4065 |
+
add_filter( 'posts_where', array( $this, 'get_closest_event_where' ) );
|
4066 |
$results = tribe_get_events( $args );
|
4067 |
+
remove_filter( 'posts_where', array( $this, 'get_closest_event_where' ) );
|
4068 |
+
|
4069 |
+
$event = null;
|
4070 |
|
4071 |
// If we successfully located the next/prev event, we should have precisely one element in $results
|
4072 |
if ( 1 === count( $results ) ) {
|
4073 |
$event = current( $results );
|
4074 |
+
}
|
4075 |
+
|
4076 |
+
/**
|
4077 |
+
* Affords an opportunity to modify the event used to generate the event link (typically for
|
4078 |
+
* the next or previous event in relation to $post).
|
4079 |
+
*
|
4080 |
+
* @var WP_Post $post
|
4081 |
+
* @var string $mode (typically "previous" or "next")
|
4082 |
+
*/
|
4083 |
+
return apply_filters( 'tribe_events_get_closest_event', $event, $post, $mode );
|
4084 |
+
}
|
4085 |
+
|
4086 |
+
/**
|
4087 |
+
* Get a "previous/next post" link for events. Ordered by start date instead of ID.
|
4088 |
+
*
|
4089 |
+
* @param WP_Post $post The post/event.
|
4090 |
+
* @param string $mode Either 'next' or 'previous'.
|
4091 |
+
* @param mixed $anchor
|
4092 |
+
*
|
4093 |
+
* @return string The link (with <a> tags).
|
4094 |
+
*/
|
4095 |
+
public function get_event_link( $post, $mode = 'next', $anchor = false ) {
|
4096 |
+
$link = null;
|
4097 |
+
$event = $this->get_closest_event( $post, $mode );
|
4098 |
|
4099 |
+
// If we successfully located the next/prev event, we should have precisely one element in $results
|
4100 |
+
if ( $event ) {
|
4101 |
if ( ! $anchor ) {
|
4102 |
$anchor = apply_filters( 'the_title', $event->post_title );
|
4103 |
} elseif ( strpos( $anchor, '%title%' ) !== false ) {
|
src/Tribe/Query.php
CHANGED
@@ -115,10 +115,13 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
115 |
? true // this is an event query of some type
|
116 |
: false; // move along, this is not the query you are looking for
|
117 |
|
118 |
-
// is the query pulling posts from the past
|
119 |
-
|
|
|
|
|
|
|
120 |
$query->tribe_is_past = true;
|
121 |
-
} elseif ( tribe_is_ajax_view_request() &&
|
122 |
$query->tribe_is_past = true;
|
123 |
} elseif ( $query->get( 'tribe_is_past' ) ) {
|
124 |
$query->tribe_is_past = true;
|
@@ -164,7 +167,7 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
164 |
do_action( 'log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype );
|
165 |
add_filter( 'posts_fields', array( __CLASS__, 'multi_type_posts_fields' ), 10, 2 );
|
166 |
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
167 |
-
add_filter( 'posts_join', array( __CLASS__, '
|
168 |
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
169 |
add_filter( 'posts_orderby', array( __CLASS__, 'posts_orderby' ), 10, 2 );
|
170 |
do_action( 'tribe_events_pre_get_posts', $query );
|
@@ -177,7 +180,7 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
177 |
if ( ! ( $query->is_main_query() && 'month' === $query->get( 'eventDisplay' ) ) ) {
|
178 |
add_filter( 'posts_fields', array( __CLASS__, 'posts_fields' ), 10, 2 );
|
179 |
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
180 |
-
add_filter( 'posts_join', array( __CLASS__, '
|
181 |
add_filter( 'posts_where', array( __CLASS__, 'posts_where' ), 10, 2 );
|
182 |
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
183 |
} else {
|
@@ -498,30 +501,6 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
498 |
return $join_sql;
|
499 |
}
|
500 |
|
501 |
-
/**
|
502 |
-
* Custom SQL join for orderby
|
503 |
-
*
|
504 |
-
* @param string $join_sql
|
505 |
-
* @param wp_query $query
|
506 |
-
*
|
507 |
-
* @return string
|
508 |
-
*/
|
509 |
-
public static function posts_join_orderby( $join_sql, $query ) {
|
510 |
-
global $wpdb;
|
511 |
-
switch ( $query->get( 'orderby' ) ) {
|
512 |
-
case 'venue':
|
513 |
-
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_venue_meta ON {$wpdb->posts}.ID = tribe_order_by_venue_meta.post_id AND tribe_order_by_venue_meta.meta_key='_EventVenueID' LEFT JOIN {$wpdb->posts} tribe_order_by_venue ON tribe_order_by_venue_meta.meta_value = tribe_order_by_venue.ID ";
|
514 |
-
break;
|
515 |
-
case 'organizer':
|
516 |
-
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_organizer_meta ON {$wpdb->posts}.ID = tribe_order_by_organizer_meta.post_id AND tribe_order_by_organizer_meta.meta_key='_EventOrganizerID' LEFT JOIN {$wpdb->posts} tribe_order_by_organizer ON tribe_order_by_organizer_meta.meta_value = tribe_order_by_organizer.ID ";
|
517 |
-
break;
|
518 |
-
default:
|
519 |
-
break;
|
520 |
-
}
|
521 |
-
|
522 |
-
return apply_filters( 'tribe_events_query_posts_join_orderby', $join_sql );
|
523 |
-
}
|
524 |
-
|
525 |
/**
|
526 |
* Custom SQL conditional for event duration meta field
|
527 |
*
|
@@ -669,26 +648,23 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
669 |
*/
|
670 |
public static function posts_orderby( $order_sql, $query ) {
|
671 |
global $wpdb;
|
672 |
-
$postmeta_table = self::postmeta_table( $query );
|
673 |
|
674 |
if ( $query->tribe_is_event || $query->tribe_is_event_category ) {
|
675 |
-
$order = ( isset( $query->order ) && ! empty( $query->order ) ) ? $query->order : $query->get( 'order' );
|
676 |
-
$orderby = ( isset( $query->orderby ) && ! empty( $query->orderby ) ) ? $query->orderby : $query->get( 'orderby' );
|
677 |
|
678 |
-
// $order_sql = "DATE(MIN({$postmeta_table}.meta_value)) {$order}, TIME({$postmeta_table}.meta_value) {$order}";
|
679 |
if ( self::can_inject_date_field( $query ) ) {
|
|
|
680 |
$order_sql = "EventStartDate {$order}";
|
|
|
|
|
|
|
|
|
681 |
}
|
682 |
|
683 |
do_action( 'log', 'orderby', 'default', $orderby );
|
684 |
|
685 |
switch ( $orderby ) {
|
686 |
-
case 'venue':
|
687 |
-
$order_sql = "tribe_order_by_venue.post_title {$order}, " . $order_sql;
|
688 |
-
break;
|
689 |
-
case 'organizer':
|
690 |
-
$order_sql = "tribe_order_by_organizer.post_title {$order}, " . $order_sql;
|
691 |
-
break;
|
692 |
case 'title':
|
693 |
$order_sql = "{$wpdb->posts}.post_title {$order}, " . $order_sql;
|
694 |
break;
|
@@ -718,6 +694,100 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
718 |
return $order_sql;
|
719 |
}
|
720 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
721 |
/**
|
722 |
* Custom SQL to retrieve post_id list of events marked to be hidden from upcoming lists.
|
723 |
*
|
@@ -935,14 +1005,14 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
935 |
* @return string
|
936 |
**/
|
937 |
private static function postmeta_table( $query ) {
|
938 |
-
|
939 |
global $wpdb;
|
|
|
940 |
|
941 |
if ( ! $query->tribe_is_multi_posttype ) {
|
942 |
-
return $
|
943 |
}
|
944 |
|
945 |
-
|
946 |
$qv = $query->query_vars;
|
947 |
|
948 |
// check if are any meta queries
|
@@ -962,7 +1032,6 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
|
|
962 |
}
|
963 |
|
964 |
return $postmeta_table;
|
965 |
-
|
966 |
}
|
967 |
|
968 |
/**
|
115 |
? true // this is an event query of some type
|
116 |
: false; // move along, this is not the query you are looking for
|
117 |
|
118 |
+
// is the query pulling posts from the past?
|
119 |
+
$past_requested = ! empty( $_REQUEST['tribe_event_display'] ) && 'past' === $_REQUEST['tribe_event_display'];
|
120 |
+
$display_past = 'past' === $query->get( 'eventDisplay' );
|
121 |
+
|
122 |
+
if ( $query->is_main_query() && $past_requested ) {
|
123 |
$query->tribe_is_past = true;
|
124 |
+
} elseif ( tribe_is_ajax_view_request() && ( $display_past || $past_requested ) ) {
|
125 |
$query->tribe_is_past = true;
|
126 |
} elseif ( $query->get( 'tribe_is_past' ) ) {
|
127 |
$query->tribe_is_past = true;
|
167 |
do_action( 'log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype );
|
168 |
add_filter( 'posts_fields', array( __CLASS__, 'multi_type_posts_fields' ), 10, 2 );
|
169 |
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
170 |
+
add_filter( 'posts_join', array( __CLASS__, 'posts_join_venue_organizer' ), 10, 2 );
|
171 |
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
172 |
add_filter( 'posts_orderby', array( __CLASS__, 'posts_orderby' ), 10, 2 );
|
173 |
do_action( 'tribe_events_pre_get_posts', $query );
|
180 |
if ( ! ( $query->is_main_query() && 'month' === $query->get( 'eventDisplay' ) ) ) {
|
181 |
add_filter( 'posts_fields', array( __CLASS__, 'posts_fields' ), 10, 2 );
|
182 |
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
183 |
+
add_filter( 'posts_join', array( __CLASS__, 'posts_join_venue_organizer' ), 10, 2 );
|
184 |
add_filter( 'posts_where', array( __CLASS__, 'posts_where' ), 10, 2 );
|
185 |
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
186 |
} else {
|
501 |
return $join_sql;
|
502 |
}
|
503 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
504 |
/**
|
505 |
* Custom SQL conditional for event duration meta field
|
506 |
*
|
648 |
*/
|
649 |
public static function posts_orderby( $order_sql, $query ) {
|
650 |
global $wpdb;
|
|
|
651 |
|
652 |
if ( $query->tribe_is_event || $query->tribe_is_event_category ) {
|
653 |
+
$order = ( isset( $query->query_vars['order'] ) && ! empty( $query->query_vars['order'] ) ) ? $query->query_vars['order'] : $query->get( 'order' );
|
654 |
+
$orderby = ( isset( $query->query_vars['orderby'] ) && ! empty( $query->query_vars['orderby'] ) ) ? $query->query_vars['orderby'] : $query->get( 'orderby' );
|
655 |
|
|
|
656 |
if ( self::can_inject_date_field( $query ) ) {
|
657 |
+
$old_orderby = $order_sql;
|
658 |
$order_sql = "EventStartDate {$order}";
|
659 |
+
|
660 |
+
if ( $old_orderby ) {
|
661 |
+
$order_sql .= ", {$old_orderby}";
|
662 |
+
}
|
663 |
}
|
664 |
|
665 |
do_action( 'log', 'orderby', 'default', $orderby );
|
666 |
|
667 |
switch ( $orderby ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
668 |
case 'title':
|
669 |
$order_sql = "{$wpdb->posts}.post_title {$order}, " . $order_sql;
|
670 |
break;
|
694 |
return $order_sql;
|
695 |
}
|
696 |
|
697 |
+
/**
|
698 |
+
* Adds a custom SQL join when ordering by venue or organizer is desired.
|
699 |
+
*
|
700 |
+
* @param string $join_sql
|
701 |
+
* @param wp_query $query
|
702 |
+
*
|
703 |
+
* @return string
|
704 |
+
*/
|
705 |
+
public static function posts_join_venue_organizer( $join_sql, $query ) {
|
706 |
+
global $wpdb;
|
707 |
+
|
708 |
+
switch ( $query->get( 'orderby' ) ) {
|
709 |
+
case 'venue':
|
710 |
+
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_venue_meta ON {$wpdb->posts}.ID = tribe_order_by_venue_meta.post_id AND tribe_order_by_venue_meta.meta_key='_EventVenueID' LEFT JOIN {$wpdb->posts} tribe_order_by_venue ON tribe_order_by_venue_meta.meta_value = tribe_order_by_venue.ID ";
|
711 |
+
break;
|
712 |
+
case 'organizer':
|
713 |
+
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_organizer_meta ON {$wpdb->posts}.ID = tribe_order_by_organizer_meta.post_id AND tribe_order_by_organizer_meta.meta_key='_EventOrganizerID' LEFT JOIN {$wpdb->posts} tribe_order_by_organizer ON tribe_order_by_organizer_meta.meta_value = tribe_order_by_organizer.ID ";
|
714 |
+
break;
|
715 |
+
default:
|
716 |
+
return $join_sql;
|
717 |
+
break;
|
718 |
+
}
|
719 |
+
|
720 |
+
/**
|
721 |
+
* Ensures we add the matching corresponding code to the order clause.
|
722 |
+
*
|
723 |
+
* We use posts_clauses (as opposed to posts_orderby) in this case to avoid
|
724 |
+
* it being overwritten by Tribe__Events__Admin_List methods.
|
725 |
+
*
|
726 |
+
* @see Tribe__Events__Admin_List
|
727 |
+
*/
|
728 |
+
add_filter( 'posts_clauses', array( __CLASS__, 'posts_orderby_venue_organizer' ), 100, 2 );
|
729 |
+
|
730 |
+
if ( has_filter( 'tribe_events_query_posts_join_orderby' ) ) {
|
731 |
+
/**
|
732 |
+
* Historically this filter has only been useful to modify the joins setup
|
733 |
+
* in relation to organizers and venues. In future it may have a more general
|
734 |
+
* application or may be removed.
|
735 |
+
*
|
736 |
+
* @deprecated since 4.0.2
|
737 |
+
*
|
738 |
+
* @var string $join_sql
|
739 |
+
*/
|
740 |
+
$join_sql = apply_filters( 'tribe_events_query_posts_join_orderby', $join_sql );
|
741 |
+
|
742 |
+
_doing_it_wrong(
|
743 |
+
'tribe_events_query_posts_join_orderby (filter)',
|
744 |
+
'To modify joins in relation to venues and organizers specifically you are encouraged to use the tribe_events_query_posts_join_venue_organizer hook.',
|
745 |
+
'4.0.2'
|
746 |
+
);
|
747 |
+
}
|
748 |
+
|
749 |
+
/**
|
750 |
+
* Provides an opportunity to modify the join condition added to the query when
|
751 |
+
* ordering by venue or organizer.
|
752 |
+
*
|
753 |
+
* @var string $join_sql
|
754 |
+
*/
|
755 |
+
return apply_filters( 'tribe_events_query_posts_join_venue_organizer', $join_sql );
|
756 |
+
}
|
757 |
+
|
758 |
+
/**
|
759 |
+
* Appends the necessary conditions to the order clause to sort by either venue or
|
760 |
+
* organizer.
|
761 |
+
*
|
762 |
+
* @param array $clauses
|
763 |
+
* @param WP_Query $query
|
764 |
+
* @return string
|
765 |
+
*/
|
766 |
+
public static function posts_orderby_venue_organizer( array $clauses, $query ) {
|
767 |
+
// This filter has to be added for every individual query that requires it
|
768 |
+
remove_filter( 'posts_clauses', array( __CLASS__, 'posts_orderby_venue_organizer' ), 100 );
|
769 |
+
|
770 |
+
$order = ( isset( $query->order ) && ! empty( $query->order ) ) ? $query->order : $query->get( 'order' );
|
771 |
+
$orderby = ( isset( $query->orderby ) && ! empty( $query->orderby ) ) ? $query->orderby : $query->get( 'orderby' );
|
772 |
+
|
773 |
+
switch ( $orderby ) {
|
774 |
+
case 'venue':
|
775 |
+
$clauses['orderby'] = "tribe_order_by_venue.post_title {$order}, " . $clauses['orderby'];
|
776 |
+
break;
|
777 |
+
case 'organizer':
|
778 |
+
$clauses['orderby'] = "tribe_order_by_organizer.post_title {$order}, " . $clauses['orderby'];
|
779 |
+
break;
|
780 |
+
default:
|
781 |
+
return $clauses;
|
782 |
+
break;
|
783 |
+
}
|
784 |
+
|
785 |
+
// Trim trailing characters
|
786 |
+
$clauses['orderby'] = trim( $clauses['orderby'], ", \t\n\r\0\x0B" );
|
787 |
+
|
788 |
+
return $clauses;
|
789 |
+
}
|
790 |
+
|
791 |
/**
|
792 |
* Custom SQL to retrieve post_id list of events marked to be hidden from upcoming lists.
|
793 |
*
|
1005 |
* @return string
|
1006 |
**/
|
1007 |
private static function postmeta_table( $query ) {
|
1008 |
+
/** @var \wpdb $wpdb */
|
1009 |
global $wpdb;
|
1010 |
+
$postmeta_table = $wpdb->postmeta;
|
1011 |
|
1012 |
if ( ! $query->tribe_is_multi_posttype ) {
|
1013 |
+
return $postmeta_table;
|
1014 |
}
|
1015 |
|
|
|
1016 |
$qv = $query->query_vars;
|
1017 |
|
1018 |
// check if are any meta queries
|
1032 |
}
|
1033 |
|
1034 |
return $postmeta_table;
|
|
|
1035 |
}
|
1036 |
|
1037 |
/**
|
src/Tribe/Rewrite.php
CHANGED
@@ -14,6 +14,11 @@ if ( ! class_exists( 'Tribe__Events__Rewrite' ) ) {
|
|
14 |
* Permalinks magic Happens over here!
|
15 |
*/
|
16 |
class Tribe__Events__Rewrite {
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
/**
|
19 |
* Static singleton variable
|
@@ -407,6 +412,86 @@ if ( ! class_exists( 'Tribe__Events__Rewrite' ) ) {
|
|
407 |
return $this->add( $regex, $args );
|
408 |
}
|
409 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
} // end Tribe__Events__Rewrite class
|
411 |
|
412 |
} // end if !class_exists Tribe__Events__Rewrite
|
14 |
* Permalinks magic Happens over here!
|
15 |
*/
|
16 |
class Tribe__Events__Rewrite {
|
17 |
+
/**
|
18 |
+
* If we wish to setup a rewrite rule that uses percent symbols, we'll need
|
19 |
+
* to make use of this placeholder.
|
20 |
+
*/
|
21 |
+
const PERCENT_PLACEHOLDER = '~~TRIBE~PC~~';
|
22 |
|
23 |
/**
|
24 |
* Static singleton variable
|
412 |
return $this->add( $regex, $args );
|
413 |
}
|
414 |
|
415 |
+
/**
|
416 |
+
* Returns a sanitized version of $slug that can be used in rewrite rules.
|
417 |
+
*
|
418 |
+
* This is ideal for those times where we wish to support internationalized
|
419 |
+
* URLs (ie, where "venue" in "venue/some-slug" may be rendered in non-ascii
|
420 |
+
* characters).
|
421 |
+
*
|
422 |
+
* In the case of registering new post types, $permastruct_name should
|
423 |
+
* generally match the CPT name itself.
|
424 |
+
*
|
425 |
+
* @param string $slug
|
426 |
+
* @param string $permastruct_name
|
427 |
+
* @return string
|
428 |
+
*/
|
429 |
+
public function prepare_slug( $slug, $permastruct_name ) {
|
430 |
+
$needs_handling = false;
|
431 |
+
$sanitized_slug = sanitize_title( $slug );
|
432 |
+
|
433 |
+
// Was UTF8 encoding required for the slug? %a0 type entities are a tell-tale of this
|
434 |
+
if ( preg_match( '/(%[0-9a-f]{2})+/', $sanitized_slug ) ) {
|
435 |
+
/**
|
436 |
+
* Controls whether special UTF8 URL handling is setup for the set of
|
437 |
+
* rules described by $permastruct_name.
|
438 |
+
*
|
439 |
+
* This only fires if Tribe__Events__Rewrite::prepare_slug() believes
|
440 |
+
* handling is required.
|
441 |
+
*
|
442 |
+
* @var string $permastruct_name
|
443 |
+
* @var string $possible_slug_name
|
444 |
+
*/
|
445 |
+
$needs_handling = apply_filters( 'tribe_events_rewrite_utf8_handling',
|
446 |
+
true,
|
447 |
+
$permastruct_name,
|
448 |
+
$possible_slug_name
|
449 |
+
);
|
450 |
+
}
|
451 |
+
|
452 |
+
if ( $needs_handling ) {
|
453 |
+
// User agents encode things the same way but in uppercase
|
454 |
+
$sanitized_slug = strtoupper( $sanitized_slug );
|
455 |
+
|
456 |
+
// UTF8 encoding results in lots of "%" chars in our string which play havoc
|
457 |
+
// with WP_Rewrite::generate_rewrite_rules(), so we swap them out temporarily
|
458 |
+
$sanitized_slug = str_replace( '%', self::PERCENT_PLACEHOLDER, $sanitized_slug );
|
459 |
+
|
460 |
+
// Restore the % chars later on
|
461 |
+
add_filter( $permastruct_name . '_rewrite_rules', array( $this, 'remove_percent_placeholders' ) );
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Provides an opportunity to modify the sanitized slug which will be used
|
466 |
+
* in rewrite rules relating to $permastruct_name.
|
467 |
+
*
|
468 |
+
* @var string $prepared_slug
|
469 |
+
* @var string $permastruct_name
|
470 |
+
* @var string $original_slug
|
471 |
+
*/
|
472 |
+
return apply_filters( 'tribe_events_rewrite_prepared_slug',
|
473 |
+
preg_quote( $sanitized_slug ),
|
474 |
+
$permastruct_name,
|
475 |
+
$slug
|
476 |
+
);
|
477 |
+
}
|
478 |
+
|
479 |
+
/**
|
480 |
+
* Converts any percentage placeholders in the array keys back to % symbols.
|
481 |
+
*
|
482 |
+
* @param array $rules
|
483 |
+
* @return array
|
484 |
+
*/
|
485 |
+
public function remove_percent_placeholders( array $rules ) {
|
486 |
+
$new_rules = array();
|
487 |
+
|
488 |
+
foreach ( $rules as $key => $value ) {
|
489 |
+
$key = str_replace( self::PERCENT_PLACEHOLDER, '%', $key );
|
490 |
+
$new_rules[$key] = $value;
|
491 |
+
}
|
492 |
+
|
493 |
+
return $new_rules;
|
494 |
+
}
|
495 |
} // end Tribe__Events__Rewrite class
|
496 |
|
497 |
} // end if !class_exists Tribe__Events__Rewrite
|
src/Tribe/Template/List.php
CHANGED
@@ -73,6 +73,7 @@ if ( ! class_exists( 'Tribe__Events__Template__List' ) ) {
|
|
73 |
if ( isset( $_POST['tribe_event_display'] ) ) {
|
74 |
if ( $_POST['tribe_event_display'] == 'past' ) {
|
75 |
$args['eventDisplay'] = 'past';
|
|
|
76 |
} elseif ( 'all' == $_POST['tribe_event_display'] ) {
|
77 |
$args['eventDisplay'] = 'all';
|
78 |
}
|
73 |
if ( isset( $_POST['tribe_event_display'] ) ) {
|
74 |
if ( $_POST['tribe_event_display'] == 'past' ) {
|
75 |
$args['eventDisplay'] = 'past';
|
76 |
+
$args['order'] = 'DESC';
|
77 |
} elseif ( 'all' == $_POST['tribe_event_display'] ) {
|
78 |
$args['eventDisplay'] = 'all';
|
79 |
}
|
src/admin-views/venue-meta-box.php
CHANGED
@@ -49,14 +49,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
49 |
<td>
|
50 |
<?php
|
51 |
$countries = Tribe__View_Helpers::constructCountries( $event->ID );
|
52 |
-
|
53 |
if ( isset( $_VenueCountry ) && $_VenueCountry ) {
|
54 |
$current = $_VenueCountry;
|
55 |
-
} elseif ( isset( $defaultCountry[1] ) ) {
|
56 |
-
$current = $defaultCountry[1];
|
57 |
} else {
|
58 |
$current = null;
|
59 |
}
|
|
|
60 |
if ( is_array( $current ) && isset( $current[1] ) ) {
|
61 |
$current = $current[1];
|
62 |
}
|
49 |
<td>
|
50 |
<?php
|
51 |
$countries = Tribe__View_Helpers::constructCountries( $event->ID );
|
52 |
+
|
53 |
if ( isset( $_VenueCountry ) && $_VenueCountry ) {
|
54 |
$current = $_VenueCountry;
|
|
|
|
|
55 |
} else {
|
56 |
$current = null;
|
57 |
}
|
58 |
+
|
59 |
if ( is_array( $current ) && isset( $current[1] ) ) {
|
60 |
$current = $current[1];
|
61 |
}
|
src/functions/template-tags/general.php
CHANGED
@@ -350,47 +350,47 @@ if ( class_exists( 'Tribe__Events__Main' ) ) {
|
|
350 |
$args = wp_parse_args( $args, $defaults );
|
351 |
$categories = tribe_get_event_taxonomy( $post_id, $args );
|
352 |
|
353 |
-
// check for the
|
354 |
if ( null === $args[ 'label' ] ) {
|
355 |
$label = sprintf(
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
|
|
378 |
}
|
379 |
-
}
|
380 |
|
381 |
-
/**
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
function tribe_meta_event_tags( $label = null, $separator = ', ', $echo = true ) {
|
395 |
if ( ! $label ) {
|
396 |
$label = esc_html__( 'Tags:', 'the-events-calendar' );
|
350 |
$args = wp_parse_args( $args, $defaults );
|
351 |
$categories = tribe_get_event_taxonomy( $post_id, $args );
|
352 |
|
353 |
+
// check for the occurrences of links in the returned string
|
354 |
if ( null === $args[ 'label' ] ) {
|
355 |
$label = sprintf(
|
356 |
+
/* translators: %s is the singular translation of "Event" */
|
357 |
+
_nx( '%s Category', '%s Categories', substr_count( $categories, '<a href' ), 'category list label', 'the-events-calendar' ),
|
358 |
+
$events_label_singular
|
359 |
+
);
|
360 |
+
}
|
361 |
+
else {
|
362 |
+
$label = $args[ 'label' ];
|
363 |
+
}
|
364 |
|
365 |
+
$html = ! empty( $categories ) ? sprintf(
|
366 |
+
'%s%s:%s %s%s%s',
|
367 |
+
$args['label_before'],
|
368 |
+
$label,
|
369 |
+
$args['label_after'],
|
370 |
+
$args['wrap_before'],
|
371 |
+
$categories,
|
372 |
+
$args['wrap_after']
|
373 |
+
) : '';
|
374 |
+
if ( $args['echo'] ) {
|
375 |
+
echo apply_filters( 'tribe_get_event_categories', $html, $post_id, $args, $categories );
|
376 |
+
} else {
|
377 |
+
return apply_filters( 'tribe_get_event_categories', $html, $post_id, $args, $categories );
|
378 |
+
}
|
379 |
}
|
|
|
380 |
|
381 |
+
/**
|
382 |
+
* Event Tags (Display)
|
383 |
+
*
|
384 |
+
* Display the event tags
|
385 |
+
*
|
386 |
+
* @category Events
|
387 |
+
* @param null|string $label
|
388 |
+
* @param string $separator
|
389 |
+
* @param bool $echo
|
390 |
+
*
|
391 |
+
* @return array
|
392 |
+
* @uses the_terms()
|
393 |
+
*/
|
394 |
function tribe_meta_event_tags( $label = null, $separator = ', ', $echo = true ) {
|
395 |
if ( ! $label ) {
|
396 |
$label = esc_html__( 'Tags:', 'the-events-calendar' );
|
src/resources/css/tribe-events-full.css
CHANGED
@@ -1847,6 +1847,11 @@ body.tribe-theme-twentysixteen.events-archive .entry-header {
|
|
1847 |
width: auto;
|
1848 |
}
|
1849 |
|
|
|
|
|
|
|
|
|
|
|
1850 |
/* = Events Retina
|
1851 |
=============================================*/
|
1852 |
@media
|
1847 |
width: auto;
|
1848 |
}
|
1849 |
|
1850 |
+
body.tribe-theme-twentysixteen .datepicker table {
|
1851 |
+
border: 0;
|
1852 |
+
width: auto;
|
1853 |
+
}
|
1854 |
+
|
1855 |
/* = Events Retina
|
1856 |
=============================================*/
|
1857 |
@media
|
src/resources/css/tribe-events-full.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#tribe-events-pg-template{margin:0 auto;max-width:1000px}.tribe-events-after-html{clear:both}#tribe-events .tribe-events-content p,.tribe-events-after-html p,.tribe-events-before-html p{line-height:1.7;margin:0 0 10px}#tribe-events-pg-template .tribe-events-content h1,#tribe-events-pg-template .tribe-events-content h2,#tribe-events-pg-template .tribe-events-content h3,#tribe-events-pg-template .tribe-events-content h4,#tribe-events-pg-template .tribe-events-content h5,#tribe-events-pg-template .tribe-events-content h6,.tribe-events-after-html h1,.tribe-events-after-html h2,.tribe-events-after-html h3,.tribe-events-after-html h4,.tribe-events-after-html h5,.tribe-events-after-html h6,.tribe-events-before-html h1,.tribe-events-before-html h2,.tribe-events-before-html h3,.tribe-events-before-html h4,.tribe-events-before-html h5,.tribe-events-before-html h6{margin:24px 0}#tribe-events-pg-template .tribe-events-content h1,.tribe-events-after-html h1,.tribe-events-before-html h1{font-size:21px;line-height:1.5}#tribe-events-pg-template .tribe-events-content h2,.tribe-events-after-html h2,.tribe-events-before-html h2{font-size:18px;line-height:1.6}#tribe-events-pg-template .tribe-events-content h3,.tribe-events-after-html h3,.tribe-events-before-html h3{font-size:16px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h4,.tribe-events-after-html h4,.tribe-events-before-html h4{font-size:14px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h5,.tribe-events-after-html h5,.tribe-events-before-html h5{font-size:13px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h6,.tribe-events-after-html h6,.tribe-events-before-html h6{font-size:12px;line-height:1.8}#tribe-events-pg-template .tribe-events-content ul,.tribe-events-after-html ul,.tribe-events-before-html ul{list-style:disc}#tribe-events-pg-template .tribe-events-content ol,.tribe-events-after-html ol,.tribe-events-before-html ol{list-style:decimal}#tribe-events-pg-template .tribe-events-content ol li,#tribe-events-pg-template .tribe-events-content ul li,.tribe-events-after-html ol li,.tribe-events-after-html ul li,.tribe-events-before-html ol li,.tribe-events-before-html ul li{line-height:1.7;margin:0 0 20px}.tribe-events-back{margin:0 0 20px}#tribe-events-content a,.tribe-events-adv-list-widget .tribe-events-widget-link a,.tribe-events-adv-list-widget .tribe-events-widget-link a:hover,.tribe-events-back a,.tribe-events-back a:hover,.tribe-events-event-meta a,.tribe-events-list-widget .tribe-events-widget-link a,.tribe-events-list-widget .tribe-events-widget-link a:hover,ul.tribe-events-sub-nav a,ul.tribe-events-sub-nav a:hover{text-decoration:none}#tribe-events .tribe-events-button,.tribe-events-button{background-color:#666;background-image:none;border:0;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;cursor:pointer;display:inline-block;font-size:11px;font-weight:700;letter-spacing:1px;line-height:normal;padding:6px 9px;text-align:center;text-decoration:none;text-transform:uppercase;vertical-align:middle;zoom:1}.tribe-events-button.tribe-active{background-color:#666;color:#fff}#tribe-events .tribe-events-button:hover,.tribe-events-button.tribe-active:hover,.tribe-events-button.tribe-inactive,.tribe-events-button:hover{background-color:#ddd;color:#444;text-decoration:none}a.tribe-events-gcal,a.tribe-events-ical{clear:both;color:#fff;float:right;font-size:10px;font-weight:400;line-height:18px;margin-top:21px;padding:0 6px;text-decoration:none}.tribe-events-gcal{margin-right:9px}.single-tribe_events a.tribe-events-gcal,.single-tribe_events a.tribe-events-ical{float:none}.tribe-events-event-meta .tribe-events-gmap,.tribe-events-event-meta-desc .tribe-events-gmap{white-space:nowrap}.event .entry-title{color:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:inherit}.updated-info{height:0;text-indent:-9999px}.tribe-events-event-image{margin:0 0 20px;text-align:center}.tribe-events-event-image img{height:auto;max-width:100%}.tribe-events-schedule h2{font-style:normal;font-weight:700}.tribe-events-event-schedule-details{display:inline}.tribe-events-divider{font-weight:700;padding:0 10px}.events-archive .entry-content,.events-archive .entry-header{width:98%}.events-archive footer.entry-meta,.events-archive header.entry-header,.events-archive span.edit-link,.single-tribe_events footer.entry-meta,.single-tribe_events header.entry-header,.single-tribe_organizer footer.entry-meta,.single-tribe_organizer header.entry-header,.single-tribe_venue footer.entry-meta,.single-tribe_venue header.entry-header{display:none}.tribe-events-notices{background:#d9edf7;border:1px solid #bce8f1;-webkit-border-radius:4px;border-radius:4px;color:#3a87ad;margin:10px 0 18px;padding:8px 35px 8px 14px;text-shadow:0 1px 0 #fff}div.tribe-events-notices>ul,div.tribe-events-notices>ul>li{list-style:none;margin:0;padding:0}#tribe-events-content p.tribe-events-promo{color:#999;font-size:12px}#tribe-events-content p.tribe-events-promo a{color:#666}.clearfix:after,.clearfix:before,.tribe-clearfix:after,.tribe-clearfix:before{content:'';display:table}.clearfix:after,.tribe-clearfix:after{clear:both}.clearfix,.tribe-clearfix{zoom:1}.tribe-clear{clear:both}.tribe-events-visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}#tribe-events-content .tribe-events-abbr{border-bottom:0;cursor:default}.tribe-events-spinner{height:32px;margin-left:-16px;width:32px}.tribe-events-spinner-medium{height:24px;width:24px}.tribe-events-spinner-small{height:16px;margin-left:-8px;width:16px}h2.tribe-events-page-title{clear:none;font-size:24px;font-weight:400;margin-bottom:.5em;position:relative;text-align:center;z-index:0}.tribe-events-filter-view .tribe-events-list h2.tribe-events-page-title{float:none;width:100%}h2.tribe-events-page-title a{color:#000}h2.tribe-events-page-title a:focus,h2.tribe-events-page-title a:hover{color:#333;text-decoration:underline}#tribe-events-footer,#tribe-events-header{clear:both;margin-bottom:.5em}#tribe-events-footer .tribe-events-sub-nav,#tribe-events-header .tribe-events-sub-nav{line-height:normal;list-style-type:none;margin:0;overflow:hidden;padding:0;text-align:center}#tribe-events-footer .tribe-events-sub-nav li,#tribe-events-header .tribe-events-sub-nav li{display:inline-block;margin:0;vertical-align:middle;zoom:1}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous,#tribe-events-header .tribe-events-sub-nav li{float:left;margin-right:5px;text-align:left}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next{float:right;margin-left:5px;text-align:right}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left{float:left;text-align:left}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right{float:right;text-align:right}.tribe-events-ajax-loading{background:#666;border-radius:5px;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;display:none;left:50%;margin-left:-27px;padding:15px;position:absolute;top:150px;z-index:10}.tribe-events-ajax-loading.tribe-events-active-spinner,.tribe-events-ajax-loading.tribe-events-active-spinner img,.tribe-events-loading .tribe-events-ajax-loading{display:block}#tribe-events-header{position:relative}#tribe-events-footer{margin-bottom:1em}.events-list #tribe-events-footer,.tribe-events-day #tribe-events-footer,.tribe-events-map #tribe-events-footer{clear:both;margin:1.25em 0 18px}.tribe-events-map #tribe-events-header{margin:1em 0}.single-tribe_events #tribe-events-header{margin:1em 0 20px}.single-tribe_events #tribe-events-footer li,.single-tribe_events #tribe-events-header li{width:48%}#tribe-events-content .tribe-events-nav-date{padding-top:16px}select.tribe-events-dropdown{font-size:11px;margin:33px 9px 0 0;width:auto}#tribe-events-events-picker,#tribe-events-picker{display:inline}#tribe-events-content{margin-bottom:48px;padding:2px 0;position:relative}#tribe-events-content.tribe-events-list{padding:0}.tribe-events-othermonth .tribe-events-month-event-title,.tribe-events-othermonth div[id*=tribe-events-daynum-]{-khtml-opacity:.4;-ms-filter:'alpha(Opacity=40)';filter:alpha(opacity=40);-moz-opacity:.4;opacity:.4}.tribe-events-list h2.tribe-events-page-title{margin-bottom:15px}#tribe-events-content.tribe-events-list{margin-bottom:60px}.tribe-events-list .type-tribe_events{border-bottom:1px solid #ddd;margin:0;padding:2.25em 0}.tribe-events-list .type-tribe_events.tribe-events-first{padding-top:0}.tribe-events-list h2.tribe-events-list-event-title{border:none;font-size:1.4em;letter-spacing:0;line-height:1.4em;margin:0;padding:0;text-transform:none;display:inline;float:none}.tribe-events-event-details .tribe-events-event-meta address.tribe-events-address{font-family:inherit;font-size:inherit;font-style:normal;line-height:inherit}.tribe-events-list .tribe-events-event-image{float:left;margin:0 3% 0 0;width:30%}.tribe-events-list .tribe-events-event-image img{height:auto;margin:0;padding:0;width:100%}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:left;position:relative;width:67%}.tribe-events-loop .tribe-events-event-meta{border:0;clear:both;float:none;font-size:14px;font-weight:700;line-height:1.5;margin:5px 0 15px;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1}.tribe-events-event-meta address.tribe-events-address{display:inline;font-family:inherit;font-size:inherit;font-style:normal;line-height:inherit;margin-right:10px}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .event-is-recurring{position:relative}.tribe-events-list .time-details,.tribe-events-list .tribe-events-venue-details{display:block;line-height:1.2;margin:0}.tribe-events-list .time-details{margin:0 0 8px}.tribe-events-list .tribe-events-event-cost{float:right;margin:0 0 5px 5px}.tribe-events-list .tribe-events-event-cost span{background:#eee;border:1px solid #ddd;display:block;font-style:normal;font-weight:700;line-height:1.3;padding:5px 10px;text-align:center;text-overflow:ellipsis}.tribe-events-list .tribe-events-loop .tribe-events-content{padding:0;width:100%}.tribe-events-list-separator-year{color:#ccc;display:block;font-size:38px;font-weight:700;padding:1em 2.25em 0;text-align:center}.tribe-events-list-separator-month{background-color:#eee;display:block;font-size:14px;font-weight:700;margin:2.5em 0 0;padding:6px 10px;text-transform:uppercase}.tribe-events-list-separator-month+.type-tribe_events.tribe-events-first{padding-top:2.25em}.tribe-events-list .type-tribe_events.tribe-event-end-month{border-bottom:0;padding-bottom:0}.tribe-events-loop{clear:both}.tribe-events-loop .type-tribe_events.tribe-events-last{border-bottom:0}.tribe-events-loop .tribe-events-content{float:left;padding:0 5% 0 0;width:60%}.single-tribe_venue .tribe-events-loop .tribe-events-content p{margin:0}.events-archive h3 .published,.single-tribe_venue h3 .published{font-size:18px;font-style:italic;margin-top:0;text-transform:none}.tribe-events-event-day,.tribe-events-event-meta-desc{color:#333}.single-tribe_events h2.tribe-events-single-event-title{font-size:1.7em;line-height:1;margin:0;padding:0}#tribe-events-content .tribe-events-single-event-description img.attachment-post-thumbnail{display:block;margin-left:auto;margin-right:auto;text-align:center}.tribe-events-meta-group .tribe-events-single-section-title{font-size:1.4em;font-weight:700;margin:20px 0 10px}.tribe-events-meta-group+.tribe-events-single-section-title{margin-top:0}.tribe-events-event-meta .tribe-events-meta-group address.tribe-events-address{display:block;margin:0}#eventbrite-embed{margin:24px 0;min-height:225px;width:100%}.eventbrite-ticket-embed{margin:0 0 30px}.tribe-events-schedule{margin:20px 0 0}.single-tribe_events .tribe-events-schedule .recurringinfo,.single-tribe_events .tribe-events-schedule .tribe-events-cost,.single-tribe_events .tribe-events-schedule .tribe-events-divider{font-size:1.2em}.single-tribe_events .tribe-events-schedule h3{display:inline-block;font-size:1.2em;margin:0;padding:0;vertical-align:middle;white-space:nowrap;zoom:1}.single-tribe_events .tribe-events-schedule .tribe-events-cost{vertical-align:middle}.single-tribe_events .tribe-events-event-image{clear:both;margin-bottom:30px;text-align:center}.single-tribe_events .tribe-events-event-meta{background:#fafafa;border:1px solid #eee;margin:30px 0}.single-tribe_events .tribe-events-venue-map{background:#eee;border:1px solid #ddd;border-radius:3px;display:inline-block;float:right;margin:20px 4% 2% 0;padding:5px;vertical-align:top;width:58%;zoom:1}.single-tribe_events #tribe-events-gmap{height:0!important;margin:0!important;padding-top:50%;width:100%!important}.single-tribe_events .tribe-events-meta-group .tribe-events-venue-map{float:none;margin:20px 0 0;width:100%}.single-tribe_events .tribe-events-meta-group #tribe-events-gmap{height:0!important;margin-top:50px;padding-top:100%;width:100%!important}.single-tribe_events .tribe-events-event-meta{font-size:13px}.tribe-events-event-meta .column,.tribe-events-event-meta .tribe-events-meta-group{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:left;margin:0 0 20px;padding:0 4%;text-align:left;vertical-align:top;width:33.3333%;zoom:1}.single-tribe_events .tribe-events-event-meta dl{margin:0}.single-tribe_events #tribe-events-content .tribe-events-event-meta dt{clear:left;font-weight:700;line-height:1;list-style:none}.single-tribe_events #tribe-events-content .tribe-events-event-meta dd{float:none;line-height:1.5;list-style:none;margin:0 0 10px;padding:0}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-content{max-width:100%;padding:0;width:100%}.sidebar.single-tribe_events .tribe-events-content{padding:0}.tribe-events-day .tribe-events-day-time-slot h5{background-color:#eee;font-size:14px;font-weight:700;margin:2.5em 0 0;padding:6px 10px;text-transform:uppercase}.tribe-events-day .tribe-events-day-time-slot .type-tribe_events{margin-left:5%}#tribe-events-content table.tribe-events-calendar{border-collapse:collapse;clear:both;font-size:12px;margin:12px 0 .6em;table-layout:fixed;width:100%}#tribe-events-content .tribe-events-calendar td,#tribe-events-content table.tribe-events-calendar{border:1px solid #bbb}.tribe-events-calendar div[id*=tribe-events-daynum-],.tribe-events-calendar div[id*=tribe-events-daynum-] a{background-color:#f5f5f5;color:#333;font-size:11px;font-weight:700}.tribe-events-calendar td.tribe-events-present div[id*=tribe-events-daynum-],.tribe-events-calendar td.tribe-events-present div[id*=tribe-events-daynum-]>a{background-color:#666;color:#fff}.tribe-events-calendar td.tribe-events-past div[id*=tribe-events-daynum-],.tribe-events-calendar td.tribe-events-past div[id*=tribe-events-daynum-]>a{color:#999}#tribe-events-content .tribe-events-calendar td{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:#114b7d;font-size:12px;height:110px;padding:0 0 .5em;vertical-align:top;width:14.28%}.recurring-info-tooltip,.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip{background-color:#f9f9f9;border:1px solid #666;bottom:30px;color:#333;display:none;left:3px;line-height:1.4;position:absolute;width:320px;z-index:1001}.tribe-events-tooltip .tribe-events-arrow{background-image:url(../images/tribe-tooltips.png);background-position:0 0;background-repeat:no-repeat;-webkit-background-size:44px 19px;background-size:44px 19px;bottom:-11px;display:block;height:11px;left:20px;position:absolute;width:18px}.recurring-info-tooltip,.tribe-events-calendar .tribe-events-right .tribe-events-tooltip,.tribe-events-week .tribe-events-right .tribe-events-tooltip{left:auto;right:3px}.tribe-events-right .tribe-events-tooltip .tribe-events-arrow{left:auto;right:30px}.tribe-events-tooltip ol,.tribe-events-tooltip ul{margin-left:1.6em}@media screen{#tribe-events-content .tribe-events-tooltip ol,#tribe-events-content .tribe-events-tooltip ul{margin-left:1.6em}}.recurringinfo{display:inline-block;position:relative;vertical-align:middle;zoom:1}.event-is-recurring{color:rgba(0,0,0,.7);font-style:normal;font-weight:500;position:relative}.event-is-recurring:hover{color:#000}.recurring-info-tooltip.tribe-events-tooltip{left:10px;padding-bottom:.8em;width:200px}.events-archive.events-gridview #tribe-events-content table .type-tribe_events{border-bottom:1px solid #e7e7e7;margin:0 5%;padding:6px 8px}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-viewmore{border-top:1px solid #e7e7e7;font-weight:700;line-height:1;margin:0 5%;padding:9px 8px}.tribe-events-calendar td .tribe-events-viewmore a{font-size:100%}.tribe-events-calendar th{background-color:#ddd;color:#333;height:10px;letter-spacing:1px;padding:4px 0;text-align:center;text-transform:uppercase;width:14.28%}.tribe-events-calendar td div[id*=tribe-events-daynum-]{line-height:1.2;padding:6px 9px}.tribe-events-calendar td a{font-size:91.7%}.tribe-events-calendar div[id*=tribe-events-daynum-],.tribe-events-calendar div[id*=tribe-events-event-]{margin:0;position:relative}#tribe-events-content .tribe-events-calendar div[id*=tribe-events-event-] h3.tribe-events-month-event-title{font-family:sans-serif;font-size:13px;font-weight:700;font-weight:normal;letter-spacing:0;line-height:1.25;margin:0;overflow:hidden;padding:0;text-transform:none}.tribe-events-calendar div[id*=tribe-events-event-] h3.tribe-events-month-event-title a{font-size:100%}#tribe-events-content .tribe-events-tooltip h4{background-color:#666;color:#fff;font-size:12px;font-weight:400;letter-spacing:1px;line-height:24px;margin:0;min-height:24px;padding:0 6px}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;font-weight:400;padding:3px 6px 6px}.tribe-events-tooltip .duration{font-style:italic;margin:3px 0}.tribe-events-tooltip .tribe-events-event-thumb{float:left;padding:5px 5px 5px 0}.tribe-events-tooltip .tribe-events-event-thumb img{-webkit-box-shadow:none;box-shadow:none}.tribe-events-tooltip p.entry-summary{font-size:11px;line-height:1.5;padding:0}#tribe-mobile-container{display:none}.tribe-events-list-widget ol li{list-style:none;margin-bottom:30px}.tribe-events-list-widget .duration{font-weight:700}.datepicker{z-index:1000!important}.datepicker table tr td span,.datepicker td{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker td{border-top:1px solid #ededed}.datepicker table tr td span.active.active,.datepicker table tr td.active.active{background:#666}.datepicker table tr td span.active.active:hover,.datepicker table tr td.active.active:hover{background:#dadada;color:inherit}#tribe-events-bar{clear:none;height:auto;margin-bottom:30px;min-width:220px;position:relative;width:100%}#tribe-events-bar *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#tribe-bar-form{background:#f5f5f5;margin:0;position:relative;width:100%}#tribe-bar-form input{font-size:15px;margin:0 4px 0 0}#tribe-bar-form input[type=text]{background:0;border:none;border-bottom:1px dashed #b9b9b9;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-weight:700;height:auto;line-height:1;padding:0 0 5px;width:100%}#tribe-bar-form input[type=text]:focus{outline:0}input[name*=tribe-bar-]::-webkit-input-placeholder{color:#5f5f5f;font-style:italic;font-weight:400;line-height:1.3}input[name*=tribe-bar-]:-moz-placeholder{color:#5f5f5f;font-style:italic;font-weight:400;line-height:1.3}.tribe-event-placeholder{color:#5f5f5f;font-weight:400;font-style:italic;line-height:1.3}#tribe-bar-form .tribe-bar-submit input[type=submit]{-webkit-appearance:button;background:#666;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;color:#fff;font-size:13px;height:auto;letter-spacing:0;line-height:20px;padding:10px;width:100%}.tribe-bar-submit input[type=submit]:hover{background:#999;color:#fff}#tribe-bar-form label{display:block;font-size:11px;font-weight:700;line-height:1;margin:0 0 5px;padding:0;text-transform:uppercase}#tribe-bar-dates .select2-choice{border-bottom:1px dashed #b9b9b9}#tribe-bar-form .tribe-bar-filters{float:left;margin:0;position:relative;width:100%}#tribe-bar-form #tribe-bar-views+.tribe-bar-filters{left:auto;right:16.66667%;width:83.3333%}#tribe-bar-form .tribe-bar-filters-inner{margin:0}#tribe-bar-form.tribe-bar-full .tribe-bar-filters{display:block!important}.tribe-bar-date-filter{float:left;margin-bottom:0;padding:15px;width:25%}.tribe-bar-search-filter{float:left;margin-bottom:0;padding:15px;width:33.3333%}.tribe-bar-submit{float:left;margin-bottom:0;margin-left:16.6667%;padding:15px;width:25%}#tribe-bar-form #tribe-bar-views{background:0 0;float:left;left:83.3333%;margin:0;padding:0 0 0 5px;position:relative;right:auto;width:16.66667%}#tribe-bar-views label:hover,#tribe-bar-views:hover{cursor:pointer}.tribe-bar-views-inner{background:#e0e0e0;margin:0;padding:15px 0 45px}#tribe-bar-form .tribe-bar-views-inner label{padding:0 15px;text-align:left}.tribe-bar-views-inner .select2-container{padding:0 15px}.tribe-select2-results-views.select2-drop{background:#dbdbdb;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;z-index:10001}#tribe-bar-form.tribe-bar-mini #tribe-bar-views{width:16.66667%}#tribe-bar-views .tribe-bar-views-list{border-radius:0 0 3px 3px;left:0;list-style-type:none;margin:0;padding:0 0 0 5px;position:absolute;top:auto;z-index:99}#tribe-bar-views li.tribe-bar-views-option{background:0 0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:none;filter:'progid:DXImageTransform.Microsoft.gradient(enabled=false)';line-height:14px;list-style:none;margin:0;padding:0}#tribe-bar-views .tribe-bar-views-option.tribe-bar-active,#tribe-bar-views .tribe-bar-views-option:first-child,#tribe-bar-views.tribe-bar-views-open .tribe-bar-views-option{display:list-item}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{background:#e0e0e0;color:#444;display:block;padding:6px 15px;text-align:left;text-decoration:none}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a:hover{background:#cacaca;color:inherit}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option.tribe-bar-active a:hover{background:#e0e0e0}#tribe-bar-views .tribe-bar-views-option:last-child a{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.tribe-no-js #tribe-bar-views [name=tribe-bar-view]{display:block}#tribe-bar-views [name=tribe-bar-view]{display:none}#tribe-bar-views .tribe-bar-views-list{float:left;width:100%}#tribe-bar-views .tribe-bar-settings{display:none}#tribe-bar-form.tribe-bar-mini *{font-size:12px}#tribe-bar-form.tribe-bar-mini label{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tribe-bar-mini .tribe-bar-filters{display:block!important;float:left;width:83.3333%}.tribe-bar-mini .tribe-bar-date-filter{padding:10px}.tribe-bar-mini .tribe-bar-search-filter{padding:10px;width:45%}.tribe-bar-mini .tribe-bar-submit{margin-left:5%;padding:10px;width:25%}#tribe-bar-form.tribe-bar-mini .tribe-bar-submit input[type=submit]{-webkit-appearance:button;font-size:11px;padding:10px 5px}.tribe-bar-mini #tribe-bar-views{width:16.66667%}.tribe-bar-mini .tribe-bar-views-inner{padding:10px 0 35px}.tribe-bar-mini .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-mini #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{padding:4px 15px}#tribe-bar-collapse-toggle{background:#f5f5f5;display:none;float:left;font-size:13px;font-weight:700;line-height:28px;padding:15px;position:relative;text-transform:uppercase}#tribe-bar-collapse-toggle:hover{cursor:pointer}#tribe-bar-collapse-toggle span.tribe-bar-toggle-arrow{display:inline-block;margin:0 4px;position:absolute;right:10px}#tribe-bar-collapse-toggle span.tribe-bar-toggle-arrow:after{border:solid transparent;border-color:rgba(136,183,213,0);border-top-color:inherit;border-width:8px;content:' ';height:0;pointer-events:none;position:absolute;right:0;top:10px;width:0}#tribe-bar-collapse-toggle.tribe-bar-filters-open span.tribe-bar-toggle-arrow:after{border-bottom-color:inherit;border-top-color:transparent;top:0}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views+.tribe-bar-filters{clear:both;display:none;left:auto;margin-top:5px;overflow:hidden;right:auto;width:100%}.tribe-bar-collapse #tribe-bar-views,.tribe-bar-collapse .tribe-bar-filters-inner>div{height:auto;margin:0;width:100%}.tribe-bar-collapse #tribe-bar-collapse-toggle{display:block;width:70%}.tribe-bar-collapse #tribe-bar-collapse-toggle.tribe-bar-collapse-toggle-full-width{width:100%}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views{float:left;left:auto;width:30%}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner{padding:10px 0 40px}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label{margin:0}.tribe-bar-is-disabled .tribe-events-page-title{clear:none;line-height:45px;margin:0;text-align:left}.tribe-bar-disabled{float:right;position:relative;z-index:101}.tribe-bar-disabled #tribe-events-bar{float:none;min-width:0;width:auto}.tribe-bar-disabled #tribe-bar-form{border-radius:3px;width:auto}.tribe-bar-disabled .tribe-bar-filters{float:left}.tribe-bar-disabled .tribe-bar-filters .tribe-bar-date-filter{padding:5px 10px}.tribe-bar-disabled #tribe-bar-form label{font-size:10px}.tribe-bar-disabled #tribe-bar-form .tribe-bar-filters input[type=text]{border:none;display:block;font-size:13px;line-height:15px;margin:0;padding:0;width:85px}.tribe-bar-disabled #tribe-bar-form #tribe-bar-views+.tribe-bar-filters{left:auto;right:50%;width:50%}.tribe-bar-disabled .tribe-bar-date-filter,.tribe-events-uses-geolocation .tribe-bar-disabled .tribe-bar-date-filter{width:auto}.tribe-bar-disabled #tribe-bar-form #tribe-bar-views{float:left;font-size:16px;left:50%;padding:0;right:auto;width:50%}.tribe-bar-disabled .tribe-bar-views-inner{border-radius:0 3px 3px 0;min-width:100px;padding:5px 0 25px}.tribe-bar-disabled #tribe-bar-form .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list,.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option{margin:0}.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{margin:0;padding:4px 10px}.tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice{font-size:13px;height:auto;line-height:18px}.tribe-bar-is-disabled .tribe-select2-results-views.select2-drop .select2-results li{padding:0 10px}.tribe-bar-disabled #tribe-bar-collapse-toggle,.tribe-bar-disabled .tribe-bar-submit{display:none}.tribe-bar-view-list a[class*=tribe-icon-],.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-position:0 50%;background-repeat:no-repeat;display:block;min-height:16px;padding-left:24px}.tribe-select2-results-views span[class^=tribe-icon-]{display:inline-block;min-height:16px}.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-image:url(../images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-view-list span[class^=tribe-icon-],.tribe-bar-views-list span.tribe-icon-list,.tribe-select2-results-views span.tribe-icon-list{background-image:url(../images/events-bar/icon-list.png);-webkit-background-size:15px 10px;background-size:15px 10px}.tribe-bar-view-list a.tribe-icon-list,.tribe-bar-view-list a.tribe-icon-month{background-position:10px 50%;padding-left:30px}.tribe-bar-view-list a.tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-select2-results-views .tribe-icon-month{background-image:url(../images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-week,.tribe-select2-results-views span.tribe-icon-week{background-image:url(../images/events-bar/icon-week.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-day,.tribe-select2-results-views span.tribe-icon-day{background-image:url(../images/events-bar/icon-day.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-photo,.tribe-select2-results-views span.tribe-icon-photo{background-image:url(../images/events-bar/icon-photo.png);-webkit-background-size:15px 14px;background-size:15px 14px}.tribe-bar-views-list span.tribe-icon-map,.tribe-select2-results-views span.tribe-icon-map{background-image:url(../images/events-bar/icon-map.png);background-position:2px 50%;-webkit-background-size:12px 16px;background-size:12px 16px}.tribe-events-week.tribe-theme-parent-twentyfourteen #masthead,.tribe-events-week.tribe-theme-twentyfourteen #masthead{z-index:1001}.tribe-theme-parent-twentyfourteen #tribe-events-pg-template #tribe-events,.tribe-theme-twentyfourteen #tribe-events-pg-template #tribe-events{padding:20px}.tribe-theme-parent-twentyfourteen #tribe-bar-views .tribe-bar-views-list,.tribe-theme-twentyfourteen #tribe-bar-views .tribe-bar-views-list{z-index:3}@media screen and (min-width:1000px){.tribe-theme-parent-twentyfourteen #tribe-events-pg-template,.tribe-theme-twentyfourteen #tribe-events-pg-template{padding-left:220px}}#tribe-events-content .tribe-updated{display:inherit}@media screen and (max-width:400px){.list-view.events-archive .site-content .type-page .entry-content{display:initial}}.tribe-theme-twentyfifteen.events-single.tribe-events-page-template #tribe-events-pg-template{padding-top:8.3333%}.tribe-theme-twentyfifteen.events-single.tribe-events-page-template #tribe-events-content{padding:8.3333% 10%}.tribe-theme-twentyfifteen.single-tribe_events #tribe-events .tribe_events{box-shadow:none;margin-left:0;margin-right:0;padding-top:0}.tribe-theme-twentyfifteen.single-tribe_events #tribe-events .tribe-events-schedule h2{display:inline-block;font-size:1.2em;margin:0}.tribe-theme-twentyfifteen.single-tribe_events.page-template-page-php .tribe-events-single{box-shadow:none;margin-bottom:0!important;margin-left:0;margin-right:0}.tribe-theme-twentyfifteen.tribe-events-week .tribe-events-grid .hentry{margin-left:0;margin-right:0}.tribe-theme-twentyfifteen .tribe-events-list-widget .type-tribe_events{border-top:1px solid rgba(51,51,51,.1);box-shadow:none;margin-left:0;margin-right:0}.tribe-theme-twentyfifteen .tribe-events-list-widget .entry-title{font-size:2.2rem;font-size:22px;line-height:1.4545}.tribe-theme-twentyfifteen.tribe-events-page-template #tribe-events-content-wrapper{padding:3.333%}.tribe-theme-twentyfifteen .tribe-events-list .type-tribe_events,.tribe-theme-twentyfifteen .tribe-events-list .type-tribe_events.tribe-events-first{padding:8.333% 10%}.tribe-theme-twentyfifteen .tribe-events-day-time-slot .type-tribe_events{margin-left:0}.tribe-theme-twentyfifteen .type-tribe_events a.more-link{display:none}.tribe-theme-twentyfifteen .datepicker.dropdown-menu{max-width:340px}.tribe-theme-twentyfifteen .datepicker.dropdown-menu table,.tribe-theme-twentyfifteen .datepicker.dropdown-menu table.table-condensed{border-left-width:0;border-top-width:0}.tribe-theme-twentyfifteen .tribe-events-calendar td a,.tribe-theme-twentyfifteen .tribe-events-nav-next a,.tribe-theme-twentyfifteen .tribe-events-nav-previous a,.tribe-theme-twentyfifteen ul.tribe-bar-views-list li a{border-bottom:none}.tribe-theme-twentyfifteen.events-archive .entry-footer,.tribe-theme-twentyfifteen.single-tribe_events .entry-footer{display:none}.tribe-theme-twentyfifteen .tribe-events-list .time-details,.tribe-theme-twentyfifteen .tribe-events-list .tribe-events-venue-details{line-height:1.6}body.tribe-theme-twentysixteen table.tribe-events-calendar{table-layout:auto}body.tribe-theme-twentysixteen .tribe-events-single-section-title:first-child{margin-top:20px}body.tribe-theme-twentysixteen .tribe-events-content.entry-summary{font-size:inherit;margin-bottom:0;margin-top:5px}body.tribe-theme-twentysixteen.events-archive .entry-content,body.tribe-theme-twentysixteen.events-archive .entry-header{width:auto}@media (min--moz-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2/1),(-webkit-min-device-pixel-ratio:2),(min-device-pixel-ratio:2){.tribe-events-tooltip .tribe-events-arrow{background-image:url(../images/tribe-tooltips@2x.png)}#tribe-bar-filters .tribe-bar-button-search .tribe-bar-btn-small{background-image:url(../images/events-bar/icon-search@2x.png)}#tribe-events-bar .tribe-bar-button-settings span{background-image:url(../images/events-bar/icon-gear@2x.png)}#tribe-events-bar [class^=tribe-bar-button-]:after{background-image:url(../vendor/select2/select2x2.png)}.tribe-bar-view-list a[class^=tribe-icon-],.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-image:url(../images/events-bar/icon-month@2x.png)}.tribe-bar-view-list span[class^=tribe-icon-],.tribe-bar-views-list span.tribe-icon-list,.tribe-select2-results-views span.tribe-icon-list{background-image:url(../images/events-bar/icon-list@2x.png)}.tribe-bar-view-list a.tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-select2-results-views span.tribe-icon-month{background-image:url(../images/events-bar/icon-month@2x.png)}.tribe-bar-views-list span.tribe-icon-week,.tribe-select2-results-views span.tribe-icon-week{background-image:url(../images/events-bar/icon-week@2x.png)}.tribe-bar-views-list span.tribe-icon-day,.tribe-select2-results-views span.tribe-icon-day{background-image:url(../images/events-bar/icon-day@2x.png)}.tribe-bar-views-list span.tribe-icon-photo,.tribe-select2-results-views span.tribe-icon-photo{background-image:url(../images/events-bar/icon-photo@2x.png)}.tribe-bar-views-list span.tribe-icon-map,.tribe-select2-results-views span.tribe-icon-map{background-image:url(../images/events-bar/icon-map@2x.png)}}
|
1 |
+
.clearfix:after,.tribe-clear,.tribe-clearfix:after,.tribe-events-after-html{clear:both}#tribe-events-pg-template{margin:0 auto;max-width:1000px}#tribe-events .tribe-events-content p,.tribe-events-after-html p,.tribe-events-before-html p{line-height:1.7;margin:0 0 10px}#tribe-events-pg-template .tribe-events-content h1,#tribe-events-pg-template .tribe-events-content h2,#tribe-events-pg-template .tribe-events-content h3,#tribe-events-pg-template .tribe-events-content h4,#tribe-events-pg-template .tribe-events-content h5,#tribe-events-pg-template .tribe-events-content h6,.tribe-events-after-html h1,.tribe-events-after-html h2,.tribe-events-after-html h3,.tribe-events-after-html h4,.tribe-events-after-html h5,.tribe-events-after-html h6,.tribe-events-before-html h1,.tribe-events-before-html h2,.tribe-events-before-html h3,.tribe-events-before-html h4,.tribe-events-before-html h5,.tribe-events-before-html h6{margin:24px 0}#tribe-events-pg-template .tribe-events-content h1,.tribe-events-after-html h1,.tribe-events-before-html h1{font-size:21px;line-height:1.5}#tribe-events-pg-template .tribe-events-content h2,.tribe-events-after-html h2,.tribe-events-before-html h2{font-size:18px;line-height:1.6}#tribe-events-pg-template .tribe-events-content h3,.tribe-events-after-html h3,.tribe-events-before-html h3{font-size:16px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h4,.tribe-events-after-html h4,.tribe-events-before-html h4{font-size:14px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h5,.tribe-events-after-html h5,.tribe-events-before-html h5{font-size:13px;line-height:1.8}#tribe-events-pg-template .tribe-events-content h6,.tribe-events-after-html h6,.tribe-events-before-html h6{font-size:12px;line-height:1.8}#tribe-events-pg-template .tribe-events-content ul,.tribe-events-after-html ul,.tribe-events-before-html ul{list-style:disc}#tribe-events-pg-template .tribe-events-content ol,.tribe-events-after-html ol,.tribe-events-before-html ol{list-style:decimal}#tribe-events-pg-template .tribe-events-content ol li,#tribe-events-pg-template .tribe-events-content ul li,.tribe-events-after-html ol li,.tribe-events-after-html ul li,.tribe-events-before-html ol li,.tribe-events-before-html ul li{line-height:1.7;margin:0 0 20px}.tribe-events-back{margin:0 0 20px}#tribe-events-content a,.tribe-events-adv-list-widget .tribe-events-widget-link a,.tribe-events-adv-list-widget .tribe-events-widget-link a:hover,.tribe-events-back a,.tribe-events-back a:hover,.tribe-events-event-meta a,.tribe-events-list-widget .tribe-events-widget-link a,.tribe-events-list-widget .tribe-events-widget-link a:hover,ul.tribe-events-sub-nav a,ul.tribe-events-sub-nav a:hover{text-decoration:none}#tribe-events .tribe-events-button,.tribe-events-button{background-color:#666;background-image:none;border:0;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#fff;cursor:pointer;display:inline-block;font-size:11px;font-weight:700;letter-spacing:1px;line-height:normal;padding:6px 9px;text-align:center;text-decoration:none;text-transform:uppercase;vertical-align:middle;zoom:1}.tribe-events-button.tribe-active{background-color:#666;color:#fff}#tribe-events .tribe-events-button:hover,.tribe-events-button.tribe-active:hover,.tribe-events-button.tribe-inactive,.tribe-events-button:hover{background-color:#ddd;color:#444;text-decoration:none}a.tribe-events-gcal,a.tribe-events-ical{clear:both;color:#fff;float:right;font-size:10px;font-weight:400;line-height:18px;margin-top:21px;padding:0 6px;text-decoration:none}.tribe-events-gcal{margin-right:9px}.single-tribe_events a.tribe-events-gcal,.single-tribe_events a.tribe-events-ical{float:none}.tribe-events-event-meta .tribe-events-gmap,.tribe-events-event-meta-desc .tribe-events-gmap{white-space:nowrap}.event .entry-title{color:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:inherit}.updated-info{height:0;text-indent:-9999px}.tribe-events-event-image{margin:0 0 20px;text-align:center}.tribe-events-event-image img{height:auto;max-width:100%}.tribe-events-schedule h2{font-style:normal;font-weight:700}.tribe-events-event-schedule-details{display:inline}.tribe-events-divider{font-weight:700;padding:0 10px}.events-archive .entry-content,.events-archive .entry-header{width:98%}.events-archive footer.entry-meta,.events-archive header.entry-header,.events-archive span.edit-link,.single-tribe_events footer.entry-meta,.single-tribe_events header.entry-header,.single-tribe_organizer footer.entry-meta,.single-tribe_organizer header.entry-header,.single-tribe_venue footer.entry-meta,.single-tribe_venue header.entry-header{display:none}.tribe-events-notices{background:#d9edf7;border:1px solid #bce8f1;-webkit-border-radius:4px;border-radius:4px;color:#3a87ad;margin:10px 0 18px;padding:8px 35px 8px 14px;text-shadow:0 1px 0 #fff}div.tribe-events-notices>ul,div.tribe-events-notices>ul>li{list-style:none;margin:0;padding:0}#tribe-events-content p.tribe-events-promo{color:#999;font-size:12px}#tribe-events-content p.tribe-events-promo a{color:#666}.clearfix:after,.clearfix:before,.tribe-clearfix:after,.tribe-clearfix:before{content:'';display:table}.clearfix,.tribe-clearfix{zoom:1}.tribe-events-visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tribe-hide-text{overflow:hidden;text-indent:100%;white-space:nowrap}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}#tribe-events-content .tribe-events-abbr{border-bottom:0;cursor:default}#tribe-bar-collapse-toggle:hover,#tribe-bar-views label:hover,#tribe-bar-views:hover{cursor:pointer}.tribe-events-spinner{height:32px;margin-left:-16px;width:32px}.tribe-events-spinner-medium{height:24px;width:24px}.tribe-events-spinner-small{height:16px;margin-left:-8px;width:16px}h2.tribe-events-page-title{clear:none;font-size:24px;font-weight:400;margin-bottom:.5em;position:relative;text-align:center;z-index:0}.tribe-events-filter-view .tribe-events-list h2.tribe-events-page-title{float:none;width:100%}h2.tribe-events-page-title a{color:#000}h2.tribe-events-page-title a:focus,h2.tribe-events-page-title a:hover{color:#333;text-decoration:underline}#tribe-events-footer,#tribe-events-header{clear:both;margin-bottom:.5em}#tribe-events-footer .tribe-events-sub-nav,#tribe-events-header .tribe-events-sub-nav{line-height:normal;list-style-type:none;margin:0;overflow:hidden;padding:0;text-align:center}#tribe-events-footer .tribe-events-sub-nav li,#tribe-events-header .tribe-events-sub-nav li{display:inline-block;margin:0;vertical-align:middle;zoom:1}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous,#tribe-events-header .tribe-events-sub-nav li{float:left;margin-right:5px;text-align:left}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next{float:right;margin-left:5px;text-align:right}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left{float:left;text-align:left}#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right{float:right;text-align:right}.tribe-events-ajax-loading{background:#666;border-radius:5px;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;display:none;left:50%;margin-left:-27px;padding:15px;position:absolute;top:150px;z-index:10}#tribe-events-content,#tribe-events-header,.tribe-events-list .tribe-events-loop .tribe-events-event-meta .event-is-recurring{position:relative}.tribe-events-ajax-loading.tribe-events-active-spinner,.tribe-events-ajax-loading.tribe-events-active-spinner img,.tribe-events-loading .tribe-events-ajax-loading{display:block}#tribe-events-footer{margin-bottom:1em}.events-list #tribe-events-footer,.tribe-events-day #tribe-events-footer,.tribe-events-map #tribe-events-footer{clear:both;margin:1.25em 0 18px}.tribe-events-map #tribe-events-header{margin:1em 0}.single-tribe_events #tribe-events-header{margin:1em 0 20px}.single-tribe_events #tribe-events-footer li,.single-tribe_events #tribe-events-header li{width:48%}#tribe-events-content .tribe-events-nav-date{padding-top:16px}select.tribe-events-dropdown{font-size:11px;margin:33px 9px 0 0;width:auto}#tribe-events-events-picker,#tribe-events-picker{display:inline}#tribe-events-content{margin-bottom:48px;padding:2px 0}.tribe-events-othermonth .tribe-events-month-event-title,.tribe-events-othermonth div[id*=tribe-events-daynum-]{-khtml-opacity:.4;-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=40)';filter:alpha(opacity=40);-moz-opacity:.4;opacity:.4}.tribe-events-list h2.tribe-events-page-title{margin-bottom:15px}#tribe-events-content.tribe-events-list{padding:0;margin-bottom:60px}.tribe-events-list .type-tribe_events{border-bottom:1px solid #ddd;margin:0;padding:2.25em 0}.tribe-events-list .type-tribe_events.tribe-events-first{padding-top:0}.tribe-events-list h2.tribe-events-list-event-title{border:none;font-size:1.4em;letter-spacing:0;line-height:1.4em;margin:0;padding:0;text-transform:none;display:inline;float:none}.tribe-events-event-details .tribe-events-event-meta address.tribe-events-address{font-family:inherit;font-size:inherit;font-style:normal;line-height:inherit}.tribe-events-list .tribe-events-event-image{float:left;margin:0 3% 0 0;width:30%}.tribe-events-list .tribe-events-event-image img{height:auto;margin:0;padding:0;width:100%}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:left;position:relative;width:67%}.tribe-events-loop .tribe-events-event-meta{border:0;clear:both;float:none;font-size:14px;font-weight:700;line-height:1.5;margin:5px 0 15px;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1}.tribe-events-event-meta address.tribe-events-address{display:inline;font-family:inherit;font-size:inherit;font-style:normal;line-height:inherit;margin-right:10px}.tribe-events-list .time-details,.tribe-events-list .tribe-events-venue-details{display:block;line-height:1.2;margin:0}.tribe-events-list .time-details{margin:0 0 8px}.tribe-events-list .tribe-events-event-cost{float:right;margin:0 0 5px 5px}.tribe-events-list .tribe-events-event-cost span{background:#eee;border:1px solid #ddd;display:block;font-style:normal;font-weight:700;line-height:1.3;padding:5px 10px;text-align:center;text-overflow:ellipsis}.tribe-events-list .tribe-events-loop .tribe-events-content{padding:0;width:100%}.tribe-events-list-separator-year{color:#ccc;display:block;font-size:38px;font-weight:700;padding:1em 2.25em 0;text-align:center}.tribe-events-list-separator-month{background-color:#eee;display:block;font-size:14px;font-weight:700;margin:2.5em 0 0;padding:6px 10px;text-transform:uppercase}.tribe-events-list-separator-month+.type-tribe_events.tribe-events-first{padding-top:2.25em}.tribe-events-list .type-tribe_events.tribe-event-end-month{border-bottom:0;padding-bottom:0}.tribe-events-loop{clear:both}.tribe-events-loop .type-tribe_events.tribe-events-last{border-bottom:0}.tribe-events-loop .tribe-events-content{float:left;padding:0 5% 0 0;width:60%}.single-tribe_venue .tribe-events-loop .tribe-events-content p{margin:0}.events-archive h3 .published,.single-tribe_venue h3 .published{font-size:18px;font-style:italic;margin-top:0;text-transform:none}.tribe-events-event-day,.tribe-events-event-meta-desc{color:#333}.single-tribe_events h2.tribe-events-single-event-title{font-size:1.7em;line-height:1;margin:0;padding:0}#tribe-events-content .tribe-events-single-event-description img.attachment-post-thumbnail{display:block;margin-left:auto;margin-right:auto;text-align:center}.tribe-events-meta-group .tribe-events-single-section-title{font-size:1.4em;font-weight:700;margin:20px 0 10px}.tribe-events-meta-group+.tribe-events-single-section-title{margin-top:0}.tribe-events-event-meta .tribe-events-meta-group address.tribe-events-address{display:block;margin:0}#eventbrite-embed{margin:24px 0;min-height:225px;width:100%}.eventbrite-ticket-embed{margin:0 0 30px}.tribe-events-schedule{margin:20px 0 0}.single-tribe_events .tribe-events-schedule .recurringinfo,.single-tribe_events .tribe-events-schedule .tribe-events-cost,.single-tribe_events .tribe-events-schedule .tribe-events-divider{font-size:1.2em}.single-tribe_events .tribe-events-schedule h3{display:inline-block;font-size:1.2em;margin:0;padding:0;vertical-align:middle;white-space:nowrap;zoom:1}.single-tribe_events .tribe-events-schedule .tribe-events-cost{vertical-align:middle}.single-tribe_events .tribe-events-event-image{clear:both;margin-bottom:30px;text-align:center}.single-tribe_events .tribe-events-event-meta{background:#fafafa;border:1px solid #eee;margin:30px 0;font-size:13px}.single-tribe_events .tribe-events-venue-map{background:#eee;border:1px solid #ddd;border-radius:3px;display:inline-block;float:right;margin:20px 4% 2% 0;padding:5px;vertical-align:top;width:58%;zoom:1}.single-tribe_events #tribe-events-gmap{height:0!important;margin:0!important;padding-top:50%;width:100%!important}.single-tribe_events .tribe-events-meta-group .tribe-events-venue-map{float:none;margin:20px 0 0;width:100%}.single-tribe_events .tribe-events-meta-group #tribe-events-gmap{height:0!important;margin-top:50px;padding-top:100%;width:100%!important}.tribe-events-event-meta .column,.tribe-events-event-meta .tribe-events-meta-group{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:left;margin:0 0 20px;padding:0 4%;text-align:left;vertical-align:top;width:33.3333%;zoom:1}.single-tribe_events .tribe-events-event-meta dl{margin:0}.single-tribe_events #tribe-events-content .tribe-events-event-meta dt{clear:left;font-weight:700;line-height:1;list-style:none}.single-tribe_events #tribe-events-content .tribe-events-event-meta dd{float:none;line-height:1.5;list-style:none;margin:0 0 10px;padding:0}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-content{max-width:100%;padding:0;width:100%}.sidebar.single-tribe_events .tribe-events-content{padding:0}.tribe-events-day .tribe-events-day-time-slot h5{background-color:#eee;font-size:14px;font-weight:700;margin:2.5em 0 0;padding:6px 10px;text-transform:uppercase}.tribe-events-day .tribe-events-day-time-slot .type-tribe_events{margin-left:5%}#tribe-events-content table.tribe-events-calendar{border-collapse:collapse;clear:both;font-size:12px;margin:12px 0 .6em;table-layout:fixed;width:100%}#tribe-events-content .tribe-events-calendar td,#tribe-events-content table.tribe-events-calendar{border:1px solid #bbb}.tribe-events-calendar div[id*=tribe-events-daynum-],.tribe-events-calendar div[id*=tribe-events-daynum-] a{background-color:#f5f5f5;color:#333;font-size:11px;font-weight:700}.tribe-events-calendar td.tribe-events-present div[id*=tribe-events-daynum-],.tribe-events-calendar td.tribe-events-present div[id*=tribe-events-daynum-]>a{background-color:#666;color:#fff}.tribe-events-calendar td.tribe-events-past div[id*=tribe-events-daynum-],.tribe-events-calendar td.tribe-events-past div[id*=tribe-events-daynum-]>a{color:#999}#tribe-events-content .tribe-events-calendar td{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:#114b7d;font-size:12px;height:110px;padding:0 0 .5em;vertical-align:top;width:14.28%}.recurring-info-tooltip,.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip{background-color:#f9f9f9;border:1px solid #666;bottom:30px;color:#333;display:none;left:3px;line-height:1.4;position:absolute;width:320px;z-index:1001}.tribe-events-tooltip .tribe-events-arrow{background-image:url(../images/tribe-tooltips.png);background-position:0 0;background-repeat:no-repeat;-webkit-background-size:44px 19px;background-size:44px 19px;bottom:-11px;display:block;height:11px;left:20px;position:absolute;width:18px}.recurring-info-tooltip,.tribe-events-calendar .tribe-events-right .tribe-events-tooltip,.tribe-events-week .tribe-events-right .tribe-events-tooltip{left:auto;right:3px}.tribe-events-right .tribe-events-tooltip .tribe-events-arrow{left:auto;right:30px}.tribe-events-tooltip ol,.tribe-events-tooltip ul{margin-left:1.6em}@media screen{#tribe-events-content .tribe-events-tooltip ol,#tribe-events-content .tribe-events-tooltip ul{margin-left:1.6em}}.recurringinfo{display:inline-block;position:relative;vertical-align:middle;zoom:1}.event-is-recurring{color:rgba(0,0,0,.7);font-style:normal;font-weight:500;position:relative}.event-is-recurring:hover{color:#000}.recurring-info-tooltip.tribe-events-tooltip{left:10px;padding-bottom:.8em;width:200px}.events-archive.events-gridview #tribe-events-content table .type-tribe_events{border-bottom:1px solid #e7e7e7;margin:0 5%;padding:6px 8px}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-viewmore{border-top:1px solid #e7e7e7;font-weight:700;line-height:1;margin:0 5%;padding:9px 8px}.tribe-events-calendar td .tribe-events-viewmore a{font-size:100%}.tribe-events-calendar th{background-color:#ddd;color:#333;height:10px;letter-spacing:1px;padding:4px 0;text-align:center;text-transform:uppercase;width:14.28%}.tribe-events-calendar td div[id*=tribe-events-daynum-]{line-height:1.2;padding:6px 9px}.tribe-events-calendar td a{font-size:91.7%}.tribe-events-calendar div[id*=tribe-events-daynum-],.tribe-events-calendar div[id*=tribe-events-event-]{margin:0;position:relative}#tribe-events-content .tribe-events-calendar div[id*=tribe-events-event-] h3.tribe-events-month-event-title{font-family:sans-serif;font-size:13px;font-weight:700;font-weight:400;letter-spacing:0;line-height:1.25;margin:0;overflow:hidden;padding:0;text-transform:none}.tribe-events-calendar div[id*=tribe-events-event-] h3.tribe-events-month-event-title a{font-size:100%}#tribe-events-content .tribe-events-tooltip h4{background-color:#666;color:#fff;font-size:12px;font-weight:400;letter-spacing:1px;line-height:24px;margin:0;min-height:24px;padding:0 6px}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;font-weight:400;padding:3px 6px 6px}.tribe-events-tooltip .duration{font-style:italic;margin:3px 0}.tribe-events-tooltip .tribe-events-event-thumb{float:left;padding:5px 5px 5px 0}.tribe-events-tooltip .tribe-events-event-thumb img{-webkit-box-shadow:none;box-shadow:none}.tribe-events-tooltip p.entry-summary{font-size:11px;line-height:1.5;padding:0}#tribe-mobile-container{display:none}.tribe-events-list-widget ol li{list-style:none;margin-bottom:30px}.tribe-events-list-widget .duration{font-weight:700}.datepicker{z-index:1000!important}.datepicker table tr td span,.datepicker td{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.datepicker td{border-top:1px solid #ededed}.datepicker table tr td span.active.active,.datepicker table tr td.active.active{background:#666}.datepicker table tr td span.active.active:hover,.datepicker table tr td.active.active:hover{background:#dadada;color:inherit}#tribe-events-bar{clear:none;height:auto;margin-bottom:30px;min-width:220px;position:relative;width:100%}#tribe-events-bar *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#tribe-bar-form{background:#f5f5f5;margin:0;position:relative;width:100%}#tribe-bar-form input{font-size:15px;margin:0 4px 0 0}#tribe-bar-form input[type=text]{background:0;border:none;border-bottom:1px dashed #b9b9b9;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;font-weight:700;height:auto;line-height:1;padding:0 0 5px;width:100%}#tribe-bar-form input[type=text]:focus{outline:0}input[name*=tribe-bar-]::-webkit-input-placeholder{color:#5f5f5f;font-style:italic;font-weight:400;line-height:1.3}input[name*=tribe-bar-]:-moz-placeholder{color:#5f5f5f;font-style:italic;font-weight:400;line-height:1.3}.tribe-event-placeholder{color:#5f5f5f;font-weight:400;font-style:italic;line-height:1.3}#tribe-bar-form .tribe-bar-submit input[type=submit]{-webkit-appearance:button;background:#666;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;color:#fff;font-size:13px;height:auto;letter-spacing:0;line-height:20px;padding:10px;width:100%}.tribe-bar-submit input[type=submit]:hover{background:#999;color:#fff}#tribe-bar-form label{display:block;font-size:11px;font-weight:700;line-height:1;margin:0 0 5px;padding:0;text-transform:uppercase}.tribe-bar-date-filter,.tribe-bar-search-filter,.tribe-bar-submit{margin-bottom:0;padding:15px;float:left}#tribe-bar-dates .select2-choice{border-bottom:1px dashed #b9b9b9}#tribe-bar-form .tribe-bar-filters{float:left;margin:0;position:relative;width:100%}#tribe-bar-form #tribe-bar-views+.tribe-bar-filters{left:auto;right:16.66667%;width:83.3333%}#tribe-bar-form .tribe-bar-filters-inner{margin:0}#tribe-bar-form.tribe-bar-full .tribe-bar-filters{display:block!important}.tribe-bar-date-filter{width:25%}.tribe-bar-search-filter{width:33.3333%}.tribe-bar-submit{margin-left:16.6667%;width:25%}#tribe-bar-form #tribe-bar-views{background:0 0;float:left;left:83.3333%;margin:0;padding:0 0 0 5px;position:relative;right:auto;width:16.66667%}.tribe-bar-views-inner{background:#e0e0e0;margin:0;padding:15px 0 45px}#tribe-bar-form .tribe-bar-views-inner label{padding:0 15px;text-align:left}.tribe-bar-views-inner .select2-container{padding:0 15px}.tribe-select2-results-views.select2-drop{background:#dbdbdb;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;z-index:10001}#tribe-bar-form.tribe-bar-mini #tribe-bar-views{width:16.66667%}#tribe-bar-views .tribe-bar-views-list{border-radius:0 0 3px 3px;left:0;list-style-type:none;margin:0;padding:0 0 0 5px;position:absolute;top:auto;z-index:99;float:left;width:100%}#tribe-bar-views li.tribe-bar-views-option{background:0 0;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:none;filter:'progid:DXImageTransform.Microsoft.gradient(enabled=false)';line-height:14px;list-style:none;margin:0;padding:0}#tribe-bar-views .tribe-bar-views-option.tribe-bar-active,#tribe-bar-views .tribe-bar-views-option:first-child,#tribe-bar-views.tribe-bar-views-open .tribe-bar-views-option{display:list-item}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{background:#e0e0e0;color:#444;display:block;padding:6px 15px;text-align:left;text-decoration:none}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a:hover{background:#cacaca;color:inherit}#tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option.tribe-bar-active a:hover{background:#e0e0e0}#tribe-bar-views .tribe-bar-views-option:last-child a{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.tribe-no-js #tribe-bar-views [name=tribe-bar-view]{display:block}#tribe-bar-views .tribe-bar-settings,#tribe-bar-views [name=tribe-bar-view]{display:none}#tribe-bar-form.tribe-bar-mini *{font-size:12px}#tribe-bar-form.tribe-bar-mini label{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tribe-bar-mini .tribe-bar-filters{display:block!important;float:left;width:83.3333%}.tribe-bar-mini .tribe-bar-date-filter{padding:10px}.tribe-bar-mini .tribe-bar-search-filter{padding:10px;width:45%}.tribe-bar-mini .tribe-bar-submit{margin-left:5%;padding:10px;width:25%}#tribe-bar-form.tribe-bar-mini .tribe-bar-submit input[type=submit]{-webkit-appearance:button;font-size:11px;padding:10px 5px}.tribe-bar-mini #tribe-bar-views{width:16.66667%}.tribe-bar-mini .tribe-bar-views-inner{padding:10px 0 35px}.tribe-bar-mini .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-mini #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{padding:4px 15px}#tribe-bar-collapse-toggle{background:#f5f5f5;display:none;float:left;font-size:13px;font-weight:700;line-height:28px;padding:15px;position:relative;text-transform:uppercase}#tribe-bar-collapse-toggle span.tribe-bar-toggle-arrow{display:inline-block;margin:0 4px;position:absolute;right:10px}#tribe-bar-collapse-toggle span.tribe-bar-toggle-arrow:after{border:solid transparent;border-color:rgba(136,183,213,0);border-top-color:inherit;border-width:8px;content:' ';height:0;pointer-events:none;position:absolute;right:0;top:10px;width:0}#tribe-bar-collapse-toggle.tribe-bar-filters-open span.tribe-bar-toggle-arrow:after{border-bottom-color:inherit;border-top-color:transparent;top:0}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views+.tribe-bar-filters{clear:both;display:none;left:auto;margin-top:5px;overflow:hidden;right:auto;width:100%}.tribe-bar-collapse #tribe-bar-views,.tribe-bar-collapse .tribe-bar-filters-inner>div{height:auto;margin:0;width:100%}.tribe-bar-collapse #tribe-bar-collapse-toggle{display:block;width:70%}.tribe-bar-collapse #tribe-bar-collapse-toggle.tribe-bar-collapse-toggle-full-width{width:100%}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views{float:left;left:auto;width:30%}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner{padding:10px 0 40px}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label{margin:0}.tribe-bar-is-disabled .tribe-events-page-title{clear:none;line-height:45px;margin:0;text-align:left}.tribe-bar-disabled{float:right;position:relative;z-index:101}.tribe-bar-disabled #tribe-events-bar{float:none;min-width:0;width:auto}.tribe-bar-disabled #tribe-bar-form{border-radius:3px;width:auto}.tribe-bar-disabled .tribe-bar-filters{float:left}.tribe-bar-disabled .tribe-bar-filters .tribe-bar-date-filter{padding:5px 10px}.tribe-bar-disabled #tribe-bar-form label{font-size:10px}.tribe-bar-disabled #tribe-bar-form .tribe-bar-filters input[type=text]{border:none;display:block;font-size:13px;line-height:15px;margin:0;padding:0;width:85px}.tribe-bar-disabled #tribe-bar-form #tribe-bar-views+.tribe-bar-filters{left:auto;right:50%;width:50%}.tribe-bar-disabled .tribe-bar-date-filter,.tribe-events-uses-geolocation .tribe-bar-disabled .tribe-bar-date-filter{width:auto}.tribe-bar-disabled #tribe-bar-form #tribe-bar-views{float:left;font-size:16px;left:50%;padding:0;right:auto;width:50%}.tribe-bar-disabled .tribe-bar-views-inner{border-radius:0 3px 3px 0;min-width:100px;padding:5px 0 25px}.tribe-bar-disabled #tribe-bar-form .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list,.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option{margin:0}.tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a{margin:0;padding:4px 10px}.tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice{font-size:13px;height:auto;line-height:18px}.tribe-bar-is-disabled .tribe-select2-results-views.select2-drop .select2-results li{padding:0 10px}.tribe-bar-disabled #tribe-bar-collapse-toggle,.tribe-bar-disabled .tribe-bar-submit{display:none}.tribe-bar-view-list a[class*=tribe-icon-],.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-position:0 50%;background-repeat:no-repeat;display:block;min-height:16px;padding-left:24px}.tribe-select2-results-views span[class^=tribe-icon-]{display:inline-block;min-height:16px}.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-image:url(../images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-view-list span[class^=tribe-icon-],.tribe-bar-views-list span.tribe-icon-list,.tribe-select2-results-views span.tribe-icon-list{background-image:url(../images/events-bar/icon-list.png);-webkit-background-size:15px 10px;background-size:15px 10px}.tribe-bar-view-list a.tribe-icon-list,.tribe-bar-view-list a.tribe-icon-month{background-position:10px 50%;padding-left:30px}.tribe-bar-view-list a.tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-select2-results-views .tribe-icon-month{background-image:url(../images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-week,.tribe-select2-results-views span.tribe-icon-week{background-image:url(../images/events-bar/icon-week.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-day,.tribe-select2-results-views span.tribe-icon-day{background-image:url(../images/events-bar/icon-day.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-bar-views-list span.tribe-icon-photo,.tribe-select2-results-views span.tribe-icon-photo{background-image:url(../images/events-bar/icon-photo.png);-webkit-background-size:15px 14px;background-size:15px 14px}.tribe-bar-views-list span.tribe-icon-map,.tribe-select2-results-views span.tribe-icon-map{background-image:url(../images/events-bar/icon-map.png);background-position:2px 50%;-webkit-background-size:12px 16px;background-size:12px 16px}.tribe-events-week.tribe-theme-parent-twentyfourteen #masthead,.tribe-events-week.tribe-theme-twentyfourteen #masthead{z-index:1001}.tribe-theme-parent-twentyfourteen #tribe-events-pg-template #tribe-events,.tribe-theme-twentyfourteen #tribe-events-pg-template #tribe-events{padding:20px}.tribe-theme-parent-twentyfourteen #tribe-bar-views .tribe-bar-views-list,.tribe-theme-twentyfourteen #tribe-bar-views .tribe-bar-views-list{z-index:3}@media screen and (min-width:1000px){.tribe-theme-parent-twentyfourteen #tribe-events-pg-template,.tribe-theme-twentyfourteen #tribe-events-pg-template{padding-left:220px}}#tribe-events-content .tribe-updated{display:inherit}@media screen and (max-width:400px){.list-view.events-archive .site-content .type-page .entry-content{display:initial}}.tribe-theme-twentyfifteen.events-single.tribe-events-page-template #tribe-events-pg-template{padding-top:8.3333%}.tribe-theme-twentyfifteen.events-single.tribe-events-page-template #tribe-events-content{padding:8.3333% 10%}.tribe-theme-twentyfifteen.single-tribe_events #tribe-events .tribe_events{box-shadow:none;margin-left:0;margin-right:0;padding-top:0}.tribe-theme-twentyfifteen.single-tribe_events #tribe-events .tribe-events-schedule h2{display:inline-block;font-size:1.2em;margin:0}.tribe-theme-twentyfifteen .type-tribe_events a.more-link,.tribe-theme-twentyfifteen.events-archive .entry-footer,.tribe-theme-twentyfifteen.single-tribe_events .entry-footer{display:none}.tribe-theme-twentyfifteen.single-tribe_events.page-template-page-php .tribe-events-single{box-shadow:none;margin-bottom:0!important;margin-left:0;margin-right:0}.tribe-theme-twentyfifteen.tribe-events-week .tribe-events-grid .hentry{margin-left:0;margin-right:0}.tribe-theme-twentyfifteen .tribe-events-list-widget .type-tribe_events{border-top:1px solid rgba(51,51,51,.1);box-shadow:none;margin-left:0;margin-right:0}.tribe-theme-twentyfifteen .tribe-events-list-widget .entry-title{font-size:2.2rem;font-size:22px;line-height:1.4545}.tribe-theme-twentyfifteen.tribe-events-page-template #tribe-events-content-wrapper{padding:3.333%}.tribe-theme-twentyfifteen .tribe-events-list .type-tribe_events,.tribe-theme-twentyfifteen .tribe-events-list .type-tribe_events.tribe-events-first{padding:8.333% 10%}.tribe-theme-twentyfifteen .tribe-events-day-time-slot .type-tribe_events{margin-left:0}.tribe-theme-twentyfifteen .datepicker.dropdown-menu{max-width:340px}.tribe-theme-twentyfifteen .datepicker.dropdown-menu table,.tribe-theme-twentyfifteen .datepicker.dropdown-menu table.table-condensed{border-left-width:0;border-top-width:0}.tribe-theme-twentyfifteen .tribe-events-calendar td a,.tribe-theme-twentyfifteen .tribe-events-nav-next a,.tribe-theme-twentyfifteen .tribe-events-nav-previous a,.tribe-theme-twentyfifteen ul.tribe-bar-views-list li a{border-bottom:none}.tribe-theme-twentyfifteen .tribe-events-list .time-details,.tribe-theme-twentyfifteen .tribe-events-list .tribe-events-venue-details{line-height:1.6}body.tribe-theme-twentysixteen table.tribe-events-calendar{table-layout:auto}body.tribe-theme-twentysixteen .tribe-events-single-section-title:first-child{margin-top:20px}body.tribe-theme-twentysixteen .tribe-events-content.entry-summary{font-size:inherit;margin-bottom:0;margin-top:5px}body.tribe-theme-twentysixteen.events-archive .entry-content,body.tribe-theme-twentysixteen.events-archive .entry-header{width:auto}body.tribe-theme-twentysixteen .datepicker table{border:0;width:auto}@media (min--moz-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2/1),(-webkit-min-device-pixel-ratio:2),(min-device-pixel-ratio:2){.tribe-events-tooltip .tribe-events-arrow{background-image:url(../images/tribe-tooltips@2x.png)}#tribe-bar-filters .tribe-bar-button-search .tribe-bar-btn-small{background-image:url(../images/events-bar/icon-search@2x.png)}#tribe-events-bar .tribe-bar-button-settings span{background-image:url(../images/events-bar/icon-gear@2x.png)}#tribe-events-bar [class^=tribe-bar-button-]:after{background-image:url(../vendor/select2/select2x2.png)}.tribe-bar-view-list a[class^=tribe-icon-],.tribe-bar-views-list span[class^=tribe-icon-],.tribe-select2-results-views span[class^=tribe-icon-]{background-image:url(../images/events-bar/icon-month@2x.png)}.tribe-bar-view-list span[class^=tribe-icon-],.tribe-bar-views-list span.tribe-icon-list,.tribe-select2-results-views span.tribe-icon-list{background-image:url(../images/events-bar/icon-list@2x.png)}.tribe-bar-view-list a.tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-select2-results-views span.tribe-icon-month{background-image:url(../images/events-bar/icon-month@2x.png)}.tribe-bar-views-list span.tribe-icon-week,.tribe-select2-results-views span.tribe-icon-week{background-image:url(../images/events-bar/icon-week@2x.png)}.tribe-bar-views-list span.tribe-icon-day,.tribe-select2-results-views span.tribe-icon-day{background-image:url(../images/events-bar/icon-day@2x.png)}.tribe-bar-views-list span.tribe-icon-photo,.tribe-select2-results-views span.tribe-icon-photo{background-image:url(../images/events-bar/icon-photo@2x.png)}.tribe-bar-views-list span.tribe-icon-map,.tribe-select2-results-views span.tribe-icon-map{background-image:url(../images/events-bar/icon-map@2x.png)}}
|
the-events-calendar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: The Events Calendar
|
4 |
Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
-
Version: 4.0.
|
6 |
Author: Modern Tribe, Inc.
|
7 |
Author URI: http://m.tri.be/1x
|
8 |
Text Domain: the-events-calendar
|
2 |
/*
|
3 |
Plugin Name: The Events Calendar
|
4 |
Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
+
Version: 4.0.2
|
6 |
Author: Modern Tribe, Inc.
|
7 |
Author URI: http://m.tri.be/1x
|
8 |
Text Domain: the-events-calendar
|
vendor/tickets/common/src/Tribe/Admin/Notice/Archive_Slug_Conflict.php
CHANGED
@@ -51,20 +51,18 @@ class Tribe__Admin__Notice__Archive_Slug_Conflict {
|
|
51 |
* Echoes the admin notice to the page
|
52 |
*/
|
53 |
public function notice() {
|
54 |
-
|
55 |
// What's happening?
|
56 |
$page_title = apply_filters( 'the_title', $this->page->post_title );
|
57 |
$line_1 = __( sprintf( 'The page "%1$s" uses the "/%2$s" slug: the Events Calendar plugin will show its calendar in place of the page.', $page_title, $this->archive_slug ), 'tribe-common' );
|
58 |
|
59 |
// What the user can do
|
60 |
$page_edit_link = get_edit_post_link( $this->page->ID );
|
61 |
-
// $can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
62 |
$can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
63 |
$page_edit_link_string = current_user_can( 'edit_pages' ) ? $can_edit_page_link : __( 'Ask the site administrator to edit the page slug', 'tribe-common' );
|
64 |
|
65 |
$settings_cap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
|
66 |
$admin_slug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
|
67 |
-
$setting_page_link = apply_filters( 'tribe_settings_url', admin_url( 'edit.php?page=' . $admin_slug . '#tribe-field-
|
68 |
$can_edit_settings_link = sprintf( __( '<a href="%s">edit Events settings</a>.', 'tribe-common' ), $setting_page_link );
|
69 |
$events_settings_link_string = current_user_can( $settings_cap ) ? $can_edit_settings_link : __( ' ask the site administrator set a different Events URL slug.', 'tribe-common' );
|
70 |
|
51 |
* Echoes the admin notice to the page
|
52 |
*/
|
53 |
public function notice() {
|
|
|
54 |
// What's happening?
|
55 |
$page_title = apply_filters( 'the_title', $this->page->post_title );
|
56 |
$line_1 = __( sprintf( 'The page "%1$s" uses the "/%2$s" slug: the Events Calendar plugin will show its calendar in place of the page.', $page_title, $this->archive_slug ), 'tribe-common' );
|
57 |
|
58 |
// What the user can do
|
59 |
$page_edit_link = get_edit_post_link( $this->page->ID );
|
|
|
60 |
$can_edit_page_link = sprintf( __( '<a href="%s">Edit the page slug</a>', 'tribe-common' ), $page_edit_link );
|
61 |
$page_edit_link_string = current_user_can( 'edit_pages' ) ? $can_edit_page_link : __( 'Ask the site administrator to edit the page slug', 'tribe-common' );
|
62 |
|
63 |
$settings_cap = apply_filters( 'tribe_settings_req_cap', 'manage_options' );
|
64 |
$admin_slug = apply_filters( 'tribe_settings_admin_slug', 'tribe-common' );
|
65 |
+
$setting_page_link = apply_filters( 'tribe_settings_url', admin_url( 'edit.php?page=' . $admin_slug . '#tribe-field-eventsSlug' ) );
|
66 |
$can_edit_settings_link = sprintf( __( '<a href="%s">edit Events settings</a>.', 'tribe-common' ), $setting_page_link );
|
67 |
$events_settings_link_string = current_user_can( $settings_cap ) ? $can_edit_settings_link : __( ' ask the site administrator set a different Events URL slug.', 'tribe-common' );
|
68 |
|
vendor/tickets/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.0.
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
+
const VERSION = '4.0.2';
|
21 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
22 |
|
23 |
protected $plugin_context;
|
vendor/tickets/common/tribe-common.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
-
Version:
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
1 |
<?php
|
2 |
/*
|
3 |
Description: An event settings framework for managing shared options
|
4 |
+
Version: 4.0.2
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/1x
|
7 |
Text Domain: tribe-common
|
vendor/tickets/event-tickets.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Description: Event Tickets allows you to sell tickets to events
|
4 |
-
Version: 4.0.
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/28
|
7 |
License: GPLv2 or later
|
1 |
<?php
|
2 |
/*
|
3 |
Description: Event Tickets allows you to sell tickets to events
|
4 |
+
Version: 4.0.2
|
5 |
Author: Modern Tribe, Inc.
|
6 |
Author URI: http://m.tri.be/28
|
7 |
License: GPLv2 or later
|
vendor/tickets/readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, borkweb, zbtirrell, barry.hughes, bordoni, brianjesse
|
|
4 |
Tags: events, add-on, ticket sales, tickets, calendar, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, The Events Calendar, Events Calendar PRO, ticket integration, event ticketing, RSVP, Event Tickets, Event Tickets Plus
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.4
|
7 |
-
Stable tag: 4.0.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -60,7 +60,7 @@ Looking for something else?
|
|
60 |
|
61 |
= SUBMITTING PATCHES =
|
62 |
|
63 |
-
If you’ve identified a bug and want to submit a patch, we’d welcome it at our <a href="https://github.com/moderntribe/
|
64 |
|
65 |
== Installation ==
|
66 |
|
@@ -179,6 +179,11 @@ Our Premium Plugins:
|
|
179 |
|
180 |
== Changelog ==
|
181 |
|
|
|
|
|
|
|
|
|
|
|
182 |
= [4.0.1] 2015-12-10 =
|
183 |
|
184 |
* Tweak - Removed The Events Calendar-specific fields from the Attendees Report as defaults. The Events Calendar will now hook into the report and inject event-specific fields
|
4 |
Tags: events, add-on, ticket sales, tickets, calendar, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, The Events Calendar, Events Calendar PRO, ticket integration, event ticketing, RSVP, Event Tickets, Event Tickets Plus
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.4
|
7 |
+
Stable tag: 4.0.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
60 |
|
61 |
= SUBMITTING PATCHES =
|
62 |
|
63 |
+
If you’ve identified a bug and want to submit a patch, we’d welcome it at our <a href="https://github.com/moderntribe/event-tickets" target="_blank">GitHub page for Event Tickets.</a> Simply cue up your proposed patch as a pull request, and we’ll review as part of our release cycle and merge into the codebase if appropriate from there. (If a pull request is rejected, we’ll do our best to tell you why). Users whose pull requests are accepted will receive credit in the plugin’s changelog. For more information, check out the readme at our GitHub page. Happy coding!
|
64 |
|
65 |
== Installation ==
|
66 |
|
179 |
|
180 |
== Changelog ==
|
181 |
|
182 |
+
= [4.0.2] 2015-12-16 =
|
183 |
+
|
184 |
+
* Tweak - Removing dates from ticket emails when those tickets are attached to non The Events Calendar event posts
|
185 |
+
* Fix - Fixed a settings page URL (Thanks for the tip Kristy!)
|
186 |
+
|
187 |
= [4.0.1] 2015-12-10 =
|
188 |
|
189 |
* Tweak - Removed The Events Calendar-specific fields from the Attendees Report as defaults. The Events Calendar will now hook into the report and inject event-specific fields
|
vendor/tickets/src/Tribe/Main.php
CHANGED
@@ -9,7 +9,7 @@ class Tribe__Tickets__Main {
|
|
9 |
/**
|
10 |
* Current version of this plugin
|
11 |
*/
|
12 |
-
const VERSION = '4.0.
|
13 |
|
14 |
/**
|
15 |
* Min required The Events Calendar version
|
9 |
/**
|
10 |
* Current version of this plugin
|
11 |
*/
|
12 |
+
const VERSION = '4.0.2';
|
13 |
|
14 |
/**
|
15 |
* Min required The Events Calendar version
|
vendor/tickets/src/Tribe/Ticket_Object.php
CHANGED
@@ -95,6 +95,14 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
95 |
*/
|
96 |
protected $qty_pending = 0;
|
97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
/**
|
99 |
* Holds whether or not stock is being managed
|
100 |
*
|
@@ -320,6 +328,9 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
320 |
case 'qty_sold':
|
321 |
return $this->qty_sold();
|
322 |
break;
|
|
|
|
|
|
|
323 |
}
|
324 |
|
325 |
return null;
|
@@ -342,9 +353,33 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
342 |
case 'qty_sold':
|
343 |
return $this->qty_sold( $value );
|
344 |
break;
|
|
|
|
|
|
|
345 |
}
|
346 |
|
347 |
return null;
|
348 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
349 |
}
|
|
|
350 |
}
|
95 |
*/
|
96 |
protected $qty_pending = 0;
|
97 |
|
98 |
+
/**
|
99 |
+
* Number of tickets for which an order has been cancelled.
|
100 |
+
* Use $this->qty_cancelled( value ) to set manage and get the value
|
101 |
+
*
|
102 |
+
* @var int
|
103 |
+
*/
|
104 |
+
protected $qty_cancelled = 0;
|
105 |
+
|
106 |
/**
|
107 |
* Holds whether or not stock is being managed
|
108 |
*
|
328 |
case 'qty_sold':
|
329 |
return $this->qty_sold();
|
330 |
break;
|
331 |
+
case 'qty_cancelled':
|
332 |
+
return $this->qty_cancelled();
|
333 |
+
break;
|
334 |
}
|
335 |
|
336 |
return null;
|
353 |
case 'qty_sold':
|
354 |
return $this->qty_sold( $value );
|
355 |
break;
|
356 |
+
case 'qty_cancelled':
|
357 |
+
return $this->qty_cancelled( $value );
|
358 |
+
break;
|
359 |
}
|
360 |
|
361 |
return null;
|
362 |
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Method to manage the protected `qty_cancelled` propriety of the Object
|
366 |
+
* Prevents setting `qty_cancelled` lower then zero
|
367 |
+
*
|
368 |
+
* @param int|null $value This will overwrite the old value
|
369 |
+
* @return int
|
370 |
+
*/
|
371 |
+
public function qty_cancelled( $value = null ) {
|
372 |
+
// If the Value was passed as numeric value overwrite
|
373 |
+
if ( is_numeric( $value ) ) {
|
374 |
+
$this->qty_cancelled = $value;
|
375 |
+
}
|
376 |
+
|
377 |
+
// Prevents qty_cancelled from going negative
|
378 |
+
$this->qty_cancelled = max( (int) $this->qty_cancelled, 0 );
|
379 |
+
|
380 |
+
// return the new Qty Cancelled
|
381 |
+
return $this->qty_cancelled;
|
382 |
+
}
|
383 |
}
|
384 |
+
|
385 |
}
|
vendor/tickets/src/admin-views/list.php
CHANGED
@@ -93,11 +93,23 @@
|
|
93 |
<?php
|
94 |
$stock = $ticket->stock();
|
95 |
$sold = $ticket->qty_sold();
|
|
|
96 |
|
97 |
if ( empty( $stock ) && $stock !== 0 ) : ?>
|
98 |
<?php echo sprintf( esc_html__( 'Sold %d', 'event-tickets' ), esc_html( $sold ) ); ?>
|
99 |
<?php else : ?>
|
100 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
<?php endif; ?>
|
102 |
</td>
|
103 |
<td width="40%" valign="top">
|
93 |
<?php
|
94 |
$stock = $ticket->stock();
|
95 |
$sold = $ticket->qty_sold();
|
96 |
+
$cancelled = $ticket->qty_cancelled();
|
97 |
|
98 |
if ( empty( $stock ) && $stock !== 0 ) : ?>
|
99 |
<?php echo sprintf( esc_html__( 'Sold %d', 'event-tickets' ), esc_html( $sold ) ); ?>
|
100 |
<?php else : ?>
|
101 |
+
<?php
|
102 |
+
$cancelled_entry = empty( $cancelled ) ? '' : esc_html(sprintf(
|
103 |
+
__( ' (%1$d %2$s)' ), $cancelled,
|
104 |
+
_n( 'unit cancelled', 'units cancelled', $cancelled, 'event-tickets' )
|
105 |
+
));
|
106 |
+
$line = sprintf(
|
107 |
+
esc_html__( 'Sold %1$d of %2$d%3$s', 'event-tickets' ), esc_html( $sold ),
|
108 |
+
esc_html( $sold + $stock ), $cancelled_entry
|
109 |
+
);
|
110 |
+
|
111 |
+
echo $line;
|
112 |
+
?>
|
113 |
<?php endif; ?>
|
114 |
</td>
|
115 |
<td width="40%" valign="top">
|
vendor/tickets/src/template-tags/tickets.php
CHANGED
@@ -205,7 +205,7 @@ if ( ! function_exists( 'tribe_tickets_get_ticket_stock_message' ) ) {
|
|
205 |
|
206 |
$pending_message = '';
|
207 |
if ( $pending > 0 ) {
|
208 |
-
$pending_message = sprintf( _n( '(%d awaiting review)', '(%d awaiting review)', 'event-tickets'
|
209 |
}
|
210 |
|
211 |
if ( ! $stock ) {
|
205 |
|
206 |
$pending_message = '';
|
207 |
if ( $pending > 0 ) {
|
208 |
+
$pending_message = sprintf( _n( '(%d awaiting review)', '(%d awaiting review)', $pending, 'event-tickets' ), (int) $pending );
|
209 |
}
|
210 |
|
211 |
if ( ! $stock ) {
|
vendor/tickets/src/views/tickets/email.php
CHANGED
@@ -243,6 +243,7 @@
|
|
243 |
}
|
244 |
|
245 |
$venue_label = '';
|
|
|
246 |
|
247 |
if ( function_exists( 'tribe_get_venue_id' ) ) {
|
248 |
$venue_id = tribe_get_venue_id( $event->ID );
|
@@ -262,7 +263,17 @@
|
|
262 |
}
|
263 |
}
|
264 |
|
265 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
266 |
$start_date = tribe_get_start_date( $event, true );
|
267 |
}
|
268 |
|
243 |
}
|
244 |
|
245 |
$venue_label = '';
|
246 |
+
$venue_name = null;
|
247 |
|
248 |
if ( function_exists( 'tribe_get_venue_id' ) ) {
|
249 |
$venue_id = tribe_get_venue_id( $event->ID );
|
263 |
}
|
264 |
}
|
265 |
|
266 |
+
$start_date = null;
|
267 |
+
|
268 |
+
/**
|
269 |
+
* Filters whether or not the event start date should be included in the ticket email
|
270 |
+
*
|
271 |
+
* @var boolean Include start date? Defaults to false
|
272 |
+
* @var int Event ID
|
273 |
+
*/
|
274 |
+
$include_start_date = apply_filters( 'event_tickets_email_include_start_date', false, $event->ID );
|
275 |
+
|
276 |
+
if ( $include_start_date && function_exists( 'tribe_get_start_date' ) ) {
|
277 |
$start_date = tribe_get_start_date( $event, true );
|
278 |
}
|
279 |
|