The Events Calendar - Version 3.8.1

Version Description

  • Fixed a bug where the wrong date was showing in the title of the page when a date was selected in the tribe bar
  • Fixed a bug where previous and next events links were (or were not) showing up when they're supposed to
  • Fixed a bug where sending our datepicker into no conflict mode could cause javascript errors on events pages were it was not loaded (thanks to adamvanbavel for reporting this on the forums!)
  • Added mailing list subscription options to the Welcome/Update plugin activation pages
  • Fixed a bug causing issues with the display of maps in single event and venue views (thanks to Trevor on the forums for the original report!)
Download this release

Release Info

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

Code changes from version 3.8 to 3.8.1

admin-views/admin-update-message.php CHANGED
@@ -37,7 +37,9 @@
37
  <h3><?php _e( 'PSST... Want a Discount?', 'tribe-events-calendar' ); ?></h3>
38
  <p><?php _e( 'We send out discounts to our core users via our newsletter.' ); ?></p>
39
  <form action="http://moderntribe.createsend.com/t/r/s/athqh/" method="post">
40
- <p><input id="fieldEmail" class="regular-text" name="cm-athqh-athqh" type="email" placeholder="Email" required /><br/></p>
 
 
41
  <button type="submit" class="button-primary"><?php _e( 'Sign Up', 'tribe-events-calendar' ); ?></button>
42
  </form>
43
  <br/>
37
  <h3><?php _e( 'PSST... Want a Discount?', 'tribe-events-calendar' ); ?></h3>
38
  <p><?php _e( 'We send out discounts to our core users via our newsletter.' ); ?></p>
39
  <form action="http://moderntribe.createsend.com/t/r/s/athqh/" method="post">
40
+ <p><input id="listthkduyk" name="cm-ol-thkduyk" type="checkbox" /> <label for="listthkduyk">Developer News</label></p>
41
+ <p><input id="listathqh" name="cm-ol-athqh" checked type="checkbox" /> <label for="listathqh">News and Announcements</label></p>
42
+ <p><input id="fieldEmail" class="regular-text" name="cm-athqh-athqh" type="email" placeholder="Email" required /></p>
43
  <button type="submit" class="button-primary"><?php _e( 'Sign Up', 'tribe-events-calendar' ); ?></button>
44
  </form>
45
  <br/>
admin-views/admin-welcome-message.php CHANGED
@@ -4,7 +4,7 @@
4
  * The template that displays the welcome message when the plugin is first activated.
5
  */
6
 
7
- $video_url = 'https://www.youtube.com/watch?v=HHohYGTk3QQ';
8
 
9
  ?>
10
 
@@ -23,9 +23,10 @@ $video_url = 'https://www.youtube.com/watch?v=HHohYGTk3QQ';
23
  </div>
24
  <div class="tribe-half-column">
25
  <h3><?php _e( "Newsletter Signup", 'tribe-events-calendar' ); ?></h3>
26
- <p><?php _e( "Stay in touch with The Events Calendar Pro. We send out the occiasional update, key developer notices, and even the occasional discount.", 'tribe-events-calendar' ); ?></p>
27
  <form action="http://moderntribe.createsend.com/t/r/s/athqh/" method="post">
28
  <p><input id="listthkduyk" name="cm-ol-thkduyk" type="checkbox" /> <label for="listthkduyk">Developer News</label></p>
 
29
  <p><input id="fieldEmail" class="regular-text" name="cm-athqh-athqh" type="email" placeholder="Email" required /></p>
30
  <button type="submit" class="button-primary"><?php _e( 'Sign Up', 'tribe-events-calendar' ); ?></button>
31
  </form>
4
  * The template that displays the welcome message when the plugin is first activated.
5
  */
6
 
7
+ $video_url = 'http://vimeo.com/108805711';
8
 
9
  ?>
10
 
23
  </div>
24
  <div class="tribe-half-column">
25
  <h3><?php _e( "Newsletter Signup", 'tribe-events-calendar' ); ?></h3>
26
+ <p><?php _e( "Stay in touch with The Events Calendar Pro. We send out periodic updates, key developer notices, and even the occasional discount.", 'tribe-events-calendar' ); ?></p>
27
  <form action="http://moderntribe.createsend.com/t/r/s/athqh/" method="post">
28
  <p><input id="listthkduyk" name="cm-ol-thkduyk" type="checkbox" /> <label for="listthkduyk">Developer News</label></p>
29
+ <p><input id="listathqh" name="cm-ol-athqh" checked type="checkbox" /> <label for="listathqh">News and Announcements</label></p>
30
  <p><input id="fieldEmail" class="regular-text" name="cm-athqh-athqh" type="email" placeholder="Email" required /></p>
31
  <button type="submit" class="button-primary"><?php _e( 'Sign Up', 'tribe-events-calendar' ); ?></button>
32
  </form>
lib/EmbeddedMaps.php CHANGED
@@ -99,8 +99,8 @@ class TribeEvents_EmbeddedMaps {
99
 
100
  tribe_get_template_part( 'modules/map', null, array(
101
  'index' => $index,
102
- 'width' => null === $width ? tribe_get_option( 'embedGoogleMapsWidth', '100%' ) : $width,
103
- 'height' => null === $height ? tribe_get_option( 'embedGoogleMapsHeight', '350px' ) : $height,
104
  ) );
105
 
106
  $this->setup_scripts();
99
 
100
  tribe_get_template_part( 'modules/map', null, array(
101
  'index' => $index,
102
+ 'width' => null === $width ? apply_filters( 'tribe_events_single_map_default_width', '100%' ) : $width,
103
+ 'height' => null === $height ? apply_filters( 'tribe_events_single_map_default_height', '350px' ) : $height,
104
  ) );
105
 
106
  $this->setup_scripts();
lib/template-classes/list.php CHANGED
@@ -76,7 +76,7 @@ if ( ! class_exists( 'Tribe_Events_List_Template' ) ) {
76
  $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
77
  }
78
 
79
- $query = TribeEventsQuery::getEvents( $args, true );
80
 
81
  // $hash is used to detect whether the primary arguments in the query have changed (i.e. due to a filter bar request)
82
  // if they have, we want to go back to page 1
76
  $args[TribeEvents::TAXONOMY] = $_POST['tribe_event_category'];
77
  }
78
 
79
+ $query = tribe_get_events( $args, true );
80
 
81
  // $hash is used to detect whether the primary arguments in the query have changed (i.e. due to a filter bar request)
82
  // if they have, we want to go back to page 1
lib/the-events-calendar.class.php CHANGED
@@ -24,7 +24,7 @@ if ( ! class_exists( 'TribeEvents' ) ) {
24
  const VENUE_POST_TYPE = 'tribe_venue';
25
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
26
 
27
- const VERSION = '3.8';
28
  const FEED_URL = 'http://tri.be/category/products/feed/';
29
  const INFO_API_URL = 'http://wpapi.org/api/plugin/the-events-calendar.php';
30
  const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
24
  const VENUE_POST_TYPE = 'tribe_venue';
25
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
26
 
27
+ const VERSION = '3.8.1';
28
  const FEED_URL = 'http://tri.be/category/products/feed/';
29
  const INFO_API_URL = 'http://wpapi.org/api/plugin/the-events-calendar.php';
30
  const WP_PLUGIN_URL = 'http://wordpress.org/extend/plugins/the-events-calendar/';
lib/tribe-event-query.class.php CHANGED
@@ -79,12 +79,8 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
79
  $query->set( 'eventDisplay', TribeEvents::instance()->default_view() );
80
  }
81
 
82
- do_action( 'log', 'multi_posttype', 'default', var_export( $query->tribe_is_multi_posttype, true ) );
83
- do_action( 'log', 'types', 'default', $types );
84
- do_action( 'log', 'request', 'default', $query->query_vars );
85
-
86
  // check if any possiblity of this being an event category
87
- $query->tribe_is_event_category = ( isset( $query->query_vars[TribeEvents::TAXONOMY] ) && $query->query_vars[TribeEvents::TAXONOMY] != '' )
88
  ? true // it was an event category
89
  : false;
90
 
@@ -97,14 +93,16 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
97
  : false;
98
 
99
  $query->tribe_is_event_query = ( $query->tribe_is_event
100
- || $query->tribe_is_event_category
101
- || $query->tribe_is_event_venue
102
- || $query->tribe_is_event_organizer )
103
  ? true // this is an event query of some type
104
  : false; // move along, this is not the query you are looking for
105
 
106
  // is the query pulling posts from the past
107
- if ( ( $query->is_main_query() || tribe_is_ajax_view_request() ) && ! empty( $_REQUEST['tribe_event_display'] ) && $_REQUEST['tribe_event_display'] == 'past' ) {
 
 
108
  $query->tribe_is_past = true;
109
  } else {
110
  $query->tribe_is_past = isset( $query->tribe_is_past ) ? $query->tribe_is_past : false;
@@ -173,12 +171,12 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
173
  $query->set( 'update_post_meta_cache', false );
174
  $query->set( 'update_post_term_cache', false );
175
  $query->set(
176
- 'meta_query', array(
177
- array(
178
- 'key' => '_EventStartDate',
179
- 'type' => 'DATETIME'
180
- )
181
- )
182
  );
183
  do_action( 'tribe_events_pre_get_posts', $query );
184
 
@@ -385,9 +383,11 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
385
  if ( ! empty( $query->tribe_is_event_query ) || ! empty( $query->tribe_is_multi_posttype ) ) {
386
  if ( has_filter( 'tribe_events_query_posts_groupby' ) ) {
387
  _deprecated_function( "The 'tribe_events_query_posts_groupby' filter", '3.8', " the 'posts_groupby' filter" );
 
388
  return apply_filters( 'tribe_events_query_posts_groupby', $groupby_sql, $query );
389
  }
390
  }
 
391
  return $groupby_sql;
392
  }
393
 
@@ -761,8 +761,8 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
761
  $output_date_format = '%Y-%m-%d %H:%i:%s';
762
  do_action( 'log', 'raw counts args', 'tribe-events-query', $args );
763
  $raw_counts = $wpdb->get_results(
764
- $wpdb->prepare(
765
- "
766
  SELECT tribe_event_start.post_id as ID,
767
  tribe_event_start.meta_value as EventStartDate,
768
  DATE_FORMAT( tribe_event_end_date.meta_value, '%1\$s') as EventEndDate,
@@ -777,18 +777,18 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
777
  OR ( tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
778
  )
779
  ORDER BY menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;",
780
- $output_date_format,
781
- $output_date_format,
782
- $post_id_query->query_vars['start_date'],
783
- $post_id_query->query_vars['end_date'],
784
- implode( ',', array_map( 'intval', $post_ids ) )
785
- )
786
  );
787
  do_action( 'log', 'raw counts query', 'tribe-events-query', $wpdb->last_query );
788
  $start_date = new DateTime( $post_id_query->query_vars['start_date'] );
789
  $end_date = new DateTime( $post_id_query->query_vars['end_date'] );
790
  $days = TribeDateUtils::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
791
- $term_id = isset( $wp_query->query_vars[TribeEvents::TAXONOMY] ) ? $wp_query->query_vars[TribeEvents::TAXONOMY] : null;
792
  if ( is_int( $term_id ) ) {
793
  $term = get_term_by( 'id', $term_id, TribeEvents::TAXONOMY );
794
  } elseif ( is_string( $term_id ) ) {
@@ -831,8 +831,8 @@ if ( ! class_exists( 'TribeEventsQuery' ) ) {
831
  $count ++;
832
  }
833
  }
834
- $event_ids[$formatted_date] = $_day_event_ids;
835
- $counts[$formatted_date] = $count;
836
  }
837
  break;
838
  }
79
  $query->set( 'eventDisplay', TribeEvents::instance()->default_view() );
80
  }
81
 
 
 
 
 
82
  // check if any possiblity of this being an event category
83
+ $query->tribe_is_event_category = ! empty ( $query->query_vars[ TribeEvents::TAXONOMY ] )
84
  ? true // it was an event category
85
  : false;
86
 
93
  : false;
94
 
95
  $query->tribe_is_event_query = ( $query->tribe_is_event
96
+ || $query->tribe_is_event_category
97
+ || $query->tribe_is_event_venue
98
+ || $query->tribe_is_event_organizer )
99
  ? true // this is an event query of some type
100
  : false; // move along, this is not the query you are looking for
101
 
102
  // is the query pulling posts from the past
103
+ if ( $query->is_main_query() && ! empty( $_REQUEST['tribe_event_display'] ) && $_REQUEST['tribe_event_display'] == 'past' ) {
104
+ $query->tribe_is_past = true;
105
+ } elseif ( tribe_is_ajax_view_request() && $query->get( 'eventDisplay' ) == 'past' ) {
106
  $query->tribe_is_past = true;
107
  } else {
108
  $query->tribe_is_past = isset( $query->tribe_is_past ) ? $query->tribe_is_past : false;
171
  $query->set( 'update_post_meta_cache', false );
172
  $query->set( 'update_post_term_cache', false );
173
  $query->set(
174
+ 'meta_query', array(
175
+ array(
176
+ 'key' => '_EventStartDate',
177
+ 'type' => 'DATETIME'
178
+ )
179
+ )
180
  );
181
  do_action( 'tribe_events_pre_get_posts', $query );
182
 
383
  if ( ! empty( $query->tribe_is_event_query ) || ! empty( $query->tribe_is_multi_posttype ) ) {
384
  if ( has_filter( 'tribe_events_query_posts_groupby' ) ) {
385
  _deprecated_function( "The 'tribe_events_query_posts_groupby' filter", '3.8', " the 'posts_groupby' filter" );
386
+
387
  return apply_filters( 'tribe_events_query_posts_groupby', $groupby_sql, $query );
388
  }
389
  }
390
+
391
  return $groupby_sql;
392
  }
393
 
761
  $output_date_format = '%Y-%m-%d %H:%i:%s';
762
  do_action( 'log', 'raw counts args', 'tribe-events-query', $args );
763
  $raw_counts = $wpdb->get_results(
764
+ $wpdb->prepare(
765
+ "
766
  SELECT tribe_event_start.post_id as ID,
767
  tribe_event_start.meta_value as EventStartDate,
768
  DATE_FORMAT( tribe_event_end_date.meta_value, '%1\$s') as EventEndDate,
777
  OR ( tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
778
  )
779
  ORDER BY menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;",
780
+ $output_date_format,
781
+ $output_date_format,
782
+ $post_id_query->query_vars['start_date'],
783
+ $post_id_query->query_vars['end_date'],
784
+ implode( ',', array_map( 'intval', $post_ids ) )
785
+ )
786
  );
787
  do_action( 'log', 'raw counts query', 'tribe-events-query', $wpdb->last_query );
788
  $start_date = new DateTime( $post_id_query->query_vars['start_date'] );
789
  $end_date = new DateTime( $post_id_query->query_vars['end_date'] );
790
  $days = TribeDateUtils::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
791
+ $term_id = isset( $wp_query->query_vars[ TribeEvents::TAXONOMY ] ) ? $wp_query->query_vars[ TribeEvents::TAXONOMY ] : null;
792
  if ( is_int( $term_id ) ) {
793
  $term = get_term_by( 'id', $term_id, TribeEvents::TAXONOMY );
794
  } elseif ( is_string( $term_id ) ) {
831
  $count ++;
832
  }
833
  }
834
+ $event_ids[ $formatted_date ] = $_day_event_ids;
835
+ $counts[ $formatted_date ] = $count;
836
  }
837
  break;
838
  }
public/template-tags/loop.php CHANGED
@@ -129,8 +129,17 @@ if ( class_exists( 'TribeEvents' ) ) {
129
 
130
  $title = __( 'Upcoming Events', 'tribe-events-calendar' );
131
 
 
132
  if ( isset( $_REQUEST['tribe-bar-date'] ) && $wp_query->have_posts() ) {
133
- $first_event_date = tribe_get_end_date( $wp_query->posts[0], false );
 
 
 
 
 
 
 
 
134
  $last_event_date = tribe_get_end_date( $wp_query->posts[count( $wp_query->posts ) - 1], false );
135
  $title = sprintf( __( 'Events for %1$s - %2$s', 'tribe-events-calendar'), $first_event_date, $last_event_date );
136
  } elseif ( tribe_is_past() ) {
@@ -179,6 +188,7 @@ if ( class_exists( 'TribeEvents' ) ) {
179
  * @param string $return what to return, 'bool' or 'event'
180
  *
181
  * @return mixed
 
182
  */
183
  function tribe_has_previous_event( $return = 'bool' ) {
184
  global $wp_query;
@@ -186,13 +196,20 @@ if ( class_exists( 'TribeEvents' ) ) {
186
 
187
  if ( tribe_is_event_query() ) {
188
  // Edit the current event query to look for an upcoming event
189
- $args = (array) $wp_query->query;
190
- $args['eventDisplay'] = 'past';
191
 
192
  if ( tribe_is_past() ) {
193
- $args['paged'] = $wp_query->query_vars['paged'] ? $wp_query->query_vars['paged'] + 1 : 2;
 
194
  } else {
195
- $args['paged'] = $wp_query->query_vars['paged'] ? $wp_query->query_vars['paged'] - 1 : 0;
 
 
 
 
 
 
 
196
  }
197
 
198
  $events = tribe_get_events( $args );
@@ -201,7 +218,6 @@ if ( class_exists( 'TribeEvents' ) ) {
201
 
202
  }
203
 
204
- // @todo 'tribe_has_past_events' filter is @deprecated as of 3.7
205
  return apply_filters( 'tribe_has_previous_event', apply_filters( 'tribe_has_past_events', $previous_event ) );
206
  }
207
 
@@ -219,13 +235,20 @@ if ( class_exists( 'TribeEvents' ) ) {
219
  if ( tribe_is_event_query() && ! empty( $wp_query->posts ) ) {
220
 
221
  // Edit the current event query to look for an upcoming event
222
- $args = (array) $wp_query->query;
223
- $args['eventDisplay'] = 'list';
224
 
225
  if ( tribe_is_past() ) {
226
- $args['paged'] = $wp_query->query_vars['paged'] ? $wp_query->query_vars['paged'] - 1 : 0;
 
 
 
 
 
 
 
227
  } else {
228
- $args['paged'] = $wp_query->query_vars['paged'] ? $wp_query->query_vars['paged'] + 1 : 2;
 
229
  }
230
 
231
  $events = tribe_get_events( $args );
129
 
130
  $title = __( 'Upcoming Events', 'tribe-events-calendar' );
131
 
132
+ // If there's a date selected in the tribe bar, show the date range of the currently showing events
133
  if ( isset( $_REQUEST['tribe-bar-date'] ) && $wp_query->have_posts() ) {
134
+
135
+ if ( $wp_query->get( 'paged' ) > 1 ) {
136
+ // if we're on page 1, show the selected tribe-bar-date as the first date in the range
137
+ $first_event_date = tribe_get_start_date( $wp_query->posts[0], false );
138
+ } else {
139
+ //otherwise show the start date of the first event in the results
140
+ $first_event_date = tribe_event_format_date( $_REQUEST['tribe-bar-date'], false );
141
+ }
142
+
143
  $last_event_date = tribe_get_end_date( $wp_query->posts[count( $wp_query->posts ) - 1], false );
144
  $title = sprintf( __( 'Events for %1$s - %2$s', 'tribe-events-calendar'), $first_event_date, $last_event_date );
145
  } elseif ( tribe_is_past() ) {
188
  * @param string $return what to return, 'bool' or 'event'
189
  *
190
  * @return mixed
191
+ * @todo 'tribe_has_past_events' filter is @deprecated as of 3.7
192
  */
193
  function tribe_has_previous_event( $return = 'bool' ) {
194
  global $wp_query;
196
 
197
  if ( tribe_is_event_query() ) {
198
  // Edit the current event query to look for an upcoming event
199
+ $args = (array) $wp_query->query;
 
200
 
201
  if ( tribe_is_past() ) {
202
+ $args['eventDisplay'] = 'past';
203
+ $args['paged'] = $wp_query->get( 'paged' ) ? $wp_query->get( 'paged' ) + 1 : 2;
204
  } else {
205
+ if ( $wp_query->get( 'paged' ) > 1 ) {
206
+ $args['eventDisplay'] = 'list';
207
+ $args['paged'] = $wp_query->get( 'paged' ) - 1;
208
+ } else {
209
+ // if we're on the first page of upcoming, previous events will page page one of the past
210
+ $args['eventDisplay'] = 'past';
211
+ $args['paged'] = 1;
212
+ }
213
  }
214
 
215
  $events = tribe_get_events( $args );
218
 
219
  }
220
 
 
221
  return apply_filters( 'tribe_has_previous_event', apply_filters( 'tribe_has_past_events', $previous_event ) );
222
  }
223
 
235
  if ( tribe_is_event_query() && ! empty( $wp_query->posts ) ) {
236
 
237
  // Edit the current event query to look for an upcoming event
238
+ $args = (array) $wp_query->query;
 
239
 
240
  if ( tribe_is_past() ) {
241
+ if ( $wp_query->get( 'paged' ) > 1 ) {
242
+ $args['eventDisplay'] = 'past';
243
+ $args['paged'] = $wp_query->get( 'paged' ) - 1;
244
+ } else {
245
+ // if we're on page one of the past, next events will be on page 1 of regular list view
246
+ $args['eventDisplay'] = 'list';
247
+ $args['paged'] = 1;
248
+ }
249
  } else {
250
+ $args['eventDisplay'] = 'list';
251
+ $args['paged'] = $wp_query->get( 'paged' ) ? $wp_query->get( 'paged' ) + 1 : 2;
252
  }
253
 
254
  $events = tribe_get_events( $args );
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.8
7
  Tested up to: 4.0
8
- Stable tag: 3.8
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -324,6 +324,14 @@ At no point during the 3.0 lifecycle will the major version change. But you can
324
 
325
  3.x 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>
326
 
 
 
 
 
 
 
 
 
327
  = 3.8 =
328
 
329
  * Changed capability for importing events from "administrator" to "import"
5
  Donate link: http://m.tri.be/29
6
  Requires at least: 3.8
7
  Tested up to: 4.0
8
+ Stable tag: 3.8.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
324
 
325
  3.x 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>
326
 
327
+ = 3.8.1 =
328
+
329
+ * Fixed a bug where the wrong date was showing in the title of the page when a date was selected in the tribe bar
330
+ * Fixed a bug where previous and next events links were (or were not) showing up when they're supposed to
331
+ * Fixed a bug where sending our datepicker into no conflict mode could cause javascript errors on events pages were it was not loaded (thanks to adamvanbavel for reporting this on the forums!)
332
+ * Added mailing list subscription options to the Welcome/Update plugin activation pages
333
+ * Fixed a bug causing issues with the display of maps in single event and venue views (thanks to Trevor on the forums for the original report!)
334
+
335
  = 3.8 =
336
 
337
  * Changed capability for importing events from "administrator" to "import"
resources/tribe-events.js CHANGED
@@ -460,7 +460,7 @@ Date.prototype.format = function( mask, utc ) {
460
  $( this ).addClass( 'tribe-events-loading' ).css( 'opacity', .25 )
461
  };
462
 
463
- if ( "undefined" !== typeof $.fn.datepicker ) {
464
  var datepicker = $.fn.datepicker.noConflict();
465
  $.fn.bootstrapDatepicker = datepicker;
466
  }
460
  $( this ).addClass( 'tribe-events-loading' ).css( 'opacity', .25 )
461
  };
462
 
463
+ if ( "undefined" !== typeof $.fn.datepicker && "undefined" !== typeof $.fn.datepicker.noConflict ) {
464
  var datepicker = $.fn.datepicker.noConflict();
465
  $.fn.bootstrapDatepicker = datepicker;
466
  }
resources/tribe-events.min.js CHANGED
@@ -1,25 +1,25 @@
1
  var tribe_ev=window.tribe_ev||{},tribe_debug=!1;
2
- window.debug=function(){function e(c){a&&(g||!d||!d.log)&&a.apply(k,c)}for(var k=this,c=Array.prototype.slice,d=k.console,b={},a,g,f=9,h=["error","warn","info","debug","log"],l="assert clear count dir dirxml exception group groupCollapsed groupEnd profile profileEnd table time timeEnd trace".split(" "),m=l.length,q=[];0<=--m;)(function(a){b[a]=function(){0!==f&&d&&d[a]&&d[a].apply(d,arguments)}})(l[m]);for(m=h.length;0<=--m;)(function(a,g){b[g]=function(){var b=c.call(arguments),l=[g].concat(b);q.push(l);
3
- e(l);if(d&&(0<f?f>a:h.length+f<=a))d.firebug?d[g].apply(k,b):d[g]?d[g](b):d.log(b)}})(m,h[m]);b.setLevel=function(a){f="number"===typeof a?a:9};b.setCallback=function(){var f=c.call(arguments),b=q.length,d=b;a=f.shift()||null;g="boolean"===typeof f[0]?f.shift():!1;for(d-="number"===typeof f[0]?f.shift():b;d<b;)e(q[d++])};return b}();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
- var tribeDateFormat=function(){var e=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,c=/[^-+\dA-Z]/g,d=function(c,a){c=String(c);for(a=a||2;c.length<a;)c="0"+c;return c};return function(b,a,g){var f=tribeDateFormat;1==arguments.length&&("[object String]"==Object.prototype.toString.call(b)&&!/\d/.test(b))&&(a=b,b=void 0);"string"===typeof b&&(b=b.replace(/-/g,
6
- "/"));b=b?new Date(b):new Date;if(!isNaN(b)){a=String(f.masks[a]||a||f.masks["default"]);"UTC:"==a.slice(0,4)&&(a=a.slice(4),g=!0);var h=g?"getUTC":"get",l=b[h+"Date"](),m=b[h+"Day"](),q=b[h+"Month"](),p=b[h+"FullYear"](),n=b[h+"Hours"](),r=b[h+"Minutes"](),s=b[h+"Seconds"](),h=b[h+"Milliseconds"](),t=g?0:b.getTimezoneOffset(),u={d:l,dd:d(l),ddd:f.i18n.dayNames[m],dddd:f.i18n.dayNames[m+7],m:q+1,mm:d(q+1),mmm:f.i18n.monthNames[q],mmmm:f.i18n.monthNames[q+12],yy:String(p).slice(2),yyyy:p,h:n%12||12,
7
- hh:d(n%12||12),H:n,HH:d(n),M:r,MM:d(r),s:s,ss:d(s),l:d(h,3),L:d(99<h?Math.round(h/10):h),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:g?"UTC":(String(b).match(k)||[""]).pop().replace(c,""),o:(0<t?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4),S:["th","st","nd","rd"][3<l%10?0:(10!=l%100-l%10)*l%10]};return a.replace(e,function(a){return a in u?u[a]:a.slice(1,a.length-1)})}}}();
8
  tribeDateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",tribeQuery:"yyyy-mm-dd",tribeMonthQuery:"yyyy-mm",0:"yyyy-mm-dd",1:"m/d/yyyy",2:"mm/dd/yyyy",3:"d/m/yyyy",4:"dd/mm/yyyy",5:"m-d-yyyy",6:"mm-dd-yyyy",7:"d-m-yyyy",8:"dd-mm-yyyy",m0:"yyyy-mm",m1:"m/yyyy",m2:"mm/yyyy",m3:"m/yyyy",m4:"mm/yyyy",m5:"m-yyyy",m6:"mm-yyyy",m7:"m-yyyy",m8:"mm-yyyy"};tribeDateFormat.i18n={dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")};
9
  Date.prototype.format=function(e,k){return tribeDateFormat(this,e,k)};
10
- (function(){function e(c,d){var b=arguments.callee;b.cache[c]||(b.cache[c]=function(){var a=c,g=/^[\w\-]+$/.test(c)?b.get(c):(a="template(string)",c),f=1,a=("try { "+(b.variable?"var "+b.variable+" = this.stash;":"with (this.stash) { ")+"this.ret += '"+g.replace(/\[\[/g,"\u0011").replace(/\]\]/g,"\u0013").replace(/'(?![^\x11\x13]+?\x13)/g,"\\x27").replace(/^\s*|\s*$/g,"").replace(/\n/g,function(){return"';\nthis.line = "+ ++f+"; this.ret += '\\n"}).replace(/\x11=raw(.+?)\x13/g,"' + ($1) + '").replace(/\x11=(.+?)\x13/g,
11
  "' + this.escapeHTML($1) + '").replace(/\x11(.+?)\x13/g,"'; $1; this.ret += '")+"'; "+(b.variable?"":"}")+"return this.ret;} catch (e) { throw 'TemplateError: ' + e + ' (on "+a+"' + ' line ' + this.line + ')'; } //@ sourceURL="+a+"\n").replace(/this\.ret \+= '';/g,""),d=new Function(a),e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#x22;","'":"&#x27;"},m=function(a){return(""+a).replace(/[&<>\'\"]/g,function(a){return e[a]})};return function(a){return d.call(b.context={escapeHTML:m,line:1,ret:"",stash:a})}}());
12
  return d?b.cache[c](d):b.cache[c]}function k(c,d){var b=function(a){a.include=function(a,c){var d={},b;for(b in e.context.stash)e.context.stash.hasOwnProperty(b)&&(d[b]=e.context.stash[b]);if(c)for(b in c)c.hasOwnProperty(b)&&(d[b]=c[b]);b=e.context;b.ret+=e(a,d);e.context=b};a.wrapper=function(a,c){var b=e.context.ret;e.context.ret="";c.apply(e.context);var d=e.context.stash.content;e.context.stash.content=e.context.ret;e.context.ret=b+e(a,e.context.stash);e.context.stash.content=d};return e(c,a)};
13
  return d?b(d):b}e.cache={};e.get=function(c){return document.getElementById(c).innerHTML};e.get=function(c){var d=k.get;return d?d(c):document.getElementById(c).innerHTML};this.tribe_tmpl=e;this.tribe_tmpl_extended=k})();
14
  (function(e,k){e.fn.tribe_clear_form=function(){return this.each(function(){var c=this.type,b=this.tagName.toLowerCase();if("form"==b)return e(":input",this).tribe_clear_form();"text"==c||"password"==c||"textarea"==b?this.value="":"checkbox"==c||"radio"==c?this.checked=!1:"select"==b&&(this.selectedIndex=0)})};e.fn.tribe_has_attr=function(c){return this.attr(c)!==k};e.fn.tribe_spin=function(){e(".tribe-events-ajax-loading:first").clone().addClass("tribe-events-active-spinner").prependTo("#tribe-events-content");
15
- e(this).addClass("tribe-events-loading").css("opacity",0.25)};if("undefined"!==typeof e.fn.datepicker){var c=e.fn.datepicker.noConflict();e.fn.bootstrapDatepicker=c}"undefined"!==typeof tribe_bootstrap_datepicker_strings&&null!=tribe_bootstrap_datepicker_strings.dates&&(e.fn.bootstrapDatepicker.dates.en=tribe_bootstrap_datepicker_strings.dates)})(jQuery);
16
  (function(e,k,c,d,b){tribe_ev.fn={current_date:function(){var a=new Date,c=a.getDate(),b=a.getMonth()+1,a=a.getFullYear();10>c&&(c="0"+c);10>b&&(b="0"+b);return a+"-"+b+"-"+c},disable_inputs:function(a,b){c(a).find(b).prop("disabled",!0);c(a).find(".select2-container").length&&c(a).find(".select2-container").each(function(){var a=c(this).attr("id");c("#"+a).select2("disable")})},disable_empty:function(a,b){c(a).find(b).each(function(){""===c(this).val()&&c(this).prop("disabled",!0)})},enable_inputs:function(a,
17
  b){c(a).find(b).prop("disabled",!1);c(a).find(".select2-container").length&&c(a).find(".select2-container").each(function(){var a=c(this).attr("id");c("#"+a).select2("enable")})},execute_resize:function(){var a=tribe_ev.data.v_width;tribe_ev.fn.update_viewport_variables();a!==tribe_ev.data.v_width&&(tribe_ev.fn.mobile_class(),c(tribe_ev.events).trigger("tribe_ev_resizeComplete"))},get_base_url:function(){var a="",b=c("#tribe-events-header");b.length&&(a=b.data("baseurl"));return a},get_category:function(){return tribe_ev.fn.is_category()?
18
  c("#tribe-events").data("category"):""},get_day:function(){var a="";c("#tribe-bar-date").length&&(a=c("#tribe-bar-date-day").val());d&&debug.info('TEC Debug: tribe_ev.fn.get_day returned this date: "'+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,c){return a.toLowerCase().indexOf(c)},invalid_date:function(a){a=
19
  new Date(a);return isNaN(a)},invalid_date_in_params:function(a){return a.hasOwnProperty("tribe-bar-date")?isNaN(new Date(a["tribe-bar-date"])):!1},is_category:function(){var a=c("#tribe-events");return a.length&&a.tribe_has_attr("data-category")&&""!==a.data("category")?!0:!1},mobile_class:function(){var a=c("body");tribe_ev.data.v_width<=tribe_ev.data.mobile_break?a.addClass("tribe-mobile"):a.removeClass("tribe-mobile")},parse_string:function(a){var c={};a.replace(/([^&=]+)=?([^&]*)(?:&+|$)/g,function(a,
20
- b,d){(c[b]=c[b]||[]).push(d)});d&&debug.info("TEC Debug: tribe_ev.fn.parse_string returned this map:",c);return c},pre_ajax:function(a){a&&"function"===typeof a&&a()},scroll_to:function(a,b,d){c("html, body").stop().animate({scrollTop:c(a).offset().top-b},{duration:d})},serialize:function(a,b){tribe_ev.fn.enable_inputs(a,b);tribe_ev.fn.disable_empty(a,b);var f=c(a).serialize();tribe_ev.fn.disable_inputs(a,b);d&&f&&debug.info('TEC Debug: tribe_ev.fn.serialize returned these params: "'+f);return f},
21
- set_form:function(a){var b=c("body"),f=c("#tribe-bar-form");b.addClass("tribe-reset-on");f.length&&f.tribe_clear_form();a=tribe_ev.fn.parse_string(a);c.each(a,function(a,b){if("action"!==a){var d=decodeURI(a),g="";if(1===b.length)c('[name="'+d+'"]').is('input[type="text"], input[type="hidden"]')?c('[name="'+d+'"]').val(b):c('[name="'+d+'"][value="'+b+'"]').is(":checkbox, :radio")?c('[name="'+d+'"][value="'+b+'"]').prop("checked",!0):c('[name="'+d+'"]').is("select")&&c('select[name="'+d+'"] option[value="'+
22
- b+'"]').attr("selected",!0);else for(var f=0;f<b.length;f++)g=c('[name="'+d+'"][value="'+b[f]+'"]'),g.is(":checkbox, :radio")?g.prop("checked",!0):c('select[name="'+d+'"] option[value="'+b[f]+'"]').attr("selected",!0)}});b.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'))},
23
  snap:function(a,b,d){c(b).on("click",d,function(b){b.preventDefault();c("html, body").animate({scrollTop:c(a).offset().top-120},{duration:0})})},tooltips:function(){c("#tribe-events").on("mouseenter",'div[id*="tribe-events-event-"], div.event-is-recurring',function(){var a=0,b=c(this),d=c("body");d.hasClass("events-gridview")?a=b.find("a").outerHeight()+18:d.is(".single-tribe_events, .events-list, .tribe-events-day")?a=b.outerHeight()+12:d.is(".tribe-events-photo")&&(a=b.outerHeight()+10);b.parents(".tribe-events-calendar-widget").length&&
24
  (a=b.outerHeight()-6);d.hasClass("tribe-events-week")||(d.hasClass("events-gridview")?(d=b.find(".tribe-events-tooltip"),d.length||(d=b.data("tribejson"),"string"==typeof d&&(d=c.parseJSON(d)),b.append(tribe_tmpl("tribe_tmpl_tooltip",d)),d=b.find(".tribe-events-tooltip")),d.css("bottom",a).show()):b.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(){c(this).find(".tribe-events-tooltip").stop(!0,
25
  !1).fadeOut(200)})},update_picker:function(a){var b=c("#tribe-bar-date");c().bootstrapDatepicker&&b.length?(tribe_ev.state.updating_picker=!0,e.attachEvent&&!e.addEventListener&&(b.bootstrapDatepicker("remove"),b.val(""),b.bootstrapDatepicker(tribe_ev.data.datepicker_opts)),b.bootstrapDatepicker("setDate",a),tribe_ev.state.updating_picker=!1,d&&debug.info('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to the boostrapDatepicker')):b.length?(b.val(a),d&&debug.warn('TEC Debug: tribe_ev.fn.update_picker sent "'+
@@ -27,8 +27,8 @@ a+'" to '+b)):d&&debug.warn('TEC Debug: tribe_ev.fn.update_picker couldnt send "
27
  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},no_bar:function(){return c("body").is(".tribe-bar-is-disabled")},pushstate:!(!e.history||!history.pushState),reset_on:function(){return c("body").is(".tribe-reset-on")},starting_delim:function(){return-1!=tribe_ev.state.cur_url.indexOf("?")?"&":"?"},webkit:"WebkitAppearance"in k.documentElement.style};tribe_ev.data={ajax_response:{},base_url:"",cur_url:tribe_ev.fn.url_path(k.URL),
28
  cur_date:tribe_ev.fn.current_date(),datepicker_formats:{main:"yyyy-mm-dd m/d/yyyy mm/dd/yyyy d/m/yyyy dd/mm/yyyy m-d-yyyy mm-dd-yyyy d-m-yyyy dd-mm-yyyy".split(" "),month:"yyyy-mm m/yyyy mm/yyyy m/yyyy mm/yyyy m-yyyy mm-yyyy m-yyyy mm-yyyy".split(" ")},datepicker_opts:{},initial_url:tribe_ev.fn.url_path(k.URL),mobile_break:768,params:tribe_ev.fn.get_params(),v_height:0,v_width:0};tribe_ev.events={};tribe_ev.state={ajax_running:!1,ajax_timer:0,ajax_trigger:"",category:"",date:"",datepicker_format:"0",
29
  do_string:!1,filters:!1,filter_cats:!1,initial_load:!0,mdate:"",paged:1,page_title:"",params:{},popping:!1,pushstate:!0,pushcount:0,recurrence:!1,updating_picker:!1,url_params:{},view:"",view_target:""}})(window,document,jQuery,tribe_debug);
30
- (function(e,k,c,d,b,a,g,f,h){c(k).ready(function(){function l(){c(".tribe-events-list").length&&c(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month")}function m(){var a=k.URL,b="?";0<a.indexOf("?")&&(b="&");a=a+b+"ical=1&tribe_display="+g.view;c("a.tribe-events-ical").attr("href",a)}h&&debug.info("TEC Debug: Tribe Events JS init, Init Timer started from tribe-events.js.");a.update_viewport_variables();var q=c("body"),p=c("#tribe-events");c("#tribe-events-content");
31
- var n=c("#tribe-events-header"),r;p.removeClass("tribe-no-js");g.category=a.get_category();d.base_url=a.get_base_url();g.page_title=k.title;var s=a.get_url_param("tribe_event_display");s?g.view=s:n.length&&n.tribe_has_attr("data-view")&&(g.view=n.data("view"));p.tribe_has_attr("data-datepicker_format")&&1===p.attr("data-datepicker_format").length&&(g.datepicker_format=p.attr("data-datepicker_format"));g.view&&h&&debug.time("Tribe JS Init Timer");p.length&&p.tribe_has_attr("data-mobilebreak")&&(d.mobile_break=
32
  parseInt(p.attr("data-mobilebreak")));p.length&&0<d.mobile_break&&q.addClass("tribe-is-responsive");c(".tribe-events-calendar-widget").not(":eq(0)").hide();a.tooltips();a.mobile_class();l();c(".tribe-events-list .tribe-events-notices").length&&c("#tribe-events-header .tribe-events-sub-nav").empty();c(".tribe-events-list").length&&c(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month");c(b).on("tribe_ev_ajaxSuccess",function(){c(".tribe-events-active-spinner").remove();
33
- l()});c(b).on("tribe_ev_ajaxSuccess",function(){m()});m();c(e).resize(function(){clearTimeout(r);r=setTimeout(a.execute_resize,200)});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: "'+f.live_ajax()),g.view&&debug.log('Tribe js detected the view to be: "'+g.view),debug.log('Supports pushstate: "'+f.pushstate),debug.groupEnd(),debug.info("TEC Debug: tribe-events.js successfully loaded"))})})(window,
34
  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=!1;
2
+ window.debug=function(){function e(c){a&&(f||!d||!d.log)&&a.apply(k,c)}for(var k=this,c=Array.prototype.slice,d=k.console,b={},a,f,g=9,h=["error","warn","info","debug","log"],l="assert clear count dir dirxml exception group groupCollapsed groupEnd profile profileEnd table time timeEnd trace".split(" "),m=l.length,q=[];0<=--m;)(function(a){b[a]=function(){0!==g&&d&&d[a]&&d[a].apply(d,arguments)}})(l[m]);for(m=h.length;0<=--m;)(function(a,f){b[f]=function(){var b=c.call(arguments),l=[f].concat(b);q.push(l);
3
+ e(l);if(d&&(0<g?g>a:h.length+g<=a))d.firebug?d[f].apply(k,b):d[f]?d[f](b):d.log(b)}})(m,h[m]);b.setLevel=function(a){g="number"===typeof a?a:9};b.setCallback=function(){var g=c.call(arguments),b=q.length,d=b;a=g.shift()||null;f="boolean"===typeof g[0]?g.shift():!1;for(d-="number"===typeof g[0]?g.shift():b;d<b;)e(q[d++])};return b}();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
+ var tribeDateFormat=function(){var e=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,k=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,c=/[^-+\dA-Z]/g,d=function(c,a){c=String(c);for(a=a||2;c.length<a;)c="0"+c;return c};return function(b,a,f){var g=tribeDateFormat;1==arguments.length&&("[object String]"==Object.prototype.toString.call(b)&&!/\d/.test(b))&&(a=b,b=void 0);"string"===typeof b&&(b=b.replace(/-/g,
6
+ "/"));b=b?new Date(b):new Date;if(!isNaN(b)){a=String(g.masks[a]||a||g.masks["default"]);"UTC:"==a.slice(0,4)&&(a=a.slice(4),f=!0);var h=f?"getUTC":"get",l=b[h+"Date"](),m=b[h+"Day"](),q=b[h+"Month"](),p=b[h+"FullYear"](),n=b[h+"Hours"](),r=b[h+"Minutes"](),s=b[h+"Seconds"](),h=b[h+"Milliseconds"](),t=f?0:b.getTimezoneOffset(),u={d:l,dd:d(l),ddd:g.i18n.dayNames[m],dddd:g.i18n.dayNames[m+7],m:q+1,mm:d(q+1),mmm:g.i18n.monthNames[q],mmmm:g.i18n.monthNames[q+12],yy:String(p).slice(2),yyyy:p,h:n%12||12,
7
+ hh:d(n%12||12),H:n,HH:d(n),M:r,MM:d(r),s:s,ss:d(s),l:d(h,3),L:d(99<h?Math.round(h/10):h),t:12>n?"a":"p",tt:12>n?"am":"pm",T:12>n?"A":"P",TT:12>n?"AM":"PM",Z:f?"UTC":(String(b).match(k)||[""]).pop().replace(c,""),o:(0<t?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4),S:["th","st","nd","rd"][3<l%10?0:(10!=l%100-l%10)*l%10]};return a.replace(e,function(a){return a in u?u[a]:a.slice(1,a.length-1)})}}}();
8
  tribeDateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",tribeQuery:"yyyy-mm-dd",tribeMonthQuery:"yyyy-mm",0:"yyyy-mm-dd",1:"m/d/yyyy",2:"mm/dd/yyyy",3:"d/m/yyyy",4:"dd/mm/yyyy",5:"m-d-yyyy",6:"mm-dd-yyyy",7:"d-m-yyyy",8:"dd-mm-yyyy",m0:"yyyy-mm",m1:"m/yyyy",m2:"mm/yyyy",m3:"m/yyyy",m4:"mm/yyyy",m5:"m-yyyy",m6:"mm-yyyy",m7:"m-yyyy",m8:"mm-yyyy"};tribeDateFormat.i18n={dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")};
9
  Date.prototype.format=function(e,k){return tribeDateFormat(this,e,k)};
10
+ (function(){function e(c,d){var b=arguments.callee;b.cache[c]||(b.cache[c]=function(){var a=c,f=/^[\w\-]+$/.test(c)?b.get(c):(a="template(string)",c),g=1,a=("try { "+(b.variable?"var "+b.variable+" = this.stash;":"with (this.stash) { ")+"this.ret += '"+f.replace(/\[\[/g,"\u0011").replace(/\]\]/g,"\u0013").replace(/'(?![^\x11\x13]+?\x13)/g,"\\x27").replace(/^\s*|\s*$/g,"").replace(/\n/g,function(){return"';\nthis.line = "+ ++g+"; this.ret += '\\n"}).replace(/\x11=raw(.+?)\x13/g,"' + ($1) + '").replace(/\x11=(.+?)\x13/g,
11
  "' + this.escapeHTML($1) + '").replace(/\x11(.+?)\x13/g,"'; $1; this.ret += '")+"'; "+(b.variable?"":"}")+"return this.ret;} catch (e) { throw 'TemplateError: ' + e + ' (on "+a+"' + ' line ' + this.line + ')'; } //@ sourceURL="+a+"\n").replace(/this\.ret \+= '';/g,""),d=new Function(a),e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&#x22;","'":"&#x27;"},m=function(a){return(""+a).replace(/[&<>\'\"]/g,function(a){return e[a]})};return function(a){return d.call(b.context={escapeHTML:m,line:1,ret:"",stash:a})}}());
12
  return d?b.cache[c](d):b.cache[c]}function k(c,d){var b=function(a){a.include=function(a,c){var d={},b;for(b in e.context.stash)e.context.stash.hasOwnProperty(b)&&(d[b]=e.context.stash[b]);if(c)for(b in c)c.hasOwnProperty(b)&&(d[b]=c[b]);b=e.context;b.ret+=e(a,d);e.context=b};a.wrapper=function(a,c){var b=e.context.ret;e.context.ret="";c.apply(e.context);var d=e.context.stash.content;e.context.stash.content=e.context.ret;e.context.ret=b+e(a,e.context.stash);e.context.stash.content=d};return e(c,a)};
13
  return d?b(d):b}e.cache={};e.get=function(c){return document.getElementById(c).innerHTML};e.get=function(c){var d=k.get;return d?d(c):document.getElementById(c).innerHTML};this.tribe_tmpl=e;this.tribe_tmpl_extended=k})();
14
  (function(e,k){e.fn.tribe_clear_form=function(){return this.each(function(){var c=this.type,b=this.tagName.toLowerCase();if("form"==b)return e(":input",this).tribe_clear_form();"text"==c||"password"==c||"textarea"==b?this.value="":"checkbox"==c||"radio"==c?this.checked=!1:"select"==b&&(this.selectedIndex=0)})};e.fn.tribe_has_attr=function(c){return this.attr(c)!==k};e.fn.tribe_spin=function(){e(".tribe-events-ajax-loading:first").clone().addClass("tribe-events-active-spinner").prependTo("#tribe-events-content");
15
+ e(this).addClass("tribe-events-loading").css("opacity",0.25)};if("undefined"!==typeof e.fn.datepicker&&"undefined"!==typeof e.fn.datepicker.noConflict){var c=e.fn.datepicker.noConflict();e.fn.bootstrapDatepicker=c}"undefined"!==typeof tribe_bootstrap_datepicker_strings&&null!=tribe_bootstrap_datepicker_strings.dates&&(e.fn.bootstrapDatepicker.dates.en=tribe_bootstrap_datepicker_strings.dates)})(jQuery);
16
  (function(e,k,c,d,b){tribe_ev.fn={current_date:function(){var a=new Date,c=a.getDate(),b=a.getMonth()+1,a=a.getFullYear();10>c&&(c="0"+c);10>b&&(b="0"+b);return a+"-"+b+"-"+c},disable_inputs:function(a,b){c(a).find(b).prop("disabled",!0);c(a).find(".select2-container").length&&c(a).find(".select2-container").each(function(){var a=c(this).attr("id");c("#"+a).select2("disable")})},disable_empty:function(a,b){c(a).find(b).each(function(){""===c(this).val()&&c(this).prop("disabled",!0)})},enable_inputs:function(a,
17
  b){c(a).find(b).prop("disabled",!1);c(a).find(".select2-container").length&&c(a).find(".select2-container").each(function(){var a=c(this).attr("id");c("#"+a).select2("enable")})},execute_resize:function(){var a=tribe_ev.data.v_width;tribe_ev.fn.update_viewport_variables();a!==tribe_ev.data.v_width&&(tribe_ev.fn.mobile_class(),c(tribe_ev.events).trigger("tribe_ev_resizeComplete"))},get_base_url:function(){var a="",b=c("#tribe-events-header");b.length&&(a=b.data("baseurl"));return a},get_category:function(){return tribe_ev.fn.is_category()?
18
  c("#tribe-events").data("category"):""},get_day:function(){var a="";c("#tribe-bar-date").length&&(a=c("#tribe-bar-date-day").val());d&&debug.info('TEC Debug: tribe_ev.fn.get_day returned this date: "'+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,c){return a.toLowerCase().indexOf(c)},invalid_date:function(a){a=
19
  new Date(a);return isNaN(a)},invalid_date_in_params:function(a){return a.hasOwnProperty("tribe-bar-date")?isNaN(new Date(a["tribe-bar-date"])):!1},is_category:function(){var a=c("#tribe-events");return a.length&&a.tribe_has_attr("data-category")&&""!==a.data("category")?!0:!1},mobile_class:function(){var a=c("body");tribe_ev.data.v_width<=tribe_ev.data.mobile_break?a.addClass("tribe-mobile"):a.removeClass("tribe-mobile")},parse_string:function(a){var c={};a.replace(/([^&=]+)=?([^&]*)(?:&+|$)/g,function(a,
20
+ b,d){(c[b]=c[b]||[]).push(d)});d&&debug.info("TEC Debug: tribe_ev.fn.parse_string returned this map:",c);return c},pre_ajax:function(a){a&&"function"===typeof a&&a()},scroll_to:function(a,b,d){c("html, body").stop().animate({scrollTop:c(a).offset().top-b},{duration:d})},serialize:function(a,b){tribe_ev.fn.enable_inputs(a,b);tribe_ev.fn.disable_empty(a,b);var e=c(a).serialize();tribe_ev.fn.disable_inputs(a,b);d&&e&&debug.info('TEC Debug: tribe_ev.fn.serialize returned these params: "'+e);return e},
21
+ set_form:function(a){var b=c("body"),e=c("#tribe-bar-form");b.addClass("tribe-reset-on");e.length&&e.tribe_clear_form();a=tribe_ev.fn.parse_string(a);c.each(a,function(a,b){if("action"!==a){var d=decodeURI(a),e="";if(1===b.length)c('[name="'+d+'"]').is('input[type="text"], input[type="hidden"]')?c('[name="'+d+'"]').val(b):c('[name="'+d+'"][value="'+b+'"]').is(":checkbox, :radio")?c('[name="'+d+'"][value="'+b+'"]').prop("checked",!0):c('[name="'+d+'"]').is("select")&&c('select[name="'+d+'"] option[value="'+
22
+ b+'"]').attr("selected",!0);else for(var f=0;f<b.length;f++)e=c('[name="'+d+'"][value="'+b[f]+'"]'),e.is(":checkbox, :radio")?e.prop("checked",!0):c('select[name="'+d+'"] option[value="'+b[f]+'"]').attr("selected",!0)}});b.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'))},
23
  snap:function(a,b,d){c(b).on("click",d,function(b){b.preventDefault();c("html, body").animate({scrollTop:c(a).offset().top-120},{duration:0})})},tooltips:function(){c("#tribe-events").on("mouseenter",'div[id*="tribe-events-event-"], div.event-is-recurring',function(){var a=0,b=c(this),d=c("body");d.hasClass("events-gridview")?a=b.find("a").outerHeight()+18:d.is(".single-tribe_events, .events-list, .tribe-events-day")?a=b.outerHeight()+12:d.is(".tribe-events-photo")&&(a=b.outerHeight()+10);b.parents(".tribe-events-calendar-widget").length&&
24
  (a=b.outerHeight()-6);d.hasClass("tribe-events-week")||(d.hasClass("events-gridview")?(d=b.find(".tribe-events-tooltip"),d.length||(d=b.data("tribejson"),"string"==typeof d&&(d=c.parseJSON(d)),b.append(tribe_tmpl("tribe_tmpl_tooltip",d)),d=b.find(".tribe-events-tooltip")),d.css("bottom",a).show()):b.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(){c(this).find(".tribe-events-tooltip").stop(!0,
25
  !1).fadeOut(200)})},update_picker:function(a){var b=c("#tribe-bar-date");c().bootstrapDatepicker&&b.length?(tribe_ev.state.updating_picker=!0,e.attachEvent&&!e.addEventListener&&(b.bootstrapDatepicker("remove"),b.val(""),b.bootstrapDatepicker(tribe_ev.data.datepicker_opts)),b.bootstrapDatepicker("setDate",a),tribe_ev.state.updating_picker=!1,d&&debug.info('TEC Debug: tribe_ev.fn.update_picker sent "'+a+'" to the boostrapDatepicker')):b.length?(b.val(a),d&&debug.warn('TEC Debug: tribe_ev.fn.update_picker sent "'+
27
  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},no_bar:function(){return c("body").is(".tribe-bar-is-disabled")},pushstate:!(!e.history||!history.pushState),reset_on:function(){return c("body").is(".tribe-reset-on")},starting_delim:function(){return-1!=tribe_ev.state.cur_url.indexOf("?")?"&":"?"},webkit:"WebkitAppearance"in k.documentElement.style};tribe_ev.data={ajax_response:{},base_url:"",cur_url:tribe_ev.fn.url_path(k.URL),
28
  cur_date:tribe_ev.fn.current_date(),datepicker_formats:{main:"yyyy-mm-dd m/d/yyyy mm/dd/yyyy d/m/yyyy dd/mm/yyyy m-d-yyyy mm-dd-yyyy d-m-yyyy dd-mm-yyyy".split(" "),month:"yyyy-mm m/yyyy mm/yyyy m/yyyy mm/yyyy m-yyyy mm-yyyy m-yyyy mm-yyyy".split(" ")},datepicker_opts:{},initial_url:tribe_ev.fn.url_path(k.URL),mobile_break:768,params:tribe_ev.fn.get_params(),v_height:0,v_width:0};tribe_ev.events={};tribe_ev.state={ajax_running:!1,ajax_timer:0,ajax_trigger:"",category:"",date:"",datepicker_format:"0",
29
  do_string:!1,filters:!1,filter_cats:!1,initial_load:!0,mdate:"",paged:1,page_title:"",params:{},popping:!1,pushstate:!0,pushcount:0,recurrence:!1,updating_picker:!1,url_params:{},view:"",view_target:""}})(window,document,jQuery,tribe_debug);
30
+ (function(e,k,c,d,b,a,f,g,h){c(k).ready(function(){function l(){c(".tribe-events-list").length&&c(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month")}function m(){var a=k.URL,b="?";0<a.indexOf("?")&&(b="&");a=a+b+"ical=1&tribe_display="+f.view;c("a.tribe-events-ical").attr("href",a)}h&&debug.info("TEC Debug: Tribe Events JS init, Init Timer started from tribe-events.js.");a.update_viewport_variables();var q=c("body"),p=c("#tribe-events");c("#tribe-events-content");
31
+ var n=c("#tribe-events-header"),r;p.removeClass("tribe-no-js");f.category=a.get_category();d.base_url=a.get_base_url();f.page_title=k.title;var s=a.get_url_param("tribe_event_display");s?f.view=s:n.length&&n.tribe_has_attr("data-view")&&(f.view=n.data("view"));p.tribe_has_attr("data-datepicker_format")&&1===p.attr("data-datepicker_format").length&&(f.datepicker_format=p.attr("data-datepicker_format"));f.view&&h&&debug.time("Tribe JS Init Timer");p.length&&p.tribe_has_attr("data-mobilebreak")&&(d.mobile_break=
32
  parseInt(p.attr("data-mobilebreak")));p.length&&0<d.mobile_break&&q.addClass("tribe-is-responsive");c(".tribe-events-calendar-widget").not(":eq(0)").hide();a.tooltips();a.mobile_class();l();c(".tribe-events-list .tribe-events-notices").length&&c("#tribe-events-header .tribe-events-sub-nav").empty();c(".tribe-events-list").length&&c(".tribe-events-list-separator-month").prev(".vevent").addClass("tribe-event-end-month");c(b).on("tribe_ev_ajaxSuccess",function(){c(".tribe-events-active-spinner").remove();
33
+ l()});c(b).on("tribe_ev_ajaxSuccess",function(){m()});m();c(e).resize(function(){clearTimeout(r);r=setTimeout(a.execute_resize,200)});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: "'+g.live_ajax()),f.view&&debug.log('Tribe js detected the view to be: "'+f.view),debug.log('Supports pushstate: "'+g.pushstate),debug.groupEnd(),debug.info("TEC Debug: tribe-events.js successfully loaded"))})})(window,
34
  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.8
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.8.1
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: tribe-events-calendar
views/modules/map.php CHANGED
@@ -12,6 +12,6 @@
12
 
13
  defined( 'ABSPATH' ) or exit( '-1' );
14
 
15
- $style = apply_filters( 'tribe_events_embedded_map_style', "height: $height; width: $width; margin-bottom: 15px", $index );
16
  ?>
17
  <div id="tribe-events-gmap-<?php esc_attr_e( $index ) ?>" style="<?php esc_attr_e( $style ) ?>"></div><!-- #tribe-events-gmap-<?php esc_attr_e( $index ) ?> -->
12
 
13
  defined( 'ABSPATH' ) or exit( '-1' );
14
 
15
+ $style = apply_filters( 'tribe_events_embedded_map_style', "height: $height; width: $width", $index );
16
  ?>
17
  <div id="tribe-events-gmap-<?php esc_attr_e( $index ) ?>" style="<?php esc_attr_e( $style ) ?>"></div><!-- #tribe-events-gmap-<?php esc_attr_e( $index ) ?> -->