The Events Calendar - Version 3.0.2

Version Description

  • Fixed bug with queries that included more than one post type. This should resolve issues with "Link to Existing Content" in the WordPress editor, attaching media to posts from the Media Library, and relationship fields in the Advanced Custom Fields plugin (thanks to users KARKS88 and ANDYWILMOT for catching this!)
  • Fixed 404 in page title on month view when no events are in the month, and other 404-related tweaks (thanks to CYNTHIA, JOHN and ELLAEARTH for catching these)
  • CSS files in the tribe-events directory of your theme are now loaded in addition to TEC css files, instead of replacing them
  • Removed Select2 dependency in the Tribe Bar
  • Fixed various issues with the Events List widget (thanks to DUVALDEMOCRATS and ZAVASTORONTO for the heads up)
  • Tag permalinks are no longer malformed in tag cloud widget and single event pages (thanks to MARC for catching this)
  • Addressed some previously non-translatable strings in the Tribe Bar
  • Long event costs no longer overflow the designed box in list view
  • Various minor bug fixes
Download this release

Release Info

Developer jazbek
Plugin Icon The Events Calendar
Version 3.0.2
Comparing to
See all releases

Code changes from version 3.0.1 to 3.0.2

admin-views/tickets/attendees.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- $event_id = isset( $_GET["event_id"] ) ? $_GET["event_id"] : 0;
3
  $event = get_post( $event_id );
4
  $tickets = TribeEventsTickets::get_event_tickets( $event_id );
5
  ?>
@@ -61,9 +61,9 @@ $tickets = TribeEventsTickets::get_event_tickets( $event_id );
61
  $sold = ! empty ( $ticket->qty_sold ) ? $ticket->qty_sold : 0;
62
 
63
  if ( empty( $stock ) && $stock !== 0 ) {
64
- echo sprintf( __( "Sold %d", 'tribe-events-calendar' ), $sold );
65
  } else {
66
- echo sprintf( __( "Sold %d of %d", 'tribe-events-calendar' ), $sold, $sold + $stock );
67
  }
68
 
69
  $total_sold += $sold;
@@ -93,8 +93,8 @@ $tickets = TribeEventsTickets::get_event_tickets( $event_id );
93
  </div>
94
 
95
  <form id="topics-filter" method="get">
96
- <input type="hidden" name="page" value="<?php echo $_GET['page'] ?>" />
97
- <input type="hidden" name="event_id" id="event_id" value="<?php echo $_GET['event_id'] ?>" />
98
  <input type="hidden" name="post_type" value="<?php echo TribeEvents::POSTTYPE; ?>" />
99
  <?php
100
  $this->attendees_table->prepare_items();
1
  <?php
2
+ $event_id = isset( $_GET["event_id"] ) ? intval( $_GET["event_id"] ) : 0;
3
  $event = get_post( $event_id );
4
  $tickets = TribeEventsTickets::get_event_tickets( $event_id );
5
  ?>
61
  $sold = ! empty ( $ticket->qty_sold ) ? $ticket->qty_sold : 0;
62
 
63
  if ( empty( $stock ) && $stock !== 0 ) {
64
+ echo sprintf( __( "Sold %d", 'tribe-events-calendar' ), esc_html( $sold ) );
65
  } else {
66
+ echo sprintf( __( "Sold %d of %d", 'tribe-events-calendar' ), esc_html( $sold ), esc_html( $sold + $stock ) );
67
  }
68
 
69
  $total_sold += $sold;
93
  </div>
94
 
95
  <form id="topics-filter" method="get">
96
+ <input type="hidden" name="page" value="<?php echo esc_attr( $_GET['page'] ); ?>" />
97
+ <input type="hidden" name="event_id" id="event_id" value="<?php echo $event_id; ?>" />
98
  <input type="hidden" name="post_type" value="<?php echo TribeEvents::POSTTYPE; ?>" />
99
  <?php
100
  $this->attendees_table->prepare_items();
lib/template-classes/month.php CHANGED
@@ -55,6 +55,32 @@ if( !class_exists('Tribe_Events_Month_Template')){
55
  parent::__construct();
56
  }
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  /**
59
  * Set the notices used on month view
60
  *
55
  parent::__construct();
56
  }
57
 
58
+ /**
59
+ * Add any special hooks for this view
60
+ *
61
+ * @return void
62
+ * @author Jessica Yazbek
63
+ * @since 3.0.2
64
+ **/
65
+ protected function hooks() {
66
+ parent::hooks();
67
+
68
+ // Since we set is_post_type_archive to true on month view, this prevents 'Events' from being added to the page title
69
+ add_filter('post_type_archive_title', '__return_false', 10);
70
+ }
71
+
72
+ /**
73
+ * Unhook all the hooks set up on this view
74
+ *
75
+ * @return void
76
+ * @author
77
+ **/
78
+ protected function unhook() {
79
+ parent::unhook();
80
+ remove_filter('post_type_archive_title', '__return_false', 10);
81
+ }
82
+
83
+
84
  /**
85
  * Set the notices used on month view
86
  *
lib/the-events-calendar.class.php CHANGED
@@ -22,7 +22,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
22
  const VENUE_POST_TYPE = 'tribe_venue';
23
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
24
  const PLUGIN_DOMAIN = 'tribe-events-calendar';
25
- const VERSION = '3.0.1';
26
  const FEED_URL = 'http://tri.be/category/products/feed/';
27
  const INFO_API_URL = 'http://wpapi.org/api/plugin/the-events-calendar.php';
28
  const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
@@ -2536,11 +2536,19 @@ if ( !class_exists( 'TribeEvents' ) ) {
2536
  * Returns the full address of an event along with HTML markup. It
2537
  * loads the full-address template to generate the HTML
2538
  */
2539
- public function fullAddress( $postId=null, $includeVenueName=false ) {
 
 
 
 
 
2540
  ob_start();
2541
  tribe_get_template_part( 'modules/address' );
2542
  $address = ob_get_contents();
2543
  ob_end_clean();
 
 
 
2544
  return $address;
2545
  }
2546
 
@@ -4036,7 +4044,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
4036
  public function tag_link($termlink, $term, $taxonomy) {
4037
  global $post;
4038
  if (is_object($post) && $post->post_type == self::POSTTYPE && $taxonomy == 'post_tag') {
4039
- $termlink = esc_url(trailingslashit(tribe_get_events_link().'tag/'.$term->name));
4040
  }
4041
  return $termlink;
4042
  }
@@ -4078,8 +4086,9 @@ if ( !class_exists( 'TribeEvents' ) ) {
4078
 
4079
  if ( tribe_get_option( 'tribeDisableTribeBar', false ) == false ) {
4080
  $filters['tribe-bar-search'] = array( 'name' => 'tribe-bar-search',
4081
- 'caption' => 'Search',
4082
- 'html' => '<input type="text" name="tribe-bar-search" id="tribe-bar-search" value="' . $value . '" placeholder="Search">' );
 
4083
 
4084
  }
4085
  return $filters;
@@ -4111,7 +4120,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
4111
 
4112
  $filters['tribe-bar-date'] = array( 'name' => 'tribe-bar-date',
4113
  'caption' => $caption,
4114
- 'html' => '<input type="text" name="tribe-bar-date" style="position: relative; z-index:10000" id="tribe-bar-date" value="' . esc_attr( $value ) . '" placeholder="Date">
4115
  <input type="hidden" name="tribe-bar-date-day" id="tribe-bar-date-day" class="tribe-no-param" value="">' );
4116
 
4117
  return $filters;
22
  const VENUE_POST_TYPE = 'tribe_venue';
23
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
24
  const PLUGIN_DOMAIN = 'tribe-events-calendar';
25
+ const VERSION = '3.0.2';
26
  const FEED_URL = 'http://tri.be/category/products/feed/';
27
  const INFO_API_URL = 'http://wpapi.org/api/plugin/the-events-calendar.php';
28
  const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
2536
  * Returns the full address of an event along with HTML markup. It
2537
  * loads the full-address template to generate the HTML
2538
  */
2539
+ public function fullAddress( $post_id=null, $includeVenueName=false ) {
2540
+ global $post;
2541
+ if( !is_null( $post_id ) ){
2542
+ $tmp_post = $post;
2543
+ $post = get_post( $post_id );
2544
+ }
2545
  ob_start();
2546
  tribe_get_template_part( 'modules/address' );
2547
  $address = ob_get_contents();
2548
  ob_end_clean();
2549
+ if( !empty( $tmp_post ) ){
2550
+ $post = $tmp_post;
2551
+ }
2552
  return $address;
2553
  }
2554
 
4044
  public function tag_link($termlink, $term, $taxonomy) {
4045
  global $post;
4046
  if (is_object($post) && $post->post_type == self::POSTTYPE && $taxonomy == 'post_tag') {
4047
+ $termlink = esc_url(trailingslashit(tribe_get_events_link().'tag/'.$term->slug));
4048
  }
4049
  return $termlink;
4050
  }
4086
 
4087
  if ( tribe_get_option( 'tribeDisableTribeBar', false ) == false ) {
4088
  $filters['tribe-bar-search'] = array( 'name' => 'tribe-bar-search',
4089
+ 'caption' => __('Search', 'tribe-events-calendar'),
4090
+
4091
+ 'html' => '<input type="text" name="tribe-bar-search" id="tribe-bar-search" value="' . $value . '" placeholder="'. __('Search', 'tribe-events-calendar') .'">' );
4092
 
4093
  }
4094
  return $filters;
4120
 
4121
  $filters['tribe-bar-date'] = array( 'name' => 'tribe-bar-date',
4122
  'caption' => $caption,
4123
+ 'html' => '<input type="text" name="tribe-bar-date" style="position: relative; z-index:10000" id="tribe-bar-date" value="' . esc_attr( $value ) . '" placeholder="'. __('Date', 'tribe-events-calendar') .'">
4124
  <input type="hidden" name="tribe-bar-date-day" id="tribe-bar-date-day" class="tribe-no-param" value="">' );
4125
 
4126
  return $filters;
lib/tickets/tribe-tickets.php CHANGED
@@ -586,14 +586,14 @@ if ( ! class_exists( 'TribeEventsTickets' ) ) {
586
  $template .= '.php';
587
  }
588
 
589
- if ( $theme_file = locate_template( array( 'events/' . $template ) ) ) {
590
  $file = $theme_file;
591
  } else {
592
  $file = $this->pluginPath . 'views/' . $template;
593
  }
 
594
  return apply_filters( 'tribe_events_tickets_template_' . $template, $file );
595
  }
596
-
597
  // end Helpers
598
  }
599
  }
586
  $template .= '.php';
587
  }
588
 
589
+ if ( $theme_file = locate_template( array( 'tribe-events/' . $template ) ) ) {
590
  $file = $theme_file;
591
  } else {
592
  $file = $this->pluginPath . 'views/' . $template;
593
  }
594
+
595
  return apply_filters( 'tribe_events_tickets_template_' . $template, $file );
596
  }
 
597
  // end Helpers
598
  }
599
  }
lib/tribe-event-query.class.php CHANGED
@@ -35,6 +35,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
35
 
36
  // if tribe event query add filters
37
  add_filter( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ), 0 );
 
38
 
39
  if ( is_admin() ) {
40
  require_once 'tribe-recurring-event-cleanup.php';
@@ -44,6 +45,21 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
44
  }
45
  }
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  /**
48
  * Is hooked by init() filter to parse the WP_Query arguments for main and alt queries.
49
  *
@@ -60,7 +76,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
60
  $query->tribe_is_past = !empty( $query->query_vars['tribe_is_past'] ) ? $query->query_vars['tribe_is_past'] : false ;
61
 
62
  // check if any possiblity of this being an event query
63
- $query->tribe_is_event = ( in_array( TribeEvents::POSTTYPE, $types ) )
64
  ? true // it was an event query
65
  : false;
66
 
35
 
36
  // if tribe event query add filters
37
  add_filter( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ), 0 );
38
+ add_filter( 'parse_query', array( __CLASS__, 'parse_query') );
39
 
40
  if ( is_admin() ) {
41
  require_once 'tribe-recurring-event-cleanup.php';
45
  }
46
  }
47
 
48
+ /**
49
+ * Set any query flags
50
+ *
51
+ * @return $query WP_Query
52
+ * @author Jessica Yazbek
53
+ * @since 3.0.3
54
+ **/
55
+ public function parse_query( $query ) {
56
+ if ($query->get('eventDisplay') == 'month') {
57
+ // never allow 404 on month view
58
+ $query->is_post_type_archive = true;
59
+ }
60
+ return $query;
61
+ }
62
+
63
  /**
64
  * Is hooked by init() filter to parse the WP_Query arguments for main and alt queries.
65
  *
76
  $query->tribe_is_past = !empty( $query->query_vars['tribe_is_past'] ) ? $query->query_vars['tribe_is_past'] : false ;
77
 
78
  // check if any possiblity of this being an event query
79
+ $query->tribe_is_event = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) < 2 )
80
  ? true // it was an event query
81
  : false;
82
 
lib/tribe-template-factory.class.php CHANGED
@@ -550,12 +550,13 @@ if( !class_exists('Tribe_Template_Factory') ) {
550
  break;
551
  }
552
 
553
- // Is there a core override file in the theme?
554
  $styleUrl = trailingslashit( $tec->pluginUrl ) . 'resources/' . $event_file_option;
555
- $styleUrl = TribeEventsTemplates::locate_stylesheet('tribe-events/'.$event_file, $styleUrl);
556
  $styleUrl = self::getMinFile( $styleUrl, true );
557
  $styleUrl = apply_filters( 'tribe_events_stylesheet_url', $styleUrl );
558
 
 
 
 
559
  // Load up stylesheet from theme or plugin
560
  if( $styleUrl && $stylesheet_option == 'tribe' ) {
561
  $full_path = self::getMinFile( trailingslashit( $tec->pluginUrl ) . 'resources/tribe-events-full.css', true );
@@ -564,6 +565,9 @@ if( !class_exists('Tribe_Template_Factory') ) {
564
  } else {
565
  wp_enqueue_style( TribeEvents::POSTTYPE . '-calendar-style', $styleUrl );
566
  }
 
 
 
567
  break;
568
  default :
569
  do_action($prefix . '-' . $name);
550
  break;
551
  }
552
 
 
553
  $styleUrl = trailingslashit( $tec->pluginUrl ) . 'resources/' . $event_file_option;
 
554
  $styleUrl = self::getMinFile( $styleUrl, true );
555
  $styleUrl = apply_filters( 'tribe_events_stylesheet_url', $styleUrl );
556
 
557
+ // Is there a core override file in the theme?
558
+ $styleOverrideUrl = TribeEventsTemplates::locate_stylesheet('tribe-events/'.$event_file, $styleUrl);
559
+
560
  // Load up stylesheet from theme or plugin
561
  if( $styleUrl && $stylesheet_option == 'tribe' ) {
562
  $full_path = self::getMinFile( trailingslashit( $tec->pluginUrl ) . 'resources/tribe-events-full.css', true );
565
  } else {
566
  wp_enqueue_style( TribeEvents::POSTTYPE . '-calendar-style', $styleUrl );
567
  }
568
+ if( $styleOverrideUrl ) {
569
+ wp_enqueue_style( TribeEvents::POSTTYPE . '-calendar-override-style', $styleOverrideUrl );
570
+ }
571
  break;
572
  default :
573
  do_action($prefix . '-' . $name);
lib/tribe-templates.class.php CHANGED
@@ -161,6 +161,16 @@ if (!class_exists('TribeEventsTemplates')) {
161
  return $title;
162
  }
163
 
 
 
 
 
 
 
 
 
 
 
164
  /**
165
  * This is where the magic happens where we run some ninja code that hooks the query to resolve to an events template.
166
  *
161
  return $title;
162
  }
163
 
164
+ /**
165
+ * Filter to get rid of the default page title
166
+ *
167
+ * @param string $title Title
168
+ * @return string Title
169
+ */
170
+ public function remove_default_title( $title ) {
171
+ return '';
172
+ }
173
+
174
  /**
175
  * This is where the magic happens where we run some ninja code that hooks the query to resolve to an events template.
176
  *
lib/tribe-templates.class.php.orig ADDED
@@ -0,0 +1,682 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Templating functionality for Tribe Events Calendar
4
+ */
5
+
6
+ // don't load directly
7
+ if ( !defined('ABSPATH') )
8
+ die('-1');
9
+
10
+ if (!class_exists('TribeEventsTemplates')) {
11
+
12
+ /**
13
+ * Handle views and template files.
14
+ */
15
+ class TribeEventsTemplates {
16
+
17
+ /**
18
+ * @var bool Is wp_head complete?
19
+ */
20
+ public static $wpHeadComplete = false;
21
+
22
+ /**
23
+ * @var bool Is this the main loop?
24
+ */
25
+ public static $isMainLoop = false;
26
+
27
+
28
+ /**
29
+ * Initialize the Template Yumminess!
30
+ */
31
+ public static function init() {
32
+
33
+ // choose the wordpress theme template to use
34
+ add_filter( 'template_include', array( __CLASS__, 'templateChooser') );
35
+
36
+ // include our view class
37
+ add_action( 'template_redirect', 'tribe_initialize_view' );
38
+
39
+ // make sure we enter the loop by always having some posts in $wp_query
40
+ add_action( 'template_redirect', array( __CLASS__, 'maybeSpoofQuery' ) );
41
+
42
+ // there's no template redirect on ajax, so we include the template class right before the view is included
43
+ if (defined('DOING_AJAX') && DOING_AJAX) {
44
+ add_action( 'tribe_pre_get_view', 'tribe_initialize_view' );
45
+ }
46
+
47
+ add_action( 'wp_head', array( __CLASS__, 'wpHeadFinished'), 999 );
48
+
49
+ }
50
+
51
+ /**
52
+ * Pick the correct template to include
53
+ * @param string $template Path to template
54
+ *
55
+ * @return string Path to template
56
+ */
57
+ public static function templateChooser($template) {
58
+ $events = TribeEvents::instance();
59
+ do_action('tribe_tec_template_chooser', $template);
60
+
61
+ // hijack this method right up front if it's a 404
62
+ if ( is_404() && $events->displaying == 'single-event' && apply_filters( 'tribe_events_templates_is_404', '__return_true' ) )
63
+ return get_404_template();
64
+
65
+ // no non-events need apply
66
+ if ( ! in_array( get_query_var( 'post_type' ), array( TribeEvents::POSTTYPE, TribeEvents::VENUE_POST_TYPE, TribeEvents::ORGANIZER_POST_TYPE ) ) && ! is_tax( TribeEvents::TAXONOMY ) ) {
67
+ return $template;
68
+ }
69
+
70
+ if( tribe_get_option('tribeEventsTemplate', 'default') == '' ) {
71
+ return self::getTemplateHierarchy('default-template');
72
+ } else {
73
+
74
+ // add_filter( 'wp_title', array(__CLASS__, 'remove_default_title'), 1);
75
+
76
+ if ( ! is_single() || ! post_password_required()) {
77
+ add_action( 'loop_start', array(__CLASS__, 'setup_ecp_template' ) );
78
+ }
79
+
80
+ $template = locate_template( tribe_get_option('tribeEventsTemplate', 'default') == 'default' ? 'page.php' : tribe_get_option('tribeEventsTemplate', 'default') );
81
+ if ($template == '') $template = get_index_template();
82
+
83
+ // remove singular body class if sidebar-page.php
84
+ if( $template == get_stylesheet_directory() . '/sidebar-page.php' ) {
85
+ add_filter( 'body_class', array( __CLASS__, 'remove_singular_body_class' ) );
86
+ } else {
87
+ add_filter( 'body_class', array( __CLASS__, 'add_singular_body_class' ) );
88
+ }
89
+ return $template;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Include the class for the current view
95
+ *
96
+ * @param bool $class
97
+ * @return void
98
+ * @since 3.0
99
+ **/
100
+ public static function instantiate_template_class( $class = false ) {
101
+
102
+ if ( tribe_is_event_query() ) {
103
+ if ( ! $class ) {
104
+ $class = self::get_current_template_class();
105
+ }
106
+ if ( class_exists( $class ) ) {
107
+ new $class;
108
+ }
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Remove "singular" from available body class
114
+ * @param array $classes List of classes to filter
115
+ *
116
+ * @return mixed
117
+ */
118
+ public function remove_singular_body_class( $classes ) {
119
+ $key = array_search('singular', $classes);
120
+ if( $key ) {
121
+ unset($classes[ $key ]);
122
+ }
123
+ return $classes;
124
+ }
125
+
126
+ /**
127
+ * Add the "singular" body class
128
+ *
129
+ * @param array $classes List of classes to filter
130
+ * @return array
131
+ */
132
+ public function add_singular_body_class( $classes ) {
133
+ $classes[] = 'singular';
134
+ return $classes;
135
+ }
136
+
137
+
138
+ /**
139
+ * Determine when wp_head has been triggered.
140
+ */
141
+ public static function wpHeadFinished() {
142
+ self::$wpHeadComplete = true;
143
+ }
144
+
145
+ /**
146
+ <<<<<<< HEAD
147
+ =======
148
+ * Add event title where appropriate
149
+ *
150
+ * @param string $title
151
+ * @param string|null $sep
152
+ * @return mixed|void
153
+ */
154
+ public static function maybeAddEventTitle( $title, $sep = null, $sep_location = '' ){
155
+ $tribe_ecp = TribeEvents::instance();
156
+
157
+ $new_title = '';
158
+ switch( get_query_var('eventDisplay') ) {
159
+ case 'upcoming':
160
+ $new_title = apply_filters( 'tribe_upcoming_events_title', __("Upcoming Events", 'tribe-events-calendar') );
161
+ break;
162
+ case 'past':
163
+ $new_title = apply_filters( 'tribe_past_events_title', __("Past Events", 'tribe-events-calendar'));
164
+ break;
165
+ case 'month':
166
+ if(get_query_var('eventDate')){
167
+ $title_date = date_i18n("F Y",strtotime(get_query_var('eventDate')));
168
+ $new_title = apply_filters( 'tribe_month_grid_view_title', sprintf(__("Events for %s", 'tribe-events-calendar'), $title_date ) );
169
+ }else{
170
+ $new_title = apply_filters( 'tribe_events_this_month_title', __("Events this month", 'tribe-events-calendar') );
171
+ }
172
+ break;
173
+ case 'day':
174
+ $title_date = date_i18n("l, F jS Y",strtotime(get_query_var('eventDate')));
175
+ $new_title = apply_filters( 'tribe_events_day_view_title', sprintf(__("Events for %s", 'tribe-events-calendar'), $title_date) );
176
+ break;
177
+ default:
178
+ global $post;
179
+ if( get_query_var('post_type') == TribeEvents::POSTTYPE && is_single() && $tribe_ecp->getOption('tribeEventsTemplate') != '' ) {
180
+ $new_title = $post->post_title;
181
+ } elseif( get_query_var('post_type') == TribeEvents::VENUE_POST_TYPE && $tribe_ecp->getOption('tribeEventsTemplate') != '' ) {
182
+ $new_title = apply_filters( 'tribe_events_venue_view_title', sprintf(__("Events at %s", 'tribe-events-calendar'), $post->post_title) );
183
+ }
184
+ break;
185
+ }
186
+
187
+ // add the separator
188
+ if ($new_title != '') {
189
+ if ( 'right' == $sep_location ) {
190
+ $new_title = $new_title . " $sep ";
191
+ } else {
192
+ $new_title = " $sep " . $new_title;
193
+ }
194
+ } else {
195
+ $new_title = $title;
196
+ }
197
+
198
+ $new_title = apply_filters( 'tribe_events_add_title', $new_title, $title, $sep, $sep_location );
199
+
200
+ return $new_title;
201
+
202
+ }
203
+
204
+ /**
205
+ >>>>>>> d2e51457cee98d37d1e0626e7fd494bdbbc5e614
206
+ * Set up filter to get rid of the repeating title if the page template is not the default events template.
207
+ */
208
+ public function remove_title_from_page() {
209
+ add_filter( 'the_title', array( __CLASS__, 'remove_default_title' ), 1 );
210
+ }
211
+
212
+
213
+ /**
214
+ * Filter to get rid of the repeating title if the page template is not the default events template.
215
+ *
216
+ * @param string $title Title
217
+ * @return string Title
218
+ */
219
+ public function remove_title_filter( $title ) {
220
+ remove_filter( 'the_title', array( __CLASS__, 'remove_default_title' ), 1 );
221
+ return $title;
222
+ }
223
+
224
+ /**
225
+ * This is where the magic happens where we run some ninja code that hooks the query to resolve to an events template.
226
+ *
227
+ * @param WP_Query $query
228
+ */
229
+ public static function setup_ecp_template($query) {
230
+
231
+ do_action( 'tribe_events_filter_the_page_title' );
232
+
233
+ if( self::is_main_loop($query) && self::$wpHeadComplete) {
234
+
235
+ // on loop start, unset the global post so that template tags don't work before the_content()
236
+ add_action('the_post', array(__CLASS__, 'spoof_the_post'));
237
+
238
+ // on the_content, load our events template
239
+ add_filter('the_content', array(__CLASS__, 'load_ecp_into_page_template') );
240
+
241
+ // remove the comments template
242
+ add_filter('comments_template', array(__CLASS__, 'load_ecp_comments_page_template') );
243
+
244
+ // only do this once
245
+ remove_action( 'loop_start', array(__CLASS__, 'setup_ecp_template') );
246
+ }
247
+ }
248
+
249
+ /**
250
+ * Spoof the global post just once
251
+ *
252
+ * @return void
253
+ * @since 3.0
254
+ **/
255
+ public static function spoof_the_post() {
256
+ $GLOBALS['post'] = self::spoofed_post();
257
+ remove_action('the_post', array(__CLASS__, 'spoof_the_post'));
258
+ }
259
+
260
+
261
+ /**
262
+ * Check to see if this is operating in the main loop
263
+ *
264
+ * @param WP_Query $query
265
+ * @return bool
266
+ */
267
+ private static function is_main_loop($query) {
268
+ if (method_exists($query, 'is_main_query')) // WP 3.3+
269
+ return $query->is_main_query();
270
+
271
+ global $wp_the_query;
272
+ return $query === $wp_the_query;
273
+ }
274
+
275
+ /**
276
+ * Get the correct internal page template
277
+ *
278
+ * @return string Template path
279
+ */
280
+ public static function get_current_page_template() {
281
+
282
+ $template = '';
283
+
284
+ // list view
285
+ if ( tribe_is_list_view() ) {
286
+ $template = self::getTemplateHierarchy( 'list', array('disable_view_check' => true) );
287
+ }
288
+
289
+ // calendar view
290
+ if ( tribe_is_month() ) {
291
+ $template = self::getTemplateHierarchy( 'month', array('disable_view_check' => true) );
292
+ }
293
+
294
+ // single event view
295
+ if ( is_singular( TribeEvents::POSTTYPE ) && !tribe_is_showing_all() ) {
296
+ $template = self::getTemplateHierarchy( 'single-event', array('disable_view_check' => true) );
297
+ }
298
+
299
+ // apply filters
300
+ return apply_filters('tribe_current_events_page_template', $template);
301
+
302
+ }
303
+
304
+
305
+ /**
306
+ * Get the correct internal page template
307
+ *
308
+ * @return string Template class
309
+ */
310
+ public static function get_current_template_class() {
311
+
312
+ $class = '';
313
+
314
+ // list view
315
+ if ( tribe_is_list_view() || tribe_is_showing_all() ) {
316
+ $class = 'Tribe_Events_List_Template';
317
+ }
318
+
319
+ // calendar view
320
+ else if ( tribe_is_month() ) {
321
+ $class = 'Tribe_Events_Month_Template';
322
+ }
323
+
324
+ // single event view
325
+ else if ( is_singular( TribeEvents::POSTTYPE ) ) {
326
+ $class = 'Tribe_Events_Single_Event_Template';
327
+ }
328
+
329
+ // apply filters
330
+ return apply_filters('tribe_current_events_template_class', $class);
331
+
332
+ }
333
+
334
+
335
+ /**
336
+ * Loads the contents into the page template
337
+ *
338
+ * @return string Page content
339
+ */
340
+ public static function load_ecp_into_page_template() {
341
+ // only run once!!!
342
+ remove_filter('the_content', array(__CLASS__, 'load_ecp_into_page_template') );
343
+
344
+ self::restoreQuery();
345
+
346
+ ob_start();
347
+
348
+ echo tribe_events_before_html();
349
+
350
+ tribe_get_view();
351
+
352
+ echo tribe_events_after_html();
353
+
354
+ $contents = ob_get_contents();
355
+
356
+ ob_end_clean();
357
+
358
+ // make sure the loop ends after our template is included
359
+ if ( ! is_404() )
360
+ self::endQuery();
361
+
362
+ return $contents;
363
+ }
364
+
365
+
366
+ /**
367
+ * Loads the title into the page template
368
+ *
369
+ * @param string $title Title
370
+ * @param int $post_id Id of the post
371
+ *
372
+ * @return string
373
+ */
374
+ public static function load_ecp_title_into_page_template($title, $post_id) {
375
+ global $post;
376
+
377
+ if ( !is_single() )
378
+ return tribe_get_events_title();
379
+
380
+ // if the helper class for single event template hasn't been loaded fix that
381
+ if( !class_exists('Tribe_Events_Single_Event_Template') )
382
+ self::getTemplateHierarchy('single-event');
383
+
384
+ // single event title
385
+ $before_title = apply_filters( 'tribe_events_single_event_before_the_title', '', $post_id );
386
+ $the_title = apply_filters( 'tribe_events_single_event_the_title', $title, $title, $post_id );
387
+ $after_title = apply_filters( 'tribe_events_single_event_after_the_title', '', $post_id );
388
+ return $before_title . $the_title . $after_title;
389
+ }
390
+
391
+ public static function load_ecp_comments_page_template($template) {
392
+ $tribe_ecp = TribeEvents::instance();
393
+
394
+ remove_filter('comments_template', array(__CLASS__, 'load_ecp_comments_page_template') );
395
+ if (!is_single() || tribe_is_showing_all() || (tribe_get_option('showComments',false) === false)) {
396
+ return $tribe_ecp->pluginPath . 'admin-views/no-comments.php';
397
+ }
398
+ return $template;
399
+ }
400
+
401
+ /**
402
+ * Checks where we are are and determines if we should show events in the main loop
403
+ *
404
+ * @param WP_Query $query
405
+ * @return WP_Query
406
+ * @since 2.1
407
+ */
408
+ public static function showInLoops($query) {
409
+
410
+ if (!is_admin() && tribe_get_option('showInLoops') && ($query->is_home() || $query->is_tag) && empty($query->query_vars['post_type']) && false == $query->query_vars['suppress_filters']) {
411
+
412
+ // 3.3 know-how for main query check
413
+ // if (method_exists($query, 'is_main_query')) {
414
+ if (self::is_main_loop($query)) {
415
+ self::$isMainLoop = true;
416
+ $post_types = array('post', TribeEvents::POSTTYPE);
417
+ $query->set('post_type', $post_types);
418
+ }
419
+
420
+ }
421
+
422
+ return $query;
423
+ }
424
+
425
+ /**
426
+ * Filters the_content to show the event when we are in the main loop and showing events
427
+ *
428
+ * @param string $content
429
+ * @return string Filtered content
430
+ * @since 2.1
431
+ */
432
+ public static function hijackContentInMainLoop($content) {
433
+
434
+ // only run once!!!
435
+ remove_filter('the_content', array(__CLASS__, 'hijackContentInMainLoop') );
436
+
437
+ global $post;
438
+ if (tribe_is_in_main_loop() && tribe_is_event($post->ID)) {
439
+ ob_start();
440
+ echo stripslashes(tribe_get_option('tribeEventsBeforeHTML'));
441
+ include_once(self::getTemplateHierarchy('in-loop'));
442
+ echo stripslashes(tribe_get_option('tribeEventsAfterHTML'));
443
+ $content = ob_get_contents();
444
+ ob_end_clean();
445
+ }
446
+
447
+ return $content;
448
+ }
449
+
450
+ /**
451
+ * Loads theme files in appropriate hierarchy: 1) child theme,
452
+ * 2) parent template, 3) plugin resources. will look in the events/
453
+ * directory in a theme and the views/ directory in the plugin
454
+ *
455
+ * @param string $template template file to search for
456
+ * @param array $args additional arguments to affect the template path
457
+ * - subfolder
458
+ * - namespace
459
+ * - plugin_path
460
+ * - disable_view_check - bypass the check to see if the view is enabled
461
+ * @return template path
462
+ * @author Matt Wiebe
463
+ **/
464
+ public static function getTemplateHierarchy( $template, $args = array() ) {
465
+ if ( !is_array( $args ) ) {
466
+ $args = array();
467
+ $passed = func_get_args();
468
+ $backwards_map = array( 'subfolder', 'namespace', 'plugin_path' );
469
+ if ( count( $passed > 1 ) ) {
470
+ for ( $i = 1 ; $i < count($passed) ; $i++ ) {
471
+ $args[$backwards_map[$i-1]] = $passed[$i];
472
+ }
473
+ }
474
+ }
475
+
476
+ $args = wp_parse_args( $args, array(
477
+ 'subfolder' => '',
478
+ 'namespace' => '/',
479
+ 'plugin_path' => '',
480
+ 'disable_view_check' => false,
481
+ ));
482
+ /**
483
+ * @var string $subfolder
484
+ * @var string $namespace
485
+ * @var string $pluginpath
486
+ * @var bool $disable_view_check
487
+ */
488
+ extract($args);
489
+
490
+ $tec = TribeEvents::instance();
491
+
492
+ if ( substr($template, -4) != '.php' ) {
493
+ $template .= '.php';
494
+ }
495
+
496
+ // setup the meta definitions
497
+ require_once( $tec->pluginPath . 'public/advanced-functions/meta.php' );
498
+
499
+ // Allow base path for templates to be filtered
500
+ $template_base_paths = apply_filters( 'tribe_events_template_paths', (array) TribeEvents::instance()->pluginPath);
501
+
502
+ // backwards compatibility if $plugin_path arg is used
503
+ if ( $plugin_path && ! in_array($plugin_path, $template_base_paths) ) {
504
+ $template_base_paths[] = $plugin_path;
505
+ }
506
+
507
+ // ensure that addon plugins look in the right override folder in theme
508
+ $namespace = !empty($namespace) && $namespace[0] != '/' ? '/' . trailingslashit($namespace) : trailingslashit($namespace);
509
+
510
+ // setup subfolder options
511
+ $subfolder = !empty($subfolder) ? trailingslashit($subfolder) : $subfolder;
512
+
513
+ $file = '';
514
+ foreach ( $template_base_paths as $template_base_path ) {
515
+
516
+ if ( $theme_file = locate_template( array('tribe-events' . $namespace . $subfolder . $template ), false, false) ) {
517
+ $file = $theme_file;
518
+ } else {
519
+ // protect from concat folder with filename
520
+ $subfolder = empty($subfolder) ? trailingslashit($subfolder) : $subfolder;
521
+ $subfolder = $subfolder[0] != '/' ? '/' . $subfolder : $subfolder;
522
+
523
+ $file = $template_base_path . 'views' . $subfolder . $template;
524
+ // echo $file;
525
+ }
526
+
527
+ if ( !$disable_view_check && in_array( $tec->displaying, tribe_events_disabled_views() ) ) {
528
+ $file = get_404_template();
529
+ }
530
+
531
+ $file = apply_filters( 'tribe_events_template', $file, $template);
532
+
533
+ // return the first one found
534
+ if (file_exists($file))
535
+ break;
536
+ }
537
+
538
+ return apply_filters( 'tribe_events_template_'.$template, $file);
539
+ }
540
+
541
+
542
+ /**
543
+ * Look for the stylesheets. Fall back to $fallback path if the stylesheets can't be located or the array is empty.
544
+ * @param array|string $stylesheets Path to the stylesheet
545
+ * @param bool|string $fallback Path to fallback stylesheet
546
+ *
547
+ * @return bool|string Path to stylesheet
548
+ */
549
+ public static function locate_stylesheet( $stylesheets, $fallback = false ) {
550
+ if ( !is_array($stylesheets) ) {
551
+ $stylesheets = array( $stylesheets );
552
+ }
553
+ if ( empty( $stylesheets ) ) {
554
+ return $fallback;
555
+ }
556
+ foreach ( $stylesheets as $filename ) {
557
+ if ( file_exists(STYLESHEETPATH . '/' . $filename)) {
558
+ $located = trailingslashit(get_stylesheet_directory_uri()).$filename;
559
+ break;
560
+ } else if ( file_exists(TEMPLATEPATH . '/' . $filename) ) {
561
+ $located = trailingslashit(get_template_directory_uri()).$filename;
562
+ break;
563
+ }
564
+ }
565
+ if ( empty( $located ) ) {
566
+ return $fallback;
567
+ }
568
+ return $located;
569
+ }
570
+
571
+
572
+ /**
573
+ * Query is complete.
574
+ */
575
+ private static function endQuery() {
576
+ global $wp_query;
577
+
578
+ $wp_query->current_post = 0;
579
+ $wp_query->post_count = 1;
580
+ }
581
+
582
+
583
+ /**
584
+ * Spoof the query so that we can operate independently of what has been queried.
585
+ *
586
+ * @return object
587
+ */
588
+ private static function spoofed_post() {
589
+ $spoofed_post = array(
590
+ 'ID' => -9999,
591
+ 'post_status' => 'draft',
592
+ 'post_author' => 0,
593
+ 'post_parent' => 0,
594
+ 'post_type' => 'page',
595
+ 'post_date' => 0,
596
+ 'post_date_gmt' => 0,
597
+ 'post_modified' => 0,
598
+ 'post_modified_gmt' => 0,
599
+ 'post_content' => '',
600
+ 'post_title' => '',
601
+ 'post_excerpt' => '',
602
+ 'post_content_filtered' => '',
603
+ 'post_mime_type' => '',
604
+ 'post_password' => '',
605
+ 'post_name' => '',
606
+ 'guid' => '',
607
+ 'menu_order' => 0,
608
+ 'pinged' => '',
609
+ 'to_ping' => '',
610
+ 'ping_status' => '',
611
+ 'comment_status' => 'closed',
612
+ 'comment_count' => 0,
613
+ 'is_404' => false,
614
+ 'is_page' => false,
615
+ 'is_single' => false,
616
+ 'is_archive' => false,
617
+ 'is_tax' => false,
618
+ );
619
+ return (object) $spoofed_post;
620
+ }
621
+
622
+
623
+ /**
624
+ * Decide if we need to spoof the query.
625
+ */
626
+ public static function maybeSpoofQuery() {
627
+
628
+ // hijack this method right up front if it's a password protected post and the password isn't entered
629
+ if (is_single() && post_password_required()) {
630
+ return;
631
+ }
632
+
633
+ global $wp_query;
634
+
635
+ if ( $wp_query->is_main_query() && tribe_is_event_query() && tribe_get_option('tribeEventsTemplate', 'default') != '' ) {
636
+
637
+ // we need to ensure that we always enter the loop, whether or not there are any events in the actual query
638
+
639
+ $spoofed_post = self::spoofed_post();
640
+
641
+ $GLOBALS['post'] = $spoofed_post;
642
+ $wp_query->posts[] = $spoofed_post;
643
+ $wp_query->post_count = count($wp_query->posts);
644
+
645
+ $wp_query->spoofed = true;
646
+ $wp_query->rewind_posts();
647
+
648
+ }
649
+ }
650
+
651
+
652
+ /**
653
+ * Restore the original query after spoofing it.
654
+ */
655
+ public static function restoreQuery() {
656
+ global $wp_query;
657
+ if ( isset( $wp_query->spoofed ) && $wp_query->spoofed ) {
658
+
659
+ // take the spoofed post out of the posts array
660
+ array_pop( $wp_query->posts );
661
+
662
+ // fix the post_count
663
+ $wp_query->post_count = count( $wp_query->posts );
664
+
665
+ // rewind the posts
666
+ $wp_query->rewind_posts();
667
+
668
+ if ( $wp_query->have_posts() ) {
669
+ wp_reset_postdata();
670
+ } else {
671
+ // there are no posts, unset the current post
672
+ unset ( $wp_query->post );
673
+ }
674
+
675
+ // don't do this again
676
+ unset( $wp_query->spoofed );
677
+ }
678
+ }
679
+ }
680
+
681
+ TribeEventsTemplates::init();
682
+ }
lib/widget-list.class.php CHANGED
@@ -57,6 +57,16 @@ if( !class_exists( 'TribeEventsListWidget' ) ) {
57
  'title' => '',
58
  ));
59
  extract( $instance, EXTR_SKIP );
 
 
 
 
 
 
 
 
 
 
60
  // extracting $instance provides $title, $limit
61
  $title = apply_filters('widget_title', $title );
62
  if ( ! isset( $category ) || $category === '-1' ) {
@@ -105,8 +115,8 @@ if( !class_exists( 'TribeEventsListWidget' ) ) {
105
  /* Display list of events. */
106
  echo '<ol class="hfeed vcalendar">';
107
  foreach( $posts as $post ) :
108
- setup_postdata($post);
109
- include( TribeEventsTemplates::getTemplateHierarchy('widgets/list-widget.php' ) );
110
  endforeach;
111
  echo "</ol><!-- .hfeed -->";
112
 
@@ -120,6 +130,14 @@ if( !class_exists( 'TribeEventsListWidget' ) ) {
120
  /* After widget (defined by themes). */
121
  echo $after_widget;
122
  wp_reset_query();
 
 
 
 
 
 
 
 
123
  }
124
 
125
  /**
57
  'title' => '',
58
  ));
59
  extract( $instance, EXTR_SKIP );
60
+
61
+ // temporarily unset the tribe bar params so they don't apply
62
+ $hold_tribe_bar_args = array();
63
+ foreach ( $_REQUEST as $key => $value ) {
64
+ if ( $value && strpos( $key, 'tribe-bar-' ) === 0 ) {
65
+ $hold_tribe_bar_args[$key] = $value;
66
+ unset( $_REQUEST[$key] );
67
+ }
68
+ }
69
+
70
  // extracting $instance provides $title, $limit
71
  $title = apply_filters('widget_title', $title );
72
  if ( ! isset( $category ) || $category === '-1' ) {
115
  /* Display list of events. */
116
  echo '<ol class="hfeed vcalendar">';
117
  foreach( $posts as $post ) :
118
+ setup_postdata( $post );
119
+ tribe_get_template_part( 'widgets/list-widget' );
120
  endforeach;
121
  echo "</ol><!-- .hfeed -->";
122
 
130
  /* After widget (defined by themes). */
131
  echo $after_widget;
132
  wp_reset_query();
133
+
134
+ // reinstate the tribe bar params
135
+ if ( ! empty( $hold_tribe_bar_args ) ) {
136
+ foreach ( $hold_tribe_bar_args as $key => $value ) {
137
+ $_REQUEST[$key] = $value;
138
+ }
139
+ }
140
+
141
  }
142
 
143
  /**
public/template-tags/general.php CHANGED
@@ -104,7 +104,7 @@ if ( class_exists( 'TribeEvents' ) ) {
104
  */
105
  function tribe_get_option( $optionName, $default = '' ) {
106
  $tribe_ecp = TribeEvents::instance();
107
- return apply_filters( 'tribe_get_option', $tribe_ecp->getOption( $optionName, $default ) );
108
  }
109
 
110
  /**
@@ -148,7 +148,7 @@ if ( class_exists( 'TribeEvents' ) ) {
148
  * @since 2.0
149
  */
150
  function tribe_is_event( $postId = null ) {
151
- return apply_filters( 'tribe_is_event', TribeEvents::instance()->isEvent( $postId ) );
152
  }
153
 
154
  /**
@@ -165,7 +165,7 @@ if ( class_exists( 'TribeEvents' ) ) {
165
  * @since 2.0
166
  */
167
  function tribe_get_events( $args = array() ) {
168
- return apply_filters( 'tribe_get_events', TribeEventsQuery::getEvents( $args ) );
169
  }
170
 
171
  /**
@@ -180,7 +180,7 @@ if ( class_exists( 'TribeEvents' ) ) {
180
  function tribe_event_is_all_day( $postId = null ) {
181
  $postId = TribeEvents::postIdHelper( $postId );
182
  $output = !! tribe_get_event_meta( $postId, '_EventAllDay', true );
183
- return apply_filters( 'tribe_event_is_all_day', $output );
184
  }
185
 
186
  /**
@@ -199,7 +199,7 @@ if ( class_exists( 'TribeEvents' ) ) {
199
  $start = strtotime( $start[0] );
200
  $end = strtotime( tribe_get_event_meta( $postId, '_EventEndDate', true ) );
201
  $output = date( 'd-m-Y', $start ) != date( 'd-m-Y', $end );
202
- return apply_filters( 'tribe_event_is_multiday', $output );
203
  }
204
 
205
  /**
@@ -225,7 +225,8 @@ if ( class_exists( 'TribeEvents' ) ) {
225
  */
226
  function tribe_get_event_cat_slugs( $post_id = 0 ) {
227
  $post_id = TribeEvents::postIdHelper( $post_id );
228
- return wp_list_pluck( (array) get_the_terms( $post_id, TribeEvents::TAXONOMY ), 'slug' );
 
229
  }
230
 
231
  /**
@@ -245,7 +246,7 @@ if ( class_exists( 'TribeEvents' ) ) {
245
  $args = wp_parse_args( $args, $defaults );
246
  extract( $args, EXTR_SKIP );
247
  $taxonomy = get_the_term_list( $post_id, $taxonomy, $before, $sep, $after );
248
- return apply_filters( 'tribe_get_event_taxonomy', $taxonomy );
249
  }
250
 
251
  /**
@@ -284,9 +285,9 @@ if ( class_exists( 'TribeEvents' ) ) {
284
  $args['wrap_after']
285
  ) : '';
286
  if ( $args['echo'] ) {
287
- echo apply_filters( 'tribe_get_event_categories', $html );
288
  } else {
289
- return apply_filters( 'tribe_get_event_categories', $html );
290
  }
291
  }
292
 
@@ -306,7 +307,8 @@ if ( class_exists( 'TribeEvents' ) ) {
306
  if ( !$label ) { $label = __( 'Tags:', 'tribe-events-calendar' ); }
307
 
308
  $tribe_ecp = TribeEvents::instance();
309
- $list = apply_filters( 'tribe_meta_event_tags', get_the_term_list( get_the_ID(), 'post_tag', '<dt>'.$label.'</dt><dd class="tribe-event-tags">', $separator, '</dd>' ) );
 
310
  if ( $echo ) {
311
  echo $list;
312
  } else {
@@ -329,7 +331,7 @@ if ( class_exists( 'TribeEvents' ) ) {
329
  //$postId = TribeEvents::postIdHelper( $postId );
330
  $tribe_ecp = TribeEvents::instance();
331
  $output = $tribe_ecp->getEventMeta( $postId, $meta, $single );
332
- return apply_filters( 'tribe_get_event_meta', $output );
333
  }
334
 
335
  /**
@@ -345,7 +347,7 @@ if ( class_exists( 'TribeEvents' ) ) {
345
  $current_cat = get_query_var( 'tribe_events_cat' );
346
  if ( $current_cat ) {
347
  $term_info = get_term_by( 'slug', $current_cat, $tribe_ecp->get_event_taxonomy() );
348
- return apply_filters( 'tribe_meta_event_category_name', $term_info->name );
349
  }
350
  }
351
 
@@ -373,7 +375,7 @@ if ( class_exists( 'TribeEvents' ) ) {
373
  */
374
  function tribe_is_venue( $postId = null ) {
375
  $tribe_ecp = TribeEvents::instance();
376
- return apply_filters( 'tribe_is_venue', $tribe_ecp->isVenue( $postId ) );
377
  }
378
 
379
  /**
@@ -678,7 +680,7 @@ if ( class_exists( 'TribeEvents' ) ) {
678
  if ( !empty( $image_src ) ) {
679
  $featured_image .= '<div class="tribe-events-event-image"><a href="'. tribe_get_event_link() .'" title="'. get_the_title( $post_id ) .'"><img src="'. $image_src[0] .'" title="'. get_the_title( $post_id ) .'" /></a></div>';
680
  }
681
- return apply_filters( 'tribe_event_featured_image', $featured_image );
682
  }
683
 
684
  /**
104
  */
105
  function tribe_get_option( $optionName, $default = '' ) {
106
  $tribe_ecp = TribeEvents::instance();
107
+ return apply_filters( 'tribe_get_option', $tribe_ecp->getOption( $optionName, $default ), $optionName, $default );
108
  }
109
 
110
  /**
148
  * @since 2.0
149
  */
150
  function tribe_is_event( $postId = null ) {
151
+ return apply_filters( 'tribe_is_event', TribeEvents::instance()->isEvent( $postId ), $postId );
152
  }
153
 
154
  /**
165
  * @since 2.0
166
  */
167
  function tribe_get_events( $args = array() ) {
168
+ return apply_filters( 'tribe_get_events', TribeEventsQuery::getEvents( $args ), $args );
169
  }
170
 
171
  /**
180
  function tribe_event_is_all_day( $postId = null ) {
181
  $postId = TribeEvents::postIdHelper( $postId );
182
  $output = !! tribe_get_event_meta( $postId, '_EventAllDay', true );
183
+ return apply_filters( 'tribe_event_is_all_day', $output, $postId );
184
  }
185
 
186
  /**
199
  $start = strtotime( $start[0] );
200
  $end = strtotime( tribe_get_event_meta( $postId, '_EventEndDate', true ) );
201
  $output = date( 'd-m-Y', $start ) != date( 'd-m-Y', $end );
202
+ return apply_filters( 'tribe_event_is_multiday', $output, $postId, $start, $end );
203
  }
204
 
205
  /**
225
  */
226
  function tribe_get_event_cat_slugs( $post_id = 0 ) {
227
  $post_id = TribeEvents::postIdHelper( $post_id );
228
+ $slugs = wp_list_pluck( (array) get_the_terms( $post_id, TribeEvents::TAXONOMY ), 'slug' );
229
+ return apply_filters( 'tribe_get_event_cat_slugs', $slugs, $post_id );
230
  }
231
 
232
  /**
246
  $args = wp_parse_args( $args, $defaults );
247
  extract( $args, EXTR_SKIP );
248
  $taxonomy = get_the_term_list( $post_id, $taxonomy, $before, $sep, $after );
249
+ return apply_filters( 'tribe_get_event_taxonomy', $taxonomy, $post_id, $args );
250
  }
251
 
252
  /**
285
  $args['wrap_after']
286
  ) : '';
287
  if ( $args['echo'] ) {
288
+ echo apply_filters( 'tribe_get_event_categories', $html, $post_id, $args, $categories );
289
  } else {
290
+ return apply_filters( 'tribe_get_event_categories', $html, $post_id, $args, $categories );
291
  }
292
  }
293
 
307
  if ( !$label ) { $label = __( 'Tags:', 'tribe-events-calendar' ); }
308
 
309
  $tribe_ecp = TribeEvents::instance();
310
+ $list = get_the_term_list( get_the_ID(), 'post_tag', '<dt>'.$label.'</dt><dd class="tribe-event-tags">', $separator, '</dd>' );
311
+ $list = apply_filters( 'tribe_meta_event_tags', $list, $label, $separator, $echo );
312
  if ( $echo ) {
313
  echo $list;
314
  } else {
331
  //$postId = TribeEvents::postIdHelper( $postId );
332
  $tribe_ecp = TribeEvents::instance();
333
  $output = $tribe_ecp->getEventMeta( $postId, $meta, $single );
334
+ return apply_filters( 'tribe_get_event_meta', $output, $postId, $meta, $single );
335
  }
336
 
337
  /**
347
  $current_cat = get_query_var( 'tribe_events_cat' );
348
  if ( $current_cat ) {
349
  $term_info = get_term_by( 'slug', $current_cat, $tribe_ecp->get_event_taxonomy() );
350
+ return apply_filters( 'tribe_meta_event_category_name', $term_info->name, $current_cat, $term_info );
351
  }
352
  }
353
 
375
  */
376
  function tribe_is_venue( $postId = null ) {
377
  $tribe_ecp = TribeEvents::instance();
378
+ return apply_filters( 'tribe_is_venue', $tribe_ecp->isVenue( $postId ), $postId );
379
  }
380
 
381
  /**
680
  if ( !empty( $image_src ) ) {
681
  $featured_image .= '<div class="tribe-events-event-image"><a href="'. tribe_get_event_link() .'" title="'. get_the_title( $post_id ) .'"><img src="'. $image_src[0] .'" title="'. get_the_title( $post_id ) .'" /></a></div>';
682
  }
683
+ return apply_filters( 'tribe_event_featured_image', $featured_image, $post_id, $size, $image_src );
684
  }
685
 
686
  /**
public/template-tags/general.php.orig ADDED
@@ -0,0 +1,1036 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Events Calendar Template Tags
4
+ *
5
+ * Display functions (template-tags) for use in WordPress templates.
6
+ */
7
+
8
+ // Don't load directly
9
+ if ( !defined( 'ABSPATH' ) ) { die( '-1' ); }
10
+
11
+ if ( class_exists( 'TribeEvents' ) ) {
12
+
13
+ /**
14
+ * Instantiate the template class, preparing a view file for use. If no name is passed, defaults to the class for the current view
15
+ *
16
+ * @param bool|string $class Classname you want to instantiate
17
+ * @return void
18
+ * @author Jessica Yazbek
19
+ * @uses TribeEventsTemplates::instantiate_template_class()
20
+ * @since 3.0
21
+ **/
22
+ function tribe_initialize_view( $class = false ) {
23
+ do_action( 'tribe_pre_initialize_view' );
24
+ TribeEventsTemplates::instantiate_template_class( $class );
25
+ }
26
+
27
+ /**
28
+ * Includes a view file, runs hooks around the view
29
+ *
30
+ * @param bool|string $view View slug
31
+ * @return void
32
+ * @author Jessica Yazbek
33
+ * @since 3.0
34
+ **/
35
+ function tribe_get_view( $view = false ) {
36
+
37
+ do_action( 'tribe_pre_get_view' );
38
+
39
+ if ( ! $view ) {
40
+ $template_file = tribe_get_current_template();
41
+ } else {
42
+ $template_file = TribeEventsTemplates::getTemplateHierarchy( $view, array('disable_view_check' => true) );
43
+ }
44
+
45
+ if (file_exists($template_file)) {
46
+ do_action('tribe_events_before_view', $template_file);
47
+ include( $template_file );
48
+ do_action('tribe_events_after_view', $template_file);
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Includes a template part, similar to the WP get template part, but looks
54
+ * in the correct directories for Tribe Events templates
55
+ *
56
+ * @param string $slug
57
+ * @param null|string $name
58
+ * @uses TribeEventsTemplates::getTemplateHierarchy
59
+ * @author Jessica Yazbek
60
+ * @since 3.0
61
+ **/
62
+ function tribe_get_template_part( $slug, $name = null ) {
63
+
64
+ // Execute code for this part
65
+ do_action( 'tribe_pre_get_template_part_' . $slug, $slug, $name );
66
+ // Setup possible parts
67
+ $templates = array();
68
+ if ( isset( $name ) ) {
69
+ $templates[] = $slug . '-' . $name . '.php';
70
+ }
71
+ $templates[] = $slug . '.php';
72
+
73
+ // Allow template parts to be filtered
74
+ $templates = apply_filters( 'tribe_get_template_part_templates', $templates, $slug, $name );
75
+
76
+
77
+ // loop through templates, return first one found.
78
+ foreach( $templates as $template ) {
79
+ $file = TribeEventsTemplates::getTemplateHierarchy( $template, array('disable_view_check' => true) );
80
+ $file = apply_filters( 'tribe_get_template_part_path', $file, $template, $slug, $name );
81
+ $file = apply_filters( 'tribe_get_template_part_path_'.$template, $file, $slug, $name );
82
+ if (file_exists($file)) {
83
+ ob_start();
84
+ do_action( 'tribe_before_get_template_part', $template, $file, $template, $slug, $name );
85
+ include($file);
86
+ do_action( 'tribe_after_get_template_part', $template, $file, $slug, $name );
87
+ $html = ob_get_clean();
88
+ echo apply_filters( 'tribe_get_template_part_content', $html, $template, $file, $slug, $name );
89
+ }
90
+ }
91
+ do_action( 'tribe_post_get_template_part_' . $slug, $slug, $name );
92
+ }
93
+
94
+ /**
95
+ * Get Options
96
+ *
97
+ * Retrieve specific key from options array, optionally provide a default return value
98
+ *
99
+ * @param string $optionName Name of the option to retrieve.
100
+ * @param string $default Value to return if no such option is found.
101
+ * @return mixed Value of the option if found.
102
+ * @todo Abstract this function out of template tags or otherwise secure it from other namespace conflicts.
103
+ * @since 2.0
104
+ */
105
+ function tribe_get_option( $optionName, $default = '' ) {
106
+ $tribe_ecp = TribeEvents::instance();
107
+ return apply_filters( 'tribe_get_option', $tribe_ecp->getOption( $optionName, $default ), $optionName, $default );
108
+ }
109
+
110
+ /**
111
+ * Update Option
112
+ *
113
+ * Set specific key from options array, optionally provide a default return value
114
+ *
115
+ * @param string $optionName Name of the option to retrieve.
116
+ * @param string $value Value to save
117
+ * @return void
118
+ * @since 2.0.3
119
+ */
120
+ function tribe_update_option( $optionName, $value ) {
121
+ $tribe_ecp = TribeEvents::instance();
122
+ $tribe_ecp->setOption( $optionName, $value );
123
+ }
124
+
125
+ /**
126
+ * Get Network Options
127
+ *
128
+ * Retrieve specific key from options array, optionally provide a default return value
129
+ *
130
+ * @param string $optionName Name of the option to retrieve.
131
+ * @param string $default Value to return if no such option is found.
132
+ * @return mixed Value of the option if found.
133
+ * @todo Abstract this function out of template tags or otherwise secure it from other namespace conflicts.
134
+ * @since 2.0
135
+ */
136
+ function tribe_get_network_option( $optionName, $default = '' ) {
137
+ $tribe_ecp = TribeEvents::instance();
138
+ return $tribe_ecp->getNetworkOption( $optionName, $default );
139
+ }
140
+
141
+ /**
142
+ * Event Type Test
143
+ *
144
+ * Checks type of $postId to determine if it is an Event
145
+ *
146
+ * @param int $postId (optional)
147
+ * @return bool true if this post is an Event post type
148
+ * @since 2.0
149
+ */
150
+ function tribe_is_event( $postId = null ) {
151
+ return apply_filters( 'tribe_is_event', TribeEvents::instance()->isEvent( $postId ) );
152
+ }
153
+
154
+ /**
155
+ * Get Event
156
+ *
157
+ * Queries the events using WordPress get_posts() by setting the post type and sorting by event date.
158
+ *
159
+ * @param array $args query vars with added defaults including post_type of events, sorted (orderby) by event date (order) ascending
160
+ * @return array List of posts.
161
+ * @link http://codex.wordpress.org/Template_Tags/get_posts
162
+ * @link http://codex.wordpress.org/Function_Reference/get_post
163
+ * @uses get_posts()
164
+ * @see get_posts()
165
+ * @since 2.0
166
+ */
167
+ function tribe_get_events( $args = array() ) {
168
+ return apply_filters( 'tribe_get_events', TribeEventsQuery::getEvents( $args ) );
169
+ }
170
+
171
+ /**
172
+ * All Day Event Test
173
+ *
174
+ * Returns true if the event is an all day event
175
+ *
176
+ * @param int $postId (optional)
177
+ * @return bool
178
+ * @since 2.0
179
+ */
180
+ function tribe_event_is_all_day( $postId = null ) {
181
+ $postId = TribeEvents::postIdHelper( $postId );
182
+ $output = !! tribe_get_event_meta( $postId, '_EventAllDay', true );
183
+ return apply_filters( 'tribe_event_is_all_day', $output );
184
+ }
185
+
186
+ /**
187
+ * Multi-day Event Test
188
+ *
189
+ * Returns true if the event spans multiple days
190
+ *
191
+ * @param int $postId (optional)
192
+ * @return bool true if event spans multiple days
193
+ * @since 2.0
194
+ */
195
+ function tribe_event_is_multiday( $postId = null ) {
196
+ $postId = TribeEvents::postIdHelper( $postId );
197
+ $start = (array)tribe_get_event_meta( $postId, '_EventStartDate', false );
198
+ sort( $start );
199
+ $start = strtotime( $start[0] );
200
+ $end = strtotime( tribe_get_event_meta( $postId, '_EventEndDate', true ) );
201
+ $output = date( 'd-m-Y', $start ) != date( 'd-m-Y', $end );
202
+ return apply_filters( 'tribe_event_is_multiday', $output );
203
+ }
204
+
205
+ /**
206
+ * Event Category ID's
207
+ *
208
+ * Display the event category ID as a class for events wrapper
209
+ *
210
+ * @uses wp_get_object_terms()
211
+ * @since 2.1
212
+ */
213
+ function tribe_get_event_cat_ids( $post_id = 0 ) {
214
+ $post_id = TribeEvents::postIdHelper( $post_id );
215
+ return wp_list_pluck( (array) get_the_terms( $post_id, TribeEvents::TAXONOMY ), 'term_id' );
216
+ }
217
+
218
+ /**
219
+ * Event Category slugs
220
+ *
221
+ * Display the event category ID as a class for events wrapper
222
+ *
223
+ * @uses wp_get_object_terms()
224
+ * @since 2.1
225
+ */
226
+ function tribe_get_event_cat_slugs( $post_id = 0 ) {
227
+ $post_id = TribeEvents::postIdHelper( $post_id );
228
+ return wp_list_pluck( (array) get_the_terms( $post_id, TribeEvents::TAXONOMY ), 'slug' );
229
+ }
230
+
231
+ /**
232
+ * get the term list by taxonomy (default categories) for a single event
233
+ * @param int $post_id
234
+ * @param array $args
235
+ * @return string HTML string of taxonomy terms
236
+ */
237
+ function tribe_get_event_taxonomy( $post_id = null, $args = array() ) {
238
+ $post_id = TribeEvents::postIdHelper( $post_id );
239
+ $tribe_ecp = TribeEvents::instance();
240
+ $defaults = array(
241
+ 'taxonomy' => $tribe_ecp->get_event_taxonomy(),
242
+ 'before' => '<li>',
243
+ 'sep' => '</li><li>',
244
+ 'after' => '</li>' );
245
+ $args = wp_parse_args( $args, $defaults );
246
+ extract( $args, EXTR_SKIP );
247
+ $taxonomy = get_the_term_list( $post_id, $taxonomy, $before, $sep, $after );
248
+ return apply_filters( 'tribe_get_event_taxonomy', $taxonomy );
249
+ }
250
+
251
+ /**
252
+ * Event Categories (Display)
253
+ *
254
+ * Display the event categories with display param
255
+ *
256
+ * @uses tribe_get_event_taxonomy()
257
+ * @replaces tribe_meta_event_cats()
258
+ * @param int $post_id
259
+ * @param array $args
260
+ * @return string $html (echo if provided in $args)
261
+ * @since 3.0
262
+ */
263
+ function tribe_get_event_categories( $post_id = null, $args = array() ) {
264
+ $post_id = is_null( $post_id ) ? get_the_ID() : $post_id;
265
+ $defaults = array(
266
+ 'echo' => false,
267
+ 'label' => null,
268
+ 'label_before' => '<div>',
269
+ 'label_after' => '</div>',
270
+ 'wrap_before' => '<ul class="tribe-event-categories">',
271
+ 'wrap_after' => '</ul>' );
272
+ $args = wp_parse_args( $args, $defaults );
273
+ $categories = tribe_get_event_taxonomy( $post_id, $args );
274
+
275
+ // check for the occurances of links in the returned string
276
+ $label = is_null( $args['label'] ) ? _n( 'Event Category', 'Event Categories', substr_count( $categories, "<a href" ), 'tribe-events-calendar' ) : $args['label'];
277
+
278
+ $html = !empty( $categories ) ? sprintf( '%s%s:%s %s%s%s',
279
+ $args['label_before'],
280
+ $label,
281
+ $args['label_after'],
282
+ $args['wrap_before'],
283
+ $categories,
284
+ $args['wrap_after']
285
+ ) : '';
286
+ if ( $args['echo'] ) {
287
+ echo apply_filters( 'tribe_get_event_categories', $html );
288
+ } else {
289
+ return apply_filters( 'tribe_get_event_categories', $html );
290
+ }
291
+ }
292
+
293
+ /**
294
+ * Event Tags (Display)
295
+ *
296
+ * Display the event tags
297
+ *
298
+ * @param null|string $label
299
+ * @param string $separator
300
+ * @param bool $echo
301
+ * @return array
302
+ * @uses the_terms()
303
+ * @since 2.1
304
+ */
305
+ function tribe_meta_event_tags( $label=null, $separator=', ', $echo = true ) {
306
+ if ( !$label ) { $label = __( 'Tags:', 'tribe-events-calendar' ); }
307
+
308
+ $tribe_ecp = TribeEvents::instance();
309
+ $list = apply_filters( 'tribe_meta_event_tags', get_the_term_list( get_the_ID(), 'post_tag', '<dt>'.$label.'</dt><dd class="tribe-event-tags">', $separator, '</dd>' ) );
310
+ if ( $echo ) {
311
+ echo $list;
312
+ } else {
313
+ return $list;
314
+ }
315
+ }
316
+
317
+ /**
318
+ * Event Post Meta
319
+ *
320
+ * Get event post meta.
321
+ *
322
+ * @param int|null $postId (optional)
323
+ * @param string|bool $meta name of the meta_key
324
+ * @param bool $single determines if the results should be a single item or an array of items.
325
+ * @return mixed meta value(s)
326
+ * @since 2.0
327
+ */
328
+ function tribe_get_event_meta( $postId = null, $meta = false, $single = true ) {
329
+ //$postId = TribeEvents::postIdHelper( $postId );
330
+ $tribe_ecp = TribeEvents::instance();
331
+ $output = $tribe_ecp->getEventMeta( $postId, $meta, $single );
332
+ return apply_filters( 'tribe_get_event_meta', $output );
333
+ }
334
+
335
+ /**
336
+ * Event Category Name
337
+ *
338
+ * Return the current event category name based the url.
339
+ *
340
+ * @return string Name of the Event Category
341
+ * @since 2.0
342
+ */
343
+ function tribe_meta_event_category_name() {
344
+ $tribe_ecp = TribeEvents::instance();
345
+ $current_cat = get_query_var( 'tribe_events_cat' );
346
+ if ( $current_cat ) {
347
+ $term_info = get_term_by( 'slug', $current_cat, $tribe_ecp->get_event_taxonomy() );
348
+ return apply_filters( 'tribe_meta_event_category_name', $term_info->name );
349
+ }
350
+ }
351
+
352
+ /**
353
+ * Current Template
354
+ *
355
+ * Get the current page template that we are on
356
+ *
357
+ * @todo Update the function name to ensure there are no namespace conflicts.
358
+ * @return string Page template
359
+ * @since 2.0
360
+ */
361
+ function tribe_get_current_template() {
362
+ return apply_filters( 'tribe_get_current_template', TribeEventsTemplates::get_current_page_template() );
363
+ }
364
+
365
+ /**
366
+ * Venue Type Test
367
+ *
368
+ * Checks type of $postId to determine if it is a Venue
369
+ *
370
+ * @param int $postId (optional)
371
+ * @return bool True if post type id Venue
372
+ * @since 2.0
373
+ */
374
+ function tribe_is_venue( $postId = null ) {
375
+ $tribe_ecp = TribeEvents::instance();
376
+ return apply_filters( 'tribe_is_venue', $tribe_ecp->isVenue( $postId ) );
377
+ }
378
+
379
+ /**
380
+ * HTML Before Event (Display)
381
+ *
382
+ * Display HTML to output before the event template
383
+ *
384
+ * @since 2.0
385
+ */
386
+ function tribe_events_before_html() {
387
+ $before = stripslashes( tribe_get_option( 'tribeEventsBeforeHTML', '' ) );
388
+ $before = wptexturize( $before );
389
+ $before = convert_chars( $before );
390
+ $before = wpautop( $before );
391
+ $before = '<div class="tribe-events-before-html">'. stripslashes( shortcode_unautop( $before ) ) .'</div>';
392
+ $before = $before.'<span class="tribe-events-ajax-loading"><img class="tribe-events-spinner-medium" src="'.tribe_events_resource_url('images/tribe-loading.gif').'" alt="'.__('Loading Events', 'tribe-events').'" /></span>';
393
+ $before = apply_filters( 'tribe_events_before_html', $before );
394
+
395
+ echo apply_filters( 'tribe_events_before_html', $before );
396
+ }
397
+
398
+ /**
399
+ * HTML After Event (Display)
400
+ *
401
+ * Display HTML to output after the event template
402
+ *
403
+ * @since 2.0
404
+ */
405
+ function tribe_events_after_html() {
406
+ $after = stripslashes( tribe_get_option( 'tribeEventsAfterHTML', '' ) );
407
+ $after = wptexturize( $after );
408
+ $after = convert_chars( $after );
409
+ $after = wpautop( $after );
410
+ $after = '<div class="tribe-events-after-html">'. stripslashes( shortcode_unautop( $after ) ) .'</div>';
411
+
412
+ echo apply_filters( 'tribe_events_after_html', $after );
413
+ }
414
+
415
+ /**
416
+ * Prints out classes on an event wrapper
417
+ *
418
+ * @return void
419
+ * @since 3.0
420
+ **/
421
+ function tribe_events_event_classes() {
422
+ $classes = apply_filters('tribe_events_event_classes', array());
423
+ echo implode(' ', $classes);
424
+ }
425
+
426
+ /**
427
+ * Prints out data attributes used in the template header tags
428
+ *
429
+ * @param string|null $current_view
430
+ * @return void
431
+ * @since 3.0
432
+ **/
433
+ function tribe_events_the_header_attributes( $current_view = null ) {
434
+ $attrs = array();
435
+ $current_view = !empty( $current_view ) ? $current_view : basename(tribe_get_current_template());
436
+ <<<<<<< HEAD
437
+ $attrs['data-title'] = TribeEventsTemplates::maybeAddEventTitle(wp_title('', false));
438
+ =======
439
+ $attrs['data-title'] = wp_title('&raquo;', false);
440
+ >>>>>>> parent of dd42fe2... Fixed problems with title filter
441
+ switch($current_view) {
442
+ case 'month.php' :
443
+ $attrs['data-view'] = 'month';
444
+ $attrs['data-date'] = date( 'Y-m', strtotime( tribe_get_month_view_date() ) );
445
+ $attrs['data-baseurl'] = tribe_get_gridview_link(false);
446
+ break;
447
+ case 'list.php' :
448
+ $attrs['data-view']= 'list';
449
+ if ( tribe_is_upcoming() ) {
450
+ $attrs['data-baseurl'] = tribe_get_listview_link(false);
451
+ } elseif( tribe_is_past() ) {
452
+ $attrs['data-view']= 'past';
453
+ $attrs['data-baseurl'] = tribe_get_listview_past_link(false);
454
+ }
455
+ break;
456
+ }
457
+ $attrs = apply_filters('tribe_events_header_attributes', $attrs, $current_view);
458
+ foreach ($attrs as $attr => $value) {
459
+ echo " $attr=".'"'.$value.'"';
460
+ }
461
+ }
462
+
463
+ /**
464
+ * Returns or echoes a url to a file in the Events Calendar plugin resources directory
465
+ *
466
+ * @param string $resource the filename of the resource
467
+ * @param bool $echo whether or not to echo the url
468
+ * @return string
469
+ * @author Jessica Yazbek
470
+ * @since 3.0
471
+ **/
472
+ function tribe_events_resource_url($resource, $echo = false) {
473
+ $url = apply_filters('tribe_events_resource_url', trailingslashit( TribeEvents::instance()->pluginUrl ).'resources/'.$resource, $resource);
474
+ if ($echo) {
475
+ echo $url;
476
+ }
477
+ return $url;
478
+ }
479
+
480
+ /**
481
+ * Return an array with the days of the week, numbered with respect to the start_of_week WP option
482
+ * @param string $format the display format for the days of the week
483
+ * @return array Days of the week.
484
+ * @since 3.0
485
+ **/
486
+ function tribe_events_get_days_of_week( $format = null ) {
487
+ if ( $format == 'short' ) {
488
+ $days_of_week = TribeEvents::instance()->daysOfWeekShort;
489
+ } else {
490
+ $days_of_week = TribeEvents::instance()->daysOfWeek;
491
+ }
492
+ $start_of_week = get_option('start_of_week', 0);
493
+ for ($i = 0; $i < $start_of_week; $i++) {
494
+ $day = $days_of_week[$i];
495
+ unset($days_of_week[$i]);
496
+ $days_of_week[$i] = $day;
497
+ }
498
+ // $days_of_week = array_values($days_of_week);
499
+ return apply_filters('tribe_events_get_days_of_week', $days_of_week);
500
+ }
501
+
502
+ /**
503
+ * conditional tag to determine if the cost field should be shown in the admin editors.
504
+ * @author tim@imaginesimplicity.com
505
+ * @since 3.0
506
+ * @return bool
507
+ */
508
+ function tribe_events_admin_show_cost_field(){
509
+ $modules = apply_filters( 'tribe_events_tickets_modules', NULL );
510
+ $event_origin = get_post_meta( get_the_ID(), '_EventOrigin', true );
511
+ $show_cost = empty( $modules ) ||
512
+ class_exists( 'Event_Tickets_PRO' ) ||
513
+ in_array( $event_origin, apply_filters( 'tribe_events_admin_show_cost_field_origin', array( 'community-events' ) ) );
514
+ return apply_filters( 'tribe_events_admin_show_cost_field', $show_cost, $modules );
515
+ }
516
+
517
+ /**
518
+ * Get an event's cost
519
+ *
520
+ *
521
+ * @param null|int $postId (optional)
522
+ * @param bool $withCurrencySymbol Include the currency symbol
523
+ * @return string Cost of the event.
524
+ */
525
+ function tribe_get_cost( $postId = null, $withCurrencySymbol = false ) {
526
+ $tribe_ecp = TribeEvents::instance();
527
+ $postId = TribeEvents::postIdHelper( $postId );
528
+
529
+ $cost = tribe_get_event_meta( $postId, '_EventCost', true );
530
+
531
+ if ( $cost === '' ) {
532
+ $cost = '';
533
+ } elseif ( $cost === '0' ) {
534
+ $cost = __( "Free", 'tribe-events-calendar' );
535
+ } else {
536
+ $cost = esc_html( $cost );
537
+ }
538
+
539
+ if ( $withCurrencySymbol && is_numeric( $cost ) ) {
540
+ $currency = tribe_get_event_meta( $postId, '_EventCurrencySymbol', true );
541
+
542
+ if ( !$currency ) {
543
+ $currency = tribe_get_option( 'defaultCurrencySymbol', '$' );
544
+ }
545
+
546
+ $cost = $currency . $cost;
547
+ }
548
+
549
+ return apply_filters( 'tribe_get_cost', $cost, $postId, $withCurrencySymbol );
550
+ }
551
+
552
+ /**
553
+ * Get the minimum cost of all events.
554
+ *
555
+ * @author PaulHughes01
556
+ * @since 2.1
557
+ * @return int the minimum cost.
558
+ */
559
+ function tribe_get_minimum_cost() {
560
+ global $wpdb;
561
+
562
+ $costs = $wpdb->get_col( 'SELECT meta_value FROM ' . $wpdb->postmeta . ' WHERE meta_key = \'_EventCost\';' );
563
+
564
+ $costs = array_map( 'tribe_map_cost_array_callback', $costs );
565
+ foreach ( $costs as $index => $value ) {
566
+ $costs[$index] = preg_replace( '/^[^\d]+(\d+\.?\d*)?.*$/', '$1', $value );
567
+ }
568
+ if ( empty( $costs ) )
569
+ $costs = array( '0' );
570
+
571
+ $min = min( $costs );
572
+ if ( $min == '' )
573
+ $min = 0;
574
+
575
+ return $min;
576
+ }
577
+
578
+ /**
579
+ * Get the maximum cost of all events.
580
+ *
581
+ * @author PaulHughes01
582
+ * @since 2.1
583
+ * @return int the maximum cost.
584
+ */
585
+ function tribe_get_maximum_cost() {
586
+ global $wpdb;
587
+
588
+ $costs = $wpdb->get_col( 'SELECT meta_value FROM ' . $wpdb->postmeta . ' WHERE meta_key = \'_EventCost\';' );
589
+
590
+ $costs = array_map( 'tribe_map_cost_array_callback', $costs );
591
+ foreach ( $costs as $index => $value ) {
592
+ $costs[$index] = preg_replace( '/^[^\d]+(\d+\.?\d*)?.*$/', '$1', $value );
593
+ }
594
+
595
+ if ( empty( $costs ) )
596
+ $costs = array( '0' );
597
+
598
+ $max = max( $costs );
599
+ if ( $max == '' )
600
+ $max = 0;
601
+
602
+ return $max;
603
+ }
604
+
605
+ /**
606
+ * Maps the cost array to make finding the minimum and maximum costs possible.
607
+ *
608
+ * @param array $costs
609
+ * @return array $costs
610
+ */
611
+ function tribe_map_cost_array_callback( $costs ) {
612
+ return $costs;
613
+ }
614
+
615
+ /**
616
+ * Event in Category Conditional
617
+ *
618
+ * Returns true if the event is in the specified catagory slug
619
+ *
620
+ * @param string $event_cat_slug
621
+ * @param int $event_id
622
+ * @return boolean
623
+ * @since 2.0.2
624
+ */
625
+ function tribe_event_in_category( $event_cat_slug, $event_id = null ) {
626
+
627
+ if ( empty( $event_id ) )
628
+ $event_id = get_the_ID();
629
+
630
+ $term = term_exists( $event_cat_slug, TribeEvents::TAXONOMY );
631
+
632
+ if ( tribe_is_event( $event_id ) && is_object_in_term( $event_id, TribeEvents::TAXONOMY, array( $term['term_id'] ) ) ) {
633
+ $return = true;
634
+ }else {
635
+ $return = false;
636
+ }
637
+ return apply_filters( 'tribe_event_in_category', $return );
638
+ }
639
+
640
+ /**
641
+ * Placeholder function that is used for ticketing plugins meant to be filtered by such plugins
642
+ *
643
+ * @author jkudish
644
+ * @since 2.1
645
+ * @return void
646
+ */
647
+ function tribe_get_ticket_form() {
648
+ $ticket_form = apply_filters( 'tribe_get_ticket_form', false );
649
+ if ( $ticket_form && is_string( $ticket_form ) ) {
650
+ echo $ticket_form;
651
+ } else {
652
+ return $ticket_form;
653
+ }
654
+ }
655
+
656
+ /**
657
+ * helper function to remove empty lines from multi-line strings
658
+ *
659
+ * @since 2.0.5
660
+ * @author jkudish
661
+ * @link http://stackoverflow.com/questions/709669/how-do-i-remove-blank-lines-from-text-in-php
662
+ * @param string $multi_line_string a multiline string
663
+ * @return string the same string without empty lines
664
+ */
665
+ function tribe_multi_line_remove_empty_lines( $multi_line_string ) {
666
+ return preg_replace( "/^\n+|^[\t\s]*\n+/m", '', $multi_line_string );
667
+ }
668
+
669
+ /**
670
+ * return the featured image html to an event (within the loop automatically will get event ID)
671
+ *
672
+ * @since 3.0
673
+ * @param int $post_id
674
+ * @param string $size
675
+ * @return string
676
+ */
677
+ function tribe_event_featured_image( $post_id = null, $size = 'full' ) {
678
+ if ( is_null( $post_id ) )
679
+ $post_id = get_the_ID();
680
+ $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), $size );
681
+ $featured_image = '';
682
+ if ( !empty( $image_src ) ) {
683
+ $featured_image .= '<div class="tribe-events-event-image"><a href="'. tribe_get_event_link() .'" title="'. get_the_title( $post_id ) .'"><img src="'. $image_src[0] .'" title="'. get_the_title( $post_id ) .'" /></a></div>';
684
+ }
685
+ return apply_filters( 'tribe_event_featured_image', $featured_image, $post_id, $size, $image_src );
686
+ }
687
+
688
+ /**
689
+ * show the recurring event info in a tooltip
690
+ *
691
+ * return the details of the start/end date/time
692
+ *
693
+ * @since 3.0
694
+ * @param int $post_id
695
+ * @return string
696
+ */
697
+ function tribe_events_event_recurring_info_tooltip( $post_id = null ) {
698
+ if ( is_null( $post_id ) )
699
+ $post_id = get_the_ID();
700
+ $tooltip = '';
701
+ if ( class_exists( 'TribeEventsPro' ) ) { // should this be a template tag?
702
+ if ( tribe_is_recurring_event( $post_id ) ) {
703
+ $tooltip .= '<div class="recurringinfo">';
704
+ $tooltip .= '<div class="event-is-recurring">';
705
+ $tooltip .= '<span class="tribe-events-divider">|</span>';
706
+ $tooltip .= __( 'Recurring Event', 'tribe-events-calendar' );
707
+ $tooltip .= sprintf(' <a href="%s">%s</a>',
708
+ tribe_all_occurences_link( $post_id, false ),
709
+ __( '(See all)', 'tribe-events-calendar' )
710
+ );
711
+ $tooltip .= '<div id="tribe-events-tooltip-'. $post_id .'" class="tribe-events-tooltip recurring-info-tooltip">';
712
+ $tooltip .= '<div class="tribe-events-event-body">';
713
+ $tooltip .= tribe_get_recurrence_text( $post_id );
714
+ $tooltip .= '</div>';
715
+ $tooltip .= '<span class="tribe-events-arrow"></span>';
716
+ $tooltip .= '</div>';
717
+ $tooltip .= '</div>';
718
+ $tooltip .= '</div>';
719
+ }
720
+ }
721
+ return apply_filters( 'tribe_events_event_recurring_info_tooltip', $tooltip );
722
+ }
723
+
724
+ /**
725
+ * Return the details of the start/end date/time
726
+ *
727
+ * @since 3.0
728
+ * @param int|null $event
729
+ * @return string
730
+ */
731
+ function tribe_events_event_schedule_details( $event = null ) {
732
+ if ( is_null( $event ) ) {
733
+ global $post;
734
+ $event = $post;
735
+ }
736
+ if ( is_numeric( $event ) )
737
+ $event = get_post( $event );
738
+
739
+ $format = '';
740
+ $timeFormat = get_option( 'time_format' );
741
+ $microformatStartFormat = tribe_get_start_date( $event, false, 'Y-m-dTh:i' );
742
+ $microformatEndFormat = tribe_get_end_date( $event, false, 'Y-m-dTh:i' );
743
+
744
+ // If the WordPress date setting matches DATEONLYFORMAT, make the string more readable
745
+ if ( get_option( 'date_format' ) == TribeDateUtils::DATEONLYFORMAT ) {
746
+ /* If the event happens this year, no need to show the year, unless it ends on another year (multi-day) */
747
+ if ( tribe_get_start_date( $event, false, 'Y' ) === date( 'Y' ) && tribe_get_end_date( $event, false, 'Y' ) === date( 'Y' ) ) {
748
+ $format = 'F j';
749
+ }
750
+ }
751
+
752
+ $schedule = '';
753
+
754
+ if ( tribe_event_is_multiday( $event ) ) { // multi-date event
755
+
756
+ $format2ndday = $format;
757
+
758
+ // If the WordPress date setting matches DATEONLYFORMAT, make the string more readable
759
+ if ( get_option( 'date_format' ) == TribeDateUtils::DATEONLYFORMAT ) {
760
+ //If it's all day and the end date is in the same month and year, just show the day.
761
+ if ( tribe_event_is_all_day( $event ) && tribe_get_end_date( $event, false, 'm' ) === tribe_get_start_date( $event, false, 'm' ) && tribe_get_end_date( $event, false, 'Y' ) === date( 'Y' ) ) {
762
+ $format2ndday = 'j';
763
+ }
764
+ }
765
+
766
+ if ( tribe_event_is_all_day( $event ) ) {
767
+ // If the multi-day event begins and ends in the same month, just show the month once.
768
+ if ( tribe_get_end_date( $event, false, 'm' ) === tribe_get_start_date( $event, false, 'm' ) && tribe_get_end_date( $event, false, 'Y' ) === date( 'Y' ) ) {
769
+ $schedule .= '<span class="date-start dtstart">';
770
+ $schedule .= tribe_get_start_date( $event, true, $format );
771
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
772
+ $schedule .= '</span> - ';
773
+ $schedule .= '<span class="date-end dtend">';
774
+ $schedule .= tribe_get_end_date( $event, true, $format2ndday );
775
+ $schedule .= '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
776
+ $schedule .= '</span>';
777
+ } else {
778
+ $schedule .= '<span class="date-start dtstart">';
779
+ $schedule .= tribe_get_start_date( $event, true, $format );
780
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
781
+ $schedule .= '</span> - ';
782
+ $schedule .= '<span class="date-end dtend">';
783
+ $schedule .= tribe_get_end_date( $event, true, $format2ndday );
784
+ $schedule .= '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
785
+ $schedule .= '</span>';
786
+ }
787
+ } else {
788
+ $schedule .= '<span class="date-start dtstart">';
789
+ $schedule .= tribe_get_start_date( $event, false, $format ) . ' @ ' . tribe_get_start_date( $event, false, $timeFormat );
790
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
791
+ $schedule .= '</span> - ';
792
+ $schedule .= '<span class="date-end dtend">';
793
+ $schedule .= tribe_get_end_date( $event, false, $format2ndday ) . ' @ ' . tribe_get_end_date( $event, false, $timeFormat );
794
+ $schedule .= '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
795
+ $schedule .= '</span>';
796
+ }
797
+
798
+
799
+ } elseif ( tribe_event_is_all_day( $event ) ) { // all day event
800
+ $schedule .= '<span class="date-start dtstart">';
801
+ $schedule .= tribe_get_start_date( $event, true, $format );
802
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
803
+ $schedule .= '</span>';
804
+ } else { // single day event
805
+ if ( tribe_get_start_date( $event, false, 'g:i A' ) === tribe_get_end_date( $event, false, 'g:i A' ) ) { // Same start/end time
806
+ $schedule .= '<span class="date-start dtstart">';
807
+ $schedule .= tribe_get_start_date( $event, false, $format ) . ' @ ' . tribe_get_start_date( $event, false, $timeFormat );
808
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
809
+ $schedule .= '</span>';
810
+ } else { // defined start/end time
811
+ $schedule .= '<span class="date-start dtstart">';
812
+ $schedule .= tribe_get_start_date( $event, false, $format ) . ' @ ' . tribe_get_start_date( $event, false, $timeFormat );
813
+ $schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
814
+ $schedule .= '</span> - ';
815
+ $schedule .= '<span class="end-time dtend">';
816
+ $schedule .= tribe_get_end_date( $event, false, $timeFormat ) . '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
817
+ $schedule .= '</span>';
818
+ }
819
+ }
820
+
821
+ return apply_filters( 'tribe_events_event_schedule_details', $schedule );
822
+ }
823
+
824
+ /**
825
+ * Accepts two dates and returns the number of days between them
826
+ *
827
+ * @param string $start_date
828
+ * @param string $end_date
829
+ * @return int
830
+ * @author Modern Tribe
831
+ * @see TribeEventsQuery::dateDiff()
832
+ **/
833
+ function tribe_get_days_between( $start_date, $end_date ) {
834
+
835
+ $start_date = new DateTime( $start_date );
836
+ $end_date = new DateTime( $end_date );
837
+ // This doesn't work on php 5.2
838
+ // $interval = $start_date->diff($end_date);
839
+
840
+ return TribeEventsQuery::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
841
+ }
842
+
843
+ /**
844
+ * Accepts an array of query arguments, retrieves them, and returns the html for those events in list view
845
+ *
846
+ * Optional inline example:
847
+ * < code >
848
+ * <?php
849
+ * echo myfunction();
850
+ * ?>
851
+ * </ code >
852
+ *
853
+ * @param array $args Args to be passed to TribeEventsQuery::getEvents()
854
+ * @param bool $initialize Whether the list view template class needs to be included and initialized
855
+ * @return string
856
+ * @author Modern Tribe
857
+ **/
858
+ function tribe_include_view_list( $args = null, $initialize = true ) {
859
+ global $wp_query;
860
+
861
+ // hijack the main query to load the events via provided $args
862
+ if ( !is_null( $args ) || ! ( $wp_query->tribe_is_event || $wp_query->tribe_is_event_category ) ) {
863
+ $reset_q = $wp_query;
864
+ $wp_query = TribeEventsQuery::getEvents( $args, true );
865
+ }
866
+
867
+ // single-event notices are jumping in on this init when loading as a module
868
+ TribeEvents::removeNotice( 'event-past' );
869
+
870
+ // get the list view template
871
+ ob_start();
872
+ if ( $initialize ) {
873
+ tribe_initialize_view('Tribe_Events_List_Template');
874
+ }
875
+ tribe_get_view('list/content');
876
+ $list_view_html = ob_get_clean();
877
+
878
+ // fix the error of our ways
879
+ if ( !empty( $reset_q ) ) {
880
+ $wp_query = $reset_q;
881
+ }
882
+
883
+ // return the parsed template
884
+ return $list_view_html;
885
+ }
886
+
887
+ /**
888
+ * Generates html for any notices that have been queued on the current view
889
+ *
890
+ * @param bool $echo Whether or not to echo the notices html
891
+ * @return void | string
892
+ * @author Modern Tribe
893
+ * @see TribeEvents::getNotices()
894
+ **/
895
+ function tribe_events_the_notices( $echo = true ) {
896
+ $notices = TribeEvents::getNotices();
897
+
898
+ $html = !empty( $notices ) ? '<div class="tribe-events-notices"><ul><li>' . implode( '</li><li>', $notices ) . '</li></ul></div>' : '';
899
+ $the_notices = apply_filters( 'tribe_events_the_notices', $html, $notices );
900
+ if ( $echo ) {
901
+ echo $the_notices;
902
+ } else {
903
+ return $the_notices;
904
+ }
905
+ }
906
+
907
+ /**
908
+ * Get a list of the views that are enabled
909
+ *
910
+ * @param array $views Default list of views
911
+ * @return array
912
+ * @author Modern Tribe
913
+ * @see tribeEnableViews option
914
+ **/
915
+ function tribe_events_enabled_views( $views ) {
916
+ $enabled_views_defaults = array();
917
+ foreach ( $views as $view ) {
918
+ $enabled_views_defaults[] = $view['displaying'];
919
+ }
920
+ return tribe_get_option( 'tribeEnableViews', $enabled_views_defaults );
921
+ }
922
+
923
+ /**
924
+ * Get a list of the views that are disabled
925
+ *
926
+ * @return array
927
+ * @author Modern Tribe
928
+ **/
929
+ function tribe_events_disabled_views() {
930
+ static $disabled;
931
+ if ( isset( $disabled ) ) {
932
+ return $disabled;
933
+ }
934
+ $views = apply_filters( 'tribe-events-bar-views', array(), false );
935
+ $enabled = tribe_events_enabled_views( $views );
936
+ $disabled = array();
937
+ foreach ( $views as $view ) {
938
+ if ( !in_array( $view['displaying'], $enabled ) ) {
939
+ if ( $view['displaying'] == 'upcoming' )
940
+ $disabled[] = 'past';
941
+ $disabled[] = $view['displaying'];
942
+ }
943
+ }
944
+ return $disabled;
945
+ }
946
+
947
+ /**
948
+ * tribe_is_bot checks if the visitor is a bot and returns status
949
+ *
950
+ * @return bool
951
+ */
952
+ function tribe_is_bot() {
953
+ // get the current user agent
954
+ $user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
955
+
956
+ // check if the user agent is empty since most browsers identify themselves, so possibly a bot
957
+ if ( empty( $user_agent ) )
958
+ return apply_filters( 'tribe_is_bot_status', true, $user_agent, null );
959
+
960
+ // declare known bot user agents (lowercase)
961
+ $user_agent_bots = (array) apply_filters( 'tribe_is_bot_list', array( 'bot', 'slurp', 'spider', 'crawler', 'yandex' ) );
962
+
963
+ foreach( $user_agent_bots as $bot ){
964
+ if( stripos($user_agent, $bot) !== false )
965
+ return apply_filters( 'tribe_is_bot_status', true, $user_agent, $bot );
966
+ }
967
+
968
+ // we think this is probably a real human
969
+ return apply_filters( 'tribe_is_bot_status', false, $user_agent, null );
970
+ }
971
+
972
+ /**
973
+ * Display the Events Calendar promo banner
974
+ *
975
+ * @param bool $echo Whether or not to echo the banner, if false, it's returned
976
+ * @return void|string
977
+ **/
978
+ function tribe_events_promo_banner( $echo = true ){
979
+ if ( tribe_get_option( 'donate-link', false ) == true && !tribe_is_bot() ) {
980
+ $promo = apply_filters( 'tribe_events_promo_banner_message', sprintf( __( 'Calendar powered by %sThe Events Calendar%s', 'tribe-events-calendar' ), '<a class="vcard url org fn" href="' . TribeEvents::$tribeUrl . 'wordpress-events-calendar/?utm_medium=plugin-tec&utm_source=banner&utm_campaign=in-app">', '</a>' ) );
981
+ $html = apply_filters( 'tribe_events_promo_banner', sprintf( '<p class="tribe-events-promo">%s</p>', $promo ), $promo );
982
+ if( $echo ) {
983
+ echo $html;
984
+ } else {
985
+ return $html;
986
+ }
987
+ }
988
+ }
989
+
990
+ /**
991
+ * Return the filters registered in the tribe bar
992
+ *
993
+ * @return array
994
+ * @author Jessica Yazbek
995
+ * @since 3.0
996
+ **/
997
+ function tribe_events_get_filters() {
998
+ return apply_filters('tribe-events-bar-filters', array());
999
+ }
1000
+
1001
+ /**
1002
+ * Return the views registered in the tribe bar
1003
+ *
1004
+ * @return array
1005
+ * @author Jessica Yazbek
1006
+ * @since 3.0
1007
+ **/
1008
+ function tribe_events_get_views() {
1009
+ return apply_filters('tribe-events-bar-views', array());
1010
+ }
1011
+
1012
+ /**
1013
+ * Count keys in a hierarchical array
1014
+ *
1015
+ * @param $value
1016
+ * @param $key
1017
+ */
1018
+ function tribe_count_hierarchical_keys( $value, $key ) {
1019
+ global $tribe_count_hierarchical_increment;
1020
+ $tribe_count_hierarchical_increment++;
1021
+ }
1022
+
1023
+ /**
1024
+ * Count items in a hierarchical array
1025
+ *
1026
+ * @param array $walk
1027
+ * @return int
1028
+ */
1029
+ function tribe_count_hierarchical( array $walk ) {
1030
+ global $tribe_count_hierarchical_increment;
1031
+ $tribe_count_hierarchical_increment = 0;
1032
+ array_walk_recursive( $walk, 'tribe_count_hierarchical_keys' );
1033
+ return $tribe_count_hierarchical_increment;
1034
+ }
1035
+
1036
+ }
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.5
7
  Tested up to: 3.6
8
- Stable tag: 3.0.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -259,6 +259,18 @@ Our Premium Plugins:
259
 
260
  3.0 is a complete overhaul of the plugin, and as a result we're starting the changelog fresh. For release notes from the 2.x lifecycle, see <a href="http://m.tri.be/k">our 2.x release notes.</a>
261
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  = 3.0.1 =
263
 
264
  * Added setting for number of events per day on month view (under Events > Settings > Display)
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 3.5
7
  Tested up to: 3.6
8
+ Stable tag: 3.0.2
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
259
 
260
  3.0 is a complete overhaul of the plugin, and as a result we're starting the changelog fresh. For release notes from the 2.x lifecycle, see <a href="http://m.tri.be/k">our 2.x release notes.</a>
261
 
262
+ = 3.0.2 =
263
+
264
+ * Fixed bug with queries that included more than one post type. This should resolve issues with "Link to Existing Content" in the WordPress editor, attaching media to posts from the Media Library, and relationship fields in the Advanced Custom Fields plugin (thanks to users KARKS88 and ANDYWILMOT for catching this!)
265
+ * Fixed 404 in page title on month view when no events are in the month, and other 404-related tweaks (thanks to CYNTHIA, JOHN and ELLAEARTH for catching these)
266
+ * CSS files in the tribe-events directory of your theme are now loaded in addition to TEC css files, instead of replacing them
267
+ * Removed Select2 dependency in the Tribe Bar
268
+ * Fixed various issues with the Events List widget (thanks to DUVALDEMOCRATS and ZAVASTORONTO for the heads up)
269
+ * Tag permalinks are no longer malformed in tag cloud widget and single event pages (thanks to MARC for catching this)
270
+ * Addressed some previously non-translatable strings in the Tribe Bar
271
+ * Long event costs no longer overflow the designed box in list view
272
+ * Various minor bug fixes
273
+
274
  = 3.0.1 =
275
 
276
  * Added setting for number of events per day on month view (under Events > Settings > Display)
resources/events-admin.min.js CHANGED
@@ -4,7 +4,7 @@ d=a(this).data("datepicker");b=a.datepicker.parseDate(d.settings.dateFormat||a.d
4
  var m=[29,31,28,31,30,31,30,31,31,30,31,30,31],p=[a("#28StartDays"),a("#29StartDays"),a("#30StartDays"),a("#31StartDays")],q=[a("#28EndDays"),a("#29EndDays"),a("#30EndDays"),a("#31EndDays")];a("select[name='EventStartMonth'], select[name='EventEndMonth']").change(function(){var b=a(this),c=b.attr("name"),c="EventStartMonth"==c?"Start":"End",b=b.attr("value");"0"==b.charAt(0)&&(b=b.replace("0",""));var d=a("select[name='Event"+c+"Year']").attr("value")%4;2==b&&0==d&&(b=0);d=a("select[name='Event"+
5
  c+"Day']");a(".event"+c+"DateField").remove();"Start"==c?(c=p[m[b]-28],c.val(d.val()),a("select[name='EventStartMonth']").after(c)):(c=q[m[b]-28],c.val(d.val()),a('select[name="EventEndMonth"]').after(c))});a("select[name='EventStartMonth'], select[name='EventEndMonth']").change();a("select[name='EventStartYear']").change(function(){a("select[name='EventStartMonth']").change()});a("select[name='EventEndYear']").change(function(){a("select[name='EventEndMonth']").change()});a("form[name='post']").submit(function(){!0===
6
  a("#isEventNo").attr("checked")||a("#isEventNo").attr("checked");return!0});var k=a(".venue"),d=a("#saved_venue");0<d.size()&&("0"!=d.val()&&!a(".nosaved").get(0))&&(k.hide(),a('[name="venue[Venue]"]').val(""));d.change(function(){"0"==a(this).val()?(k.fadeIn(),a("#EventCountry").val(0).trigger("liszt:updated"),a("#StateProvinceSelect").val(0).trigger("liszt:updated"),g("")):k.fadeOut()});var h=a(".organizer"),d=a("#saved_organizer");0<d.size()&&("0"!=d.val()&&!a(".nosaved_organizer").get(0))&&(h.hide(),
7
- a("input",h).val(""));d.change(function(){"0"==a(this).val()?h.fadeIn():h.fadeOut()})}g(a("#EventCountry > option:selected").val());a("#EventCountry").change(function(){var b=a(this).find("option:selected").val();g(b)});"true"==a('[name="is_recurring"]').val()&&!a('[name="recurrence_action"]').val()&&(d=function(){a("#recurrence-changed-row").show();a('[name="recurrence_action"]').val(2)},a(".recurrence-row input, .custom-recurrence-row input,.recurrence-row select, .custom-recurrence-row select").change(d),
8
  a('[name="recurrence[end]"]').datepicker("option","onSelect",d));a('[name="recurrence[end]"]').datepicker("option","onSelect",function(){a('[name="recurrence[end]"]').removeClass("placeholder")});a(".wp-admin.events-cal.edit-php #doaction").click(function(b){if("trash"==a("[name='action'] option:selected").val())if(confirm("Are you sure you want to trash all occurrences of these events? All recurrence data will be lost.")){var c=[];a('[name="post[]"]:checked').each(function(){var b=a(this).val();
9
  c[b]&&a(this).prop("checked",!1);c[b]=!0})}else b.preventDefault()});a("#EventInfo input, #EventInfo select").change(function(){a(".rec-error").hide()});var e=a('.wp-admin.events-cal #post #publishing-action input[type="submit"]');e.click(function(b){a(this).data("clicked",!0)});a(".wp-admin.events-cal #post").submit(function(b){var c=a(this);f()&&(b.preventDefault(),a("#recurring-dialog").dialog({modal:!0,buttons:[{text:"Only This Event",click:function(){a('[name="recurrence_action"]').val(3);e.data("clicked")&&
10
  a('<input type="hidden" name="'+e.attr("name")+'" value="'+e.val()+'"/>').appendTo(c);a(this).dialog("close");c.submit()}},{text:"All Events",click:function(){a('[name="recurrence_action"]').val(2);e.data("clicked")&&a('<input type="hidden" name="'+e.attr("name")+'" value="'+e.val()+'"/>').appendTo(c);a(this).dialog("close");c.submit()}}],close:function(){e.data("clicked",null)}}))});a(".wp-admin.events-cal .submitdelete").click(function(b){var c=a(this);f()&&(b.preventDefault(),a("#deletion-dialog").dialog({modal:!0,
@@ -13,5 +13,5 @@ a("#recurrence-end").show(),a("#custom-recurrence-frequency").hide())});a('[name
13
  a("#recurrence_end_count").change(function(){a('[name="recurrence[type]"]').change()});a('[name="recurrence[type]"]').change(function(){var b=a(this).find("option:selected"),c=a("#recurrence_end_count").val();a("#occurence-count-text").text(1==c?b.data("single"):b.data("plural"));a('[name="recurrence[occurrence-count-text]"]').val(a("#occurence-count-text").text())});a('[name="recurrence[custom-month-number]"]').change(function(){var b=a(this).find("option:selected"),c=a('[name="recurrence[custom-month-day]"]');
14
  isNaN(b.val())?c.show():c.hide()});a("#icon-edit").hasClass("icon32-posts-tribe_venue")&&a("#menu-posts-tribe_events, #menu-posts-tribe_events a.wp-has-submenu").addClass("wp-menu-open wp-has-current-submenu").removeClass("wp-not-current-submenu").find("li:contains('Venues')").addClass("current");a("#icon-edit").hasClass("icon32-posts-tribe_organizer")&&a("#menu-posts-tribe_events, #menu-posts-tribe_events a.wp-has-submenu").addClass("wp-menu-open wp-has-current-submenu").removeClass("wp-not-current-submenu").find("li:contains('Organizers')").addClass("current");
15
  if(a("#tribe-field-tribeEnableViews").length)a("#tribe-field-tribeEnableViews").on("change","input:checkbox",function(){reset_val=!1;1>jQuery('[name="tribeEnableViews[]"]:checked').size()?(a(this).attr("checked",!0),a("#tribe-field-tribeEnableViews .tribe-field-wrap p.description").css("color","red")):a("#tribe-field-tribeEnableViews .tribe-field-wrap p.description").removeAttr("style");a('select[name="viewOption"] option').each(function(b,c){option_val=a(this).val();a("#tribe-field-tribeEnableViews input[value="+
16
- option_val+"]").is(":checked")?a(this).prop("disabled",!1):(a(this).removeProp("selected"),a(this).prop("disabled",!0))});views=[];a('[name="tribeEnableViews[]"]:checked').each(function(){views.push(a(this).val())});("undefined"==typeof a('select[name="viewOption"] option:selected').first().val()||!a.inArray(a('select[name="viewOption"] option:selected').first().val(),views))&&a('select[name="viewOption"] option').not(":disabled").first().attr("selected","selected");a('select[name="viewOption"]').trigger("change")})});
17
  jQuery(document).ajaxSuccess(function(a,g,f){"undefined"!==typeof f&&("undefined"!==typeof f.data&&-1!=f.data.search("action=save-widget"))&&jQuery("#widgets-right .chosen").chosen()});
4
  var m=[29,31,28,31,30,31,30,31,31,30,31,30,31],p=[a("#28StartDays"),a("#29StartDays"),a("#30StartDays"),a("#31StartDays")],q=[a("#28EndDays"),a("#29EndDays"),a("#30EndDays"),a("#31EndDays")];a("select[name='EventStartMonth'], select[name='EventEndMonth']").change(function(){var b=a(this),c=b.attr("name"),c="EventStartMonth"==c?"Start":"End",b=b.attr("value");"0"==b.charAt(0)&&(b=b.replace("0",""));var d=a("select[name='Event"+c+"Year']").attr("value")%4;2==b&&0==d&&(b=0);d=a("select[name='Event"+
5
  c+"Day']");a(".event"+c+"DateField").remove();"Start"==c?(c=p[m[b]-28],c.val(d.val()),a("select[name='EventStartMonth']").after(c)):(c=q[m[b]-28],c.val(d.val()),a('select[name="EventEndMonth"]').after(c))});a("select[name='EventStartMonth'], select[name='EventEndMonth']").change();a("select[name='EventStartYear']").change(function(){a("select[name='EventStartMonth']").change()});a("select[name='EventEndYear']").change(function(){a("select[name='EventEndMonth']").change()});a("form[name='post']").submit(function(){!0===
6
  a("#isEventNo").attr("checked")||a("#isEventNo").attr("checked");return!0});var k=a(".venue"),d=a("#saved_venue");0<d.size()&&("0"!=d.val()&&!a(".nosaved").get(0))&&(k.hide(),a('[name="venue[Venue]"]').val(""));d.change(function(){"0"==a(this).val()?(k.fadeIn(),a("#EventCountry").val(0).trigger("liszt:updated"),a("#StateProvinceSelect").val(0).trigger("liszt:updated"),g("")):k.fadeOut()});var h=a(".organizer"),d=a("#saved_organizer");0<d.size()&&("0"!=d.val()&&!a(".nosaved_organizer").get(0))&&(h.hide(),
7
+ a("input",h).val(""));d.change(function(){"0"==a(this).val()?h.fadeIn():h.fadeOut()})}g(a("#EventCountry > option:selected").val());a("#EventCountry").change(function(){var b=a(this).find("option:selected").val();g(b)});"true"!=a('[name="is_recurring"]').val()||a('[name="recurrence_action"]').val()||(d=function(){a("#recurrence-changed-row").show();a('[name="recurrence_action"]').val(2)},a(".recurrence-row input, .custom-recurrence-row input,.recurrence-row select, .custom-recurrence-row select").change(d),
8
  a('[name="recurrence[end]"]').datepicker("option","onSelect",d));a('[name="recurrence[end]"]').datepicker("option","onSelect",function(){a('[name="recurrence[end]"]').removeClass("placeholder")});a(".wp-admin.events-cal.edit-php #doaction").click(function(b){if("trash"==a("[name='action'] option:selected").val())if(confirm("Are you sure you want to trash all occurrences of these events? All recurrence data will be lost.")){var c=[];a('[name="post[]"]:checked').each(function(){var b=a(this).val();
9
  c[b]&&a(this).prop("checked",!1);c[b]=!0})}else b.preventDefault()});a("#EventInfo input, #EventInfo select").change(function(){a(".rec-error").hide()});var e=a('.wp-admin.events-cal #post #publishing-action input[type="submit"]');e.click(function(b){a(this).data("clicked",!0)});a(".wp-admin.events-cal #post").submit(function(b){var c=a(this);f()&&(b.preventDefault(),a("#recurring-dialog").dialog({modal:!0,buttons:[{text:"Only This Event",click:function(){a('[name="recurrence_action"]').val(3);e.data("clicked")&&
10
  a('<input type="hidden" name="'+e.attr("name")+'" value="'+e.val()+'"/>').appendTo(c);a(this).dialog("close");c.submit()}},{text:"All Events",click:function(){a('[name="recurrence_action"]').val(2);e.data("clicked")&&a('<input type="hidden" name="'+e.attr("name")+'" value="'+e.val()+'"/>').appendTo(c);a(this).dialog("close");c.submit()}}],close:function(){e.data("clicked",null)}}))});a(".wp-admin.events-cal .submitdelete").click(function(b){var c=a(this);f()&&(b.preventDefault(),a("#deletion-dialog").dialog({modal:!0,
13
  a("#recurrence_end_count").change(function(){a('[name="recurrence[type]"]').change()});a('[name="recurrence[type]"]').change(function(){var b=a(this).find("option:selected"),c=a("#recurrence_end_count").val();a("#occurence-count-text").text(1==c?b.data("single"):b.data("plural"));a('[name="recurrence[occurrence-count-text]"]').val(a("#occurence-count-text").text())});a('[name="recurrence[custom-month-number]"]').change(function(){var b=a(this).find("option:selected"),c=a('[name="recurrence[custom-month-day]"]');
14
  isNaN(b.val())?c.show():c.hide()});a("#icon-edit").hasClass("icon32-posts-tribe_venue")&&a("#menu-posts-tribe_events, #menu-posts-tribe_events a.wp-has-submenu").addClass("wp-menu-open wp-has-current-submenu").removeClass("wp-not-current-submenu").find("li:contains('Venues')").addClass("current");a("#icon-edit").hasClass("icon32-posts-tribe_organizer")&&a("#menu-posts-tribe_events, #menu-posts-tribe_events a.wp-has-submenu").addClass("wp-menu-open wp-has-current-submenu").removeClass("wp-not-current-submenu").find("li:contains('Organizers')").addClass("current");
15
  if(a("#tribe-field-tribeEnableViews").length)a("#tribe-field-tribeEnableViews").on("change","input:checkbox",function(){reset_val=!1;1>jQuery('[name="tribeEnableViews[]"]:checked').size()?(a(this).attr("checked",!0),a("#tribe-field-tribeEnableViews .tribe-field-wrap p.description").css("color","red")):a("#tribe-field-tribeEnableViews .tribe-field-wrap p.description").removeAttr("style");a('select[name="viewOption"] option').each(function(b,c){option_val=a(this).val();a("#tribe-field-tribeEnableViews input[value="+
16
+ option_val+"]").is(":checked")?a(this).prop("disabled",!1):(a(this).removeProp("selected"),a(this).prop("disabled",!0))});views=[];a('[name="tribeEnableViews[]"]:checked').each(function(){views.push(a(this).val())});"undefined"!=typeof a('select[name="viewOption"] option:selected').first().val()&&a.inArray(a('select[name="viewOption"] option:selected').first().val(),views)||a('select[name="viewOption"] option').not(":disabled").first().attr("selected","selected");a('select[name="viewOption"]').trigger("change")})});
17
  jQuery(document).ajaxSuccess(function(a,g,f){"undefined"!==typeof f&&("undefined"!==typeof f.data&&-1!=f.data.search("action=save-widget"))&&jQuery("#widgets-right .chosen").chosen()});
resources/tickets.min.js CHANGED
@@ -1,12 +1,12 @@
1
  var ticketHeaderImage=window.ticketHeaderImage||{};
2
  (function(m,a,n){ticketHeaderImage={uploader:function(){var a=wp.media({title:HeaderImageData.title,multiple:!1,library:{type:"image"},button:{text:HeaderImageData.button}});a.on("close",function(){var c=a.state().get("selection").toJSON();c.length&&ticketHeaderImage.render(c[0])});a.open();return!1},render:function(e){a("#tribe_ticket_header_preview").html(ticketHeaderImage.imgHTML(e));a("#tribe_ticket_header_image_id").val(e.id);a("#tribe_ticket_header_remove").show()},imgHTML:function(a){var c=
3
  '<img src="'+a.url+'" ',c=c+('width="'+a.width+'" '),c=c+('height="'+a.height+'" ');return c+"/>"}};a(document).ready(function(){function e(){a("a#ticket_form_toggle").show();a("#ticket_form input:not(:button):not(:radio):not(:checkbox)").val("");a("#ticket_form input:checkbox").attr("checked",!1);a("#ticket_form textarea").val("");a("#ticket_form").hide()}function c(){jQuery("#event_tickets").css("opacity","0.5");jQuery("#tribe-loading").show()}function g(){jQuery("#event_tickets").css("opacity",
4
- "1");jQuery("#tribe-loading").hide()}var f={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,showButtonPanel:!0,onChange:function(){alert("lala")},onSelect:function(b,l){var d=a.datepicker.parseDate("yy-mm-dd",b);"ticket_start_date"===l.id?a("#ticket_end_date").datepicker("option","minDate",d):a("#ticket_start_date").datepicker("option","maxDate",d)}};a("#ticket_start_date").datepicker(f).keyup(function(b){(8==b.keyCode||46==b.keyCode)&&a.datepicker._clearDate(this)});
5
- a("#ticket_end_date").datepicker(f).keyup(function(b){(8==b.keyCode||46==b.keyCode)&&a.datepicker._clearDate(this)});a("input[name=ticket_provider]:radio").change(function(){a("tr.ticket_advanced").hide();a("tr.ticket_advanced_"+this.value).show()});a("input[name=ticket_provider]:checked").each(function(){a("tr.ticket_advanced").hide();a("tr.ticket_advanced_"+this.value).show()});a("a#ticket_form_toggle").click(function(b){a("h4.ticket_form_title_edit").hide();a("h4.ticket_form_title_add").show();
6
- a(this).hide();e();a("#ticket_form").show();a("html, body").animate({scrollTop:a("#ticket_form_table").offset().top-50},500);b.preventDefault()});a("#ticket_form_cancel").click(function(){e();a("html, body").animate({scrollTop:a("#event_tickets").offset().top-50},500)});a("#ticket_form_save").click(function(){c();var b={action:"tribe-ticket-add-"+a("input[name=ticket_provider]:checked").val(),formdata:a(".ticket_field").serialize(),post_ID:a("#post_ID").val(),nonce:TribeTickets.add_ticket_nonce};
7
- a.post(ajaxurl,b,function(b){b.success&&(e(),a("td.ticket_list_container").empty().html(b.data))},"json").complete(function(){a("html, body").animate({scrollTop:a("#event_tickets").offset().top-50},500);g()})});a("#tribetickets").on("click",".ticket_delete",function(b){b.preventDefault();c();b={action:"tribe-ticket-delete-"+a(this).attr("attr-provider"),post_ID:a("#post_ID").val(),ticket_id:a(this).attr("attr-ticket-id"),nonce:TribeTickets.remove_ticket_nonce};a.post(ajaxurl,b,function(b){b.success&&
8
- (e(),a("td.ticket_list_container").empty().html(b.data))},"json").complete(function(){g()})});a("#tribetickets").on("click",".ticket_edit",function(b){b.preventDefault();a("h4.ticket_form_title_edit").show();a("h4.ticket_form_title_add").hide();c();b={action:"tribe-ticket-edit-"+a(this).attr("attr-provider"),post_ID:a("#post_ID").val(),ticket_id:a(this).attr("attr-ticket-id"),nonce:TribeTickets.edit_ticket_nonce};a.post(ajaxurl,b,function(b){e();a("#ticket_id").val(b.data.ID);a("#ticket_name").val(b.data.name);
9
- a("#ticket_description").val(b.data.description);a("#ticket_price").val(b.data.price);a("#ticket_start_date").val(b.data.start_date.substring(0,10));a("#ticket_end_date").val(b.data.end_date.substring(0,10));if(b.data.start_date){var d=b.data.start_date.substring(11,13),c="am";12<parseInt(d)&&(c="pm",d=parseInt(d)-12,d=("0"+d).slice(-2));12===parseInt(d)&&(c="pm");a("#ticket_start_hour").val(d);a("#ticket_start_meridian").val(c)}b.data.end_date&&(d=b.data.end_date.substring(11,13),c="am",12<parseInt(d)&&
10
- (c="pm",d=parseInt(d)-12,d=("0"+d).slice(-2)),12===parseInt(d)&&(c="pm"),a("#ticket_end_hour").val(d),a("#ticket_end_meridian").val(c),a("#ticket_start_minute").val(b.data.start_date.substring(14,16)),a("#ticket_end_minute").val(b.data.end_date.substring(14,16)));a("tr.ticket_advanced_"+b.data.provider_class).remove();a("tr.ticket.bottom").before(b.data.advanced_fields);a("input:radio[name=ticket_provider]").filter("[value="+b.data.provider_class+"]").click();a("a#ticket_form_toggle").hide();a("#ticket_form").show()},
11
- "json").complete(function(){a("html, body").animate({scrollTop:a("#ticket_form_table").offset().top-50},500);g()})}).on("click","#tribe_ticket_header_image",function(a){a.preventDefault();ticketHeaderImage.uploader("","")});var h=a("#tribe_ticket_header_remove"),k=a("#tribe_ticket_header_preview");k.find("img").length&&h.show();h.live("click",function(b){b.preventDefault();k.html("");h.hide();a("#tribe_ticket_header_image_id").val("")});a("#tribe_ticket_header_preview img").length&&(f=a("#tribe_ticket_header_preview img"),
12
- f.removeAttr("width").removeAttr("height"),a("#tribetickets").width()<f.width()&&f.css("width","95%"))})})(window,jQuery);
1
  var ticketHeaderImage=window.ticketHeaderImage||{};
2
  (function(m,a,n){ticketHeaderImage={uploader:function(){var a=wp.media({title:HeaderImageData.title,multiple:!1,library:{type:"image"},button:{text:HeaderImageData.button}});a.on("close",function(){var c=a.state().get("selection").toJSON();c.length&&ticketHeaderImage.render(c[0])});a.open();return!1},render:function(e){a("#tribe_ticket_header_preview").html(ticketHeaderImage.imgHTML(e));a("#tribe_ticket_header_image_id").val(e.id);a("#tribe_ticket_header_remove").show()},imgHTML:function(a){var c=
3
  '<img src="'+a.url+'" ',c=c+('width="'+a.width+'" '),c=c+('height="'+a.height+'" ');return c+"/>"}};a(document).ready(function(){function e(){a("a#ticket_form_toggle").show();a("#ticket_form input:not(:button):not(:radio):not(:checkbox)").val("");a("#ticket_form input:checkbox").attr("checked",!1);a("#ticket_form textarea").val("");a("#ticket_form").hide()}function c(){jQuery("#event_tickets").css("opacity","0.5");jQuery("#tribe-loading").show()}function g(){jQuery("#event_tickets").css("opacity",
4
+ "1");jQuery("#tribe-loading").hide()}var f={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,showButtonPanel:!0,onChange:function(){alert("lala")},onSelect:function(b,l){var d=a.datepicker.parseDate("yy-mm-dd",b);"ticket_start_date"===l.id?a("#ticket_end_date").datepicker("option","minDate",d):a("#ticket_start_date").datepicker("option","maxDate",d)}};a("#ticket_start_date").datepicker(f).keyup(function(b){8!=b.keyCode&&46!=b.keyCode||a.datepicker._clearDate(this)});
5
+ a("#ticket_end_date").datepicker(f).keyup(function(b){8!=b.keyCode&&46!=b.keyCode||a.datepicker._clearDate(this)});a("input[name=ticket_provider]:radio").change(function(){a("tr.ticket_advanced").hide();a("tr.ticket_advanced_"+this.value).show()});a("input[name=ticket_provider]:checked").each(function(){a("tr.ticket_advanced").hide();a("tr.ticket_advanced_"+this.value).show()});a("a#ticket_form_toggle").click(function(b){a("h4.ticket_form_title_edit").hide();a("h4.ticket_form_title_add").show();a(this).hide();
6
+ e();a("#ticket_form").show();a("html, body").animate({scrollTop:a("#ticket_form_table").offset().top-50},500);b.preventDefault()});a("#ticket_form_cancel").click(function(){e();a("html, body").animate({scrollTop:a("#event_tickets").offset().top-50},500)});a("#ticket_form_save").click(function(){c();var b={action:"tribe-ticket-add-"+a("input[name=ticket_provider]:checked").val(),formdata:a(".ticket_field").serialize(),post_ID:a("#post_ID").val(),nonce:TribeTickets.add_ticket_nonce};a.post(ajaxurl,
7
+ b,function(b){b.success&&(e(),a("td.ticket_list_container").empty().html(b.data))},"json").complete(function(){a("html, body").animate({scrollTop:a("#event_tickets").offset().top-50},500);g()})});a("#tribetickets").on("click",".ticket_delete",function(b){b.preventDefault();c();b={action:"tribe-ticket-delete-"+a(this).attr("attr-provider"),post_ID:a("#post_ID").val(),ticket_id:a(this).attr("attr-ticket-id"),nonce:TribeTickets.remove_ticket_nonce};a.post(ajaxurl,b,function(b){b.success&&(e(),a("td.ticket_list_container").empty().html(b.data))},
8
+ "json").complete(function(){g()})});a("#tribetickets").on("click",".ticket_edit",function(b){b.preventDefault();a("h4.ticket_form_title_edit").show();a("h4.ticket_form_title_add").hide();c();b={action:"tribe-ticket-edit-"+a(this).attr("attr-provider"),post_ID:a("#post_ID").val(),ticket_id:a(this).attr("attr-ticket-id"),nonce:TribeTickets.edit_ticket_nonce};a.post(ajaxurl,b,function(b){e();a("#ticket_id").val(b.data.ID);a("#ticket_name").val(b.data.name);a("#ticket_description").val(b.data.description);
9
+ a("#ticket_price").val(b.data.price);a("#ticket_start_date").val(b.data.start_date.substring(0,10));a("#ticket_end_date").val(b.data.end_date.substring(0,10));if(b.data.start_date){var d=b.data.start_date.substring(11,13),c="am";12<parseInt(d)&&(c="pm",d=parseInt(d)-12,d=("0"+d).slice(-2));12===parseInt(d)&&(c="pm");a("#ticket_start_hour").val(d);a("#ticket_start_meridian").val(c)}b.data.end_date&&(d=b.data.end_date.substring(11,13),c="am",12<parseInt(d)&&(c="pm",d=parseInt(d)-12,d=("0"+d).slice(-2)),
10
+ 12===parseInt(d)&&(c="pm"),a("#ticket_end_hour").val(d),a("#ticket_end_meridian").val(c),a("#ticket_start_minute").val(b.data.start_date.substring(14,16)),a("#ticket_end_minute").val(b.data.end_date.substring(14,16)));a("tr.ticket_advanced_"+b.data.provider_class).remove();a("tr.ticket.bottom").before(b.data.advanced_fields);a("input:radio[name=ticket_provider]").filter("[value="+b.data.provider_class+"]").click();a("a#ticket_form_toggle").hide();a("#ticket_form").show()},"json").complete(function(){a("html, body").animate({scrollTop:a("#ticket_form_table").offset().top-
11
+ 50},500);g()})}).on("click","#tribe_ticket_header_image",function(a){a.preventDefault();ticketHeaderImage.uploader("","")});var h=a("#tribe_ticket_header_remove"),k=a("#tribe_ticket_header_preview");k.find("img").length&&h.show();h.live("click",function(b){b.preventDefault();k.html("");h.hide();a("#tribe_ticket_header_image_id").val("")});a("#tribe_ticket_header_preview img").length&&(f=a("#tribe_ticket_header_preview img"),f.removeAttr("width").removeAttr("height"),a("#tribetickets").width()<f.width()&&
12
+ f.css("width","95%"))})})(window,jQuery);
resources/tribe-events-bar.js CHANGED
@@ -38,6 +38,7 @@ var tribe_events_bar_action;
38
  $(document).ready(function () {
39
  var $tribebar = $('#tribe-bar-form'),
40
  $tribedate = $('#tribe-bar-date');
 
41
 
42
  /**
43
  * @function eventsBarWidth
@@ -102,13 +103,67 @@ var tribe_events_bar_action;
102
  $('#tribe-events-bar').addClass('tribe-has-datepicker');
103
  }
104
 
105
- // Implement placeholder
106
- $('input[name*="tribe-bar-"]').placeholder();
107
-
108
  // Implement select2
109
  function format(view) {
110
  return '<span class="tribe-icon-' + $.trim(view.text.toLowerCase()) + '">' + view.text + '</span>';
111
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
 
114
  // trying to add a unique class to the select2 dropdown if the tribe bar is mini
@@ -133,18 +188,6 @@ var tribe_events_bar_action;
133
  }
134
  }
135
 
136
- $('#tribe-bar-views .tribe-select2').select2(select2_opts);
137
-
138
- $tribebar.on('click', '#tribe-bar-views', function (e) {
139
- e.stopPropagation();
140
- var $this = $(this);
141
- $this.toggleClass('tribe-bar-views-open');
142
- if (!$this.is('.tribe-bar-views-open'))
143
- $('#tribe-bar-views .tribe-select2').select2('close');
144
- else
145
- $('#tribe-bar-views .tribe-select2').select2('open');
146
- });
147
-
148
  $tribebar.on('click', '#tribe-bar-collapse-toggle', function () {
149
  $(this).toggleClass('tribe-bar-filters-open');
150
  $('.tribe-bar-filters').slideToggle('fast');
@@ -162,7 +205,7 @@ var tribe_events_bar_action;
162
 
163
 
164
  // Implement our views bit
165
- $('select[name=tribe-bar-view]').change(function () {
166
  ts.cur_url = $(this).val();
167
  ts.view_target = $('select[name=tribe-bar-view] option[value="' + ts.cur_url + '"]').data('view');
168
  tribe_events_bar_action = 'change_view';
38
  $(document).ready(function () {
39
  var $tribebar = $('#tribe-bar-form'),
40
  $tribedate = $('#tribe-bar-date');
41
+ $tribebarselect = $('select[name=tribe-bar-view]');
42
 
43
  /**
44
  * @function eventsBarWidth
103
  $('#tribe-events-bar').addClass('tribe-has-datepicker');
104
  }
105
 
 
 
 
106
  // Implement select2
107
  function format(view) {
108
  return '<span class="tribe-icon-' + $.trim(view.text.toLowerCase()) + '">' + view.text + '</span>';
109
  }
110
+ // Implement placeholder
111
+ $('input[name*="tribe-bar-"]').placeholder();
112
+
113
+ // Create list
114
+ $('<ul class="tribe-bar-views-list" />').insertAfter( $tribebarselect );
115
+
116
+ var $tribebarviews = $('.tribe-bar-views-list');
117
+
118
+ // Create list from select options
119
+ $tribebarselect.find('option').each(function(i){
120
+ view = this;
121
+ // build list items and append them
122
+ $('<li></li>', {
123
+ 'class': 'tribe-bar-views-option',
124
+ 'data-tribe-bar-order': i,
125
+ 'data-view': $(view).data('view')
126
+ }).html([
127
+ ' <a href="#" onclick="return false;">',
128
+ ' <span class="tribe-icon-' + $.trim(view.text.toLowerCase()) + '">' + view.text + '</span>',
129
+ '</a>'].join("")
130
+ ).appendTo( '.tribe-bar-views-list' );
131
+
132
+ });
133
+
134
+ //find the current view and select it in the bar
135
+ var selectedView = $tribebarselect.find(':selected').data('view');
136
+ $selectedListItem = $tribebarviews.find('li[data-view='+ selectedView +']');
137
+ $selectedListItem.prependTo($tribebarviews).addClass('tribe-bar-active');
138
+
139
+ // toggle the views dropdown
140
+ $tribebar.on('click', '#tribe-bar-views', function (e) {
141
+ e.stopPropagation();
142
+ var $this = $(this);
143
+ $this.toggleClass('tribe-bar-views-open');
144
+ });
145
+
146
+ // change views
147
+ $tribebar.on('click', '.tribe-bar-views-option', function(e) {
148
+ var $this = $(this);
149
+ if ( !$this.is('.tribe-bar-active') ) {
150
+
151
+ //when selecting a new view, move the current view back to it's original spot
152
+ $currentView = $('.tribe-bar-active');
153
+ currentViewOrder = $currentView.data('tribe-bar-order');
154
+ moveCurrentTo = currentViewOrder - 1;
155
+
156
+ $currentView.removeClass('tribe-bar-active').insertAfter('li[data-tribe-bar-order=' + moveCurrentTo + ']');
157
+ $this.prependTo('ul.tribe-bar-views-list').addClass('tribe-bar-active');
158
+
159
+ // select new view
160
+ newView = $this.data('view');
161
+ $('option:selected', $tribebarselect).removeAttr('selected');
162
+ $('option[data-view='+ newView +']').attr('selected', true);
163
+ $tribebarselect.change();
164
+
165
+ }
166
+ });
167
 
168
 
169
  // trying to add a unique class to the select2 dropdown if the tribe bar is mini
188
  }
189
  }
190
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  $tribebar.on('click', '#tribe-bar-collapse-toggle', function () {
192
  $(this).toggleClass('tribe-bar-filters-open');
193
  $('.tribe-bar-filters').slideToggle('fast');
205
 
206
 
207
  // Implement our views bit
208
+ $tribebarselect.change(function () {
209
  ts.cur_url = $(this).val();
210
  ts.view_target = $('select[name=tribe-bar-view] option[value="' + ts.cur_url + '"]').data('view');
211
  tribe_events_bar_action = 'change_view';
resources/tribe-events-bar.min.js CHANGED
@@ -1,11 +1,12 @@
1
  var tribe_events_bar_action;
2
- (function(t,n,b,f,g,u,c,h,m){m&&(b().bootstrapDatepicker||debug.warn("TEC Debug: vendor bootstrapDatepicker was not loaded before its dependant file tribe-events-bar.js"),b().placeholder||debug.warn("TEC Debug: vendor placeholder was not loaded before its dependant file tribe-events-bar.js"),b().select2||debug.warn("TEC Debug: vendor select2 was not loaded before its dependant file tribe-events-bar.js"));b(n).ready(function(){function p(a){if(!a.parents(".tribe-bar-disabled").length){var b=a.width();
3
- 800<b?a.removeClass("tribe-bar-mini tribe-bar-collapse").addClass("tribe-bar-full"):a.removeClass("tribe-bar-full").addClass("tribe-bar-mini");670>b?a.removeClass("tribe-bar-mini").addClass("tribe-bar-collapse"):a.removeClass("tribe-bar-collapse")}}function k(a){return'<span class="tribe-icon-'+b.trim(a.text.toLowerCase())+'">'+a.text+"</span>"}function q(){tribe_events_bar_action="change_view";if("month"===c.view&&d.length){var a=d.val();7===a.length&&d.val(a+u.get_day())}c.url_params={};b(g).trigger("tribe_ev_preCollectBarParams");
4
- b("#tribe-bar-form input").each(function(){var a=b(this);a.val().length&&!a.hasClass("tribe-no-param")&&(a.is(":checkbox")?a.is(":checked")&&(c.url_params[a.attr("name")]=a.val()):c.url_params[a.attr("name")]=a.val())});c.url_params=b.param(c.url_params);b(g).trigger("tribe_ev_postCollectBarParams");c.url_params.length&&(c.cur_url+=h.starting_delim()+c.url_params);t.location.href=c.cur_url}var e=b("#tribe-bar-form"),d=b("#tribe-bar-date");p(e);e.resize(function(){p(e)});if(!b(".tribe-events-week-grid").length&&
5
- (!b(".events-gridview").length||h.map_view())){m&&debug.info('TEC Debug: bootstrapDatepicker was just initialized in "tribe-events-bar.js" on:',d);var v=d.bootstrapDatepicker({format:"yyyy-mm-dd",showAnim:"fadeIn"}).on("changeDate",function(){v.hide()}).data("datepicker")}d.blur(function(){""===d.val()&&(b(".datepicker.dropdown-menu").is(":hidden")&&h.live_ajax()&&h.pushstate)&&(c.date=f.cur_date,f.cur_url=f.base_url,b(g).trigger("tribe_ev_runAjax"))});b(".tribe-bar-settings").length&&b("#tribe-events-bar").addClass("tribe-has-settings");
6
- b("#tribe-events-bar .hasDatepicker").length&&b("#tribe-events-bar").addClass("tribe-has-datepicker");b('input[name*="tribe-bar-"]').placeholder();var r={},r=e.is(".tribe-bar-mini")?{placeholder:"Views",dropdownCssClass:"tribe-select2-results-views tribe-bar-mini-select2-results",minimumResultsForSearch:9999,formatResult:k,formatSelection:k}:{placeholder:"Views",dropdownCssClass:"tribe-select2-results-views",minimumResultsForSearch:9999,formatResult:k,formatSelection:k};b("#tribe-bar-views .tribe-select2").select2(r);
7
- e.on("click","#tribe-bar-views",function(a){a.stopPropagation();a=b(this);a.toggleClass("tribe-bar-views-open");a.is(".tribe-bar-views-open")?b("#tribe-bar-views .tribe-select2").select2("open"):b("#tribe-bar-views .tribe-select2").select2("close")});e.on("click","#tribe-bar-collapse-toggle",function(){b(this).toggleClass("tribe-bar-filters-open");b(".tribe-bar-filters").slideToggle("fast")});b("body").on("click",function(){b("#tribe-bar-views").removeClass("tribe-bar-views-closed")});b('label[for="tribe-bar-date"], input[name="tribe-bar-date"]').wrapAll('<div id="tribe-bar-dates" />');
8
- b("#tribe-bar-filters").before(b("#tribe-bar-dates"));b("select[name=tribe-bar-view]").change(function(){c.cur_url=b(this).val();c.view_target=b('select[name=tribe-bar-view] option[value="'+c.cur_url+'"]').data("view");tribe_events_bar_action="change_view";q()});b("a.tribe-bar-view").on("click",function(a){a.preventDefault();a=b(this);var c=a.data("view");q(a.attr("href"),c)});b(g).on("tribe_ev_serializeBar",function(){b("form#tribe-bar-form input, #tribeHideRecurrence").each(function(){var a=b(this);
9
- a.is("#tribe-bar-date")&&(a.val().length?(c.params[a.attr("name")]=a.val(),c.url_params[a.attr("name")]=a.val()):c.date=f.cur_date);a.val().length&&(!a.hasClass("tribe-no-param")&&!a.is("#tribe-bar-date"))&&(a.is(":checkbox")?a.is(":checked")&&(c.params[a.attr("name")]=a.val(),"map"!==c.view&&(c.url_params[a.attr("name")]=a.val()),("month"===c.view||"day"===c.view||"week"===c.view||c.recurrence)&&c.pushcount++):(c.params[a.attr("name")]=a.val(),"map"!==c.view&&(c.url_params[a.attr("name")]=a.val()),
10
- ("month"===c.view||"day"===c.view||"week"===c.view)&&c.pushcount++))})});var l=b('#tribe-events-bar [class^="tribe-bar-button-"]'),s=l.next(".tribe-bar-drop-content");l.click(function(){var a=b(this);a.toggleClass("open");a.next(".tribe-bar-drop-content").toggle();return!1});b(n).click(function(){l.hasClass("open")&&(l.removeClass("open"),s.hide())});s.click(function(a){a.stopPropagation()});m&&debug.info("TEC Debug: tribe-events-bar.js successfully loaded")})})(window,document,jQuery,tribe_ev.data,
11
- tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
 
1
  var tribe_events_bar_action;
2
+ (function(s,m,a,f,g,t,c,h,l){l&&(a().bootstrapDatepicker||debug.warn("TEC Debug: vendor bootstrapDatepicker was not loaded before its dependant file tribe-events-bar.js"),a().placeholder||debug.warn("TEC Debug: vendor placeholder was not loaded before its dependant file tribe-events-bar.js"),a().select2||debug.warn("TEC Debug: vendor select2 was not loaded before its dependant file tribe-events-bar.js"));a(m).ready(function(){function n(a){if(!a.parents(".tribe-bar-disabled").length){var c=a.width();
3
+ 800<c?a.removeClass("tribe-bar-mini tribe-bar-collapse").addClass("tribe-bar-full"):a.removeClass("tribe-bar-full").addClass("tribe-bar-mini");670>c?a.removeClass("tribe-bar-mini").addClass("tribe-bar-collapse"):a.removeClass("tribe-bar-collapse")}}function p(){tribe_events_bar_action="change_view";if("month"===c.view&&d.length){var b=d.val();7===b.length&&d.val(b+t.get_day())}c.url_params={};a(g).trigger("tribe_ev_preCollectBarParams");a("#tribe-bar-form input").each(function(){var b=a(this);b.val().length&&
4
+ !b.hasClass("tribe-no-param")&&(b.is(":checkbox")?b.is(":checked")&&(c.url_params[b.attr("name")]=b.val()):c.url_params[b.attr("name")]=b.val())});c.url_params=a.param(c.url_params);a(g).trigger("tribe_ev_postCollectBarParams");c.url_params.length&&(c.cur_url+=h.starting_delim()+c.url_params);s.location.href=c.cur_url}var e=a("#tribe-bar-form"),d=a("#tribe-bar-date");$tribebarselect=a("select[name=tribe-bar-view]");n(e);e.resize(function(){n(e)});if(!a(".tribe-events-week-grid").length&&(!a(".events-gridview").length||
5
+ h.map_view())){l&&debug.info('TEC Debug: bootstrapDatepicker was just initialized in "tribe-events-bar.js" on:',d);var u=d.bootstrapDatepicker({format:"yyyy-mm-dd",showAnim:"fadeIn"}).on("changeDate",function(){u.hide()}).data("datepicker")}d.blur(function(){""===d.val()&&(a(".datepicker.dropdown-menu").is(":hidden")&&h.live_ajax()&&h.pushstate)&&(c.date=f.cur_date,f.cur_url=f.base_url,a(g).trigger("tribe_ev_runAjax"))});a(".tribe-bar-settings").length&&a("#tribe-events-bar").addClass("tribe-has-settings");
6
+ a("#tribe-events-bar .hasDatepicker").length&&a("#tribe-events-bar").addClass("tribe-has-datepicker");a('input[name*="tribe-bar-"]').placeholder();a('<ul class="tribe-bar-views-list" />').insertAfter($tribebarselect);var q=a(".tribe-bar-views-list");$tribebarselect.find("option").each(function(b){view=this;a("<li></li>",{"class":"tribe-bar-views-option","data-tribe-bar-order":b,"data-view":a(view).data("view")}).html([' <a href="#" onclick="return false;">',' <span class="tribe-icon-'+a.trim(view.text.toLowerCase())+
7
+ '">'+view.text+"</span>","</a>"].join("")).appendTo(".tribe-bar-views-list")});var v=$tribebarselect.find(":selected").data("view");$selectedListItem=q.find("li[data-view="+v+"]");$selectedListItem.prependTo(q).addClass("tribe-bar-active");e.on("click","#tribe-bar-views",function(b){b.stopPropagation();a(this).toggleClass("tribe-bar-views-open")});e.on("click",".tribe-bar-views-option",function(b){b=a(this);b.is(".tribe-bar-active")||($currentView=a(".tribe-bar-active"),currentViewOrder=$currentView.data("tribe-bar-order"),
8
+ moveCurrentTo=currentViewOrder-1,$currentView.removeClass("tribe-bar-active").insertAfter("li[data-tribe-bar-order="+moveCurrentTo+"]"),b.prependTo("ul.tribe-bar-views-list").addClass("tribe-bar-active"),newView=b.data("view"),a("option:selected",$tribebarselect).removeAttr("selected"),a("option[data-view="+newView+"]").attr("selected",!0),$tribebarselect.change())});e.is(".tribe-bar-mini");e.on("click","#tribe-bar-collapse-toggle",function(){a(this).toggleClass("tribe-bar-filters-open");a(".tribe-bar-filters").slideToggle("fast")});
9
+ a("body").on("click",function(){a("#tribe-bar-views").removeClass("tribe-bar-views-closed")});a('label[for="tribe-bar-date"], input[name="tribe-bar-date"]').wrapAll('<div id="tribe-bar-dates" />');a("#tribe-bar-filters").before(a("#tribe-bar-dates"));$tribebarselect.change(function(){c.cur_url=a(this).val();c.view_target=a('select[name=tribe-bar-view] option[value="'+c.cur_url+'"]').data("view");tribe_events_bar_action="change_view";p()});a("a.tribe-bar-view").on("click",function(b){b.preventDefault();
10
+ b=a(this);var c=b.data("view");p(b.attr("href"),c)});a(g).on("tribe_ev_serializeBar",function(){a("form#tribe-bar-form input, #tribeHideRecurrence").each(function(){var b=a(this);b.is("#tribe-bar-date")&&(b.val().length?(c.params[b.attr("name")]=b.val(),c.url_params[b.attr("name")]=b.val()):c.date=f.cur_date);!b.val().length||(b.hasClass("tribe-no-param")||b.is("#tribe-bar-date"))||(b.is(":checkbox")?b.is(":checked")&&(c.params[b.attr("name")]=b.val(),"map"!==c.view&&(c.url_params[b.attr("name")]=
11
+ b.val()),("month"===c.view||"day"===c.view||"week"===c.view||c.recurrence)&&c.pushcount++):(c.params[b.attr("name")]=b.val(),"map"!==c.view&&(c.url_params[b.attr("name")]=b.val()),"month"!==c.view&&"day"!==c.view&&"week"!==c.view||c.pushcount++))})});var k=a('#tribe-events-bar [class^="tribe-bar-button-"]'),r=k.next(".tribe-bar-drop-content");k.click(function(){var b=a(this);b.toggleClass("open");b.next(".tribe-bar-drop-content").toggle();return!1});a(m).click(function(){k.hasClass("open")&&(k.removeClass("open"),
12
+ r.hide())});r.click(function(a){a.stopPropagation()});l&&debug.info("TEC Debug: tribe-events-bar.js successfully loaded")})})(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
resources/tribe-events-full.css CHANGED
@@ -2,8 +2,11 @@
2
  * The Events Calendar Full Stylesheet
3
  * (Some of these styles may override your current theme's styles)
4
  *
5
- * You can customize this stylesheet by putting a stylesheet with the name
6
  * tribe-events.css in the tribe-events/ directory of your theme.
 
 
 
7
  *
8
  * @package TribeEventsCalendar
9
  * @since 1.0
@@ -533,7 +536,7 @@ select.tribe-events-dropdown {
533
  }
534
 
535
  .tribe-events-list h2.tribe-events-list-event-title {
536
- margin: 0 0 5px 0;
537
  padding: 0;
538
  font-size: 1.4em;
539
  line-height: 1.4em;
@@ -543,13 +546,9 @@ select.tribe-events-dropdown {
543
  border: none;
544
  }
545
 
546
- .tribe-events-list .tribe-events-event-cost + h2.tribe-events-list-event-title {
547
  float: none;
548
- padding-right: 90px;
549
- }
550
-
551
- .tribe-events-list .tribe-events-event-cost + h2.tribe-events-list-event-title + .tribe-events-event-meta {
552
- padding-right: 90px;
553
  }
554
 
555
  .tribe-events-event-details .tribe-events-event-meta address.tribe-events-address {
@@ -585,7 +584,7 @@ select.tribe-events-dropdown {
585
  float: none;
586
  clear: both;
587
  border: 0;
588
- margin: 0 0 15px 0;
589
  line-height: 1.5;
590
  font-size: 14px;
591
  font-weight: bold;
@@ -624,11 +623,8 @@ select.tribe-events-dropdown {
624
 
625
  /* Cost */
626
  .tribe-events-list .tribe-events-event-cost {
627
- position: absolute;
628
- right: 1px;
629
- margin: 0;
630
- width: 75px;
631
- word-wrap: break-word;
632
  }
633
 
634
  .tribe-events-list .tribe-events-event-cost span {
@@ -641,7 +637,6 @@ select.tribe-events-dropdown {
641
  line-height: 1.3;
642
  font-style: normal;
643
  text-overflow: ellipsis;
644
- white-space: nowrap;
645
  }
646
 
647
  /* Content */
@@ -1351,65 +1346,86 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1351
  }
1352
 
1353
  .tribe-bar-views-inner {
1354
- padding: 15px 0;
1355
  background: #E0E0E0;
1356
  margin: 0;
1357
  }
1358
 
1359
  #tribe-bar-form .tribe-bar-views-inner label {
1360
  padding: 0 15px;
 
1361
  }
1362
 
1363
  .tribe-bar-views-inner .select2-container {
1364
  padding: 0 15px;
1365
  }
1366
 
1367
- #tribe-bar-views .select2-container .select2-choice {
1368
- background: none;
1369
- filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
1370
  border: none;
1371
- padding: 0;
1372
- }
1373
- #tribe-bar-views .select2-dropdown-open .select2-choice {
1374
  box-shadow: none;
1375
  -moz-box-shadow: none;
1376
  -webkit-box-shadow: none;
1377
  }
1378
 
1379
- .tribe-select2-results-views.select2-drop {
1380
- background: #DBDBDB;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1381
  border: none;
1382
- z-index: 10001;
 
1383
  box-shadow: none;
1384
  -moz-box-shadow: none;
1385
- -webkit-box-shadow: none;
1386
  }
1387
 
1388
- .tribe-select2-results-views.select2-drop .select2-results li {
1389
- padding: 0 15px;
 
1390
  }
1391
 
1392
- .tribe-select2-results-views.select2-drop .select2-results .select2-highlighted {
1393
- background: #CACACA;
1394
- color: inherit;
 
 
 
 
1395
  }
1396
 
1397
- #tribe-bar-form.tribe-bar-mini #tribe-bar-views {
1398
- width: 16.66667%;
 
1399
  }
1400
 
1401
- #tribe-bar-views .tribe-bar-view-list {
1402
- list-style-type: none;
1403
- margin: 0;
1404
- padding: 0;
1405
- text-align: right;
1406
- line-height: 32px;
1407
  }
1408
- #tribe-bar-views .tribe-bar-view-list li {
1409
- padding: 0 2px;
1410
- display: inline-block;
1411
- zoom: 1;
1412
- *display: inline;
1413
  }
1414
 
1415
  /* Views Select */
@@ -1419,48 +1435,10 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1419
  #tribe-bar-views [name="tribe-bar-view"] {
1420
  display: none;
1421
  }
1422
- #tribe-bar-views .tribe-select2 {
1423
- width: 100% !important;
1424
  float: left;
1425
  }
1426
- #tribe-bar-views .select2-container-active .select2-choice,
1427
- #tribe-bar-views .select2-container-active .select2-choices {
1428
- outline: none;
1429
- box-shadow: none;
1430
- }
1431
- .tribe-select2-results-views .select2-results {
1432
- margin: 0;
1433
- padding: 0;
1434
- }
1435
- .tribe-select2-results-views .select2-results .select2-result-label {
1436
- padding: 4px 0;
1437
- }
1438
- .tribe-select2-results .select2-results {
1439
- margin: 4px 0;
1440
- padding: 0;
1441
- }
1442
- .tribe-select2-results .select2-results .select2-result-label {
1443
- padding: 6px 8px;
1444
- color: #444;
1445
- line-height: 14px;
1446
- }
1447
- .tribe-select2-results .select2-results .select2-highlighted {
1448
- background: #ddd;
1449
- color: #444;
1450
- }
1451
- #tribe-bar-views .select2-container .select2-choice div {
1452
- display: none;
1453
- }
1454
- #tribe-bar-views .select2-container .select2-choice span {
1455
- margin-right: 18px;
1456
- }
1457
- #tribe-bar-views .select2-container .select2-choice span span {
1458
- margin-right: 0;
1459
- }
1460
- #tribe-bar-views .select2-arrow {
1461
- display: none;
1462
- }
1463
-
1464
  #tribe-bar-views .tribe-bar-settings {
1465
  display: none;
1466
  }
@@ -1509,21 +1487,18 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1509
  }
1510
 
1511
  .tribe-bar-mini .tribe-bar-views-inner {
1512
- padding: 10px 0;
1513
  }
1514
 
1515
  .tribe-bar-mini .tribe-bar-views-inner label {
1516
  padding: 0 10px;
1517
  }
1518
 
1519
- .tribe-bar-mini .tribe-bar-views-inner .select2-container {
1520
- padding: 0 10px;
1521
  }
1522
 
1523
- .tribe-bar-mini-select2-results.tribe-select2-results-views.select2-drop .select2-results li {
1524
- padding: 0 10px;
1525
- font-size: 12px;
1526
- }
1527
 
1528
  /* Tribe Bar Collapse Styles */
1529
 
@@ -1602,7 +1577,7 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1602
  }
1603
 
1604
  #tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner {
1605
- padding: 10px 0;
1606
  }
1607
 
1608
  #tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label {
@@ -1681,14 +1656,24 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1681
  }
1682
 
1683
  .tribe-bar-disabled .tribe-bar-views-inner {
1684
- padding: 5px 0;
 
1685
  border-radius: 0 3px 3px 0;
1686
  }
1687
 
1688
- .tribe-bar-disabled #tribe-bar-views .select2-container,
1689
- .tribe-bar-disabled #tribe-bar-form .tribe-bar-views-inner label {
1690
  padding: 0 10px;
1691
  }
 
 
 
 
 
 
 
 
 
 
1692
  .tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice {
1693
  line-height: 18px;
1694
  height: auto;
@@ -1706,11 +1691,13 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1706
 
1707
  /* Events Bar Icons */
1708
  .tribe-select2-results-views span[class^="tribe-icon-"],
1709
- .tribe-select2 span[class^="tribe-icon-"],
1710
  .tribe-bar-view-list a[class*="tribe-icon-"] {
1711
  padding-left: 24px;
1712
  background-repeat: no-repeat;
1713
  background-position: 0 50%;
 
 
1714
  }
1715
  .tribe-select2-results-views span[class^="tribe-icon-"] {
1716
  min-height: 16px;
@@ -1719,7 +1706,7 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1719
 
1720
  /* default icon */
1721
  .tribe-select2-results-views span[class^="tribe-icon-"],
1722
- .tribe-select2 span[class^="tribe-icon-"],
1723
  .tribe-bar-view-list a[class^="tribe-icon-"] {
1724
  background-image: url(images/events-bar/icon-month.png);
1725
  -webkit-background-size: 15px 16px;
@@ -1727,7 +1714,7 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1727
  }
1728
 
1729
  .tribe-select2-results-views span.tribe-icon-list,
1730
- .tribe-select2 span.tribe-icon-list,
1731
  .tribe-bar-view-list a.tribe-icon-list {
1732
  background-image: url(images/events-bar/icon-list.png);
1733
  -webkit-background-size: 15px 10px;
@@ -1740,32 +1727,32 @@ input[name*="tribe-bar-"]:-moz-placeholder {
1740
  }
1741
 
1742
  .tribe-select2-results-views .tribe-icon-month,
1743
- .tribe-select2 span.tribe-icon-month,
1744
  .tribe-bar-view-list a.tribe-icon-month {
1745
  background-image: url(images/events-bar/icon-month.png);
1746
  -webkit-background-size: 15px 16px;
1747
  background-size: 15px 16px;
1748
  }
1749
  .tribe-select2-results-views span.tribe-icon-week,
1750
- .tribe-select2 span.tribe-icon-week {
1751
  background-image: url(images/events-bar/icon-week.png);
1752
  -webkit-background-size: 15px 16px;
1753
  background-size: 15px 16px;
1754
  }
1755
  .tribe-select2-results-views span.tribe-icon-day,
1756
- .tribe-select2 span.tribe-icon-day {
1757
  background-image: url(images/events-bar/icon-day.png);
1758
  -webkit-background-size: 15px 16px;
1759
  background-size: 15px 16px;
1760
  }
1761
  .tribe-select2-results-views span.tribe-icon-photo,
1762
- .tribe-select2 span.tribe-icon-photo {
1763
  background-image: url(images/events-bar/icon-photo.png);
1764
  -webkit-background-size: 15px 14px;
1765
  background-size: 15px 14px;
1766
  }
1767
  .tribe-select2-results-views span.tribe-icon-map,
1768
- .tribe-select2 span.tribe-icon-map {
1769
  background-image: url(images/events-bar/icon-map.png);
1770
  -webkit-background-size: 12px 16px;
1771
  background-size: 12px 16px;
@@ -1793,34 +1780,34 @@ only screen and (min-device-pixel-ratio: 2) {
1793
 
1794
  /* default icon */
1795
  .tribe-select2-results-views span[class^="tribe-icon-"],
1796
- .tribe-select2 span[class^="tribe-icon-"],
1797
  .tribe-bar-view-list a[class^="tribe-icon-"] {
1798
  background-image: url(images/events-bar/icon-month@2x.png);
1799
  }
1800
  .tribe-select2-results-views span.tribe-icon-list,
1801
- .tribe-select2 span.tribe-icon-list,
1802
  .tribe-bar-view-list a.tribe-icon-upcoming {
1803
  background-image: url(images/events-bar/icon-list@2x.png);
1804
  }
1805
  .tribe-select2-results-views span.tribe-icon-month,
1806
- .tribe-select2 span.tribe-icon-month,
1807
  .tribe-bar-view-list a.tribe-icon-month {
1808
  background-image: url(images/events-bar/icon-month@2x.png);
1809
  }
1810
  .tribe-select2-results-views span.tribe-icon-week,
1811
- .tribe-select2 span.tribe-icon-week {
1812
  background-image: url(images/events-bar/icon-week@2x.png);
1813
  }
1814
  .tribe-select2-results-views span.tribe-icon-day,
1815
- .tribe-select2 span.tribe-icon-day {
1816
  background-image: url(images/events-bar/icon-day@2x.png);
1817
  }
1818
  .tribe-select2-results-views span.tribe-icon-photo,
1819
- .tribe-select2 span.tribe-icon-photo {
1820
  background-image: url(images/events-bar/icon-photo@2x.png);
1821
  }
1822
  .tribe-select2-results-views span.tribe-icon-map,
1823
- .tribe-select2 span.tribe-icon-map {
1824
  background-image: url(images/events-bar/icon-map@2x.png);
1825
  }
1826
  }
2
  * The Events Calendar Full Stylesheet
3
  * (Some of these styles may override your current theme's styles)
4
  *
5
+ * To add your own custom styles, create a stylesheet with the name
6
  * tribe-events.css in the tribe-events/ directory of your theme.
7
+ * Your new stylesheet will be loaded after our own stylesheet.
8
+ *
9
+ * To replace our stylsheet altogether, you can use the 'tribe_events_stylesheet_url' filter.
10
  *
11
  * @package TribeEventsCalendar
12
  * @since 1.0
536
  }
537
 
538
  .tribe-events-list h2.tribe-events-list-event-title {
539
+ margin: 0;
540
  padding: 0;
541
  font-size: 1.4em;
542
  line-height: 1.4em;
546
  border: none;
547
  }
548
 
549
+ .tribe-events-list h2.tribe-events-list-event-title {
550
  float: none;
551
+ display: inline;
 
 
 
 
552
  }
553
 
554
  .tribe-events-event-details .tribe-events-event-meta address.tribe-events-address {
584
  float: none;
585
  clear: both;
586
  border: 0;
587
+ margin: 5px 0 15px 0;
588
  line-height: 1.5;
589
  font-size: 14px;
590
  font-weight: bold;
623
 
624
  /* Cost */
625
  .tribe-events-list .tribe-events-event-cost {
626
+ float: right;
627
+ margin: 0 0 5px 5px;
 
 
 
628
  }
629
 
630
  .tribe-events-list .tribe-events-event-cost span {
637
  line-height: 1.3;
638
  font-style: normal;
639
  text-overflow: ellipsis;
 
640
  }
641
 
642
  /* Content */
1346
  }
1347
 
1348
  .tribe-bar-views-inner {
1349
+ padding: 15px 0 45px 0;
1350
  background: #E0E0E0;
1351
  margin: 0;
1352
  }
1353
 
1354
  #tribe-bar-form .tribe-bar-views-inner label {
1355
  padding: 0 15px;
1356
+ text-align: left;
1357
  }
1358
 
1359
  .tribe-bar-views-inner .select2-container {
1360
  padding: 0 15px;
1361
  }
1362
 
1363
+ .tribe-select2-results-views.select2-drop {
1364
+ background: #DBDBDB;
 
1365
  border: none;
1366
+ z-index: 10001;
 
 
1367
  box-shadow: none;
1368
  -moz-box-shadow: none;
1369
  -webkit-box-shadow: none;
1370
  }
1371
 
1372
+ #tribe-bar-form.tribe-bar-mini #tribe-bar-views {
1373
+ width: 16.66667%;
1374
+ }
1375
+
1376
+ #tribe-bar-views .tribe-bar-views-list {
1377
+ list-style-type: none;
1378
+ margin: 0 0 0 5px;
1379
+ padding: 0;
1380
+ position: absolute;
1381
+ left: 0;
1382
+ top: auto;
1383
+ z-index: 99;
1384
+ border-radius: 0 0 3px 3px;
1385
+ }
1386
+ #tribe-bar-views li.tribe-bar-views-option {
1387
+ line-height: 14px;
1388
+ margin: 0 5px 0 0;
1389
+ padding: 0;
1390
+ list-style: none;
1391
+ background: none;
1392
+ filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
1393
+ list-style: none;
1394
  border: none;
1395
+ padding: 0;
1396
+ display: none;
1397
  box-shadow: none;
1398
  -moz-box-shadow: none;
1399
+ -webkit-box-shadow: none;
1400
  }
1401
 
1402
+ #tribe-bar-views .tribe-bar-views-option:first-child, #tribe-bar-views .tribe-bar-views-option.tribe-bar-active,
1403
+ #tribe-bar-views.tribe-bar-views-open .tribe-bar-views-option {
1404
+ display: list-item;
1405
  }
1406
 
1407
+ #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a {
1408
+ color: #444;
1409
+ text-align: left;
1410
+ display: block;
1411
+ text-decoration: none;
1412
+ padding: 6px 15px;
1413
+ background: #E0E0E0;
1414
  }
1415
 
1416
+ #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a:hover {
1417
+ background: #cacaca;
1418
+ color: inherit;
1419
  }
1420
 
1421
+ #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option.tribe-bar-active a:hover {
1422
+ background: #e0e0e0;
 
 
 
 
1423
  }
1424
+
1425
+ #tribe-bar-views .tribe-bar-views-option:last-child a {
1426
+ border-radius: 0 0 3px 3px;
1427
+ -webkit-border-radius: 0 0 3px 3px;
1428
+ -moz-border-radius: 0 0 3px 3px;
1429
  }
1430
 
1431
  /* Views Select */
1435
  #tribe-bar-views [name="tribe-bar-view"] {
1436
  display: none;
1437
  }
1438
+ #tribe-bar-views .tribe-bar-views-list {
1439
+ width: 100%;
1440
  float: left;
1441
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1442
  #tribe-bar-views .tribe-bar-settings {
1443
  display: none;
1444
  }
1487
  }
1488
 
1489
  .tribe-bar-mini .tribe-bar-views-inner {
1490
+ padding: 10px 0 35px 0;
1491
  }
1492
 
1493
  .tribe-bar-mini .tribe-bar-views-inner label {
1494
  padding: 0 10px;
1495
  }
1496
 
1497
+ .tribe-bar-mini #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a {
1498
+ padding: 4px 10px;
1499
  }
1500
 
1501
+
 
 
 
1502
 
1503
  /* Tribe Bar Collapse Styles */
1504
 
1577
  }
1578
 
1579
  #tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner {
1580
+ padding: 10px 0 40px 0;
1581
  }
1582
 
1583
  #tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label {
1656
  }
1657
 
1658
  .tribe-bar-disabled .tribe-bar-views-inner {
1659
+ min-width: 100px;
1660
+ padding: 5px 0 25px 0;
1661
  border-radius: 0 3px 3px 0;
1662
  }
1663
 
1664
+ .tribe-bar-disabled #tribe-bar-form .tribe-bar-views-inner label{
 
1665
  padding: 0 10px;
1666
  }
1667
+
1668
+ .tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list,
1669
+ .tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option {
1670
+ margin: 0;
1671
+ }
1672
+
1673
+ .tribe-bar-disabled #tribe-bar-views .tribe-bar-views-list .tribe-bar-views-option a {
1674
+ padding: 4px 10px;
1675
+ margin: 0;
1676
+ }
1677
  .tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice {
1678
  line-height: 18px;
1679
  height: auto;
1691
 
1692
  /* Events Bar Icons */
1693
  .tribe-select2-results-views span[class^="tribe-icon-"],
1694
+ .tribe-bar-views-list span[class^="tribe-icon-"],
1695
  .tribe-bar-view-list a[class*="tribe-icon-"] {
1696
  padding-left: 24px;
1697
  background-repeat: no-repeat;
1698
  background-position: 0 50%;
1699
+ min-height: 16px;
1700
+ display: block;
1701
  }
1702
  .tribe-select2-results-views span[class^="tribe-icon-"] {
1703
  min-height: 16px;
1706
 
1707
  /* default icon */
1708
  .tribe-select2-results-views span[class^="tribe-icon-"],
1709
+ .tribe-bar-views-list span[class^="tribe-icon-"],
1710
  .tribe-bar-view-list a[class^="tribe-icon-"] {
1711
  background-image: url(images/events-bar/icon-month.png);
1712
  -webkit-background-size: 15px 16px;
1714
  }
1715
 
1716
  .tribe-select2-results-views span.tribe-icon-list,
1717
+ .tribe-bar-views-list span.tribe-icon-list,
1718
  .tribe-bar-view-list a.tribe-icon-list {
1719
  background-image: url(images/events-bar/icon-list.png);
1720
  -webkit-background-size: 15px 10px;
1727
  }
1728
 
1729
  .tribe-select2-results-views .tribe-icon-month,
1730
+ .tribe-bar-views-list span.tribe-icon-month,
1731
  .tribe-bar-view-list a.tribe-icon-month {
1732
  background-image: url(images/events-bar/icon-month.png);
1733
  -webkit-background-size: 15px 16px;
1734
  background-size: 15px 16px;
1735
  }
1736
  .tribe-select2-results-views span.tribe-icon-week,
1737
+ .tribe-bar-views-list span.tribe-icon-week {
1738
  background-image: url(images/events-bar/icon-week.png);
1739
  -webkit-background-size: 15px 16px;
1740
  background-size: 15px 16px;
1741
  }
1742
  .tribe-select2-results-views span.tribe-icon-day,
1743
+ .tribe-bar-views-list span.tribe-icon-day {
1744
  background-image: url(images/events-bar/icon-day.png);
1745
  -webkit-background-size: 15px 16px;
1746
  background-size: 15px 16px;
1747
  }
1748
  .tribe-select2-results-views span.tribe-icon-photo,
1749
+ .tribe-bar-views-list span.tribe-icon-photo {
1750
  background-image: url(images/events-bar/icon-photo.png);
1751
  -webkit-background-size: 15px 14px;
1752
  background-size: 15px 14px;
1753
  }
1754
  .tribe-select2-results-views span.tribe-icon-map,
1755
+ .tribe-bar-views-list span.tribe-icon-map {
1756
  background-image: url(images/events-bar/icon-map.png);
1757
  -webkit-background-size: 12px 16px;
1758
  background-size: 12px 16px;
1780
 
1781
  /* default icon */
1782
  .tribe-select2-results-views span[class^="tribe-icon-"],
1783
+ .tribe-bar-views-list span[class^="tribe-icon-"],
1784
  .tribe-bar-view-list a[class^="tribe-icon-"] {
1785
  background-image: url(images/events-bar/icon-month@2x.png);
1786
  }
1787
  .tribe-select2-results-views span.tribe-icon-list,
1788
+ .tribe-bar-views-list span.tribe-icon-list,
1789
  .tribe-bar-view-list a.tribe-icon-upcoming {
1790
  background-image: url(images/events-bar/icon-list@2x.png);
1791
  }
1792
  .tribe-select2-results-views span.tribe-icon-month,
1793
+ .tribe-bar-views-list span.tribe-icon-month,
1794
  .tribe-bar-view-list a.tribe-icon-month {
1795
  background-image: url(images/events-bar/icon-month@2x.png);
1796
  }
1797
  .tribe-select2-results-views span.tribe-icon-week,
1798
+ .tribe-bar-views-list span.tribe-icon-week {
1799
  background-image: url(images/events-bar/icon-week@2x.png);
1800
  }
1801
  .tribe-select2-results-views span.tribe-icon-day,
1802
+ .tribe-bar-views-list span.tribe-icon-day {
1803
  background-image: url(images/events-bar/icon-day@2x.png);
1804
  }
1805
  .tribe-select2-results-views span.tribe-icon-photo,
1806
+ .tribe-bar-views-list span.tribe-icon-photo {
1807
  background-image: url(images/events-bar/icon-photo@2x.png);
1808
  }
1809
  .tribe-select2-results-views span.tribe-icon-map,
1810
+ .tribe-bar-views-list span.tribe-icon-map {
1811
  background-image: url(images/events-bar/icon-map@2x.png);
1812
  }
1813
  }
resources/tribe-events-full.min.css CHANGED
@@ -1 +1 @@
1
- #tribe-events-pg-template{max-width:1000px;margin:0 auto}.tribe-events-after-html{clear:both}#tribe-events-pg-template .tribe-events-content p,.tribe-events-before-html p,.tribe-events-after-html p{margin:0 0 10px;line-height:1.7}#tribe-events-pg-template .tribe-events-content h1,.tribe-events-before-html h1,.tribe-events-after-html h1,#tribe-events-pg-template .tribe-events-content h2,.tribe-events-before-html h2,.tribe-events-after-html h2,#tribe-events-pg-template .tribe-events-content h3,.tribe-events-before-html h3,.tribe-events-after-html h3,#tribe-events-pg-template .tribe-events-content h4,.tribe-events-before-html h4,.tribe-events-after-html h4,#tribe-events-pg-template .tribe-events-content h5,.tribe-events-before-html h5,.tribe-events-after-html h5,#tribe-events-pg-template .tribe-events-content h6,.tribe-events-before-html h6,.tribe-events-after-html h6{margin:24px 0;margin:20px 0;line-height:1.7}.tribe-events-before-html h1,.tribe-events-after-html h1,#tribe-events-pg-template .tribe-events-content h1{font-size:21px;line-height:1.5}.tribe-events-before-html h2,.tribe-events-after-html h2,#tribe-events-pg-template .tribe-events-content h2{font-size:18px;line-height:1.6}.tribe-events-before-html h3,.tribe-events-after-html h3,#tribe-events-pg-template .tribe-events-content h3{font-size:16px;line-height:1.8}.tribe-events-before-html h4,.tribe-events-after-html h4,#tribe-events-pg-template .tribe-events-content h4{font-size:14px;line-height:1.8}.tribe-events-before-html h5,.tribe-events-after-html h5,#tribe-events-pg-template .tribe-events-content h5{font-size:13px;line-height:1.8}.tribe-events-before-html h6,.tribe-events-after-html h6,#tribe-events-pg-template .tribe-events-content h6{font-size:12px;line-height:1.8}.tribe-events-before-html ul,.tribe-events-after-html ul,#tribe-events-pg-template .tribe-events-content ul{list-style:disc outside}.tribe-events-before-html ol,.tribe-events-after-html ol,#tribe-events-pg-template .tribe-events-content ol{list-style:decimal outside}.tribe-events-before-html ul li,.tribe-events-after-html ul li,.tribe-events-before-html ol li,.tribe-events-after-html ol li,#tribe-events-pg-template .tribe-events-content ul li,#tribe-events-pg-template .tribe-events-content ol li{margin:0 0 20px;line-height:1.7}.tribe-events-back{margin:0 0 20px 0}#tribe-events-content a,.tribe-events-event-meta a{text-decoration:none}.tribe-events-read-more{display:block}ul.tribe-events-sub-nav a,.tribe-events-back a,.tribe-events-list-widget .tribe-events-widget-link a,.tribe-events-adv-list-widget .tribe-events-widget-link a{text-decoration:none}ul.tribe-events-sub-nav a:hover,.tribe-events-back a:hover,.tribe-events-list-widget .tribe-events-widget-link a:hover,.tribe-events-adv-list-widget .tribe-events-widget-link a:hover{text-decoration:none}.tribe-events-day.page .hentry,.tribe-events-week.page .hentry{margin:0;padding:0 0 15px 0}.tribe-events-button{background-color:#666;color:#fff;background-image:none;font-size:11px;font-weight:bold;padding:6px 9px;text-align:center;text-transform:uppercase;letter-spacing:1px;-webkit-border-radius:3px;border-radius:3px;border:0;line-height:normal;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.tribe-events-button.tribe-active{background-color:#666;color:#fff}.tribe-events-button.tribe-inactive,.tribe-events-button:hover,.tribe-events-button.tribe-active:hover{background-color:#ddd;color:#444;text-decoration:none}a.tribe-events-ical,a.tribe-events-gcal{font-size:10px;font-weight:normal;padding:0 6px;float:right;text-decoration:none;line-height:18px;margin-top:21px;color:#fff;clear:both}.tribe-events-gcal{margin-right:9px}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{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{text-indent:-9999px;height:0}.tribe-events-event-image{margin:0 0 20px 0;text-align:center}.tribe-events-event-image img{max-width:100%;height:auto}.tribe-events-schedule h2{font-style:normal;font-weight:bold}.tribe-events-event-schedule-details{display:inline}.tribe-events-divider{padding:0 10px;font-weight:bold}.events-archive .entry-content,.events-archive .entry-header{width:98%}.events-archive span.edit-link{display:none}.tribe-events-notices{background:#d9edf7;border:1px solid #bce8f1;color:#3a87ad;margin:10px 0 18px;padding:8px 35px 8px 14px;text-shadow:0 1px 0 #fff;-webkit-border-radius:4px;border-radius:4px}div.tribe-events-notices>ul,div.tribe-events-notices>ul>li{margin:0;padding:0;list-style:none}#tribe-events-content p.tribe-events-promo{font-size:12px;color:#999}#tribe-events-content p.tribe-events-promo a{color:#666}.clearfix:before,.tribe-clearfix:before,.clearfix:after,.tribe-clearfix:after{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{text-indent:100%;white-space:nowrap;overflow:hidden}.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{width:32px;height:32px;margin-left:-16px}.tribe-events-spinner-medium{width:24px;height:24px}.tribe-events-spinner-small{width:16px;height:16px;margin-left:-8px}*+html .events-archive h2.tribe-events-page-title{padding-bottom:30px}*+html .events-archive .tribe-events-list h2.tribe-events-page-title{padding-bottom:0}*+html #tribe-events-header{margin-bottom:30px}h2.tribe-events-page-title{font-size:24px;font-weight:normal;position:relative;z-index:0;margin-bottom:.5em;text-align:center;clear:none}.tribe-events-filter-view .tribe-events-list h2.tribe-events-page-title{width:100%;float:none}h2.tribe-events-page-title a{color:#000}h2.tribe-events-page-title a:hover,h2.tribe-events-page-title a:focus{color:#333;text-decoration:underline}#tribe-events-header,#tribe-events-footer{margin-bottom:.5em;clear:both}#tribe-events-header .tribe-events-sub-nav,#tribe-events-footer .tribe-events-sub-nav{list-style-type:none;margin:0;overflow:hidden;line-height:normal;text-align:center}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-footer .tribe-events-sub-nav li{display:inline-block;zoom:1;*display:inline;margin:0;vertical-align:middle}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{float:left;margin-right:5px;text-align:left;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next{float:right;margin-left:5px;text-align:right;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left{float:left;text-align:left;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right{float:right;text-align:right;white-space:nowrap}.tribe-events-ajax-loading{display:none;position:absolute;left:50%;margin-left:-27px;top:150px;padding:15px;background:#666;z-index:10;border-radius:5px;-webkit-box-shadow:none !important;box-shadow:none !important;-moz-box-shadow:none !important}.tribe-events-loading .tribe-events-ajax-loading{display:block}.tribe-events-ajax-loading.tribe-events-active-spinner,.tribe-events-ajax-loading.tribe-events-active-spinner img{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{margin:1.25em 0 18px;clear:both}.tribe-events-map #tribe-events-header{margin:1em 0}.single-tribe_events #tribe-events-header{margin:1em 0 20px}.single-tribe_events #tribe-events-header li,.single-tribe_events #tribe-events-footer li{width:48%}#tribe-events-content .tribe-events-nav-date{padding-top:16px}select.tribe-events-dropdown{width:auto;font-size:11px;margin:33px 9px 0 0}#tribe-events-events-picker,#tribe-events-picker{display:inline}@media only screen and (max-width:767px){#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-previous,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{display:block;width:50%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tribe-events-sub-nav li a{display:block;padding:10px 15px;background:#666;color:#fff;white-space:normal}.tribe-events-sub-nav .tribe-events-nav-previous,.tribe-events-sub-nav .tribe-events-nav-left{padding:0 1px}.tribe-events-sub-nav .tribe-events-nav-next,.tribe-events-sub-nav .tribe-events-nav-right{padding:0 0 0 1px}}#tribe-events-content{position:relative;margin-bottom:48px;padding:2px 0}#tribe-events-content.tribe-events-list{padding:0}.tribe-events-list h2.tribe-events-page-title{margin-bottom:15px}#tribe-events-content.tribe-events-list{margin-bottom:60px}.tribe-events-list .vevent.hentry{border-bottom:1px solid #ddd;padding:2.25em 0;margin:0}.tribe-events-list .vevent.hentry.tribe-events-first{padding-top:0}.tribe-events-list h2.tribe-events-list-event-title{margin:0 0 5px 0;padding:0;font-size:1.4em;line-height:1.4em;text-transform:none;letter-spacing:0;display:block;border:0}.tribe-events-list .tribe-events-event-cost+h2.tribe-events-list-event-title{float:none;padding-right:90px}.tribe-events-list .tribe-events-event-cost+h2.tribe-events-list-event-title+.tribe-events-event-meta{padding-right:90px}.tribe-events-event-details .tribe-events-event-meta address.tribe-events-address{font-style:normal;font-family:inherit;font-size:inherit;line-height:inherit}.tribe-events-list .tribe-events-event-image{float:left;width:30%;margin:0 3% 0 0}.tribe-events-list .tribe-events-event-image img{width:100%;height:auto;margin:0;padding:0}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:left;width:67%;position:relative}.tribe-events-loop .tribe-events-event-meta{float:none;clear:both;border:0;margin:0 0 15px 0;line-height:1.5;font-size:14px;font-weight:bold;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1;*display:inline}.tribe-events-event-meta address.tribe-events-address{display:inline;font-style:normal;font-family:inherit;font-size:inherit;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{line-height:1.2;margin:0;display:block}.tribe-events-list .time-details{margin:0 0 8px 0}.tribe-events-list .tribe-events-event-cost{position:absolute;right:1px;margin:0;width:75px;word-wrap:break-word}.tribe-events-list .tribe-events-event-cost span{font-weight:bold;background:#eee;border:1px solid #ddd;display:block;padding:5px 10px;text-align:center;line-height:1.3;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.tribe-events-list .tribe-events-loop .tribe-events-content{width:100%;padding:0}.tribe-events-list .tribe-events-loop .tribe-events-content p{margin:0}.tribe-events-list-separator-year{display:block;text-align:center;font-size:38px;color:#ccc;padding:1em 2.25em 0;font-weight:bold}.tribe-events-list-separator-month{display:block;text-transform:uppercase;font-weight:bold;font-size:14px;margin:2.5em 0 0;background-color:#EEE;padding:6px 10px}.tribe-events-list-separator-month+.vevent.hentry.tribe-events-first{padding-top:2.25em}.tribe-events-list .vevent.hentry.tribe-event-end-month{border-bottom:0;padding-bottom:0}@media only screen and (max-width:767px){.tribe-events-list .tribe-events-event-image{float:none;width:100%;margin:0 0 20px 0}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:none;width:100%}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:block;margin:8px 0 0}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo .tribe-events-divider{display:none}}.tribe-events-loop{clear:both}.tribe-events-loop .vevent.tribe-events-last{border-bottom:0}.tribe-events-loop .tribe-events-content{width:60%;float:left;padding:0 5% 0 0}.events-archive .tribe-events-content p,.single-tribe_venue .tribe-events-loop .tribe-events-content p{margin:0}.events-archive h3 .published,.single-tribe_venue h3 .published{font-size:18px;margin-top:0;font-style:italic;text-transform:none}.tribe-events-event-meta-desc,.tribe-events-event-day{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{margin-left:auto;margin-right:auto;display:block;text-align:center}.tribe-events-meta-group .tribe-events-single-section-title{margin:20px 0 10px;font-size:1.4em;font-weight:bold}.tribe-events-meta-group+.tribe-events-single-section-title{margin-top:0}.tribe-events-event-meta .tribe-events-meta-group address.tribe-events-address{margin:0;display:block}#eventbrite-embed{width:100%;min-height:225px;margin:24px 0}.eventbrite-ticket-embed{margin:0 0 30px 0}.tribe-events-schedule{margin:20px 0 0}.single-tribe_events .tribe-events-schedule .tribe-events-divider,.single-tribe_events .tribe-events-schedule .recurringinfo,.single-tribe_events .tribe-events-schedule .tribe-events-cost{font-size:1.2em}.single-tribe_events .tribe-events-schedule h3{font-size:1.2em;display:inline-block;zoom:1;*display:inline;margin:0;padding:0;vertical-align:middle;white-space:nowrap}.single-tribe_events .tribe-events-schedule .tribe-events-cost{vertical-align:middle}.single-tribe_events .tribe-events-cal-links{display:inline-block;zoom:1;*display:inline;margin:0 0 20px 0;vertical-align:middle}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{margin-bottom:0}.single-tribe_events .tribe-events-event-image{clear:both;text-align:center;margin-bottom:30px}.single-tribe_events .tribe-events-event-meta{background:#fafafa;border:1px solid #eee;margin:30px 0}.single-tribe_events .tribe-events-venue-map{width:58%;margin:20px 4% 2% 0;padding:5px;float:right;background:#eee;border:1px solid #ddd;border-radius:3px;display:inline-block;zoom:1;*display:inline;vertical-align:top}.single-tribe_events #tribe-events-gmap{height:0 !important;padding-top:50%;width:100% !important;margin:0 !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;padding-top:100%;width:100% !important;margin-top:50px}.single-tribe_events .tribe-events-event-meta{font-size:12px}.tribe-events-event-meta .tribe-events-meta-group,.tribe-events-event-meta .column{float:left;width:33.3333%;padding:0 4%;text-align:left;margin:0 0 20px 0;display:inline-block;zoom:1;*display:inline;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.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:bold;line-height:1;list-style:none}.single-tribe_events #tribe-events-content .tribe-events-event-meta dd{padding:0;margin:0 0 10px 0;line-height:1.5;list-style:none;float:none}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-content{width:auto;padding:0}@media only screen and (max-width:767px){.single-tribe_events .tribe-events-schedule h3{display:block;margin-bottom:10px}.single-tribe_events .tribe-events-schedule .recurringinfo .tribe-events-divider{display:none}.tribe-events-event-meta .tribe-events-meta-group,.tribe-events-event-meta .column{float:none;width:100%}}#tribe-events-content table.tribe-events-calendar{margin:12px 0 .6em;clear:both;font-size:12px;border-collapse:collapse}#tribe-events-content table.tribe-events-calendar,#tribe-events-content .tribe-events-calendar td{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:bold}.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{height:110px;width:14.28%;color:#114b7d;vertical-align:top;padding:0 0 .5em;font-size:12px}.vevent.viewmore{font-weight:bold}.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip,.recurring-info-tooltip{border:1px solid #666;position:absolute;z-index:1001;bottom:30px;left:3px;width:320px;background-color:#f9f9f9;color:#333;line-height:1.4;display:none}.tribe-events-tooltip .tribe-events-arrow{width:18px;height:11px;background-image:url(images/tribe-tooltips.png);background-repeat:no-repeat;background-position:0 0;-webkit-background-size:44px 19px;background-size:44px 19px;display:block;position:absolute;bottom:-11px;left:20px}.tribe-events-calendar .tribe-events-right .tribe-events-tooltip,.tribe-events-week .tribe-events-right .tribe-events-tooltip,.recurring-info-tooltip{left:auto;right:3px}.tribe-events-right .tribe-events-tooltip .tribe-events-arrow{left:auto;right:30px}.recurringinfo{display:inline-block;vertical-align:middle;zoom:1;*display:inline;position:relative}.event-is-recurring{position:relative;font-style:normal;font-weight:500;color:rgba(0,0,0,.7)}.event-is-recurring:hover{color:#000}.recurring-info-tooltip.tribe-events-tooltip{left:10px;width:200px;padding-bottom:.8em}.events-archive.events-gridview #tribe-events-content table .vevent{margin:0 5%;padding:6px 8px;border-bottom:1px solid #e7e7e7}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-viewmore{margin:0 5%;padding:9px 8px;font-weight:bold;line-height:1;border-top:1px solid #e7e7e7}.tribe-events-calendar td .tribe-events-viewmore a{font-size:100%}.tribe-events-calendar th{width:250px;height:10px;background-color:#ddd;color:#333;padding:4px 0;text-align:center;text-transform:uppercase;letter-spacing:1px}.tribe-events-calendar td div[id*="tribe-events-daynum-"]{padding:6px 9px;line-height:1.2}.tribe-events-calendar td a{font-size:91.7%}.tribe-events-calendar div[id*="tribe-events-event-"],.tribe-events-calendar div[id*="tribe-events-daynum-"]{position:relative;margin:0}#tribe-events-content .tribe-events-calendar div[id*="tribe-events-event-"] h3.tribe-events-month-event-title{line-height:1.25;font-size:13px;font-weight:normal;font-family:sans-serif;font-weight:bold;text-transform:none;margin:0;padding:0;letter-spacing:0}.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{margin:0;color:#fff;background-color:#666;font-size:12px;padding:0 6px;min-height:24px;line-height:24px;letter-spacing:1px;font-weight:normal}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;padding:3px 6px 6px;font-weight:normal}.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{padding:0;font-size:11px;line-height:1.5}.tribe-events-list-widget ol li{margin-bottom:30px;list-style:none}.tribe-events-list-widget .duration{font-weight:bold}table.tribe-events-tickets .tickets_price{font-style:italic;color:#000;font-weight:bold}td.tickets_name{color:#777;font-size:13px}.single-tribe_events #tribe-events-content form.cart{background:#fafafa;border:1px solid #eee;margin:30px 0;padding:0 4% 3%}table.tribe-events-tickets{margin:0;width:100%}table.tribe-events-tickets td{border-top:1px solid #ddd;padding:8px 10px 8px 0;vertical-align:middle}table.tribe-events-tickets .tickets_nostock{display:inline-block;text-align:center}h2.tribe-events-tickets-title{margin:20px 0 25px;font-size:1.4em;font-weight:bold}#tribe-events-bar{width:100%;min-width:220px;margin-bottom:30px;height:auto;position:relative;clear:none}#tribe-events-bar *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#tribe-bar-form{background:#f5f5f5;position:relative;margin:0;width:100%}#tribe-bar-form input{font-size:15px;margin:0 4px 0 0}#tribe-bar-form input[type="text"]{width:100%;padding:0 0 5px 0;background:0;border:0;border-bottom:1px dashed #b9b9b9;line-height:1;height:auto;font-weight:bold;border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#tribe-bar-form input[type=text]:focus{outline:0}input[name*="tribe-bar-"]::-webkit-input-placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}input[name*="tribe-bar-"]:-moz-placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}.placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}#tribe-bar-form .tribe-bar-submit input[type=submit]{font-size:13px;line-height:20px;letter-spacing:0;width:100%;height:auto;padding:10px;background-image:none;background:#666;color:#fff;border:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-appearance:button}.tribe-bar-submit input[type=submit]:hover{background:#999;color:#fff}#tribe-bar-form label{display:block;font-size:11px;line-height:1;text-transform:uppercase;font-weight:bold;margin:0 0 5px 0;padding:0}#tribe-bar-dates .select2-choice{border-bottom:1px dashed #b9b9b9}#tribe-bar-form .tribe-bar-filters{position:relative;float:left;width:100%;margin:0}#tribe-bar-form #tribe-bar-views+.tribe-bar-filters{right:16.66667%;left:auto;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;width:25%;margin-bottom:0;padding:15px}.tribe-bar-search-filter{float:left;width:33.3333%;margin-bottom:0;padding:15px}.tribe-bar-submit{float:left;width:25%;margin-bottom:0;margin-left:16.6667%;padding:15px}#tribe-bar-form #tribe-bar-views{position:relative;left:83.3333%;right:auto;float:left;width:16.66667%;padding:0 0 0 5px;background:transparent;margin:0}#tribe-bar-views:hover,#tribe-bar-views label:hover{cursor:pointer}.tribe-bar-views-inner{padding:15px 0;background:#e0e0e0;margin:0}#tribe-bar-form .tribe-bar-views-inner label{padding:0 15px}.tribe-bar-views-inner .select2-container{padding:0 15px}#tribe-bar-views .select2-container .select2-choice{background:0;filter:"progid:DXImageTransform.Microsoft.gradient(enabled=false)";border:0;padding:0}#tribe-bar-views .select2-dropdown-open .select2-choice{box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}.tribe-select2-results-views.select2-drop{background:#dbdbdb;border:0;z-index:10001;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}.tribe-select2-results-views.select2-drop .select2-results li{padding:0 15px}.tribe-select2-results-views.select2-drop .select2-results .select2-highlighted{background:#cacaca;color:inherit}#tribe-bar-form.tribe-bar-mini #tribe-bar-views{width:16.66667%}#tribe-bar-views .tribe-bar-view-list{list-style-type:none;margin:0;padding:0;text-align:right;line-height:32px}#tribe-bar-views .tribe-bar-view-list li{padding:0 2px;display:inline-block;zoom:1;*display:inline}.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-select2{width:100% !important;float:left}#tribe-bar-views .select2-container-active .select2-choice,#tribe-bar-views .select2-container-active .select2-choices{outline:0;box-shadow:none}.tribe-select2-results-views .select2-results{margin:0;padding:0}.tribe-select2-results-views .select2-results .select2-result-label{padding:4px 0}.tribe-select2-results .select2-results{margin:4px 0;padding:0}.tribe-select2-results .select2-results .select2-result-label{padding:6px 8px;color:#444;line-height:14px}.tribe-select2-results .select2-results .select2-highlighted{background:#ddd;color:#444}#tribe-bar-views .select2-container .select2-choice div{display:none}#tribe-bar-views .select2-container .select2-choice span{margin-right:18px}#tribe-bar-views .select2-container .select2-choice span span{margin-right:0}#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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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{width:45%;padding:10px}.tribe-bar-mini .tribe-bar-submit{width:25%;margin-left:5%;padding:10px}#tribe-bar-form.tribe-bar-mini .tribe-bar-submit input[type=submit]{font-size:11px;padding:10px 5px;-webkit-appearance:button}.tribe-bar-mini #tribe-bar-views{width:16.66667%}.tribe-bar-mini .tribe-bar-views-inner{padding:10px 0}.tribe-bar-mini .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-mini .tribe-bar-views-inner .select2-container{padding:0 10px}.tribe-bar-mini-select2-results.tribe-select2-results-views.select2-drop .select2-results li{padding:0 10px;font-size:12px}#tribe-bar-collapse-toggle{display:none;float:left;padding:15px;position:relative;font-size:13px;line-height:28px;font-weight:bold;text-transform:uppercase;background:#f5f5f5}#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{top:10px;right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(136,183,213,0);border-top-color:inherit;border-width:8px}#tribe-bar-collapse-toggle.tribe-bar-filters-open span.tribe-bar-toggle-arrow:after{top:0;border-top-color:transparent;border-bottom-color:inherit}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views+.tribe-bar-filters{display:none;margin-top:5px;overflow:hidden;clear:both;left:auto;right:auto;width:100%}.tribe-bar-collapse .tribe-bar-filters-inner>div,.tribe-bar-collapse #tribe-bar-views{width:100%;height:auto;margin:0}.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}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label{margin:0}@media only screen and (max-width:767px){.tribe-bar-collapse #tribe-bar-collapse-toggle{width:60%}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views{width:40%}}.tribe-bar-is-disabled .tribe-events-page-title{line-height:45px;text-align:left;clear:none;margin:0}.tribe-bar-disabled{float:right;position:relative;z-index:101}.tribe-bar-disabled #tribe-events-bar{width:auto;min-width:0;float:none}.tribe-bar-disabled #tribe-bar-form{width:auto;border-radius:3px}.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:0;display:block;width:85px;margin:0;padding:0;font-size:13px;line-height:15px}.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{width:50%;float:left;left:50%;right:auto;padding:0}.tribe-bar-disabled .tribe-bar-views-inner{padding:5px 0;border-radius:0 3px 3px 0}.tribe-bar-disabled #tribe-bar-views .select2-container,.tribe-bar-disabled #tribe-bar-form .tribe-bar-views-inner label{padding:0 10px}.tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice{line-height:18px;height:auto;font-size:13px}.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-select2-results-views span[class^="tribe-icon-"],.tribe-select2 span[class^="tribe-icon-"],.tribe-bar-view-list a[class*="tribe-icon-"]{padding-left:24px;background-repeat:no-repeat;background-position:0 50%}.tribe-select2-results-views span[class^="tribe-icon-"]{min-height:16px;display:inline-block}.tribe-select2-results-views span[class^="tribe-icon-"],.tribe-select2 span[class^="tribe-icon-"],.tribe-bar-view-list a[class^="tribe-icon-"]{background-image:url(images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-list,.tribe-select2 span.tribe-icon-list,.tribe-bar-view-list a.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-upcoming,.tribe-bar-view-list a.tribe-icon-month{padding-left:30px;background-position:10px 50%}.tribe-select2-results-views .tribe-icon-month,.tribe-select2 span.tribe-icon-month,.tribe-bar-view-list a.tribe-icon-month{background-image:url(images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-week,.tribe-select2 span.tribe-icon-week{background-image:url(images/events-bar/icon-week.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-day,.tribe-select2 span.tribe-icon-day{background-image:url(images/events-bar/icon-day.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-photo,.tribe-select2 span.tribe-icon-photo{background-image:url(images/events-bar/icon-photo.png);-webkit-background-size:15px 14px;background-size:15px 14px}.tribe-select2-results-views span.tribe-icon-map,.tribe-select2 span.tribe-icon-map{background-image:url(images/events-bar/icon-map.png);-webkit-background-size:12px 16px;background-size:12px 16px;background-position:2px 50%}@media only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (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-select2-results-views span[class^="tribe-icon-"],.tribe-select2 span[class^="tribe-icon-"],.tribe-bar-view-list a[class^="tribe-icon-"]{background-image:url(images/events-bar/icon-month@2x.png)}.tribe-select2-results-views span.tribe-icon-list,.tribe-select2 span.tribe-icon-list,.tribe-bar-view-list a.tribe-icon-upcoming{background-image:url(images/events-bar/icon-list@2x.png)}.tribe-select2-results-views span.tribe-icon-month,.tribe-select2 span.tribe-icon-month,.tribe-bar-view-list a.tribe-icon-month{background-image:url(images/events-bar/icon-month@2x.png)}.tribe-select2-results-views span.tribe-icon-week,.tribe-select2 span.tribe-icon-week{background-image:url(images/events-bar/icon-week@2x.png)}.tribe-select2-results-views span.tribe-icon-day,.tribe-select2 span.tribe-icon-day{background-image:url(images/events-bar/icon-day@2x.png)}.tribe-select2-results-views span.tribe-icon-photo,.tribe-select2 span.tribe-icon-photo{background-image:url(images/events-bar/icon-photo@2x.png)}.tribe-select2-results-views span.tribe-icon-map,.tribe-select2 span.tribe-icon-map{background-image:url(images/events-bar/icon-map@2x.png)}}
1
+ #tribe-events-pg-template{max-width:1000px;margin:0 auto}.tribe-events-after-html{clear:both}#tribe-events-pg-template .tribe-events-content p,.tribe-events-before-html p,.tribe-events-after-html p{margin:0 0 10px;line-height:1.7}#tribe-events-pg-template .tribe-events-content h1,.tribe-events-before-html h1,.tribe-events-after-html h1,#tribe-events-pg-template .tribe-events-content h2,.tribe-events-before-html h2,.tribe-events-after-html h2,#tribe-events-pg-template .tribe-events-content h3,.tribe-events-before-html h3,.tribe-events-after-html h3,#tribe-events-pg-template .tribe-events-content h4,.tribe-events-before-html h4,.tribe-events-after-html h4,#tribe-events-pg-template .tribe-events-content h5,.tribe-events-before-html h5,.tribe-events-after-html h5,#tribe-events-pg-template .tribe-events-content h6,.tribe-events-before-html h6,.tribe-events-after-html h6{margin:24px 0;margin:20px 0;line-height:1.7}.tribe-events-before-html h1,.tribe-events-after-html h1,#tribe-events-pg-template .tribe-events-content h1{font-size:21px;line-height:1.5}.tribe-events-before-html h2,.tribe-events-after-html h2,#tribe-events-pg-template .tribe-events-content h2{font-size:18px;line-height:1.6}.tribe-events-before-html h3,.tribe-events-after-html h3,#tribe-events-pg-template .tribe-events-content h3{font-size:16px;line-height:1.8}.tribe-events-before-html h4,.tribe-events-after-html h4,#tribe-events-pg-template .tribe-events-content h4{font-size:14px;line-height:1.8}.tribe-events-before-html h5,.tribe-events-after-html h5,#tribe-events-pg-template .tribe-events-content h5{font-size:13px;line-height:1.8}.tribe-events-before-html h6,.tribe-events-after-html h6,#tribe-events-pg-template .tribe-events-content h6{font-size:12px;line-height:1.8}.tribe-events-before-html ul,.tribe-events-after-html ul,#tribe-events-pg-template .tribe-events-content ul{list-style:disc outside}.tribe-events-before-html ol,.tribe-events-after-html ol,#tribe-events-pg-template .tribe-events-content ol{list-style:decimal outside}.tribe-events-before-html ul li,.tribe-events-after-html ul li,.tribe-events-before-html ol li,.tribe-events-after-html ol li,#tribe-events-pg-template .tribe-events-content ul li,#tribe-events-pg-template .tribe-events-content ol li{margin:0 0 20px;line-height:1.7}.tribe-events-back{margin:0 0 20px 0}#tribe-events-content a,.tribe-events-event-meta a{text-decoration:none}.tribe-events-read-more{display:block}ul.tribe-events-sub-nav a,.tribe-events-back a,.tribe-events-list-widget .tribe-events-widget-link a,.tribe-events-adv-list-widget .tribe-events-widget-link a{text-decoration:none}ul.tribe-events-sub-nav a:hover,.tribe-events-back a:hover,.tribe-events-list-widget .tribe-events-widget-link a:hover,.tribe-events-adv-list-widget .tribe-events-widget-link a:hover{text-decoration:none}.tribe-events-day.page .hentry,.tribe-events-week.page .hentry{margin:0;padding:0 0 15px 0}.tribe-events-button{background-color:#666;color:#fff;background-image:none;font-size:11px;font-weight:bold;padding:6px 9px;text-align:center;text-transform:uppercase;letter-spacing:1px;-webkit-border-radius:3px;border-radius:3px;border:0;line-height:normal;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;text-decoration:none}.tribe-events-button.tribe-active{background-color:#666;color:#fff}.tribe-events-button.tribe-inactive,.tribe-events-button:hover,.tribe-events-button.tribe-active:hover{background-color:#ddd;color:#444;text-decoration:none}a.tribe-events-ical,a.tribe-events-gcal{font-size:10px;font-weight:normal;padding:0 6px;float:right;text-decoration:none;line-height:18px;margin-top:21px;color:#fff;clear:both}.tribe-events-gcal{margin-right:9px}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{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{text-indent:-9999px;height:0}.tribe-events-event-image{margin:0 0 20px 0;text-align:center}.tribe-events-event-image img{max-width:100%;height:auto}.tribe-events-schedule h2{font-style:normal;font-weight:bold}.tribe-events-event-schedule-details{display:inline}.tribe-events-divider{padding:0 10px;font-weight:bold}.events-archive .entry-content,.events-archive .entry-header{width:98%}.events-archive span.edit-link{display:none}.tribe-events-notices{background:#d9edf7;border:1px solid #bce8f1;color:#3a87ad;margin:10px 0 18px;padding:8px 35px 8px 14px;text-shadow:0 1px 0 #fff;-webkit-border-radius:4px;border-radius:4px}div.tribe-events-notices>ul,div.tribe-events-notices>ul>li{margin:0;padding:0;list-style:none}#tribe-events-content p.tribe-events-promo{font-size:12px;color:#999}#tribe-events-content p.tribe-events-promo a{color:#666}.clearfix:before,.tribe-clearfix:before,.clearfix:after,.tribe-clearfix:after{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{text-indent:100%;white-space:nowrap;overflow:hidden}.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{width:32px;height:32px;margin-left:-16px}.tribe-events-spinner-medium{width:24px;height:24px}.tribe-events-spinner-small{width:16px;height:16px;margin-left:-8px}*+html .events-archive h2.tribe-events-page-title{padding-bottom:30px}*+html .events-archive .tribe-events-list h2.tribe-events-page-title{padding-bottom:0}*+html #tribe-events-header{margin-bottom:30px}h2.tribe-events-page-title{font-size:24px;font-weight:normal;position:relative;z-index:0;margin-bottom:.5em;text-align:center;clear:none}.tribe-events-filter-view .tribe-events-list h2.tribe-events-page-title{width:100%;float:none}h2.tribe-events-page-title a{color:#000}h2.tribe-events-page-title a:hover,h2.tribe-events-page-title a:focus{color:#333;text-decoration:underline}#tribe-events-header,#tribe-events-footer{margin-bottom:.5em;clear:both}#tribe-events-header .tribe-events-sub-nav,#tribe-events-footer .tribe-events-sub-nav{list-style-type:none;margin:0;overflow:hidden;line-height:normal;text-align:center}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-footer .tribe-events-sub-nav li{display:inline-block;zoom:1;*display:inline;margin:0;vertical-align:middle}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{float:left;margin-right:5px;text-align:left;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next{float:right;margin-left:5px;text-align:right;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left{float:left;text-align:left;white-space:nowrap}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right{float:right;text-align:right;white-space:nowrap}.tribe-events-ajax-loading{display:none;position:absolute;left:50%;margin-left:-27px;top:150px;padding:15px;background:#666;z-index:10;border-radius:5px;-webkit-box-shadow:none !important;box-shadow:none !important;-moz-box-shadow:none !important}.tribe-events-loading .tribe-events-ajax-loading{display:block}.tribe-events-ajax-loading.tribe-events-active-spinner,.tribe-events-ajax-loading.tribe-events-active-spinner img{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{margin:1.25em 0 18px;clear:both}.tribe-events-map #tribe-events-header{margin:1em 0}.single-tribe_events #tribe-events-header{margin:1em 0 20px}.single-tribe_events #tribe-events-header li,.single-tribe_events #tribe-events-footer li{width:48%}#tribe-events-content .tribe-events-nav-date{padding-top:16px}select.tribe-events-dropdown{width:auto;font-size:11px;margin:33px 9px 0 0}#tribe-events-events-picker,#tribe-events-picker{display:inline}@media only screen and (max-width:767px){#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-previous,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{display:block;width:50%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.tribe-events-sub-nav li a{display:block;padding:10px 15px;background:#666;color:#fff;white-space:normal}.tribe-events-sub-nav .tribe-events-nav-previous,.tribe-events-sub-nav .tribe-events-nav-left{padding:0 1px}.tribe-events-sub-nav .tribe-events-nav-next,.tribe-events-sub-nav .tribe-events-nav-right{padding:0 0 0 1px}}#tribe-events-content{position:relative;margin-bottom:48px;padding:2px 0}#tribe-events-content.tribe-events-list{padding:0}.tribe-events-list h2.tribe-events-page-title{margin-bottom:15px}#tribe-events-content.tribe-events-list{margin-bottom:60px}.tribe-events-list .vevent.hentry{border-bottom:1px solid #ddd;padding:2.25em 0;margin:0}.tribe-events-list .vevent.hentry.tribe-events-first{padding-top:0}.tribe-events-list h2.tribe-events-list-event-title{margin:0;padding:0;font-size:1.4em;line-height:1.4em;text-transform:none;letter-spacing:0;display:block;border:0}.tribe-events-list h2.tribe-events-list-event-title{float:none;display:inline}.tribe-events-event-details .tribe-events-event-meta address.tribe-events-address{font-style:normal;font-family:inherit;font-size:inherit;line-height:inherit}.tribe-events-list .tribe-events-event-image{float:left;width:30%;margin:0 3% 0 0}.tribe-events-list .tribe-events-event-image img{width:100%;height:auto;margin:0;padding:0}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:left;width:67%;position:relative}.tribe-events-loop .tribe-events-event-meta{float:none;clear:both;border:0;margin:5px 0 15px 0;line-height:1.5;font-size:14px;font-weight:bold;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1;*display:inline}.tribe-events-event-meta address.tribe-events-address{display:inline;font-style:normal;font-family:inherit;font-size:inherit;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{line-height:1.2;margin:0;display:block}.tribe-events-list .time-details{margin:0 0 8px 0}.tribe-events-list .tribe-events-event-cost{float:right;margin:0 0 5px 5px}.tribe-events-list .tribe-events-event-cost span{font-weight:bold;background:#eee;border:1px solid #ddd;display:block;padding:5px 10px;text-align:center;line-height:1.3;font-style:normal;text-overflow:ellipsis}.tribe-events-list .tribe-events-loop .tribe-events-content{width:100%;padding:0}.tribe-events-list .tribe-events-loop .tribe-events-content p{margin:0}.tribe-events-list-separator-year{display:block;text-align:center;font-size:38px;color:#ccc;padding:1em 2.25em 0;font-weight:bold}.tribe-events-list-separator-month{display:block;text-transform:uppercase;font-weight:bold;font-size:14px;margin:2.5em 0 0;background-color:#EEE;padding:6px 10px}.tribe-events-list-separator-month+.vevent.hentry.tribe-events-first{padding-top:2.25em}.tribe-events-list .vevent.hentry.tribe-event-end-month{border-bottom:0;padding-bottom:0}@media only screen and (max-width:767px){.tribe-events-list .tribe-events-event-image{float:none;width:100%;margin:0 0 20px 0}.tribe-events-list .tribe-events-event-image+div.tribe-events-content{float:none;width:100%}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:block;margin:8px 0 0}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo .tribe-events-divider{display:none}}.tribe-events-loop{clear:both}.tribe-events-loop .vevent.tribe-events-last{border-bottom:0}.tribe-events-loop .tribe-events-content{width:60%;float:left;padding:0 5% 0 0}.events-archive .tribe-events-content p,.single-tribe_venue .tribe-events-loop .tribe-events-content p{margin:0}.events-archive h3 .published,.single-tribe_venue h3 .published{font-size:18px;margin-top:0;font-style:italic;text-transform:none}.tribe-events-event-meta-desc,.tribe-events-event-day{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{margin-left:auto;margin-right:auto;display:block;text-align:center}.tribe-events-meta-group .tribe-events-single-section-title{margin:20px 0 10px;font-size:1.4em;font-weight:bold}.tribe-events-meta-group+.tribe-events-single-section-title{margin-top:0}.tribe-events-event-meta .tribe-events-meta-group address.tribe-events-address{margin:0;display:block}#eventbrite-embed{width:100%;min-height:225px;margin:24px 0}.eventbrite-ticket-embed{margin:0 0 30px 0}.tribe-events-schedule{margin:20px 0 0}.single-tribe_events .tribe-events-schedule .tribe-events-divider,.single-tribe_events .tribe-events-schedule .recurringinfo,.single-tribe_events .tribe-events-schedule .tribe-events-cost{font-size:1.2em}.single-tribe_events .tribe-events-schedule h3{font-size:1.2em;display:inline-block;zoom:1;*display:inline;margin:0;padding:0;vertical-align:middle;white-space:nowrap}.single-tribe_events .tribe-events-schedule .tribe-events-cost{vertical-align:middle}.single-tribe_events .tribe-events-cal-links{display:inline-block;zoom:1;*display:inline;margin:0 0 20px 0;vertical-align:middle}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{margin-bottom:0}.single-tribe_events .tribe-events-event-image{clear:both;text-align:center;margin-bottom:30px}.single-tribe_events .tribe-events-event-meta{background:#fafafa;border:1px solid #eee;margin:30px 0}.single-tribe_events .tribe-events-venue-map{width:58%;margin:20px 4% 2% 0;padding:5px;float:right;background:#eee;border:1px solid #ddd;border-radius:3px;display:inline-block;zoom:1;*display:inline;vertical-align:top}.single-tribe_events #tribe-events-gmap{height:0 !important;padding-top:50%;width:100% !important;margin:0 !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;padding-top:100%;width:100% !important;margin-top:50px}.single-tribe_events .tribe-events-event-meta{font-size:12px}.tribe-events-event-meta .tribe-events-meta-group,.tribe-events-event-meta .column{float:left;width:33.3333%;padding:0 4%;text-align:left;margin:0 0 20px 0;display:inline-block;zoom:1;*display:inline;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.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:bold;line-height:1;list-style:none}.single-tribe_events #tribe-events-content .tribe-events-event-meta dd{padding:0;margin:0 0 10px 0;line-height:1.5;list-style:none;float:none}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-content{width:auto;padding:0}@media only screen and (max-width:767px){.single-tribe_events .tribe-events-schedule h3{display:block;margin-bottom:10px}.single-tribe_events .tribe-events-schedule .recurringinfo .tribe-events-divider{display:none}.tribe-events-event-meta .tribe-events-meta-group,.tribe-events-event-meta .column{float:none;width:100%}}#tribe-events-content table.tribe-events-calendar{margin:12px 0 .6em;clear:both;font-size:12px;border-collapse:collapse}#tribe-events-content table.tribe-events-calendar,#tribe-events-content .tribe-events-calendar td{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:bold}.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{height:110px;width:14.28%;color:#114b7d;vertical-align:top;padding:0 0 .5em;font-size:12px}.vevent.viewmore{font-weight:bold}.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip,.recurring-info-tooltip{border:1px solid #666;position:absolute;z-index:1001;bottom:30px;left:3px;width:320px;background-color:#f9f9f9;color:#333;line-height:1.4;display:none}.tribe-events-tooltip .tribe-events-arrow{width:18px;height:11px;background-image:url(images/tribe-tooltips.png);background-repeat:no-repeat;background-position:0 0;-webkit-background-size:44px 19px;background-size:44px 19px;display:block;position:absolute;bottom:-11px;left:20px}.tribe-events-calendar .tribe-events-right .tribe-events-tooltip,.tribe-events-week .tribe-events-right .tribe-events-tooltip,.recurring-info-tooltip{left:auto;right:3px}.tribe-events-right .tribe-events-tooltip .tribe-events-arrow{left:auto;right:30px}.recurringinfo{display:inline-block;vertical-align:middle;zoom:1;*display:inline;position:relative}.event-is-recurring{position:relative;font-style:normal;font-weight:500;color:rgba(0,0,0,.7)}.event-is-recurring:hover{color:#000}.recurring-info-tooltip.tribe-events-tooltip{left:10px;width:200px;padding-bottom:.8em}.events-archive.events-gridview #tribe-events-content table .vevent{margin:0 5%;padding:6px 8px;border-bottom:1px solid #e7e7e7}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-viewmore{margin:0 5%;padding:9px 8px;font-weight:bold;line-height:1;border-top:1px solid #e7e7e7}.tribe-events-calendar td .tribe-events-viewmore a{font-size:100%}.tribe-events-calendar th{width:250px;height:10px;background-color:#ddd;color:#333;padding:4px 0;text-align:center;text-transform:uppercase;letter-spacing:1px}.tribe-events-calendar td div[id*="tribe-events-daynum-"]{padding:6px 9px;line-height:1.2}.tribe-events-calendar td a{font-size:91.7%}.tribe-events-calendar div[id*="tribe-events-event-"],.tribe-events-calendar div[id*="tribe-events-daynum-"]{position:relative;margin:0}#tribe-events-content .tribe-events-calendar div[id*="tribe-events-event-"] h3.tribe-events-month-event-title{line-height:1.25;font-size:13px;font-weight:normal;font-family:sans-serif;font-weight:bold;text-transform:none;margin:0;padding:0;letter-spacing:0}.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{margin:0;color:#fff;background-color:#666;font-size:12px;padding:0 6px;min-height:24px;line-height:24px;letter-spacing:1px;font-weight:normal}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;padding:3px 6px 6px;font-weight:normal}.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{padding:0;font-size:11px;line-height:1.5}.tribe-events-list-widget ol li{margin-bottom:30px;list-style:none}.tribe-events-list-widget .duration{font-weight:bold}table.tribe-events-tickets .tickets_price{font-style:italic;color:#000;font-weight:bold}td.tickets_name{color:#777;font-size:13px}.single-tribe_events #tribe-events-content form.cart{background:#fafafa;border:1px solid #eee;margin:30px 0;padding:0 4% 3%}table.tribe-events-tickets{margin:0;width:100%}table.tribe-events-tickets td{border-top:1px solid #ddd;padding:8px 10px 8px 0;vertical-align:middle}table.tribe-events-tickets .tickets_nostock{display:inline-block;text-align:center}h2.tribe-events-tickets-title{margin:20px 0 25px;font-size:1.4em;font-weight:bold}#tribe-events-bar{width:100%;min-width:220px;margin-bottom:30px;height:auto;position:relative;clear:none}#tribe-events-bar *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#tribe-bar-form{background:#f5f5f5;position:relative;margin:0;width:100%}#tribe-bar-form input{font-size:15px;margin:0 4px 0 0}#tribe-bar-form input[type="text"]{width:100%;padding:0 0 5px 0;background:0;border:0;border-bottom:1px dashed #b9b9b9;line-height:1;height:auto;font-weight:bold;border-radius:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#tribe-bar-form input[type=text]:focus{outline:0}input[name*="tribe-bar-"]::-webkit-input-placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}input[name*="tribe-bar-"]:-moz-placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}.placeholder{color:#5f5f5f;font-weight:normal;font-style:italic;line-height:1.3}#tribe-bar-form .tribe-bar-submit input[type=submit]{font-size:13px;line-height:20px;letter-spacing:0;width:100%;height:auto;padding:10px;background-image:none;background:#666;color:#fff;border:0;border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-appearance:button}.tribe-bar-submit input[type=submit]:hover{background:#999;color:#fff}#tribe-bar-form label{display:block;font-size:11px;line-height:1;text-transform:uppercase;font-weight:bold;margin:0 0 5px 0;padding:0}#tribe-bar-dates .select2-choice{border-bottom:1px dashed #b9b9b9}#tribe-bar-form .tribe-bar-filters{position:relative;float:left;width:100%;margin:0}#tribe-bar-form #tribe-bar-views+.tribe-bar-filters{right:16.66667%;left:auto;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;width:25%;margin-bottom:0;padding:15px}.tribe-bar-search-filter{float:left;width:33.3333%;margin-bottom:0;padding:15px}.tribe-bar-submit{float:left;width:25%;margin-bottom:0;margin-left:16.6667%;padding:15px}#tribe-bar-form #tribe-bar-views{position:relative;left:83.3333%;right:auto;float:left;width:16.66667%;padding:0 0 0 5px;background:transparent;margin:0}#tribe-bar-views:hover,#tribe-bar-views label:hover{cursor:pointer}.tribe-bar-views-inner{padding:15px 0 45px 0;background:#e0e0e0;margin:0}#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:0;z-index:10001;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#tribe-bar-form.tribe-bar-mini #tribe-bar-views{width:16.66667%}#tribe-bar-views .tribe-bar-views-list{list-style-type:none;margin:0 0 0 5px;padding:0;position:absolute;left:0;top:auto;z-index:99;border-radius:0 0 3px 3px}#tribe-bar-views li.tribe-bar-views-option{line-height:14px;margin:0 5px 0 0;padding:0;list-style:none;background:0;filter:"progid:DXImageTransform.Microsoft.gradient(enabled=false)";list-style:none;border:0;padding:0;display:none;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#tribe-bar-views .tribe-bar-views-option:first-child,#tribe-bar-views .tribe-bar-views-option.tribe-bar-active,#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{color:#444;text-align:left;display:block;text-decoration:none;padding:6px 15px;background:#e0e0e0}#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{border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;-moz-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{width:100%;float:left}#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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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{width:45%;padding:10px}.tribe-bar-mini .tribe-bar-submit{width:25%;margin-left:5%;padding:10px}#tribe-bar-form.tribe-bar-mini .tribe-bar-submit input[type=submit]{font-size:11px;padding:10px 5px;-webkit-appearance:button}.tribe-bar-mini #tribe-bar-views{width:16.66667%}.tribe-bar-mini .tribe-bar-views-inner{padding:10px 0 35px 0}.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 10px}#tribe-bar-collapse-toggle{display:none;float:left;padding:15px;position:relative;font-size:13px;line-height:28px;font-weight:bold;text-transform:uppercase;background:#f5f5f5}#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{top:10px;right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(136,183,213,0);border-top-color:inherit;border-width:8px}#tribe-bar-collapse-toggle.tribe-bar-filters-open span.tribe-bar-toggle-arrow:after{top:0;border-top-color:transparent;border-bottom-color:inherit}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views+.tribe-bar-filters{display:none;margin-top:5px;overflow:hidden;clear:both;left:auto;right:auto;width:100%}.tribe-bar-collapse .tribe-bar-filters-inner>div,.tribe-bar-collapse #tribe-bar-views{width:100%;height:auto;margin:0}.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 0}#tribe-bar-form.tribe-bar-collapse .tribe-bar-views-inner label{margin:0}@media only screen and (max-width:767px){.tribe-bar-collapse #tribe-bar-collapse-toggle{width:60%}#tribe-bar-form.tribe-bar-collapse #tribe-bar-views{width:40%}}.tribe-bar-is-disabled .tribe-events-page-title{line-height:45px;text-align:left;clear:none;margin:0}.tribe-bar-disabled{float:right;position:relative;z-index:101}.tribe-bar-disabled #tribe-events-bar{width:auto;min-width:0;float:none}.tribe-bar-disabled #tribe-bar-form{width:auto;border-radius:3px}.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:0;display:block;width:85px;margin:0;padding:0;font-size:13px;line-height:15px}.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{width:50%;float:left;left:50%;right:auto;padding:0}.tribe-bar-disabled .tribe-bar-views-inner{min-width:100px;padding:5px 0 25px 0;border-radius:0 3px 3px 0}.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{padding:4px 10px;margin:0}.tribe-bar-disabled #tribe-bar-views .select2-container .select2-choice{line-height:18px;height:auto;font-size:13px}.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-select2-results-views span[class^="tribe-icon-"],.tribe-bar-views-list span[class^="tribe-icon-"],.tribe-bar-view-list a[class*="tribe-icon-"]{padding-left:24px;background-repeat:no-repeat;background-position:0 50%;min-height:16px;display:block}.tribe-select2-results-views span[class^="tribe-icon-"]{min-height:16px;display:inline-block}.tribe-select2-results-views span[class^="tribe-icon-"],.tribe-bar-views-list span[class^="tribe-icon-"],.tribe-bar-view-list a[class^="tribe-icon-"]{background-image:url(images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-list,.tribe-bar-views-list span.tribe-icon-list,.tribe-bar-view-list a.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-upcoming,.tribe-bar-view-list a.tribe-icon-month{padding-left:30px;background-position:10px 50%}.tribe-select2-results-views .tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-bar-view-list a.tribe-icon-month{background-image:url(images/events-bar/icon-month.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-week,.tribe-bar-views-list span.tribe-icon-week{background-image:url(images/events-bar/icon-week.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-day,.tribe-bar-views-list span.tribe-icon-day{background-image:url(images/events-bar/icon-day.png);-webkit-background-size:15px 16px;background-size:15px 16px}.tribe-select2-results-views span.tribe-icon-photo,.tribe-bar-views-list span.tribe-icon-photo{background-image:url(images/events-bar/icon-photo.png);-webkit-background-size:15px 14px;background-size:15px 14px}.tribe-select2-results-views span.tribe-icon-map,.tribe-bar-views-list span.tribe-icon-map{background-image:url(images/events-bar/icon-map.png);-webkit-background-size:12px 16px;background-size:12px 16px;background-position:2px 50%}@media only screen and (min--moz-device-pixel-ratio:2),only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (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-select2-results-views span[class^="tribe-icon-"],.tribe-bar-views-list span[class^="tribe-icon-"],.tribe-bar-view-list a[class^="tribe-icon-"]{background-image:url(images/events-bar/icon-month@2x.png)}.tribe-select2-results-views span.tribe-icon-list,.tribe-bar-views-list span.tribe-icon-list,.tribe-bar-view-list a.tribe-icon-upcoming{background-image:url(images/events-bar/icon-list@2x.png)}.tribe-select2-results-views span.tribe-icon-month,.tribe-bar-views-list span.tribe-icon-month,.tribe-bar-view-list a.tribe-icon-month{background-image:url(images/events-bar/icon-month@2x.png)}.tribe-select2-results-views span.tribe-icon-week,.tribe-bar-views-list span.tribe-icon-week{background-image:url(images/events-bar/icon-week@2x.png)}.tribe-select2-results-views span.tribe-icon-day,.tribe-bar-views-list span.tribe-icon-day{background-image:url(images/events-bar/icon-day@2x.png)}.tribe-select2-results-views span.tribe-icon-photo,.tribe-bar-views-list span.tribe-icon-photo{background-image:url(images/events-bar/icon-photo@2x.png)}.tribe-select2-results-views span.tribe-icon-map,.tribe-bar-views-list span.tribe-icon-map{background-image:url(images/events-bar/icon-map@2x.png)}}
resources/tribe-events-skeleton.css CHANGED
@@ -2,8 +2,11 @@
2
  * The Events Calendar Skeleton Stylesheet
3
  * (Only includes enough css to achieve complex layouts like calendar and week view.)
4
  *
5
- * You can customize this stylesheet by putting a stylesheet with the name
6
  * tribe-events.css in the tribe-events/ directory of your theme.
 
 
 
7
  *
8
  * @package TribeEventsCalendar
9
  * @since 1.0
2
  * The Events Calendar Skeleton Stylesheet
3
  * (Only includes enough css to achieve complex layouts like calendar and week view.)
4
  *
5
+ * To add your own custom styles, create a stylesheet with the name
6
  * tribe-events.css in the tribe-events/ directory of your theme.
7
+ * Your new stylesheet will be loaded after our own stylesheet.
8
+ *
9
+ * To replace our stylsheet altogether, you can use the 'tribe_events_stylesheet_url' filter.
10
  *
11
  * @package TribeEventsCalendar
12
  * @since 1.0
resources/tribe-events-theme.css CHANGED
@@ -1,8 +1,11 @@
1
  /**
2
  * The Events Calendar Tribe Theme Stylesheet
3
  *
4
- * You can customize this stylesheet by putting a stylesheet with the name
5
  * tribe-events.css in the tribe-events/ directory of your theme.
 
 
 
6
  *
7
  * @package TribeEventsCalendar
8
  * @since 3.0
1
  /**
2
  * The Events Calendar Tribe Theme Stylesheet
3
  *
4
+ * To add your own custom styles, create a stylesheet with the name
5
  * tribe-events.css in the tribe-events/ directory of your theme.
6
+ * Your new stylesheet will be loaded after our own stylesheet.
7
+ *
8
+ * To replace our stylsheet altogether, you can use the 'tribe_events_stylesheet_url' filter.
9
  *
10
  * @package TribeEventsCalendar
11
  * @since 3.0
resources/tribe-events.min.js CHANGED
@@ -1,17 +1,20 @@
1
- var tribe_ev=window.tribe_ev||{},tribe_debug=!1,tribe_storage,t_fail,t_uid;try{t_uid=new Date,(tribe_storage=window.localStorage).setItem(t_uid,t_uid),t_fail=tribe_storage.getItem(t_uid)!=t_uid,tribe_storage.removeItem(t_uid),t_fail&&(tribe_storage=!1)}catch(e$$12){}
2
- (function(f,g){f.fn.tribe_clear_form=function(){return this.each(function(){var b=this.type,e=this.tagName.toLowerCase();if("form"==e)return f(":input",this).tribe_clear_form();"text"==b||"password"==b||"textarea"==e?this.value="":"checkbox"==b||"radio"==b?this.checked=!1:"select"==e&&(this.selectedIndex=0)})};f.fn.tribe_has_attr=function(b){return this.attr(b)!==g};f.fn.tribe_spin=function(){f(".tribe-events-ajax-loading:first").clone().addClass("tribe-events-active-spinner").prependTo("#tribe-events-content");
 
 
 
3
  f(this).addClass("tribe-events-loading").css("opacity",0.25)}})(jQuery);
4
- (function(f,g,b,e,l){tribe_ev.fn={current_date:function(){var a=new Date,b=a.getDate(),d=a.getMonth()+1,a=a.getFullYear();10>b&&(b="0"+b);10>d&&(d="0"+d);return a+"-"+d+"-"+b},disable_inputs:function(a,c){b(a).find(c).prop("disabled",!0);b(a).find(".select2-container").length&&b(a).find(".select2-container").each(function(){var a=b(this).attr("id");b("#"+a).select2("disable")})},disable_empty:function(a,c){b(a).find(c).each(function(){""===b(this).val()&&b(this).prop("disabled",!0)})},enable_inputs:function(a,
5
- c){b(a).find(c).prop("disabled",!1);b(a).find(".select2-container").length&&b(a).find(".select2-container").each(function(){var a=b(this).attr("id");b("#"+a).select2("enable")})},get_base_url:function(){var a="",c=b("#tribe-events-header");c.length&&(a=c.data("baseurl"));return a},get_category:function(){return tribe_ev.fn.is_category()?b("#tribe-events").data("category"):""},get_day:function(){var a="";b("#tribe-bar-date").length&&(a=b("#tribe-bar-date-day").val());e&&debug.info('TEC Debug: tribe_ev.fn.get_day returned this date: "'+
6
  a+'".');return a},get_params:function(){return location.search.substr(1)},get_url_param:function(a){return decodeURIComponent((RegExp("[?|&]"+a+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null},in_params:function(a,b){return a.toLowerCase().indexOf(b)},is_category:function(){var a=b("#tribe-events");return a.length&&a.tribe_has_attr("data-category")&&""!==a.data("category")?!0:!1},parse_string:function(a){var b={};a.replace(/([^&=]+)=?([^&]*)(?:&+|$)/g,function(a,
7
- e,m){(b[e]=b[e]||[]).push(m)});e&&debug.info("TEC Debug: tribe_ev.fn.parse_string returned this map:",b);return b},pre_ajax:function(a){a&&"function"===typeof a&&a()},serialize:function(a,c){tribe_ev.fn.enable_inputs(a,c);tribe_ev.fn.disable_empty(a,c);var d=b(a).serialize();tribe_ev.fn.disable_inputs(a,c);e&&d&&debug.info('TEC Debug: tribe_ev.fn.serialize returned these params: "'+d);return d},set_form:function(a){var c=b("body"),d=b("#tribe-bar-form");c.addClass("tribe-reset-on");d.length&&d.tribe_clear_form();
8
  a=tribe_ev.fn.parse_string(a);b.each(a,function(a,c){if("action"!==a){var d=decodeURI(a),e="";if(1===c.length)b('[name="'+d+'"]').is('input[type="text"], input[type="hidden"]')?b('[name="'+d+'"]').val(c):b('[name="'+d+'"][value="'+c+'"]').is(":checkbox, :radio")?b('[name="'+d+'"][value="'+c+'"]').prop("checked",!0):b('[name="'+d+'"]').is("select")&&b('select[name="'+d+'"] option[value="'+c+'"]').attr("selected",!0);else for(var f=0;f<c.length;f++)e=b('[name="'+d+'"][value="'+c[f]+'"]'),e.is(":checkbox, :radio")?
9
- e.prop("checked",!0):b('select[name="'+d+'"] option[value="'+c[f]+'"]').attr("selected",!0)}});c.removeClass("tribe-reset-on");e&&debug.info('TEC Debug: tribe_ev.fn.set_form fired these params: "'+a)},setup_ajax_timer:function(a){clearTimeout(tribe_ev.state.ajax_timer);tribe_ev.tests.reset_on()||(tribe_ev.state.ajax_timer=setTimeout(function(){a()},500),e&&debug.info('TEC Debug: tribe_ev.fn.setup_ajax_timer fired with a timeout of "500" ms'))},snap:function(a,c,d){b(c).on("click",d,function(c){c.preventDefault();
10
  b("html, body").animate({scrollTop:b(a).offset().top-120},{duration:0})})},tooltips:function(){b("#tribe-events").on("mouseenter",'div[id*="tribe-events-event-"], div[id*="tribe-events-daynum-"]:has(a), div.event-is-recurring',function(){var a=0,c=b(this),d=b("body");d.hasClass("events-gridview")?a=c.find("a").outerHeight()+18:d.is(".single-tribe_events, .events-list, .tribe-events-day")?a=c.outerHeight()+12:d.is(".tribe-events-photo")&&(a=c.outerHeight()+10);c.parents(".tribe-events-calendar-widget").length&&
11
- (a=c.outerHeight()-6);d.hasClass("tribe-events-week")||c.find(".tribe-events-tooltip").css("bottom",a).show()}).on("mouseleave",'div[id*="tribe-events-event-"], div[id*="tribe-events-daynum-"]:has(a), div.event-is-recurring',function(){b(this).find(".tribe-events-tooltip").stop(!0,!1).fadeOut(200)})},update_picker:function(a){var c=b("#tribe-bar-date");b().bootstrapDatepicker&&c.length?(c.bootstrapDatepicker("setValue",a),e&&debug.info('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to the boostrapDatepicker')):
12
- c.length?(c.val(a),e&&debug.warn('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to '+c)):e&&debug.warn('TEC Debug: tribe_ev.fn.update_picker couldnt send "'+a+'" to any object.')},url_path:function(a){return a.split("?")[0]}};tribe_ev.tests={live_ajax:function(){var a=b("#tribe-events");return a.length&&a.tribe_has_attr("data-live_ajax")&&"1"==a.data("live_ajax")?!0:!1},map_view:function(){return"undefined"!==typeof GeoLoc&&GeoLoc.map_view?!0:!1},pushstate:!(!f.history||!history.pushState),reset_on:function(){return b("body").is(".tribe-reset-on")},
13
- starting_delim:function(){return-1!=tribe_ev.state.cur_url.indexOf("?")?"&":"?"}};tribe_ev.data={ajax_response:{},base_url:"",cur_url:tribe_ev.fn.url_path(g.URL),cur_date:tribe_ev.fn.current_date(),initial_url:tribe_ev.fn.url_path(g.URL),params:tribe_ev.fn.get_params()};tribe_ev.events={};tribe_ev.state={ajax_running:!1,ajax_timer:0,category:"",date:"",do_string:!1,filters:!1,filter_cats:!1,initial_load:!0,paged:1,page_title:"",params:{},popping:!1,pushstate:!0,pushcount:0,recurrence:!1,url_params:{},
14
  view:"",view_target:""}})(window,document,jQuery,tribe_debug);
15
- (function(f,g,b,e,l,a,c,d,h){b(g).ready(function(){h&&debug.info("TEC Debug: Tribe Events JS init, Init Timer started from tribe-events.js.");var f=b("#tribe-events"),k=b("#tribe-events-header");f.removeClass("tribe-no-js");c.category=a.get_category();e.base_url=a.get_base_url();c.page_title=g.title;(f=a.get_url_param("tribe_event_display"))?c.view=f:k.length&&k.tribe_has_attr("data-view")&&(c.view=k.data("view"));c.view&&h&&debug.time("Tribe JS Init Timer");b(".tribe-events-calendar-widget").not(":eq(0)").hide();
16
- a.tooltips();b(".tribe-events-list .tribe-events-notices").length&&b("#tribe-events-header .tribe-events-sub-nav").empty();b(".tribe-events-list").length&&b(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month");b(l).on("tribe_ev_ajaxSuccess",function(){b(".tribe-events-active-spinner").remove()});h&&(debug.groupCollapsed("TEC Debug: Browser and events settings information:"),debug.log('User agent reported as: "'+navigator.userAgent),debug.log('Live ajax returned its state as: "'+
17
- d.live_ajax()),c.view&&debug.log('Tribe js detected the view to be: "'+c.view),debug.log('Supports pushstate: "'+d.pushstate),debug.groupEnd(),debug.info("TEC Debug: tribe-events.js successfully loaded"))})})(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
1
+ var tribe_ev=window.tribe_ev||{},tribe_debug=!0;
2
+ window.debug=function(){function f(b){!a||!c&&d&&d.log||a.apply(h,b)}for(var h=this,b=Array.prototype.slice,d=h.console,k={},a,c,e=9,l=["error","warn","info","debug","log"],m="assert clear count dir dirxml exception group groupCollapsed groupEnd profile profileEnd table time timeEnd trace".split(" "),g=m.length,n=[];0<=--g;)(function(a){k[a]=function(){0!==e&&d&&d[a]&&d[a].apply(d,arguments)}})(m[g]);for(g=l.length;0<=--g;)(function(a,c){k[c]=function(){var g=b.call(arguments),m=[c].concat(g);n.push(m);
3
+ f(m);d&&(0<e?e>a:l.length+e<=a)&&(d.firebug?d[c].apply(h,g):d[c]?d[c](g):d.log(g))}})(g,l[g]);k.setLevel=function(a){e="number"===typeof a?a:9};k.setCallback=function(){var e=b.call(arguments),d=n.length,g=d;a=e.shift()||null;c="boolean"===typeof e[0]?e.shift():!1;for(g-="number"===typeof e[0]?e.shift():d;g<d;)f(n[g++])};return k}();Object.prototype.hasOwnProperty.call(window,"tribe_ev")&&(tribe_ev.diagnostics={init:[]});var tribe_storage,t_fail,t_uid;
4
+ try{t_uid=new Date,(tribe_storage=window.localStorage).setItem(t_uid,t_uid),t_fail=tribe_storage.getItem(t_uid)!=t_uid,tribe_storage.removeItem(t_uid),t_fail&&(tribe_storage=!1)}catch(e$$12){}
5
+ (function(f,h){f.fn.tribe_clear_form=function(){return this.each(function(){var b=this.type,d=this.tagName.toLowerCase();if("form"==d)return f(":input",this).tribe_clear_form();"text"==b||"password"==b||"textarea"==d?this.value="":"checkbox"==b||"radio"==b?this.checked=!1:"select"==d&&(this.selectedIndex=0)})};f.fn.tribe_has_attr=function(b){return this.attr(b)!==h};f.fn.tribe_spin=function(){f(".tribe-events-ajax-loading:first").clone().addClass("tribe-events-active-spinner").prependTo("#tribe-events-content");
6
  f(this).addClass("tribe-events-loading").css("opacity",0.25)}})(jQuery);
7
+ (function(f,h,b,d,k){tribe_ev.fn={current_date:function(){var a=new Date,b=a.getDate(),e=a.getMonth()+1,a=a.getFullYear();10>b&&(b="0"+b);10>e&&(e="0"+e);return a+"-"+e+"-"+b},disable_inputs:function(a,c){b(a).find(c).prop("disabled",!0);b(a).find(".select2-container").length&&b(a).find(".select2-container").each(function(){var a=b(this).attr("id");b("#"+a).select2("disable")})},disable_empty:function(a,c){b(a).find(c).each(function(){""===b(this).val()&&b(this).prop("disabled",!0)})},enable_inputs:function(a,
8
+ c){b(a).find(c).prop("disabled",!1);b(a).find(".select2-container").length&&b(a).find(".select2-container").each(function(){var a=b(this).attr("id");b("#"+a).select2("enable")})},get_base_url:function(){var a="",c=b("#tribe-events-header");c.length&&(a=c.data("baseurl"));return a},get_category:function(){return tribe_ev.fn.is_category()?b("#tribe-events").data("category"):""},get_day:function(){var a="";b("#tribe-bar-date").length&&(a=b("#tribe-bar-date-day").val());d&&debug.info('TEC Debug: tribe_ev.fn.get_day returned this date: "'+
9
  a+'".');return a},get_params:function(){return location.search.substr(1)},get_url_param:function(a){return decodeURIComponent((RegExp("[?|&]"+a+"=([^&;]+?)(&|#|;|$)").exec(location.search)||[,""])[1].replace(/\+/g,"%20"))||null},in_params:function(a,b){return a.toLowerCase().indexOf(b)},is_category:function(){var a=b("#tribe-events");return a.length&&a.tribe_has_attr("data-category")&&""!==a.data("category")?!0:!1},parse_string:function(a){var b={};a.replace(/([^&=]+)=?([^&]*)(?:&+|$)/g,function(a,
10
+ d,m){(b[d]=b[d]||[]).push(m)});d&&debug.info("TEC Debug: tribe_ev.fn.parse_string returned this map:",b);return b},pre_ajax:function(a){a&&"function"===typeof a&&a()},serialize:function(a,c){tribe_ev.fn.enable_inputs(a,c);tribe_ev.fn.disable_empty(a,c);var e=b(a).serialize();tribe_ev.fn.disable_inputs(a,c);d&&e&&debug.info('TEC Debug: tribe_ev.fn.serialize returned these params: "'+e);return e},set_form:function(a){var c=b("body"),e=b("#tribe-bar-form");c.addClass("tribe-reset-on");e.length&&e.tribe_clear_form();
11
  a=tribe_ev.fn.parse_string(a);b.each(a,function(a,c){if("action"!==a){var d=decodeURI(a),e="";if(1===c.length)b('[name="'+d+'"]').is('input[type="text"], input[type="hidden"]')?b('[name="'+d+'"]').val(c):b('[name="'+d+'"][value="'+c+'"]').is(":checkbox, :radio")?b('[name="'+d+'"][value="'+c+'"]').prop("checked",!0):b('[name="'+d+'"]').is("select")&&b('select[name="'+d+'"] option[value="'+c+'"]').attr("selected",!0);else for(var f=0;f<c.length;f++)e=b('[name="'+d+'"][value="'+c[f]+'"]'),e.is(":checkbox, :radio")?
12
+ e.prop("checked",!0):b('select[name="'+d+'"] option[value="'+c[f]+'"]').attr("selected",!0)}});c.removeClass("tribe-reset-on");d&&debug.info('TEC Debug: tribe_ev.fn.set_form fired these params: "'+a)},setup_ajax_timer:function(a){clearTimeout(tribe_ev.state.ajax_timer);tribe_ev.tests.reset_on()||(tribe_ev.state.ajax_timer=setTimeout(function(){a()},500),d&&debug.info('TEC Debug: tribe_ev.fn.setup_ajax_timer fired with a timeout of "500" ms'))},snap:function(a,c,d){b(c).on("click",d,function(c){c.preventDefault();
13
  b("html, body").animate({scrollTop:b(a).offset().top-120},{duration:0})})},tooltips:function(){b("#tribe-events").on("mouseenter",'div[id*="tribe-events-event-"], div[id*="tribe-events-daynum-"]:has(a), div.event-is-recurring',function(){var a=0,c=b(this),d=b("body");d.hasClass("events-gridview")?a=c.find("a").outerHeight()+18:d.is(".single-tribe_events, .events-list, .tribe-events-day")?a=c.outerHeight()+12:d.is(".tribe-events-photo")&&(a=c.outerHeight()+10);c.parents(".tribe-events-calendar-widget").length&&
14
+ (a=c.outerHeight()-6);d.hasClass("tribe-events-week")||c.find(".tribe-events-tooltip").css("bottom",a).show()}).on("mouseleave",'div[id*="tribe-events-event-"], div[id*="tribe-events-daynum-"]:has(a), div.event-is-recurring',function(){b(this).find(".tribe-events-tooltip").stop(!0,!1).fadeOut(200)})},update_picker:function(a){var c=b("#tribe-bar-date");b().bootstrapDatepicker&&c.length?(c.bootstrapDatepicker("setValue",a),d&&debug.info('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to the boostrapDatepicker')):
15
+ c.length?(c.val(a),d&&debug.warn('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to '+c)):d&&debug.warn('TEC Debug: tribe_ev.fn.update_picker couldnt send "'+a+'" to any object.')},url_path:function(a){return a.split("?")[0]}};tribe_ev.tests={live_ajax:function(){var a=b("#tribe-events");return a.length&&a.tribe_has_attr("data-live_ajax")&&"1"==a.data("live_ajax")?!0:!1},map_view:function(){return"undefined"!==typeof GeoLoc&&GeoLoc.map_view?!0:!1},pushstate:!(!f.history||!history.pushState),reset_on:function(){return b("body").is(".tribe-reset-on")},
16
+ starting_delim:function(){return-1!=tribe_ev.state.cur_url.indexOf("?")?"&":"?"}};tribe_ev.data={ajax_response:{},base_url:"",cur_url:tribe_ev.fn.url_path(h.URL),cur_date:tribe_ev.fn.current_date(),initial_url:tribe_ev.fn.url_path(h.URL),params:tribe_ev.fn.get_params()};tribe_ev.events={};tribe_ev.state={ajax_running:!1,ajax_timer:0,category:"",date:"",do_string:!1,filters:!1,filter_cats:!1,initial_load:!0,paged:1,page_title:"",params:{},popping:!1,pushstate:!0,pushcount:0,recurrence:!1,url_params:{},
17
  view:"",view_target:""}})(window,document,jQuery,tribe_debug);
18
+ (function(f,h,b,d,k,a,c,e,l){b(h).ready(function(){l&&debug.info("TEC Debug: Tribe Events JS init, Init Timer started from tribe-events.js.");var f=b("#tribe-events"),g=b("#tribe-events-header");f.removeClass("tribe-no-js");c.category=a.get_category();d.base_url=a.get_base_url();c.page_title=h.title;(f=a.get_url_param("tribe_event_display"))?c.view=f:g.length&&g.tribe_has_attr("data-view")&&(c.view=g.data("view"));c.view&&l&&debug.time("Tribe JS Init Timer");b(".tribe-events-calendar-widget").not(":eq(0)").hide();
19
+ a.tooltips();b(".tribe-events-list .tribe-events-notices").length&&b("#tribe-events-header .tribe-events-sub-nav").empty();b(".tribe-events-list").length&&b(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month");b(k).on("tribe_ev_ajaxSuccess",function(){b(".tribe-events-active-spinner").remove()});l&&(debug.groupCollapsed("TEC Debug: Browser and events settings information:"),debug.log('User agent reported as: "'+navigator.userAgent),debug.log('Live ajax returned its state as: "'+
20
+ e.live_ajax()),c.view&&debug.log('Tribe js detected the view to be: "'+c.view),debug.log('Supports pushstate: "'+e.pushstate),debug.groupEnd(),debug.info("TEC Debug: tribe-events.js successfully loaded"))})})(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
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: 3.0.1
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: tribe-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: 3.0.2
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: tribe-events-calendar
views/modules/bar.php CHANGED
@@ -36,7 +36,8 @@ $views = tribe_events_get_views();
36
  <div id="tribe-bar-views">
37
  <div class="tribe-bar-views-inner tribe-clearfix">
38
  <h3 class="tribe-events-visuallyhidden"><?php _e( 'Event Views Navigation', 'tribe-events-calendar' ) ?></h3>
39
- <label><?php _e( 'View As', 'tribe-events-calendar' ); ?></label><select class="tribe-select2 tribe-no-param" name="tribe-bar-view">
 
40
  <?php foreach ( $views as $view ) : ?>
41
  <option <?php echo tribe_is_view($view['displaying']) ? 'selected' : 'tribe-inactive' ?> value="<?php echo $view['url'] ?>" data-view="<?php echo $view['displaying'] ?>">
42
  <?php echo $view['anchor'] ?>
36
  <div id="tribe-bar-views">
37
  <div class="tribe-bar-views-inner tribe-clearfix">
38
  <h3 class="tribe-events-visuallyhidden"><?php _e( 'Event Views Navigation', 'tribe-events-calendar' ) ?></h3>
39
+ <label><?php _e( 'View As', 'tribe-events-calendar' ); ?></label>
40
+ <select class="tribe-bar-views-select tribe-no-param" name="tribe-bar-view">
41
  <?php foreach ( $views as $view ) : ?>
42
  <option <?php echo tribe_is_view($view['displaying']) ? 'selected' : 'tribe-inactive' ?> value="<?php echo $view['url'] ?>" data-view="<?php echo $view['displaying'] ?>">
43
  <?php echo $view['anchor'] ?>
views/widgets/list-widget.php CHANGED
@@ -26,7 +26,7 @@
26
 
27
  <li class="tribe-events-list-widget-events">
28
  <h4 class="entry-title summary">
29
- <a href="<?php tribe_get_event_link(); ?>" rel="bookmark"><?php the_title(); ?></a>
30
  </h4>
31
  <!-- Event Time -->
32
  <div class="duration">
26
 
27
  <li class="tribe-events-list-widget-events">
28
  <h4 class="entry-title summary">
29
+ <a href="<?php echo tribe_get_event_link(); ?>" rel="bookmark"><?php the_title(); ?></a>
30
  </h4>
31
  <!-- Event Time -->
32
  <div class="duration">