Version Description
- Incorporated the much-fabled CSV importer! Import CSV files directly into your The Events Calendar/Events Calendar PRO site (for an overview on how to use it, read this: http://m.tri.be/9t)
- Implemented code requesting that search engines do not index calendar pages that have no events to display
- Addressed a number of Twenty Thirteen theme compatibility fixes
- Improved how date and time are displayed on single event entries for single day events (thanks to Robin for the heads up!)
- Added a suggestion by the Organizer email field to obfuscate email addresses published on your site (thanks, Thea, for requesting this on our UserVoice page!)
- Improved compliance with PHP strict standards (thanks to Bryan in the forums for making this request!)
- Added more flexible formatting options for event schedule details
- Incorporated a fix to improve behaviors of the tribe_is_month() template tag (thanks jhned at the WordPress.org forums for this report!)
- Added a fix for when "show events in main blog loop" option disrupts certain static home pages (thanks to yorkshiretots for reporting this on the forum!)
- Added a fix for when the "show events in main blog loop" option disrupts the product listing on WooCommerce storefront for certain users (thanks to forge for the first report on this!)
- Fixed an issue with broken commenting that appeared on some templates (thanks to Tom for first reporting this at the PRO forums!)
- Added ability to create recurring events that happen every 5th occurence of a day in the month; e.g., every 5th Sunday (thanks to gregwiley for the original report!)
- Fixed an issue where future recurring events displayed as having passed when object caching is enabled (a big thanks to Ray for first bringing this up on the forums!)
- Fixed the calculation used for determining all events in a month, which was causing the last day of multi-day events to be incorrectly left off (thanks to paracleteweb for first reporting this at the WordPress.org forums!)
- Added code to make sure tribe_show_month() won't break any event views that come after it (thanks to our friend Big on the forums for the first report of this!)
- Incorporated a number of enhancements to ease compatibility with Easy Digital Downloads (thanks for all your help, Pippin!)
- Removed a PHP notice that arose when querying from events and other post types at the same time
- Fixed an issue where inaccurate draft counts were appearing on the backend events list (thanks to Neil on the forums for the first report!)
- Incorporated updated Icelandic translation by Baldvin Berndsen
Download this release
Release Info
Developer | jazbek |
Plugin | The Events Calendar |
Version | 3.2 |
Comparing to | |
See all releases |
Code changes from version 3.1 to 3.2
- admin-views/organizer-meta-box.php +3 -2
- admin-views/tribe-options-general.php +1 -1
- lang/tribe-events-calendar-is_IS.mo +0 -0
- lang/tribe-events-calendar-is_IS.po +24 -24
- lang/tribe-events-calendar.pot +590 -324
- lib/io/csv/admin-views/columns.php +78 -0
- lib/io/csv/admin-views/footer.php +5 -0
- lib/io/csv/admin-views/header.php +12 -0
- lib/io/csv/admin-views/import.php +71 -0
- lib/io/csv/admin-views/in-progress.php +26 -0
- lib/io/csv/admin-views/result.php +32 -0
- lib/io/csv/classes/TribeEventsImporter_AdminPage.php +229 -0
- lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php +89 -0
- lib/io/csv/classes/TribeEventsImporter_FileImporter.php +183 -0
- lib/io/csv/classes/TribeEventsImporter_FileImporter_Events.php +165 -0
- lib/io/csv/classes/TribeEventsImporter_FileImporter_Organizers.php +46 -0
- lib/io/csv/classes/TribeEventsImporter_FileImporter_Venues.php +54 -0
- lib/io/csv/classes/TribeEventsImporter_FileReader.php +54 -0
- lib/io/csv/classes/TribeEventsImporter_FileUploader.php +63 -0
- lib/io/csv/classes/TribeEventsImporter_Plugin.php +30 -0
- lib/io/csv/ecp-events-importer.php +24 -0
- lib/template-classes/month.php +31 -14
- lib/template-classes/month.php.orig +0 -417
- lib/template-classes/single-event.php +3 -2
- lib/the-events-calendar.class.php +56 -35
- lib/tickets/tribe-tickets.php +3 -2
- lib/tribe-admin-events-list.class.php +30 -14
- lib/tribe-date-utils.class.php +31 -1
- lib/tribe-event-api.class.php +3 -3
- lib/tribe-event-exception.class.php +2 -2
- lib/tribe-event-query.class.php +83 -78
- lib/tribe-event-query.class.php.orig +0 -840
- lib/tribe-field.class.php +2 -2
- lib/tribe-settings-tab.class.php +2 -2
- lib/tribe-settings.class.php +16 -16
- lib/tribe-template-factory.class.php +45 -41
- lib/tribe-templates.class.php +183 -163
- lib/widget-list.class.php +2 -2
- public/advanced-functions/meta.php +60 -23
- public/template-tags/date.php +5 -3
- public/template-tags/general.php +61 -20
- public/template-tags/loop.php +9 -6
- public/template-tags/month.php +34 -8
- readme.txt +57 -23
- resources/events-admin.css +10 -1
- resources/events-admin.js +30 -0
- resources/events-admin.min.css +1 -1
- resources/events-admin.min.js +14 -14
- resources/tribe-events-ajax-calendar.js +7 -0
- resources/tribe-events-ajax-calendar.min.js +8 -8
- resources/tribe-events-ajax-list.js +3 -0
- resources/tribe-events-ajax-list.min.js +8 -8
- resources/tribe-events-bar.js +3 -2
- resources/tribe-events-bar.min.js +2 -2
- resources/tribe-events-full.css +32 -4
- resources/tribe-events-full.min.css +1 -1
- resources/tribe-events-skeleton.css +15 -3
- resources/tribe-events-skeleton.min.css +1 -1
- resources/tribe-events-theme.css +9 -4
- resources/tribe-events-theme.min.css +1 -1
- the-events-calendar.php +1 -1
- views/default-template.php +2 -2
admin-views/organizer-meta-box.php
CHANGED
@@ -24,8 +24,9 @@ if ( !defined('ABSPATH') ) { die('-1'); }
|
|
24 |
<td><input tabindex="<?php tribe_events_tab_index(); ?>" type='text' id='OrganizerWebsite' name='organizer[Website]' size='25' value='<?php echo isset($_OrganizerWebsite) ? esc_attr($_OrganizerWebsite) : ""; ?>' /></td>
|
25 |
</tr>
|
26 |
<tr class="organizer">
|
27 |
-
<td><?php _e('Email:','tribe-events-calendar');
|
28 |
-
<
|
|
|
29 |
</tr>
|
30 |
|
31 |
<script type="text/javascript">
|
24 |
<td><input tabindex="<?php tribe_events_tab_index(); ?>" type='text' id='OrganizerWebsite' name='organizer[Website]' size='25' value='<?php echo isset($_OrganizerWebsite) ? esc_attr($_OrganizerWebsite) : ""; ?>' /></td>
|
25 |
</tr>
|
26 |
<tr class="organizer">
|
27 |
+
<td><?php _e('Email:','tribe-events-calendar'); ?>
|
28 |
+
<small><?php _e('You may want to consider <a href="http://wordpress.org/plugins/tags/obfuscate">obfuscating</a> any e-mail address published on your site to best avoid it getting harvested by spammers.', 'tribe-events-calendar'); ?></small></td>
|
29 |
+
<td class="organizer-email"><input tabindex="<?php tribe_events_tab_index(); ?>" type='text' id='OrganizerEmail' name='organizer[Email]' size='25' value='<?php echo isset($_OrganizerEmail) ? esc_attr($_OrganizerEmail) : ""; ?>' /></td>
|
30 |
</tr>
|
31 |
|
32 |
<script type="text/javascript">
|
admin-views/tribe-options-general.php
CHANGED
@@ -135,7 +135,7 @@ $generalTab = array(
|
|
135 |
),
|
136 |
'multiDayCutoffHelper' => array(
|
137 |
'type' => 'html',
|
138 |
-
'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( __(
|
139 |
'conditional' => ( '' != get_option( 'permalink_structure' ) ),
|
140 |
),
|
141 |
'defaultCurrencySymbol' => array(
|
135 |
),
|
136 |
'multiDayCutoffHelper' => array(
|
137 |
'type' => 'html',
|
138 |
+
'html' => '<p class="tribe-field-indent tribe-field-description description">' . sprintf( __( "Have an event that runs past midnight? Select a time after that event's end to avoid showing the event on the next day's calendar.", 'tribe-events-calendar' ) ) . '</p>',
|
139 |
'conditional' => ( '' != get_option( 'permalink_structure' ) ),
|
140 |
),
|
141 |
'defaultCurrencySymbol' => array(
|
lang/tribe-events-calendar-is_IS.mo
CHANGED
Binary file
|
lang/tribe-events-calendar-is_IS.po
CHANGED
@@ -6,7 +6,7 @@ msgstr ""
|
|
6 |
"Project-Id-Version: The Events Calendar\n"
|
7 |
"Report-Msgid-Bugs-To: \n"
|
8 |
"POT-Creation-Date: 2013-07-02 11:26-0800\n"
|
9 |
-
"PO-Revision-Date: 2013-
|
10 |
"Last-Translator: Modern Tribe, Inc. <pro@tri.be>\n"
|
11 |
"Language-Team: Modern Tribe, Inc. <pro@tri.be>\n"
|
12 |
"Language: en_US\n"
|
@@ -36,7 +36,7 @@ msgstr "Síðast uppfært"
|
|
36 |
|
37 |
#: ../admin-views/event-sidebar-options.php:11
|
38 |
msgid "Hide From Event Listings"
|
39 |
-
msgstr "Ekki
|
40 |
|
41 |
#: ../admin-views/event-sidebar-options.php:12
|
42 |
msgid "Sticky in Calendar View"
|
@@ -90,7 +90,7 @@ msgstr "Upplýsingar um staðsetningu viðburðar"
|
|
90 |
|
91 |
#: ../admin-views/events-meta-box.php:93
|
92 |
msgid "Event Organizer Details"
|
93 |
-
msgstr "Upplýsingar um
|
94 |
|
95 |
#: ../admin-views/events-meta-box.php:101
|
96 |
msgid "Event Website"
|
@@ -175,7 +175,7 @@ msgstr ""
|
|
175 |
msgid ""
|
176 |
"Would you like to delete only this instance of the event, or all future "
|
177 |
"events in this series?"
|
178 |
-
msgstr "Viltu eyða þessum hluta viðburðarseríu
|
179 |
|
180 |
#: ../admin-views/recurrence-dialog.php:23
|
181 |
msgid "All other future events in the series will not be deleted."
|
@@ -294,7 +294,7 @@ msgid ""
|
|
294 |
"If you are familiar with HTML, you can add additional code before the event "
|
295 |
"template. Some themes may require this to help with styling or layout."
|
296 |
msgstr ""
|
297 |
-
"Ef þú
|
298 |
"sniðmáti. Þetta gæti þurft við sum þemu til að hjálpa til við útlit."
|
299 |
|
300 |
#: ../admin-views/tribe-options-display.php:115
|
@@ -306,7 +306,7 @@ msgid ""
|
|
306 |
"If you are familiar with HTML, you can add additional code after the event "
|
307 |
"template. Some themes may require this to help with styling or layout."
|
308 |
msgstr ""
|
309 |
-
"Ef þú
|
310 |
"sniðmáti. Þetta gæti þurft við sum þemu til að hjálpa til við útlit."
|
311 |
|
312 |
#: ../admin-views/tribe-options-general.php:14
|
@@ -331,7 +331,7 @@ msgid ""
|
|
331 |
"meta, community events, ticket sales and more?"
|
332 |
msgstr ""
|
333 |
"Ertu að leyta að viðbótar virkni svo sem endurteknum viðburðum, sérsniðnu "
|
334 |
-
"meta, samfélagslegum viðburðum,
|
335 |
|
336 |
#: ../admin-views/tribe-options-general.php:28
|
337 |
msgid "Check out the available add-ons"
|
@@ -439,7 +439,7 @@ msgstr "Núverandi viðburðar URL er: %s"
|
|
439 |
#: ../admin-views/tribe-options-general.php:111
|
440 |
#: ../public/template-tags/options.php:43
|
441 |
msgid "Here is the iCal feed URL for your events:"
|
442 |
-
msgstr "Hérna er iCal URL fyrir
|
443 |
|
444 |
#: ../admin-views/tribe-options-general.php:116
|
445 |
msgid "Single event URL slug"
|
@@ -451,7 +451,7 @@ msgid ""
|
|
451 |
"The above should ideally be plural, and this singular.<br />Your single "
|
452 |
"event URL is: %s"
|
453 |
msgstr ""
|
454 |
-
"Ofangreint þarf helst að vera fleirtala
|
455 |
"event URL is: %s"
|
456 |
|
457 |
#: ../admin-views/tribe-options-general.php:128
|
@@ -476,7 +476,7 @@ msgid ""
|
|
476 |
"future events, and changes made will not apply retroactively."
|
477 |
msgstr ""
|
478 |
"Stilling á sjálfgefnu gjaldmiðils merki fyrir kostnað viðburðar. Takið "
|
479 |
-
"eftir, þetta hefur aðeins áhrif á komandi viðburði
|
480 |
"eru verða ekki afturvirkar."
|
481 |
|
482 |
#: ../admin-views/tribe-options-general.php:149
|
@@ -490,7 +490,7 @@ msgstr "Virkja Google Maps"
|
|
490 |
#: ../admin-views/tribe-options-general.php:154
|
491 |
msgid "Check to enable maps for events and venues."
|
492 |
msgstr ""
|
493 |
-
"Haka við til að heimila virkni
|
494 |
|
495 |
#: ../admin-views/tribe-options-general.php:161
|
496 |
msgid "Google Maps default zoom level"
|
@@ -536,9 +536,9 @@ msgid ""
|
|
536 |
"\" tab in the debug output."
|
537 |
msgstr ""
|
538 |
"Virkja þennan valkost til að skrá leiðréttar upplýsingar. Þetta skráist "
|
539 |
-
"sjálfkrafa á PHP serverinn sem error log. Ef þú vilt
|
540 |
-
"
|
541 |
-
"
|
542 |
|
543 |
#: ../admin-views/tribe-options-general.php:185
|
544 |
msgid "Debug Bar Plugin"
|
@@ -555,7 +555,7 @@ msgstr "Vinsamlega uppfærið!"
|
|
555 |
|
556 |
#: ../admin-views/tribe-options-help.php:19
|
557 |
msgid "You are up to date!"
|
558 |
-
msgstr "Premium Add-
|
559 |
|
560 |
#: ../admin-views/tribe-options-help.php:42
|
561 |
msgid "The Events Calendar PRO"
|
@@ -842,7 +842,7 @@ msgid ""
|
|
842 |
"This is where all of the global network settings for Modern Tribe's The "
|
843 |
"Events Calendar can be modified."
|
844 |
msgstr ""
|
845 |
-
"Hérna eru mögulegt að breyta öllum net
|
846 |
"Events Calendar"
|
847 |
|
848 |
#: ../admin-views/tribe-options-network.php:26
|
@@ -909,7 +909,7 @@ msgstr "Samantekt viðburðar"
|
|
909 |
|
910 |
#: ../admin-views/tickets/attendees.php:22
|
911 |
msgid "Event Details"
|
912 |
-
msgstr "
|
913 |
|
914 |
#: ../admin-views/tickets/attendees.php:24
|
915 |
msgid "Start Date / Time:"
|
@@ -1072,7 +1072,7 @@ msgstr "liðinn"
|
|
1072 |
|
1073 |
#: ../lib/the-events-calendar.class.php:495
|
1074 |
msgid "venue"
|
1075 |
-
msgstr "
|
1076 |
|
1077 |
#: ../lib/the-events-calendar.class.php:509
|
1078 |
#, php-format
|
@@ -1095,7 +1095,7 @@ msgid ""
|
|
1095 |
"dependencies on The Events Calendar and will not function properly unless "
|
1096 |
"paired with the right version. %sWant to pair an older version%s?"
|
1097 |
msgstr ""
|
1098 |
-
"Meðfylgjandi plugins eru
|
1099 |
"tengingu við The Events Calendar og munu ekki virka sem skyldi án þessa að "
|
1100 |
"vera rétt. %sViltu para við eldri útgáfu%s?"
|
1101 |
|
@@ -1192,7 +1192,7 @@ msgstr "Engin lýsing hefur verið sett fyrir þennan viðburð."
|
|
1192 |
|
1193 |
#: ../lib/the-events-calendar.class.php:1303
|
1194 |
msgid "category"
|
1195 |
-
msgstr "
|
1196 |
|
1197 |
#: ../lib/the-events-calendar.class.php:1313
|
1198 |
msgid "tag"
|
@@ -1358,7 +1358,7 @@ msgstr "Bæta við nýjum viðburðar flokk"
|
|
1358 |
|
1359 |
#: ../lib/the-events-calendar.class.php:1388
|
1360 |
msgid "New Event Category Name"
|
1361 |
-
msgstr "Nafn á nýjum
|
1362 |
|
1363 |
#: ../lib/the-events-calendar.class.php:1404
|
1364 |
#, php-format
|
@@ -1587,7 +1587,7 @@ msgstr "Nafnlaus skipuleggjandi"
|
|
1587 |
|
1588 |
#: ../lib/the-events-calendar.class.php:3467
|
1589 |
msgid "Event Options"
|
1590 |
-
msgstr "
|
1591 |
|
1592 |
#: ../lib/the-events-calendar.class.php:3469
|
1593 |
msgid "Venue Information"
|
@@ -1618,7 +1618,7 @@ msgid ""
|
|
1618 |
"Looking for additional functionality including recurring events, ticket "
|
1619 |
"sales, publicly submitted events, new views and more?"
|
1620 |
msgstr ""
|
1621 |
-
"Ertu að leyta að viðbótar virkni svo sem endurteknum
|
1622 |
"innsendum viðburðum, ofl?"
|
1623 |
|
1624 |
#: ../lib/the-events-calendar.class.php:3775
|
@@ -3299,7 +3299,7 @@ msgstr "Miðinn hefur vistast."
|
|
3299 |
|
3300 |
#: ../lib/tickets/tribe-tickets.php:369
|
3301 |
msgid "Your ticket has been deleted."
|
3302 |
-
msgstr "
|
3303 |
|
3304 |
#: ../public/advanced-functions/meta.php:35
|
3305 |
msgid "Start:"
|
6 |
"Project-Id-Version: The Events Calendar\n"
|
7 |
"Report-Msgid-Bugs-To: \n"
|
8 |
"POT-Creation-Date: 2013-07-02 11:26-0800\n"
|
9 |
+
"PO-Revision-Date: 2013-10-02 20:26-0000\n"
|
10 |
"Last-Translator: Modern Tribe, Inc. <pro@tri.be>\n"
|
11 |
"Language-Team: Modern Tribe, Inc. <pro@tri.be>\n"
|
12 |
"Language: en_US\n"
|
36 |
|
37 |
#: ../admin-views/event-sidebar-options.php:11
|
38 |
msgid "Hide From Event Listings"
|
39 |
+
msgstr "Ekki sýna í viðburðar lista"
|
40 |
|
41 |
#: ../admin-views/event-sidebar-options.php:12
|
42 |
msgid "Sticky in Calendar View"
|
90 |
|
91 |
#: ../admin-views/events-meta-box.php:93
|
92 |
msgid "Event Organizer Details"
|
93 |
+
msgstr "Upplýsingar um skipuleggjandi viðburðar"
|
94 |
|
95 |
#: ../admin-views/events-meta-box.php:101
|
96 |
msgid "Event Website"
|
175 |
msgid ""
|
176 |
"Would you like to delete only this instance of the event, or all future "
|
177 |
"events in this series?"
|
178 |
+
msgstr "Viltu eyða þessum hluta viðburðarseríu eða allri seríunni?"
|
179 |
|
180 |
#: ../admin-views/recurrence-dialog.php:23
|
181 |
msgid "All other future events in the series will not be deleted."
|
294 |
"If you are familiar with HTML, you can add additional code before the event "
|
295 |
"template. Some themes may require this to help with styling or layout."
|
296 |
msgstr ""
|
297 |
+
"Ef þú þekkir til HTML, þá getur þú bætt viðbótar forritun á undan viðburðar "
|
298 |
"sniðmáti. Þetta gæti þurft við sum þemu til að hjálpa til við útlit."
|
299 |
|
300 |
#: ../admin-views/tribe-options-display.php:115
|
306 |
"If you are familiar with HTML, you can add additional code after the event "
|
307 |
"template. Some themes may require this to help with styling or layout."
|
308 |
msgstr ""
|
309 |
+
"Ef þú þekkir til HTML, þá getur þú bætt viðbótar forritun á eftir viðburðar "
|
310 |
"sniðmáti. Þetta gæti þurft við sum þemu til að hjálpa til við útlit."
|
311 |
|
312 |
#: ../admin-views/tribe-options-general.php:14
|
331 |
"meta, community events, ticket sales and more?"
|
332 |
msgstr ""
|
333 |
"Ertu að leyta að viðbótar virkni svo sem endurteknum viðburðum, sérsniðnu "
|
334 |
+
"meta, samfélagslegum viðburðum, miðasölu ofl?"
|
335 |
|
336 |
#: ../admin-views/tribe-options-general.php:28
|
337 |
msgid "Check out the available add-ons"
|
439 |
#: ../admin-views/tribe-options-general.php:111
|
440 |
#: ../public/template-tags/options.php:43
|
441 |
msgid "Here is the iCal feed URL for your events:"
|
442 |
+
msgstr "Hérna er iCal URL fyrir viðburðinn:"
|
443 |
|
444 |
#: ../admin-views/tribe-options-general.php:116
|
445 |
msgid "Single event URL slug"
|
451 |
"The above should ideally be plural, and this singular.<br />Your single "
|
452 |
"event URL is: %s"
|
453 |
msgstr ""
|
454 |
+
"Ofangreint þarf helst að vera fleirtala og þetta eintala. <br />Your single "
|
455 |
"event URL is: %s"
|
456 |
|
457 |
#: ../admin-views/tribe-options-general.php:128
|
476 |
"future events, and changes made will not apply retroactively."
|
477 |
msgstr ""
|
478 |
"Stilling á sjálfgefnu gjaldmiðils merki fyrir kostnað viðburðar. Takið "
|
479 |
+
"eftir, þetta hefur aðeins áhrif á komandi viðburði og breytingar sem gerðar "
|
480 |
"eru verða ekki afturvirkar."
|
481 |
|
482 |
#: ../admin-views/tribe-options-general.php:149
|
490 |
#: ../admin-views/tribe-options-general.php:154
|
491 |
msgid "Check to enable maps for events and venues."
|
492 |
msgstr ""
|
493 |
+
"Haka við til að heimila virkni korta á viðburði og viðburðastaðsetningu."
|
494 |
|
495 |
#: ../admin-views/tribe-options-general.php:161
|
496 |
msgid "Google Maps default zoom level"
|
536 |
"\" tab in the debug output."
|
537 |
msgstr ""
|
538 |
"Virkja þennan valkost til að skrá leiðréttar upplýsingar. Þetta skráist "
|
539 |
+
"sjálfkrafa á PHP serverinn sem error log. Ef þú vilt sjá þessar upplýsingar "
|
540 |
+
"í vafra þá mælum við með að setja þetta inn %s and look for the \"Tribe\" "
|
541 |
+
"tab in the debug output."
|
542 |
|
543 |
#: ../admin-views/tribe-options-general.php:185
|
544 |
msgid "Debug Bar Plugin"
|
555 |
|
556 |
#: ../admin-views/tribe-options-help.php:19
|
557 |
msgid "You are up to date!"
|
558 |
+
msgstr "Premium Add-Ons Þú ert með nýjustu útgáfuna!"
|
559 |
|
560 |
#: ../admin-views/tribe-options-help.php:42
|
561 |
msgid "The Events Calendar PRO"
|
842 |
"This is where all of the global network settings for Modern Tribe's The "
|
843 |
"Events Calendar can be modified."
|
844 |
msgstr ""
|
845 |
+
"Hérna eru mögulegt að breyta öllum net stillingum fyrir Modern Tribe The "
|
846 |
"Events Calendar"
|
847 |
|
848 |
#: ../admin-views/tribe-options-network.php:26
|
909 |
|
910 |
#: ../admin-views/tickets/attendees.php:22
|
911 |
msgid "Event Details"
|
912 |
+
msgstr "Viðburðar upplýsingar"
|
913 |
|
914 |
#: ../admin-views/tickets/attendees.php:24
|
915 |
msgid "Start Date / Time:"
|
1072 |
|
1073 |
#: ../lib/the-events-calendar.class.php:495
|
1074 |
msgid "venue"
|
1075 |
+
msgstr "staðsetning"
|
1076 |
|
1077 |
#: ../lib/the-events-calendar.class.php:509
|
1078 |
#, php-format
|
1095 |
"dependencies on The Events Calendar and will not function properly unless "
|
1096 |
"paired with the right version. %sWant to pair an older version%s?"
|
1097 |
msgstr ""
|
1098 |
+
"Meðfylgjandi plugins eru útrunnin: <b>%s</b>. Allar viðbætur innihalda "
|
1099 |
"tengingu við The Events Calendar og munu ekki virka sem skyldi án þessa að "
|
1100 |
"vera rétt. %sViltu para við eldri útgáfu%s?"
|
1101 |
|
1192 |
|
1193 |
#: ../lib/the-events-calendar.class.php:1303
|
1194 |
msgid "category"
|
1195 |
+
msgstr "flokkur"
|
1196 |
|
1197 |
#: ../lib/the-events-calendar.class.php:1313
|
1198 |
msgid "tag"
|
1358 |
|
1359 |
#: ../lib/the-events-calendar.class.php:1388
|
1360 |
msgid "New Event Category Name"
|
1361 |
+
msgstr "Nafn á nýjum viðburðarflokk"
|
1362 |
|
1363 |
#: ../lib/the-events-calendar.class.php:1404
|
1364 |
#, php-format
|
1587 |
|
1588 |
#: ../lib/the-events-calendar.class.php:3467
|
1589 |
msgid "Event Options"
|
1590 |
+
msgstr "Valkostir viðburða"
|
1591 |
|
1592 |
#: ../lib/the-events-calendar.class.php:3469
|
1593 |
msgid "Venue Information"
|
1618 |
"Looking for additional functionality including recurring events, ticket "
|
1619 |
"sales, publicly submitted events, new views and more?"
|
1620 |
msgstr ""
|
1621 |
+
"Ertu að leyta að viðbótar virkni svo sem endurteknum viðburðum, miðasölu, "
|
1622 |
"innsendum viðburðum, ofl?"
|
1623 |
|
1624 |
#: ../lib/the-events-calendar.class.php:3775
|
3299 |
|
3300 |
#: ../lib/tickets/tribe-tickets.php:369
|
3301 |
msgid "Your ticket has been deleted."
|
3302 |
+
msgstr "Miða hefur verið eytt."
|
3303 |
|
3304 |
#: ../public/advanced-functions/meta.php:35
|
3305 |
msgid "Start:"
|
lang/tribe-events-calendar.pot
CHANGED
@@ -1,25 +1,17 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
"
|
7 |
-
"
|
8 |
-
"POT-Creation-Date: 2013-07-02 11:29-0800\n"
|
9 |
-
"PO-Revision-Date: 2013-07-02 11:29-0800\n"
|
10 |
-
"Last-Translator: Paul Hughes <paul@paulalexanderhughes.com>\n"
|
11 |
-
"Language-Team: Modern Tribe, Inc. <pro@tri.be>\n"
|
12 |
-
"Language: en_US\n"
|
13 |
"MIME-Version: 1.0\n"
|
14 |
"Content-Type: text/plain; charset=UTF-8\n"
|
15 |
"Content-Transfer-Encoding: 8bit\n"
|
16 |
-
"
|
|
|
|
|
17 |
"X-Poedit-SourceCharset: UTF-8\n"
|
18 |
-
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
19 |
-
"_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
|
20 |
-
"X-Poedit-Basepath: ./\n"
|
21 |
-
"X-Textdomain-Support: yes\n"
|
22 |
-
"X-Generator: Poedit 1.5.5\n"
|
23 |
"X-Poedit-SearchPath-0: ..\n"
|
24 |
|
25 |
#: ../admin-views/app-shop.php:4
|
@@ -98,6 +90,7 @@ msgid "URL:"
|
|
98 |
msgstr ""
|
99 |
|
100 |
#: ../admin-views/events-meta-box.php:115
|
|
|
101 |
msgid "Event Cost"
|
102 |
msgstr ""
|
103 |
|
@@ -106,7 +99,7 @@ msgid "Currency Symbol:"
|
|
106 |
msgstr ""
|
107 |
|
108 |
#: ../admin-views/events-meta-box.php:122
|
109 |
-
#: ../public/advanced-functions/meta.php:
|
110 |
msgid "Cost:"
|
111 |
msgstr ""
|
112 |
|
@@ -121,25 +114,32 @@ msgstr ""
|
|
121 |
#: ../admin-views/organizer-meta-box.php:19
|
122 |
#: ../admin-views/venue-meta-box.php:93
|
123 |
#: ../admin-views/tickets/attendees.php:39
|
124 |
-
#: ../public/advanced-functions/meta.php:
|
125 |
-
#: ../public/advanced-functions/meta.php:
|
126 |
msgid "Phone:"
|
127 |
msgstr ""
|
128 |
|
129 |
#: ../admin-views/organizer-meta-box.php:23
|
130 |
#: ../admin-views/venue-meta-box.php:97
|
131 |
#: ../admin-views/tickets/attendees.php:45
|
132 |
-
#: ../public/advanced-functions/meta.php:
|
133 |
-
#: ../public/advanced-functions/meta.php:
|
134 |
-
#: ../public/advanced-functions/meta.php:
|
135 |
msgid "Website:"
|
136 |
msgstr ""
|
137 |
|
138 |
#: ../admin-views/organizer-meta-box.php:27
|
139 |
-
#: ../public/advanced-functions/meta.php:
|
140 |
msgid "Email:"
|
141 |
msgstr ""
|
142 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
143 |
#: ../admin-views/recurrence-dialog.php:13
|
144 |
msgid ""
|
145 |
"Would you like to change only this instance of the event, or all future "
|
@@ -269,24 +269,32 @@ msgid "Check this to use the classic header."
|
|
269 |
msgstr ""
|
270 |
|
271 |
#: ../admin-views/tribe-options-display.php:105
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
msgid "Advanced Template Settings"
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: ../admin-views/tribe-options-display.php:
|
276 |
msgid "Add HTML before event content"
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: ../admin-views/tribe-options-display.php:
|
280 |
msgid ""
|
281 |
"If you are familiar with HTML, you can add additional code before the event "
|
282 |
"template. Some themes may require this to help with styling or layout."
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: ../admin-views/tribe-options-display.php:
|
286 |
msgid "Add HTML after event content"
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: ../admin-views/tribe-options-display.php:
|
290 |
msgid ""
|
291 |
"If you are familiar with HTML, you can add additional code after the event "
|
292 |
"template. Some themes may require this to help with styling or layout."
|
@@ -356,37 +364,44 @@ msgid "Number of events to show per page"
|
|
356 |
msgstr ""
|
357 |
|
358 |
#: ../admin-views/tribe-options-general.php:72
|
359 |
-
msgid "Use Javascript to control
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
msgstr ""
|
361 |
|
362 |
#: ../admin-views/tribe-options-general.php:73
|
363 |
-
msgid "
|
|
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: ../admin-views/tribe-options-general.php:
|
367 |
msgid "Show comments"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: ../admin-views/tribe-options-general.php:
|
371 |
msgid "Enable comments on event pages."
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: ../admin-views/tribe-options-general.php:
|
375 |
msgid "Include events in main blog loop"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: ../admin-views/tribe-options-general.php:
|
379 |
msgid ""
|
380 |
"Show events with the site's other posts. When this box is checked, events "
|
381 |
"will also continue to appear on the default events page."
|
382 |
msgstr ""
|
383 |
|
384 |
-
#: ../admin-views/tribe-options-general.php:
|
385 |
-
#: ../admin-views/tribe-options-general.php:
|
386 |
msgid "Events URL slug"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: ../admin-views/tribe-options-general.php:
|
390 |
#, php-format
|
391 |
msgid ""
|
392 |
"You cannot edit the slug for your events page as you do not have pretty "
|
@@ -395,97 +410,97 @@ msgid ""
|
|
395 |
"\">enable pretty permalinks</a>."
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: ../admin-views/tribe-options-general.php:
|
399 |
#: ../public/template-tags/options.php:20
|
400 |
msgid "The slug used for building the events URL."
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: ../admin-views/tribe-options-general.php:
|
404 |
#, php-format
|
405 |
msgid "Your current events URL is: %s"
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: ../admin-views/tribe-options-general.php:
|
409 |
#: ../public/template-tags/options.php:43
|
410 |
msgid "Here is the iCal feed URL for your events:"
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: ../admin-views/tribe-options-general.php:
|
414 |
msgid "Single event URL slug"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: ../admin-views/tribe-options-general.php:
|
418 |
#, php-format
|
419 |
msgid ""
|
420 |
"The above should ideally be plural, and this singular.<br />Your single "
|
421 |
"event URL is: %s"
|
422 |
msgstr ""
|
423 |
|
424 |
-
#: ../admin-views/tribe-options-general.php:
|
425 |
msgid "End of day cutoff"
|
426 |
msgstr ""
|
427 |
|
428 |
-
#: ../admin-views/tribe-options-general.php:
|
429 |
msgid ""
|
430 |
-
"Have
|
431 |
-
"avoid
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: ../admin-views/tribe-options-general.php:
|
435 |
msgid "Default currency symbol"
|
436 |
msgstr ""
|
437 |
|
438 |
-
#: ../admin-views/tribe-options-general.php:
|
439 |
msgid ""
|
440 |
"Set the default currency symbol for event costs. Note that this only impacts "
|
441 |
"future events, and changes made will not apply retroactively."
|
442 |
msgstr ""
|
443 |
|
444 |
-
#: ../admin-views/tribe-options-general.php:
|
445 |
msgid "Map Settings"
|
446 |
msgstr ""
|
447 |
|
448 |
-
#: ../admin-views/tribe-options-general.php:
|
449 |
msgid "Enable Google Maps"
|
450 |
msgstr ""
|
451 |
|
452 |
-
#: ../admin-views/tribe-options-general.php:
|
453 |
msgid "Check to enable maps for events and venues."
|
454 |
msgstr ""
|
455 |
|
456 |
-
#: ../admin-views/tribe-options-general.php:
|
457 |
msgid "Google Maps default zoom level"
|
458 |
msgstr ""
|
459 |
|
460 |
-
#: ../admin-views/tribe-options-general.php:
|
461 |
msgid "0 = zoomed out; 21 = zoomed in."
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: ../admin-views/tribe-options-general.php:
|
465 |
msgid "Miscellaneous Settings"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: ../admin-views/tribe-options-general.php:
|
469 |
msgid "Duplicate Venues & Organizers"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: ../admin-views/tribe-options-general.php:
|
473 |
#: ../lib/tribe-amalgamator.php:252
|
474 |
msgid "Merge Duplicates"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: ../admin-views/tribe-options-general.php:
|
478 |
msgid ""
|
479 |
"You might find duplicate venues and organizers when updating The Events "
|
480 |
"Calendar from a pre-3.0 version. Click this button to automatically merge "
|
481 |
"identical venues and organizers."
|
482 |
msgstr ""
|
483 |
|
484 |
-
#: ../admin-views/tribe-options-general.php:
|
485 |
msgid "Debug mode"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: ../admin-views/tribe-options-general.php:
|
489 |
#, php-format
|
490 |
msgid ""
|
491 |
"Enable this option to log debug information. By default this will log to "
|
@@ -494,15 +509,10 @@ msgid ""
|
|
494 |
"\" tab in the debug output."
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: ../admin-views/tribe-options-general.php:
|
498 |
msgid "Debug Bar Plugin"
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: ../admin-views/tribe-options-help.php:18
|
502 |
-
msgctxt "not available"
|
503 |
-
msgid "n/a"
|
504 |
-
msgstr ""
|
505 |
-
|
506 |
#: ../admin-views/tribe-options-help.php:19
|
507 |
msgid "You need to upgrade!"
|
508 |
msgstr ""
|
@@ -544,9 +554,9 @@ msgid "FAQ"
|
|
544 |
msgstr ""
|
545 |
|
546 |
#: ../admin-views/tribe-options-help.php:79
|
547 |
-
#: ../lib/the-events-calendar.class.php:
|
548 |
-
#: ../lib/the-events-calendar.class.php:
|
549 |
-
#: ../lib/the-events-calendar.class.php:
|
550 |
msgid "Help"
|
551 |
msgstr ""
|
552 |
|
@@ -725,60 +735,53 @@ msgstr ""
|
|
725 |
msgid "Not getting help?"
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: ../admin-views/tribe-options-help.php:
|
729 |
-
#: ../lib/the-events-calendar.class.php:
|
730 |
#: ../lib/tribe-settings.class.php:135
|
731 |
msgid "The Events Calendar"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: ../admin-views/tribe-options-help.php:
|
735 |
msgid "Latest Version:"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: ../admin-views/tribe-options-help.php:
|
739 |
msgid "Author:"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: ../admin-views/tribe-options-help.php:
|
743 |
msgid "Modern Tribe Inc"
|
744 |
msgstr ""
|
745 |
|
746 |
-
#: ../admin-views/tribe-options-help.php:
|
747 |
msgid "Requires:"
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: ../admin-views/tribe-options-help.php:
|
751 |
msgid "WordPress "
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: ../admin-views/tribe-options-help.php:
|
755 |
msgid "Wordpress.org Plugin Page"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: ../admin-views/tribe-options-help.php:
|
759 |
msgid "Average Rating"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: ../admin-views/tribe-options-help.php:
|
763 |
-
#, php-format
|
764 |
-
msgid "Based on %d rating"
|
765 |
-
msgid_plural "Based on %d ratings"
|
766 |
-
msgstr[0] ""
|
767 |
-
msgstr[1] ""
|
768 |
-
|
769 |
-
#: ../admin-views/tribe-options-help.php:186
|
770 |
msgid "Give us 5 stars!"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: ../admin-views/tribe-options-help.php:
|
774 |
msgid "Premium Add-Ons"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: ../admin-views/tribe-options-help.php:
|
778 |
msgid "(Coming Soon!)"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: ../admin-views/tribe-options-help.php:
|
782 |
msgid "News and Tutorials"
|
783 |
msgstr ""
|
784 |
|
@@ -801,7 +804,7 @@ msgid "Venue Name:"
|
|
801 |
msgstr ""
|
802 |
|
803 |
#: ../admin-views/venue-meta-box.php:27
|
804 |
-
#: ../public/advanced-functions/meta.php:
|
805 |
msgid "Address:"
|
806 |
msgstr ""
|
807 |
|
@@ -998,35 +1001,35 @@ msgid ""
|
|
998 |
"tickets will be available from now until the event ends."
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: ../lib/the-events-calendar.class.php:
|
1002 |
msgid "month"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: ../lib/the-events-calendar.class.php:
|
1006 |
msgid "upcoming"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: ../lib/the-events-calendar.class.php:
|
1010 |
msgid "past"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: ../lib/the-events-calendar.class.php:
|
1014 |
msgid "venue"
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: ../lib/the-events-calendar.class.php:
|
1018 |
#, php-format
|
1019 |
msgid "Initializing Tribe Events on %s"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: ../lib/the-events-calendar.class.php:
|
1023 |
#, php-format
|
1024 |
msgid ""
|
1025 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
1026 |
"Events Calendar add-ons. Please %supdate now.%s"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: ../lib/the-events-calendar.class.php:
|
1030 |
#, php-format
|
1031 |
msgid ""
|
1032 |
"The following plugins are out of date: <b>%s</b>. All add-ons contain "
|
@@ -1034,13 +1037,13 @@ msgid ""
|
|
1034 |
"paired with the right version. %sWant to pair an older version%s?"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: ../lib/the-events-calendar.class.php:
|
1038 |
-
#: ../lib/the-events-calendar.class.php:
|
1039 |
-
#: ../lib/the-events-calendar.class.php:
|
1040 |
msgid "Licenses"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: ../lib/the-events-calendar.class.php:
|
1044 |
#, php-format
|
1045 |
msgid ""
|
1046 |
"<p>The license key you received when completing your purchase from %s will "
|
@@ -1058,531 +1061,546 @@ msgid ""
|
|
1058 |
"and click \"Check Again\".</p>"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: ../lib/the-events-calendar.class.php:
|
1062 |
msgid "General"
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: ../lib/the-events-calendar.class.php:
|
1066 |
msgid "Display"
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: ../lib/the-events-calendar.class.php:
|
1070 |
#, php-format
|
1071 |
msgid ""
|
1072 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
1073 |
"your WordPress install."
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: ../lib/the-events-calendar.class.php:
|
1077 |
#, php-format
|
1078 |
msgid ""
|
1079 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
1080 |
"about moving you to a newer version of PHP."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: ../lib/the-events-calendar.class.php:
|
1084 |
-
#: ../public/template-tags/loop.php:
|
1085 |
msgid "Upcoming Events"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
-
#: ../lib/the-events-calendar.class.php:
|
1089 |
-
#: ../public/template-tags/loop.php:
|
1090 |
msgid "Past Events"
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#: ../lib/the-events-calendar.class.php:
|
1094 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
1095 |
#, php-format
|
1096 |
msgid "Events for %s"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: ../lib/the-events-calendar.class.php:
|
1100 |
msgid "Events this month"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: ../lib/the-events-calendar.class.php:
|
1104 |
#, php-format
|
1105 |
msgid "Events at %s"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: ../lib/the-events-calendar.class.php:
|
1109 |
msgid "No description has been entered for this event."
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: ../lib/the-events-calendar.class.php:
|
1113 |
msgid "category"
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#: ../lib/the-events-calendar.class.php:
|
1117 |
msgid "tag"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
-
#: ../lib/the-events-calendar.class.php:
|
1121 |
-
#: ../lib/the-events-calendar.class.php:
|
1122 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
1123 |
msgid "Events"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: ../lib/the-events-calendar.class.php:
|
1127 |
msgid "Event"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: ../lib/the-events-calendar.class.php:
|
1131 |
-
#: ../lib/the-events-calendar.class.php:
|
1132 |
-
#: ../lib/the-events-calendar.class.php:
|
1133 |
msgid "Add New"
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: ../lib/the-events-calendar.class.php:
|
1137 |
msgid "Add New Event"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: ../lib/the-events-calendar.class.php:
|
1141 |
msgid "Edit Event"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
-
#: ../lib/the-events-calendar.class.php:
|
1145 |
msgid "New Event"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
-
#: ../lib/the-events-calendar.class.php:
|
1149 |
msgid "View Event"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: ../lib/the-events-calendar.class.php:
|
1153 |
msgid "Search Events"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: ../lib/the-events-calendar.class.php:
|
1157 |
msgid "No events found"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: ../lib/the-events-calendar.class.php:
|
1161 |
msgid "No events found in Trash"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: ../lib/the-events-calendar.class.php:
|
1165 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
1166 |
msgid "Venues"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: ../lib/the-events-calendar.class.php:
|
1170 |
-
#: ../public/advanced-functions/meta.php:
|
1171 |
msgid "Venue"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
-
#: ../lib/the-events-calendar.class.php:
|
1175 |
msgid "Add New Venue"
|
1176 |
msgstr ""
|
1177 |
|
1178 |
-
#: ../lib/the-events-calendar.class.php:
|
1179 |
msgid "Edit Venue"
|
1180 |
msgstr ""
|
1181 |
|
1182 |
-
#: ../lib/the-events-calendar.class.php:
|
1183 |
msgid "New Venue"
|
1184 |
msgstr ""
|
1185 |
|
1186 |
-
#: ../lib/the-events-calendar.class.php:
|
1187 |
msgid "View Venue"
|
1188 |
msgstr ""
|
1189 |
|
1190 |
-
#: ../lib/the-events-calendar.class.php:
|
1191 |
msgid "Search Venues"
|
1192 |
msgstr ""
|
1193 |
|
1194 |
-
#: ../lib/the-events-calendar.class.php:
|
1195 |
msgid "No venue found"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
-
#: ../lib/the-events-calendar.class.php:
|
1199 |
msgid "No venues found in Trash"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: ../lib/the-events-calendar.class.php:
|
1203 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
1204 |
msgid "Organizers"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
-
#: ../lib/the-events-calendar.class.php:
|
1208 |
-
#: ../public/advanced-functions/meta.php:
|
1209 |
msgid "Organizer"
|
1210 |
msgstr ""
|
1211 |
|
1212 |
-
#: ../lib/the-events-calendar.class.php:
|
1213 |
msgid "Add New Organizer"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#: ../lib/the-events-calendar.class.php:
|
1217 |
msgid "Edit Organizer"
|
1218 |
msgstr ""
|
1219 |
|
1220 |
-
#: ../lib/the-events-calendar.class.php:
|
1221 |
msgid "New Organizer"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: ../lib/the-events-calendar.class.php:
|
1225 |
msgid "View Organizer"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: ../lib/the-events-calendar.class.php:
|
1229 |
msgid "Search Organizers"
|
1230 |
msgstr ""
|
1231 |
|
1232 |
-
#: ../lib/the-events-calendar.class.php:
|
1233 |
msgid "No organizer found"
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#: ../lib/the-events-calendar.class.php:
|
1237 |
msgid "No organizers found in Trash"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: ../lib/the-events-calendar.class.php:
|
1241 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1242 |
msgid "Event Categories"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: ../lib/the-events-calendar.class.php:
|
1246 |
-
#: ../
|
1247 |
msgid "Event Category"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: ../lib/the-events-calendar.class.php:
|
1251 |
msgid "Search Event Categories"
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: ../lib/the-events-calendar.class.php:
|
1255 |
msgid "All Event Categories"
|
1256 |
msgstr ""
|
1257 |
|
1258 |
-
#: ../lib/the-events-calendar.class.php:
|
1259 |
msgid "Parent Event Category"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: ../lib/the-events-calendar.class.php:
|
1263 |
msgid "Parent Event Category:"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: ../lib/the-events-calendar.class.php:
|
1267 |
msgid "Edit Event Category"
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: ../lib/the-events-calendar.class.php:
|
1271 |
msgid "Update Event Category"
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: ../lib/the-events-calendar.class.php:
|
1275 |
msgid "Add New Event Category"
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: ../lib/the-events-calendar.class.php:
|
1279 |
msgid "New Event Category Name"
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: ../lib/the-events-calendar.class.php:
|
1283 |
#, php-format
|
1284 |
msgid "Event updated. <a href=\"%s\">View event</a>"
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: ../lib/the-events-calendar.class.php:
|
1288 |
-
#: ../lib/the-events-calendar.class.php:
|
1289 |
-
#: ../lib/the-events-calendar.class.php:
|
1290 |
msgid "Custom field updated."
|
1291 |
msgstr ""
|
1292 |
|
1293 |
-
#: ../lib/the-events-calendar.class.php:
|
1294 |
-
#: ../lib/the-events-calendar.class.php:
|
1295 |
-
#: ../lib/the-events-calendar.class.php:
|
1296 |
msgid "Custom field deleted."
|
1297 |
msgstr ""
|
1298 |
|
1299 |
-
#: ../lib/the-events-calendar.class.php:
|
1300 |
msgid "Event updated."
|
1301 |
msgstr ""
|
1302 |
|
1303 |
-
#: ../lib/the-events-calendar.class.php:
|
1304 |
#, php-format
|
1305 |
msgid "Event restored to revision from %s"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: ../lib/the-events-calendar.class.php:
|
1309 |
#, php-format
|
1310 |
msgid "Event published. <a href=\"%s\">View event</a>"
|
1311 |
msgstr ""
|
1312 |
|
1313 |
-
#: ../lib/the-events-calendar.class.php:
|
1314 |
msgid "Event saved."
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: ../lib/the-events-calendar.class.php:
|
1318 |
#, php-format
|
1319 |
msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: ../lib/the-events-calendar.class.php:
|
1323 |
#, php-format
|
1324 |
msgid ""
|
1325 |
"Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
|
1326 |
"\">Preview event</a>"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: ../lib/the-events-calendar.class.php:
|
1330 |
-
#: ../lib/the-events-calendar.class.php:
|
1331 |
-
#: ../lib/the-events-calendar.class.php:
|
1332 |
msgid "M j, Y @ G:i"
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: ../lib/the-events-calendar.class.php:
|
1336 |
#, php-format
|
1337 |
msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#: ../lib/the-events-calendar.class.php:
|
1341 |
#, php-format
|
1342 |
msgid "Venue updated. <a href=\"%s\">View venue</a>"
|
1343 |
msgstr ""
|
1344 |
|
1345 |
-
#: ../lib/the-events-calendar.class.php:
|
1346 |
msgid "Venue updated."
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: ../lib/the-events-calendar.class.php:
|
1350 |
#, php-format
|
1351 |
msgid "Venue restored to revision from %s"
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: ../lib/the-events-calendar.class.php:
|
1355 |
#, php-format
|
1356 |
msgid "Venue published. <a href=\"%s\">View venue</a>"
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: ../lib/the-events-calendar.class.php:
|
1360 |
msgid "Venue saved."
|
1361 |
msgstr ""
|
1362 |
|
1363 |
-
#: ../lib/the-events-calendar.class.php:
|
1364 |
#, php-format
|
1365 |
msgid "Venue submitted. <a target=\"_blank\" href=\"%s\">Preview venue</a>"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
-
#: ../lib/the-events-calendar.class.php:
|
1369 |
#, php-format
|
1370 |
msgid ""
|
1371 |
"Venue scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
|
1372 |
"\">Preview venue</a>"
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: ../lib/the-events-calendar.class.php:
|
1376 |
#, php-format
|
1377 |
msgid "Venue draft updated. <a target=\"_blank\" href=\"%s\">Preview venue</a>"
|
1378 |
msgstr ""
|
1379 |
|
1380 |
-
#: ../lib/the-events-calendar.class.php:
|
1381 |
#, php-format
|
1382 |
msgid "Organizer updated. <a href=\"%s\">View organizer</a>"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
-
#: ../lib/the-events-calendar.class.php:
|
1386 |
msgid "Organizer updated."
|
1387 |
msgstr ""
|
1388 |
|
1389 |
-
#: ../lib/the-events-calendar.class.php:
|
1390 |
#, php-format
|
1391 |
msgid "Organizer restored to revision from %s"
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: ../lib/the-events-calendar.class.php:
|
1395 |
#, php-format
|
1396 |
msgid "Organizer published. <a href=\"%s\">View organizer</a>"
|
1397 |
msgstr ""
|
1398 |
|
1399 |
-
#: ../lib/the-events-calendar.class.php:
|
1400 |
msgid "Organizer saved."
|
1401 |
msgstr ""
|
1402 |
|
1403 |
-
#: ../lib/the-events-calendar.class.php:
|
1404 |
#, php-format
|
1405 |
msgid ""
|
1406 |
"Organizer submitted. <a target=\"_blank\" href=\"%s\">Preview organizer</a>"
|
1407 |
msgstr ""
|
1408 |
|
1409 |
-
#: ../lib/the-events-calendar.class.php:
|
1410 |
#, php-format
|
1411 |
msgid ""
|
1412 |
"Organizer scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
|
1413 |
"\"%2$s\">Preview organizer</a>"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
-
#: ../lib/the-events-calendar.class.php:
|
1417 |
#, php-format
|
1418 |
msgid ""
|
1419 |
"Organizer draft updated. <a target=\"_blank\" href=\"%s\">Preview organizer</"
|
1420 |
"a>"
|
1421 |
msgstr ""
|
1422 |
|
1423 |
-
#: ../lib/the-events-calendar.class.php:
|
1424 |
msgid "Use Saved Venue:"
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#: ../lib/the-events-calendar.class.php:
|
1428 |
msgid "Use Saved Organizer:"
|
1429 |
msgstr ""
|
1430 |
|
1431 |
-
#: ../lib/the-events-calendar.class.php:
|
1432 |
msgid "Use New Venue"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
-
#: ../lib/the-events-calendar.class.php:
|
1436 |
msgid "My Venues"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: ../lib/the-events-calendar.class.php:
|
1440 |
msgid "Available Venues"
|
1441 |
msgstr ""
|
1442 |
|
1443 |
-
#: ../lib/the-events-calendar.class.php:
|
1444 |
msgid "No saved venue exists."
|
1445 |
msgstr ""
|
1446 |
|
1447 |
-
#: ../lib/the-events-calendar.class.php:
|
1448 |
msgid "Use New Organizer"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#: ../lib/the-events-calendar.class.php:
|
1452 |
msgid "My Organizers"
|
1453 |
msgstr ""
|
1454 |
|
1455 |
-
#: ../lib/the-events-calendar.class.php:
|
1456 |
msgid "Available Organizers"
|
1457 |
msgstr ""
|
1458 |
|
1459 |
-
#: ../lib/the-events-calendar.class.php:
|
1460 |
msgid "No saved organizer exists."
|
1461 |
msgstr ""
|
1462 |
|
1463 |
-
#: ../lib/the-events-calendar.class.php:
|
1464 |
msgid "Next"
|
1465 |
msgstr ""
|
1466 |
|
1467 |
-
#: ../lib/the-events-calendar.class.php:
|
1468 |
msgid "Prev"
|
1469 |
msgstr ""
|
1470 |
|
1471 |
-
#: ../lib/the-events-calendar.class.php:
|
1472 |
msgid "Today"
|
1473 |
msgstr ""
|
1474 |
|
1475 |
-
#: ../lib/the-events-calendar.class.php:
|
1476 |
msgid "Done"
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: ../lib/the-events-calendar.class.php:
|
1480 |
msgid "Network"
|
1481 |
msgstr ""
|
1482 |
|
1483 |
-
#: ../lib/the-events-calendar.class.php:
|
1484 |
msgid "Unnamed Venue"
|
1485 |
msgstr ""
|
1486 |
|
1487 |
-
#: ../lib/the-events-calendar.class.php:
|
1488 |
msgid "Unnamed Organizer"
|
1489 |
msgstr ""
|
1490 |
|
1491 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
|
|
|
|
|
|
|
|
1492 |
msgid "Event Options"
|
1493 |
msgstr ""
|
1494 |
|
1495 |
-
#: ../lib/the-events-calendar.class.php:
|
1496 |
msgid "Venue Information"
|
1497 |
msgstr ""
|
1498 |
|
1499 |
-
#: ../lib/the-events-calendar.class.php:
|
1500 |
msgid "Organizer Information"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
-
#: ../lib/the-events-calendar.class.php:
|
1504 |
msgid "Support"
|
1505 |
msgstr ""
|
1506 |
|
1507 |
-
#: ../lib/the-events-calendar.class.php:
|
1508 |
msgid "View All Add-Ons"
|
1509 |
msgstr ""
|
1510 |
|
1511 |
-
#: ../lib/the-events-calendar.class.php:
|
1512 |
msgid "News from Modern Tribe"
|
1513 |
msgstr ""
|
1514 |
|
1515 |
-
#: ../lib/the-events-calendar.class.php:
|
1516 |
msgid "Additional Functionality"
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#: ../lib/the-events-calendar.class.php:
|
1520 |
msgid ""
|
1521 |
"Looking for additional functionality including recurring events, ticket "
|
1522 |
"sales, publicly submitted events, new views and more?"
|
1523 |
msgstr ""
|
1524 |
|
1525 |
-
#: ../lib/the-events-calendar.class.php:
|
1526 |
#, php-format
|
1527 |
msgid "Check out the <a href=\"%s\">available add-ons</a>."
|
1528 |
msgstr ""
|
1529 |
|
1530 |
-
#: ../lib/the-events-calendar.class.php:
|
1531 |
-
#: ../lib/the-events-calendar.class.php:
|
1532 |
msgid "View Calendar"
|
1533 |
msgstr ""
|
1534 |
|
1535 |
-
#: ../lib/the-events-calendar.class.php:
|
1536 |
msgid "Add Event"
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#: ../lib/the-events-calendar.class.php:
|
1540 |
msgid "Edit Events"
|
1541 |
msgstr ""
|
1542 |
|
1543 |
-
#: ../lib/the-events-calendar.class.php:
|
1544 |
-
#: ../lib/the-events-calendar.class.php:
|
1545 |
#: ../lib/tribe-settings.class.php:164
|
1546 |
msgid "Settings"
|
1547 |
msgstr ""
|
1548 |
|
1549 |
-
#: ../lib/the-events-calendar.class.php:
|
1550 |
#, php-format
|
1551 |
msgid ""
|
1552 |
"Welcome to The Events Calendar! Your events calendar can be found at %s. To "
|
1553 |
"change the events slug, visit %sEvents -> Settings%s."
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: ../lib/the-events-calendar.class.php:
|
1557 |
msgid "Calendar"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
-
#: ../lib/the-events-calendar.class.php:
|
1561 |
msgid "List"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: ../lib/the-events-calendar.class.php:
|
1565 |
msgid "Month"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: ../lib/the-events-calendar.class.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1569 |
msgid "Date"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
-
#: ../lib/the-events-calendar.class.php:
|
1573 |
msgid "Events In"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: ../lib/the-events-calendar.class.php:
|
1577 |
msgid "Events From"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
-
#: ../lib/the-events-calendar.class.php:
|
1581 |
#: ../views/list/nav.php:28 ../views/list/nav.php:31
|
1582 |
msgid "« Previous Events"
|
1583 |
msgstr ""
|
1584 |
|
1585 |
-
#: ../lib/the-events-calendar.class.php:
|
1586 |
#: ../views/list/nav.php:43 ../views/list/nav.php:49
|
1587 |
msgid "Next Events »"
|
1588 |
msgstr ""
|
@@ -1592,34 +1610,34 @@ msgstr ""
|
|
1592 |
msgid "View “%s”"
|
1593 |
msgstr ""
|
1594 |
|
1595 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1596 |
msgid "Start Date"
|
1597 |
msgstr ""
|
1598 |
|
1599 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1600 |
msgid "End Date"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1604 |
msgid "Recurring?"
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1608 |
#: ../lib/tickets/tribe-tickets-pro.php:229
|
1609 |
msgid "Yes"
|
1610 |
msgstr ""
|
1611 |
|
1612 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1613 |
msgid "No"
|
1614 |
msgstr ""
|
1615 |
|
1616 |
-
#: ../lib/tribe-admin-events-list.class.php:
|
1617 |
#, php-format
|
1618 |
msgid "All %s"
|
1619 |
msgstr ""
|
1620 |
|
1621 |
#: ../lib/tribe-app-shop.class.php:62 ../lib/tribe-app-shop.class.php:63
|
1622 |
-
#: ../lib/tribe-app-shop.class.php:
|
1623 |
msgid "Event Add-Ons"
|
1624 |
msgstr ""
|
1625 |
|
@@ -1627,7 +1645,7 @@ msgstr ""
|
|
1627 |
msgid "Tribe"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#: ../lib/tribe-event-api.class.php:
|
1631 |
#: ../public/template-tags/venue.php:240
|
1632 |
msgid "United States"
|
1633 |
msgstr ""
|
@@ -1637,19 +1655,19 @@ msgstr ""
|
|
1637 |
msgid "Error"
|
1638 |
msgstr ""
|
1639 |
|
1640 |
-
#: ../lib/tribe-field.class.php:
|
1641 |
msgid "Invalid field type specified"
|
1642 |
msgstr ""
|
1643 |
|
1644 |
-
#: ../lib/tribe-field.class.php:
|
1645 |
msgid "No radio options specified"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
-
#: ../lib/tribe-field.class.php:
|
1649 |
msgid "No checkbox options specified"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
#: ../lib/tribe-field.class.php:
|
1653 |
msgid "No select options specified"
|
1654 |
msgstr ""
|
1655 |
|
@@ -1698,52 +1716,53 @@ msgstr ""
|
|
1698 |
msgid "None of your settings were saved. Please try again."
|
1699 |
msgstr ""
|
1700 |
|
1701 |
-
#: ../lib/tribe-settings.class.php:485
|
1702 |
-
msgid ""
|
1703 |
-
"The above setting was not saved. Other settings were successfully saved."
|
1704 |
-
msgid_plural ""
|
1705 |
-
"The above settings were not saved. Other settings were successfully saved."
|
1706 |
-
msgstr[0] ""
|
1707 |
-
msgstr[1] ""
|
1708 |
-
|
1709 |
#: ../lib/tribe-settings.class.php:509
|
1710 |
msgid "Settings saved."
|
1711 |
msgstr ""
|
1712 |
|
1713 |
-
#: ../lib/tribe-template-factory.class.php:
|
1714 |
#, php-format
|
1715 |
-
msgid "There
|
1716 |
msgstr ""
|
1717 |
|
1718 |
-
#: ../lib/tribe-template-factory.class.php:
|
1719 |
#, php-format
|
1720 |
-
msgid ""
|
1721 |
-
"listed under %s. Check out past events for this category or view the full "
|
1722 |
-
"calendar."
|
1723 |
msgstr ""
|
1724 |
|
1725 |
-
#: ../lib/tribe-template-factory.class.php:
|
1726 |
#, php-format
|
1727 |
msgid ""
|
1728 |
-
"listed under %s. Check out upcoming events for this
|
1729 |
-
"full calendar."
|
1730 |
msgstr ""
|
1731 |
|
1732 |
-
#: ../lib/tribe-template-factory.class.php:
|
1733 |
#, php-format
|
1734 |
-
msgid "
|
|
|
|
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: ../lib/tribe-template-factory.class.php:
|
1738 |
-
msgid "No
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: ../lib/tribe-template-factory.class.php:
|
1742 |
-
|
|
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: ../lib/tribe-
|
1746 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1747 |
msgstr ""
|
1748 |
|
1749 |
#: ../lib/tribe-the-events-calendar-import.class.php:64
|
@@ -1799,11 +1818,6 @@ msgstr ""
|
|
1799 |
msgid "Non-existant field validation function passed"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
-
#: ../lib/tribe-validate.class.php:110
|
1803 |
-
msgctxt "non-existant function name passed for field validation"
|
1804 |
-
msgid "with function name:"
|
1805 |
-
msgstr ""
|
1806 |
-
|
1807 |
#: ../lib/tribe-validate.class.php:135 ../lib/tribe-validate.class.php:153
|
1808 |
#, php-format
|
1809 |
msgid "%s must contain numbers and letters only"
|
@@ -3059,22 +3073,282 @@ msgstr ""
|
|
3059 |
msgid "Events List"
|
3060 |
msgstr ""
|
3061 |
|
3062 |
-
#: ../lib/widget-list.class.php:
|
3063 |
msgid "View All Events"
|
3064 |
msgstr ""
|
3065 |
|
3066 |
-
#: ../lib/widget-list.class.php:
|
3067 |
msgid "There are no upcoming events at this time."
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#: ../lib/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3071 |
#, php-format
|
3072 |
msgid ""
|
3073 |
"There were no results found for <strong>\"%s\"</strong> this month. Try "
|
3074 |
"searching next month."
|
3075 |
msgstr ""
|
3076 |
|
3077 |
-
#: ../lib/template-classes/single-event.php:
|
3078 |
msgid "This event has passed."
|
3079 |
msgstr ""
|
3080 |
|
@@ -3109,29 +3383,29 @@ msgid "Security Code"
|
|
3109 |
msgstr ""
|
3110 |
|
3111 |
#: ../lib/tickets/tribe-tickets-attendees.php:74
|
3112 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3113 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3114 |
msgid "Check in"
|
3115 |
msgstr ""
|
3116 |
|
3117 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3118 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3119 |
msgid "Undo Check in"
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3123 |
msgid "Print"
|
3124 |
msgstr ""
|
3125 |
|
3126 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3127 |
msgid "Email"
|
3128 |
msgstr ""
|
3129 |
|
3130 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3131 |
msgid "Export"
|
3132 |
msgstr ""
|
3133 |
|
3134 |
-
#: ../lib/tickets/tribe-tickets-attendees.php:
|
3135 |
msgid "Filter by ticket #, order # or security code"
|
3136 |
msgstr ""
|
3137 |
|
@@ -3175,47 +3449,53 @@ msgstr ""
|
|
3175 |
msgid "Attendee List for: %s"
|
3176 |
msgstr ""
|
3177 |
|
3178 |
-
#: ../lib/tickets/tribe-tickets.php:
|
3179 |
msgid "Your ticket has been saved."
|
3180 |
msgstr ""
|
3181 |
|
3182 |
-
#: ../lib/tickets/tribe-tickets.php:
|
3183 |
msgid "Your ticket has been deleted."
|
3184 |
msgstr ""
|
3185 |
|
3186 |
-
#: ../public/advanced-functions/meta.php:
|
3187 |
msgid "Start:"
|
3188 |
msgstr ""
|
3189 |
|
3190 |
-
#: ../public/advanced-functions/meta.php:
|
3191 |
msgid "End:"
|
3192 |
msgstr ""
|
3193 |
|
3194 |
-
#: ../public/advanced-functions/meta.php:
|
|
|
3195 |
msgid "Date:"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
-
#: ../public/advanced-functions/meta.php:
|
|
|
|
|
|
|
|
|
|
|
3199 |
msgid "Click to view a Google Map"
|
3200 |
msgstr ""
|
3201 |
|
3202 |
-
#: ../public/advanced-functions/meta.php:
|
3203 |
msgid "+ Google Map"
|
3204 |
msgstr ""
|
3205 |
|
3206 |
-
#: ../public/advanced-functions/meta.php:
|
3207 |
msgid "Details"
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#: ../public/advanced-functions/meta.php:
|
3211 |
msgid "Event Tags:"
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#: ../public/advanced-functions/meta.php:
|
3215 |
msgid "Origin:"
|
3216 |
msgstr ""
|
3217 |
|
3218 |
-
#: ../public/advanced-functions/meta.php:
|
3219 |
msgid "Event:"
|
3220 |
msgstr ""
|
3221 |
|
@@ -3223,45 +3503,31 @@ msgstr ""
|
|
3223 |
msgid "Category"
|
3224 |
msgstr ""
|
3225 |
|
3226 |
-
#: ../public/template-tags/general.php:
|
3227 |
msgid "Tags:"
|
3228 |
msgstr ""
|
3229 |
|
3230 |
-
#: ../public/template-tags/general.php:
|
3231 |
msgid "Loading Events"
|
3232 |
msgstr ""
|
3233 |
|
3234 |
-
#: ../public/template-tags/general.php:
|
3235 |
msgid "Free"
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: ../public/template-tags/general.php:
|
3239 |
msgid "Recurring Event"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#: ../public/template-tags/general.php:
|
3243 |
msgid "(See all)"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#: ../public/template-tags/general.php:
|
3247 |
#, php-format
|
3248 |
msgid "Calendar powered by %sThe Events Calendar%s"
|
3249 |
msgstr ""
|
3250 |
|
3251 |
-
#: ../public/template-tags/loop.php:150
|
3252 |
-
#, php-format
|
3253 |
-
msgid "Events for %1$s"
|
3254 |
-
msgstr ""
|
3255 |
-
|
3256 |
-
#: ../public/template-tags/loop.php:158
|
3257 |
-
#, php-format
|
3258 |
-
msgid "Events for %1$s through %2$s"
|
3259 |
-
msgstr ""
|
3260 |
-
|
3261 |
-
#: ../public/template-tags/loop.php:171
|
3262 |
-
msgid "Events for "
|
3263 |
-
msgstr ""
|
3264 |
-
|
3265 |
#: ../public/template-tags/options.php:20
|
3266 |
#, php-format
|
3267 |
msgid "Your current Events URL is %s"
|
@@ -3290,7 +3556,7 @@ msgstr ""
|
|
3290 |
msgid "Find out more"
|
3291 |
msgstr ""
|
3292 |
|
3293 |
-
#: ../views/modules/bar.php:31 ../views/modules/bar.php:
|
3294 |
msgid "Find Events"
|
3295 |
msgstr ""
|
3296 |
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: The Events Calendar 3.2\n"
|
4 |
+
"POT-Creation-Date: 2013-11-03 21:49-0500\n"
|
5 |
+
"PO-Revision-Date: 2013-11-03 22:11-0500\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: Modern Tribe, Inc. <support@tri.be>\n"
|
|
|
|
|
|
|
|
|
|
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"X-Generator: Poedit 1.5.7\n"
|
12 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
13 |
+
"X-Poedit-Basepath: .\n"
|
14 |
"X-Poedit-SourceCharset: UTF-8\n"
|
|
|
|
|
|
|
|
|
|
|
15 |
"X-Poedit-SearchPath-0: ..\n"
|
16 |
|
17 |
#: ../admin-views/app-shop.php:4
|
90 |
msgstr ""
|
91 |
|
92 |
#: ../admin-views/events-meta-box.php:115
|
93 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:61
|
94 |
msgid "Event Cost"
|
95 |
msgstr ""
|
96 |
|
99 |
msgstr ""
|
100 |
|
101 |
#: ../admin-views/events-meta-box.php:122
|
102 |
+
#: ../public/advanced-functions/meta.php:307
|
103 |
msgid "Cost:"
|
104 |
msgstr ""
|
105 |
|
114 |
#: ../admin-views/organizer-meta-box.php:19
|
115 |
#: ../admin-views/venue-meta-box.php:93
|
116 |
#: ../admin-views/tickets/attendees.php:39
|
117 |
+
#: ../public/advanced-functions/meta.php:395
|
118 |
+
#: ../public/advanced-functions/meta.php:457
|
119 |
msgid "Phone:"
|
120 |
msgstr ""
|
121 |
|
122 |
#: ../admin-views/organizer-meta-box.php:23
|
123 |
#: ../admin-views/venue-meta-box.php:97
|
124 |
#: ../admin-views/tickets/attendees.php:45
|
125 |
+
#: ../public/advanced-functions/meta.php:346
|
126 |
+
#: ../public/advanced-functions/meta.php:421
|
127 |
+
#: ../public/advanced-functions/meta.php:483
|
128 |
msgid "Website:"
|
129 |
msgstr ""
|
130 |
|
131 |
#: ../admin-views/organizer-meta-box.php:27
|
132 |
+
#: ../public/advanced-functions/meta.php:470
|
133 |
msgid "Email:"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: ../admin-views/organizer-meta-box.php:28
|
137 |
+
msgid ""
|
138 |
+
"You may want to consider <a href=\"http://wordpress.org/plugins/tags/"
|
139 |
+
"obfuscate\">obfuscating</a> any e-mail address published on your site to "
|
140 |
+
"best avoid it getting harvested by spammers."
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
#: ../admin-views/recurrence-dialog.php:13
|
144 |
msgid ""
|
145 |
"Would you like to change only this instance of the event, or all future "
|
269 |
msgstr ""
|
270 |
|
271 |
#: ../admin-views/tribe-options-display.php:105
|
272 |
+
msgid "Month view events per day"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: ../admin-views/tribe-options-display.php:106
|
276 |
+
msgid "Allow more than the default 3 events per day in month view."
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: ../admin-views/tribe-options-display.php:113
|
280 |
msgid "Advanced Template Settings"
|
281 |
msgstr ""
|
282 |
|
283 |
+
#: ../admin-views/tribe-options-display.php:117
|
284 |
msgid "Add HTML before event content"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: ../admin-views/tribe-options-display.php:118
|
288 |
msgid ""
|
289 |
"If you are familiar with HTML, you can add additional code before the event "
|
290 |
"template. Some themes may require this to help with styling or layout."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: ../admin-views/tribe-options-display.php:123
|
294 |
msgid "Add HTML after event content"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: ../admin-views/tribe-options-display.php:124
|
298 |
msgid ""
|
299 |
"If you are familiar with HTML, you can add additional code after the event "
|
300 |
"template. Some themes may require this to help with styling or layout."
|
364 |
msgstr ""
|
365 |
|
366 |
#: ../admin-views/tribe-options-general.php:72
|
367 |
+
msgid "Use Javascript to control date filtering"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
#: ../admin-views/tribe-options-general.php:73
|
371 |
+
msgid ""
|
372 |
+
"This option is disabled when \"Disable the Event Search Bar\" is checked on "
|
373 |
+
"the Display settings tab."
|
374 |
msgstr ""
|
375 |
|
376 |
#: ../admin-views/tribe-options-general.php:73
|
377 |
+
msgid ""
|
378 |
+
"Enable live ajax for datepicker on front end (User submit not required)."
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: ../admin-views/tribe-options-general.php:81
|
382 |
msgid "Show comments"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: ../admin-views/tribe-options-general.php:82
|
386 |
msgid "Enable comments on event pages."
|
387 |
msgstr ""
|
388 |
|
389 |
+
#: ../admin-views/tribe-options-general.php:88
|
390 |
msgid "Include events in main blog loop"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: ../admin-views/tribe-options-general.php:89
|
394 |
msgid ""
|
395 |
"Show events with the site's other posts. When this box is checked, events "
|
396 |
"will also continue to appear on the default events page."
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: ../admin-views/tribe-options-general.php:95
|
400 |
+
#: ../admin-views/tribe-options-general.php:101
|
401 |
msgid "Events URL slug"
|
402 |
msgstr ""
|
403 |
|
404 |
+
#: ../admin-views/tribe-options-general.php:96
|
405 |
#, php-format
|
406 |
msgid ""
|
407 |
"You cannot edit the slug for your events page as you do not have pretty "
|
410 |
"\">enable pretty permalinks</a>."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: ../admin-views/tribe-options-general.php:108
|
414 |
#: ../public/template-tags/options.php:20
|
415 |
msgid "The slug used for building the events URL."
|
416 |
msgstr ""
|
417 |
|
418 |
+
#: ../admin-views/tribe-options-general.php:108
|
419 |
#, php-format
|
420 |
msgid "Your current events URL is: %s"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: ../admin-views/tribe-options-general.php:113
|
424 |
#: ../public/template-tags/options.php:43
|
425 |
msgid "Here is the iCal feed URL for your events:"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: ../admin-views/tribe-options-general.php:118
|
429 |
msgid "Single event URL slug"
|
430 |
msgstr ""
|
431 |
|
432 |
+
#: ../admin-views/tribe-options-general.php:125
|
433 |
#, php-format
|
434 |
msgid ""
|
435 |
"The above should ideally be plural, and this singular.<br />Your single "
|
436 |
"event URL is: %s"
|
437 |
msgstr ""
|
438 |
|
439 |
+
#: ../admin-views/tribe-options-general.php:130
|
440 |
msgid "End of day cutoff"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: ../admin-views/tribe-options-general.php:138
|
444 |
msgid ""
|
445 |
+
"Have an event that runs past midnight? Select a time after that event's end "
|
446 |
+
"to avoid showing the event on the next day's calendar."
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: ../admin-views/tribe-options-general.php:143
|
450 |
msgid "Default currency symbol"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: ../admin-views/tribe-options-general.php:144
|
454 |
msgid ""
|
455 |
"Set the default currency symbol for event costs. Note that this only impacts "
|
456 |
"future events, and changes made will not apply retroactively."
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: ../admin-views/tribe-options-general.php:151
|
460 |
msgid "Map Settings"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: ../admin-views/tribe-options-general.php:155
|
464 |
msgid "Enable Google Maps"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: ../admin-views/tribe-options-general.php:156
|
468 |
msgid "Check to enable maps for events and venues."
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: ../admin-views/tribe-options-general.php:163
|
472 |
msgid "Google Maps default zoom level"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: ../admin-views/tribe-options-general.php:164
|
476 |
msgid "0 = zoomed out; 21 = zoomed in."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: ../admin-views/tribe-options-general.php:172
|
480 |
msgid "Miscellaneous Settings"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: ../admin-views/tribe-options-general.php:176
|
484 |
msgid "Duplicate Venues & Organizers"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: ../admin-views/tribe-options-general.php:176
|
488 |
#: ../lib/tribe-amalgamator.php:252
|
489 |
msgid "Merge Duplicates"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: ../admin-views/tribe-options-general.php:176
|
493 |
msgid ""
|
494 |
"You might find duplicate venues and organizers when updating The Events "
|
495 |
"Calendar from a pre-3.0 version. Click this button to automatically merge "
|
496 |
"identical venues and organizers."
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: ../admin-views/tribe-options-general.php:181
|
500 |
msgid "Debug mode"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: ../admin-views/tribe-options-general.php:187
|
504 |
#, php-format
|
505 |
msgid ""
|
506 |
"Enable this option to log debug information. By default this will log to "
|
509 |
"\" tab in the debug output."
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: ../admin-views/tribe-options-general.php:187
|
513 |
msgid "Debug Bar Plugin"
|
514 |
msgstr ""
|
515 |
|
|
|
|
|
|
|
|
|
|
|
516 |
#: ../admin-views/tribe-options-help.php:19
|
517 |
msgid "You need to upgrade!"
|
518 |
msgstr ""
|
554 |
msgstr ""
|
555 |
|
556 |
#: ../admin-views/tribe-options-help.php:79
|
557 |
+
#: ../lib/the-events-calendar.class.php:765
|
558 |
+
#: ../lib/the-events-calendar.class.php:3929
|
559 |
+
#: ../lib/the-events-calendar.class.php:4022
|
560 |
msgid "Help"
|
561 |
msgstr ""
|
562 |
|
735 |
msgid "Not getting help?"
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: ../admin-views/tribe-options-help.php:171
|
739 |
+
#: ../lib/the-events-calendar.class.php:508
|
740 |
#: ../lib/tribe-settings.class.php:135
|
741 |
msgid "The Events Calendar"
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: ../admin-views/tribe-options-help.php:175
|
745 |
msgid "Latest Version:"
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: ../admin-views/tribe-options-help.php:176
|
749 |
msgid "Author:"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: ../admin-views/tribe-options-help.php:176
|
753 |
msgid "Modern Tribe Inc"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: ../admin-views/tribe-options-help.php:177
|
757 |
msgid "Requires:"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: ../admin-views/tribe-options-help.php:177
|
761 |
msgid "WordPress "
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: ../admin-views/tribe-options-help.php:178
|
765 |
msgid "Wordpress.org Plugin Page"
|
766 |
msgstr ""
|
767 |
|
768 |
+
#: ../admin-views/tribe-options-help.php:183
|
769 |
msgid "Average Rating"
|
770 |
msgstr ""
|
771 |
|
772 |
+
#: ../admin-views/tribe-options-help.php:188
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
msgid "Give us 5 stars!"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: ../admin-views/tribe-options-help.php:191
|
777 |
msgid "Premium Add-Ons"
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: ../admin-views/tribe-options-help.php:197
|
781 |
msgid "(Coming Soon!)"
|
782 |
msgstr ""
|
783 |
|
784 |
+
#: ../admin-views/tribe-options-help.php:204
|
785 |
msgid "News and Tutorials"
|
786 |
msgstr ""
|
787 |
|
804 |
msgstr ""
|
805 |
|
806 |
#: ../admin-views/venue-meta-box.php:27
|
807 |
+
#: ../public/advanced-functions/meta.php:409
|
808 |
msgid "Address:"
|
809 |
msgstr ""
|
810 |
|
1001 |
"tickets will be available from now until the event ends."
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: ../lib/the-events-calendar.class.php:513
|
1005 |
msgid "month"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: ../lib/the-events-calendar.class.php:514
|
1009 |
msgid "upcoming"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
+
#: ../lib/the-events-calendar.class.php:515
|
1013 |
msgid "past"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: ../lib/the-events-calendar.class.php:517
|
1017 |
msgid "venue"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: ../lib/the-events-calendar.class.php:531
|
1021 |
#, php-format
|
1022 |
msgid "Initializing Tribe Events on %s"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: ../lib/the-events-calendar.class.php:644
|
1026 |
#, php-format
|
1027 |
msgid ""
|
1028 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
1029 |
"Events Calendar add-ons. Please %supdate now.%s"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
+
#: ../lib/the-events-calendar.class.php:661
|
1033 |
#, php-format
|
1034 |
msgid ""
|
1035 |
"The following plugins are out of date: <b>%s</b>. All add-ons contain "
|
1037 |
"paired with the right version. %sWant to pair an older version%s?"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: ../lib/the-events-calendar.class.php:725
|
1041 |
+
#: ../lib/the-events-calendar.class.php:760
|
1042 |
+
#: ../lib/the-events-calendar.class.php:762
|
1043 |
msgid "Licenses"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: ../lib/the-events-calendar.class.php:729
|
1047 |
#, php-format
|
1048 |
msgid ""
|
1049 |
"<p>The license key you received when completing your purchase from %s will "
|
1061 |
"and click \"Check Again\".</p>"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: ../lib/the-events-calendar.class.php:752
|
1065 |
msgid "General"
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: ../lib/the-events-calendar.class.php:753
|
1069 |
msgid "Display"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: ../lib/the-events-calendar.class.php:804
|
1073 |
#, php-format
|
1074 |
msgid ""
|
1075 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
1076 |
"your WordPress install."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: ../lib/the-events-calendar.class.php:807
|
1080 |
#, php-format
|
1081 |
msgid ""
|
1082 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
1083 |
"about moving you to a newer version of PHP."
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: ../lib/the-events-calendar.class.php:1022 ../lib/widget-list.class.php:169
|
1087 |
+
#: ../public/template-tags/loop.php:138
|
1088 |
msgid "Upcoming Events"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: ../lib/the-events-calendar.class.php:1025
|
1092 |
+
#: ../public/template-tags/loop.php:168
|
1093 |
msgid "Past Events"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: ../lib/the-events-calendar.class.php:1030
|
1097 |
+
#: ../lib/the-events-calendar.class.php:1037
|
1098 |
+
#: ../public/template-tags/loop.php:173
|
1099 |
#, php-format
|
1100 |
msgid "Events for %s"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
+
#: ../lib/the-events-calendar.class.php:1032
|
1104 |
msgid "Events this month"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: ../lib/the-events-calendar.class.php:1044
|
1108 |
#, php-format
|
1109 |
msgid "Events at %s"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
+
#: ../lib/the-events-calendar.class.php:1063
|
1113 |
msgid "No description has been entered for this event."
|
1114 |
msgstr ""
|
1115 |
|
1116 |
+
#: ../lib/the-events-calendar.class.php:1325
|
1117 |
msgid "category"
|
1118 |
msgstr ""
|
1119 |
|
1120 |
+
#: ../lib/the-events-calendar.class.php:1335
|
1121 |
msgid "tag"
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: ../lib/the-events-calendar.class.php:1362
|
1125 |
+
#: ../lib/the-events-calendar.class.php:3859
|
1126 |
+
#: ../lib/the-events-calendar.class.php:3920
|
1127 |
+
#: ../lib/io/csv/admin-views/import.php:31
|
1128 |
msgid "Events"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: ../lib/the-events-calendar.class.php:1363
|
1132 |
msgid "Event"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
+
#: ../lib/the-events-calendar.class.php:1364
|
1136 |
+
#: ../lib/the-events-calendar.class.php:1377
|
1137 |
+
#: ../lib/the-events-calendar.class.php:1390
|
1138 |
msgid "Add New"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: ../lib/the-events-calendar.class.php:1365
|
1142 |
msgid "Add New Event"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: ../lib/the-events-calendar.class.php:1366
|
1146 |
msgid "Edit Event"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: ../lib/the-events-calendar.class.php:1367
|
1150 |
msgid "New Event"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: ../lib/the-events-calendar.class.php:1368
|
1154 |
msgid "View Event"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: ../lib/the-events-calendar.class.php:1369
|
1158 |
msgid "Search Events"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: ../lib/the-events-calendar.class.php:1370
|
1162 |
msgid "No events found"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: ../lib/the-events-calendar.class.php:1371
|
1166 |
msgid "No events found in Trash"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
+
#: ../lib/the-events-calendar.class.php:1375
|
1170 |
+
#: ../lib/the-events-calendar.class.php:1487
|
1171 |
+
#: ../lib/io/csv/admin-views/import.php:29
|
1172 |
msgid "Venues"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: ../lib/the-events-calendar.class.php:1376
|
1176 |
+
#: ../public/advanced-functions/meta.php:369 ../views/tickets/email.php:343
|
1177 |
msgid "Venue"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
+
#: ../lib/the-events-calendar.class.php:1378
|
1181 |
msgid "Add New Venue"
|
1182 |
msgstr ""
|
1183 |
|
1184 |
+
#: ../lib/the-events-calendar.class.php:1379
|
1185 |
msgid "Edit Venue"
|
1186 |
msgstr ""
|
1187 |
|
1188 |
+
#: ../lib/the-events-calendar.class.php:1380
|
1189 |
msgid "New Venue"
|
1190 |
msgstr ""
|
1191 |
|
1192 |
+
#: ../lib/the-events-calendar.class.php:1381
|
1193 |
msgid "View Venue"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: ../lib/the-events-calendar.class.php:1382
|
1197 |
msgid "Search Venues"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: ../lib/the-events-calendar.class.php:1383
|
1201 |
msgid "No venue found"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: ../lib/the-events-calendar.class.php:1384
|
1205 |
msgid "No venues found in Trash"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: ../lib/the-events-calendar.class.php:1388
|
1209 |
+
#: ../lib/the-events-calendar.class.php:1488
|
1210 |
+
#: ../lib/io/csv/admin-views/import.php:30
|
1211 |
msgid "Organizers"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
+
#: ../lib/the-events-calendar.class.php:1389
|
1215 |
+
#: ../public/advanced-functions/meta.php:431 ../views/tickets/email.php:362
|
1216 |
msgid "Organizer"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: ../lib/the-events-calendar.class.php:1391
|
1220 |
msgid "Add New Organizer"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
+
#: ../lib/the-events-calendar.class.php:1392
|
1224 |
msgid "Edit Organizer"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: ../lib/the-events-calendar.class.php:1393
|
1228 |
msgid "New Organizer"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: ../lib/the-events-calendar.class.php:1394
|
1232 |
msgid "View Organizer"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: ../lib/the-events-calendar.class.php:1395
|
1236 |
msgid "Search Organizers"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: ../lib/the-events-calendar.class.php:1396
|
1240 |
msgid "No organizer found"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: ../lib/the-events-calendar.class.php:1397
|
1244 |
msgid "No organizers found in Trash"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: ../lib/the-events-calendar.class.php:1401
|
1248 |
+
#: ../lib/tribe-admin-events-list.class.php:226
|
1249 |
msgid "Event Categories"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: ../lib/the-events-calendar.class.php:1402
|
1253 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:63
|
1254 |
msgid "Event Category"
|
1255 |
msgstr ""
|
1256 |
|
1257 |
+
#: ../lib/the-events-calendar.class.php:1403
|
1258 |
msgid "Search Event Categories"
|
1259 |
msgstr ""
|
1260 |
|
1261 |
+
#: ../lib/the-events-calendar.class.php:1404
|
1262 |
msgid "All Event Categories"
|
1263 |
msgstr ""
|
1264 |
|
1265 |
+
#: ../lib/the-events-calendar.class.php:1405
|
1266 |
msgid "Parent Event Category"
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: ../lib/the-events-calendar.class.php:1406
|
1270 |
msgid "Parent Event Category:"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
+
#: ../lib/the-events-calendar.class.php:1407
|
1274 |
msgid "Edit Event Category"
|
1275 |
msgstr ""
|
1276 |
|
1277 |
+
#: ../lib/the-events-calendar.class.php:1408
|
1278 |
msgid "Update Event Category"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#: ../lib/the-events-calendar.class.php:1409
|
1282 |
msgid "Add New Event Category"
|
1283 |
msgstr ""
|
1284 |
|
1285 |
+
#: ../lib/the-events-calendar.class.php:1410
|
1286 |
msgid "New Event Category Name"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
+
#: ../lib/the-events-calendar.class.php:1426
|
1290 |
#, php-format
|
1291 |
msgid "Event updated. <a href=\"%s\">View event</a>"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
+
#: ../lib/the-events-calendar.class.php:1427
|
1295 |
+
#: ../lib/the-events-calendar.class.php:1444
|
1296 |
+
#: ../lib/the-events-calendar.class.php:1461
|
1297 |
msgid "Custom field updated."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: ../lib/the-events-calendar.class.php:1428
|
1301 |
+
#: ../lib/the-events-calendar.class.php:1445
|
1302 |
+
#: ../lib/the-events-calendar.class.php:1462
|
1303 |
msgid "Custom field deleted."
|
1304 |
msgstr ""
|
1305 |
|
1306 |
+
#: ../lib/the-events-calendar.class.php:1429
|
1307 |
msgid "Event updated."
|
1308 |
msgstr ""
|
1309 |
|
1310 |
+
#: ../lib/the-events-calendar.class.php:1431
|
1311 |
#, php-format
|
1312 |
msgid "Event restored to revision from %s"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: ../lib/the-events-calendar.class.php:1432
|
1316 |
#, php-format
|
1317 |
msgid "Event published. <a href=\"%s\">View event</a>"
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: ../lib/the-events-calendar.class.php:1433
|
1321 |
msgid "Event saved."
|
1322 |
msgstr ""
|
1323 |
|
1324 |
+
#: ../lib/the-events-calendar.class.php:1434
|
1325 |
#, php-format
|
1326 |
msgid "Event submitted. <a target=\"_blank\" href=\"%s\">Preview event</a>"
|
1327 |
msgstr ""
|
1328 |
|
1329 |
+
#: ../lib/the-events-calendar.class.php:1435
|
1330 |
#, php-format
|
1331 |
msgid ""
|
1332 |
"Event scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
|
1333 |
"\">Preview event</a>"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: ../lib/the-events-calendar.class.php:1437
|
1337 |
+
#: ../lib/the-events-calendar.class.php:1454
|
1338 |
+
#: ../lib/the-events-calendar.class.php:1471
|
1339 |
msgid "M j, Y @ G:i"
|
1340 |
msgstr ""
|
1341 |
|
1342 |
+
#: ../lib/the-events-calendar.class.php:1438
|
1343 |
#, php-format
|
1344 |
msgid "Event draft updated. <a target=\"_blank\" href=\"%s\">Preview event</a>"
|
1345 |
msgstr ""
|
1346 |
|
1347 |
+
#: ../lib/the-events-calendar.class.php:1443
|
1348 |
#, php-format
|
1349 |
msgid "Venue updated. <a href=\"%s\">View venue</a>"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: ../lib/the-events-calendar.class.php:1446
|
1353 |
msgid "Venue updated."
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: ../lib/the-events-calendar.class.php:1448
|
1357 |
#, php-format
|
1358 |
msgid "Venue restored to revision from %s"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: ../lib/the-events-calendar.class.php:1449
|
1362 |
#, php-format
|
1363 |
msgid "Venue published. <a href=\"%s\">View venue</a>"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: ../lib/the-events-calendar.class.php:1450
|
1367 |
msgid "Venue saved."
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: ../lib/the-events-calendar.class.php:1451
|
1371 |
#, php-format
|
1372 |
msgid "Venue submitted. <a target=\"_blank\" href=\"%s\">Preview venue</a>"
|
1373 |
msgstr ""
|
1374 |
|
1375 |
+
#: ../lib/the-events-calendar.class.php:1452
|
1376 |
#, php-format
|
1377 |
msgid ""
|
1378 |
"Venue scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href=\"%2$s"
|
1379 |
"\">Preview venue</a>"
|
1380 |
msgstr ""
|
1381 |
|
1382 |
+
#: ../lib/the-events-calendar.class.php:1455
|
1383 |
#, php-format
|
1384 |
msgid "Venue draft updated. <a target=\"_blank\" href=\"%s\">Preview venue</a>"
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: ../lib/the-events-calendar.class.php:1460
|
1388 |
#, php-format
|
1389 |
msgid "Organizer updated. <a href=\"%s\">View organizer</a>"
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: ../lib/the-events-calendar.class.php:1463
|
1393 |
msgid "Organizer updated."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: ../lib/the-events-calendar.class.php:1465
|
1397 |
#, php-format
|
1398 |
msgid "Organizer restored to revision from %s"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: ../lib/the-events-calendar.class.php:1466
|
1402 |
#, php-format
|
1403 |
msgid "Organizer published. <a href=\"%s\">View organizer</a>"
|
1404 |
msgstr ""
|
1405 |
|
1406 |
+
#: ../lib/the-events-calendar.class.php:1467
|
1407 |
msgid "Organizer saved."
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: ../lib/the-events-calendar.class.php:1468
|
1411 |
#, php-format
|
1412 |
msgid ""
|
1413 |
"Organizer submitted. <a target=\"_blank\" href=\"%s\">Preview organizer</a>"
|
1414 |
msgstr ""
|
1415 |
|
1416 |
+
#: ../lib/the-events-calendar.class.php:1469
|
1417 |
#, php-format
|
1418 |
msgid ""
|
1419 |
"Organizer scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
|
1420 |
"\"%2$s\">Preview organizer</a>"
|
1421 |
msgstr ""
|
1422 |
|
1423 |
+
#: ../lib/the-events-calendar.class.php:1472
|
1424 |
#, php-format
|
1425 |
msgid ""
|
1426 |
"Organizer draft updated. <a target=\"_blank\" href=\"%s\">Preview organizer</"
|
1427 |
"a>"
|
1428 |
msgstr ""
|
1429 |
|
1430 |
+
#: ../lib/the-events-calendar.class.php:1513
|
1431 |
msgid "Use Saved Venue:"
|
1432 |
msgstr ""
|
1433 |
|
1434 |
+
#: ../lib/the-events-calendar.class.php:1542
|
1435 |
msgid "Use Saved Organizer:"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
+
#: ../lib/the-events-calendar.class.php:1582
|
1439 |
msgid "Use New Venue"
|
1440 |
msgstr ""
|
1441 |
|
1442 |
+
#: ../lib/the-events-calendar.class.php:1584
|
1443 |
msgid "My Venues"
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: ../lib/the-events-calendar.class.php:1589
|
1447 |
msgid "Available Venues"
|
1448 |
msgstr ""
|
1449 |
|
1450 |
+
#: ../lib/the-events-calendar.class.php:1600
|
1451 |
msgid "No saved venue exists."
|
1452 |
msgstr ""
|
1453 |
|
1454 |
+
#: ../lib/the-events-calendar.class.php:1639
|
1455 |
msgid "Use New Organizer"
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
#: ../lib/the-events-calendar.class.php:1641
|
1459 |
msgid "My Organizers"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: ../lib/the-events-calendar.class.php:1646
|
1463 |
msgid "Available Organizers"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
+
#: ../lib/the-events-calendar.class.php:1657
|
1467 |
msgid "No saved organizer exists."
|
1468 |
msgstr ""
|
1469 |
|
1470 |
+
#: ../lib/the-events-calendar.class.php:1784
|
1471 |
msgid "Next"
|
1472 |
msgstr ""
|
1473 |
|
1474 |
+
#: ../lib/the-events-calendar.class.php:1785
|
1475 |
msgid "Prev"
|
1476 |
msgstr ""
|
1477 |
|
1478 |
+
#: ../lib/the-events-calendar.class.php:1786
|
1479 |
msgid "Today"
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: ../lib/the-events-calendar.class.php:1787
|
1483 |
msgid "Done"
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: ../lib/the-events-calendar.class.php:1996
|
1487 |
msgid "Network"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
+
#: ../lib/the-events-calendar.class.php:2924
|
1491 |
msgid "Unnamed Venue"
|
1492 |
msgstr ""
|
1493 |
|
1494 |
+
#: ../lib/the-events-calendar.class.php:3014
|
1495 |
msgid "Unnamed Organizer"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: ../lib/the-events-calendar.class.php:3474
|
1499 |
+
#: ../lib/the-events-calendar.class.php:3491
|
1500 |
+
msgid "Date out of range."
|
1501 |
+
msgstr ""
|
1502 |
+
|
1503 |
+
#: ../lib/the-events-calendar.class.php:3504
|
1504 |
msgid "Event Options"
|
1505 |
msgstr ""
|
1506 |
|
1507 |
+
#: ../lib/the-events-calendar.class.php:3506
|
1508 |
msgid "Venue Information"
|
1509 |
msgstr ""
|
1510 |
|
1511 |
+
#: ../lib/the-events-calendar.class.php:3511
|
1512 |
msgid "Organizer Information"
|
1513 |
msgstr ""
|
1514 |
|
1515 |
+
#: ../lib/the-events-calendar.class.php:3708
|
1516 |
msgid "Support"
|
1517 |
msgstr ""
|
1518 |
|
1519 |
+
#: ../lib/the-events-calendar.class.php:3711
|
1520 |
msgid "View All Add-Ons"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: ../lib/the-events-calendar.class.php:3728
|
1524 |
msgid "News from Modern Tribe"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
+
#: ../lib/the-events-calendar.class.php:3809
|
1528 |
msgid "Additional Functionality"
|
1529 |
msgstr ""
|
1530 |
|
1531 |
+
#: ../lib/the-events-calendar.class.php:3814
|
1532 |
msgid ""
|
1533 |
"Looking for additional functionality including recurring events, ticket "
|
1534 |
"sales, publicly submitted events, new views and more?"
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: ../lib/the-events-calendar.class.php:3814
|
1538 |
#, php-format
|
1539 |
msgid "Check out the <a href=\"%s\">available add-ons</a>."
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: ../lib/the-events-calendar.class.php:3886
|
1543 |
+
#: ../lib/the-events-calendar.class.php:3977
|
1544 |
msgid "View Calendar"
|
1545 |
msgstr ""
|
1546 |
|
1547 |
+
#: ../lib/the-events-calendar.class.php:3894
|
1548 |
msgid "Add Event"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
+
#: ../lib/the-events-calendar.class.php:3903
|
1552 |
msgid "Edit Events"
|
1553 |
msgstr ""
|
1554 |
|
1555 |
+
#: ../lib/the-events-calendar.class.php:3912
|
1556 |
+
#: ../lib/the-events-calendar.class.php:4013
|
1557 |
#: ../lib/tribe-settings.class.php:164
|
1558 |
msgid "Settings"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
+
#: ../lib/the-events-calendar.class.php:3948
|
1562 |
#, php-format
|
1563 |
msgid ""
|
1564 |
"Welcome to The Events Calendar! Your events calendar can be found at %s. To "
|
1565 |
"change the events slug, visit %sEvents -> Settings%s."
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: ../lib/the-events-calendar.class.php:4014
|
1569 |
msgid "Calendar"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: ../lib/the-events-calendar.class.php:4064
|
1573 |
msgid "List"
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: ../lib/the-events-calendar.class.php:4075
|
1577 |
msgid "Month"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: ../lib/the-events-calendar.class.php:4094
|
1581 |
+
#: ../lib/the-events-calendar.class.php:4096
|
1582 |
+
msgid "Search"
|
1583 |
+
msgstr ""
|
1584 |
+
|
1585 |
+
#: ../lib/the-events-calendar.class.php:4116
|
1586 |
+
#: ../lib/the-events-calendar.class.php:4128
|
1587 |
msgid "Date"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
+
#: ../lib/the-events-calendar.class.php:4119
|
1591 |
msgid "Events In"
|
1592 |
msgstr ""
|
1593 |
|
1594 |
+
#: ../lib/the-events-calendar.class.php:4121
|
1595 |
msgid "Events From"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
+
#: ../lib/the-events-calendar.class.php:4313 ../views/list/nav.php:22
|
1599 |
#: ../views/list/nav.php:28 ../views/list/nav.php:31
|
1600 |
msgid "« Previous Events"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
+
#: ../lib/the-events-calendar.class.php:4314 ../views/list/nav.php:40
|
1604 |
#: ../views/list/nav.php:43 ../views/list/nav.php:49
|
1605 |
msgid "Next Events »"
|
1606 |
msgstr ""
|
1610 |
msgid "View “%s”"
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: ../lib/tribe-admin-events-list.class.php:231
|
1614 |
msgid "Start Date"
|
1615 |
msgstr ""
|
1616 |
|
1617 |
+
#: ../lib/tribe-admin-events-list.class.php:232
|
1618 |
msgid "End Date"
|
1619 |
msgstr ""
|
1620 |
|
1621 |
+
#: ../lib/tribe-admin-events-list.class.php:234
|
1622 |
msgid "Recurring?"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
+
#: ../lib/tribe-admin-events-list.class.php:298
|
1626 |
#: ../lib/tickets/tribe-tickets-pro.php:229
|
1627 |
msgid "Yes"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: ../lib/tribe-admin-events-list.class.php:298
|
1631 |
msgid "No"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: ../lib/tribe-admin-events-list.class.php:376
|
1635 |
#, php-format
|
1636 |
msgid "All %s"
|
1637 |
msgstr ""
|
1638 |
|
1639 |
#: ../lib/tribe-app-shop.class.php:62 ../lib/tribe-app-shop.class.php:63
|
1640 |
+
#: ../lib/tribe-app-shop.class.php:87
|
1641 |
msgid "Event Add-Ons"
|
1642 |
msgstr ""
|
1643 |
|
1645 |
msgid "Tribe"
|
1646 |
msgstr ""
|
1647 |
|
1648 |
+
#: ../lib/tribe-event-api.class.php:374 ../lib/tribe-view-helpers.class.php:44
|
1649 |
#: ../public/template-tags/venue.php:240
|
1650 |
msgid "United States"
|
1651 |
msgstr ""
|
1655 |
msgid "Error"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
+
#: ../lib/tribe-field.class.php:168
|
1659 |
msgid "Invalid field type specified"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
+
#: ../lib/tribe-field.class.php:438
|
1663 |
msgid "No radio options specified"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
+
#: ../lib/tribe-field.class.php:475
|
1667 |
msgid "No checkbox options specified"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: ../lib/tribe-field.class.php:530
|
1671 |
msgid "No select options specified"
|
1672 |
msgstr ""
|
1673 |
|
1716 |
msgid "None of your settings were saved. Please try again."
|
1717 |
msgstr ""
|
1718 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1719 |
#: ../lib/tribe-settings.class.php:509
|
1720 |
msgid "Settings saved."
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: ../lib/tribe-template-factory.class.php:256
|
1724 |
#, php-format
|
1725 |
+
msgid "There were no results found for <strong>\"%s\"</strong>."
|
1726 |
msgstr ""
|
1727 |
|
1728 |
+
#: ../lib/tribe-template-factory.class.php:259
|
1729 |
#, php-format
|
1730 |
+
msgid "No results were found for events in or near <strong>\"%s\"</strong>."
|
|
|
|
|
1731 |
msgstr ""
|
1732 |
|
1733 |
+
#: ../lib/tribe-template-factory.class.php:262
|
1734 |
#, php-format
|
1735 |
msgid ""
|
1736 |
+
"No upcoming events listed under %s. Check out upcoming events for this "
|
1737 |
+
"category or view the full calendar."
|
1738 |
msgstr ""
|
1739 |
|
1740 |
+
#: ../lib/tribe-template-factory.class.php:265
|
1741 |
#, php-format
|
1742 |
+
msgid ""
|
1743 |
+
"No matching events listed under %s. Check out upcoming events for this "
|
1744 |
+
"category or view the full calendar."
|
1745 |
msgstr ""
|
1746 |
|
1747 |
+
#: ../lib/tribe-template-factory.class.php:268
|
1748 |
+
msgid "No previous events "
|
1749 |
msgstr ""
|
1750 |
|
1751 |
+
#: ../lib/tribe-template-factory.class.php:271
|
1752 |
+
#: ../lib/template-classes/month.php:115
|
1753 |
+
msgid "There were no results found."
|
1754 |
msgstr ""
|
1755 |
|
1756 |
+
#: ../lib/tribe-templates.class.php:471
|
1757 |
+
#, php-format
|
1758 |
+
msgid "Template overrides should be moved to the correct subdirectory: %s"
|
1759 |
+
msgstr ""
|
1760 |
+
|
1761 |
+
#: ../lib/tribe-templates.class.php:512
|
1762 |
+
#, php-format
|
1763 |
+
msgid ""
|
1764 |
+
"Template overrides should be moved to the correct subdirectory: "
|
1765 |
+
"tribe_get_template_part('%s')"
|
1766 |
msgstr ""
|
1767 |
|
1768 |
#: ../lib/tribe-the-events-calendar-import.class.php:64
|
1818 |
msgid "Non-existant field validation function passed"
|
1819 |
msgstr ""
|
1820 |
|
|
|
|
|
|
|
|
|
|
|
1821 |
#: ../lib/tribe-validate.class.php:135 ../lib/tribe-validate.class.php:153
|
1822 |
#, php-format
|
1823 |
msgid "%s must contain numbers and letters only"
|
3073 |
msgid "Events List"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
#: ../lib/widget-list.class.php:124
|
3077 |
msgid "View All Events"
|
3078 |
msgstr ""
|
3079 |
|
3080 |
+
#: ../lib/widget-list.class.php:127
|
3081 |
msgid "There are no upcoming events at this time."
|
3082 |
msgstr ""
|
3083 |
|
3084 |
+
#: ../lib/io/csv/admin-views/columns.php:22
|
3085 |
+
#, php-format
|
3086 |
+
msgid "Column Mapping: %s"
|
3087 |
+
msgstr ""
|
3088 |
+
|
3089 |
+
#: ../lib/io/csv/admin-views/columns.php:28
|
3090 |
+
msgid "Please choose the fields that best match the columns in your CSV file."
|
3091 |
+
msgstr ""
|
3092 |
+
|
3093 |
+
#: ../lib/io/csv/admin-views/columns.php:33
|
3094 |
+
msgid "Column Headings"
|
3095 |
+
msgstr ""
|
3096 |
+
|
3097 |
+
#: ../lib/io/csv/admin-views/columns.php:34
|
3098 |
+
msgid "Event Fields"
|
3099 |
+
msgstr ""
|
3100 |
+
|
3101 |
+
#: ../lib/io/csv/admin-views/columns.php:45
|
3102 |
+
msgid "Perform Import"
|
3103 |
+
msgstr ""
|
3104 |
+
|
3105 |
+
#: ../lib/io/csv/admin-views/header.php:11
|
3106 |
+
msgid "Events Import (CSV)"
|
3107 |
+
msgstr ""
|
3108 |
+
|
3109 |
+
#: ../lib/io/csv/admin-views/import.php:17
|
3110 |
+
msgid "Please import venues and organizers <i>before</i> events."
|
3111 |
+
msgstr ""
|
3112 |
+
|
3113 |
+
#: ../lib/io/csv/admin-views/import.php:19
|
3114 |
+
msgid ""
|
3115 |
+
"<ol><li><strong>Organizer import requires:</strong> Organizer Name</"
|
3116 |
+
"li><li><strong>Venue import requires:</strong> Venue Name</"
|
3117 |
+
"li><li><strong>Event import requires:</strong> Event Name and Event Start "
|
3118 |
+
"Date</li></ol>"
|
3119 |
+
msgstr ""
|
3120 |
+
|
3121 |
+
#: ../lib/io/csv/admin-views/import.php:20
|
3122 |
+
msgid ""
|
3123 |
+
"To begin importing data, please choose the type of import and the CSV file."
|
3124 |
+
msgstr ""
|
3125 |
+
|
3126 |
+
#: ../lib/io/csv/admin-views/import.php:27
|
3127 |
+
msgid "Import Type:"
|
3128 |
+
msgstr ""
|
3129 |
+
|
3130 |
+
#: ../lib/io/csv/admin-views/import.php:39
|
3131 |
+
msgid "CSV File:"
|
3132 |
+
msgstr ""
|
3133 |
+
|
3134 |
+
#: ../lib/io/csv/admin-views/import.php:42
|
3135 |
+
msgid ""
|
3136 |
+
"Upload a properly formatted, UTF-8 encoded CSV file. Not sure if your file "
|
3137 |
+
"is UTF-8 encoded? Make sure to specify the character encoding when you save "
|
3138 |
+
"the file, or pass it through a <a href='http://i-tools.org/charset/exec?"
|
3139 |
+
"dest=utf-8&src=auto&download=1'>conversion tool</a>."
|
3140 |
+
msgstr ""
|
3141 |
+
|
3142 |
+
#: ../lib/io/csv/admin-views/import.php:50
|
3143 |
+
msgid "This file has column names in the first row"
|
3144 |
+
msgstr ""
|
3145 |
+
|
3146 |
+
#: ../lib/io/csv/admin-views/import.php:61
|
3147 |
+
msgid "Import CSV File"
|
3148 |
+
msgstr ""
|
3149 |
+
|
3150 |
+
#: ../lib/io/csv/admin-views/result.php:13
|
3151 |
+
msgid "Import Result"
|
3152 |
+
msgstr ""
|
3153 |
+
|
3154 |
+
#: ../lib/io/csv/admin-views/result.php:15
|
3155 |
+
msgid "Import complete!"
|
3156 |
+
msgstr ""
|
3157 |
+
|
3158 |
+
#: ../lib/io/csv/admin-views/result.php:17
|
3159 |
+
#, php-format
|
3160 |
+
msgid "Inserted: %d"
|
3161 |
+
msgstr ""
|
3162 |
+
|
3163 |
+
#: ../lib/io/csv/admin-views/result.php:18
|
3164 |
+
#, php-format
|
3165 |
+
msgid "Updated: %d"
|
3166 |
+
msgstr ""
|
3167 |
+
|
3168 |
+
#: ../lib/io/csv/admin-views/result.php:19
|
3169 |
+
#, php-format
|
3170 |
+
msgid "Skipped: %d"
|
3171 |
+
msgstr ""
|
3172 |
+
|
3173 |
+
#: ../lib/io/csv/admin-views/result.php:23
|
3174 |
+
msgid "The import statistics above have the following meaning:"
|
3175 |
+
msgstr ""
|
3176 |
+
|
3177 |
+
#: ../lib/io/csv/admin-views/result.php:24
|
3178 |
+
msgid ""
|
3179 |
+
"<ol><li><strong>Inserted:</strong> A new item was inserted successfully.</"
|
3180 |
+
"li><li><strong>Updated:</strong> An item was found with the same name and/or "
|
3181 |
+
"start date. The existing item was updated with the new value from the file.</"
|
3182 |
+
"li><li><strong>Skipped:</strong> A row was found in the CSV file that could "
|
3183 |
+
"not be imported. Please see below for the invalid rows.</li></ol>"
|
3184 |
+
msgstr ""
|
3185 |
+
|
3186 |
+
#: ../lib/io/csv/admin-views/result.php:27
|
3187 |
+
#, php-format
|
3188 |
+
msgid "Skipped row numbers: %s"
|
3189 |
+
msgstr ""
|
3190 |
+
|
3191 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:15
|
3192 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:16
|
3193 |
+
msgid "CSV Import"
|
3194 |
+
msgstr ""
|
3195 |
+
|
3196 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:29
|
3197 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:147
|
3198 |
+
msgid "The file went away. Please try again."
|
3199 |
+
msgstr ""
|
3200 |
+
|
3201 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:113
|
3202 |
+
msgid "We were unable to process your request. Please try again."
|
3203 |
+
msgstr ""
|
3204 |
+
|
3205 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_AdminPage.php:154
|
3206 |
+
msgid "<p>The following fields are required for a successful import:</p>"
|
3207 |
+
msgstr ""
|
3208 |
+
|
3209 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:33
|
3210 |
+
msgid "Do Not Import"
|
3211 |
+
msgstr ""
|
3212 |
+
|
3213 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:50
|
3214 |
+
msgid "Event Name"
|
3215 |
+
msgstr ""
|
3216 |
+
|
3217 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:51
|
3218 |
+
msgid "Event Description"
|
3219 |
+
msgstr ""
|
3220 |
+
|
3221 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:52
|
3222 |
+
msgid "Event Start Date"
|
3223 |
+
msgstr ""
|
3224 |
+
|
3225 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:53
|
3226 |
+
msgid "Event Start Time"
|
3227 |
+
msgstr ""
|
3228 |
+
|
3229 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:54
|
3230 |
+
msgid "Event End Date"
|
3231 |
+
msgstr ""
|
3232 |
+
|
3233 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:55
|
3234 |
+
msgid "Event End Time"
|
3235 |
+
msgstr ""
|
3236 |
+
|
3237 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:56
|
3238 |
+
msgid "All Day Event"
|
3239 |
+
msgstr ""
|
3240 |
+
|
3241 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:57
|
3242 |
+
msgid "Event Venue Name"
|
3243 |
+
msgstr ""
|
3244 |
+
|
3245 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:58
|
3246 |
+
msgid "Event Organizer Name"
|
3247 |
+
msgstr ""
|
3248 |
+
|
3249 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:59
|
3250 |
+
msgid "Event Show Map Link"
|
3251 |
+
msgstr ""
|
3252 |
+
|
3253 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:60
|
3254 |
+
msgid "Event Show Map"
|
3255 |
+
msgstr ""
|
3256 |
+
|
3257 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:62
|
3258 |
+
msgid "Event Phone"
|
3259 |
+
msgstr ""
|
3260 |
+
|
3261 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:70
|
3262 |
+
msgid "Venue Name"
|
3263 |
+
msgstr ""
|
3264 |
+
|
3265 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:71
|
3266 |
+
msgid "Venue Country"
|
3267 |
+
msgstr ""
|
3268 |
+
|
3269 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:72
|
3270 |
+
msgid "Venue Address"
|
3271 |
+
msgstr ""
|
3272 |
+
|
3273 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:73
|
3274 |
+
msgid "Venue Addres 2"
|
3275 |
+
msgstr ""
|
3276 |
+
|
3277 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:74
|
3278 |
+
msgid "Venue City"
|
3279 |
+
msgstr ""
|
3280 |
+
|
3281 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:75
|
3282 |
+
msgid "Venue State/Province"
|
3283 |
+
msgstr ""
|
3284 |
+
|
3285 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:76
|
3286 |
+
msgid "Venue Zip"
|
3287 |
+
msgstr ""
|
3288 |
+
|
3289 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:77
|
3290 |
+
msgid "Venue Phone"
|
3291 |
+
msgstr ""
|
3292 |
+
|
3293 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:83
|
3294 |
+
msgid "Organizer Name"
|
3295 |
+
msgstr ""
|
3296 |
+
|
3297 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:84
|
3298 |
+
msgid "Organizer Email"
|
3299 |
+
msgstr ""
|
3300 |
+
|
3301 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:85
|
3302 |
+
msgid "Organizer Website"
|
3303 |
+
msgstr ""
|
3304 |
+
|
3305 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php:86
|
3306 |
+
msgid "Organizer Phone"
|
3307 |
+
msgstr ""
|
3308 |
+
|
3309 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileImporter.php:38
|
3310 |
+
#, php-format
|
3311 |
+
msgid "No importer defined for %s"
|
3312 |
+
msgstr ""
|
3313 |
+
|
3314 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileImporter.php:110
|
3315 |
+
#, php-format
|
3316 |
+
msgid "Missing required fields in row %d."
|
3317 |
+
msgstr ""
|
3318 |
+
|
3319 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileImporter.php:117
|
3320 |
+
#, php-format
|
3321 |
+
msgid "Failed to import record in row %d."
|
3322 |
+
msgstr ""
|
3323 |
+
|
3324 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileImporter.php:126
|
3325 |
+
#, php-format
|
3326 |
+
msgid "%s (post ID %d) updated."
|
3327 |
+
msgstr ""
|
3328 |
+
|
3329 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileImporter.php:130
|
3330 |
+
#, php-format
|
3331 |
+
msgid "%s (post ID %d) created."
|
3332 |
+
msgstr ""
|
3333 |
+
|
3334 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileUploader.php:28
|
3335 |
+
#, php-format
|
3336 |
+
msgid "Temporary file not found. Could not save %s."
|
3337 |
+
msgstr ""
|
3338 |
+
|
3339 |
+
#: ../lib/io/csv/classes/TribeEventsImporter_FileUploader.php:36
|
3340 |
+
#, php-format
|
3341 |
+
msgid "Could not save %s."
|
3342 |
+
msgstr ""
|
3343 |
+
|
3344 |
+
#: ../lib/template-classes/month.php:112
|
3345 |
#, php-format
|
3346 |
msgid ""
|
3347 |
"There were no results found for <strong>\"%s\"</strong> this month. Try "
|
3348 |
"searching next month."
|
3349 |
msgstr ""
|
3350 |
|
3351 |
+
#: ../lib/template-classes/single-event.php:101
|
3352 |
msgid "This event has passed."
|
3353 |
msgstr ""
|
3354 |
|
3383 |
msgstr ""
|
3384 |
|
3385 |
#: ../lib/tickets/tribe-tickets-attendees.php:74
|
3386 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:151
|
3387 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:207
|
3388 |
msgid "Check in"
|
3389 |
msgstr ""
|
3390 |
|
3391 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:152
|
3392 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:207
|
3393 |
msgid "Undo Check in"
|
3394 |
msgstr ""
|
3395 |
|
3396 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:186
|
3397 |
msgid "Print"
|
3398 |
msgstr ""
|
3399 |
|
3400 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:187
|
3401 |
msgid "Email"
|
3402 |
msgstr ""
|
3403 |
|
3404 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:188
|
3405 |
msgid "Export"
|
3406 |
msgstr ""
|
3407 |
|
3408 |
+
#: ../lib/tickets/tribe-tickets-attendees.php:194
|
3409 |
msgid "Filter by ticket #, order # or security code"
|
3410 |
msgstr ""
|
3411 |
|
3449 |
msgid "Attendee List for: %s"
|
3450 |
msgstr ""
|
3451 |
|
3452 |
+
#: ../lib/tickets/tribe-tickets.php:298
|
3453 |
msgid "Your ticket has been saved."
|
3454 |
msgstr ""
|
3455 |
|
3456 |
+
#: ../lib/tickets/tribe-tickets.php:375
|
3457 |
msgid "Your ticket has been deleted."
|
3458 |
msgstr ""
|
3459 |
|
3460 |
+
#: ../public/advanced-functions/meta.php:39
|
3461 |
msgid "Start:"
|
3462 |
msgstr ""
|
3463 |
|
3464 |
+
#: ../public/advanced-functions/meta.php:46
|
3465 |
msgid "End:"
|
3466 |
msgstr ""
|
3467 |
|
3468 |
+
#: ../public/advanced-functions/meta.php:57
|
3469 |
+
#: ../public/advanced-functions/meta.php:67
|
3470 |
msgid "Date:"
|
3471 |
msgstr ""
|
3472 |
|
3473 |
+
#: ../public/advanced-functions/meta.php:76
|
3474 |
+
#: ../public/advanced-functions/meta.php:85
|
3475 |
+
msgid "Time:"
|
3476 |
+
msgstr ""
|
3477 |
+
|
3478 |
+
#: ../public/advanced-functions/meta.php:270
|
3479 |
msgid "Click to view a Google Map"
|
3480 |
msgstr ""
|
3481 |
|
3482 |
+
#: ../public/advanced-functions/meta.php:271
|
3483 |
msgid "+ Google Map"
|
3484 |
msgstr ""
|
3485 |
|
3486 |
+
#: ../public/advanced-functions/meta.php:282
|
3487 |
msgid "Details"
|
3488 |
msgstr ""
|
3489 |
|
3490 |
+
#: ../public/advanced-functions/meta.php:333
|
3491 |
msgid "Event Tags:"
|
3492 |
msgstr ""
|
3493 |
|
3494 |
+
#: ../public/advanced-functions/meta.php:359
|
3495 |
msgid "Origin:"
|
3496 |
msgstr ""
|
3497 |
|
3498 |
+
#: ../public/advanced-functions/meta.php:496
|
3499 |
msgid "Event:"
|
3500 |
msgstr ""
|
3501 |
|
3503 |
msgid "Category"
|
3504 |
msgstr ""
|
3505 |
|
3506 |
+
#: ../public/template-tags/general.php:307
|
3507 |
msgid "Tags:"
|
3508 |
msgstr ""
|
3509 |
|
3510 |
+
#: ../public/template-tags/general.php:408
|
3511 |
msgid "Loading Events"
|
3512 |
msgstr ""
|
3513 |
|
3514 |
+
#: ../public/template-tags/general.php:546
|
3515 |
msgid "Free"
|
3516 |
msgstr ""
|
3517 |
|
3518 |
+
#: ../public/template-tags/general.php:718
|
3519 |
msgid "Recurring Event"
|
3520 |
msgstr ""
|
3521 |
|
3522 |
+
#: ../public/template-tags/general.php:721
|
3523 |
msgid "(See all)"
|
3524 |
msgstr ""
|
3525 |
|
3526 |
+
#: ../public/template-tags/general.php:1033
|
3527 |
#, php-format
|
3528 |
msgid "Calendar powered by %sThe Events Calendar%s"
|
3529 |
msgstr ""
|
3530 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3531 |
#: ../public/template-tags/options.php:20
|
3532 |
#, php-format
|
3533 |
msgid "Your current Events URL is %s"
|
3556 |
msgid "Find out more"
|
3557 |
msgstr ""
|
3558 |
|
3559 |
+
#: ../views/modules/bar.php:31 ../views/modules/bar.php:61
|
3560 |
msgid "Find Events"
|
3561 |
msgstr ""
|
3562 |
|
lib/io/csv/admin-views/columns.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var string[] $messages
|
4 |
+
* @var string $import_type
|
5 |
+
* @var string[] $header
|
6 |
+
*/
|
7 |
+
// Don't load directly
|
8 |
+
if ( !defined( 'ABSPATH' ) ) {
|
9 |
+
die( '-1' );
|
10 |
+
}
|
11 |
+
|
12 |
+
$mapper = new TribeEventsImporter_ColumnMapper( $import_type );
|
13 |
+
if ( isset($_POST['column_map']) ) {
|
14 |
+
$mapper->set_defaults($_POST['column_map']);
|
15 |
+
} else {
|
16 |
+
$mapper->set_defaults(get_option('tribe_events_import_column_mapping', array()));
|
17 |
+
}
|
18 |
+
|
19 |
+
require_once 'header.php';
|
20 |
+
?>
|
21 |
+
|
22 |
+
<h3><?php echo sprintf( __( 'Column Mapping: %s', 'tribe-events-calendar' ), ucwords( $import_type ) ) ?></h3>
|
23 |
+
|
24 |
+
<?php if ( !empty( $messages ) ): ?>
|
25 |
+
<div class="error"><?php echo implode( '', $messages ); ?></div>
|
26 |
+
<?php endif; ?>
|
27 |
+
<div class="form">
|
28 |
+
<p><?php _e( 'Please choose the fields that best match the columns in your CSV file.', 'tribe-events-calendar' ) ?></p>
|
29 |
+
|
30 |
+
<form method="POST">
|
31 |
+
<table class="">
|
32 |
+
<thead>
|
33 |
+
<th><?php _e( 'Column Headings', 'tribe-events-calendar' ); ?></th>
|
34 |
+
<th><?php _e( 'Event Fields', 'tribe-events-calendar' ); ?></th>
|
35 |
+
</thead>
|
36 |
+
<?php foreach ( $header as $col => $title ): ?>
|
37 |
+
<tr>
|
38 |
+
<td><?php echo $title ?></td>
|
39 |
+
<td><?php echo $mapper->make_select_box( $col ) ?></td>
|
40 |
+
</tr>
|
41 |
+
<?php endforeach ?>
|
42 |
+
|
43 |
+
<tr>
|
44 |
+
<td colspan="2">
|
45 |
+
<?php submit_button(__('Perform Import', 'tribe-events-calendar')); ?>
|
46 |
+
</td>
|
47 |
+
</tr>
|
48 |
+
|
49 |
+
</table>
|
50 |
+
|
51 |
+
<input type="hidden" name="import_type" value="<?php echo $import_type ?>"/>
|
52 |
+
<input type="hidden" name="ecp_import_action" value="import"/>
|
53 |
+
|
54 |
+
|
55 |
+
</form>
|
56 |
+
</div>
|
57 |
+
|
58 |
+
<?php
|
59 |
+
/* This doesn't seem to do anything. Hiding it for now
|
60 |
+
/*<script>
|
61 |
+
jQuery(document).ready(function() {
|
62 |
+
jQuery('.tribe-events-imnporter-custom-field').css('visibility', 'hidden');
|
63 |
+
});
|
64 |
+
|
65 |
+
function tribeShowCf(field, col){
|
66 |
+
|
67 |
+
if( jQuery('select[name="column_map['+col+']"]').val() == 'custom_field' ){
|
68 |
+
jQuery('select[name="txt_'+col+'"]').css('visibility', 'visible');
|
69 |
+
}else{
|
70 |
+
jQuery('select[name="txt_'+col+'"]').css('visibility', 'hidden');
|
71 |
+
}
|
72 |
+
|
73 |
+
}
|
74 |
+
</script>/* */
|
75 |
+
?>
|
76 |
+
<?php
|
77 |
+
require_once 'footer.php';
|
78 |
+
?>
|
lib/io/csv/admin-views/footer.php
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Don't load directly
|
3 |
+
if ( !defined('ABSPATH') ) { die('-1'); }
|
4 |
+
?>
|
5 |
+
</div></div>
|
lib/io/csv/admin-views/header.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Don't load directly
|
3 |
+
if ( !defined('ABSPATH') ) { die('-1'); }
|
4 |
+
?>
|
5 |
+
<style type="text/css">
|
6 |
+
div.tribe_settings{
|
7 |
+
width:90%;
|
8 |
+
}
|
9 |
+
</style>
|
10 |
+
<div class="tribe_settings wrap">
|
11 |
+
<?php screen_icon(); ?><h2><?php _e( 'Events Import (CSV)', 'tribe-events-calendar' ) ?></h2>
|
12 |
+
<div class="form">
|
lib/io/csv/admin-views/import.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Don't load directly
|
3 |
+
if ( !defined( 'ABSPATH' ) ) {
|
4 |
+
die( '-1' );
|
5 |
+
}
|
6 |
+
|
7 |
+
require_once 'header.php';
|
8 |
+
?>
|
9 |
+
<?php if ( !empty( $messages ) ): ?>
|
10 |
+
<div class="error">
|
11 |
+
<?php foreach ( $messages as $message): ?>
|
12 |
+
<p><?php echo $message; ?></p>
|
13 |
+
<?php endforeach; ?>
|
14 |
+
</div>
|
15 |
+
<?php endif; ?>
|
16 |
+
<p class="error">
|
17 |
+
<strong><?php _e( 'Please import venues and organizers <i>before</i> events.', 'tribe-events-calendar' ) ?></strong>
|
18 |
+
</p>
|
19 |
+
<p><?php echo _e( '<ol><li><strong>Organizer import requires:</strong> Organizer Name</li><li><strong>Venue import requires:</strong> Venue Name</li><li><strong>Event import requires:</strong> Event Name and Event Start Date</li></ol>', 'tribe-events-calendar' ) ?></p>
|
20 |
+
<p><?php _e( 'To begin importing data, please choose the type of import and the CSV file.', 'tribe-events-calendar' ) ?></p>
|
21 |
+
|
22 |
+
<form method="POST" enctype="multipart/form-data">
|
23 |
+
<table class="form-table">
|
24 |
+
<tr>
|
25 |
+
<td>
|
26 |
+
<label title="Import Type">
|
27 |
+
<?php _e( 'Import Type:', 'tribe-events-calendar' ) ?>
|
28 |
+
<select name="import_type" id="events-import-import-type">
|
29 |
+
<option value="venues"><?php _e( 'Venues', 'tribe-events-calendar' ) ?></option>
|
30 |
+
<option value="organizers"><?php _e( 'Organizers', 'tribe-events-calendar' ) ?></option>
|
31 |
+
<option value="events" selected="selected"><?php _e( 'Events', 'tribe-events-calendar' ) ?></option>
|
32 |
+
</select>
|
33 |
+
</label>
|
34 |
+
</td>
|
35 |
+
</tr>
|
36 |
+
<tr>
|
37 |
+
<td>
|
38 |
+
<label title="File">
|
39 |
+
<?php _e( 'CSV File:', 'tribe-events-calendar' ) ?>
|
40 |
+
<input type="file" name="import_file" id="events-import-csv-file"/>
|
41 |
+
</label>
|
42 |
+
<p class="description"><?php _e( "Upload a properly formatted, UTF-8 encoded CSV file. Not sure if your file is UTF-8 encoded? Make sure to specify the character encoding when you save the file, or pass it through a <a href='http://i-tools.org/charset/exec?dest=utf-8&src=auto&download=1'>conversion tool</a>.", 'tribe-events-calendar' ); ?></p>
|
43 |
+
</td>
|
44 |
+
</tr>
|
45 |
+
|
46 |
+
<tr>
|
47 |
+
<td>
|
48 |
+
<label title="Header Row">
|
49 |
+
<input type="checkbox" name="import_header" value="1" id="events-import-csv-file" checked="checked" />
|
50 |
+
<?php _e( 'This file has column names in the first row', 'tribe-events-calendar' ) ?>
|
51 |
+
</label>
|
52 |
+
</td>
|
53 |
+
</tr>
|
54 |
+
|
55 |
+
</table>
|
56 |
+
|
57 |
+
<table class="form-table">
|
58 |
+
<tr>
|
59 |
+
<td>
|
60 |
+
<input type="submit" class="button-primary" style=""
|
61 |
+
value="<?php _e( 'Import CSV File', 'tribe-events-calendar' ) ?>"/>
|
62 |
+
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo( 2 * 1024 * 1024 ); ?>"/>
|
63 |
+
<input type="hidden" name="ecp_import_action" value="map"/>
|
64 |
+
</td>
|
65 |
+
</tr>
|
66 |
+
</table>
|
67 |
+
</form>
|
68 |
+
|
69 |
+
<?php
|
70 |
+
require_once 'footer.php';
|
71 |
+
?>
|
lib/io/csv/admin-views/in-progress.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var string[] $messages
|
4 |
+
*/
|
5 |
+
|
6 |
+
// Don't load directly
|
7 |
+
if ( !defined('ABSPATH') ) { die('-1'); }
|
8 |
+
|
9 |
+
|
10 |
+
require_once 'header.php';
|
11 |
+
?>
|
12 |
+
|
13 |
+
<h3>Importing Data</h3>
|
14 |
+
|
15 |
+
<ul>
|
16 |
+
<?php foreach ( $messages as $message ): ?>
|
17 |
+
<li><?php esc_html_e($message); ?></li>
|
18 |
+
<?php endforeach; ?>
|
19 |
+
</ul>
|
20 |
+
|
21 |
+
<p>Redirecting...</p>
|
22 |
+
|
23 |
+
<?php
|
24 |
+
require_once 'footer.php';
|
25 |
+
?>
|
26 |
+
<script>window.location.href='<?php echo add_query_arg( array('action'=>'continue') ); ?>';</script>
|
lib/io/csv/admin-views/result.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var int[] $log Keys: 'created', 'updated', 'skipped'
|
4 |
+
* @var int[] $skipped Row IDs of skipped/unparseable rows
|
5 |
+
*/
|
6 |
+
|
7 |
+
// Don't load directly
|
8 |
+
if ( !defined('ABSPATH') ) { die('-1'); }
|
9 |
+
|
10 |
+
require_once 'header.php';
|
11 |
+
?>
|
12 |
+
|
13 |
+
<h3><?php _e( 'Import Result', 'tribe-events-calendar' ) ?></h3>
|
14 |
+
|
15 |
+
<p><strong><?php _e('Import complete!', 'tribe-events-calendar'); ?></strong></p>
|
16 |
+
<ul>
|
17 |
+
<li><?php printf(__('Inserted: %d', 'tribe-events-calendar'), $log['created']); ?></li>
|
18 |
+
<li><?php printf(__('Updated: %d', 'tribe-events-calendar'), $log['updated']); ?></li>
|
19 |
+
<li><?php printf(__('Skipped: %d', 'tribe-events-calendar'), $log['skipped']); ?></li>
|
20 |
+
</ul>
|
21 |
+
|
22 |
+
|
23 |
+
<p><?php _e( 'The import statistics above have the following meaning:', 'tribe-events-calendar') ?></p>
|
24 |
+
<?php _e( '<ol><li><strong>Inserted:</strong> A new item was inserted successfully.</li><li><strong>Updated:</strong> An item was found with the same name and/or start date. The existing item was updated with the new value from the file.</li><li><strong>Skipped:</strong> A row was found in the CSV file that could not be imported. Please see below for the invalid rows.</li></ol>', 'tribe-events-calendar' ) ?>
|
25 |
+
|
26 |
+
<?php if ( !empty($skipped) ): ?>
|
27 |
+
<p><?php printf(__('Skipped row numbers: %s', 'tribe-events-calendar'), implode(', ', $skipped)); ?></p>
|
28 |
+
<?php endif; ?>
|
29 |
+
|
30 |
+
<?php
|
31 |
+
require_once 'footer.php';
|
32 |
+
?>
|
lib/io/csv/classes/TribeEventsImporter_AdminPage.php
ADDED
@@ -0,0 +1,229 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_AdminPage
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_AdminPage {
|
7 |
+
private $state = '';
|
8 |
+
private $output = '';
|
9 |
+
private $messages = array();
|
10 |
+
private $errors = array();
|
11 |
+
|
12 |
+
public function register_admin_page() {
|
13 |
+
add_submenu_page(
|
14 |
+
'edit.php?post_type='.TribeEvents::POSTTYPE,
|
15 |
+
__('CSV Import','tribe-events-calendar'),
|
16 |
+
__('CSV Import','tribe-events-calendar'),
|
17 |
+
'administrator',
|
18 |
+
'events-importer',
|
19 |
+
array( $this, 'render_admin_page_contents' )
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
public function render_admin_page_contents() {
|
24 |
+
switch ( $this->state ) {
|
25 |
+
case 'map':
|
26 |
+
try {
|
27 |
+
$file = new TribeEventsImporter_FileReader(TribeEventsImporter_FileUploader::get_file_path());
|
28 |
+
} catch ( RuntimeException $e ) {
|
29 |
+
$this->errors[] = __('The file went away. Please try again.', 'tribe-events-calendar');
|
30 |
+
$this->state = '';
|
31 |
+
return $this->render_admin_page_contents();
|
32 |
+
}
|
33 |
+
$header = $file->get_header();
|
34 |
+
if ( get_option( 'tribe_events_importer_has_header', 0 ) == 0 ) {
|
35 |
+
$letter = 'A';
|
36 |
+
$size = count($header);
|
37 |
+
$header = array();
|
38 |
+
for ( $i = 0 ; $i < $size ; $i++ ) {
|
39 |
+
$header[] = $letter++;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
$import_type = get_option( 'tribe_events_import_type' );
|
43 |
+
$messages = $this->errors;
|
44 |
+
include( TribeEventsImporter_Plugin::path('admin-views/columns.php') );
|
45 |
+
break;
|
46 |
+
case 'importing':
|
47 |
+
$messages = $this->messages;
|
48 |
+
include( TribeEventsImporter_Plugin::path('admin-views/in-progress.php') );
|
49 |
+
break;
|
50 |
+
case 'complete':
|
51 |
+
$log = get_option( 'tribe_events_import_log' );
|
52 |
+
$skipped = get_option( 'tribe_events_import_failed_rows', array() );
|
53 |
+
include( TribeEventsImporter_Plugin::path('admin-views/result.php') );
|
54 |
+
break;
|
55 |
+
default:
|
56 |
+
$messages = $this->errors;
|
57 |
+
include( TribeEventsImporter_Plugin::path('admin-views/import.php') );
|
58 |
+
break;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
public function handle_submission() {
|
63 |
+
$action = $this->get_action();
|
64 |
+
if ( empty($action) ) {
|
65 |
+
return;
|
66 |
+
}
|
67 |
+
|
68 |
+
ob_start();
|
69 |
+
switch ( $action ) {
|
70 |
+
case 'map':
|
71 |
+
$this->handle_file_submission();
|
72 |
+
break;
|
73 |
+
|
74 |
+
case 'import':
|
75 |
+
if ( $this->handle_column_mapping() ) {
|
76 |
+
$this->begin_import();
|
77 |
+
} else {
|
78 |
+
$this->state = 'map';
|
79 |
+
}
|
80 |
+
break;
|
81 |
+
|
82 |
+
case 'continue':
|
83 |
+
$this->continue_import();
|
84 |
+
break;
|
85 |
+
|
86 |
+
default:
|
87 |
+
// Should never get here.
|
88 |
+
break;
|
89 |
+
}
|
90 |
+
$this->output = ob_get_clean();
|
91 |
+
}
|
92 |
+
|
93 |
+
private function get_action() {
|
94 |
+
$action = '';
|
95 |
+
if ( isset( $_POST[ 'ecp_import_action' ] ) ) {
|
96 |
+
$action = trim( $_POST[ 'ecp_import_action' ] );
|
97 |
+
}
|
98 |
+
if ( isset($_GET['action']) ) {
|
99 |
+
$action = trim( $_GET[ 'action' ] );
|
100 |
+
}
|
101 |
+
if ( !empty($action) ) {
|
102 |
+
if ( !in_array( $action, array('import', 'map', 'continue') ) ) {
|
103 |
+
$action = '';
|
104 |
+
}
|
105 |
+
}
|
106 |
+
return $action;
|
107 |
+
}
|
108 |
+
|
109 |
+
private function handle_file_submission() {
|
110 |
+
$this->state = 'map';
|
111 |
+
|
112 |
+
if ( empty($_POST['import_type']) || empty($_FILES['import_file']['name']) ) {
|
113 |
+
$this->errors[] = __('We were unable to process your request. Please try again.', 'tribe-events-calendar');
|
114 |
+
$this->state = '';
|
115 |
+
return;
|
116 |
+
}
|
117 |
+
|
118 |
+
$import_type = $_POST[ 'import_type' ];
|
119 |
+
update_option( 'tribe_events_import_type', $import_type );
|
120 |
+
|
121 |
+
try {
|
122 |
+
$file_handler = new TribeEventsImporter_FileUploader($_FILES['import_file']);
|
123 |
+
$file_handler->save_file();
|
124 |
+
} catch ( RuntimeException $e ) {
|
125 |
+
$this->errors[] = $e->getMessage();
|
126 |
+
$this->state = '';
|
127 |
+
return;
|
128 |
+
}
|
129 |
+
|
130 |
+
if( isset($_POST[ 'import_header' ]) && $_POST[ 'import_header' ] ){
|
131 |
+
update_option( 'tribe_events_importer_has_header', 1 );
|
132 |
+
} else {
|
133 |
+
update_option( 'tribe_events_importer_has_header', 0 );
|
134 |
+
}
|
135 |
+
}
|
136 |
+
|
137 |
+
private function handle_column_mapping() {
|
138 |
+
// Deconstruct mapping.
|
139 |
+
if ( empty($_POST['column_map']) ) {
|
140 |
+
return FALSE;
|
141 |
+
}
|
142 |
+
$column_mapping = $_POST['column_map'];
|
143 |
+
|
144 |
+
try {
|
145 |
+
$importer = $this->get_importer();
|
146 |
+
} catch ( RuntimeException $e ) {
|
147 |
+
$this->errors[] = __('The file went away. Please try again.', 'tribe-events-calendar');
|
148 |
+
return FALSE;
|
149 |
+
}
|
150 |
+
$required_fields = $importer->get_required_fields();
|
151 |
+
$missing = array_diff($required_fields, $column_mapping);
|
152 |
+
if ( !empty($missing) ) {
|
153 |
+
$mapper = new TribeEventsImporter_ColumnMapper(get_option( 'tribe_events_import_type' ));
|
154 |
+
$message = __('<p>The following fields are required for a successful import:</p>', 'tribe-events-calendar');
|
155 |
+
$message .= '<ul style="list-style-type: disc; margin-left: 1.5em;">';
|
156 |
+
foreach ( $missing as $key ) {
|
157 |
+
$message .= '<li>'.$mapper->get_column_label($key).'</li>';
|
158 |
+
}
|
159 |
+
$message .= '</ul>';
|
160 |
+
$this->errors[] = $message;
|
161 |
+
return FALSE;
|
162 |
+
}
|
163 |
+
|
164 |
+
update_option('tribe_events_import_column_mapping', $column_mapping);
|
165 |
+
return TRUE;
|
166 |
+
}
|
167 |
+
|
168 |
+
private function begin_import() {
|
169 |
+
$this->reset_tracking_options();
|
170 |
+
$this->continue_import();
|
171 |
+
}
|
172 |
+
|
173 |
+
private function reset_tracking_options() {
|
174 |
+
update_option( 'tribe_events_importer_offset', get_option( 'tribe_events_importer_has_header', 0 ) );
|
175 |
+
update_option( 'tribe_events_import_log', array( 'updated' => 0, 'created' => 0, 'skipped' => 0 ) );
|
176 |
+
update_option( 'tribe_events_import_failed_rows', array() );
|
177 |
+
}
|
178 |
+
|
179 |
+
private function continue_import() {
|
180 |
+
$importer = $this->get_importer();
|
181 |
+
$offset = get_option('tribe_events_importer_offset');
|
182 |
+
if ( $offset == -1 ) {
|
183 |
+
$this->state = 'complete';
|
184 |
+
$this->clean_up_after_import();
|
185 |
+
} else {
|
186 |
+
$this->state = 'importing';
|
187 |
+
$importer->set_offset($offset);
|
188 |
+
$this->do_import($importer);
|
189 |
+
$this->log_import_results($importer);
|
190 |
+
}
|
191 |
+
}
|
192 |
+
|
193 |
+
private function do_import( TribeEventsImporter_FileImporter $importer ) {
|
194 |
+
$importer->do_import();
|
195 |
+
|
196 |
+
$this->messages = $importer->get_log_messages();
|
197 |
+
|
198 |
+
$new_offset = $importer->import_complete() ? -1 : $importer->get_last_completed_row();
|
199 |
+
update_option('tribe_events_importer_offset', $new_offset);
|
200 |
+
}
|
201 |
+
|
202 |
+
private function get_importer() {
|
203 |
+
$type = get_option('tribe_events_import_type');
|
204 |
+
$file_reader = new TribeEventsImporter_FileReader(TribeEventsImporter_FileUploader::get_file_path());
|
205 |
+
$importer = TribeEventsImporter_FileImporter::get_importer($type, $file_reader);
|
206 |
+
$importer->set_map(get_option('tribe_events_import_column_mapping', array()));
|
207 |
+
$importer->set_type(get_option('tribe_events_import_type'));
|
208 |
+
$importer->set_limit(100);
|
209 |
+
$importer->set_offset(get_option('tribe_events_importer_has_header', 0));
|
210 |
+
return $importer;
|
211 |
+
}
|
212 |
+
|
213 |
+
private function log_import_results( TribeEventsImporter_FileImporter $importer ) {
|
214 |
+
$log = get_option( 'tribe_events_import_log' );
|
215 |
+
$log['updated'] += $importer->get_updated_post_count();
|
216 |
+
$log['created'] += $importer->get_new_post_count();
|
217 |
+
$log['skipped'] += $importer->get_skipped_row_count();
|
218 |
+
update_option( 'tribe_events_import_log', $log );
|
219 |
+
|
220 |
+
$skipped_rows = $importer->get_skipped_row_numbers();
|
221 |
+
$previously_skipped_rows = get_option( 'tribe_events_import_failed_rows', array() );
|
222 |
+
$skipped_rows = $previously_skipped_rows + $skipped_rows;
|
223 |
+
update_option( 'tribe_events_import_failed_rows', $skipped_rows );
|
224 |
+
}
|
225 |
+
|
226 |
+
private function clean_up_after_import() {
|
227 |
+
TribeEventsImporter_FileUploader::clear_old_files();
|
228 |
+
}
|
229 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_ColumnMapper.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_ColumnMapper
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_ColumnMapper {
|
7 |
+
private $column_names = array();
|
8 |
+
private $import_type = '';
|
9 |
+
private $defaults = array();
|
10 |
+
|
11 |
+
public function __construct( $import_type ) {
|
12 |
+
$this->import_type = $import_type;
|
13 |
+
switch ( $this->import_type ) {
|
14 |
+
case 'events':
|
15 |
+
$this->column_names = $this->get_event_column_names();
|
16 |
+
break;
|
17 |
+
case 'venues':
|
18 |
+
$this->column_names = $this->get_venue_column_names();
|
19 |
+
break;
|
20 |
+
case 'organizers':
|
21 |
+
$this->column_names = $this->get_organizer_column_names();
|
22 |
+
break;
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
public function set_defaults( $defaults ) {
|
27 |
+
$this->defaults = $defaults;
|
28 |
+
}
|
29 |
+
|
30 |
+
public function make_select_box( $index ) {
|
31 |
+
$selected = isset($this->defaults[$index]) ? $this->defaults[$index] : '';
|
32 |
+
$html = '<select name="column_map[' . $index . ']">';
|
33 |
+
$html .= '<option value="">' . __( 'Do Not Import', 'tribe-events-calendar' ) . '</option>';
|
34 |
+
foreach( $this->column_names as $key => $value ) {
|
35 |
+
$html .= sprintf('<option value="%s" %s>%s</option>', esc_attr($key), selected($selected, $key, FALSE), esc_html($value));
|
36 |
+
}
|
37 |
+
$html .= '</select>';
|
38 |
+
return $html;
|
39 |
+
}
|
40 |
+
|
41 |
+
public function get_column_label( $key ) {
|
42 |
+
if ( isset($this->column_names[$key]) ) {
|
43 |
+
return $this->column_names[$key];
|
44 |
+
}
|
45 |
+
return '';
|
46 |
+
}
|
47 |
+
|
48 |
+
private function get_event_column_names() {
|
49 |
+
return array(
|
50 |
+
'event_name' => __('Event Name', 'tribe-events-calendar'),
|
51 |
+
'event_description' => __('Event Description', 'tribe-events-calendar'),
|
52 |
+
'event_start_date' => __('Event Start Date', 'tribe-events-calendar'),
|
53 |
+
'event_start_time' => __('Event Start Time', 'tribe-events-calendar'),
|
54 |
+
'event_end_date' => __('Event End Date', 'tribe-events-calendar'),
|
55 |
+
'event_end_time' => __('Event End Time', 'tribe-events-calendar'),
|
56 |
+
'event_all_day' => __('All Day Event', 'tribe-events-calendar'),
|
57 |
+
'event_venue_name' => __('Event Venue Name', 'tribe-events-calendar'),
|
58 |
+
'event_organizer_name' => __('Event Organizer Name', 'tribe-events-calendar'),
|
59 |
+
'event_show_map_link' => __('Event Show Map Link', 'tribe-events-calendar'),
|
60 |
+
'event_show_map' => __('Event Show Map', 'tribe-events-calendar'),
|
61 |
+
'event_cost' => __('Event Cost', 'tribe-events-calendar'),
|
62 |
+
'event_phone' => __('Event Phone', 'tribe-events-calendar'),
|
63 |
+
'event_category' => __('Event Category', 'tribe-events-calendar'),
|
64 |
+
//'event_hide' => __('Event Hide From Upcoming', 'tribe-events-calendar'),
|
65 |
+
);
|
66 |
+
}
|
67 |
+
|
68 |
+
private function get_venue_column_names() {
|
69 |
+
return array(
|
70 |
+
'venue_name' => __('Venue Name', 'tribe-events-calendar'),
|
71 |
+
'venue_country' => __('Venue Country', 'tribe-events-calendar'),
|
72 |
+
'venue_address' => __('Venue Address', 'tribe-events-calendar'),
|
73 |
+
'venue_address2' => __('Venue Addres 2', 'tribe-events-calendar'),
|
74 |
+
'venue_city' => __('Venue City', 'tribe-events-calendar'),
|
75 |
+
'venue_state' => __('Venue State/Province', 'tribe-events-calendar'),
|
76 |
+
'venue_zip' => __('Venue Zip', 'tribe-events-calendar'),
|
77 |
+
'venue_phone' => __('Venue Phone', 'tribe-events-calendar'),
|
78 |
+
);
|
79 |
+
}
|
80 |
+
|
81 |
+
private function get_organizer_column_names() {
|
82 |
+
return array(
|
83 |
+
'organizer_name' => __('Organizer Name', 'tribe-events-calendar'),
|
84 |
+
'organizer_email' => __('Organizer Email', 'tribe-events-calendar'),
|
85 |
+
'organizer_website' => __('Organizer Website', 'tribe-events-calendar'),
|
86 |
+
'organizer_phone' => __('Organizer Phone', 'tribe-events-calendar'),
|
87 |
+
);
|
88 |
+
}
|
89 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileImporter.php
ADDED
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileImporter
|
5 |
+
*/
|
6 |
+
abstract class TribeEventsImporter_FileImporter {
|
7 |
+
protected $required_fields = array();
|
8 |
+
|
9 |
+
/** @var TribeEventsImporter_FileReader */
|
10 |
+
private $reader = NULL;
|
11 |
+
private $map = array();
|
12 |
+
private $inverted_map = array();
|
13 |
+
private $type = '';
|
14 |
+
private $limit = 100;
|
15 |
+
private $offset = 0;
|
16 |
+
private $errors = array();
|
17 |
+
private $updated = 0;
|
18 |
+
private $created = 0;
|
19 |
+
private $skipped = array();
|
20 |
+
private $log = array();
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @param string $type
|
24 |
+
* @param TribeEventsImporter_FileReader $file_reader
|
25 |
+
*
|
26 |
+
* @return TribeEventsImporter_FileImporter
|
27 |
+
* @throws InvalidArgumentException
|
28 |
+
*/
|
29 |
+
public static function get_importer( $type, TribeEventsImporter_FileReader $file_reader ) {
|
30 |
+
switch ( $type ) {
|
31 |
+
case 'events':
|
32 |
+
return new TribeEventsImporter_FileImporter_Events($file_reader);
|
33 |
+
case 'venues':
|
34 |
+
return new TribeEventsImporter_FileImporter_Venues($file_reader);
|
35 |
+
case 'organizers':
|
36 |
+
return new TribeEventsImporter_FileImporter_Organizers($file_reader);
|
37 |
+
default:
|
38 |
+
throw new InvalidArgumentException(sprintf(__('No importer defined for %s', 'tribe-events-calendar'), $type));
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @param TribeEventsImporter_FileReader $file_reader
|
44 |
+
*/
|
45 |
+
public function __construct( TribeEventsImporter_FileReader $file_reader ) {
|
46 |
+
$this->reader = $file_reader;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function set_map( array $map_array ) {
|
50 |
+
$this->map = $map_array;
|
51 |
+
$this->inverted_map = array_flip($this->map);
|
52 |
+
}
|
53 |
+
|
54 |
+
public function set_type( $type ) {
|
55 |
+
$this->type = $type;
|
56 |
+
}
|
57 |
+
|
58 |
+
public function set_limit( $limit ) {
|
59 |
+
$this->limit = (int)$limit;
|
60 |
+
}
|
61 |
+
|
62 |
+
public function set_offset( $offset ) {
|
63 |
+
$this->offset = (int)$offset;
|
64 |
+
}
|
65 |
+
|
66 |
+
public function do_import() {
|
67 |
+
$this->reader->set_row($this->offset);
|
68 |
+
for ( $i = 0 ; $i < $this->limit && !$this->import_complete() ; $i++ ) {
|
69 |
+
set_time_limit( 30 );
|
70 |
+
$this->import_next_row();
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
public function get_last_completed_row() {
|
75 |
+
return $this->reader->get_last_line_number_read()+1;
|
76 |
+
}
|
77 |
+
|
78 |
+
public function import_complete() {
|
79 |
+
return $this->reader->at_end_of_file();
|
80 |
+
}
|
81 |
+
|
82 |
+
public function get_updated_post_count() {
|
83 |
+
return $this->updated;
|
84 |
+
}
|
85 |
+
|
86 |
+
public function get_new_post_count() {
|
87 |
+
return $this->created;
|
88 |
+
}
|
89 |
+
|
90 |
+
public function get_skipped_row_count() {
|
91 |
+
return count($this->skipped);
|
92 |
+
}
|
93 |
+
|
94 |
+
public function get_skipped_row_numbers() {
|
95 |
+
return $this->skipped;
|
96 |
+
}
|
97 |
+
|
98 |
+
public function get_log_messages() {
|
99 |
+
return $this->log;
|
100 |
+
}
|
101 |
+
|
102 |
+
public function get_required_fields() {
|
103 |
+
return $this->required_fields;
|
104 |
+
}
|
105 |
+
|
106 |
+
protected function import_next_row() {
|
107 |
+
$record = $this->reader->read_next_row();
|
108 |
+
$row = $this->reader->get_last_line_number_read()+1;
|
109 |
+
if ( !$this->is_valid_record($record) ) {
|
110 |
+
$this->log[$row] = sprintf(__('Missing required fields in row %d.', 'tribe-events-calendar', $row));
|
111 |
+
$this->skipped[] = $row;
|
112 |
+
return;
|
113 |
+
}
|
114 |
+
try {
|
115 |
+
$this->update_or_create_post($record);
|
116 |
+
} catch ( Exception $e ) {
|
117 |
+
$this->log[$row] = sprintf(__('Failed to import record in row %d.', 'tribe-events-calendar'), $row);
|
118 |
+
$this->skipped[] = $row;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
protected function update_or_create_post( array $record ) {
|
123 |
+
if ( $id = $this->match_existing_post($record) ) {
|
124 |
+
$this->update_post($id, $record);
|
125 |
+
$this->updated++;
|
126 |
+
$this->log[$this->reader->get_last_line_number_read()+1] = sprintf( __('%s (post ID %d) updated.', 'tribe-events-calendar'), get_the_title($id), $id );
|
127 |
+
} else {
|
128 |
+
$id = $this->create_post($record);
|
129 |
+
$this->created++;
|
130 |
+
$this->log[$this->reader->get_last_line_number_read()+1] = sprintf( __('%s (post ID %d) created.', 'tribe-events-calendar'), get_the_title($id), $id );
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
abstract protected function match_existing_post( array $record );
|
135 |
+
|
136 |
+
abstract protected function update_post( $post_id, array $record );
|
137 |
+
|
138 |
+
abstract protected function create_post( array $record );
|
139 |
+
|
140 |
+
protected function is_valid_record( array $record ) {
|
141 |
+
foreach ( $this->get_required_fields() as $field ) {
|
142 |
+
if ( $this->get_value_by_key( $record, $field ) == '' ) {
|
143 |
+
return FALSE;
|
144 |
+
}
|
145 |
+
}
|
146 |
+
return TRUE;
|
147 |
+
}
|
148 |
+
|
149 |
+
protected function get_value_by_key( array $record, $key ) {
|
150 |
+
if ( !isset($this->inverted_map[$key]) ) {
|
151 |
+
return '';
|
152 |
+
}
|
153 |
+
if ( !isset($record[$this->inverted_map[$key]]) ) {
|
154 |
+
return '';
|
155 |
+
}
|
156 |
+
return $record[$this->inverted_map[$key]];
|
157 |
+
}
|
158 |
+
|
159 |
+
protected function find_matching_post_id( $name, $post_type ) {
|
160 |
+
if ( empty( $name ) ) {
|
161 |
+
return 0;
|
162 |
+
}
|
163 |
+
$query_args = array(
|
164 |
+
'post_type' => $post_type,
|
165 |
+
'post_status' => 'publish',
|
166 |
+
'post_title' => $name,
|
167 |
+
'fields' => 'ids',
|
168 |
+
);
|
169 |
+
add_filter( 'posts_search', array( $this, 'filter_query_for_title_search' ), 10, 2 );
|
170 |
+
$ids = get_posts( $query_args );
|
171 |
+
remove_filter( 'posts_search', array( $this, 'filter_query_for_title_search' ), 10, 2 );
|
172 |
+
return empty( $ids ) ? 0 : reset( $ids );
|
173 |
+
}
|
174 |
+
|
175 |
+
public function filter_query_for_title_search( $search, WP_Query $wp_query ) {
|
176 |
+
$title = $wp_query->get('post_title');
|
177 |
+
if ( !empty($title) ) {
|
178 |
+
global $wpdb;
|
179 |
+
$search .= $wpdb->prepare(" AND {$wpdb->posts}.post_title=%s", $title);
|
180 |
+
}
|
181 |
+
return $search;
|
182 |
+
}
|
183 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileImporter_Events.php
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileImporter_Events
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_FileImporter_Events extends TribeEventsImporter_FileImporter {
|
7 |
+
|
8 |
+
protected $required_fields = array('event_name', 'event_start_date');
|
9 |
+
|
10 |
+
protected function match_existing_post( array $record ) {
|
11 |
+
$start_date = $this->get_event_start_date( $record );
|
12 |
+
$end_date = $this->get_event_end_date( $record );
|
13 |
+
$query_args = array(
|
14 |
+
'post_type' => TribeEvents::POSTTYPE,
|
15 |
+
'post_title' => $this->get_value_by_key( $record, 'event_name' ),
|
16 |
+
'meta_query' => array(
|
17 |
+
array(
|
18 |
+
'key' => '_EventStartDate',
|
19 |
+
'value' => $start_date,
|
20 |
+
),
|
21 |
+
),
|
22 |
+
'fields' => 'ids',
|
23 |
+
'posts_per_page' => 1,
|
24 |
+
);
|
25 |
+
if ( !empty($end_date) ) {
|
26 |
+
$query_args['meta_query'][] = array(
|
27 |
+
'key' => '_EventEndDate',
|
28 |
+
'value' => $end_date,
|
29 |
+
);
|
30 |
+
}
|
31 |
+
add_filter( 'posts_search', array( $this, 'filter_query_for_title_search' ), 10, 2 );
|
32 |
+
$matches = get_posts($query_args);
|
33 |
+
remove_filter( 'posts_search', array( $this, 'filter_query_for_title_search' ), 10, 2 );
|
34 |
+
if ( empty($matches) ) {
|
35 |
+
return 0;
|
36 |
+
}
|
37 |
+
return reset($matches);
|
38 |
+
}
|
39 |
+
|
40 |
+
protected function update_post( $post_id, array $record ) {
|
41 |
+
$event = $this->build_event_array( $record );
|
42 |
+
TribeEventsAPI::updateEvent( $post_id, $event );
|
43 |
+
}
|
44 |
+
|
45 |
+
|
46 |
+
protected function create_post( array $record ) {
|
47 |
+
$event = $this->build_event_array( $record );
|
48 |
+
$id = TribeEventsAPI::createEvent( $event );
|
49 |
+
return $id;
|
50 |
+
}
|
51 |
+
|
52 |
+
private function get_event_start_date( array $record ) {
|
53 |
+
$start_date = $this->get_value_by_key( $record, 'event_start_date' );
|
54 |
+
$start_time = $this->get_value_by_key( $record, 'event_start_time' );
|
55 |
+
if ( !empty($start_time) ) {
|
56 |
+
$start_date .= ' '.$start_time;
|
57 |
+
}
|
58 |
+
$start_date = date('Y-m-d H:i:s', strtotime($start_date));
|
59 |
+
return $start_date;
|
60 |
+
}
|
61 |
+
|
62 |
+
private function get_event_end_date( array $record ) {
|
63 |
+
$end_date = $this->get_value_by_key( $record, 'event_end_date' );
|
64 |
+
$end_time = $this->get_value_by_key( $record, 'event_end_time' );
|
65 |
+
if ( !empty($end_time) ) {
|
66 |
+
$end_date .= ' '.$end_time;
|
67 |
+
}
|
68 |
+
if ( !empty($end_date) ) {
|
69 |
+
$end_date = date('Y-m-d H:i:s', strtotime($end_date));
|
70 |
+
}
|
71 |
+
$start_date = $this->get_event_start_date( $record );
|
72 |
+
if ( $end_date < $start_date ) {
|
73 |
+
$end_date = $start_date;
|
74 |
+
}
|
75 |
+
return $end_date;
|
76 |
+
}
|
77 |
+
|
78 |
+
private function is_all_day( array $record ) {
|
79 |
+
$all_day = FALSE;
|
80 |
+
if ( in_array(strtolower($this->get_value_by_key( $record, 'event_all_day' )), array('yes', 'true', '1')) ) {
|
81 |
+
$all_day = TRUE;
|
82 |
+
}
|
83 |
+
return $all_day;
|
84 |
+
}
|
85 |
+
|
86 |
+
private function build_event_array( array $record ) {
|
87 |
+
$start_date = strtotime($this->get_event_start_date($record));
|
88 |
+
$end_date = strtotime($this->get_event_end_date($record));
|
89 |
+
$all_day = $this->is_all_day( $record ) ? 'yes' : NULL;
|
90 |
+
|
91 |
+
$event = array(
|
92 |
+
'post_type' => TribeEvents::POSTTYPE,
|
93 |
+
'post_title' => $this->get_value_by_key( $record, 'event_name' ),
|
94 |
+
'post_status' => 'publish',
|
95 |
+
'post_content' => $this->get_value_by_key( $record, 'event_description' ),
|
96 |
+
'EventStartDate' => date( 'Y-m-d', $start_date ),
|
97 |
+
'EventStartHour' => date( 'h', $start_date ),
|
98 |
+
'EventStartMinute' => date( 'i', $start_date ),
|
99 |
+
'EventStartMeridian' => date( 'a', $start_date ),
|
100 |
+
'EventEndDate' => date( 'Y-m-d', $end_date ),
|
101 |
+
'EventEndHour' => date( 'h', $end_date ),
|
102 |
+
'EventEndMinute' => date( 'i', $end_date ),
|
103 |
+
'EventEndMeridian' => date( 'a', $end_date ),
|
104 |
+
'EventShowMapLink' => $this->get_value_by_key( $record, 'event_show_map_link' ),
|
105 |
+
'EventShowMap' => $this->get_value_by_key( $record, 'event_show_map' ),
|
106 |
+
'EventCost' => $this->get_value_by_key( $record, 'event_cost' ),
|
107 |
+
'EventAllDay' => $all_day,
|
108 |
+
'EventHideFromUpcoming' => $this->get_value_by_key( $record, 'event_hide' )
|
109 |
+
);
|
110 |
+
|
111 |
+
if ( $organizer_id = $this->find_matching_organizer_id($record) ) {
|
112 |
+
$event['Organizer'] = array( 'OrganizerID' => $organizer_id );
|
113 |
+
}
|
114 |
+
|
115 |
+
if ( $venue_id = $this->find_matching_venue_id($record) ) {
|
116 |
+
$event['Venue'] = array( 'VenueID' => $venue_id );
|
117 |
+
}
|
118 |
+
|
119 |
+
if ( $cats = $this->get_value_by_key( $record, 'event_category' ) ) {
|
120 |
+
$event['tax_input'][TribeEvents::TAXONOMY] = $this->translate_terms_to_ids(explode(',',$cats));
|
121 |
+
}
|
122 |
+
|
123 |
+
return $event;
|
124 |
+
|
125 |
+
}
|
126 |
+
|
127 |
+
private function find_matching_organizer_id( $record ) {
|
128 |
+
$name = $this->get_value_by_key( $record, 'event_organizer_name' );
|
129 |
+
return $this->find_matching_post_id( $name, TribeEvents::ORGANIZER_POST_TYPE );
|
130 |
+
}
|
131 |
+
|
132 |
+
private function find_matching_venue_id( $record ) {
|
133 |
+
$name = $this->get_value_by_key( $record, 'event_venue_name' );
|
134 |
+
return $this->find_matching_post_id( $name, TribeEvents::VENUE_POST_TYPE );
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* When passing terms to wp_insert_post(), we're required to have IDs
|
139 |
+
* for hierarchical taxonomies, not strings
|
140 |
+
*
|
141 |
+
* @param array $terms
|
142 |
+
* @return int[]
|
143 |
+
*/
|
144 |
+
private function translate_terms_to_ids( array $terms ) {
|
145 |
+
$term_ids = array();
|
146 |
+
// duplicating some code from wp_set_object_terms()
|
147 |
+
foreach ( $terms as $term) {
|
148 |
+
if ( !strlen(trim($term)) )
|
149 |
+
continue;
|
150 |
+
|
151 |
+
if ( !$term_info = term_exists($term, TribeEvents::TAXONOMY) ) {
|
152 |
+
// Skip if a non-existent term ID is passed.
|
153 |
+
if ( is_int($term) )
|
154 |
+
continue;
|
155 |
+
$term_info = wp_insert_term($term, TribeEvents::TAXONOMY);
|
156 |
+
}
|
157 |
+
if ( is_wp_error($term_info) ) {
|
158 |
+
continue;
|
159 |
+
}
|
160 |
+
$term_ids[] = $term_info['term_id'];
|
161 |
+
}
|
162 |
+
return $term_ids;
|
163 |
+
}
|
164 |
+
|
165 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileImporter_Organizers.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileImporter_Organizers
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_FileImporter_Organizers extends TribeEventsImporter_FileImporter {
|
7 |
+
|
8 |
+
protected $required_fields = array('organizer_name');
|
9 |
+
|
10 |
+
protected function match_existing_post( array $record ) {
|
11 |
+
$name = $this->get_value_by_key( $record, 'organizer_name' );
|
12 |
+
$id = $this->find_matching_post_id( $name, TribeEvents::ORGANIZER_POST_TYPE );
|
13 |
+
return $id;
|
14 |
+
}
|
15 |
+
|
16 |
+
protected function update_post( $post_id, array $record ) {
|
17 |
+
$this->hack_to_remove_broken_filters();
|
18 |
+
$organizer = $this->build_organizer_array( $record );
|
19 |
+
TribeEventsAPI::updateOrganizer( $post_id, $organizer );
|
20 |
+
}
|
21 |
+
|
22 |
+
protected function create_post( array $record ) {
|
23 |
+
$this->hack_to_remove_broken_filters();
|
24 |
+
$organizer = $this->build_organizer_array( $record );
|
25 |
+
$id = TribeEventsAPI::createOrganizer( $organizer );
|
26 |
+
return $id;
|
27 |
+
}
|
28 |
+
|
29 |
+
private function build_organizer_array( array $record ) {
|
30 |
+
$organizer = array(
|
31 |
+
'Organizer' => $this->get_value_by_key( $record, 'organizer_name' ),
|
32 |
+
'Email' => $this->get_value_by_key( $record, 'organizer_email' ),
|
33 |
+
'Phone' => $this->get_value_by_key( $record, 'organizer_phone' ),
|
34 |
+
'Website' => $this->get_value_by_key( $record, 'organizer_website' ),
|
35 |
+
);
|
36 |
+
return $organizer;
|
37 |
+
}
|
38 |
+
|
39 |
+
private function hack_to_remove_broken_filters() {
|
40 |
+
// a stupid hack for some stupid code
|
41 |
+
// the callback will automatically replace every organizer title with "Unnamed Organizer"
|
42 |
+
$TribeEvents = TribeEvents::instance();
|
43 |
+
remove_action( 'save_post', array( $TribeEvents, 'save_organizer_data' ), 16, 2 );
|
44 |
+
}
|
45 |
+
|
46 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileImporter_Venues.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileImporter_Venues
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_FileImporter_Venues extends TribeEventsImporter_FileImporter {
|
7 |
+
|
8 |
+
protected $required_fields = array('venue_name');
|
9 |
+
|
10 |
+
protected function match_existing_post( array $record ) {
|
11 |
+
$name = $this->get_value_by_key( $record, 'venue_name' );
|
12 |
+
$id = $this->find_matching_post_id( $name, TribeEvents::VENUE_POST_TYPE );
|
13 |
+
return $id;
|
14 |
+
}
|
15 |
+
|
16 |
+
protected function update_post( $post_id, array $record ) {
|
17 |
+
$this->hack_to_remove_broken_filters();
|
18 |
+
$venue = $this->build_venue_array( $record );
|
19 |
+
TribeEventsAPI::updateVenue( $post_id, $venue );
|
20 |
+
}
|
21 |
+
|
22 |
+
protected function create_post( array $record ) {
|
23 |
+
$this->hack_to_remove_broken_filters();
|
24 |
+
$venue = $this->build_venue_array( $record );
|
25 |
+
$id = TribeEventsAPI::createVenue( $venue );
|
26 |
+
return $id;
|
27 |
+
}
|
28 |
+
|
29 |
+
private function build_venue_array( array $record ) {
|
30 |
+
$venue_address = trim( $this->get_value_by_key( $record, 'venue_address' ) . ' ' . $this->get_value_by_key( $record, 'venue_address2' ) );
|
31 |
+
$venue = array(
|
32 |
+
'Venue' => $this->get_value_by_key( $record, 'venue_name' ),
|
33 |
+
'Address' => $venue_address,
|
34 |
+
'City' => $this->get_value_by_key( $record, 'venue_city' ),
|
35 |
+
'Country' => $this->get_value_by_key( $record, 'venue_country' ),
|
36 |
+
'Province' => $this->get_value_by_key( $record, 'venue_state' ),
|
37 |
+
'State' => $this->get_value_by_key( $record, 'venue_state' ),
|
38 |
+
'Zip' => $this->get_value_by_key( $record, 'venue_zip' ),
|
39 |
+
'Phone' => $this->get_value_by_key( $record, 'venue_phone' ),
|
40 |
+
);
|
41 |
+
if ( empty($venue['Country']) ) {
|
42 |
+
$venue['Country'] = 'United States';
|
43 |
+
}
|
44 |
+
return $venue;
|
45 |
+
}
|
46 |
+
|
47 |
+
private function hack_to_remove_broken_filters() {
|
48 |
+
// a stupid hack for some stupid code
|
49 |
+
// the callback will automatically replace every Venue title with "Unnamed Venue"
|
50 |
+
$TribeEvents = TribeEvents::instance();
|
51 |
+
remove_action( 'save_post', array( $TribeEvents, 'save_venue_data' ), 16, 2 );
|
52 |
+
}
|
53 |
+
|
54 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileReader.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileReader
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_FileReader {
|
7 |
+
private $path = '';
|
8 |
+
private $file = NULL;
|
9 |
+
private $last_line_read = 0;
|
10 |
+
|
11 |
+
public function __construct( $file_path ) {
|
12 |
+
ini_set("auto_detect_line_endings", true);
|
13 |
+
$this->path = $file_path;
|
14 |
+
$this->file = new SplFileObject($this->path);
|
15 |
+
$this->file->setFlags(SplFileObject::SKIP_EMPTY|SplFileObject::READ_CSV|SplFileObject::READ_AHEAD|SplFileObject::DROP_NEW_LINE);
|
16 |
+
}
|
17 |
+
|
18 |
+
public function __destruct() {
|
19 |
+
$this->file = NULL;
|
20 |
+
}
|
21 |
+
|
22 |
+
public function get_header() {
|
23 |
+
$this->file->rewind();
|
24 |
+
$row = $this->file->current();
|
25 |
+
return $row;
|
26 |
+
}
|
27 |
+
|
28 |
+
public function set_row( $row_number ) {
|
29 |
+
$this->file->seek($row_number);
|
30 |
+
}
|
31 |
+
|
32 |
+
public function read_row( $row_number ) {
|
33 |
+
$this->set_row($row_number);
|
34 |
+
return $this->read_next_row();
|
35 |
+
}
|
36 |
+
|
37 |
+
public function read_next_row() {
|
38 |
+
$this->last_line_read = $this->file->key();
|
39 |
+
if ( !$this->file->valid() ) {
|
40 |
+
return array();
|
41 |
+
}
|
42 |
+
$row = $this->file->current();
|
43 |
+
$this->file->next();
|
44 |
+
return $row;
|
45 |
+
}
|
46 |
+
|
47 |
+
public function get_last_line_number_read() {
|
48 |
+
return $this->last_line_read;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function at_end_of_file() {
|
52 |
+
return !$this->file->valid();
|
53 |
+
}
|
54 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_FileUploader.php
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_FileUploader
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_FileUploader {
|
7 |
+
private $name = '';
|
8 |
+
private $type = '';
|
9 |
+
private $tmp_name = '';
|
10 |
+
private $error = 0;
|
11 |
+
private $size = 0;
|
12 |
+
|
13 |
+
public function __construct( $file_array ) {
|
14 |
+
$this->name = $file_array['name'];
|
15 |
+
$this->type = $file_array['type'];
|
16 |
+
$this->tmp_name = $file_array['tmp_name'];
|
17 |
+
$this->error = $file_array['error'];
|
18 |
+
$this->size = $file_array['size'];
|
19 |
+
}
|
20 |
+
|
21 |
+
public function save_file() {
|
22 |
+
$this->validate_temporary_file();
|
23 |
+
$this->permanently_save_file();
|
24 |
+
}
|
25 |
+
|
26 |
+
private function validate_temporary_file() {
|
27 |
+
if ( !file_exists($this->tmp_name) ) {
|
28 |
+
throw new RuntimeException( sprintf(__('Temporary file not found. Could not save %s.', 'tribe-events-calendar'), $this->name));
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
private function permanently_save_file() {
|
33 |
+
self::clear_old_files();
|
34 |
+
$moved = move_uploaded_file( $this->tmp_name, self::get_file_path() );
|
35 |
+
if ( !$moved ) {
|
36 |
+
throw new RuntimeException( sprintf(__('Could not save %s.', 'tribe-events-calendar'), $this->name));
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
public static function clear_old_files() {
|
41 |
+
$path = self::get_file_path();
|
42 |
+
if ( file_exists($path) ) {
|
43 |
+
unlink($path);
|
44 |
+
}
|
45 |
+
|
46 |
+
$dir = self::get_upload_directory();
|
47 |
+
rmdir($dir);
|
48 |
+
}
|
49 |
+
|
50 |
+
public static function get_file_path() {
|
51 |
+
$path = trailingslashit(self::get_upload_directory());
|
52 |
+
$path .= 'tribe-import.csv';
|
53 |
+
return $path;
|
54 |
+
}
|
55 |
+
|
56 |
+
private static function get_upload_directory() {
|
57 |
+
$upload_dir_array = wp_upload_dir();
|
58 |
+
$path = $upload_dir_array['basedir'];
|
59 |
+
$path = trailingslashit($path).'tribe-importer';
|
60 |
+
wp_mkdir_p($path);
|
61 |
+
return $path;
|
62 |
+
}
|
63 |
+
}
|
lib/io/csv/classes/TribeEventsImporter_Plugin.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class TribeEventsImporter_Plugin
|
5 |
+
*/
|
6 |
+
class TribeEventsImporter_Plugin {
|
7 |
+
private static $plugin_basename = '';
|
8 |
+
/** @var TribeEventsImporter_AdminPage */
|
9 |
+
private static $admin = NULL;
|
10 |
+
|
11 |
+
public static function path( $path ) {
|
12 |
+
$base = dirname(dirname(__FILE__));
|
13 |
+
$path = $base . DIRECTORY_SEPARATOR . $path;
|
14 |
+
return untrailingslashit($path);
|
15 |
+
}
|
16 |
+
|
17 |
+
public static function set_plugin_basename( $basename ) {
|
18 |
+
self::$plugin_basename = $basename;
|
19 |
+
}
|
20 |
+
|
21 |
+
public static function initialize_admin() {
|
22 |
+
self::$admin = new TribeEventsImporter_AdminPage();
|
23 |
+
add_action( 'admin_menu', array( self::$admin, 'register_admin_page' ) );
|
24 |
+
add_action( 'load-tribe_events_page_events-importer', array( self::$admin, 'handle_submission' ) );
|
25 |
+
}
|
26 |
+
|
27 |
+
public static function get_admin_object() {
|
28 |
+
return self::$admin;
|
29 |
+
}
|
30 |
+
}
|
lib/io/csv/ecp-events-importer.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( !function_exists( 'Tribe_Events_Importer_Load' ) ) {
|
4 |
+
|
5 |
+
function Tribe_Events_Importer_Load() {
|
6 |
+
TribeEventsImporter_Plugin::set_plugin_basename(plugin_basename(__FILE__));
|
7 |
+
if ( is_admin() ) {
|
8 |
+
add_action( 'init', array('TribeEventsImporter_Plugin', 'initialize_admin'), 10, 0 );
|
9 |
+
}
|
10 |
+
}
|
11 |
+
|
12 |
+
add_action( 'plugins_loaded', 'Tribe_Events_Importer_Load' );
|
13 |
+
|
14 |
+
function TribeEventsImporter_autoload( $classname ) {
|
15 |
+
if ( strpos( $classname, 'TribeEventsImporter' ) === 0 ) {
|
16 |
+
$path = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . $classname . '.php';
|
17 |
+
if ( file_exists( $path ) ) {
|
18 |
+
include( $path );
|
19 |
+
}
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
spl_autoload_register( 'TribeEventsImporter_autoload' );
|
24 |
+
}
|
lib/template-classes/month.php
CHANGED
@@ -92,18 +92,28 @@ if( !class_exists('Tribe_Events_Month_Template')){
|
|
92 |
**/
|
93 |
public function set_notices() {
|
94 |
global $wp_query;
|
|
|
|
|
95 |
// setup a search term for query or via ajax
|
96 |
-
if( !empty( $wp_query->query_vars['s'] )){
|
97 |
$search_term = $wp_query->query_vars['s'];
|
98 |
-
}
|
99 |
-
|
|
|
100 |
}
|
101 |
|
102 |
-
|
|
|
|
|
|
|
|
|
103 |
|
104 |
-
if(
|
105 |
TribeEvents::setNotice( 'event-search-no-results', sprintf( __( 'There were no results found for <strong>"%s"</strong> this month. Try searching next month.', 'tribe-events-calendar' ), esc_html( $search_term ) ) );
|
106 |
}
|
|
|
|
|
|
|
107 |
}
|
108 |
|
109 |
|
@@ -130,6 +140,13 @@ if( !class_exists('Tribe_Events_Month_Template')){
|
|
130 |
|
131 |
self::$event_daily_counts = $result['counts'];
|
132 |
self::$event_daily_ids = $result['event_ids'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
}
|
134 |
|
135 |
|
@@ -182,20 +199,20 @@ if( !class_exists('Tribe_Events_Month_Template')){
|
|
182 |
* @since 3.0
|
183 |
**/
|
184 |
public function setup_view() {
|
|
|
185 |
|
186 |
-
$
|
187 |
-
$tribe_ecp->date = isset( self::$args['eventDate'] ) ? self::$args['eventDate'] : tribe_get_month_view_date();
|
188 |
|
189 |
-
do_action('log', 'eventDate', 'tribe-events-query', $
|
190 |
|
191 |
// get all upcoming ids to hide so we're not querying 31 times
|
192 |
self::$hide_upcoming_ids = TribeEventsQuery::getHideFromUpcomingEvents();
|
193 |
|
194 |
-
|
|
|
195 |
|
196 |
$startOfWeek = get_option( 'start_of_week', 0 );
|
197 |
|
198 |
-
$first_day_of_month = date( 'Y-m-01', strtotime( $tribe_ecp->date ) );
|
199 |
|
200 |
self::get_daily_counts($first_day_of_month);
|
201 |
|
@@ -216,14 +233,14 @@ if( !class_exists('Tribe_Events_Month_Template')){
|
|
216 |
$days = array();
|
217 |
|
218 |
// setup counters
|
219 |
-
$rawOffset = date( 'w', strtotime($
|
220 |
$prev_month_offset = (int) ( ( $rawOffset < 0 ) ? $rawOffset + 7 : $rawOffset ); // month begins on day x
|
221 |
-
$days_in_month = (int) date( 't', strtotime($
|
222 |
$days_in_calendar = $days_in_month + $prev_month_offset;
|
223 |
while ($days_in_calendar % 7 > 0) {
|
224 |
$days_in_calendar++;
|
225 |
}
|
226 |
-
|
227 |
$cur_calendar_day = 0;
|
228 |
|
229 |
// fill month with required days for previous month
|
@@ -406,7 +423,7 @@ if( !class_exists('Tribe_Events_Month_Template')){
|
|
406 |
if ($day['events']->current_post + 1 == $day['events']->post_count) {
|
407 |
$classes[] = 'tribe-events-last';
|
408 |
}
|
409 |
-
|
410 |
return $classes;
|
411 |
}
|
412 |
} // class Tribe_Events_Month_Template
|
92 |
**/
|
93 |
public function set_notices() {
|
94 |
global $wp_query;
|
95 |
+
$search_term = '';
|
96 |
+
|
97 |
// setup a search term for query or via ajax
|
98 |
+
if ( ! empty( $wp_query->query_vars['s'] ) ) {
|
99 |
$search_term = $wp_query->query_vars['s'];
|
100 |
+
}
|
101 |
+
elseif ( ! empty($_REQUEST['tribe-bar-search'] ) ) {
|
102 |
+
$search_term = $_REQUEST['tribe-bar-search'];
|
103 |
}
|
104 |
|
105 |
+
// If there are no events we should be able to reduce the event_daily_counts array (the number of events in
|
106 |
+
// each day this month) to a single element with a value of 0. Where a keyword search returns no events then
|
107 |
+
// event_daily_counts may simply be empty.
|
108 |
+
$event_counts = array_unique(self::$event_daily_counts);
|
109 |
+
$no_events = ( 1 === count($event_counts) && 0 === current($event_counts) ) || empty(self::$event_daily_counts);
|
110 |
|
111 |
+
if ( $no_events && ! empty($search_term)) {
|
112 |
TribeEvents::setNotice( 'event-search-no-results', sprintf( __( 'There were no results found for <strong>"%s"</strong> this month. Try searching next month.', 'tribe-events-calendar' ), esc_html( $search_term ) ) );
|
113 |
}
|
114 |
+
elseif ( $no_events ) {
|
115 |
+
TribeEvents::setNotice( 'event-search-no-results', __( 'There were no results found.', 'tribe-events-calendar-pro' ) );
|
116 |
+
}
|
117 |
}
|
118 |
|
119 |
|
140 |
|
141 |
self::$event_daily_counts = $result['counts'];
|
142 |
self::$event_daily_ids = $result['event_ids'];
|
143 |
+
|
144 |
+
foreach ( self::$event_daily_counts as $daily_count ) {
|
145 |
+
if ( $daily_count > 0 ) {
|
146 |
+
add_filter( 'tribe_events_month_has_events', '__return_true' );
|
147 |
+
break;
|
148 |
+
}
|
149 |
+
}
|
150 |
}
|
151 |
|
152 |
|
199 |
* @since 3.0
|
200 |
**/
|
201 |
public function setup_view() {
|
202 |
+
$requested_date = isset( self::$args['eventDate'] ) ? self::$args['eventDate'] : tribe_get_month_view_date();
|
203 |
|
204 |
+
$first_day_of_month = date( 'Y-m-01', strtotime( $requested_date ) );
|
|
|
205 |
|
206 |
+
do_action('log', 'eventDate', 'tribe-events-query', $first_day_of_month);
|
207 |
|
208 |
// get all upcoming ids to hide so we're not querying 31 times
|
209 |
self::$hide_upcoming_ids = TribeEventsQuery::getHideFromUpcomingEvents();
|
210 |
|
211 |
+
$year = date('Y', strtotime($first_day_of_month));
|
212 |
+
$month = date('m', strtotime($first_day_of_month));
|
213 |
|
214 |
$startOfWeek = get_option( 'start_of_week', 0 );
|
215 |
|
|
|
216 |
|
217 |
self::get_daily_counts($first_day_of_month);
|
218 |
|
233 |
$days = array();
|
234 |
|
235 |
// setup counters
|
236 |
+
$rawOffset = date( 'w', strtotime($first_day_of_month) ) - $startOfWeek;
|
237 |
$prev_month_offset = (int) ( ( $rawOffset < 0 ) ? $rawOffset + 7 : $rawOffset ); // month begins on day x
|
238 |
+
$days_in_month = (int) date( 't', strtotime($first_day_of_month) );
|
239 |
$days_in_calendar = $days_in_month + $prev_month_offset;
|
240 |
while ($days_in_calendar % 7 > 0) {
|
241 |
$days_in_calendar++;
|
242 |
}
|
243 |
+
|
244 |
$cur_calendar_day = 0;
|
245 |
|
246 |
// fill month with required days for previous month
|
423 |
if ($day['events']->current_post + 1 == $day['events']->post_count) {
|
424 |
$classes[] = 'tribe-events-last';
|
425 |
}
|
426 |
+
|
427 |
return $classes;
|
428 |
}
|
429 |
} // class Tribe_Events_Month_Template
|
lib/template-classes/month.php.orig
DELETED
@@ -1,417 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @for Calendar Template
|
4 |
-
* This file contains the hook logic required to create an effective calendar month view.
|
5 |
-
*
|
6 |
-
* @package TribeEventsCalendar
|
7 |
-
* @since 2.1
|
8 |
-
* @author Modern Tribe Inc.
|
9 |
-
*
|
10 |
-
*/
|
11 |
-
|
12 |
-
if ( !defined('ABSPATH') ) { die('-1'); }
|
13 |
-
|
14 |
-
if( !class_exists('Tribe_Events_Month_Template')){
|
15 |
-
/**
|
16 |
-
* Grid view template class
|
17 |
-
*/
|
18 |
-
class Tribe_Events_Month_Template extends Tribe_Template_Factory {
|
19 |
-
private static $hide_upcoming_ids;
|
20 |
-
private static $today;
|
21 |
-
private static $current_month;
|
22 |
-
private static $current_year;
|
23 |
-
private static $event_daily_counts = array();
|
24 |
-
private static $event_daily_ids = array();
|
25 |
-
private static $first_day_of_month = null;
|
26 |
-
private static $posts_per_page_limit = 3;
|
27 |
-
private static $tribe_bar_args = array();
|
28 |
-
private static $cache_expiration = 3600;
|
29 |
-
private static $calendar_days = array();
|
30 |
-
private static $current_day = -1;
|
31 |
-
private static $current_week = -1;
|
32 |
-
protected static $args;
|
33 |
-
protected $body_class = 'events-gridview';
|
34 |
-
protected $excerpt_length = 30;
|
35 |
-
protected $asset_packages = array( 'ajax-calendar' );
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Set the notices used on month view
|
39 |
-
*
|
40 |
-
* @param array $args Set of $wp_query params for the month view, if none passed then will default to $wp_query
|
41 |
-
* @since 3.0
|
42 |
-
*/
|
43 |
-
public function __construct( $args = null ) {
|
44 |
-
if ( $args === null ) {
|
45 |
-
global $wp_query;
|
46 |
-
$args = $wp_query->query;
|
47 |
-
}
|
48 |
-
|
49 |
-
self::$args = $args;
|
50 |
-
self::$posts_per_page_limit = apply_filters( 'tribe_events_month_day_limit', tribe_get_option( 'monthEventAmount', '3' ) );
|
51 |
-
|
52 |
-
// don't enqueue scripts and js when we're not constructing month view,
|
53 |
-
// they'll have to be enqueued separately
|
54 |
-
if ( ! tribe_is_month() ) {
|
55 |
-
$this->asset_packages = array();
|
56 |
-
}
|
57 |
-
|
58 |
-
parent::__construct();
|
59 |
-
}
|
60 |
-
|
61 |
-
/**
|
62 |
-
* Add any special hooks for this view
|
63 |
-
*
|
64 |
-
* @return void
|
65 |
-
* @author Jessica Yazbek
|
66 |
-
* @since 3.0.2
|
67 |
-
**/
|
68 |
-
protected function hooks() {
|
69 |
-
parent::hooks();
|
70 |
-
|
71 |
-
// Since we set is_post_type_archive to true on month view, this prevents 'Events' from being added to the page title
|
72 |
-
add_filter('post_type_archive_title', '__return_false', 10);
|
73 |
-
}
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Unhook all the hooks set up on this view
|
77 |
-
*
|
78 |
-
* @return void
|
79 |
-
* @author
|
80 |
-
**/
|
81 |
-
protected function unhook() {
|
82 |
-
parent::unhook();
|
83 |
-
remove_filter('post_type_archive_title', '__return_false', 10);
|
84 |
-
}
|
85 |
-
|
86 |
-
|
87 |
-
/**
|
88 |
-
* Set the notices used on month view
|
89 |
-
*
|
90 |
-
* @return void
|
91 |
-
* @since 3.0
|
92 |
-
**/
|
93 |
-
public function set_notices() {
|
94 |
-
global $wp_query;
|
95 |
-
// setup a search term for query or via ajax
|
96 |
-
if( !empty( $wp_query->query_vars['s'] )){
|
97 |
-
$search_term = $wp_query->query_vars['s'];
|
98 |
-
} else if( !empty($_POST['tribe-bar-search'])) {
|
99 |
-
$search_term = $_POST['tribe-bar-search'];
|
100 |
-
}
|
101 |
-
|
102 |
-
$total_counts = array_unique(self::$event_daily_counts);
|
103 |
-
|
104 |
-
if( count($total_counts) < 2 && !empty($search_term)) {
|
105 |
-
TribeEvents::setNotice( 'event-search-no-results', sprintf( __( 'There were no results found for <strong>"%s"</strong> this month. Try searching next month.', 'tribe-events-calendar' ), esc_html( $search_term ) ) );
|
106 |
-
}
|
107 |
-
}
|
108 |
-
|
109 |
-
|
110 |
-
/**
|
111 |
-
* Get number of events per day
|
112 |
-
*
|
113 |
-
* @param int $date
|
114 |
-
* @return array
|
115 |
-
* @since 3.0
|
116 |
-
*/
|
117 |
-
private static function get_daily_counts( $date ) {
|
118 |
-
global $wp_query;
|
119 |
-
|
120 |
-
$count_args = self::$args;
|
121 |
-
|
122 |
-
$count_args['eventDisplay'] = 'month';
|
123 |
-
$count_args['eventDate'] = date( 'Y-m', strtotime( $date ) );
|
124 |
-
$count_args['start_date'] = tribe_event_beginning_of_day( $date );
|
125 |
-
$count_args['end_date'] = tribe_event_end_of_day( date('Y-m-t', strtotime( $date ) ) );
|
126 |
-
$count_args['hide_upcoming_ids'] = self::$hide_upcoming_ids;
|
127 |
-
$count_args['post_status'] = is_user_logged_in() ? array( 'publish', 'private' ) : 'publish';
|
128 |
-
|
129 |
-
$result = TribeEventsQuery::getEventCounts( $count_args );
|
130 |
-
|
131 |
-
self::$event_daily_counts = $result['counts'];
|
132 |
-
self::$event_daily_ids = $result['event_ids'];
|
133 |
-
}
|
134 |
-
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Get the view more link
|
138 |
-
*
|
139 |
-
* @param int $date
|
140 |
-
* @param array $args
|
141 |
-
* @return string
|
142 |
-
* @since 3.0
|
143 |
-
*/
|
144 |
-
private static function view_more_link( $date, $args ) {
|
145 |
-
if( !empty(self::$event_daily_counts[$date]) && (int) self::$event_daily_counts[$date] > self::$posts_per_page_limit ) {
|
146 |
-
$day_link = tribe_get_day_link($date);
|
147 |
-
if ( !empty($args) ) {
|
148 |
-
$day_link = add_query_arg($args, $day_link);
|
149 |
-
}
|
150 |
-
return $day_link;
|
151 |
-
}
|
152 |
-
return '';
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* @param string $date
|
157 |
-
* @return WP_Query
|
158 |
-
*/
|
159 |
-
private function get_daily_events( $date ) {
|
160 |
-
global $wp_query;
|
161 |
-
$tribe_ecp = TribeEvents::instance();
|
162 |
-
|
163 |
-
$post_status = is_user_logged_in() ? array( 'publish', 'private' ) : 'publish';
|
164 |
-
|
165 |
-
$args = wp_parse_args( array(
|
166 |
-
'post__in' => self::$event_daily_ids[$date],
|
167 |
-
'post_type' => TribeEvents::POSTTYPE,
|
168 |
-
'eventDisplay' => 'custom',
|
169 |
-
'eventDate' => $date,
|
170 |
-
'start_date' => tribe_event_beginning_of_day( $date ),
|
171 |
-
'end_date' => tribe_event_end_of_day( $date ),
|
172 |
-
// setup our own custom hide upcoming
|
173 |
-
'post__not_in' => self::$hide_upcoming_ids,
|
174 |
-
'hide_upcoming' => false,
|
175 |
-
'posts_per_page' => self::$posts_per_page_limit,
|
176 |
-
), self::$args );
|
177 |
-
|
178 |
-
$result = TribeEventsQuery::getEvents( $args, true );
|
179 |
-
return $result;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Sets up an array of $days based on the current query, that can be used in the calendar loop
|
184 |
-
*
|
185 |
-
* @return void
|
186 |
-
* @since 3.0
|
187 |
-
**/
|
188 |
-
public function setup_view() {
|
189 |
-
|
190 |
-
$tribe_ecp = TribeEvents::instance();
|
191 |
-
$tribe_ecp->date = isset( self::$args['eventDate'] ) ? self::$args['eventDate'] : tribe_get_month_view_date();
|
192 |
-
|
193 |
-
do_action('log', 'eventDate', 'tribe-events-query', $tribe_ecp->date);
|
194 |
-
|
195 |
-
// get all upcoming ids to hide so we're not querying 31 times
|
196 |
-
self::$hide_upcoming_ids = TribeEventsQuery::getHideFromUpcomingEvents();
|
197 |
-
|
198 |
-
list( $year, $month ) = explode( '-', $tribe_ecp->date );
|
199 |
-
|
200 |
-
$startOfWeek = get_option( 'start_of_week', 0 );
|
201 |
-
|
202 |
-
$first_day_of_month = date( 'Y-m-01', strtotime( $tribe_ecp->date ) );
|
203 |
-
|
204 |
-
self::get_daily_counts($first_day_of_month);
|
205 |
-
|
206 |
-
if ( empty(self::$tribe_bar_args) ) {
|
207 |
-
foreach ( $_REQUEST as $key => $value ) {
|
208 |
-
if ( $value && strpos($key, 'tribe-bar-') === 0 && $key != 'tribe-bar-date' ) {
|
209 |
-
self::$tribe_bar_args[$key] = $value;
|
210 |
-
}
|
211 |
-
}
|
212 |
-
}
|
213 |
-
|
214 |
-
// Var'ng up days, months and years
|
215 |
-
self::$today = date_i18n( 'd' );
|
216 |
-
self::$current_month = date_i18n( 'm' );
|
217 |
-
self::$current_year = date_i18n( 'Y' );
|
218 |
-
|
219 |
-
// single dimensional array of days for the month
|
220 |
-
$days = array();
|
221 |
-
|
222 |
-
// setup counters
|
223 |
-
$rawOffset = date( 'w', strtotime($tribe_ecp->date) ) - $startOfWeek;
|
224 |
-
$prev_month_offset = (int) ( ( $rawOffset < 0 ) ? $rawOffset + 7 : $rawOffset ); // month begins on day x
|
225 |
-
$days_in_month = (int) date( 't', strtotime($tribe_ecp->date) );
|
226 |
-
$days_in_calendar = $days_in_month + $prev_month_offset;
|
227 |
-
while ($days_in_calendar % 7 > 0) {
|
228 |
-
$days_in_calendar++;
|
229 |
-
}
|
230 |
-
$week = 0;
|
231 |
-
$cur_calendar_day = 0;
|
232 |
-
|
233 |
-
// fill month with required days for previous month
|
234 |
-
if ( $prev_month_offset > 0 )
|
235 |
-
$days = array_fill( 0, $prev_month_offset, array( 'date' => 'previous' ) );
|
236 |
-
|
237 |
-
// get $cur_calendar_day up to speed
|
238 |
-
$cur_calendar_day += $prev_month_offset;
|
239 |
-
|
240 |
-
// if (in_array(0, self::$event_daily_counts)) {
|
241 |
-
$empty_query = new WP_Query();
|
242 |
-
// }
|
243 |
-
|
244 |
-
// add days for this month
|
245 |
-
for ($i = 0; $i < $days_in_month; $i++) {
|
246 |
-
$day = $i + 1;
|
247 |
-
$date = date( 'Y-m-d', strtotime("$year-$month-$day"));
|
248 |
-
|
249 |
-
$total_events = ! empty( self::$event_daily_counts[$date] ) ? self::$event_daily_counts[$date] : 0;
|
250 |
-
|
251 |
-
$days[] = array(
|
252 |
-
'daynum' => $day,
|
253 |
-
'date' => $date,
|
254 |
-
'events' => $total_events ? self::get_daily_events( $date ) : $empty_query,
|
255 |
-
'total_events' => $total_events,
|
256 |
-
'view_more' => self::view_more_link( $date, self::$tribe_bar_args ),
|
257 |
-
);
|
258 |
-
}
|
259 |
-
|
260 |
-
// get $cur_calendar_day up to speed
|
261 |
-
$cur_calendar_day += $days_in_month;
|
262 |
-
|
263 |
-
// check if $cur_calendar_day is less than $days_in_calendar, if so, add days for next month
|
264 |
-
if ($cur_calendar_day < $days_in_calendar) {
|
265 |
-
$days = array_merge($days, array_fill($cur_calendar_day, $days_in_calendar - $cur_calendar_day, array('date' => 'next')));
|
266 |
-
}
|
267 |
-
|
268 |
-
// store set of found days for use in calendar loop functions
|
269 |
-
self::$calendar_days = $days;
|
270 |
-
}
|
271 |
-
|
272 |
-
/**
|
273 |
-
* Checks whether there are more calendar days to display
|
274 |
-
*
|
275 |
-
* @return bool True if calendar days are available, false if not.
|
276 |
-
* @since 3.0
|
277 |
-
**/
|
278 |
-
public static function have_days() {
|
279 |
-
if ( self::$current_day + 1 < count( self::$calendar_days ) ) {
|
280 |
-
return true;
|
281 |
-
} elseif ( self::$current_day + 1 == count( self::$calendar_days ) && count( self::$calendar_days ) > 0 ) {
|
282 |
-
do_action_ref_array('tribe_events_calendar_loop_end', array(&$this));
|
283 |
-
// Do some cleaning up after the loop
|
284 |
-
self::rewind_days();
|
285 |
-
}
|
286 |
-
return false;
|
287 |
-
}
|
288 |
-
|
289 |
-
/**
|
290 |
-
* Advances the internal day counter (and week counter, if appropriate)
|
291 |
-
*
|
292 |
-
* @return void
|
293 |
-
* @since 3.0
|
294 |
-
**/
|
295 |
-
public static function the_day() {
|
296 |
-
if ( self::have_days() ) {
|
297 |
-
self::$current_day++;
|
298 |
-
if ( self::$current_day % 7 == 0 ) {
|
299 |
-
self::$current_week++;
|
300 |
-
}
|
301 |
-
}
|
302 |
-
}
|
303 |
-
|
304 |
-
/**
|
305 |
-
* Rewind the posts and reset post index.
|
306 |
-
*
|
307 |
-
* @since 1.5.0
|
308 |
-
* @access public
|
309 |
-
*/
|
310 |
-
public static function rewind_days() {
|
311 |
-
self::$current_day = -1;
|
312 |
-
self::$current_week = -1;
|
313 |
-
}
|
314 |
-
|
315 |
-
/**
|
316 |
-
* Returns the current day according to self::$current_day
|
317 |
-
*
|
318 |
-
* @return int
|
319 |
-
* @since 3.0
|
320 |
-
**/
|
321 |
-
public static function get_current_day() {
|
322 |
-
if ( count( self::$calendar_days ) && self::$current_day < count( self::$calendar_days ) && isset( self::$calendar_days[self::$current_day] ) ) {
|
323 |
-
return self::$calendar_days[self::$current_day];
|
324 |
-
}
|
325 |
-
return false;
|
326 |
-
}
|
327 |
-
|
328 |
-
/**
|
329 |
-
* Generates and returns a set of classes for the current day
|
330 |
-
*
|
331 |
-
* @return string Classes
|
332 |
-
* @since 3.0
|
333 |
-
**/
|
334 |
-
public static function day_classes() {
|
335 |
-
$ppf = '';
|
336 |
-
$calendar_day = self::$calendar_days[self::$current_day];
|
337 |
-
// echo $calendar_day['date'];
|
338 |
-
if ($calendar_day['date'] == 'previous' || $calendar_day['date'] == 'next') {
|
339 |
-
$ppf = 'tribe-events-othermonth';
|
340 |
-
} else {
|
341 |
-
$ppf = 'tribe-events-thismonth';
|
342 |
-
list ($year, $month, $day) = explode('-', $calendar_day['date']);
|
343 |
-
if ( self::$current_month == $month && self::$current_year == $year) {
|
344 |
-
// Past, Present, Future class
|
345 |
-
if ( self::$today == $day ) {
|
346 |
-
$ppf .= ' tribe-events-present';
|
347 |
-
} else if ( self::$today > $day ) {
|
348 |
-
$ppf .= ' tribe-events-past';
|
349 |
-
} else if ( self::$today < $day ) {
|
350 |
-
$ppf .= ' tribe-events-future';
|
351 |
-
}
|
352 |
-
} else if ( self::$current_month > $month && self::$current_year == $year || self::$current_year > $year ) {
|
353 |
-
$ppf .= ' tribe-events-past';
|
354 |
-
} else if ( self::$current_month < $month && self::$current_year == $year || self::$current_year < $year ) {
|
355 |
-
$ppf .= ' tribe-events-future';
|
356 |
-
}
|
357 |
-
if ( $calendar_day['total_events'] > 0 ) {
|
358 |
-
$ppf .= ' tribe-events-has-events';
|
359 |
-
}
|
360 |
-
|
361 |
-
}
|
362 |
-
|
363 |
-
$column = (self::$current_day) - (self::$current_week * 7);
|
364 |
-
|
365 |
-
if ( $column > 0 && ( $column % 4 == 0 || $column % 5 == 0 || $column % 6 == 0 ) ) {
|
366 |
-
$ppf .= ' tribe-events-right';
|
367 |
-
}
|
368 |
-
return $ppf;
|
369 |
-
}
|
370 |
-
|
371 |
-
/**
|
372 |
-
* Returns self::$current_week
|
373 |
-
*
|
374 |
-
* @return int $current_week
|
375 |
-
* @since 3.0
|
376 |
-
**/
|
377 |
-
public static function get_current_week() {
|
378 |
-
return self::$current_week;
|
379 |
-
}
|
380 |
-
|
381 |
-
/**
|
382 |
-
* Generates and returns a set of classes for the current day
|
383 |
-
*
|
384 |
-
* @return string Classes
|
385 |
-
* @since 3.0
|
386 |
-
**/
|
387 |
-
public function event_classes( $classes ) {
|
388 |
-
|
389 |
-
$day = self::get_current_day();
|
390 |
-
|
391 |
-
if ( !isset( $day['events'] ) )
|
392 |
-
return $classes;
|
393 |
-
|
394 |
-
$post = $day['events']->post;
|
395 |
-
|
396 |
-
// Get our wrapper classes (for event categories, organizer, venue, and defaults)
|
397 |
-
$classes = array('hentry', 'vevent');
|
398 |
-
$tribe_cat_slugs = tribe_get_event_cat_slugs( $post->ID );
|
399 |
-
foreach( $tribe_cat_slugs as $tribe_cat_slug ) {
|
400 |
-
$classes[] = 'tribe-events-category-'. $tribe_cat_slug;
|
401 |
-
}
|
402 |
-
$classes = array_merge($classes, get_post_class('', $post->ID));
|
403 |
-
if ( $venue_id = tribe_get_venue_id($post->ID) ) {
|
404 |
-
$classes[] = 'tribe-events-venue-'. $venue_id;
|
405 |
-
}
|
406 |
-
if ( $organizer_id = tribe_get_organizer_id($post->ID) ) {
|
407 |
-
$classes[] = 'tribe-events-organizer-'. $organizer_id;
|
408 |
-
}
|
409 |
-
|
410 |
-
if ($day['events']->current_post + 1 == $day['events']->post_count) {
|
411 |
-
$classes[] = 'tribe-events-last';
|
412 |
-
}
|
413 |
-
|
414 |
-
return $classes;
|
415 |
-
}
|
416 |
-
} // class Tribe_Events_Month_Template
|
417 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/template-classes/single-event.php
CHANGED
@@ -91,14 +91,15 @@ if( !class_exists('Tribe_Events_Single_Event_Template')){
|
|
91 |
|
92 |
parent::set_notices();
|
93 |
|
|
|
|
|
94 |
// Check if event has passed
|
95 |
$gmt_offset = ( get_option( 'gmt_offset' ) >= '0' ) ? ' +' . get_option( 'gmt_offset' ) : " " . get_option( 'gmt_offset' );
|
96 |
$gmt_offset = str_replace( array( '.25', '.5', '.75' ), array( ':15', ':30', ':45' ), $gmt_offset );
|
97 |
|
98 |
-
if ( !tribe_is_showing_all() && strtotime( tribe_get_end_date(
|
99 |
TribeEvents::setNotice( 'event-past', __( 'This event has passed.', 'tribe-events-calendar' ) );
|
100 |
}
|
101 |
}
|
102 |
-
|
103 |
}
|
104 |
}
|
91 |
|
92 |
parent::set_notices();
|
93 |
|
94 |
+
global $post;
|
95 |
+
|
96 |
// Check if event has passed
|
97 |
$gmt_offset = ( get_option( 'gmt_offset' ) >= '0' ) ? ' +' . get_option( 'gmt_offset' ) : " " . get_option( 'gmt_offset' );
|
98 |
$gmt_offset = str_replace( array( '.25', '.5', '.75' ), array( ':15', ':30', ':45' ), $gmt_offset );
|
99 |
|
100 |
+
if ( !tribe_is_showing_all() && strtotime( tribe_get_end_date( $post, false, 'Y-m-d G:i' ) . $gmt_offset ) <= time() ) {
|
101 |
TribeEvents::setNotice( 'event-past', __( 'This event has passed.', 'tribe-events-calendar' ) );
|
102 |
}
|
103 |
}
|
|
|
104 |
}
|
105 |
}
|
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.
|
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/';
|
@@ -180,6 +180,9 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
180 |
$this->pluginPath = trailingslashit( dirname( dirname(__FILE__) ) );
|
181 |
$this->pluginDir = trailingslashit( basename( $this->pluginPath ) );
|
182 |
$this->pluginUrl = plugins_url().'/'.$this->pluginDir;
|
|
|
|
|
|
|
183 |
if (self::supportedVersion('wordpress') && self::supportedVersion('php')) {
|
184 |
|
185 |
if ( is_admin() && ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) ) {
|
@@ -190,7 +193,6 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
190 |
$this->loadLibraries();
|
191 |
} else {
|
192 |
// Either PHP or WordPress version is inadequate so we simply return an error.
|
193 |
-
add_action('init', array($this,'loadTextDomain'));
|
194 |
add_action('admin_head', array($this,'notSupportedError'));
|
195 |
}
|
196 |
}
|
@@ -260,6 +262,9 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
260 |
require_once( 'tickets/tribe-tickets.php' );
|
261 |
require_once( 'tickets/tribe-tickets-metabox.php' );
|
262 |
|
|
|
|
|
|
|
263 |
// Load multisite defaults
|
264 |
if ( is_multisite() ) {
|
265 |
$tribe_events_mu_defaults = array();
|
@@ -374,7 +379,6 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
374 |
add_action( 'save_post', array( $this, 'save_organizer_data' ), 16, 2 );
|
375 |
add_action( 'save_post', array( $this, 'addToPostAuditTrail' ), 10, 2 );
|
376 |
add_action( 'publish_'.self::POSTTYPE, array( $this, 'publishAssociatedTypes'), 25, 2 );
|
377 |
-
add_action( 'pre_get_posts', array( $this, 'setDate' ));
|
378 |
add_action( 'parse_query', array( $this, 'setDisplay' ), 51, 0);
|
379 |
add_action( 'tribe_events_post_errors', array( 'TribeEventsPostException', 'displayMessage' ) );
|
380 |
add_action( 'tribe_settings_top', array( 'TribeEventsOptionsException', 'displayMessage') );
|
@@ -401,6 +405,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
401 |
|
402 |
// noindex grid view
|
403 |
add_action('wp_head', array( $this, 'noindex_months' ) );
|
|
|
404 |
add_action( 'plugin_row_meta', array( $this, 'addMetaLinks' ), 10, 2 );
|
405 |
// organizer and venue
|
406 |
if( !defined('TRIBE_HIDE_UPSELL') || !TRIBE_HIDE_UPSELL ) {
|
@@ -476,17 +481,30 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
476 |
* Add code to tell search engines not to index the grid view of the
|
477 |
* calendar. Users were seeing 100s of months being indexed.
|
478 |
*/
|
479 |
-
function noindex_months() {
|
480 |
if (get_query_var('eventDisplay') == 'month') {
|
481 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
482 |
}
|
483 |
}
|
484 |
|
|
|
|
|
|
|
|
|
|
|
485 |
/**
|
486 |
* Run on applied action init
|
487 |
*/
|
488 |
public function init() {
|
489 |
-
$this->loadTextDomain();
|
490 |
$this->pluginName = __( 'The Events Calendar', 'tribe-events-calendar' );
|
491 |
$this->rewriteSlug = $this->getRewriteSlug();
|
492 |
$this->rewriteSlugSingular = $this->getRewriteSlugSingular();
|
@@ -1991,6 +2009,20 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
1991 |
));
|
1992 |
}
|
1993 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1994 |
/**
|
1995 |
* Save hidden tabs
|
1996 |
*
|
@@ -2117,29 +2149,6 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
2117 |
}
|
2118 |
}
|
2119 |
|
2120 |
-
/**
|
2121 |
-
* Set the date property of the main class instance.
|
2122 |
-
*
|
2123 |
-
* @param WP_Query $query The current query.
|
2124 |
-
* @return void
|
2125 |
-
*/
|
2126 |
-
public function setDate($query) {
|
2127 |
-
if ($query->tribe_is_event_query) {
|
2128 |
-
if ( $query->get('eventDisplay') == 'month' ) {
|
2129 |
-
$this->date = $query->get('eventDate') . "-01";
|
2130 |
-
} else if ( $query->get('eventDate') ) {
|
2131 |
-
$this->date = $query->get('eventDate');
|
2132 |
-
} else if ( $query->get('eventDisplay') == 'month' ) {
|
2133 |
-
$date = date_i18n( TribeDateUtils::DBDATEFORMAT );
|
2134 |
-
$this->date = substr_replace( $date, '01', -2 );
|
2135 |
-
} else if (is_singular() && $query->get('eventDate') ) {
|
2136 |
-
$this->date = $query->get('eventDate');
|
2137 |
-
} else if (!is_singular()) { // don't set date for single event unless recurring
|
2138 |
-
$this->date = date(TribeDateUtils::DBDATETIMEFORMAT);
|
2139 |
-
}
|
2140 |
-
}
|
2141 |
-
}
|
2142 |
-
|
2143 |
/**
|
2144 |
* Set the displaying class property.
|
2145 |
*
|
@@ -2174,7 +2183,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
2174 |
!tribe_is_month() &&
|
2175 |
!tribe_is_by_date() ) {
|
2176 |
|
2177 |
-
$startTime =
|
2178 |
$startTime = TribeDateUtils::timeOnly($startTime);
|
2179 |
$post->EventStartDate = TribeDateUtils::addTimeToDate($post->EventStartDate, $startTime);
|
2180 |
$post->EventEndDate = date( TribeDateUtils::DBDATETIMEFORMAT, strtotime($post->EventStartDate) + get_post_meta($post->ID, '_EventDuration', true) );
|
@@ -3455,10 +3464,16 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
3455 |
* Given a date (YYYY-MM-DD), returns the first of the next month
|
3456 |
* hat tip to Dan Bernadict for method cleanup
|
3457 |
*
|
3458 |
-
* @param date
|
3459 |
-
* @return date
|
|
|
3460 |
*/
|
3461 |
public function nextMonth( $date ) {
|
|
|
|
|
|
|
|
|
|
|
3462 |
return date( 'Y-m', strtotime( $date . ' +1 month' ) );
|
3463 |
}
|
3464 |
|
@@ -3466,10 +3481,16 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
3466 |
* Given a date (YYYY-MM-DD), return the first of the previous month
|
3467 |
* hat tip to Dan Bernadict for method cleanup
|
3468 |
*
|
3469 |
-
* @param date
|
3470 |
-
* @return date
|
|
|
3471 |
*/
|
3472 |
public function previousMonth( $date ) {
|
|
|
|
|
|
|
|
|
|
|
3473 |
return date( 'Y-m', strtotime( $date . ' -1 month' ) );
|
3474 |
}
|
3475 |
|
@@ -3937,7 +3958,7 @@ if ( !class_exists( 'TribeEvents' ) ) {
|
|
3937 |
*
|
3938 |
* @return void
|
3939 |
*/
|
3940 |
-
public function resetActivationMessage() {
|
3941 |
$tec = TribeEvents::instance();
|
3942 |
$tec->setOption( 'welcome_notice', false );
|
3943 |
}
|
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.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/';
|
180 |
$this->pluginPath = trailingslashit( dirname( dirname(__FILE__) ) );
|
181 |
$this->pluginDir = trailingslashit( basename( $this->pluginPath ) );
|
182 |
$this->pluginUrl = plugins_url().'/'.$this->pluginDir;
|
183 |
+
|
184 |
+
add_action( 'init', array( $this, 'loadTextDomain' ), 1 );
|
185 |
+
|
186 |
if (self::supportedVersion('wordpress') && self::supportedVersion('php')) {
|
187 |
|
188 |
if ( is_admin() && ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) ) {
|
193 |
$this->loadLibraries();
|
194 |
} else {
|
195 |
// Either PHP or WordPress version is inadequate so we simply return an error.
|
|
|
196 |
add_action('admin_head', array($this,'notSupportedError'));
|
197 |
}
|
198 |
}
|
262 |
require_once( 'tickets/tribe-tickets.php' );
|
263 |
require_once( 'tickets/tribe-tickets-metabox.php' );
|
264 |
|
265 |
+
// CSV Importer
|
266 |
+
require_once( 'io/csv/ecp-events-importer.php' );
|
267 |
+
|
268 |
// Load multisite defaults
|
269 |
if ( is_multisite() ) {
|
270 |
$tribe_events_mu_defaults = array();
|
379 |
add_action( 'save_post', array( $this, 'save_organizer_data' ), 16, 2 );
|
380 |
add_action( 'save_post', array( $this, 'addToPostAuditTrail' ), 10, 2 );
|
381 |
add_action( 'publish_'.self::POSTTYPE, array( $this, 'publishAssociatedTypes'), 25, 2 );
|
|
|
382 |
add_action( 'parse_query', array( $this, 'setDisplay' ), 51, 0);
|
383 |
add_action( 'tribe_events_post_errors', array( 'TribeEventsPostException', 'displayMessage' ) );
|
384 |
add_action( 'tribe_settings_top', array( 'TribeEventsOptionsException', 'displayMessage') );
|
405 |
|
406 |
// noindex grid view
|
407 |
add_action('wp_head', array( $this, 'noindex_months' ) );
|
408 |
+
add_action( 'wp', array( $this, 'issue_noindex_on_404' ), 10, 0 );
|
409 |
add_action( 'plugin_row_meta', array( $this, 'addMetaLinks' ), 10, 2 );
|
410 |
// organizer and venue
|
411 |
if( !defined('TRIBE_HIDE_UPSELL') || !TRIBE_HIDE_UPSELL ) {
|
481 |
* Add code to tell search engines not to index the grid view of the
|
482 |
* calendar. Users were seeing 100s of months being indexed.
|
483 |
*/
|
484 |
+
public function noindex_months() {
|
485 |
if (get_query_var('eventDisplay') == 'month') {
|
486 |
+
$this->print_noindex_meta();
|
487 |
+
}
|
488 |
+
}
|
489 |
+
|
490 |
+
public function issue_noindex_on_404() {
|
491 |
+
if ( is_404() ) {
|
492 |
+
global $wp_query;
|
493 |
+
if ( !empty($wp_query->tribe_is_event_query) ) {
|
494 |
+
add_action( 'wp_head', array( $this, 'print_noindex_meta' ), 10, 0 );
|
495 |
+
}
|
496 |
}
|
497 |
}
|
498 |
|
499 |
+
|
500 |
+
public function print_noindex_meta() {
|
501 |
+
echo ' <meta name="robots" content="noindex,follow" />'."\n";
|
502 |
+
}
|
503 |
+
|
504 |
/**
|
505 |
* Run on applied action init
|
506 |
*/
|
507 |
public function init() {
|
|
|
508 |
$this->pluginName = __( 'The Events Calendar', 'tribe-events-calendar' );
|
509 |
$this->rewriteSlug = $this->getRewriteSlug();
|
510 |
$this->rewriteSlugSingular = $this->getRewriteSlugSingular();
|
2009 |
));
|
2010 |
}
|
2011 |
|
2012 |
+
/**
|
2013 |
+
* An event can have one or more start dates. This gives
|
2014 |
+
* the earliest of those.
|
2015 |
+
* @param int $post_id
|
2016 |
+
* @return string The date string for the earliest occurrence of the event
|
2017 |
+
*/
|
2018 |
+
public static function get_series_start_date( $post_id ) {
|
2019 |
+
$start_dates = get_post_meta( $post_id, '_EventStartDate', false );
|
2020 |
+
if ( $start_dates ) {
|
2021 |
+
return min($start_dates);
|
2022 |
+
}
|
2023 |
+
return '';
|
2024 |
+
}
|
2025 |
+
|
2026 |
/**
|
2027 |
* Save hidden tabs
|
2028 |
*
|
2149 |
}
|
2150 |
}
|
2151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2152 |
/**
|
2153 |
* Set the displaying class property.
|
2154 |
*
|
2183 |
!tribe_is_month() &&
|
2184 |
!tribe_is_by_date() ) {
|
2185 |
|
2186 |
+
$startTime = self::get_series_start_date($post->ID);
|
2187 |
$startTime = TribeDateUtils::timeOnly($startTime);
|
2188 |
$post->EventStartDate = TribeDateUtils::addTimeToDate($post->EventStartDate, $startTime);
|
2189 |
$post->EventEndDate = date( TribeDateUtils::DBDATETIMEFORMAT, strtotime($post->EventStartDate) + get_post_meta($post->ID, '_EventDuration', true) );
|
3464 |
* Given a date (YYYY-MM-DD), returns the first of the next month
|
3465 |
* hat tip to Dan Bernadict for method cleanup
|
3466 |
*
|
3467 |
+
* @param string $date
|
3468 |
+
* @return string Next month's date
|
3469 |
+
* @throws OverflowException
|
3470 |
*/
|
3471 |
public function nextMonth( $date ) {
|
3472 |
+
if ( PHP_INT_SIZE <= 4 ) {
|
3473 |
+
if ( date('Y-m-d', strtotime($date)) > '2037-11-30' ) {
|
3474 |
+
throw new OverflowException(__('Date out of range.', 'the-events-calendar'));
|
3475 |
+
}
|
3476 |
+
}
|
3477 |
return date( 'Y-m', strtotime( $date . ' +1 month' ) );
|
3478 |
}
|
3479 |
|
3481 |
* Given a date (YYYY-MM-DD), return the first of the previous month
|
3482 |
* hat tip to Dan Bernadict for method cleanup
|
3483 |
*
|
3484 |
+
* @param string $date
|
3485 |
+
* @return string Previous month's date
|
3486 |
+
* @throws OverflowException
|
3487 |
*/
|
3488 |
public function previousMonth( $date ) {
|
3489 |
+
if ( PHP_INT_SIZE <= 4 ) {
|
3490 |
+
if ( date('Y-m-d', strtotime($date)) < '1902-02-01' ) {
|
3491 |
+
throw new OverflowException(__('Date out of range.', 'the-events-calendar'));
|
3492 |
+
}
|
3493 |
+
}
|
3494 |
return date( 'Y-m', strtotime( $date . ' -1 month' ) );
|
3495 |
}
|
3496 |
|
3958 |
*
|
3959 |
* @return void
|
3960 |
*/
|
3961 |
+
public static function resetActivationMessage() {
|
3962 |
$tec = TribeEvents::instance();
|
3963 |
$tec->setOption( 'welcome_notice', false );
|
3964 |
}
|
lib/tickets/tribe-tickets.php
CHANGED
@@ -201,7 +201,7 @@ if ( ! class_exists( 'TribeEventsTickets' ) ) {
|
|
201 |
* @abstract
|
202 |
* @return mixed
|
203 |
*/
|
204 |
-
|
205 |
|
206 |
// end API Definitions
|
207 |
|
@@ -569,7 +569,8 @@ if ( ! class_exists( 'TribeEventsTickets' ) ) {
|
|
569 |
*/
|
570 |
public function generate_tickets_email_content( $tickets ) {
|
571 |
ob_start();
|
572 |
-
include TribeEventsTemplates::getTemplateHierarchy( 'email.php', array('
|
|
|
573 |
return ob_get_clean();
|
574 |
}
|
575 |
|
201 |
* @abstract
|
202 |
* @return mixed
|
203 |
*/
|
204 |
+
static function get_instance() {}
|
205 |
|
206 |
// end API Definitions
|
207 |
|
569 |
*/
|
570 |
public function generate_tickets_email_content( $tickets ) {
|
571 |
ob_start();
|
572 |
+
include TribeEventsTemplates::getTemplateHierarchy( 'tickets/email.php', array( 'namespace' => 'tickets' ) );
|
573 |
+
|
574 |
return ob_get_clean();
|
575 |
}
|
576 |
|
lib/tribe-admin-events-list.class.php
CHANGED
@@ -21,8 +21,8 @@ if (!class_exists('TribeEventsAdminList')) {
|
|
21 |
public static function init() {
|
22 |
if ( is_admin() && ! ( defined('DOING_AJAX') && DOING_AJAX ) ) {
|
23 |
add_filter( 'posts_distinct', array( __CLASS__, 'events_search_distinct'));
|
24 |
-
add_filter( 'posts_join', array( __CLASS__, 'events_search_join' ) );
|
25 |
-
add_filter( 'posts_where', array( __CLASS__, 'events_search_where' ) );
|
26 |
add_filter( 'posts_orderby', array( __CLASS__, 'events_search_orderby' ) );
|
27 |
add_filter( 'posts_groupby', array( __CLASS__, 'events_search_groupby' ) );
|
28 |
add_filter( 'posts_fields', array( __CLASS__, 'events_search_fields' ) );
|
@@ -110,31 +110,40 @@ if (!class_exists('TribeEventsAdminList')) {
|
|
110 |
$fields .= ", {$wpdb->postmeta}.meta_value as EventStartDate, IFNULL(DATE_ADD(CAST({$wpdb->postmeta}.meta_value AS DATETIME), INTERVAL eventDuration.meta_value SECOND), eventEnd.meta_value) as EventEndDate ";
|
111 |
return $fields;
|
112 |
}
|
|
|
113 |
/**
|
114 |
-
* Join filter for admin
|
|
|
|
|
|
|
115 |
*
|
116 |
-
* @param string join clause
|
117 |
* @return string modified join clause
|
118 |
*/
|
119 |
-
public static function events_search_join( $join ) {
|
120 |
global $wpdb;
|
121 |
-
if ( get_query_var('post_type') != TribeEvents::POSTTYPE )
|
122 |
return $join;
|
123 |
-
|
|
|
|
|
|
|
124 |
$join .= " LEFT JOIN {$wpdb->postmeta} as eventDuration ON( {$wpdb->posts}.ID = eventDuration.post_id AND eventDuration.meta_key = '_EventDuration') ";
|
125 |
$join .= " LEFT JOIN {$wpdb->postmeta} as eventEnd ON( {$wpdb->posts}.ID = eventEnd.post_id AND eventEnd.meta_key = '_EventEndDate') ";
|
|
|
126 |
return $join;
|
127 |
}
|
128 |
/**
|
129 |
* Where filter for admin queries
|
130 |
*
|
131 |
* @param string where clause
|
|
|
132 |
* @return string modified where clause
|
133 |
*/
|
134 |
-
public static function events_search_where( $where ) {
|
135 |
-
if ( get_query_var('post_type') != TribeEvents::POSTTYPE )
|
136 |
return $where;
|
137 |
-
|
|
|
138 |
|
139 |
//$where .= ' AND ( eventStart.meta_key = "_EventStartDate" AND eventDuration.meta_key = "_EventDuration" ) ';
|
140 |
|
@@ -270,12 +279,19 @@ if (!class_exists('TribeEventsAdminList')) {
|
|
270 |
echo ( $event_cats ) ? strip_tags( $event_cats ) : '—';
|
271 |
}
|
272 |
if ( $column_id == 'start-date' ) {
|
273 |
-
|
274 |
-
if ( !
|
|
|
|
|
|
|
|
|
275 |
}
|
276 |
if ( $column_id == 'end-date' ) {
|
277 |
-
|
278 |
-
|
|
|
|
|
|
|
279 |
}
|
280 |
|
281 |
if ( $column_id == 'recurring' ) {
|
21 |
public static function init() {
|
22 |
if ( is_admin() && ! ( defined('DOING_AJAX') && DOING_AJAX ) ) {
|
23 |
add_filter( 'posts_distinct', array( __CLASS__, 'events_search_distinct'));
|
24 |
+
add_filter( 'posts_join', array( __CLASS__, 'events_search_join' ), 10, 2 );
|
25 |
+
add_filter( 'posts_where', array( __CLASS__, 'events_search_where' ), 10, 2 );
|
26 |
add_filter( 'posts_orderby', array( __CLASS__, 'events_search_orderby' ) );
|
27 |
add_filter( 'posts_groupby', array( __CLASS__, 'events_search_groupby' ) );
|
28 |
add_filter( 'posts_fields', array( __CLASS__, 'events_search_fields' ) );
|
110 |
$fields .= ", {$wpdb->postmeta}.meta_value as EventStartDate, IFNULL(DATE_ADD(CAST({$wpdb->postmeta}.meta_value AS DATETIME), INTERVAL eventDuration.meta_value SECOND), eventEnd.meta_value) as EventEndDate ";
|
111 |
return $fields;
|
112 |
}
|
113 |
+
|
114 |
/**
|
115 |
+
* Join filter for admin queries
|
116 |
+
*
|
117 |
+
* @param $join
|
118 |
+
* @param $query WP_Query
|
119 |
*
|
|
|
120 |
* @return string modified join clause
|
121 |
*/
|
122 |
+
public static function events_search_join( $join, $query ) {
|
123 |
global $wpdb;
|
124 |
+
if ( get_query_var('post_type') != TribeEvents::POSTTYPE )
|
125 |
return $join;
|
126 |
+
|
127 |
+
if ( $query->is_main_query() )
|
128 |
+
$join .= " LEFT JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND ({$wpdb->postmeta}.meta_key = '_EventStartDate' or {$wpdb->postmeta}.meta_key is null) ";
|
129 |
+
|
130 |
$join .= " LEFT JOIN {$wpdb->postmeta} as eventDuration ON( {$wpdb->posts}.ID = eventDuration.post_id AND eventDuration.meta_key = '_EventDuration') ";
|
131 |
$join .= " LEFT JOIN {$wpdb->postmeta} as eventEnd ON( {$wpdb->posts}.ID = eventEnd.post_id AND eventEnd.meta_key = '_EventEndDate') ";
|
132 |
+
|
133 |
return $join;
|
134 |
}
|
135 |
/**
|
136 |
* Where filter for admin queries
|
137 |
*
|
138 |
* @param string where clause
|
139 |
+
* @param WP_Query query
|
140 |
* @return string modified where clause
|
141 |
*/
|
142 |
+
public static function events_search_where( $where, $query ) {
|
143 |
+
if ( get_query_var('post_type') != TribeEvents::POSTTYPE )
|
144 |
return $where;
|
145 |
+
|
146 |
+
global $wpdb;
|
147 |
|
148 |
//$where .= ' AND ( eventStart.meta_key = "_EventStartDate" AND eventDuration.meta_key = "_EventDuration" ) ';
|
149 |
|
279 |
echo ( $event_cats ) ? strip_tags( $event_cats ) : '—';
|
280 |
}
|
281 |
if ( $column_id == 'start-date' ) {
|
282 |
+
|
283 |
+
if ( ! empty( self::$events_list[0]->EventStartDate ) )
|
284 |
+
echo tribe_event_format_date( strtotime( self::$events_list[0]->EventStartDate ), false );
|
285 |
+
|
286 |
+
if ( ! self::$end_col_active || ! self::$start_col_first )
|
287 |
+
self::advance_date();
|
288 |
}
|
289 |
if ( $column_id == 'end-date' ) {
|
290 |
+
if ( ! empty( self::$events_list[0]->EventEndDate ) )
|
291 |
+
echo tribe_event_format_date( strtotime( self::$events_list[0]->EventEndDate ), false );
|
292 |
+
|
293 |
+
if ( self::$start_col_first )
|
294 |
+
self::advance_date();
|
295 |
}
|
296 |
|
297 |
if ( $column_id == 'recurring' ) {
|
lib/tribe-date-utils.class.php
CHANGED
@@ -163,10 +163,35 @@ if(!class_exists('TribeDateUtils')) {
|
|
163 |
*
|
164 |
* @param int $curDate A timestamp.
|
165 |
* @return bool If the timestamp is a weekend.
|
166 |
-
*/
|
|
|
167 |
return in_array(date('N', $curdate), array(6,7));
|
168 |
}
|
169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
/**
|
171 |
* Gets the last day of the week in a month (ie the last Tuesday). Passing in -1 gives you the last day in the month.
|
172 |
*
|
@@ -214,5 +239,10 @@ if(!class_exists('TribeDateUtils')) {
|
|
214 |
return $number.(((strlen($number)>1)&&(substr($number,-2,1)=='1'))?
|
215 |
'th' : date("S",mktime(0,0,0,0,substr($number,-1),0)));
|
216 |
}
|
|
|
|
|
|
|
|
|
|
|
217 |
}
|
218 |
}
|
163 |
*
|
164 |
* @param int $curDate A timestamp.
|
165 |
* @return bool If the timestamp is a weekend.
|
166 |
+
*/
|
167 |
+
public static function isWeekend($curdate) {
|
168 |
return in_array(date('N', $curdate), array(6,7));
|
169 |
}
|
170 |
|
171 |
+
/**
|
172 |
+
* Checks if the specified date format contains any time formatting characters. Useful to determine if a date
|
173 |
+
* format relates only to the date.
|
174 |
+
*
|
175 |
+
* @param $format
|
176 |
+
* @return bool
|
177 |
+
*/
|
178 |
+
public static function formatContainsTime($format) {
|
179 |
+
$timeChars = array( 'a', 'A', 'B', 'g', 'G', 'h', 'H', 'i', 's', 'u', 'e', 'I', 'O', 'P', 'T', 'Z', 'c', 'r', 'U' );
|
180 |
+
$formatChars = str_split( $format );
|
181 |
+
$usesTime = array_intersect( $timeChars, $formatChars );
|
182 |
+
return 0 < count( $usesTime );
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Checks if the specified date format contains any year-related formatting characters.
|
187 |
+
*
|
188 |
+
* @param $format
|
189 |
+
* @return bool
|
190 |
+
*/
|
191 |
+
public static function formatContainsYear($format) {
|
192 |
+
return ( false !== strpos( $format, 'y' ) || false !== strpos( $format, 'Y' ) );
|
193 |
+
}
|
194 |
+
|
195 |
/**
|
196 |
* Gets the last day of the week in a month (ie the last Tuesday). Passing in -1 gives you the last day in the month.
|
197 |
*
|
239 |
return $number.(((strlen($number)>1)&&(substr($number,-2,1)=='1'))?
|
240 |
'th' : date("S",mktime(0,0,0,0,substr($number,-1),0)));
|
241 |
}
|
242 |
+
|
243 |
+
public static function numberToDay($number) {
|
244 |
+
$days = array(1 => "Monday", 2 => "Tuesday", 3 => "Wednesday", 4 => "Thursday", 5 => "Friday", 6 => "Saturday", 7 => "Sunday");
|
245 |
+
return $days[$number];
|
246 |
+
}
|
247 |
}
|
248 |
}
|
lib/tribe-event-api.class.php
CHANGED
@@ -101,7 +101,7 @@ if (!class_exists('TribeEventsAPI')) {
|
|
101 |
|
102 |
$data['EventDuration'] = strtotime($data['EventEndDate']) - $startTimestamp;
|
103 |
|
104 |
-
$old_data['EventStartDate'] =
|
105 |
|
106 |
update_post_meta( $event_id, '_EventShowMapLink', isset( $data['venue']['EventShowMapLink'] ) );
|
107 |
update_post_meta( $event_id, '_EventShowMap', isset( $data['venue']['EventShowMap'] ) );
|
@@ -130,7 +130,7 @@ if (!class_exists('TribeEventsAPI')) {
|
|
130 |
$cost = ( isset( $data['EventCost'] ) ) ? $data['EventCost'] : '';
|
131 |
$data['EventCost'] = $cost;
|
132 |
|
133 |
-
|
134 |
|
135 |
$cost = ( isset( $data['EventCost'] ) ) ? $data['EventCost'] : '';
|
136 |
$data['EventCost'] = $cost;
|
@@ -163,7 +163,7 @@ if (!class_exists('TribeEventsAPI')) {
|
|
163 |
wp_update_post( $update_event );
|
164 |
}
|
165 |
|
166 |
-
|
167 |
}
|
168 |
|
169 |
/**
|
101 |
|
102 |
$data['EventDuration'] = strtotime($data['EventEndDate']) - $startTimestamp;
|
103 |
|
104 |
+
$old_data['EventStartDate'] = TribeEvents::get_series_start_date($event_id);
|
105 |
|
106 |
update_post_meta( $event_id, '_EventShowMapLink', isset( $data['venue']['EventShowMapLink'] ) );
|
107 |
update_post_meta( $event_id, '_EventShowMap', isset( $data['venue']['EventShowMap'] ) );
|
130 |
$cost = ( isset( $data['EventCost'] ) ) ? $data['EventCost'] : '';
|
131 |
$data['EventCost'] = $cost;
|
132 |
|
133 |
+
do_action('tribe_events_event_save', $event_id);
|
134 |
|
135 |
$cost = ( isset( $data['EventCost'] ) ) ? $data['EventCost'] : '';
|
136 |
$data['EventCost'] = $cost;
|
163 |
wp_update_post( $update_event );
|
164 |
}
|
165 |
|
166 |
+
do_action( 'tribe_events_update_meta', $event_id, $data );
|
167 |
}
|
168 |
|
169 |
/**
|
lib/tribe-event-exception.class.php
CHANGED
@@ -12,7 +12,7 @@ if( !class_exists( 'TribeEventsPostException' ) ) {
|
|
12 |
* Display the exception message in the div #tribe-events-post-error
|
13 |
* @param int $post->ID
|
14 |
*/
|
15 |
-
public function displayMessage( $postId ) {
|
16 |
if( $error = get_post_meta( $postId, TribeEvents::EVENTSERROROPT, true ) ) : ?>
|
17 |
<script type="text/javascript">jQuery('#tribe-events-post-error').append('<h3><?php _e( 'Error', 'tribe-events-calendar' ); ?></h3><p>' + '<?php echo $error; ?>' + '</p>').show();</script>
|
18 |
<?php endif;
|
@@ -28,7 +28,7 @@ if( !class_exists( 'TribeEventsOptionsException' ) ) {
|
|
28 |
/**
|
29 |
* Display the exception message in the div #tribe-events-options-error
|
30 |
*/
|
31 |
-
public function displayMessage() {
|
32 |
$eventsOptions = get_option(TribeEvents::OPTIONNAME, array() );
|
33 |
if( isset($eventsOptions['error']) && $eventsOptions['error'] ) : ?>
|
34 |
<script type="text/javascript">jQuery('#tribe-events-options-error').append('<h3><?php _e( 'Error', 'tribe-events-calendar' ); ?></h3><p>' + '<?php echo $eventsOptions['error']; ?>' + '</p>').show();</script>
|
12 |
* Display the exception message in the div #tribe-events-post-error
|
13 |
* @param int $post->ID
|
14 |
*/
|
15 |
+
public static function displayMessage( $postId ) {
|
16 |
if( $error = get_post_meta( $postId, TribeEvents::EVENTSERROROPT, true ) ) : ?>
|
17 |
<script type="text/javascript">jQuery('#tribe-events-post-error').append('<h3><?php _e( 'Error', 'tribe-events-calendar' ); ?></h3><p>' + '<?php echo $error; ?>' + '</p>').show();</script>
|
18 |
<?php endif;
|
28 |
/**
|
29 |
* Display the exception message in the div #tribe-events-options-error
|
30 |
*/
|
31 |
+
public static function displayMessage() {
|
32 |
$eventsOptions = get_option(TribeEvents::OPTIONNAME, array() );
|
33 |
if( isset($eventsOptions['error']) && $eventsOptions['error'] ) : ?>
|
34 |
<script type="text/javascript">jQuery('#tribe-events-options-error').append('<h3><?php _e( 'Error', 'tribe-events-calendar' ); ?></h3><p>' + '<?php echo $eventsOptions['error']; ?>' + '</p>').show();</script>
|
lib/tribe-event-query.class.php
CHANGED
@@ -17,14 +17,6 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
17 |
public static $is_event_organizer;
|
18 |
public static $is_event_query;
|
19 |
|
20 |
-
/**
|
21 |
-
* Class Constructor
|
22 |
-
*
|
23 |
-
* @return void
|
24 |
-
*/
|
25 |
-
function __construct() {
|
26 |
-
add_action( 'tribe_events_init_pre_get_posts', array( __CLASS__, 'init' ) );
|
27 |
-
}
|
28 |
|
29 |
/**
|
30 |
* Initialize The Events Calendar query filters and post processing.
|
@@ -34,7 +26,6 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
34 |
public static function init() {
|
35 |
|
36 |
// if tribe event query add filters
|
37 |
-
add_action( 'parse_request', array( __CLASS__, 'parse_request' ), 50 );
|
38 |
add_action( 'parse_query', array( __CLASS__, 'parse_query' ), 50 );
|
39 |
add_action( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ), 50 );
|
40 |
|
@@ -46,26 +37,6 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
46 |
}
|
47 |
}
|
48 |
|
49 |
-
/**
|
50 |
-
* Add args to the main wordpress request
|
51 |
-
*
|
52 |
-
* @param $query_vars Array of args parsed from the main wp query
|
53 |
-
* @return array
|
54 |
-
* @author Jessica Yazbek
|
55 |
-
**/
|
56 |
-
public static function parse_request( $wpobj ) {
|
57 |
-
$request_vars = $wpobj->query_vars;
|
58 |
-
unset($request_vars['paged']);
|
59 |
-
if ( empty( $request_vars ) ) { // this is the home page
|
60 |
-
// check option for including events in the main wordpress loop, if true, add events post type
|
61 |
-
if ( tribe_get_option( 'showEventsInMainLoop', false ) ) {
|
62 |
-
$wpobj->query_vars['post_type'] = isset( $wpobj->query_vars['post_type'] ) ? (array) $wpobj->query_vars['post_type'] : array( 'post' );
|
63 |
-
$wpobj->query_vars['post_type'][] = TribeEvents::POSTTYPE;
|
64 |
-
}
|
65 |
-
}
|
66 |
-
// do_action( 'log', 'wpobj', 'default', $wpobj );
|
67 |
-
}
|
68 |
-
|
69 |
/**
|
70 |
* Set any query flags
|
71 |
*
|
@@ -75,16 +46,24 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
75 |
**/
|
76 |
public static function parse_query( $query ) {
|
77 |
|
|
|
|
|
|
|
|
|
78 |
if ( $query->is_search && $query->get( 'post_type' ) == '' ) {
|
79 |
$query->set( 'post_type', 'any' );
|
80 |
}
|
81 |
|
82 |
// Add tribe events post type to tag queries
|
83 |
-
if ( $query->is_tag ) {
|
84 |
$types = $query->get( 'post_type' );
|
85 |
if ( is_array( $types ) ) {
|
86 |
$types[] = TribeEvents::POSTTYPE;
|
87 |
-
}
|
|
|
|
|
|
|
|
|
88 |
$types = array( 'post', TribeEvents::POSTTYPE );
|
89 |
}
|
90 |
$query->set( 'post_type', $types );
|
@@ -95,11 +74,11 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
95 |
// check if any possiblity of this being an event query
|
96 |
$query->tribe_is_event = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) < 2 )
|
97 |
? true // it was an event query
|
98 |
-
|
99 |
|
100 |
$query->tribe_is_multi_posttype = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) >= 2 || in_array( 'any', $types ) )
|
101 |
? true // it's a query for multiple post types, events post type included
|
102 |
-
|
103 |
|
104 |
do_action( 'log', 'multi_posttype', 'default', var_export($query->tribe_is_multi_posttype, true) );
|
105 |
do_action( 'log', 'types', 'default', $types );
|
@@ -108,27 +87,27 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
108 |
// check if any possiblity of this being an event category
|
109 |
$query->tribe_is_event_category = ( isset( $query->query_vars[TribeEvents::TAXONOMY] ) && $query->query_vars[TribeEvents::TAXONOMY] != '' )
|
110 |
? true // it was an event category
|
111 |
-
|
112 |
|
113 |
$query->tribe_is_event_venue = ( in_array( TribeEvents::VENUE_POST_TYPE, $types ) )
|
114 |
? true // it was an event venue
|
115 |
-
|
116 |
|
117 |
$query->tribe_is_event_organizer = ( in_array( TribeEvents::ORGANIZER_POST_TYPE, $types ) )
|
118 |
? true // it was an event organizer
|
119 |
-
|
120 |
|
121 |
$query->tribe_is_event_query = ( $query->tribe_is_event
|
122 |
|| $query->tribe_is_event_category
|
123 |
|| $query->tribe_is_event_venue
|
124 |
|| $query->tribe_is_event_organizer )
|
125 |
-
|
126 |
-
|
127 |
|
128 |
// is the query pulling posts from the past
|
129 |
$query->tribe_is_past = ( ! empty( $query->query_vars['eventDisplay'] ) && $query->query_vars['eventDisplay'] == 'past' )
|
130 |
? true // query is requesting past posts
|
131 |
-
|
132 |
if ( ! empty( $_REQUEST['tribe_event_display'] ) && $_REQUEST['tribe_event_display'] == 'past' ) {
|
133 |
$query->tribe_is_past = true;
|
134 |
}
|
@@ -154,7 +133,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
154 |
* @param object $query WP_Query object args supplied or default
|
155 |
* @return object $query (modified)
|
156 |
*/
|
157 |
-
public function pre_get_posts( $query ) {
|
158 |
|
159 |
// setup static const to preserve query type through hooks
|
160 |
self::$is_event = $query->tribe_is_event;
|
@@ -163,6 +142,15 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
163 |
self::$is_event_organizer = $query->tribe_is_event_organizer;
|
164 |
self::$is_event_query = $query->tribe_is_event_query;
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
if ( $query->tribe_is_multi_posttype ) {
|
167 |
do_action( 'log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype );
|
168 |
add_filter( 'posts_fields', array( __CLASS__, 'multi_type_posts_fields' ), 10, 2 );
|
@@ -193,6 +181,12 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
193 |
$query->set( 'cache_results', false );
|
194 |
$query->set( 'update_post_meta_cache', false );
|
195 |
$query->set( 'update_post_term_cache', false );
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
do_action( 'tribe_events_pre_get_posts', $query );
|
197 |
return $query;
|
198 |
}
|
@@ -256,6 +250,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
256 |
$query->set( 'order', self::set_order() );
|
257 |
self::$start_date = $query->get( 'start_date' );
|
258 |
}
|
|
|
259 |
// eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually
|
260 |
if ( ! in_array( $query->get( TribeEvents::TAXONOMY ), array( '', '-1' ) ) ) {
|
261 |
$tax_query[] = array(
|
@@ -266,11 +261,18 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
266 |
);
|
267 |
}
|
268 |
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
);
|
273 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
}
|
275 |
|
276 |
// filter by Venue ID
|
@@ -396,7 +398,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
396 |
$fields = array();
|
397 |
$fields['event_start_date'] = "{$wpdb->postmeta}.meta_value as EventStartDate";
|
398 |
$fields['event_end_date'] ="tribe_event_end_date.meta_value as EventEndDate";
|
399 |
-
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields );
|
400 |
return $field_sql . ', '.implode(', ', $fields);
|
401 |
} else {
|
402 |
return $field_sql;
|
@@ -416,7 +418,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
416 |
global $wpdb;
|
417 |
$fields = array();
|
418 |
$fields[] = "IF ({$wpdb->posts}.post_type = 'tribe_events', {$wpdb->postmeta}.meta_value, {$wpdb->posts}.post_date) AS post_date";
|
419 |
-
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields );
|
420 |
return $field_sql . ', '.implode(', ', $fields);
|
421 |
} else {
|
422 |
return $field_sql;
|
@@ -519,7 +521,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
519 |
* @param string $default
|
520 |
* @return string
|
521 |
*/
|
522 |
-
function set_orderby( $default = 'event_date' ) {
|
523 |
$url_param = !empty( $_GET['orderby'] ) ? $_GET['orderby'] : null;
|
524 |
$url_param = !empty( $_GET['tribe-orderby'] ) ? $_GET['tribe-orderby'] : $url_param;
|
525 |
$url_param = strtolower( $url_param );
|
@@ -545,7 +547,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
545 |
* @param string $default
|
546 |
* @return string
|
547 |
*/
|
548 |
-
function set_order( $default = 'ASC' ) {
|
549 |
$url_param = !empty( $_GET['order'] ) ? $_GET['order'] : null;
|
550 |
$url_param = !empty( $_GET['tribe-order'] ) ? $_GET['tribe-order'] : $url_param;
|
551 |
$url_param = strtoupper( $url_param );
|
@@ -593,6 +595,7 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
593 |
}
|
594 |
}
|
595 |
|
|
|
596 |
return $order_sql;
|
597 |
}
|
598 |
|
@@ -673,32 +676,30 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
673 |
case 'daily':
|
674 |
default :
|
675 |
global $wp_query;
|
676 |
-
|
677 |
$output_date_format = '%Y-%m-%d %H:%i:%s';
|
678 |
-
$raw_counts = $wpdb->get_results(
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
// echo $wpdb->last_query;
|
702 |
$start_date = new DateTime( $args['start_date'] );
|
703 |
$end_date = new DateTime( $args['end_date'] );
|
704 |
$days = self::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
|
@@ -721,10 +722,14 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
721 |
// event starts on this day (event start time is between start and end of day)
|
722 |
// event ends on this day (event end time is between start and end of day)
|
723 |
// event starts before start of day and ends after end of day (spans across this day)
|
724 |
-
if (
|
725 |
-
|
726 |
-
|
|
|
|
|
|
|
727 |
|| ( $record_start <= $start_of_day && $record_end >= $end_of_day )
|
|
|
728 |
) {
|
729 |
if ( isset( $term->term_id ) ) {
|
730 |
$record_terms = get_the_terms( $record->ID, TribeEvents::TAXONOMY );
|
@@ -802,14 +807,14 @@ if ( !class_exists( 'TribeEventsQuery' ) ) {
|
|
802 |
$cache = new TribeEventsCache();
|
803 |
$cache_key = 'get_events_'.serialize($args);
|
804 |
|
805 |
-
$result = $cache->get($cache_key, 'save_post');
|
806 |
if ( $result && is_a($result, 'WP_Query') ) {
|
807 |
do_action( 'log', 'cache hit', 'tribe-events-cache', $args );
|
808 |
} else {
|
809 |
do_action( 'log', 'no cache hit', 'tribe-events-cache', $args );
|
810 |
// do_action( 'log', 'uncached query', 'tribe-events-query', $wpdb->last_query);
|
811 |
$result = new WP_Query( $args );
|
812 |
-
$cache->set($cache_key, $result, 0, 'save_post');
|
813 |
}
|
814 |
|
815 |
if ( ! empty( $result->posts ) ) {
|
17 |
public static $is_event_organizer;
|
18 |
public static $is_event_query;
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
/**
|
22 |
* Initialize The Events Calendar query filters and post processing.
|
26 |
public static function init() {
|
27 |
|
28 |
// if tribe event query add filters
|
|
|
29 |
add_action( 'parse_query', array( __CLASS__, 'parse_query' ), 50 );
|
30 |
add_action( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ), 50 );
|
31 |
|
37 |
}
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/**
|
41 |
* Set any query flags
|
42 |
*
|
46 |
**/
|
47 |
public static function parse_query( $query ) {
|
48 |
|
49 |
+
if ( ! $query->is_main_query() ) {
|
50 |
+
$query->is_home = false;
|
51 |
+
}
|
52 |
+
|
53 |
if ( $query->is_search && $query->get( 'post_type' ) == '' ) {
|
54 |
$query->set( 'post_type', 'any' );
|
55 |
}
|
56 |
|
57 |
// Add tribe events post type to tag queries
|
58 |
+
if ( $query->is_tag && (array) $query->get( 'post_type' ) != array( TribeEvents::POSTTYPE ) ) {
|
59 |
$types = $query->get( 'post_type' );
|
60 |
if ( is_array( $types ) ) {
|
61 |
$types[] = TribeEvents::POSTTYPE;
|
62 |
+
}
|
63 |
+
else if ( is_string ( $types ) ) {
|
64 |
+
$types = array( $types, TribeEvents::POSTTYPE );
|
65 |
+
}
|
66 |
+
else if ( $types != 'any' ) {
|
67 |
$types = array( 'post', TribeEvents::POSTTYPE );
|
68 |
}
|
69 |
$query->set( 'post_type', $types );
|
74 |
// check if any possiblity of this being an event query
|
75 |
$query->tribe_is_event = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) < 2 )
|
76 |
? true // it was an event query
|
77 |
+
: false;
|
78 |
|
79 |
$query->tribe_is_multi_posttype = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) >= 2 || in_array( 'any', $types ) )
|
80 |
? true // it's a query for multiple post types, events post type included
|
81 |
+
: false;
|
82 |
|
83 |
do_action( 'log', 'multi_posttype', 'default', var_export($query->tribe_is_multi_posttype, true) );
|
84 |
do_action( 'log', 'types', 'default', $types );
|
87 |
// check if any possiblity of this being an event category
|
88 |
$query->tribe_is_event_category = ( isset( $query->query_vars[TribeEvents::TAXONOMY] ) && $query->query_vars[TribeEvents::TAXONOMY] != '' )
|
89 |
? true // it was an event category
|
90 |
+
: false;
|
91 |
|
92 |
$query->tribe_is_event_venue = ( in_array( TribeEvents::VENUE_POST_TYPE, $types ) )
|
93 |
? true // it was an event venue
|
94 |
+
: false;
|
95 |
|
96 |
$query->tribe_is_event_organizer = ( in_array( TribeEvents::ORGANIZER_POST_TYPE, $types ) )
|
97 |
? true // it was an event organizer
|
98 |
+
: false;
|
99 |
|
100 |
$query->tribe_is_event_query = ( $query->tribe_is_event
|
101 |
|| $query->tribe_is_event_category
|
102 |
|| $query->tribe_is_event_venue
|
103 |
|| $query->tribe_is_event_organizer )
|
104 |
+
? true // this is an event query of some type
|
105 |
+
: false; // move along, this is not the query you are looking for
|
106 |
|
107 |
// is the query pulling posts from the past
|
108 |
$query->tribe_is_past = ( ! empty( $query->query_vars['eventDisplay'] ) && $query->query_vars['eventDisplay'] == 'past' )
|
109 |
? true // query is requesting past posts
|
110 |
+
: false;
|
111 |
if ( ! empty( $_REQUEST['tribe_event_display'] ) && $_REQUEST['tribe_event_display'] == 'past' ) {
|
112 |
$query->tribe_is_past = true;
|
113 |
}
|
133 |
* @param object $query WP_Query object args supplied or default
|
134 |
* @return object $query (modified)
|
135 |
*/
|
136 |
+
public static function pre_get_posts( $query ) {
|
137 |
|
138 |
// setup static const to preserve query type through hooks
|
139 |
self::$is_event = $query->tribe_is_event;
|
142 |
self::$is_event_organizer = $query->tribe_is_event_organizer;
|
143 |
self::$is_event_query = $query->tribe_is_event_query;
|
144 |
|
145 |
+
if ( $query->is_main_query() && is_home() ) {
|
146 |
+
// check option for including events in the main wordpress loop, if true, add events post type
|
147 |
+
if ( tribe_get_option( 'showEventsInMainLoop', false ) ) {
|
148 |
+
$query->query_vars['post_type'] = isset( $query->query_vars['post_type'] ) ? ( array ) $query->query_vars['post_type'] : array( 'post' );
|
149 |
+
$query->query_vars['post_type'][] = TribeEvents::POSTTYPE;
|
150 |
+
$query->tribe_is_multi_posttype = true;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
if ( $query->tribe_is_multi_posttype ) {
|
155 |
do_action( 'log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype );
|
156 |
add_filter( 'posts_fields', array( __CLASS__, 'multi_type_posts_fields' ), 10, 2 );
|
181 |
$query->set( 'cache_results', false );
|
182 |
$query->set( 'update_post_meta_cache', false );
|
183 |
$query->set( 'update_post_term_cache', false );
|
184 |
+
$query->set( 'meta_query', array(
|
185 |
+
array(
|
186 |
+
'key' => '_EventStartDate',
|
187 |
+
'type' => 'DATETIME'
|
188 |
+
)
|
189 |
+
));
|
190 |
do_action( 'tribe_events_pre_get_posts', $query );
|
191 |
return $query;
|
192 |
}
|
250 |
$query->set( 'order', self::set_order() );
|
251 |
self::$start_date = $query->get( 'start_date' );
|
252 |
}
|
253 |
+
|
254 |
// eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually
|
255 |
if ( ! in_array( $query->get( TribeEvents::TAXONOMY ), array( '', '-1' ) ) ) {
|
256 |
$tax_query[] = array(
|
261 |
);
|
262 |
}
|
263 |
|
264 |
+
// Only add the postmeta hack if it's not the main admin events list
|
265 |
+
// Because this method filters out drafts without EventStartDate.
|
266 |
+
// For this screen we're doing the JOIN manually in TribeEventsAdminList
|
|
|
267 |
|
268 |
+
$screen = ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? null : get_current_screen();
|
269 |
+
|
270 |
+
if ( empty( $screen ) || $screen->id != 'edit-tribe_events' ) {
|
271 |
+
$meta_query[] = array(
|
272 |
+
'key' => '_EventStartDate',
|
273 |
+
'type' => 'DATETIME'
|
274 |
+
);
|
275 |
+
}
|
276 |
}
|
277 |
|
278 |
// filter by Venue ID
|
398 |
$fields = array();
|
399 |
$fields['event_start_date'] = "{$wpdb->postmeta}.meta_value as EventStartDate";
|
400 |
$fields['event_end_date'] ="tribe_event_end_date.meta_value as EventEndDate";
|
401 |
+
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields, $query );
|
402 |
return $field_sql . ', '.implode(', ', $fields);
|
403 |
} else {
|
404 |
return $field_sql;
|
418 |
global $wpdb;
|
419 |
$fields = array();
|
420 |
$fields[] = "IF ({$wpdb->posts}.post_type = 'tribe_events', {$wpdb->postmeta}.meta_value, {$wpdb->posts}.post_date) AS post_date";
|
421 |
+
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields, $query );
|
422 |
return $field_sql . ', '.implode(', ', $fields);
|
423 |
} else {
|
424 |
return $field_sql;
|
521 |
* @param string $default
|
522 |
* @return string
|
523 |
*/
|
524 |
+
public static function set_orderby( $default = 'event_date' ) {
|
525 |
$url_param = !empty( $_GET['orderby'] ) ? $_GET['orderby'] : null;
|
526 |
$url_param = !empty( $_GET['tribe-orderby'] ) ? $_GET['tribe-orderby'] : $url_param;
|
527 |
$url_param = strtolower( $url_param );
|
547 |
* @param string $default
|
548 |
* @return string
|
549 |
*/
|
550 |
+
public static function set_order( $default = 'ASC' ) {
|
551 |
$url_param = !empty( $_GET['order'] ) ? $_GET['order'] : null;
|
552 |
$url_param = !empty( $_GET['tribe-order'] ) ? $_GET['tribe-order'] : $url_param;
|
553 |
$url_param = strtoupper( $url_param );
|
595 |
}
|
596 |
}
|
597 |
|
598 |
+
$order_sql = apply_filters( 'tribe_events_query_posts_orderby', $order_sql, $query );
|
599 |
return $order_sql;
|
600 |
}
|
601 |
|
676 |
case 'daily':
|
677 |
default :
|
678 |
global $wp_query;
|
|
|
679 |
$output_date_format = '%Y-%m-%d %H:%i:%s';
|
680 |
+
$raw_counts = $wpdb->get_results( $wpdb->prepare( "
|
681 |
+
SELECT tribe_event_start.post_id as ID,
|
682 |
+
tribe_event_start.meta_value as EventStartDate,
|
683 |
+
IF (tribe_event_duration.meta_value IS NULL, DATE_FORMAT( tribe_event_end_date.meta_value, '%1\$s'), DATE_FORMAT(DATE_ADD(CAST(tribe_event_start.meta_value AS DATETIME), INTERVAL tribe_event_duration.meta_value SECOND), '%1\$s')) as EventEndDate,
|
684 |
+
{$wpdb->posts}.menu_order as menu_order
|
685 |
+
FROM $wpdb->postmeta AS tribe_event_start
|
686 |
+
LEFT JOIN $wpdb->posts ON (tribe_event_start.post_id = {$wpdb->posts}.ID)
|
687 |
+
LEFT JOIN $wpdb->postmeta as tribe_event_duration ON ( tribe_event_start.post_id = tribe_event_duration.post_id AND tribe_event_duration.meta_key = '_EventDuration' )
|
688 |
+
LEFT JOIN $wpdb->postmeta as tribe_event_end_date ON ( tribe_event_start.post_id = tribe_event_end_date.post_id AND tribe_event_end_date.meta_key = '_EventEndDate' )
|
689 |
+
WHERE tribe_event_start.meta_key = '_EventStartDate'
|
690 |
+
AND tribe_event_start.post_id IN ( %5\$s )
|
691 |
+
AND ( (tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
|
692 |
+
OR (tribe_event_start.meta_value <= '%3\$s' AND DATE_ADD(CAST( tribe_event_start.meta_value AS DATETIME), INTERVAL tribe_event_duration.meta_value SECOND) >= '%3\$s')
|
693 |
+
OR (tribe_event_start.meta_value <= '%3\$s' AND tribe_event_end_date.meta_value >= '%3\$s')
|
694 |
+
OR ( tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
|
695 |
+
)
|
696 |
+
ORDER BY menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;",
|
697 |
+
$output_date_format,
|
698 |
+
$output_date_format,
|
699 |
+
$args['start_date'],
|
700 |
+
$args['end_date'],
|
701 |
+
implode( ',', array_map( 'intval', $post_ids ) )
|
702 |
+
) );
|
|
|
703 |
$start_date = new DateTime( $args['start_date'] );
|
704 |
$end_date = new DateTime( $args['end_date'] );
|
705 |
$days = self::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
|
722 |
// event starts on this day (event start time is between start and end of day)
|
723 |
// event ends on this day (event end time is between start and end of day)
|
724 |
// event starts before start of day and ends after end of day (spans across this day)
|
725 |
+
if (
|
726 |
+
// event starts today
|
727 |
+
( $record_start >= $start_of_day && $record_start <= $end_of_day )
|
728 |
+
// event ends today
|
729 |
+
|| ( $record_end >= $start_of_day && $record_end <= $end_of_day )
|
730 |
+
// event spans across today
|
731 |
|| ( $record_start <= $start_of_day && $record_end >= $end_of_day )
|
732 |
+
|
733 |
) {
|
734 |
if ( isset( $term->term_id ) ) {
|
735 |
$record_terms = get_the_terms( $record->ID, TribeEvents::TAXONOMY );
|
807 |
$cache = new TribeEventsCache();
|
808 |
$cache_key = 'get_events_'.serialize($args);
|
809 |
|
810 |
+
$result = $cache->get( $cache_key, 'save_post' );
|
811 |
if ( $result && is_a($result, 'WP_Query') ) {
|
812 |
do_action( 'log', 'cache hit', 'tribe-events-cache', $args );
|
813 |
} else {
|
814 |
do_action( 'log', 'no cache hit', 'tribe-events-cache', $args );
|
815 |
// do_action( 'log', 'uncached query', 'tribe-events-query', $wpdb->last_query);
|
816 |
$result = new WP_Query( $args );
|
817 |
+
$cache->set( $cache_key, $result, 0, 'save_post' );
|
818 |
}
|
819 |
|
820 |
if ( ! empty( $result->posts ) ) {
|
lib/tribe-event-query.class.php.orig
DELETED
@@ -1,840 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Controls the main event query. Allows for recurring events.
|
4 |
-
*/
|
5 |
-
|
6 |
-
// Don't load directly
|
7 |
-
if ( !defined( 'ABSPATH' ) ) { die( '-1' ); }
|
8 |
-
|
9 |
-
if ( !class_exists( 'TribeEventsQuery' ) ) {
|
10 |
-
class TribeEventsQuery {
|
11 |
-
|
12 |
-
public static $start_date;
|
13 |
-
public static $end_date;
|
14 |
-
public static $is_event;
|
15 |
-
public static $is_event_category;
|
16 |
-
public static $is_event_venue;
|
17 |
-
public static $is_event_organizer;
|
18 |
-
public static $is_event_query;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Class Constructor
|
22 |
-
*
|
23 |
-
* @return void
|
24 |
-
*/
|
25 |
-
function __construct() {
|
26 |
-
add_action( 'tribe_events_init_pre_get_posts', array( __CLASS__, 'init' ) );
|
27 |
-
}
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Initialize The Events Calendar query filters and post processing.
|
31 |
-
*
|
32 |
-
* @return void
|
33 |
-
*/
|
34 |
-
public static function init() {
|
35 |
-
|
36 |
-
// if tribe event query add filters
|
37 |
-
add_action( 'parse_request', array( __CLASS__, 'parse_request' ), 50 );
|
38 |
-
add_action( 'parse_query', array( __CLASS__, 'parse_query' ), 50 );
|
39 |
-
add_action( 'pre_get_posts', array( __CLASS__, 'pre_get_posts' ), 50 );
|
40 |
-
|
41 |
-
if ( is_admin() ) {
|
42 |
-
require_once 'tribe-recurring-event-cleanup.php';
|
43 |
-
$cleanup = new TribeRecurringEventCleanup();
|
44 |
-
$cleanup->toggle_recurring_events();
|
45 |
-
unset( $cleanup );
|
46 |
-
}
|
47 |
-
}
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Add args to the main wordpress request
|
51 |
-
*
|
52 |
-
* @param $query_vars Array of args parsed from the main wp query
|
53 |
-
* @return array
|
54 |
-
* @author Jessica Yazbek
|
55 |
-
**/
|
56 |
-
public static function parse_request( $wpobj ) {
|
57 |
-
$request_vars = $wpobj->query_vars;
|
58 |
-
unset($request_vars['paged']);
|
59 |
-
if ( empty( $request_vars ) ) { // this is the home page
|
60 |
-
// check option for including events in the main wordpress loop, if true, add events post type
|
61 |
-
if ( tribe_get_option( 'showEventsInMainLoop', false ) ) {
|
62 |
-
$wpobj->query_vars['post_type'] = isset( $wpobj->query_vars['post_type'] ) ? (array) $wpobj->query_vars['post_type'] : array( 'post' );
|
63 |
-
$wpobj->query_vars['post_type'][] = TribeEvents::POSTTYPE;
|
64 |
-
}
|
65 |
-
}
|
66 |
-
// do_action( 'log', 'wpobj', 'default', $wpobj );
|
67 |
-
}
|
68 |
-
|
69 |
-
/**
|
70 |
-
* Set any query flags
|
71 |
-
*
|
72 |
-
* @return $query WP_Query
|
73 |
-
* @author Jessica Yazbek
|
74 |
-
* @since 3.0.3
|
75 |
-
**/
|
76 |
-
public static function parse_query( $query ) {
|
77 |
-
|
78 |
-
if ( $query->is_search && $query->get( 'post_type' ) == '' ) {
|
79 |
-
$query->set( 'post_type', 'any' );
|
80 |
-
}
|
81 |
-
|
82 |
-
$types = ( ! empty( $query->query_vars['post_type'] ) ? (array) $query->query_vars['post_type'] : array() );
|
83 |
-
|
84 |
-
// check if any possiblity of this being an event query
|
85 |
-
$query->tribe_is_event = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) < 2 )
|
86 |
-
? true // it was an event query
|
87 |
-
: false;
|
88 |
-
|
89 |
-
$query->tribe_is_multi_posttype = ( in_array( TribeEvents::POSTTYPE, $types ) && count( $types ) >= 2 || in_array( 'any', $types ) )
|
90 |
-
? true // it's a query for multiple post types, events post type included
|
91 |
-
: false;
|
92 |
-
|
93 |
-
do_action( 'log', 'multi_posttype', 'default', var_export($query->tribe_is_multi_posttype, true) );
|
94 |
-
do_action( 'log', 'types', 'default', $types );
|
95 |
-
do_action( 'log', 'request', 'default', $query->query_vars );
|
96 |
-
|
97 |
-
// check if any possiblity of this being an event category
|
98 |
-
$query->tribe_is_event_category = ( isset( $query->query_vars[TribeEvents::TAXONOMY] ) && $query->query_vars[TribeEvents::TAXONOMY] != '' )
|
99 |
-
? true // it was an event category
|
100 |
-
: false;
|
101 |
-
|
102 |
-
$query->tribe_is_event_venue = ( in_array( TribeEvents::VENUE_POST_TYPE, $types ) )
|
103 |
-
? true // it was an event venue
|
104 |
-
: false;
|
105 |
-
|
106 |
-
$query->tribe_is_event_organizer = ( in_array( TribeEvents::ORGANIZER_POST_TYPE, $types ) )
|
107 |
-
? true // it was an event organizer
|
108 |
-
: false;
|
109 |
-
|
110 |
-
$query->tribe_is_event_query = ( $query->tribe_is_event
|
111 |
-
|| $query->tribe_is_event_category
|
112 |
-
|| $query->tribe_is_event_venue
|
113 |
-
|| $query->tribe_is_event_organizer )
|
114 |
-
? true // this is an event query of some type
|
115 |
-
: false; // move along, this is not the query you are looking for
|
116 |
-
|
117 |
-
// is the query pulling posts from the past
|
118 |
-
$query->tribe_is_past = ( ! empty( $query->query_vars['eventDisplay'] ) && $query->query_vars['eventDisplay'] == 'past' )
|
119 |
-
? true // query is requesting past posts
|
120 |
-
: false;
|
121 |
-
if ( ! empty( $_REQUEST['tribe_event_display'] ) && $_REQUEST['tribe_event_display'] == 'past' ) {
|
122 |
-
$query->tribe_is_past = true;
|
123 |
-
}
|
124 |
-
|
125 |
-
// never allow 404 on month view
|
126 |
-
if ( $query->get('eventDisplay') == 'month' ) {
|
127 |
-
$query->is_post_type_archive = true;
|
128 |
-
}
|
129 |
-
|
130 |
-
// check if is_event_query === true and hook filter
|
131 |
-
if ( $query->tribe_is_event_query ) {
|
132 |
-
// fixing is_home param
|
133 |
-
$query->is_home = !empty( $query->query_vars['is_home'] ) ? $query->query_vars['is_home'] : false;
|
134 |
-
do_action( 'tribe_events_parse_query', $query );
|
135 |
-
}
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* Is hooked by init() filter to parse the WP_Query arguments for main and alt queries.
|
140 |
-
*
|
141 |
-
* @param object $query WP_Query object args supplied or default
|
142 |
-
* @return object $query (modified)
|
143 |
-
*/
|
144 |
-
public function pre_get_posts( $query ) {
|
145 |
-
|
146 |
-
// setup static const to preserve query type through hooks
|
147 |
-
self::$is_event = $query->tribe_is_event;
|
148 |
-
self::$is_event_category = $query->tribe_is_event_category;
|
149 |
-
self::$is_event_venue = $query->tribe_is_event_venue;
|
150 |
-
self::$is_event_organizer = $query->tribe_is_event_organizer;
|
151 |
-
self::$is_event_query = $query->tribe_is_event_query;
|
152 |
-
|
153 |
-
if ( $query->tribe_is_multi_posttype ) {
|
154 |
-
do_action( 'log', 'multi_posttype', 'default', $query->tribe_is_multi_posttype );
|
155 |
-
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
156 |
-
add_filter( 'posts_join', array( __CLASS__, 'posts_join_orderby' ), 10, 2 );
|
157 |
-
add_filter( 'posts_fields', array( __CLASS__, 'multi_type_posts_fields' ), 10, 2 );
|
158 |
-
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
159 |
-
add_filter( 'posts_groupby', array( __CLASS__, 'posts_groupby' ), 10, 2 );
|
160 |
-
add_filter( 'posts_orderby', array( __CLASS__, 'posts_orderby' ), 10, 2 );
|
161 |
-
do_action( 'tribe_events_pre_get_posts', $query );
|
162 |
-
return;
|
163 |
-
}
|
164 |
-
|
165 |
-
if ( $query->tribe_is_event || $query->tribe_is_event_category ) {
|
166 |
-
|
167 |
-
self::$start_date = null;
|
168 |
-
self::$end_date = null;
|
169 |
-
|
170 |
-
if ( ! ( $query->is_main_query() && $query->get( 'eventDisplay' ) == 'month' ) ) {
|
171 |
-
add_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
172 |
-
add_filter( 'posts_join', array( __CLASS__, 'posts_join_orderby' ), 10, 2 );
|
173 |
-
add_filter( 'posts_where', array( __CLASS__, 'posts_where' ), 10, 2 );
|
174 |
-
add_filter( 'posts_fields', array( __CLASS__, 'posts_fields' ), 10, 2 );
|
175 |
-
add_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
176 |
-
add_filter( 'posts_groupby', array( __CLASS__, 'posts_groupby' ), 10, 2 );
|
177 |
-
} else {
|
178 |
-
// reduce number of queries triggered by main WP_Query on month view
|
179 |
-
$query->set( 'posts_per_page', 1 );
|
180 |
-
$query->set( 'no_found_rows', true );
|
181 |
-
$query->set( 'cache_results', false );
|
182 |
-
$query->set( 'update_post_meta_cache', false );
|
183 |
-
$query->set( 'update_post_term_cache', false );
|
184 |
-
apply_filters( 'tribe_events_pre_get_posts', $query );
|
185 |
-
return $query;
|
186 |
-
}
|
187 |
-
|
188 |
-
// if a user selects a date in the event bar we want it to persist as long as possible
|
189 |
-
if ( !empty( $_REQUEST['tribe-bar-date'] ) ) {
|
190 |
-
$query->set( 'eventDate', $_REQUEST['tribe-bar-date'] );
|
191 |
-
}
|
192 |
-
|
193 |
-
// if a user provides a search term we want to use that in the search params
|
194 |
-
if ( !empty( $_REQUEST['tribe-bar-search'] ) ) {
|
195 |
-
$query->query_vars['s'] = $_REQUEST['tribe-bar-search'];
|
196 |
-
}
|
197 |
-
|
198 |
-
$query->query_vars['eventDisplay'] = !empty( $query->query_vars['eventDisplay'] ) ? $query->query_vars['eventDisplay'] : TribeEvents::instance()->displaying;
|
199 |
-
|
200 |
-
if ( !empty( $query->query_vars['eventDisplay'] ) ) {
|
201 |
-
switch ( $query->query_vars['eventDisplay'] ) {
|
202 |
-
case 'custom':
|
203 |
-
// if set this allows for a custom query to not be burdened with these settings
|
204 |
-
break;
|
205 |
-
case 'all':
|
206 |
-
$query->set( 'orderby', self::set_orderby() );
|
207 |
-
$query->set( 'order', self::set_order() );
|
208 |
-
break;
|
209 |
-
<<<<<<< Updated upstream
|
210 |
-
=======
|
211 |
-
case 'month':
|
212 |
-
$start_date = substr_replace( date_i18n( TribeDateUtils::DBDATEFORMAT ), '01', -2 );
|
213 |
-
$passed_date = $query->get( 'eventDate' ) ? substr_replace( date_i18n( TribeDateUtils::DBDATEFORMAT, strtotime( $query->get( 'eventDate' ) ) ), '01', -2 ) : false;
|
214 |
-
$start_date = $passed_date ? $passed_date : $start_date;
|
215 |
-
$query->set( 'start_date', $start_date );
|
216 |
-
$query->set( 'eventDate', $start_date );
|
217 |
-
$query->set( 'end_date', date( 'Y-m-d', strtotime( TribeEvents::instance()->nextMonth( $start_date ) ) -( 24*3600 ) ) );
|
218 |
-
if ( $query->is_main_query() ) {
|
219 |
-
$query->set( 'posts_per_page', 1 ); // we're going to do this day-by-day later, so limit the size of the query to reduce mysql time
|
220 |
-
$query->set( 'no_found_rows', TRUE );
|
221 |
-
} else {
|
222 |
-
$query->set( 'orderby', self::set_orderby() );
|
223 |
-
$query->set( 'order', self::set_order() );
|
224 |
-
$query->set( 'posts_per_page', -1 ); // get all events for the month
|
225 |
-
}
|
226 |
-
self::$start_date = $query->get( 'start_date' );
|
227 |
-
self::$end_date = $query->get( 'end_date' );
|
228 |
-
break;
|
229 |
-
>>>>>>> Stashed changes
|
230 |
-
case 'single-event':
|
231 |
-
if ( $query->get( 'eventDate' ) != '' ) {
|
232 |
-
$query->set( 'start_date', $query->get( 'eventDate' ) );
|
233 |
-
$query->set( 'eventDate', $query->get( 'eventDate' ) );
|
234 |
-
self::$start_date = $query->get( 'start_date' );
|
235 |
-
}
|
236 |
-
break;
|
237 |
-
case 'upcoming':
|
238 |
-
case 'past' :
|
239 |
-
default: // default display query
|
240 |
-
$tribe_paged = ( ! empty( $_REQUEST['tribe_paged'] ) ) ? $_REQUEST['tribe_paged'] : $query->get('paged');
|
241 |
-
$query->set( 'paged', $tribe_paged );
|
242 |
-
$event_date = ( $query->get( 'eventDate' ) != '' )
|
243 |
-
? $query->get( 'eventDate' )
|
244 |
-
: date_i18n( TribeDateUtils::DBDATETIMEFORMAT );
|
245 |
-
if ( ! $query->tribe_is_past ) {
|
246 |
-
$query->set( 'start_date', $event_date );
|
247 |
-
$query->set( 'end_date', '' );
|
248 |
-
$query->set( 'order', self::set_order() );
|
249 |
-
} else {
|
250 |
-
$query->set( 'start_date', '' );
|
251 |
-
$query->set( 'end_date', $event_date );
|
252 |
-
$query->set( 'order', self::set_order( 'DESC') );
|
253 |
-
}
|
254 |
-
$query->set( 'orderby', self::set_orderby() );
|
255 |
-
$query->set( 'hide_upcoming', true );
|
256 |
-
self::$start_date = $query->get( 'start_date' );
|
257 |
-
self::$end_date = $query->get( 'end_date' );
|
258 |
-
break;
|
259 |
-
$query->set( 'eventDate', '' );
|
260 |
-
}
|
261 |
-
} else {
|
262 |
-
$query->set( 'hide_upcoming', true );
|
263 |
-
$query->set( 'start_date', date_i18n( TribeDateUtils::DBDATETIMEFORMAT ) );
|
264 |
-
$query->set( 'orderby', self::set_orderby() );
|
265 |
-
$query->set( 'order', self::set_order() );
|
266 |
-
self::$start_date = $query->get( 'start_date' );
|
267 |
-
}
|
268 |
-
// eventCat becomes a standard taxonomy query - will need to deprecate and update views eventually
|
269 |
-
if ( ! in_array( $query->get( TribeEvents::TAXONOMY ), array( '', '-1' ) ) ) {
|
270 |
-
$tax_query[] = array(
|
271 |
-
'taxonomy' => TribeEvents::TAXONOMY,
|
272 |
-
'field' => is_numeric( $query->get( TribeEvents::TAXONOMY ) ) ? 'id' : 'slug',
|
273 |
-
'terms' => $query->get( TribeEvents::TAXONOMY ),
|
274 |
-
'include_children' => false,
|
275 |
-
);
|
276 |
-
}
|
277 |
-
|
278 |
-
$meta_query[] = array(
|
279 |
-
'key' => '_EventStartDate',
|
280 |
-
'type' => 'DATETIME'
|
281 |
-
);
|
282 |
-
|
283 |
-
}
|
284 |
-
|
285 |
-
// filter by Venue ID
|
286 |
-
if ( $query->tribe_is_event_query && $query->get( 'venue' ) != '' ) {
|
287 |
-
$meta_query[] = array(
|
288 |
-
'key' => '_EventVenueID',
|
289 |
-
'value' => $query->get( 'venue' )
|
290 |
-
);
|
291 |
-
}
|
292 |
-
|
293 |
-
// filter by Organizer ID
|
294 |
-
if ( $query->tribe_is_event_query && $query->get( 'organizer' ) != '' ) {
|
295 |
-
$meta_query[] = array(
|
296 |
-
'key' => '_EventOrganizerID',
|
297 |
-
'value' => $query->get( 'organizer' )
|
298 |
-
);
|
299 |
-
}
|
300 |
-
|
301 |
-
// proprietary metaKeys go to standard meta
|
302 |
-
if ( $query->tribe_is_event_query && $query->get( 'metaKey' ) != '' ) {
|
303 |
-
$meta_query[] = array(
|
304 |
-
'key' => $query->get( 'metaKey' ),
|
305 |
-
'value' => $query->get( 'metaValue' )
|
306 |
-
);
|
307 |
-
}
|
308 |
-
|
309 |
-
// enable pagination setup
|
310 |
-
if ( $query->tribe_is_event_query && $query->get( 'numResults' ) != '' ) {
|
311 |
-
$query->set( 'posts_per_page', $query->get( 'numResults' ) );
|
312 |
-
} elseif ( $query->tribe_is_event_query && $query->get( 'posts_per_page' ) == '' ) {
|
313 |
-
$query->set( 'posts_per_page', (int) tribe_get_option( 'postsPerPage', 10 ) );
|
314 |
-
}
|
315 |
-
|
316 |
-
// hide upcoming events from query (only not in admin)
|
317 |
-
if ( $query->tribe_is_event_query && $query->get( 'hide_upcoming' ) ) {
|
318 |
-
$hide_upcoming_ids = self::getHideFromUpcomingEvents();
|
319 |
-
if ( !empty( $hide_upcoming_ids ) )
|
320 |
-
$query->set( 'post__not_in', $hide_upcoming_ids );
|
321 |
-
}
|
322 |
-
|
323 |
-
if ( $query->tribe_is_event_query && !empty( $meta_query ) ) {
|
324 |
-
// setup default relation for meta queries
|
325 |
-
$meta_query['relation'] = 'AND';
|
326 |
-
$meta_query_combined = array_merge( (array) $meta_query, (array) $query->get( 'meta_query' ) );
|
327 |
-
$query->set( 'meta_query', $meta_query_combined );
|
328 |
-
}
|
329 |
-
|
330 |
-
if ( $query->tribe_is_event_query && !empty( $tax_query ) ) {
|
331 |
-
// setup default relation for tax queries
|
332 |
-
$tax_query_combined = array_merge( (array) $tax_query, (array) $query->get( 'tax_query' ) );
|
333 |
-
$query->set( 'tax_query', $tax_query_combined );
|
334 |
-
}
|
335 |
-
|
336 |
-
if ( $query->tribe_is_event_query ) {
|
337 |
-
add_filter( 'posts_orderby', array( __CLASS__, 'posts_orderby' ), 10, 2 );
|
338 |
-
}
|
339 |
-
|
340 |
-
// if is in the admin remove the event date & upcoming filters, unless is an ajax call
|
341 |
-
global $current_screen;
|
342 |
-
if ( is_admin() && $query->tribe_is_event_query && !empty( $current_screen->id ) && $current_screen->id == 'edit-' . TribeEvents::POSTTYPE ) {
|
343 |
-
if ( ( !defined( 'DOING_AJAX' ) ) || ( defined( 'DOING_AJAX' ) && !( DOING_AJAX ) ) ) {
|
344 |
-
|
345 |
-
// remove_filter( 'posts_join', array( __CLASS__, 'posts_join' ), 10, 2 );
|
346 |
-
remove_filter( 'posts_where', array( __CLASS__, 'posts_where' ), 10, 2 );
|
347 |
-
remove_filter( 'posts_fields', array( __CLASS__, 'posts_fields' ) );
|
348 |
-
remove_filter( 'posts_distinct', array( __CLASS__, 'posts_distinct' ) );
|
349 |
-
remove_filter( 'posts_groupby', array( __CLASS__, 'posts_groupby' ) );
|
350 |
-
$query->set( 'post__not_in', '' );
|
351 |
-
|
352 |
-
// set the default order for posts within admin lists
|
353 |
-
if ( !isset( $query->query['order'] ) ) {
|
354 |
-
$query->set( 'order', 'DESC' );
|
355 |
-
} else {
|
356 |
-
// making sure we preserve the order supplied by the query string even if it is overwritten above
|
357 |
-
$query->set( 'order', $query->query['order'] );
|
358 |
-
}
|
359 |
-
}
|
360 |
-
}
|
361 |
-
|
362 |
-
if ( $query->tribe_is_event_query ) {
|
363 |
-
do_action( 'tribe_events_pre_get_posts', $query );
|
364 |
-
}
|
365 |
-
|
366 |
-
return $query;
|
367 |
-
}
|
368 |
-
|
369 |
-
/**
|
370 |
-
* Modifies the GROUP BY statement for Tribe Events queries.
|
371 |
-
*
|
372 |
-
* @param string $groupby_sql The current GROUP BY statement.
|
373 |
-
* @param WP_Query $query The current query.
|
374 |
-
* @return string The modified GROUP BY content.
|
375 |
-
*/
|
376 |
-
public static function posts_groupby( $groupby_sql, $query ) {
|
377 |
-
global $wpdb;
|
378 |
-
if ( self::$is_event_query ) {
|
379 |
-
return apply_filters( 'tribe_events_query_posts_groupby', '', $query );
|
380 |
-
} else {
|
381 |
-
return $groupby_sql;
|
382 |
-
}
|
383 |
-
}
|
384 |
-
|
385 |
-
/**
|
386 |
-
* Adds DISTINCT to the query.
|
387 |
-
*
|
388 |
-
* @param string $distinct The current DISTINCT statement.
|
389 |
-
* @return string The modified DISTINCT statement.
|
390 |
-
*/
|
391 |
-
public static function posts_distinct( $distinct ) {
|
392 |
-
return "DISTINCT";
|
393 |
-
}
|
394 |
-
|
395 |
-
/**
|
396 |
-
* Adds the proper fields to the FIELDS statement in the query.
|
397 |
-
*
|
398 |
-
* @param string $fields The current/original FIELDS statement.
|
399 |
-
* @param WP_Query $query The current query object.
|
400 |
-
* @return string The modified FIELDS statement.
|
401 |
-
*/
|
402 |
-
public static function posts_fields( $field_sql, $query ) {
|
403 |
-
if ( self::$is_event ) {
|
404 |
-
global $wpdb;
|
405 |
-
$fields = array();
|
406 |
-
$fields['event_start_date'] = "{$wpdb->postmeta}.meta_value as EventStartDate";
|
407 |
-
$fields['event_end_date'] ="tribe_event_end_date.meta_value as EventEndDate";
|
408 |
-
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields );
|
409 |
-
return $field_sql . ', '.implode(', ', $fields);
|
410 |
-
} else {
|
411 |
-
return $field_sql;
|
412 |
-
}
|
413 |
-
}
|
414 |
-
|
415 |
-
/**
|
416 |
-
* Adds the proper fields to the FIELDS statement in the query.
|
417 |
-
*
|
418 |
-
* @param string $fields The current/original FIELDS statement.
|
419 |
-
* @param WP_Query $query The current query object.
|
420 |
-
* @return string The modified FIELDS statement.
|
421 |
-
*/
|
422 |
-
public static function multi_type_posts_fields( $field_sql, $query ) {
|
423 |
-
global $wpdb;
|
424 |
-
$fields = array();
|
425 |
-
$fields[] = "IF ({$wpdb->posts}.post_type = 'tribe_events', {$wpdb->postmeta}.meta_value, {$wpdb->posts}.post_date) AS post_date";
|
426 |
-
$fields = apply_filters( 'tribe_events_query_posts_fields', $fields );
|
427 |
-
return $field_sql . ', '.implode(', ', $fields);
|
428 |
-
}
|
429 |
-
|
430 |
-
/**
|
431 |
-
* Custom SQL join for event end date
|
432 |
-
*
|
433 |
-
* @param string $join_sql
|
434 |
-
* @param wp_query $query
|
435 |
-
* @return string
|
436 |
-
*/
|
437 |
-
public static function posts_join( $join_sql, $query ) {
|
438 |
-
global $wpdb;
|
439 |
-
$joins = array();
|
440 |
-
|
441 |
-
// if it's a true event query then we want create a join for where conditions
|
442 |
-
if ( $query->tribe_is_event || $query->tribe_is_event_category || $query->tribe_is_multi_posttype ) {
|
443 |
-
if ( $query->tribe_is_multi_posttype ) {
|
444 |
-
$joins['event_start_date'] = " LEFT JOIN {$wpdb->postmeta} on {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_EventStartDate'";
|
445 |
-
} else {
|
446 |
-
$joins['event_start_date'] = " AND {$wpdb->postmeta}.meta_key = '_EventStartDate'";
|
447 |
-
$joins['event_end_date'] = " LEFT JOIN {$wpdb->postmeta} as tribe_event_end_date ON ( {$wpdb->posts}.ID = tribe_event_end_date.post_id AND tribe_event_end_date.meta_key = '_EventEndDate' ) ";
|
448 |
-
}
|
449 |
-
$joins = apply_filters( 'tribe_events_query_posts_joins', $joins );
|
450 |
-
return $join_sql . implode('', $joins);
|
451 |
-
}
|
452 |
-
return $join_sql;
|
453 |
-
}
|
454 |
-
|
455 |
-
/**
|
456 |
-
* Custom SQL join for orderby
|
457 |
-
*
|
458 |
-
* @param string $join_sql
|
459 |
-
* @param wp_query $query
|
460 |
-
* @return string
|
461 |
-
*/
|
462 |
-
public static function posts_join_orderby( $join_sql, $query ) {
|
463 |
-
global $wpdb;
|
464 |
-
switch ($query->get( 'orderby' )) {
|
465 |
-
case 'venue':
|
466 |
-
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_venue_meta ON {$wpdb->posts}.ID = tribe_order_by_venue_meta.post_id AND tribe_order_by_venue_meta.meta_key='_EventVenueID' LEFT JOIN {$wpdb->posts} tribe_order_by_venue ON tribe_order_by_venue_meta.meta_value = tribe_order_by_venue.ID ";
|
467 |
-
break;
|
468 |
-
case 'organizer':
|
469 |
-
$join_sql .= " LEFT JOIN {$wpdb->postmeta} tribe_order_by_organizer_meta ON {$wpdb->posts}.ID = tribe_order_by_organizer_meta.post_id AND tribe_order_by_organizer_meta.meta_key='_EventOrganizerID' LEFT JOIN {$wpdb->posts} tribe_order_by_organizer ON tribe_order_by_organizer_meta.meta_value = tribe_order_by_organizer.ID ";
|
470 |
-
break;
|
471 |
-
default: break;
|
472 |
-
}
|
473 |
-
|
474 |
-
return apply_filters( 'tribe_events_query_posts_join_orderby', $join_sql);
|
475 |
-
}
|
476 |
-
|
477 |
-
/**
|
478 |
-
* Custom SQL conditional for event duration meta field
|
479 |
-
*
|
480 |
-
* @param string $where_sql
|
481 |
-
* @param wp_query $query
|
482 |
-
* @return string
|
483 |
-
*/
|
484 |
-
public static function posts_where( $where_sql, $query ) {
|
485 |
-
global $wpdb;
|
486 |
-
|
487 |
-
// if it's a true event query then we to setup where conditions
|
488 |
-
if ( $query->tribe_is_event || $query->tribe_is_event_category ) {
|
489 |
-
|
490 |
-
$start_date = !empty( $query->start_date ) ? $query->start_date : $query->get( 'start_date' );
|
491 |
-
$end_date = !empty( $query->end_date ) ? $query->end_date : $query->get( 'end_date' );
|
492 |
-
|
493 |
-
// we can't store end date directly because it messes up the distinc clause
|
494 |
-
$event_end_date = apply_filters('tribe_events_query_end_date_column', 'tribe_event_end_date.meta_value');
|
495 |
-
|
496 |
-
// event start date
|
497 |
-
$event_start_date = "{$wpdb->postmeta}.meta_value";
|
498 |
-
|
499 |
-
// build where conditionals for events if date range params are set
|
500 |
-
if ( $start_date != '' && $end_date != '' ) {
|
501 |
-
$start_clause = $wpdb->prepare( "($event_start_date >= %s AND $event_start_date <= %s)", $start_date, $end_date );
|
502 |
-
$end_clause = $wpdb->prepare( "($event_end_date >= %s AND $event_start_date <= %s )", $start_date, $end_date );
|
503 |
-
$within_clause = $wpdb->prepare( "($event_start_date < %s AND $event_end_date >= %s )", $start_date, $end_date );
|
504 |
-
$where_sql .= " AND ($start_clause OR $end_clause OR $within_clause)";
|
505 |
-
} else if ( $start_date != '' ) {
|
506 |
-
$start_clause = $wpdb->prepare( "{$wpdb->postmeta}.meta_value >= %s", $start_date );
|
507 |
-
$within_clause = $wpdb->prepare( "({$wpdb->postmeta}.meta_value <= %s AND $event_end_date >= %s )", $start_date, $start_date );
|
508 |
-
$where_sql .= " AND ($start_clause OR $within_clause)";
|
509 |
-
if ( $query->is_singular() && $query->get( 'eventDate' ) ) {
|
510 |
-
$tomorrow = date( 'Y-m-d', strtotime( $query->get( 'eventDate' ).' +1 day' ) );
|
511 |
-
$tomorrow_clause = $wpdb->prepare( "{$wpdb->postmeta}.meta_value < %s", $tomorrow );
|
512 |
-
$where_sql .= " AND $tomorrow_clause";
|
513 |
-
}
|
514 |
-
} else if ( $end_date != '' ) {
|
515 |
-
$where_sql .= " AND " . $wpdb->prepare( "$event_end_date < %s", $end_date );
|
516 |
-
}
|
517 |
-
}
|
518 |
-
|
519 |
-
return $where_sql;
|
520 |
-
}
|
521 |
-
|
522 |
-
/**
|
523 |
-
* Internal method for properly setting a currated orderby value to $wp_query
|
524 |
-
* @param string $default
|
525 |
-
* @return string
|
526 |
-
*/
|
527 |
-
function set_orderby( $default = 'event_date' ) {
|
528 |
-
$url_param = !empty( $_GET['orderby'] ) ? $_GET['orderby'] : null;
|
529 |
-
$url_param = !empty( $_GET['tribe-orderby'] ) ? $_GET['tribe-orderby'] : $url_param;
|
530 |
-
$url_param = strtolower( $url_param );
|
531 |
-
switch ( $url_param ) {
|
532 |
-
case 'tribe_sort_ecp_venue_filter':
|
533 |
-
$orderby = 'venue';
|
534 |
-
break;
|
535 |
-
case 'tribe_sort_ecp_organizer_filter':
|
536 |
-
$orderby = 'organizer';
|
537 |
-
break;
|
538 |
-
case 'title':
|
539 |
-
$orderby = $url_param;
|
540 |
-
break;
|
541 |
-
default:
|
542 |
-
$orderby = $default;
|
543 |
-
break;
|
544 |
-
}
|
545 |
-
return $orderby;
|
546 |
-
}
|
547 |
-
|
548 |
-
/**
|
549 |
-
* Internal method for properly setting a currated order value to $wp_query
|
550 |
-
* @param string $default
|
551 |
-
* @return string
|
552 |
-
*/
|
553 |
-
function set_order( $default = 'ASC' ) {
|
554 |
-
$url_param = !empty( $_GET['order'] ) ? $_GET['order'] : null;
|
555 |
-
$url_param = !empty( $_GET['tribe-order'] ) ? $_GET['tribe-order'] : $url_param;
|
556 |
-
$url_param = strtoupper( $url_param );
|
557 |
-
$order = in_array( $url_param, array( 'ASC', 'DESC' ) ) ? $url_param : $default;
|
558 |
-
return $order;
|
559 |
-
}
|
560 |
-
|
561 |
-
/**
|
562 |
-
* Custom SQL order by statement for Event Start Date result order.
|
563 |
-
*
|
564 |
-
* @param string $order_sql
|
565 |
-
* @param wp_query $query
|
566 |
-
* @return string
|
567 |
-
*/
|
568 |
-
public static function posts_orderby( $order_sql, $query ) {
|
569 |
-
global $wpdb;
|
570 |
-
if ( $query->tribe_is_event || $query->tribe_is_event_category ) {
|
571 |
-
$order = !empty( $query->order ) ? $query->order : $query->get( 'order' );
|
572 |
-
$orderby = !empty( $query->orderby ) ? $query->orderby : $query->get( 'orderby' );
|
573 |
-
|
574 |
-
$order_sql = "DATE({$wpdb->postmeta}.meta_value) {$order}, TIME({$wpdb->postmeta}.meta_value) {$order}";
|
575 |
-
|
576 |
-
do_action('log', 'orderby', 'default', $orderby);
|
577 |
-
|
578 |
-
switch ( $orderby ) {
|
579 |
-
case 'venue':
|
580 |
-
$order_sql = "tribe_order_by_venue.post_title {$order}, " . $order_sql;
|
581 |
-
break;
|
582 |
-
case 'organizer':
|
583 |
-
$order_sql = "tribe_order_by_organizer.post_title {$order}, " . $order_sql;
|
584 |
-
break;
|
585 |
-
case 'title':
|
586 |
-
$order_sql = "{$wpdb->posts}.post_title {$order}, " . $order_sql;
|
587 |
-
break;
|
588 |
-
case 'menu_order':
|
589 |
-
$order_sql = "{$wpdb->posts}.menu_order ASC, " . $order_sql;
|
590 |
-
break;
|
591 |
-
case 'event_date':
|
592 |
-
// we've already setup $order_sql
|
593 |
-
break;
|
594 |
-
}
|
595 |
-
} else if ( $query->tribe_is_multi_posttype ) {
|
596 |
-
if ( $query->get( 'orderby' ) == 'date' || $query->get('orderby') == '' ) {
|
597 |
-
$order_sql = str_replace( "$wpdb->posts.post_date", 'post_date', $order_sql );
|
598 |
-
}
|
599 |
-
}
|
600 |
-
|
601 |
-
return $order_sql;
|
602 |
-
}
|
603 |
-
|
604 |
-
/**
|
605 |
-
* Custom SQL to retrieve post_id list of events marked to be hidden from upcoming lists.
|
606 |
-
*
|
607 |
-
* @return array
|
608 |
-
*/
|
609 |
-
public static function getHideFromUpcomingEvents() {
|
610 |
-
global $wpdb;
|
611 |
-
|
612 |
-
$cache = new TribeEventsCache();
|
613 |
-
$cache_key = 'tribe-hide-from-upcoming-events';
|
614 |
-
$found = $cache->get( $cache_key, 'save_post' );
|
615 |
-
if ( is_array( $found ) ) {
|
616 |
-
return $found;
|
617 |
-
}
|
618 |
-
|
619 |
-
// custom sql to get ids of posts that hide_upcoming_ids
|
620 |
-
$hide_upcoming_ids = $wpdb->get_col( "SELECT {$wpdb->postmeta}.post_id FROM {$wpdb->postmeta} WHERE {$wpdb->postmeta}.meta_key = '_EventHideFromUpcoming' AND {$wpdb->postmeta}.meta_value = 'yes'" );
|
621 |
-
$hide_upcoming_ids = apply_filters( 'tribe_events_hide_from_upcoming_ids', $hide_upcoming_ids );
|
622 |
-
$cache->set( $cache_key, $hide_upcoming_ids, 3600, 'save_post' );
|
623 |
-
return $hide_upcoming_ids;
|
624 |
-
}
|
625 |
-
|
626 |
-
/**
|
627 |
-
* Gets the event counts for individual days.
|
628 |
-
*
|
629 |
-
* @param array $args
|
630 |
-
* @return array The counts array.
|
631 |
-
*/
|
632 |
-
public static function getEventCounts( $args = array() ) {
|
633 |
-
global $wpdb;
|
634 |
-
do_action('log', 'getEventCounts() $args', 'tribe-events-query', $args);
|
635 |
-
$date = date( 'Y-m-d' );
|
636 |
-
$defaults = array(
|
637 |
-
'post_type' => TribeEvents::POSTTYPE,
|
638 |
-
'start_date' => tribe_event_beginning_of_day( $date ),
|
639 |
-
'end_date' => tribe_event_end_of_day( $date ),
|
640 |
-
'display_type' => 'daily',
|
641 |
-
'hide_upcoming_ids' => null,
|
642 |
-
);
|
643 |
-
$args = wp_parse_args( $args, $defaults );
|
644 |
-
|
645 |
-
$args['posts_per_page'] = -1;
|
646 |
-
$args['fields'] = 'ids';
|
647 |
-
|
648 |
-
// remove empty args and sort by key, this increases chance of a cache hit
|
649 |
-
$args = array_filter($args, array(__CLASS__, 'filter_args'));
|
650 |
-
ksort($args);
|
651 |
-
|
652 |
-
$cache = new TribeEventsCache();
|
653 |
-
$cache_key = 'daily_counts_and_ids_'.serialize($args);
|
654 |
-
$found = $cache->get( $cache_key, 'save_post' );
|
655 |
-
if ( $found ) {
|
656 |
-
do_action( 'log', 'cache hit '.__LINE__, 'tribe-events-cache', $args );
|
657 |
-
return $found;
|
658 |
-
}
|
659 |
-
do_action( 'log', 'no cache hit '.__LINE__, 'tribe-events-cache', $args );
|
660 |
-
|
661 |
-
$cache_key = 'month_post_ids_'.serialize( $args );
|
662 |
-
$found = $cache->get( $cache_key, 'save_post' );
|
663 |
-
if ( $found && is_array($found) ) {
|
664 |
-
do_action( 'log', 'cache hit '.__LINE__, 'tribe-events-cache', $args );
|
665 |
-
$post_ids = $found;
|
666 |
-
} else {
|
667 |
-
do_action( 'log', 'no cache hit '.__LINE__, 'tribe-events-cache', $args );
|
668 |
-
$post_id_query = new WP_Query();
|
669 |
-
$post_ids = $post_id_query->query( $args );
|
670 |
-
$cache->set( $cache_key, $post_ids, 0, 'save_post' );
|
671 |
-
}
|
672 |
-
|
673 |
-
do_action('log', 'Month view post ids found', 'tribe-events-query', $post_ids);
|
674 |
-
$counts = array();
|
675 |
-
$event_ids = array();
|
676 |
-
if ( ! empty( $post_ids ) ) {
|
677 |
-
|
678 |
-
switch ( $args['display_type'] ) {
|
679 |
-
case 'daily':
|
680 |
-
default :
|
681 |
-
global $wp_query;
|
682 |
-
|
683 |
-
$output_date_format = '%Y-%m-%d';
|
684 |
-
$raw_counts = $wpdb->get_results( sprintf( "
|
685 |
-
SELECT tribe_event_start.post_id as ID,
|
686 |
-
DATE_FORMAT( tribe_event_start.meta_value, '%1\$s') as EventStartDate,
|
687 |
-
IF (tribe_event_duration.meta_value IS NULL, DATE_FORMAT( tribe_event_end_date.meta_value, '%1\$s'), DATE_FORMAT(DATE_ADD(CAST(tribe_event_start.meta_value AS DATETIME), INTERVAL tribe_event_duration.meta_value SECOND), '%1\$s')) as EventEndDate,
|
688 |
-
{$wpdb->posts}.menu_order as menu_order
|
689 |
-
FROM $wpdb->postmeta AS tribe_event_start
|
690 |
-
LEFT JOIN $wpdb->posts ON (tribe_event_start.post_id = {$wpdb->posts}.ID)
|
691 |
-
LEFT JOIN $wpdb->postmeta as tribe_event_duration ON ( tribe_event_start.post_id = tribe_event_duration.post_id AND tribe_event_duration.meta_key = '_EventDuration' )
|
692 |
-
LEFT JOIN $wpdb->postmeta as tribe_event_end_date ON ( tribe_event_start.post_id = tribe_event_end_date.post_id AND tribe_event_end_date.meta_key = '_EventEndDate' )
|
693 |
-
WHERE tribe_event_start.meta_key = '_EventStartDate'
|
694 |
-
AND tribe_event_start.post_id IN ( %5\$s )
|
695 |
-
AND ( (tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
|
696 |
-
OR (tribe_event_start.meta_value <= '%3\$s' AND DATE_ADD(CAST( tribe_event_start.meta_value AS DATETIME), INTERVAL tribe_event_duration.meta_value SECOND) >= '%3\$s')
|
697 |
-
OR (tribe_event_start.meta_value <= '%3\$s' AND tribe_event_end_date.meta_value >= '%3\$s')
|
698 |
-
OR ( tribe_event_start.meta_value >= '%3\$s' AND tribe_event_start.meta_value <= '%4\$s')
|
699 |
-
)
|
700 |
-
ORDER BY menu_order ASC, DATE(tribe_event_start.meta_value) ASC, TIME(tribe_event_start.meta_value) ASC;",
|
701 |
-
$output_date_format,
|
702 |
-
$output_date_format,
|
703 |
-
$args['start_date'],
|
704 |
-
$args['end_date'],
|
705 |
-
implode( ',', array_map( 'intval', $post_ids ) )
|
706 |
-
) );
|
707 |
-
// echo $wpdb->last_query;
|
708 |
-
$start_date = new DateTime( $args['start_date'] );
|
709 |
-
$end_date = new DateTime( $args['end_date'] );
|
710 |
-
$days = self::dateDiff( $start_date->format( 'Y-m-d' ), $end_date->format( 'Y-m-d' ) );
|
711 |
-
$term_id = isset( $wp_query->query_vars[TribeEvents::TAXONOMY] ) ? $wp_query->query_vars[TribeEvents::TAXONOMY] : null;
|
712 |
-
if ( is_int( $term_id ) ) {
|
713 |
-
$term = get_term_by( 'id', $term_id, TribeEvents::TAXONOMY );
|
714 |
-
} elseif ( is_string( $term_id ) ) {
|
715 |
-
$term = get_term_by( 'slug', $term_id, TribeEvents::TAXONOMY );
|
716 |
-
}
|
717 |
-
for ( $i = 0, $date = $start_date; $i <= $days; $i++, $date->modify( '+1 day' ) ) {
|
718 |
-
$formatted_date = $date->format( 'Y-m-d' );
|
719 |
-
$count = 0;
|
720 |
-
$_day_event_ids = array();
|
721 |
-
foreach ( $raw_counts as $record ) {
|
722 |
-
$record_start = $record->EventStartDate;
|
723 |
-
$record_end = $record->EventEndDate;
|
724 |
-
if ( $record_start <= $formatted_date && $record_end >= $formatted_date ) {
|
725 |
-
if ( isset( $term->term_id ) ) {
|
726 |
-
$record_terms = get_the_terms( $record->ID, TribeEvents::TAXONOMY );
|
727 |
-
if ( !$record_terms || ( $record_terms && !in_array( $term, $record_terms ) ) ) {
|
728 |
-
$count--;
|
729 |
-
continue;
|
730 |
-
}
|
731 |
-
}
|
732 |
-
if ( count( $_day_event_ids ) < apply_filters( 'tribe_events_month_day_limit', tribe_get_option( 'monthEventAmount', '3' ) ) ) {
|
733 |
-
$_day_event_ids[] = $record->ID;
|
734 |
-
}
|
735 |
-
$count++;
|
736 |
-
}
|
737 |
-
}
|
738 |
-
$event_ids[ $formatted_date ] = $_day_event_ids;
|
739 |
-
$counts[ $formatted_date ] = $count;
|
740 |
-
}
|
741 |
-
break;
|
742 |
-
}
|
743 |
-
|
744 |
-
// get a unique list of the event IDs that will be displayed, and update all their postmeta and term caches at once
|
745 |
-
$final_event_ids = array();
|
746 |
-
$final_event_ids = call_user_func_array( 'array_merge', $event_ids );
|
747 |
-
$final_event_ids = array_unique( $final_event_ids );
|
748 |
-
do_action( 'log', 'updating term and postmeta caches for events', 'tribe-events-cache', $final_event_ids );
|
749 |
-
update_object_term_cache( $final_event_ids, TribeEvents::POSTTYPE );
|
750 |
-
update_postmeta_cache( $final_event_ids );
|
751 |
-
}
|
752 |
-
// return IDs per day and total counts per day
|
753 |
-
$return = array( 'counts' => $counts, 'event_ids' => $event_ids );
|
754 |
-
$cache = new TribeEventsCache;
|
755 |
-
$cache_key = 'daily_counts_and_ids_'.serialize($args);
|
756 |
-
$cache->set( $cache_key, $return, 0, 'save_post' );
|
757 |
-
do_action( 'log', 'final event counts result', 'tribe-events-query', $return );
|
758 |
-
return $return;
|
759 |
-
}
|
760 |
-
|
761 |
-
/**
|
762 |
-
* The number of days between two arbitrary dates.
|
763 |
-
*
|
764 |
-
* @param string $date1 The first date.
|
765 |
-
* @param string $date2 The second date.
|
766 |
-
* @return int The number of days between two dates.
|
767 |
-
*/
|
768 |
-
public static function dateDiff( $date1, $date2 ) {
|
769 |
-
$current = $date1;
|
770 |
-
$datetime2 = date_create( $date2 );
|
771 |
-
$count = 0;
|
772 |
-
while ( date_create( $current ) < $datetime2 ) {
|
773 |
-
$current = gmdate( "Y-m-d", strtotime( "+1 day", strtotime( $current ) ) );
|
774 |
-
$count++;
|
775 |
-
}
|
776 |
-
return $count;
|
777 |
-
}
|
778 |
-
|
779 |
-
/**
|
780 |
-
* Customized WP_Query wrapper to setup event queries with default arguments.
|
781 |
-
*
|
782 |
-
* @param array $args
|
783 |
-
* @return array|WP_Query
|
784 |
-
*/
|
785 |
-
public static function getEvents( $args = array(), $full = false ) {
|
786 |
-
$defaults = array(
|
787 |
-
'post_type' => TribeEvents::POSTTYPE,
|
788 |
-
'orderby' => 'event_date',
|
789 |
-
'order' => 'ASC',
|
790 |
-
'posts_per_page' => tribe_get_option( 'postsPerPage', 10 ),
|
791 |
-
);
|
792 |
-
$args = wp_parse_args( $args, $defaults );
|
793 |
-
|
794 |
-
// remove empty args and sort by key, this increases chance of a cache hit
|
795 |
-
$args = array_filter($args, array(__CLASS__, 'filter_args'));
|
796 |
-
ksort($args);
|
797 |
-
|
798 |
-
$cache = new TribeEventsCache();
|
799 |
-
$cache_key = 'get_events_'.serialize($args);
|
800 |
-
|
801 |
-
$result = $cache->get($cache_key, 'save_post');
|
802 |
-
if ( $result && is_a($result, 'WP_Query') ) {
|
803 |
-
do_action( 'log', 'cache hit', 'tribe-events-cache', $args );
|
804 |
-
} else {
|
805 |
-
do_action( 'log', 'no cache hit', 'tribe-events-cache', $args );
|
806 |
-
// do_action( 'log', 'uncached query', 'tribe-events-query', $wpdb->last_query);
|
807 |
-
$result = new WP_Query( $args );
|
808 |
-
$cache->set($cache_key, $result, 0, 'save_post');
|
809 |
-
}
|
810 |
-
|
811 |
-
if ( ! empty( $result->posts ) ) {
|
812 |
-
if ( $full ) {
|
813 |
-
return $result;
|
814 |
-
} else {
|
815 |
-
$posts = $result->posts;
|
816 |
-
return $posts;
|
817 |
-
}
|
818 |
-
} else {
|
819 |
-
if ( $full ) {
|
820 |
-
return $result;
|
821 |
-
} else {
|
822 |
-
return array();
|
823 |
-
}
|
824 |
-
}
|
825 |
-
}
|
826 |
-
|
827 |
-
/**
|
828 |
-
* Remove empty values from the query args
|
829 |
-
*
|
830 |
-
* @return bool
|
831 |
-
* @author Jessica Yazbek
|
832 |
-
**/
|
833 |
-
private static function filter_args($arg) {
|
834 |
-
if (empty($arg) && $arg !== false)
|
835 |
-
return false;
|
836 |
-
return true;
|
837 |
-
}
|
838 |
-
|
839 |
-
}
|
840 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lib/tribe-field.class.php
CHANGED
@@ -42,13 +42,13 @@ if ( !class_exists('TribeField') ) {
|
|
42 |
* field defaults (static)
|
43 |
* @var array
|
44 |
*/
|
45 |
-
public
|
46 |
|
47 |
/**
|
48 |
* valid field types (static)
|
49 |
* @var array
|
50 |
*/
|
51 |
-
public
|
52 |
|
53 |
|
54 |
/**
|
42 |
* field defaults (static)
|
43 |
* @var array
|
44 |
*/
|
45 |
+
public $defaults;
|
46 |
|
47 |
/**
|
48 |
* valid field types (static)
|
49 |
* @var array
|
50 |
*/
|
51 |
+
public $valid_field_types;
|
52 |
|
53 |
|
54 |
/**
|
lib/tribe-settings-tab.class.php
CHANGED
@@ -36,7 +36,7 @@ if ( !class_exists( 'TribeSettingsTab' ) ) {
|
|
36 |
* Defaults for tabs
|
37 |
* @var array
|
38 |
*/
|
39 |
-
public
|
40 |
|
41 |
/**
|
42 |
* class constructor
|
@@ -89,7 +89,7 @@ if ( !class_exists( 'TribeSettingsTab' ) ) {
|
|
89 |
* @return array $tabs the filtered tabs
|
90 |
*/
|
91 |
public function addTab( $tabs ) {
|
92 |
-
$hideSettingsTabs = TribeEvents::getNetworkOption( 'hideSettingsTabs', array( ) );
|
93 |
if ( ( isset( $this->fields ) || has_action( 'tribe_settings_content_tab_' . $this->id ) ) && ( empty( $hideSettingsTabs ) || !in_array( $this->id, $hideSettingsTabs ) ) ) {
|
94 |
if ( ( is_network_admin() && $this->args['network_admin'] ) || ( !is_network_admin() && !$this->args['network_admin'] ) ) {
|
95 |
$tabs[$this->id] = $this->name;
|
36 |
* Defaults for tabs
|
37 |
* @var array
|
38 |
*/
|
39 |
+
public $defaults;
|
40 |
|
41 |
/**
|
42 |
* class constructor
|
89 |
* @return array $tabs the filtered tabs
|
90 |
*/
|
91 |
public function addTab( $tabs ) {
|
92 |
+
$hideSettingsTabs = TribeEvents::instance()->getNetworkOption( 'hideSettingsTabs', array( ) );
|
93 |
if ( ( isset( $this->fields ) || has_action( 'tribe_settings_content_tab_' . $this->id ) ) && ( empty( $hideSettingsTabs ) || !in_array( $this->id, $hideSettingsTabs ) ) ) {
|
94 |
if ( ( is_network_admin() && $this->args['network_admin'] ) || ( !is_network_admin() && !$this->args['network_admin'] ) ) {
|
95 |
$tabs[$this->id] = $this->name;
|
lib/tribe-settings.class.php
CHANGED
@@ -25,87 +25,87 @@ if ( !class_exists( 'TribeSettings' ) ) {
|
|
25 |
* filtered on class construct
|
26 |
* @var array
|
27 |
*/
|
28 |
-
public
|
29 |
|
30 |
/**
|
31 |
* All the tabs registered, not just the ones that will appear
|
32 |
* @var array
|
33 |
*/
|
34 |
-
public
|
35 |
|
36 |
/**
|
37 |
* multidimentional array of the fields that will be generated
|
38 |
* for the entire settings panel, tabs are represented in the array keys
|
39 |
* @var array
|
40 |
*/
|
41 |
-
public
|
42 |
|
43 |
/**
|
44 |
* the default tab for the settings panel
|
45 |
* this should be a tab ID
|
46 |
* @var string
|
47 |
*/
|
48 |
-
public
|
49 |
|
50 |
/**
|
51 |
* the current tab being displayed
|
52 |
* @var string
|
53 |
*/
|
54 |
-
public
|
55 |
|
56 |
/**
|
57 |
* tabs that shouldn't show the save button
|
58 |
* @var array
|
59 |
*/
|
60 |
-
public
|
61 |
|
62 |
/**
|
63 |
* the slug used in the admin to generate the settings page
|
64 |
* @var string
|
65 |
*/
|
66 |
-
public
|
67 |
|
68 |
/**
|
69 |
* the menu name used for the settings page
|
70 |
* @var string
|
71 |
*/
|
72 |
-
public
|
73 |
|
74 |
/**
|
75 |
* the required capability for the settings page
|
76 |
* @var string
|
77 |
*/
|
78 |
-
public
|
79 |
|
80 |
/**
|
81 |
* errors that occur after a save operation
|
82 |
* @var mixed
|
83 |
*/
|
84 |
-
public
|
85 |
|
86 |
/**
|
87 |
* POST data before/after save
|
88 |
* @var mixed
|
89 |
*/
|
90 |
-
public
|
91 |
|
92 |
/**
|
93 |
* the $current_screen name corresponding to the admin page
|
94 |
* @var string
|
95 |
*/
|
96 |
-
public
|
97 |
|
98 |
/**
|
99 |
* true if a major error that prevents saving occurred
|
100 |
* @var bool
|
101 |
*/
|
102 |
-
public
|
103 |
|
104 |
/**
|
105 |
* holds validated fields
|
106 |
* @var array
|
107 |
*/
|
108 |
-
public
|
109 |
|
110 |
/**
|
111 |
* Static Singleton Factory Method
|
@@ -433,9 +433,9 @@ if ( !class_exists( 'TribeSettings' ) ) {
|
|
433 |
|
434 |
if ( $option_id == TribeEvents::OPTIONNAME ) {
|
435 |
// save using the TribeEvents method
|
436 |
-
TribeEvents::setOptions( $options );
|
437 |
} elseif ( $option_id == TribeEvents::OPTIONNAMENETWORK ) {
|
438 |
-
TribeEvents::setNetworkOptions( $options );
|
439 |
} else {
|
440 |
// save using regular WP method
|
441 |
if ( is_network_admin() )
|
25 |
* filtered on class construct
|
26 |
* @var array
|
27 |
*/
|
28 |
+
public $tabs;
|
29 |
|
30 |
/**
|
31 |
* All the tabs registered, not just the ones that will appear
|
32 |
* @var array
|
33 |
*/
|
34 |
+
public $allTabs;
|
35 |
|
36 |
/**
|
37 |
* multidimentional array of the fields that will be generated
|
38 |
* for the entire settings panel, tabs are represented in the array keys
|
39 |
* @var array
|
40 |
*/
|
41 |
+
public $fields;
|
42 |
|
43 |
/**
|
44 |
* the default tab for the settings panel
|
45 |
* this should be a tab ID
|
46 |
* @var string
|
47 |
*/
|
48 |
+
public $defaultTab;
|
49 |
|
50 |
/**
|
51 |
* the current tab being displayed
|
52 |
* @var string
|
53 |
*/
|
54 |
+
public $currentTab;
|
55 |
|
56 |
/**
|
57 |
* tabs that shouldn't show the save button
|
58 |
* @var array
|
59 |
*/
|
60 |
+
public $noSaveTabs;
|
61 |
|
62 |
/**
|
63 |
* the slug used in the admin to generate the settings page
|
64 |
* @var string
|
65 |
*/
|
66 |
+
public $adminSlug;
|
67 |
|
68 |
/**
|
69 |
* the menu name used for the settings page
|
70 |
* @var string
|
71 |
*/
|
72 |
+
public $menuName;
|
73 |
|
74 |
/**
|
75 |
* the required capability for the settings page
|
76 |
* @var string
|
77 |
*/
|
78 |
+
public $requiredCap;
|
79 |
|
80 |
/**
|
81 |
* errors that occur after a save operation
|
82 |
* @var mixed
|
83 |
*/
|
84 |
+
public $errors;
|
85 |
|
86 |
/**
|
87 |
* POST data before/after save
|
88 |
* @var mixed
|
89 |
*/
|
90 |
+
public $sent_data;
|
91 |
|
92 |
/**
|
93 |
* the $current_screen name corresponding to the admin page
|
94 |
* @var string
|
95 |
*/
|
96 |
+
public $admin_page;
|
97 |
|
98 |
/**
|
99 |
* true if a major error that prevents saving occurred
|
100 |
* @var bool
|
101 |
*/
|
102 |
+
public $major_error;
|
103 |
|
104 |
/**
|
105 |
* holds validated fields
|
106 |
* @var array
|
107 |
*/
|
108 |
+
public $validated;
|
109 |
|
110 |
/**
|
111 |
* Static Singleton Factory Method
|
433 |
|
434 |
if ( $option_id == TribeEvents::OPTIONNAME ) {
|
435 |
// save using the TribeEvents method
|
436 |
+
TribeEvents::instance()->setOptions( $options );
|
437 |
} elseif ( $option_id == TribeEvents::OPTIONNAMENETWORK ) {
|
438 |
+
TribeEvents::instance()->setNetworkOptions( $options );
|
439 |
} else {
|
440 |
// save using regular WP method
|
441 |
if ( is_network_admin() )
|
lib/tribe-template-factory.class.php
CHANGED
@@ -80,20 +80,22 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
80 |
protected function hooks() {
|
81 |
|
82 |
// set up queries, vars, etc that needs to be used in this view
|
83 |
-
add_action( 'tribe_events_before_view', array( $this, 'setup_view') );
|
84 |
|
85 |
-
// set notices
|
86 |
add_action( 'tribe_events_before_view', array( $this, 'set_notices') );
|
87 |
|
88 |
// Don't show the comments form inside the view (if comments are enabled,
|
89 |
// they'll show on their own after the loop)
|
90 |
-
|
|
|
|
|
91 |
|
92 |
// Remove the comments template entirely if needed
|
93 |
add_filter('tribe_get_option', array( $this, 'comments_off' ), 10, 2 );
|
94 |
|
95 |
// set up meta used in this view
|
96 |
-
add_action( 'tribe_events_before_view', array( $this, 'setup_meta') );
|
97 |
|
98 |
// cleanup after view (reset query, etc)
|
99 |
add_action( 'tribe_events_after_view', array( $this, 'shutdown_view' ) );
|
@@ -227,43 +229,46 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
227 |
**/
|
228 |
public function set_notices() {
|
229 |
global $wp_query;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
|
231 |
-
//
|
232 |
-
if ( !
|
233 |
$search_term = $wp_query->query_vars['s'];
|
234 |
-
} else if ( !empty( $_POST['tribe-bar-search'] ) ) {
|
235 |
-
$search_term = $_POST['tribe-bar-search'];
|
236 |
}
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
|
|
|
|
|
|
|
|
241 |
}
|
242 |
|
243 |
-
//
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
} else {
|
262 |
-
TribeEvents::setNotice( 'events-not-found', __('No matching events ', 'tribe-events-calendar') . $is_cat_message );
|
263 |
-
}
|
264 |
-
} elseif( tribe_is_past() ) {
|
265 |
-
TribeEvents::setNotice( 'events-past-not-found', __('No previous events ', 'tribe-events-calendar') . $is_cat_message );
|
266 |
-
}
|
267 |
}
|
268 |
}
|
269 |
|
@@ -321,9 +326,7 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
321 |
* @since 3.0
|
322 |
**/
|
323 |
public function shutdown_view() {
|
324 |
-
|
325 |
$this->unhook();
|
326 |
-
|
327 |
}
|
328 |
|
329 |
/**
|
@@ -349,7 +352,9 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
349 |
remove_action( 'tribe_events_before_view', array( $this, 'set_notices') );
|
350 |
|
351 |
// Remove the comments template
|
352 |
-
|
|
|
|
|
353 |
|
354 |
// set up meta used in this view
|
355 |
remove_action( 'tribe_events_before_view', array( $this, 'setup_meta') );
|
@@ -408,7 +413,6 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
408 |
* @since 3.0
|
409 |
**/
|
410 |
public function remove_comments_template( $template ) {
|
411 |
-
remove_filter( 'comments_template', array( $this, 'remove_comments_template' ) );
|
412 |
return TribeEvents::instance()->pluginPath . 'admin-views/no-comments.php';
|
413 |
}
|
414 |
|
@@ -557,7 +561,7 @@ if( !class_exists('Tribe_Template_Factory') ) {
|
|
557 |
self::$vendor_scripts[] = $placeholder_handle;
|
558 |
break;
|
559 |
case 'ajax-calendar':
|
560 |
-
$deps = array_merge( $deps, array( 'jquery', $prefix . '-calendar-script' ) );
|
561 |
$ajax_data = array( "ajaxurl" => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) );
|
562 |
$path = self::getMinFile( $resources_url . 'tribe-events-ajax-calendar.js', true );
|
563 |
wp_enqueue_script( 'tribe-events-calendar', $path, $deps, apply_filters( 'tribe_events_js_version', TribeEvents::VERSION ), true );
|
80 |
protected function hooks() {
|
81 |
|
82 |
// set up queries, vars, etc that needs to be used in this view
|
83 |
+
add_action( 'tribe_events_before_view', array( $this, 'setup_view' ) );
|
84 |
|
85 |
+
// set notices
|
86 |
add_action( 'tribe_events_before_view', array( $this, 'set_notices') );
|
87 |
|
88 |
// Don't show the comments form inside the view (if comments are enabled,
|
89 |
// they'll show on their own after the loop)
|
90 |
+
if ( ! ( tribe_get_option('tribeEventsTemplate', 'default') == '' ) ) {
|
91 |
+
add_filter('comments_template', array( $this, 'remove_comments_template' ) );
|
92 |
+
}
|
93 |
|
94 |
// Remove the comments template entirely if needed
|
95 |
add_filter('tribe_get_option', array( $this, 'comments_off' ), 10, 2 );
|
96 |
|
97 |
// set up meta used in this view
|
98 |
+
add_action( 'tribe_events_before_view', array( $this, 'setup_meta' ) );
|
99 |
|
100 |
// cleanup after view (reset query, etc)
|
101 |
add_action( 'tribe_events_after_view', array( $this, 'shutdown_view' ) );
|
229 |
**/
|
230 |
public function set_notices() {
|
231 |
global $wp_query;
|
232 |
+
$tribe = TribeEvents::instance();
|
233 |
+
$geographic_term = '';
|
234 |
+
$search_term = '';
|
235 |
+
$tax_term = '';
|
236 |
+
|
237 |
+
// By default we only display notices if no events could be found
|
238 |
+
if ( have_posts() ) return;
|
239 |
|
240 |
+
// Do we have a keyword or place name search?
|
241 |
+
if ( !empty( $wp_query->query_vars['s'] ) ) {
|
242 |
$search_term = $wp_query->query_vars['s'];
|
|
|
|
|
243 |
}
|
244 |
+
elseif ( !empty( $_REQUEST['tribe-bar-search'] ) ) {
|
245 |
+
$search_term = $_REQUEST['tribe-bar-search'];
|
246 |
+
}
|
247 |
+
elseif ( !empty( $_REQUEST['tribe-bar-geoloc']) ) {
|
248 |
+
$geographic_term = $_REQUEST['tribe-bar-geoloc'];
|
249 |
+
}
|
250 |
+
if ( is_tax( $tribe->get_event_taxonomy() ) ) {
|
251 |
+
$tax_term = get_term_by( 'slug', get_query_var( 'term' ), $tribe->get_event_taxonomy() );
|
252 |
}
|
253 |
|
254 |
+
// Set an appropriate notice
|
255 |
+
if ( ! empty( $search_term ) ) {
|
256 |
+
TribeEvents::setNotice( 'event-search-no-results', sprintf( __( 'There were no results found for <strong>"%s"</strong>.', 'tribe-events-calendar' ), esc_html($search_term) ) );
|
257 |
+
}
|
258 |
+
elseif ( ! empty( $geographic_term ) ) {
|
259 |
+
TribeEvents::setNotice( 'event-search-no-results', sprintf( __( 'No results were found for events in or near <strong>"%s"</strong>.', 'tribe-events-calendar-pro' ), esc_html($geographic_term) ) );
|
260 |
+
}
|
261 |
+
elseif ( ! empty( $tax_term ) && tribe_is_upcoming() && ( date('Y-m-d') === date('Y-m-d', strtotime($tribe->date) ) ) ) {
|
262 |
+
TribeEvents::setNotice( 'events-not-found', sprintf( __('No upcoming events listed under %s. Check out upcoming events for this category or view the full calendar.', 'tribe-events-calendar') . $tax_term ) );
|
263 |
+
}
|
264 |
+
elseif ( ! empty( $tax_term ) && tribe_is_upcoming() ) {
|
265 |
+
TribeEvents::setNotice( 'events-not-found', sprintf( __('No matching events listed under %s. Check out upcoming events for this category or view the full calendar.', 'tribe-events-calendar') . $tax_term ) );
|
266 |
+
}
|
267 |
+
elseif ( ! empty( $tax_term ) &&tribe_is_past() ) {
|
268 |
+
TribeEvents::setNotice( 'events-past-not-found', __('No previous events ', 'tribe-events-calendar') . $tax_term );
|
269 |
+
}
|
270 |
+
else {
|
271 |
+
TribeEvents::setNotice( 'event-search-no-results', __( 'There were no results found.', 'tribe-events-calendar-pro' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
}
|
273 |
}
|
274 |
|
326 |
* @since 3.0
|
327 |
**/
|
328 |
public function shutdown_view() {
|
|
|
329 |
$this->unhook();
|
|
|
330 |
}
|
331 |
|
332 |
/**
|
352 |
remove_action( 'tribe_events_before_view', array( $this, 'set_notices') );
|
353 |
|
354 |
// Remove the comments template
|
355 |
+
if ( ! ( tribe_get_option('tribeEventsTemplate', 'default') == '' ) ) {
|
356 |
+
remove_filter('comments_template', array( $this, 'remove_comments_template' ) );
|
357 |
+
}
|
358 |
|
359 |
// set up meta used in this view
|
360 |
remove_action( 'tribe_events_before_view', array( $this, 'setup_meta') );
|
413 |
* @since 3.0
|
414 |
**/
|
415 |
public function remove_comments_template( $template ) {
|
|
|
416 |
return TribeEvents::instance()->pluginPath . 'admin-views/no-comments.php';
|
417 |
}
|
418 |
|
561 |
self::$vendor_scripts[] = $placeholder_handle;
|
562 |
break;
|
563 |
case 'ajax-calendar':
|
564 |
+
$deps = array_merge( $deps, array( 'jquery', $prefix . '-bootstrap-datepicker', $prefix . '-calendar-script' ) );
|
565 |
$ajax_data = array( "ajaxurl" => admin_url( 'admin-ajax.php', ( is_ssl() ? 'https' : 'http' ) ) );
|
566 |
$path = self::getMinFile( $resources_url . 'tribe-events-ajax-calendar.js', true );
|
567 |
wp_enqueue_script( 'tribe-events-calendar', $path, $deps, apply_filters( 'tribe_events_js_version', TribeEvents::VERSION ), true );
|
lib/tribe-templates.class.php
CHANGED
@@ -24,14 +24,21 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
24 |
*/
|
25 |
public static $isMainLoop = false;
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
/**
|
29 |
* Initialize the Template Yumminess!
|
30 |
*/
|
31 |
public static function init() {
|
32 |
|
33 |
-
//
|
34 |
-
add_filter( 'template_include', array( __CLASS__, 'templateChooser') );
|
35 |
|
36 |
// include our view class
|
37 |
add_action( 'template_redirect', 'tribe_initialize_view' );
|
@@ -39,16 +46,19 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
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 |
// don't query the database for the spoofed post
|
43 |
-
wp_cache_set(self::spoofed_post()->ID, self::spoofed_post(), 'posts');
|
44 |
-
wp_cache_set(self::spoofed_post()->ID, array(true), 'post_meta');
|
45 |
|
46 |
// there's no template redirect on ajax, so we include the template class right before the view is included
|
47 |
-
if (defined('DOING_AJAX') && DOING_AJAX) {
|
48 |
add_action( 'tribe_pre_get_view', 'tribe_initialize_view' );
|
49 |
}
|
50 |
|
51 |
-
add_action( 'wp_head', array( __CLASS__, 'wpHeadFinished'), 999 );
|
52 |
|
53 |
}
|
54 |
|
@@ -58,9 +68,9 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
58 |
*
|
59 |
* @return string Path to template
|
60 |
*/
|
61 |
-
public static function templateChooser($template) {
|
62 |
$events = TribeEvents::instance();
|
63 |
-
do_action('tribe_tec_template_chooser', $template);
|
64 |
|
65 |
// hijack this method right up front if it's a 404
|
66 |
if ( is_404() && $events->displaying == 'single-event' && apply_filters( 'tribe_events_templates_is_404', '__return_true' ) )
|
@@ -71,18 +81,18 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
71 |
return $template;
|
72 |
}
|
73 |
|
74 |
-
if( tribe_get_option('tribeEventsTemplate', 'default') == '' ) {
|
75 |
-
return self::getTemplateHierarchy('default-template');
|
76 |
} else {
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
if ( ! is_single() || ! post_password_required()) {
|
81 |
add_action( 'loop_start', array(__CLASS__, 'setup_ecp_template' ) );
|
82 |
}
|
83 |
|
84 |
-
$template = locate_template( tribe_get_option('tribeEventsTemplate', 'default') == 'default' ? 'page.php' : tribe_get_option('tribeEventsTemplate', 'default') );
|
85 |
-
if ($template == '')
|
|
|
|
|
86 |
|
87 |
// remove singular body class if sidebar-page.php
|
88 |
if( $template == get_stylesheet_directory() . '/sidebar-page.php' ) {
|
@@ -102,7 +112,6 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
102 |
* @since 3.0
|
103 |
**/
|
104 |
public static function instantiate_template_class( $class = false ) {
|
105 |
-
|
106 |
if ( tribe_is_event_query() ) {
|
107 |
if ( ! $class ) {
|
108 |
$class = self::get_current_template_class();
|
@@ -120,9 +129,9 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
120 |
* @return mixed
|
121 |
*/
|
122 |
public function remove_singular_body_class( $classes ) {
|
123 |
-
$key = array_search('singular', $classes);
|
124 |
if( $key ) {
|
125 |
-
unset($classes[ $key ]);
|
126 |
}
|
127 |
return $classes;
|
128 |
}
|
@@ -133,7 +142,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
133 |
* @param array $classes List of classes to filter
|
134 |
* @return array
|
135 |
*/
|
136 |
-
public function add_singular_body_class( $classes ) {
|
137 |
$classes[] = 'singular';
|
138 |
return $classes;
|
139 |
}
|
@@ -146,34 +155,6 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
146 |
self::$wpHeadComplete = true;
|
147 |
}
|
148 |
|
149 |
-
/**
|
150 |
-
* Set up filter to get rid of the repeating title if the page template is not the default events template.
|
151 |
-
*/
|
152 |
-
public function remove_title_from_page() {
|
153 |
-
add_filter( 'the_title', array( __CLASS__, 'remove_default_title' ), 1 );
|
154 |
-
}
|
155 |
-
|
156 |
-
|
157 |
-
/**
|
158 |
-
* Filter to get rid of the repeating title if the page template is not the default events template.
|
159 |
-
*
|
160 |
-
* @param string $title Title
|
161 |
-
* @return string Title
|
162 |
-
*/
|
163 |
-
public function remove_title_filter( $title ) {
|
164 |
-
remove_filter( 'the_title', array( __CLASS__, 'remove_default_title' ), 1 );
|
165 |
-
return $title;
|
166 |
-
}
|
167 |
-
|
168 |
-
/**
|
169 |
-
* Filter to get rid of the default page title
|
170 |
-
*
|
171 |
-
* @param string $title Title
|
172 |
-
* @return string Title
|
173 |
-
*/
|
174 |
-
public function remove_default_title( $title ) {
|
175 |
-
return '';
|
176 |
-
}
|
177 |
|
178 |
/**
|
179 |
* This is where the magic happens where we run some ninja code that hooks the query to resolve to an events template.
|
@@ -184,19 +165,19 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
184 |
|
185 |
do_action( 'tribe_events_filter_the_page_title' );
|
186 |
|
187 |
-
if( self::is_main_loop($query) && self::$wpHeadComplete) {
|
188 |
|
189 |
// on loop start, unset the global post so that template tags don't work before the_content()
|
190 |
-
add_action('the_post', array(__CLASS__, 'spoof_the_post'));
|
191 |
|
192 |
// on the_content, load our events template
|
193 |
-
add_filter('the_content', array(__CLASS__, 'load_ecp_into_page_template') );
|
194 |
|
195 |
// remove the comments template
|
196 |
-
add_filter('comments_template', array(__CLASS__, 'load_ecp_comments_page_template') );
|
197 |
|
198 |
// only do this once
|
199 |
-
remove_action( 'loop_start', array(__CLASS__, 'setup_ecp_template') );
|
200 |
}
|
201 |
}
|
202 |
|
@@ -208,7 +189,45 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
208 |
**/
|
209 |
public static function spoof_the_post() {
|
210 |
$GLOBALS['post'] = self::spoofed_post();
|
211 |
-
remove_action('the_post', array(__CLASS__, 'spoof_the_post'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
}
|
213 |
|
214 |
|
@@ -218,8 +237,8 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
218 |
* @param WP_Query $query
|
219 |
* @return bool
|
220 |
*/
|
221 |
-
private static function is_main_loop($query) {
|
222 |
-
if (method_exists($query, 'is_main_query')) // WP 3.3+
|
223 |
return $query->is_main_query();
|
224 |
|
225 |
global $wp_the_query;
|
@@ -237,21 +256,21 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
237 |
|
238 |
// list view
|
239 |
if ( tribe_is_list_view() ) {
|
240 |
-
$template = self::getTemplateHierarchy( 'list', array('disable_view_check' => true) );
|
241 |
}
|
242 |
|
243 |
// calendar view
|
244 |
if ( tribe_is_month() ) {
|
245 |
-
$template = self::getTemplateHierarchy( 'month', array('disable_view_check' => true) );
|
246 |
}
|
247 |
|
248 |
// single event view
|
249 |
-
if ( is_singular( TribeEvents::POSTTYPE ) && !tribe_is_showing_all() ) {
|
250 |
-
$template = self::getTemplateHierarchy( 'single-event', array('disable_view_check' => true) );
|
251 |
}
|
252 |
|
253 |
// apply filters
|
254 |
-
return apply_filters('tribe_current_events_page_template', $template);
|
255 |
|
256 |
}
|
257 |
|
@@ -281,7 +300,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
281 |
}
|
282 |
|
283 |
// apply filters
|
284 |
-
return apply_filters('tribe_current_events_template_class', $class);
|
285 |
|
286 |
}
|
287 |
|
@@ -293,7 +312,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
293 |
*/
|
294 |
public static function load_ecp_into_page_template() {
|
295 |
// only run once!!!
|
296 |
-
remove_filter('the_content', array(__CLASS__, 'load_ecp_into_page_template') );
|
297 |
|
298 |
self::restoreQuery();
|
299 |
|
@@ -317,36 +336,11 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
317 |
}
|
318 |
|
319 |
|
320 |
-
|
321 |
-
* Loads the title into the page template
|
322 |
-
*
|
323 |
-
* @param string $title Title
|
324 |
-
* @param int $post_id Id of the post
|
325 |
-
*
|
326 |
-
* @return string
|
327 |
-
*/
|
328 |
-
public static function load_ecp_title_into_page_template($title, $post_id) {
|
329 |
-
global $post;
|
330 |
-
|
331 |
-
if ( !is_single() )
|
332 |
-
return tribe_get_events_title();
|
333 |
-
|
334 |
-
// if the helper class for single event template hasn't been loaded fix that
|
335 |
-
if( !class_exists('Tribe_Events_Single_Event_Template') )
|
336 |
-
self::getTemplateHierarchy('single-event');
|
337 |
-
|
338 |
-
// single event title
|
339 |
-
$before_title = apply_filters( 'tribe_events_single_event_before_the_title', '', $post_id );
|
340 |
-
$the_title = apply_filters( 'tribe_events_single_event_the_title', $title, $title, $post_id );
|
341 |
-
$after_title = apply_filters( 'tribe_events_single_event_after_the_title', '', $post_id );
|
342 |
-
return $before_title . $the_title . $after_title;
|
343 |
-
}
|
344 |
-
|
345 |
-
public static function load_ecp_comments_page_template($template) {
|
346 |
$tribe_ecp = TribeEvents::instance();
|
347 |
|
348 |
-
remove_filter('comments_template', array(__CLASS__, 'load_ecp_comments_page_template') );
|
349 |
-
if (!is_single() || tribe_is_showing_all() || (tribe_get_option('showComments',false) === false)) {
|
350 |
return $tribe_ecp->pluginPath . 'admin-views/no-comments.php';
|
351 |
}
|
352 |
return $template;
|
@@ -359,16 +353,16 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
359 |
* @return WP_Query
|
360 |
* @since 2.1
|
361 |
*/
|
362 |
-
public static function showInLoops($query) {
|
363 |
|
364 |
-
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']) {
|
365 |
|
366 |
// 3.3 know-how for main query check
|
367 |
// if (method_exists($query, 'is_main_query')) {
|
368 |
-
if (self::is_main_loop($query)) {
|
369 |
self::$isMainLoop = true;
|
370 |
$post_types = array('post', TribeEvents::POSTTYPE);
|
371 |
-
$query->set('post_type', $post_types);
|
372 |
}
|
373 |
|
374 |
}
|
@@ -376,31 +370,6 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
376 |
return $query;
|
377 |
}
|
378 |
|
379 |
-
/**
|
380 |
-
* Filters the_content to show the event when we are in the main loop and showing events
|
381 |
-
*
|
382 |
-
* @param string $content
|
383 |
-
* @return string Filtered content
|
384 |
-
* @since 2.1
|
385 |
-
*/
|
386 |
-
public static function hijackContentInMainLoop($content) {
|
387 |
-
|
388 |
-
// only run once!!!
|
389 |
-
remove_filter('the_content', array(__CLASS__, 'hijackContentInMainLoop') );
|
390 |
-
|
391 |
-
global $post;
|
392 |
-
if (tribe_is_in_main_loop() && tribe_is_event($post->ID)) {
|
393 |
-
ob_start();
|
394 |
-
echo stripslashes(tribe_get_option('tribeEventsBeforeHTML'));
|
395 |
-
include_once(self::getTemplateHierarchy('in-loop'));
|
396 |
-
echo stripslashes(tribe_get_option('tribeEventsAfterHTML'));
|
397 |
-
$content = ob_get_contents();
|
398 |
-
ob_end_clean();
|
399 |
-
}
|
400 |
-
|
401 |
-
return $content;
|
402 |
-
}
|
403 |
-
|
404 |
/**
|
405 |
* Loads theme files in appropriate hierarchy: 1) child theme,
|
406 |
* 2) parent template, 3) plugin resources. will look in the events/
|
@@ -408,7 +377,6 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
408 |
*
|
409 |
* @param string $template template file to search for
|
410 |
* @param array $args additional arguments to affect the template path
|
411 |
-
* - subfolder
|
412 |
* - namespace
|
413 |
* - plugin_path
|
414 |
* - disable_view_check - bypass the check to see if the view is enabled
|
@@ -416,25 +384,23 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
416 |
* @author Matt Wiebe
|
417 |
**/
|
418 |
public static function getTemplateHierarchy( $template, $args = array() ) {
|
419 |
-
if ( !is_array( $args ) ) {
|
420 |
$args = array();
|
421 |
$passed = func_get_args();
|
422 |
-
$backwards_map = array( '
|
423 |
if ( count( $passed > 1 ) ) {
|
424 |
-
for ( $i = 1 ; $i < count($passed) ; $i++ ) {
|
425 |
$args[$backwards_map[$i-1]] = $passed[$i];
|
426 |
}
|
427 |
}
|
428 |
}
|
429 |
|
430 |
$args = wp_parse_args( $args, array(
|
431 |
-
'subfolder' => '',
|
432 |
'namespace' => '/',
|
433 |
'plugin_path' => '',
|
434 |
'disable_view_check' => false,
|
435 |
-
));
|
436 |
/**
|
437 |
-
* @var string $subfolder
|
438 |
* @var string $namespace
|
439 |
* @var string $pluginpath
|
440 |
* @var bool $disable_view_check
|
@@ -443,7 +409,8 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
443 |
|
444 |
$tec = TribeEvents::instance();
|
445 |
|
446 |
-
|
|
|
447 |
$template .= '.php';
|
448 |
}
|
449 |
|
@@ -451,51 +418,104 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
451 |
require_once( $tec->pluginPath . 'public/advanced-functions/meta.php' );
|
452 |
|
453 |
// Allow base path for templates to be filtered
|
454 |
-
$template_base_paths = apply_filters( 'tribe_events_template_paths', (array) TribeEvents::instance()->pluginPath);
|
455 |
|
456 |
// backwards compatibility if $plugin_path arg is used
|
457 |
-
if ( $plugin_path && ! in_array($plugin_path, $template_base_paths) ) {
|
458 |
-
$template_base_paths
|
459 |
}
|
460 |
|
461 |
-
// setup subfolder options
|
462 |
-
$subfolder = !empty($subfolder) ? trailingslashit($subfolder) : $subfolder;
|
463 |
-
|
464 |
// ensure that addon plugins look in the right override folder in theme
|
465 |
-
$namespace = !empty(
|
|
|
|
|
466 |
|
467 |
-
//
|
468 |
-
$
|
469 |
-
|
470 |
-
$namespaces[$n] = 'tribe-events' . trailingslashit( $namespace ) . $subfolder . $template;
|
471 |
}
|
472 |
|
473 |
-
|
474 |
-
foreach ( $template_base_paths as $template_base_path ) {
|
475 |
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
482 |
|
483 |
-
|
484 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
486 |
|
487 |
-
|
488 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
}
|
|
|
490 |
|
491 |
-
|
|
|
|
|
|
|
|
|
492 |
|
493 |
-
|
494 |
-
|
495 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
496 |
}
|
497 |
|
498 |
-
return apply_filters( 'tribe_events_template_'.$template, $file);
|
499 |
}
|
500 |
|
501 |
|
@@ -507,18 +527,18 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
507 |
* @return bool|string Path to stylesheet
|
508 |
*/
|
509 |
public static function locate_stylesheet( $stylesheets, $fallback = false ) {
|
510 |
-
if ( !is_array($stylesheets) ) {
|
511 |
$stylesheets = array( $stylesheets );
|
512 |
}
|
513 |
if ( empty( $stylesheets ) ) {
|
514 |
return $fallback;
|
515 |
}
|
516 |
foreach ( $stylesheets as $filename ) {
|
517 |
-
if ( file_exists(STYLESHEETPATH . '/' . $filename)) {
|
518 |
-
$located = trailingslashit(get_stylesheet_directory_uri()).$filename;
|
519 |
break;
|
520 |
-
} else if ( file_exists(TEMPLATEPATH . '/' . $filename) ) {
|
521 |
-
$located = trailingslashit(get_template_directory_uri()).$filename;
|
522 |
break;
|
523 |
}
|
524 |
}
|
@@ -576,7 +596,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
576 |
'is_archive' => false,
|
577 |
'is_tax' => false,
|
578 |
);
|
579 |
-
return (object) $spoofed_post;
|
580 |
}
|
581 |
|
582 |
|
@@ -586,7 +606,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
586 |
public static function maybeSpoofQuery() {
|
587 |
|
588 |
// hijack this method right up front if it's a password protected post and the password isn't entered
|
589 |
-
if (is_single() && post_password_required()) {
|
590 |
return;
|
591 |
}
|
592 |
|
@@ -600,7 +620,7 @@ if (!class_exists('TribeEventsTemplates')) {
|
|
600 |
|
601 |
$GLOBALS['post'] = $spoofed_post;
|
602 |
$wp_query->posts[] = $spoofed_post;
|
603 |
-
$wp_query->post_count = count($wp_query->posts);
|
604 |
|
605 |
$wp_query->spoofed = true;
|
606 |
$wp_query->rewind_posts();
|
24 |
*/
|
25 |
public static $isMainLoop = false;
|
26 |
|
27 |
+
/**
|
28 |
+
* If the global post title has to be modified the original is stored here.
|
29 |
+
*
|
30 |
+
* @var bool|string
|
31 |
+
*/
|
32 |
+
protected static $original_post_title = false;
|
33 |
+
|
34 |
|
35 |
/**
|
36 |
* Initialize the Template Yumminess!
|
37 |
*/
|
38 |
public static function init() {
|
39 |
|
40 |
+
// Choose the wordpress theme template to use
|
41 |
+
add_filter( 'template_include', array( __CLASS__, 'templateChooser' ) );
|
42 |
|
43 |
// include our view class
|
44 |
add_action( 'template_redirect', 'tribe_initialize_view' );
|
46 |
// make sure we enter the loop by always having some posts in $wp_query
|
47 |
add_action( 'template_redirect', array( __CLASS__, 'maybeSpoofQuery' ) );
|
48 |
|
49 |
+
// maybe modify the global post object to blank out the title
|
50 |
+
add_action( 'tribe_tec_template_chooser', array( __CLASS__, 'maybe_modify_global_post_title' ) );
|
51 |
+
|
52 |
// don't query the database for the spoofed post
|
53 |
+
wp_cache_set( self::spoofed_post()->ID, self::spoofed_post(), 'posts' );
|
54 |
+
wp_cache_set( self::spoofed_post()->ID, array(true), 'post_meta');
|
55 |
|
56 |
// there's no template redirect on ajax, so we include the template class right before the view is included
|
57 |
+
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
58 |
add_action( 'tribe_pre_get_view', 'tribe_initialize_view' );
|
59 |
}
|
60 |
|
61 |
+
add_action( 'wp_head', array( __CLASS__, 'wpHeadFinished' ), 999 );
|
62 |
|
63 |
}
|
64 |
|
68 |
*
|
69 |
* @return string Path to template
|
70 |
*/
|
71 |
+
public static function templateChooser( $template ) {
|
72 |
$events = TribeEvents::instance();
|
73 |
+
do_action( 'tribe_tec_template_chooser', $template );
|
74 |
|
75 |
// hijack this method right up front if it's a 404
|
76 |
if ( is_404() && $events->displaying == 'single-event' && apply_filters( 'tribe_events_templates_is_404', '__return_true' ) )
|
81 |
return $template;
|
82 |
}
|
83 |
|
84 |
+
if ( tribe_get_option( 'tribeEventsTemplate', 'default' ) == '' ) {
|
85 |
+
return self::getTemplateHierarchy( 'default-template' );
|
86 |
} else {
|
87 |
|
88 |
+
if ( ! is_single() || ! post_password_required() ) {
|
|
|
|
|
89 |
add_action( 'loop_start', array(__CLASS__, 'setup_ecp_template' ) );
|
90 |
}
|
91 |
|
92 |
+
$template = locate_template( tribe_get_option( 'tribeEventsTemplate', 'default' ) == 'default' ? 'page.php' : tribe_get_option( 'tribeEventsTemplate', 'default' ) );
|
93 |
+
if ( $template == '' ) {
|
94 |
+
$template = get_index_template();
|
95 |
+
}
|
96 |
|
97 |
// remove singular body class if sidebar-page.php
|
98 |
if( $template == get_stylesheet_directory() . '/sidebar-page.php' ) {
|
112 |
* @since 3.0
|
113 |
**/
|
114 |
public static function instantiate_template_class( $class = false ) {
|
|
|
115 |
if ( tribe_is_event_query() ) {
|
116 |
if ( ! $class ) {
|
117 |
$class = self::get_current_template_class();
|
129 |
* @return mixed
|
130 |
*/
|
131 |
public function remove_singular_body_class( $classes ) {
|
132 |
+
$key = array_search( 'singular', $classes );
|
133 |
if( $key ) {
|
134 |
+
unset( $classes[ $key ] );
|
135 |
}
|
136 |
return $classes;
|
137 |
}
|
142 |
* @param array $classes List of classes to filter
|
143 |
* @return array
|
144 |
*/
|
145 |
+
public static function add_singular_body_class( $classes ) {
|
146 |
$classes[] = 'singular';
|
147 |
return $classes;
|
148 |
}
|
155 |
self::$wpHeadComplete = true;
|
156 |
}
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
/**
|
160 |
* This is where the magic happens where we run some ninja code that hooks the query to resolve to an events template.
|
165 |
|
166 |
do_action( 'tribe_events_filter_the_page_title' );
|
167 |
|
168 |
+
if( self::is_main_loop( $query ) && self::$wpHeadComplete ) {
|
169 |
|
170 |
// on loop start, unset the global post so that template tags don't work before the_content()
|
171 |
+
add_action( 'the_post', array(__CLASS__, 'spoof_the_post' ) );
|
172 |
|
173 |
// on the_content, load our events template
|
174 |
+
add_filter( 'the_content', array( __CLASS__, 'load_ecp_into_page_template' ) );
|
175 |
|
176 |
// remove the comments template
|
177 |
+
add_filter('comments_template', array( __CLASS__, 'load_ecp_comments_page_template' ) );
|
178 |
|
179 |
// only do this once
|
180 |
+
remove_action( 'loop_start', array( __CLASS__, 'setup_ecp_template' ) );
|
181 |
}
|
182 |
}
|
183 |
|
189 |
**/
|
190 |
public static function spoof_the_post() {
|
191 |
$GLOBALS['post'] = self::spoofed_post();
|
192 |
+
remove_action( 'the_post', array(__CLASS__, 'spoof_the_post' ) );
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Fix issues where themes display the_title() before the main loop starts.
|
198 |
+
*
|
199 |
+
* With such themes the title of single events can be displayed twice and, more crucially, it may result in the
|
200 |
+
* event views such as month view prominently displaying the title of the most recent event post (which may
|
201 |
+
* not even be included in the event itself).
|
202 |
+
*
|
203 |
+
* There's no bulletproof solution to this, but in special cases where this workaround is undesirable it can
|
204 |
+
* in fact be turned off by adding the following to wp-config.php:
|
205 |
+
*
|
206 |
+
* define( 'TRIBE_MODIFY_GLOBAL_TITLE', false );
|
207 |
+
*/
|
208 |
+
public static function maybe_modify_global_post_title() {
|
209 |
+
global $post;
|
210 |
+
|
211 |
+
// We will only interfere with event queries, where a post is set and this behaviour has not been turned off
|
212 |
+
if ( ! tribe_is_event_query() || ( defined('TRIBE_MODIFY_GLOBAL_TITLE') && ! TRIBE_MODIFY_GLOBAL_TITLE ) ) return;
|
213 |
+
if ( ! isset($post) || ! is_a( $post, 'WP_Post') ) return;
|
214 |
+
|
215 |
+
// Set the title to an empty string (but record the original)
|
216 |
+
self::$original_post_title = $post->post_title;
|
217 |
+
$post->post_title = apply_filters( 'tribe_set_global_post_title', '' );
|
218 |
+
|
219 |
+
// Restore as soon as we're ready to display one of our own views
|
220 |
+
add_action( 'tribe_pre_get_view', array( __CLASS__, 'restore_global_post_title' ) );
|
221 |
+
}
|
222 |
+
|
223 |
+
|
224 |
+
/**
|
225 |
+
* Restores the global $post title if it has previously been modified by self::maybe_modify_global_post_title().
|
226 |
+
*/
|
227 |
+
public static function restore_global_post_title() {
|
228 |
+
global $post;
|
229 |
+
$post->post_title = self::$original_post_title;
|
230 |
+
remove_action( 'tribe_pre_get_view', array( __CLASS__, 'restore_global_post_title' ) );
|
231 |
}
|
232 |
|
233 |
|
237 |
* @param WP_Query $query
|
238 |
* @return bool
|
239 |
*/
|
240 |
+
private static function is_main_loop( $query ) {
|
241 |
+
if ( method_exists( $query, 'is_main_query' ) ) // WP 3.3+
|
242 |
return $query->is_main_query();
|
243 |
|
244 |
global $wp_the_query;
|
256 |
|
257 |
// list view
|
258 |
if ( tribe_is_list_view() ) {
|
259 |
+
$template = self::getTemplateHierarchy( 'list', array( 'disable_view_check' => true ) );
|
260 |
}
|
261 |
|
262 |
// calendar view
|
263 |
if ( tribe_is_month() ) {
|
264 |
+
$template = self::getTemplateHierarchy( 'month', array( 'disable_view_check' => true ) );
|
265 |
}
|
266 |
|
267 |
// single event view
|
268 |
+
if ( is_singular( TribeEvents::POSTTYPE ) && ! tribe_is_showing_all() ) {
|
269 |
+
$template = self::getTemplateHierarchy( 'single-event', array( 'disable_view_check' => true ) );
|
270 |
}
|
271 |
|
272 |
// apply filters
|
273 |
+
return apply_filters( 'tribe_current_events_page_template', $template );
|
274 |
|
275 |
}
|
276 |
|
300 |
}
|
301 |
|
302 |
// apply filters
|
303 |
+
return apply_filters( 'tribe_current_events_template_class', $class );
|
304 |
|
305 |
}
|
306 |
|
312 |
*/
|
313 |
public static function load_ecp_into_page_template() {
|
314 |
// only run once!!!
|
315 |
+
remove_filter( 'the_content', array(__CLASS__, 'load_ecp_into_page_template' ) );
|
316 |
|
317 |
self::restoreQuery();
|
318 |
|
336 |
}
|
337 |
|
338 |
|
339 |
+
public static function load_ecp_comments_page_template( $template ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
340 |
$tribe_ecp = TribeEvents::instance();
|
341 |
|
342 |
+
remove_filter( 'comments_template', array( __CLASS__, 'load_ecp_comments_page_template' ) );
|
343 |
+
if ( ! is_single() || tribe_is_showing_all() || ( tribe_get_option('showComments',false ) === false ) ) {
|
344 |
return $tribe_ecp->pluginPath . 'admin-views/no-comments.php';
|
345 |
}
|
346 |
return $template;
|
353 |
* @return WP_Query
|
354 |
* @since 2.1
|
355 |
*/
|
356 |
+
public static function showInLoops( $query ) {
|
357 |
|
358 |
+
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'] ) {
|
359 |
|
360 |
// 3.3 know-how for main query check
|
361 |
// if (method_exists($query, 'is_main_query')) {
|
362 |
+
if ( self::is_main_loop( $query ) ) {
|
363 |
self::$isMainLoop = true;
|
364 |
$post_types = array('post', TribeEvents::POSTTYPE);
|
365 |
+
$query->set( 'post_type', $post_types );
|
366 |
}
|
367 |
|
368 |
}
|
370 |
return $query;
|
371 |
}
|
372 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
/**
|
374 |
* Loads theme files in appropriate hierarchy: 1) child theme,
|
375 |
* 2) parent template, 3) plugin resources. will look in the events/
|
377 |
*
|
378 |
* @param string $template template file to search for
|
379 |
* @param array $args additional arguments to affect the template path
|
|
|
380 |
* - namespace
|
381 |
* - plugin_path
|
382 |
* - disable_view_check - bypass the check to see if the view is enabled
|
384 |
* @author Matt Wiebe
|
385 |
**/
|
386 |
public static function getTemplateHierarchy( $template, $args = array() ) {
|
387 |
+
if ( ! is_array( $args ) ) {
|
388 |
$args = array();
|
389 |
$passed = func_get_args();
|
390 |
+
$backwards_map = array( 'namespace', 'plugin_path' );
|
391 |
if ( count( $passed > 1 ) ) {
|
392 |
+
for ( $i = 1 ; $i < count( $passed ) ; $i++ ) {
|
393 |
$args[$backwards_map[$i-1]] = $passed[$i];
|
394 |
}
|
395 |
}
|
396 |
}
|
397 |
|
398 |
$args = wp_parse_args( $args, array(
|
|
|
399 |
'namespace' => '/',
|
400 |
'plugin_path' => '',
|
401 |
'disable_view_check' => false,
|
402 |
+
) );
|
403 |
/**
|
|
|
404 |
* @var string $namespace
|
405 |
* @var string $pluginpath
|
406 |
* @var bool $disable_view_check
|
409 |
|
410 |
$tec = TribeEvents::instance();
|
411 |
|
412 |
+
// append .php to file name
|
413 |
+
if ( substr( $template, -4 ) != '.php' ) {
|
414 |
$template .= '.php';
|
415 |
}
|
416 |
|
418 |
require_once( $tec->pluginPath . 'public/advanced-functions/meta.php' );
|
419 |
|
420 |
// Allow base path for templates to be filtered
|
421 |
+
$template_base_paths = apply_filters( 'tribe_events_template_paths', ( array ) TribeEvents::instance()->pluginPath );
|
422 |
|
423 |
// backwards compatibility if $plugin_path arg is used
|
424 |
+
if ( $plugin_path && ! in_array( $plugin_path, $template_base_paths ) ) {
|
425 |
+
array_unshift( $template_base_paths, $plugin_path );
|
426 |
}
|
427 |
|
|
|
|
|
|
|
428 |
// ensure that addon plugins look in the right override folder in theme
|
429 |
+
$namespace = ! empty( $namespace ) ? trailingslashit( $namespace ) : $namespace;
|
430 |
+
|
431 |
+
$file = false;
|
432 |
|
433 |
+
// return 404 if curent view is disabled
|
434 |
+
if ( ! $disable_view_check && in_array( $tec->displaying, tribe_events_disabled_views() ) ) {
|
435 |
+
$file = get_404_template();
|
|
|
436 |
}
|
437 |
|
438 |
+
/* potential scenarios:
|
|
|
439 |
|
440 |
+
- the user has no template overrides
|
441 |
+
-> we can just look in our plugin dirs, for the specific path requested, don't need to worry about the namespace
|
442 |
+
- the user created template overrides without the namespace, which reference non-overrides without the namespace and, their own other overrides without the namespace
|
443 |
+
-> we need to look in their theme for the specific path requested
|
444 |
+
-> if not found, we need to look in our plugin views for the file by adding the namespace
|
445 |
+
- the user has template overrides using the namespace
|
446 |
+
-> we should look in the theme dir, then the plugin dir for the specific path requested, don't need to worry about the namespace
|
447 |
+
|
448 |
+
*/
|
449 |
+
|
450 |
+
// check if there are overrides at all
|
451 |
+
if ( locate_template( array( 'tribe-events/' ) ) ) {
|
452 |
+
$overrides_exist = true;
|
453 |
+
} else {
|
454 |
+
$overrides_exist = false;
|
455 |
+
}
|
456 |
|
457 |
+
if ( $overrides_exist ) {
|
458 |
+
// check the theme for specific file requested
|
459 |
+
$file = locate_template( array( 'tribe-events/'.$template ), false, false );
|
460 |
+
if ( ! $file ) {
|
461 |
+
// if not found, it could be our plugin requesting the file with the namespace,
|
462 |
+
// so check the theme for the path without the namespace
|
463 |
+
$files = array();
|
464 |
+
foreach ( array_keys( $template_base_paths ) as $namespace ) {
|
465 |
+
if ( ! empty( $namespace ) && ! is_numeric( $namespace ) ) {
|
466 |
+
$files[] = 'tribe-events' . str_replace( $namespace, '', $template );
|
467 |
+
}
|
468 |
+
}
|
469 |
+
$file = locate_template( $files, false, false );
|
470 |
+
if ( $file ) {
|
471 |
+
_deprecated_function( sprintf( __( 'Template overrides should be moved to the correct subdirectory: %s', 'tribe-events' ), str_replace( get_stylesheet_directory() . '/tribe-events/', '', $file ) ) , '3.2', $template );
|
472 |
+
}
|
473 |
}
|
474 |
+
}
|
475 |
+
|
476 |
+
// if the theme file wasn't found, check our plugins views dirs
|
477 |
+
if ( ! $file ) {
|
478 |
+
|
479 |
+
foreach ( $template_base_paths as $template_base_path ) {
|
480 |
+
|
481 |
+
// make sure directories are trailingslashed
|
482 |
+
$template_base_path = ! empty( $template_base_path ) ? trailingslashit( $template_base_path ) : $template_base_path;
|
483 |
|
484 |
+
$file = $template_base_path . 'views/' . $template;
|
485 |
+
|
486 |
+
$file = apply_filters( 'tribe_events_template', $file, $template );
|
487 |
+
|
488 |
+
// return the first one found
|
489 |
+
if ( file_exists( $file ) )
|
490 |
+
break;
|
491 |
+
else
|
492 |
+
$file = false;
|
493 |
}
|
494 |
+
}
|
495 |
|
496 |
+
// file wasn't found anywhere in the theme or in our plugin at the specifically requested path,
|
497 |
+
// and there are overrides, so look in our plugin for the file with the namespace added
|
498 |
+
// since it might be an old override requesting the file without the namespace
|
499 |
+
if ( ! $file && $overrides_exist ) {
|
500 |
+
foreach ( $template_base_paths as $_namespace => $template_base_path ) {
|
501 |
|
502 |
+
// make sure directories are trailingslashed
|
503 |
+
$template_base_path = ! empty( $template_base_path ) ? trailingslashit( $template_base_path ) : $template_base_path;
|
504 |
+
$_namespace = ! empty( $_namespace ) ? trailingslashit( $_namespace ) : $_namespace;
|
505 |
+
|
506 |
+
$file = $template_base_path . 'views/' . $_namespace . $template;
|
507 |
+
|
508 |
+
$file = apply_filters( 'tribe_events_template', $file, $template );
|
509 |
+
|
510 |
+
// return the first one found
|
511 |
+
if ( file_exists( $file ) ) {
|
512 |
+
_deprecated_function( sprintf( __( 'Template overrides should be moved to the correct subdirectory: tribe_get_template_part(\'%s\')', 'tribe-events' ), $template ) , '3.2', 'tribe_get_template_part(\''.$_namespace.$template.'\')');
|
513 |
+
break;
|
514 |
+
}
|
515 |
+
}
|
516 |
}
|
517 |
|
518 |
+
return apply_filters( 'tribe_events_template_'.$template, $file );
|
519 |
}
|
520 |
|
521 |
|
527 |
* @return bool|string Path to stylesheet
|
528 |
*/
|
529 |
public static function locate_stylesheet( $stylesheets, $fallback = false ) {
|
530 |
+
if ( ! is_array( $stylesheets ) ) {
|
531 |
$stylesheets = array( $stylesheets );
|
532 |
}
|
533 |
if ( empty( $stylesheets ) ) {
|
534 |
return $fallback;
|
535 |
}
|
536 |
foreach ( $stylesheets as $filename ) {
|
537 |
+
if ( file_exists( STYLESHEETPATH . '/' . $filename ) ) {
|
538 |
+
$located = trailingslashit( get_stylesheet_directory_uri() ).$filename;
|
539 |
break;
|
540 |
+
} else if ( file_exists(TEMPLATEPATH . '/' . $filename ) ) {
|
541 |
+
$located = trailingslashit( get_template_directory_uri() ).$filename;
|
542 |
break;
|
543 |
}
|
544 |
}
|
596 |
'is_archive' => false,
|
597 |
'is_tax' => false,
|
598 |
);
|
599 |
+
return ( object ) $spoofed_post;
|
600 |
}
|
601 |
|
602 |
|
606 |
public static function maybeSpoofQuery() {
|
607 |
|
608 |
// hijack this method right up front if it's a password protected post and the password isn't entered
|
609 |
+
if ( is_single() && post_password_required() ) {
|
610 |
return;
|
611 |
}
|
612 |
|
620 |
|
621 |
$GLOBALS['post'] = $spoofed_post;
|
622 |
$wp_query->posts[] = $spoofed_post;
|
623 |
+
$wp_query->post_count = count( $wp_query->posts );
|
624 |
|
625 |
$wp_query->spoofed = true;
|
626 |
$wp_query->rewind_posts();
|
lib/widget-list.class.php
CHANGED
@@ -48,7 +48,7 @@ if( !class_exists( 'TribeEventsListWidget' ) ) {
|
|
48 |
* @param string $namespace The namespace for the widget template stuff.
|
49 |
* @param string $pluginPath The pluginpath so we can locate the template stuff.
|
50 |
*/
|
51 |
-
function widget_output( $args, $instance, $template_name='list-widget'
|
52 |
global $wp_query, $tribe_ecp, $post;
|
53 |
extract( $args, EXTR_SKIP );
|
54 |
// The view expects all these $instance variables, which may not be set without pro
|
@@ -116,7 +116,7 @@ if( !class_exists( 'TribeEventsListWidget' ) ) {
|
|
116 |
echo '<ol class="hfeed vcalendar">';
|
117 |
foreach( $posts as $post ) :
|
118 |
setup_postdata( $post );
|
119 |
-
tribe_get_template_part(
|
120 |
endforeach;
|
121 |
echo "</ol><!-- .hfeed -->";
|
122 |
|
48 |
* @param string $namespace The namespace for the widget template stuff.
|
49 |
* @param string $pluginPath The pluginpath so we can locate the template stuff.
|
50 |
*/
|
51 |
+
function widget_output( $args, $instance, $template_name='widgets/list-widget') {
|
52 |
global $wp_query, $tribe_ecp, $post;
|
53 |
extract( $args, EXTR_SKIP );
|
54 |
// The view expects all these $instance variables, which may not be set without pro
|
116 |
echo '<ol class="hfeed vcalendar">';
|
117 |
foreach( $posts as $post ) :
|
118 |
setup_postdata( $post );
|
119 |
+
tribe_get_template_part( $template_name );
|
120 |
endforeach;
|
121 |
echo "</ol><!-- .hfeed -->";
|
122 |
|
public/advanced-functions/meta.php
CHANGED
@@ -17,7 +17,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
17 |
*
|
18 |
* @return string title
|
19 |
*/
|
20 |
-
function the_title() {
|
21 |
return get_the_title( get_the_ID() );
|
22 |
}
|
23 |
|
@@ -28,9 +28,13 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
28 |
* @param int $meta_id
|
29 |
* @return string
|
30 |
*/
|
31 |
-
function event_date( $meta_id ) {
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
34 |
$html = Tribe_Meta_Factory::template(
|
35 |
__( 'Start:', 'tribe-events-calendar' ),
|
36 |
sprintf( '<abbr class="tribe-events-abbr updated published dtstart" title="%s">%s</abbr>',
|
@@ -45,16 +49,49 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
45 |
tribe_get_end_date()
|
46 |
),
|
47 |
$meta_id );
|
48 |
-
} else {
|
49 |
-
// If all day event, show only start date
|
50 |
-
$html = Tribe_Meta_Factory::template(
|
51 |
-
__( 'Date:', 'tribe-events-calendar' ),
|
52 |
-
sprintf( '<abbr class="tribe-events-abbr updated published dtstart" title="%s">%s</abbr>',
|
53 |
-
tribe_get_start_date( null, false, TribeDateUtils::DBDATEFORMAT ),
|
54 |
-
tribe_get_start_date()
|
55 |
-
),
|
56 |
-
$meta_id );
|
57 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
return apply_filters( 'tribe_event_meta_event_date', $html );
|
59 |
}
|
60 |
|
@@ -65,7 +102,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
65 |
* @param int $meta_id
|
66 |
* @return array
|
67 |
*/
|
68 |
-
function event_category( $meta_id ) {
|
69 |
global $_tribe_meta_factory;
|
70 |
$post_id = get_the_ID();
|
71 |
|
@@ -93,7 +130,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
93 |
* @param int $meta_id
|
94 |
* @return array
|
95 |
*/
|
96 |
-
function event_tag( $meta_id ) {
|
97 |
global $_tribe_meta_factory;
|
98 |
return apply_filters( 'tribe_event_meta_event_tag', tribe_meta_event_tags( $_tribe_meta_factory->meta[$meta_id]['label'], ', ', false ) );
|
99 |
}
|
@@ -105,7 +142,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
105 |
* @param int $meta_id
|
106 |
* @return string
|
107 |
*/
|
108 |
-
function event_website( $meta_id ){
|
109 |
global $_tribe_meta_factory;
|
110 |
$link = tribe_get_event_website_link();
|
111 |
$website_link = empty( $link ) ? '' : Tribe_Meta_Factory::template(
|
@@ -121,7 +158,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
121 |
* @param int $meta_id
|
122 |
* @return string
|
123 |
*/
|
124 |
-
function event_origin( $meta_id ) {
|
125 |
global $_tribe_meta_factory;
|
126 |
$origin_to_display = apply_filters( 'tribe_events_display_event_origin', '', get_the_ID() );
|
127 |
$origin = empty( $link ) ? '' : Tribe_Meta_Factory::template(
|
@@ -138,7 +175,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
138 |
* @param int $meta_id
|
139 |
* @return string
|
140 |
*/
|
141 |
-
function organizer_name( $meta_id ){
|
142 |
global $_tribe_meta_factory;
|
143 |
$post_id = get_the_ID();
|
144 |
$name = tribe_get_organizer( $post_id );
|
@@ -156,7 +193,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
156 |
* @param int $meta_id
|
157 |
* @return string
|
158 |
*/
|
159 |
-
function organizer_email( $meta_id ){
|
160 |
global $_tribe_meta_factory;
|
161 |
$email = tribe_get_organizer_email();
|
162 |
$organizer_email = empty( $email ) ? '' : Tribe_Meta_Factory::template(
|
@@ -172,7 +209,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
172 |
* @param int $meta_id
|
173 |
* @return string
|
174 |
*/
|
175 |
-
function venue_name( $meta_id ){
|
176 |
global $_tribe_meta_factory;
|
177 |
$post_id = get_the_ID();
|
178 |
$name = tribe_get_venue( $post_id );
|
@@ -189,7 +226,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
189 |
* @param int $meta_id
|
190 |
* @return string
|
191 |
*/
|
192 |
-
function venue_address( $meta_id ){
|
193 |
global $_tribe_meta_factory;
|
194 |
|
195 |
$address = tribe_address_exists( get_the_ID() ) ? '<address class="tribe-events-address">' . tribe_get_full_address( get_the_ID() ) . '</address>' : '';
|
@@ -211,7 +248,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
211 |
* @param int $meta_id
|
212 |
* @return string
|
213 |
*/
|
214 |
-
function venue_map( $meta_id ){
|
215 |
global $_tribe_meta_factory;
|
216 |
$post_id = get_the_ID();
|
217 |
$map = tribe_get_embedded_map( $post_id );
|
@@ -227,7 +264,7 @@ if ( class_exists( 'Tribe_Meta_Factory' ) ) {
|
|
227 |
*
|
228 |
* @return string
|
229 |
*/
|
230 |
-
function gmap_link() {
|
231 |
$link = sprintf('<a class="tribe-events-gmap" href="%s" title="%s" target="_blank">%s</a>',
|
232 |
tribe_get_map_link(),
|
233 |
__( 'Click to view a Google Map', 'tribe-events-calendar' ),
|
17 |
*
|
18 |
* @return string title
|
19 |
*/
|
20 |
+
public static function the_title() {
|
21 |
return get_the_title( get_the_ID() );
|
22 |
}
|
23 |
|
28 |
* @param int $meta_id
|
29 |
* @return string
|
30 |
*/
|
31 |
+
public static function event_date( $meta_id ) {
|
32 |
+
$time_format = get_option( 'time_format', TribeDateUtils::TIMEFORMAT );
|
33 |
+
$start_time = tribe_get_start_date(null, false, $time_format );
|
34 |
+
$end_time = tribe_get_end_date(null, false, $time_format );
|
35 |
+
|
36 |
+
if ( tribe_event_is_multiday() ) {
|
37 |
+
// If multiday, show start date+time and end date+time
|
38 |
$html = Tribe_Meta_Factory::template(
|
39 |
__( 'Start:', 'tribe-events-calendar' ),
|
40 |
sprintf( '<abbr class="tribe-events-abbr updated published dtstart" title="%s">%s</abbr>',
|
49 |
tribe_get_end_date()
|
50 |
),
|
51 |
$meta_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
+
elseif ( !tribe_event_is_multiday() ) {
|
54 |
+
if ( tribe_event_is_all_day() ) {
|
55 |
+
// If all day event, show only start date
|
56 |
+
$html = Tribe_Meta_Factory::template(
|
57 |
+
__( 'Date:', 'tribe-events-calendar' ),
|
58 |
+
sprintf( '<abbr class="tribe-events-abbr updated published dtstart" title="%s">%s</abbr>',
|
59 |
+
tribe_get_start_date( null, false, TribeDateUtils::DBDATEFORMAT ),
|
60 |
+
tribe_get_start_date()
|
61 |
+
),
|
62 |
+
$meta_id );
|
63 |
+
}
|
64 |
+
else {
|
65 |
+
// show start date
|
66 |
+
$html = Tribe_Meta_Factory::template(
|
67 |
+
__( 'Date:', 'tribe-events-calendar' ),
|
68 |
+
sprintf( '<abbr class="tribe-events-abbr updated published dtstart" title="%s">%s</abbr>',
|
69 |
+
tribe_get_start_date( null, false, TribeDateUtils::DBDATEFORMAT ),
|
70 |
+
tribe_get_start_date(null, false)
|
71 |
+
),
|
72 |
+
$meta_id );
|
73 |
+
if ( $start_time == $end_time ) {
|
74 |
+
// if start and end time are the same, just show the start time
|
75 |
+
$html .= Tribe_Meta_Factory::template(
|
76 |
+
__( 'Time:', 'tribe-events-calendar' ),
|
77 |
+
sprintf( '<abbr class="tribe-events-abbr dtend" title="%s">%s</abbr>',
|
78 |
+
tribe_get_end_date( null, false, TribeDateUtils::DBDATEFORMAT ),
|
79 |
+
$start_time
|
80 |
+
),
|
81 |
+
$meta_id );
|
82 |
+
} else {
|
83 |
+
// show start and end time
|
84 |
+
$html .= Tribe_Meta_Factory::template(
|
85 |
+
__( 'Time:', 'tribe-events-calendar' ),
|
86 |
+
sprintf( '<abbr class="tribe-events-abbr dtend" title="%s">%s</abbr>',
|
87 |
+
tribe_get_end_date( null, false, TribeDateUtils::DBDATEFORMAT ),
|
88 |
+
$start_time .' - '. $end_time
|
89 |
+
),
|
90 |
+
$meta_id );
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
}
|
95 |
return apply_filters( 'tribe_event_meta_event_date', $html );
|
96 |
}
|
97 |
|
102 |
* @param int $meta_id
|
103 |
* @return array
|
104 |
*/
|
105 |
+
public static function event_category( $meta_id ) {
|
106 |
global $_tribe_meta_factory;
|
107 |
$post_id = get_the_ID();
|
108 |
|
130 |
* @param int $meta_id
|
131 |
* @return array
|
132 |
*/
|
133 |
+
public static function event_tag( $meta_id ) {
|
134 |
global $_tribe_meta_factory;
|
135 |
return apply_filters( 'tribe_event_meta_event_tag', tribe_meta_event_tags( $_tribe_meta_factory->meta[$meta_id]['label'], ', ', false ) );
|
136 |
}
|
142 |
* @param int $meta_id
|
143 |
* @return string
|
144 |
*/
|
145 |
+
public static function event_website( $meta_id ){
|
146 |
global $_tribe_meta_factory;
|
147 |
$link = tribe_get_event_website_link();
|
148 |
$website_link = empty( $link ) ? '' : Tribe_Meta_Factory::template(
|
158 |
* @param int $meta_id
|
159 |
* @return string
|
160 |
*/
|
161 |
+
public static function event_origin( $meta_id ) {
|
162 |
global $_tribe_meta_factory;
|
163 |
$origin_to_display = apply_filters( 'tribe_events_display_event_origin', '', get_the_ID() );
|
164 |
$origin = empty( $link ) ? '' : Tribe_Meta_Factory::template(
|
175 |
* @param int $meta_id
|
176 |
* @return string
|
177 |
*/
|
178 |
+
public static function organizer_name( $meta_id ){
|
179 |
global $_tribe_meta_factory;
|
180 |
$post_id = get_the_ID();
|
181 |
$name = tribe_get_organizer( $post_id );
|
193 |
* @param int $meta_id
|
194 |
* @return string
|
195 |
*/
|
196 |
+
public static function organizer_email( $meta_id ){
|
197 |
global $_tribe_meta_factory;
|
198 |
$email = tribe_get_organizer_email();
|
199 |
$organizer_email = empty( $email ) ? '' : Tribe_Meta_Factory::template(
|
209 |
* @param int $meta_id
|
210 |
* @return string
|
211 |
*/
|
212 |
+
public static function venue_name( $meta_id ){
|
213 |
global $_tribe_meta_factory;
|
214 |
$post_id = get_the_ID();
|
215 |
$name = tribe_get_venue( $post_id );
|
226 |
* @param int $meta_id
|
227 |
* @return string
|
228 |
*/
|
229 |
+
public static function venue_address( $meta_id ){
|
230 |
global $_tribe_meta_factory;
|
231 |
|
232 |
$address = tribe_address_exists( get_the_ID() ) ? '<address class="tribe-events-address">' . tribe_get_full_address( get_the_ID() ) . '</address>' : '';
|
248 |
* @param int $meta_id
|
249 |
* @return string
|
250 |
*/
|
251 |
+
public static function venue_map( $meta_id ){
|
252 |
global $_tribe_meta_factory;
|
253 |
$post_id = get_the_ID();
|
254 |
$map = tribe_get_embedded_map( $post_id );
|
264 |
*
|
265 |
* @return string
|
266 |
*/
|
267 |
+
public static function gmap_link() {
|
268 |
$link = sprintf('<a class="tribe-events-gmap" href="%s" title="%s" target="_blank">%s</a>',
|
269 |
tribe_get_map_link(),
|
270 |
__( 'Click to view a Google Map', 'tribe-events-calendar' ),
|
public/template-tags/date.php
CHANGED
@@ -62,14 +62,16 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
62 |
global $post;
|
63 |
$event = $post;
|
64 |
}
|
65 |
-
if( is_numeric( $event ) )
|
66 |
-
$event = get_post( $event );
|
|
|
67 |
|
68 |
if( tribe_event_is_all_day( $event ) )
|
69 |
$displayTime = false;
|
70 |
|
71 |
-
if( empty($event->EventEndDate) && is_object( $event ) )
|
72 |
$event->EventEndDate = tribe_get_event_meta( $event->ID, '_EventEndDate', true );
|
|
|
73 |
|
74 |
if( isset($event->EventEndDate) ){
|
75 |
$date = strtotime( $event->EventEndDate );
|
62 |
global $post;
|
63 |
$event = $post;
|
64 |
}
|
65 |
+
if( is_numeric( $event ) ) {
|
66 |
+
$event = get_post( $event );
|
67 |
+
}
|
68 |
|
69 |
if( tribe_event_is_all_day( $event ) )
|
70 |
$displayTime = false;
|
71 |
|
72 |
+
if( empty($event->EventEndDate) && is_object( $event ) ) {
|
73 |
$event->EventEndDate = tribe_get_event_meta( $event->ID, '_EventEndDate', true );
|
74 |
+
}
|
75 |
|
76 |
if( isset($event->EventEndDate) ){
|
77 |
$date = strtotime( $event->EventEndDate );
|
public/template-tags/general.php
CHANGED
@@ -39,13 +39,13 @@ if ( class_exists( 'TribeEvents' ) ) {
|
|
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 |
|
@@ -733,8 +733,38 @@ if ( class_exists( 'TribeEvents' ) ) {
|
|
733 |
return apply_filters( 'tribe_events_event_recurring_info_tooltip', $tooltip );
|
734 |
}
|
735 |
|
736 |
-
/**
|
737 |
-
* Return the details of the start/end date/time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
738 |
*
|
739 |
* @since 3.0
|
740 |
* @param int|null $event
|
@@ -745,24 +775,35 @@ if ( class_exists( 'TribeEvents' ) ) {
|
|
745 |
global $post;
|
746 |
$event = $post;
|
747 |
}
|
|
|
748 |
if ( is_numeric( $event ) )
|
749 |
$event = get_post( $event );
|
750 |
|
|
|
751 |
$format = '';
|
752 |
-
$
|
|
|
753 |
$microformatStartFormat = tribe_get_start_date( $event, false, 'Y-m-dTh:i' );
|
754 |
$microformatEndFormat = tribe_get_end_date( $event, false, 'Y-m-dTh:i' );
|
755 |
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
762 |
}
|
763 |
|
764 |
-
$schedule = '';
|
765 |
-
|
766 |
if ( tribe_event_is_multiday( $event ) ) { // multi-date event
|
767 |
|
768 |
$format2ndday = $format;
|
@@ -798,11 +839,11 @@ if ( class_exists( 'TribeEvents' ) ) {
|
|
798 |
}
|
799 |
} else {
|
800 |
$schedule .= '<span class="date-start dtstart">';
|
801 |
-
$schedule .= tribe_get_start_date( $event, false, $format ) .
|
802 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
803 |
$schedule .= '</span> - ';
|
804 |
$schedule .= '<span class="date-end dtend">';
|
805 |
-
$schedule .= tribe_get_end_date( $event, false, $format2ndday ) .
|
806 |
$schedule .= '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
|
807 |
$schedule .= '</span>';
|
808 |
}
|
@@ -816,16 +857,16 @@ if ( class_exists( 'TribeEvents' ) ) {
|
|
816 |
} else { // single day event
|
817 |
if ( tribe_get_start_date( $event, false, 'g:i A' ) === tribe_get_end_date( $event, false, 'g:i A' ) ) { // Same start/end time
|
818 |
$schedule .= '<span class="date-start dtstart">';
|
819 |
-
$schedule .= tribe_get_start_date( $event, false, $format ) .
|
820 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
821 |
$schedule .= '</span>';
|
822 |
} else { // defined start/end time
|
823 |
$schedule .= '<span class="date-start dtstart">';
|
824 |
-
$schedule .= tribe_get_start_date( $event, false, $format ) .
|
825 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
826 |
-
$schedule .= '</span> - ';
|
827 |
$schedule .= '<span class="end-time dtend">';
|
828 |
-
$schedule .= tribe_get_end_date( $event, false, $
|
829 |
$schedule .= '</span>';
|
830 |
}
|
831 |
}
|
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 |
|
733 |
return apply_filters( 'tribe_events_event_recurring_info_tooltip', $tooltip );
|
734 |
}
|
735 |
|
736 |
+
/**
|
737 |
+
* Return the details of the start/end date/time.
|
738 |
+
*
|
739 |
+
* The highest level means of customizing this function's output is simply to adjust the WordPress date and time
|
740 |
+
* formats (via the General Settings admin screen). Beyond that however there are two filters which can be used to
|
741 |
+
* exercise further control here.
|
742 |
+
*
|
743 |
+
* The first is 'tribe_events_event_schedule_details_formatting' which allows an array of format settings to be
|
744 |
+
* altered - it's basic make-up is as a simple set of key:value pairs as follows.
|
745 |
+
*
|
746 |
+
* "datetime_separator": this is inserted between the date and the time and defaults to an ampersat @ character.
|
747 |
+
* Note that if you modify this you should ordinarily be careful to include leading and trailing spaces (an
|
748 |
+
* example might be ' at ').
|
749 |
+
*
|
750 |
+
* "same_year_format": if an event starts and ends in the same year it's assumed that including the year in the
|
751 |
+
* output is superfluous. That being the case the function changes the date format, by default, to 'F j'. This
|
752 |
+
* may not be ideal in all locales so an alternative can be provided here. Do note that this substitution is
|
753 |
+
* only ever made if A) the event starts and ends in the same year and B) the date format does not include any
|
754 |
+
* time formatting characters.
|
755 |
+
*
|
756 |
+
* This can also effectively be used to turn off the assumption that the year should be omitted, simply by
|
757 |
+
* setting it to the value of the 'date_format' option, for example.
|
758 |
+
*
|
759 |
+
* "show_end_time": for single day events only (not including all day events) it may not always be desirable to
|
760 |
+
* include the end time. In that situation, this setting can be set to false and the end time will not be
|
761 |
+
* displayed.
|
762 |
+
*
|
763 |
+
* "time": if it is undesirable to show times and only dates should be displayed then this setting can be set to
|
764 |
+
* false. If it is false it will by extension cause 'show_end_time' to be false.
|
765 |
+
*
|
766 |
+
* The resulting string can also be caught and manipulated, or completely overridden, using the
|
767 |
+
* 'tribe_events_event_schedule_details' filter, should none of the above settings be sufficient.
|
768 |
*
|
769 |
* @since 3.0
|
770 |
* @param int|null $event
|
775 |
global $post;
|
776 |
$event = $post;
|
777 |
}
|
778 |
+
|
779 |
if ( is_numeric( $event ) )
|
780 |
$event = get_post( $event );
|
781 |
|
782 |
+
$schedule = '';
|
783 |
$format = '';
|
784 |
+
$date_format = get_option( 'date_format' );
|
785 |
+
$time_format = get_option( 'time_format' );
|
786 |
$microformatStartFormat = tribe_get_start_date( $event, false, 'Y-m-dTh:i' );
|
787 |
$microformatEndFormat = tribe_get_end_date( $event, false, 'Y-m-dTh:i' );
|
788 |
|
789 |
+
$settings = array(
|
790 |
+
'datetime_separator' => ' @ ',
|
791 |
+
'same_year_format' => 'F j',
|
792 |
+
'show_end_time' => true,
|
793 |
+
'time' => true,
|
794 |
+
);
|
795 |
+
|
796 |
+
$settings = wp_parse_args( apply_filters('tribe_events_event_schedule_details_formatting', $settings), $settings );
|
797 |
+
if ( ! $settings['time'] ) $settings['show_end_time'] = false;
|
798 |
+
extract($settings);
|
799 |
+
|
800 |
+
// If the date format will result in the year being shown but does *not* include any time formatting...
|
801 |
+
if ( TribeDateUtils::formatContainsYear( $date_format ) && ! TribeDateUtils::formatContainsTime( $date_format ) ) {
|
802 |
+
// ... and it starts and ends in the current year then there is no need to display the year
|
803 |
+
if ( tribe_get_start_date( $event, false, 'Y' ) === date( 'Y' ) && tribe_get_end_date( $event, false, 'Y' ) === date( 'Y' ) )
|
804 |
+
$format = $same_year_format;
|
805 |
}
|
806 |
|
|
|
|
|
807 |
if ( tribe_event_is_multiday( $event ) ) { // multi-date event
|
808 |
|
809 |
$format2ndday = $format;
|
839 |
}
|
840 |
} else {
|
841 |
$schedule .= '<span class="date-start dtstart">';
|
842 |
+
$schedule .= tribe_get_start_date( $event, false, $format ) . ( $time ? $datetime_separator . tribe_get_start_date( $event, false, $time_format ) : '' );
|
843 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
844 |
$schedule .= '</span> - ';
|
845 |
$schedule .= '<span class="date-end dtend">';
|
846 |
+
$schedule .= tribe_get_end_date( $event, false, $format2ndday ) . ( $time ? $datetime_separator . tribe_get_end_date( $event, false, $time_format ) : '' );
|
847 |
$schedule .= '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
|
848 |
$schedule .= '</span>';
|
849 |
}
|
857 |
} else { // single day event
|
858 |
if ( tribe_get_start_date( $event, false, 'g:i A' ) === tribe_get_end_date( $event, false, 'g:i A' ) ) { // Same start/end time
|
859 |
$schedule .= '<span class="date-start dtstart">';
|
860 |
+
$schedule .= tribe_get_start_date( $event, false, $format ) . ( $time ? $datetime_separator . tribe_get_start_date( $event, false, $time_format ) : '' );
|
861 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
862 |
$schedule .= '</span>';
|
863 |
} else { // defined start/end time
|
864 |
$schedule .= '<span class="date-start dtstart">';
|
865 |
+
$schedule .= tribe_get_start_date( $event, false, $format ) . ( $time ? $datetime_separator . tribe_get_start_date( $event, false, $time_format ) : '' );
|
866 |
$schedule .= '<span class="value-title" title="'. $microformatStartFormat .'"></span>';
|
867 |
+
$schedule .= '</span>' . ( $show_end_time ? ' - ' : '' );
|
868 |
$schedule .= '<span class="end-time dtend">';
|
869 |
+
$schedule .= ( $show_end_time ? tribe_get_end_date( $event, false, $time_format ) : '' ) . '<span class="value-title" title="'. $microformatEndFormat .'"></span>';
|
870 |
$schedule .= '</span>';
|
871 |
}
|
872 |
}
|
public/template-tags/loop.php
CHANGED
@@ -132,16 +132,19 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
132 |
* @since 2.0
|
133 |
*/
|
134 |
function tribe_get_events_title( $depth = true ) {
|
|
|
135 |
$tribe_ecp = TribeEvents::instance();
|
136 |
|
137 |
$title = __('Upcoming Events', 'tribe-events-calendar');
|
138 |
|
|
|
|
|
139 |
if ( tribe_is_upcoming() || isset( $_REQUEST['tribe-bar-date'] ) ) {
|
140 |
|
141 |
-
|
142 |
-
|
143 |
-
if ( $
|
144 |
-
|
145 |
if ( get_query_var('paged') > 1 ) {
|
146 |
// get the date of the first post
|
147 |
$first_post = reset($wp_query->posts);
|
@@ -159,9 +162,9 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
159 |
$args[] = date_i18n( get_option( 'date_format', 'Y-m-d' ), strtotime($last_post_date) );
|
160 |
}
|
161 |
}
|
162 |
-
$title = vsprintf($format, $args);
|
163 |
}
|
164 |
-
} else if ( tribe_is_past() ) {
|
165 |
$title = __( 'Past Events', 'tribe-events-calendar' );
|
166 |
}
|
167 |
|
132 |
* @since 2.0
|
133 |
*/
|
134 |
function tribe_get_events_title( $depth = true ) {
|
135 |
+
global $wp_query;
|
136 |
$tribe_ecp = TribeEvents::instance();
|
137 |
|
138 |
$title = __('Upcoming Events', 'tribe-events-calendar');
|
139 |
|
140 |
+
// TODO: Use the displayed dates for the title
|
141 |
+
/*
|
142 |
if ( tribe_is_upcoming() || isset( $_REQUEST['tribe-bar-date'] ) ) {
|
143 |
|
144 |
+
$start_date = date( 'Y-m-d', strtotime( $wp_query->get( 'start_date' ) ) );
|
145 |
+
|
146 |
+
if ( $wp_query->get( 'start_date' ) && $start_date != date('Y-m-d') ) {
|
147 |
+
|
148 |
if ( get_query_var('paged') > 1 ) {
|
149 |
// get the date of the first post
|
150 |
$first_post = reset($wp_query->posts);
|
162 |
$args[] = date_i18n( get_option( 'date_format', 'Y-m-d' ), strtotime($last_post_date) );
|
163 |
}
|
164 |
}
|
165 |
+
$title = vsprintf($format, $args);
|
166 |
}
|
167 |
+
} else */if ( tribe_is_past() ) {
|
168 |
$title = __( 'Past Events', 'tribe-events-calendar' );
|
169 |
}
|
170 |
|
public/template-tags/month.php
CHANGED
@@ -38,10 +38,12 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
38 |
}
|
39 |
}
|
40 |
|
|
|
|
|
|
|
41 |
do_action('tribe_events_before_show_month');
|
42 |
|
43 |
-
|
44 |
-
tribe_get_view( $template_path );
|
45 |
|
46 |
do_action('tribe_events_after_show_month');
|
47 |
|
@@ -184,6 +186,18 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
184 |
function tribe_events_the_month_single_event_classes() {
|
185 |
echo apply_filters( 'tribe_events_the_month_single_event_classes', Tribe_Events_Month_Template::event_classes() );
|
186 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
|
188 |
|
189 |
/**
|
@@ -211,7 +225,7 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
211 |
function tribe_get_month_view_date() {
|
212 |
global $wp_query;
|
213 |
|
214 |
-
$date = date_i18n( TribeDateUtils::DBDATEFORMAT );
|
215 |
if ( isset( $_REQUEST["eventDate"] ) && $_REQUEST["eventDate"] ) {
|
216 |
$date = $_REQUEST["eventDate"] . '-01';
|
217 |
} else if ( !empty( $wp_query->query_vars['eventDate'] ) ) {
|
@@ -247,9 +261,13 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
247 |
**/
|
248 |
function tribe_events_the_next_month_link() {
|
249 |
$url = tribe_get_next_month_link();
|
250 |
-
|
251 |
-
|
252 |
-
|
|
|
|
|
|
|
|
|
253 |
echo apply_filters('tribe_events_the_next_month_link', $html);
|
254 |
}
|
255 |
|
@@ -299,7 +317,11 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
299 |
$tribe_ecp = TribeEvents::instance();
|
300 |
if ( isset( $wp_query->query_vars[TribeEvents::TAXONOMY] ) )
|
301 |
$term = $wp_query->query_vars[TribeEvents::TAXONOMY];
|
302 |
-
|
|
|
|
|
|
|
|
|
303 |
return apply_filters('tribe_get_next_month_link', $output);
|
304 |
}
|
305 |
|
@@ -326,7 +348,11 @@ if( class_exists( 'TribeEvents' ) ) {
|
|
326 |
*/
|
327 |
function tribe_get_next_month_text() {
|
328 |
$tribe_ecp = TribeEvents::instance();
|
329 |
-
|
|
|
|
|
|
|
|
|
330 |
return apply_filters('tribe_get_next_month_text', $output);
|
331 |
}
|
332 |
}
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
$month_class = new Tribe_Events_Month_Template( $args );
|
42 |
+
$month_class->setup_view();
|
43 |
+
|
44 |
do_action('tribe_events_before_show_month');
|
45 |
|
46 |
+
tribe_get_template_part( $template_path );
|
|
|
47 |
|
48 |
do_action('tribe_events_after_show_month');
|
49 |
|
186 |
function tribe_events_the_month_single_event_classes() {
|
187 |
echo apply_filters( 'tribe_events_the_month_single_event_classes', Tribe_Events_Month_Template::event_classes() );
|
188 |
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Returns whether there are any events in the month
|
192 |
+
*
|
193 |
+
* @return bool
|
194 |
+
* @author Jessica Yazbek
|
195 |
+
* @see Tribe_Events_Month_Template::get_daily_counts()
|
196 |
+
* @since 3.1.1
|
197 |
+
**/
|
198 |
+
function tribe_events_month_has_events() {
|
199 |
+
return apply_filters( 'tribe_events_month_has_events', false );
|
200 |
+
}
|
201 |
|
202 |
|
203 |
/**
|
225 |
function tribe_get_month_view_date() {
|
226 |
global $wp_query;
|
227 |
|
228 |
+
$date = date_i18n( TribeDateUtils::DBDATEFORMAT, strtotime(date('Y-m-01'), current_time('timestamp')) );
|
229 |
if ( isset( $_REQUEST["eventDate"] ) && $_REQUEST["eventDate"] ) {
|
230 |
$date = $_REQUEST["eventDate"] . '-01';
|
231 |
} else if ( !empty( $wp_query->query_vars['eventDate'] ) ) {
|
261 |
**/
|
262 |
function tribe_events_the_next_month_link() {
|
263 |
$url = tribe_get_next_month_link();
|
264 |
+
try {
|
265 |
+
$date = TribeEvents::instance()->nextMonth( tribe_get_month_view_date() );
|
266 |
+
$text = tribe_get_next_month_text();
|
267 |
+
$html = '<a data-month="'. $date .'" href="' . $url . '" rel="pref">'. $text .' »</a>';
|
268 |
+
} catch ( OverflowException $e ) {
|
269 |
+
$html = '';
|
270 |
+
}
|
271 |
echo apply_filters('tribe_events_the_next_month_link', $html);
|
272 |
}
|
273 |
|
317 |
$tribe_ecp = TribeEvents::instance();
|
318 |
if ( isset( $wp_query->query_vars[TribeEvents::TAXONOMY] ) )
|
319 |
$term = $wp_query->query_vars[TribeEvents::TAXONOMY];
|
320 |
+
try {
|
321 |
+
$output = $tribe_ecp->getLink( 'month', $tribe_ecp->nextMonth(tribe_get_month_view_date() ), $term );
|
322 |
+
} catch ( OverflowException $e ) {
|
323 |
+
$output = '';
|
324 |
+
}
|
325 |
return apply_filters('tribe_get_next_month_link', $output);
|
326 |
}
|
327 |
|
348 |
*/
|
349 |
function tribe_get_next_month_text() {
|
350 |
$tribe_ecp = TribeEvents::instance();
|
351 |
+
try {
|
352 |
+
$output = $tribe_ecp->getDateStringShortened( $tribe_ecp->nextMonth( tribe_get_month_view_date() ) );
|
353 |
+
} catch ( OverflowException $e ) {
|
354 |
+
$output = '';
|
355 |
+
}
|
356 |
return apply_filters('tribe_get_next_month_text', $output);
|
357 |
}
|
358 |
}
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== The Events Calendar ===
|
2 |
|
3 |
-
Contributors: ModernTribe, PaulHughes01, roblagatta, jonahcoyote, MZAWeb, codearachnid, ryancurban, faction23, jazbek, kyleunzicker, leahkoerper, WebsiteBakery, peterchester, reid.peifer, shane.pearlman
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: http://m.tri.be/29
|
6 |
-
Requires at least: 3.
|
7 |
-
Tested up to: 3.
|
8 |
-
Stable tag: 3.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -23,15 +23,15 @@ The Events Calendar is crafted the WordPress way.
|
|
23 |
|
24 |
The Events Calendar has been audited by many of the industry's WordPress experts including core developer Mark Jaquith for security & plugin review team member Pippin Williamson for best practices and plugin compatibility.
|
25 |
|
26 |
-
We've poured
|
27 |
|
28 |
-
The team at Modern Tribe stands by our work and offers light support
|
29 |
|
30 |
= PLUG-N-PLAY & HIGHLY CUSTOMIZABLE =
|
31 |
|
32 |
-
|
33 |
|
34 |
-
By
|
35 |
|
36 |
Whether your vision is big or small, we have you in mind.
|
37 |
|
@@ -41,7 +41,7 @@ We've scaled The Events Calendar to work on a network with over 25 million uniqu
|
|
41 |
|
42 |
Whether you're operating a hyperlocal hub listing thousands of events, a university with many thousands of users, or you're a sole business owner listing your classes, The Events Calendar has your back.
|
43 |
|
44 |
-
Just getting started? Definitely watch and read through the <a href="http://m.tri.be/2d">New User Primer</a
|
45 |
|
46 |
* Rapidly create events
|
47 |
* Saved venues & organizers
|
@@ -97,7 +97,7 @@ If you're unclear about the installation process or get stuck, check out our <a
|
|
97 |
= Requirements =
|
98 |
|
99 |
* PHP 5.2 or above
|
100 |
-
* WordPress 3.
|
101 |
* jQuery 1.7 or above
|
102 |
|
103 |
== Screenshots ==
|
@@ -121,15 +121,15 @@ If you're unclear about the installation process or get stuck, check out our <a
|
|
121 |
|
122 |
= Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread? =
|
123 |
|
124 |
-
First, make sure that you're running the latest version of The Events Calendar (3.
|
125 |
|
126 |
-
The most common issues we see are either plugin or theme conflicts. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just The Events Calendar 3.
|
127 |
|
128 |
Note that we aren't going to say "tough luck" if you identify a plugin/theme conflict. While we can't guarantee 100% integration with any plugin or theme out there, we will do our best (and reach out the plugin/theme author as needed) to figure out a solution that benefits everyone.
|
129 |
|
130 |
= I'm still stuck. Where do I go to file a bug or ask a question? =
|
131 |
|
132 |
-
Users of the free The Events Calendar should post their questions in the plugin's <a href="http://wordpress.org/support/plugin/the-events-calendar/">WordPress.org forum</a>, which we hit about once a week. Please make sure to read <a href="http://wordpress.org/support/topic/welcome-the-events-calendar-users-read-this-first">our sticky post</a> providing an overview of the support we provide free users BEFORE posting. If you find you're not getting support in as timely a fashion as you wish, you might want to consider purchasing a PRO license.
|
133 |
|
134 |
If you're already a PRO user, you're entitled access to our more actively-monitored <a href="http://m.tri.be/2r">PRO forums</a> at the tri.be website. We can provide a deeper level of support here and hit these forums on a daily basis during the work week. No post should go more than 24-hours during that time without a response.
|
135 |
|
@@ -150,8 +150,10 @@ Currently, the following add-ons are available for The Events Calendar/Events Ca
|
|
150 |
* <a href="http://m.tri.be/2e">Eventbrite Tickets</a>, for selling tickets to your event directly through Eventbrite.
|
151 |
* <a href="http://m.tri.be/2g">Community Events</a>, for allowing frontend event submission from your readers.
|
152 |
* <a href="http://m.tri.be/2h">Facebook Events</a>, for importing events directly from an organization or page on Facebook.
|
153 |
-
* <a href="http://m.tri.be/2f">Tickets
|
154 |
* Filter Bar (COMING SOON) for adding advanced frontend filtering capabilities to your events calendar.
|
|
|
|
|
155 |
|
156 |
= I have a feature idea. What's the best way to tell you about it? =
|
157 |
|
@@ -170,7 +172,7 @@ Some docs you may find particularly useful are:
|
|
170 |
* <a href="http://m.tri.be/2l">The Events Calendar New User Primer</a>
|
171 |
* <a href="http://m.tri.be/2m">The Themer's Guide to The Events Calendar</a>
|
172 |
* <a href="http://m.tri.be/2n">The Events Calendar FAQ</a>
|
173 |
-
* <a href="http://m.tri.be/2u" target="_blank">Tutorials</a>
|
174 |
|
175 |
For template tags, open the plugin directory and visit /plugins/events/public/template-tags/ where you can find a list of those available.
|
176 |
|
@@ -184,17 +186,16 @@ The plugin is produced by <a href="http://m.tri.be/2s">Modern Tribe Inc</a>.
|
|
184 |
|
185 |
= Current Contributors =
|
186 |
|
187 |
-
* <a href="http://profiles.wordpress.org/users/
|
188 |
* <a href="http://profiles.wordpress.org/users/roblagatta">Rob La Gatta</a>
|
189 |
* <a href="http://profiles.wordpress.org/users/MZAWeb">Daniel Dvorkin</a>
|
190 |
-
* <a href="http://profiles.wordpress.org/users/codearachnid">Timothy Wood</a>
|
191 |
-
* <a href="http://profiles.wordpress.org/users/jonahcoyote">Jonah West</a>
|
192 |
* <a href="http://profiles.wordpress.org/users/barryhughes">Barry Hughes</a>
|
193 |
* <a href="http://profiles.wordpress.org/users/ryancurban">Ryan Urban</a>
|
194 |
* <a href="http://profiles.wordpress.org/users/kyleunzicker">Kyle Unzicker</a>
|
195 |
-
* <a href="http://profiles.wordpress.org/users/jazbek">Jessica Yazbek</a>
|
196 |
* <a href="http://profiles.wordpress.org/users/jbrinley">Jonathan Brinley</a>
|
197 |
* <a href="http://profiles.wordpress.org/users/faction23">Samuel Estok</a>
|
|
|
|
|
198 |
* <a href="http://profiles.wordpress.org/users/leahkoerper">Leah Koerper</a>
|
199 |
* <a href="http://profiles.wordpress.org/users/peterchester">Peter Chester</a>
|
200 |
* <a href="http://profiles.wordpress.org/users/reid.peifer">Reid Peifer</a>
|
@@ -202,6 +203,9 @@ The plugin is produced by <a href="http://m.tri.be/2s">Modern Tribe Inc</a>.
|
|
202 |
|
203 |
= Past Contributors =
|
204 |
|
|
|
|
|
|
|
205 |
* <a href="http://profiles.wordpress.org/users/jkudish">Joachim Kudish</a>
|
206 |
* <a href="http://profiles.wordpress.org/users/nickciske">Nick Ciske</a>
|
207 |
* <a href="http://profiles.wordpress.org/users/kelseydamas">Kelsey Damas</a>
|
@@ -221,10 +225,10 @@ The plugin is produced by <a href="http://m.tri.be/2s">Modern Tribe Inc</a>.
|
|
221 |
* Danish from Anonymous
|
222 |
* Dutch from Erik Massop
|
223 |
* Finnish by Ari-Pekka Koponen
|
224 |
-
* French from
|
225 |
* German from Michael Sebel
|
226 |
* Greek from Maria Tsilimidou
|
227 |
-
* Icelandic by Baldvin
|
228 |
* Italian from Roberto Scano
|
229 |
* Norwegian from Andreas Lorentsen
|
230 |
* Polish from Marek Kosina
|
@@ -255,7 +259,9 @@ Our Premium Plugins:
|
|
255 |
* <a href="http://m.tri.be/2g" target="_blank">The Events Calendar: Community Events</a>
|
256 |
* <a href="http://m.tri.be/2h" target="_blank">The Events Calendar: Facebook Events</a>
|
257 |
* <a href="http://m.tri.be/2i" target="_blank">The Events Calendar: WooCommerce Tickets</a>
|
258 |
-
* The Events Calendar: Filter Bar (coming
|
|
|
|
|
259 |
|
260 |
== Versioning ==
|
261 |
|
@@ -283,9 +289,32 @@ At no point during the 3.0 lifecycle will the major version change. But you can
|
|
283 |
|
284 |
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>
|
285 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
= 3.1 =
|
287 |
|
288 |
-
* Significant performance improvements to month view (thanks to
|
289 |
* Improved compatibility with Canvas and other themes by WooThemes (thanks to Paul Pruneau for the heads up!)
|
290 |
* Fixed several bugs relating to event cutoff times and month view (thanks jadonulrich for the report!)
|
291 |
* The correct default view now applies to event category listings
|
@@ -362,6 +391,11 @@ Still not happy? Shoot us an email to pro@tri.be or tweet to @moderntribeinc and
|
|
362 |
|
363 |
IMPORTANT NOTICE: 3.x upgrade is a HUGE upgrade from 2.x versions. If you are upgrading from an older version, please test thoroughly before updating on your live website.
|
364 |
|
|
|
|
|
|
|
|
|
|
|
365 |
= 3.1 =
|
366 |
|
367 |
There have been a number of architectural changes in 3.1. If you have a lot of customizations you may want to do some thorough testing before upgrading.
|
1 |
=== The Events Calendar ===
|
2 |
|
3 |
+
Contributors: ModernTribe, PaulHughes01, roblagatta, jonahcoyote, MZAWeb, codearachnid, ryancurban, faction23, jazbek, jbrinley, kyleunzicker, leahkoerper, WebsiteBakery, barry.hughes, kellykathryn, neillmcshea, peterchester, reid.peifer, shane.pearlman
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: http://m.tri.be/29
|
6 |
+
Requires at least: 3.6
|
7 |
+
Tested up to: 3.7.1
|
8 |
+
Stable tag: 3.2
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
23 |
|
24 |
The Events Calendar has been audited by many of the industry's WordPress experts including core developer Mark Jaquith for security & plugin review team member Pippin Williamson for best practices and plugin compatibility.
|
25 |
|
26 |
+
We've poured hundreds of hours into QA by a dedicated support team, monthly usability tests to guarantee that it's easy to use, and numerous user interviews to make sure you get what you want. We care about quality and crafting products that thrive in the wild.
|
27 |
|
28 |
+
The team at Modern Tribe stands by our work and offers light support every Wednesday to the community via the WordPress.org support forums. Feel free to ask a question if you're having a problem with implementation or if you find bugs. Looking for help NOW or need a deeper level of support? Add the <a href="http://m.tri.be/2c">premium add-on plugin</a> and you get access to premium support forums with under 24hr response times on weekdays.
|
29 |
|
30 |
= PLUG-N-PLAY & HIGHLY CUSTOMIZABLE =
|
31 |
|
32 |
+
The Events Calendar is built to work out of the box. Just turn it on, configure the settings to match your needs and you'll be making events within less than 5 minutes.
|
33 |
|
34 |
+
By developers, for developers...it's ready to be the foundation for your wildest hack sessions. Complete with a skeleton stylesheet to theme fast and efficiently, loads of tools including partial template overrides, a host of template tags, hooks and filters, <a href="http://m.tri.be/2b">careful documentation</a>, as well as a <a href="https://github.com/moderntribe">library of code snippets</a> on GitHub. The Events Calendar is built FOR people who build websites.
|
35 |
|
36 |
Whether your vision is big or small, we have you in mind.
|
37 |
|
41 |
|
42 |
Whether you're operating a hyperlocal hub listing thousands of events, a university with many thousands of users, or you're a sole business owner listing your classes, The Events Calendar has your back.
|
43 |
|
44 |
+
Just getting started? Definitely watch and read through the <a href="http://m.tri.be/2d">New User Primer</a> before going much forther.
|
45 |
|
46 |
* Rapidly create events
|
47 |
* Saved venues & organizers
|
97 |
= Requirements =
|
98 |
|
99 |
* PHP 5.2 or above
|
100 |
+
* WordPress 3.6 or above
|
101 |
* jQuery 1.7 or above
|
102 |
|
103 |
== Screenshots ==
|
121 |
|
122 |
= Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread? =
|
123 |
|
124 |
+
First, make sure that you're running the latest version of The Events Calendar (3.2 as of this release). If you're running Events Calendar PRO it needs to match the version number of The Events Calendar. And if you've got any other add-ons, make sure those are current / running the latest code as well.
|
125 |
|
126 |
+
The most common issues we see are either plugin or theme conflicts. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just The Events Calendar 3.2 is running on your site. If the issue persists from there, revert to the default Twenty Thirteen theme. If the issue is resolved after deactivating a specific plugin or your theme, you'll know that is the source of the conflict.
|
127 |
|
128 |
Note that we aren't going to say "tough luck" if you identify a plugin/theme conflict. While we can't guarantee 100% integration with any plugin or theme out there, we will do our best (and reach out the plugin/theme author as needed) to figure out a solution that benefits everyone.
|
129 |
|
130 |
= I'm still stuck. Where do I go to file a bug or ask a question? =
|
131 |
|
132 |
+
Users of the free The Events Calendar should post their questions in the plugin's <a href="http://wordpress.org/support/plugin/the-events-calendar/">WordPress.org forum</a>, which we hit about once a week (on Wednesdays). Please make sure to read <a href="http://wordpress.org/support/topic/welcome-the-events-calendar-users-read-this-first">our sticky post</a> providing an overview of the support we provide free users BEFORE posting. If you find you're not getting support in as timely a fashion as you wish, you might want to consider purchasing a PRO license.
|
133 |
|
134 |
If you're already a PRO user, you're entitled access to our more actively-monitored <a href="http://m.tri.be/2r">PRO forums</a> at the tri.be website. We can provide a deeper level of support here and hit these forums on a daily basis during the work week. No post should go more than 24-hours during that time without a response.
|
135 |
|
150 |
* <a href="http://m.tri.be/2e">Eventbrite Tickets</a>, for selling tickets to your event directly through Eventbrite.
|
151 |
* <a href="http://m.tri.be/2g">Community Events</a>, for allowing frontend event submission from your readers.
|
152 |
* <a href="http://m.tri.be/2h">Facebook Events</a>, for importing events directly from an organization or page on Facebook.
|
153 |
+
* <a href="http://m.tri.be/2f">WooCommerce Tickets</a>, for harnessing the power of WooCommerce to sell event tickets directly on your site without being subject to fees or relying on a third-party service.
|
154 |
* Filter Bar (COMING SOON) for adding advanced frontend filtering capabilities to your events calendar.
|
155 |
+
* EDD Tickets (COMING SOON), for using our ticketing framework to sell tickets on your events through The Events Calendar + Easy Digital Downloads.
|
156 |
+
* WPEC Tickets (COMING SOON), for using WP-eCommerce + The Events Calendar to sell event tickets directly from the frontend of your site.
|
157 |
|
158 |
= I have a feature idea. What's the best way to tell you about it? =
|
159 |
|
172 |
* <a href="http://m.tri.be/2l">The Events Calendar New User Primer</a>
|
173 |
* <a href="http://m.tri.be/2m">The Themer's Guide to The Events Calendar</a>
|
174 |
* <a href="http://m.tri.be/2n">The Events Calendar FAQ</a>
|
175 |
+
* <a href="http://m.tri.be/2u" target="_blank">The Events Calendar Tutorials</a>
|
176 |
|
177 |
For template tags, open the plugin directory and visit /plugins/events/public/template-tags/ where you can find a list of those available.
|
178 |
|
186 |
|
187 |
= Current Contributors =
|
188 |
|
189 |
+
* <a href="http://profiles.wordpress.org/users/jazbek">Jessica Yazbek</a>
|
190 |
* <a href="http://profiles.wordpress.org/users/roblagatta">Rob La Gatta</a>
|
191 |
* <a href="http://profiles.wordpress.org/users/MZAWeb">Daniel Dvorkin</a>
|
|
|
|
|
192 |
* <a href="http://profiles.wordpress.org/users/barryhughes">Barry Hughes</a>
|
193 |
* <a href="http://profiles.wordpress.org/users/ryancurban">Ryan Urban</a>
|
194 |
* <a href="http://profiles.wordpress.org/users/kyleunzicker">Kyle Unzicker</a>
|
|
|
195 |
* <a href="http://profiles.wordpress.org/users/jbrinley">Jonathan Brinley</a>
|
196 |
* <a href="http://profiles.wordpress.org/users/faction23">Samuel Estok</a>
|
197 |
+
* <a href="http://profiles.wordpress.org/users/neillmcshea">Neill McShea</a>
|
198 |
+
* <a href="http://profiles.wordpress.org/users/kellykathryn">Kelly Groves</a>
|
199 |
* <a href="http://profiles.wordpress.org/users/leahkoerper">Leah Koerper</a>
|
200 |
* <a href="http://profiles.wordpress.org/users/peterchester">Peter Chester</a>
|
201 |
* <a href="http://profiles.wordpress.org/users/reid.peifer">Reid Peifer</a>
|
203 |
|
204 |
= Past Contributors =
|
205 |
|
206 |
+
* <a href="http://profiles.wordpress.org/users/paulhughes01">Paul Hughes</a>
|
207 |
+
* <a href="http://profiles.wordpress.org/users/codearachnid">Timothy Wood</a>
|
208 |
+
* <a href="http://profiles.wordpress.org/users/jonahcoyote">Jonah West</a>
|
209 |
* <a href="http://profiles.wordpress.org/users/jkudish">Joachim Kudish</a>
|
210 |
* <a href="http://profiles.wordpress.org/users/nickciske">Nick Ciske</a>
|
211 |
* <a href="http://profiles.wordpress.org/users/kelseydamas">Kelsey Damas</a>
|
225 |
* Danish from Anonymous
|
226 |
* Dutch from Erik Massop
|
227 |
* Finnish by Ari-Pekka Koponen
|
228 |
+
* French from Beno Burgener
|
229 |
* German from Michael Sebel
|
230 |
* Greek from Maria Tsilimidou
|
231 |
+
* Icelandic by Baldvin Berndsen
|
232 |
* Italian from Roberto Scano
|
233 |
* Norwegian from Andreas Lorentsen
|
234 |
* Polish from Marek Kosina
|
259 |
* <a href="http://m.tri.be/2g" target="_blank">The Events Calendar: Community Events</a>
|
260 |
* <a href="http://m.tri.be/2h" target="_blank">The Events Calendar: Facebook Events</a>
|
261 |
* <a href="http://m.tri.be/2i" target="_blank">The Events Calendar: WooCommerce Tickets</a>
|
262 |
+
* The Events Calendar: Filter Bar (coming late 2013)
|
263 |
+
* The Events Calendar: EDD Tickets (coming late 2013)
|
264 |
+
* The Events Calendar: WPEC Tickets (coming late 2013)
|
265 |
|
266 |
== Versioning ==
|
267 |
|
289 |
|
290 |
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>
|
291 |
|
292 |
+
= 3.2 =
|
293 |
+
|
294 |
+
* Incorporated the much-fabled CSV importer! Import CSV files directly into your The Events Calendar/Events Calendar PRO site (for an overview on how to use it, read this: http://m.tri.be/9t)
|
295 |
+
* Implemented code requesting that search engines do not index calendar pages that have no events to display
|
296 |
+
* Addressed a number of Twenty Thirteen theme compatibility fixes
|
297 |
+
* Improved how date and time are displayed on single event entries for single day events (thanks to Robin for the heads up!)
|
298 |
+
* Added a suggestion by the Organizer email field to obfuscate email addresses published on your site (thanks, Thea, for requesting this on our UserVoice page!)
|
299 |
+
* Improved compliance with PHP strict standards (thanks to Bryan in the forums for making this request!)
|
300 |
+
* Added more flexible formatting options for event schedule details
|
301 |
+
* Incorporated a fix to improve behaviors of the tribe_is_month() template tag (thanks jhned at the WordPress.org forums for this report!)
|
302 |
+
* Added a fix for when "show events in main blog loop" option disrupts certain static home pages (thanks to yorkshiretots for reporting this on the forum!)
|
303 |
+
* Added a fix for when the "show events in main blog loop" option disrupts the product listing on WooCommerce storefront for certain users (thanks to forge for the first report on this!)
|
304 |
+
* Fixed an issue with broken commenting that appeared on some templates (thanks to Tom for first reporting this at the PRO forums!)
|
305 |
+
* Added ability to create recurring events that happen every 5th occurence of a day in the month; e.g., every 5th Sunday (thanks to gregwiley for the original report!)
|
306 |
+
* Fixed an issue where future recurring events displayed as having passed when object caching is enabled (a big thanks to Ray for first bringing this up on the forums!)
|
307 |
+
* Fixed the calculation used for determining all events in a month, which was causing the last day of multi-day events to be incorrectly left off (thanks to paracleteweb for first reporting this at the WordPress.org forums!)
|
308 |
+
* Added code to make sure tribe_show_month() won't break any event views that come after it (thanks to our friend Big on the forums for the first report of this!)
|
309 |
+
* Incorporated a number of enhancements to ease compatibility with Easy Digital Downloads (thanks for all your help, Pippin!)
|
310 |
+
* Removed a PHP notice that arose when querying from events and other post types at the same time
|
311 |
+
* Fixed an issue where inaccurate draft counts were appearing on the backend events list (thanks to Neil on the forums for the first report!)
|
312 |
+
* Incorporated updated Icelandic translation by Baldvin Berndsen
|
313 |
+
|
314 |
+
|
315 |
= 3.1 =
|
316 |
|
317 |
+
* Significant performance improvements to month view (thanks to Grégory for the initial report!)
|
318 |
* Improved compatibility with Canvas and other themes by WooThemes (thanks to Paul Pruneau for the heads up!)
|
319 |
* Fixed several bugs relating to event cutoff times and month view (thanks jadonulrich for the report!)
|
320 |
* The correct default view now applies to event category listings
|
391 |
|
392 |
IMPORTANT NOTICE: 3.x upgrade is a HUGE upgrade from 2.x versions. If you are upgrading from an older version, please test thoroughly before updating on your live website.
|
393 |
|
394 |
+
= 3.2 =
|
395 |
+
|
396 |
+
There have been a number of architectural changes in 3.2. If you have a lot of customizations you may want to do some thorough testing before upgrading.
|
397 |
+
|
398 |
+
|
399 |
= 3.1 =
|
400 |
|
401 |
There have been a number of architectural changes in 3.1. If you have a lot of customizations you may want to do some thorough testing before upgrading.
|
resources/events-admin.css
CHANGED
@@ -67,7 +67,8 @@ td.tribe_message {padding-bottom: 10px !important;}
|
|
67 |
.tribe-events-multi-event-day {color: #0F81BB;}
|
68 |
|
69 |
.ui-front {z-index: 1000000;}
|
70 |
-
.ui-widget-overlay.ui-front {z-index: 90;
|
|
|
71 |
|
72 |
|
73 |
|
@@ -185,6 +186,14 @@ td.tribe_message {padding-bottom: 10px !important;}
|
|
185 |
margin: 7px 0;
|
186 |
}
|
187 |
.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
|
189 |
/* = Help Screen
|
190 |
=============================================*/
|
67 |
.tribe-events-multi-event-day {color: #0F81BB;}
|
68 |
|
69 |
.ui-front {z-index: 1000000;}
|
70 |
+
.events-cal .ui-widget-overlay.ui-front {z-index: 90;
|
71 |
+
}
|
72 |
|
73 |
|
74 |
|
186 |
margin: 7px 0;
|
187 |
}
|
188 |
.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px;}
|
189 |
+
.OrganizerInfo td small {
|
190 |
+
display: block;
|
191 |
+
max-width: 250px;
|
192 |
+
margin: 0;
|
193 |
+
}
|
194 |
+
.OrganizerInfo .organizer-email {
|
195 |
+
vertical-align: top;
|
196 |
+
}
|
197 |
|
198 |
/* = Help Screen
|
199 |
=============================================*/
|
resources/events-admin.js
CHANGED
@@ -159,6 +159,34 @@ jQuery(document).ready(function($) {
|
|
159 |
|
160 |
tribeShowHideCorrectStateProvinceInput( $("#EventCountry > option:selected").val() );
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
$("#EventCountry").change(function() {
|
163 |
var countryLabel = $(this).find('option:selected').val();
|
164 |
tribeShowHideCorrectStateProvinceInput( countryLabel );
|
@@ -311,6 +339,8 @@ jQuery(document).ready(function($) {
|
|
311 |
if (val == "On") {
|
312 |
$('#rec-count').hide();
|
313 |
$('#recurrence_end').show();
|
|
|
|
|
314 |
} else {
|
315 |
$('#recurrence_end').hide();
|
316 |
$('#rec-count').show();
|
159 |
|
160 |
tribeShowHideCorrectStateProvinceInput( $("#EventCountry > option:selected").val() );
|
161 |
|
162 |
+
var $hidesub = $('[name="hideSubsequentRecurrencesDefault"]'),
|
163 |
+
$userhide = $('[name="userToggleSubsequentRecurrences"]');
|
164 |
+
|
165 |
+
if($hidesub.length && $userhide.length){
|
166 |
+
|
167 |
+
var $userwrap = $('#tribe-field-userToggleSubsequentRecurrences');
|
168 |
+
|
169 |
+
if($hidesub.is(':checked')){
|
170 |
+
$userhide.prop('checked', false);
|
171 |
+
$userwrap.hide();
|
172 |
+
}
|
173 |
+
|
174 |
+
$hidesub
|
175 |
+
.on('click', function () {
|
176 |
+
var $this = $(this);
|
177 |
+
|
178 |
+
if(!$this.is(':checked')){
|
179 |
+
$userwrap.show();
|
180 |
+
} else {
|
181 |
+
$userhide.prop('checked', false);
|
182 |
+
$userwrap.hide();
|
183 |
+
}
|
184 |
+
|
185 |
+
});
|
186 |
+
|
187 |
+
|
188 |
+
}
|
189 |
+
|
190 |
$("#EventCountry").change(function() {
|
191 |
var countryLabel = $(this).find('option:selected').val();
|
192 |
tribeShowHideCorrectStateProvinceInput( countryLabel );
|
339 |
if (val == "On") {
|
340 |
$('#rec-count').hide();
|
341 |
$('#recurrence_end').show();
|
342 |
+
} else if ( val == "Never" ) {
|
343 |
+
$('#rec-count, #recurrence_end').hide();
|
344 |
} else {
|
345 |
$('#recurrence_end').hide();
|
346 |
$('#rec-count').show();
|
resources/events-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.events-cal #icon-edit{background:url(images/events-screen-icon.png) no-repeat 6px 3px;-webkit-background-size:23px 25px;background-size:23px 25px}#adminmenu #menu-posts-tribe_events div.wp-menu-image{background:url(images/menu.png) no-repeat 0 -32px;-webkit-background-size:29px 64px;background-size:29px 64px}#adminmenu #menu-posts-tribe_events:hover div.wp-menu-image,#adminmenu #menu-posts-tribe_events.wp-has-current-submenu div.wp-menu-image{background-position:0 0}.invalid input{border:2px solid red !important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{cursor:text;padding:4px 4px 4px 4px;color:#999}input:placeholder,textarea:placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.events-cal .tablenav select[name=m],.events-cal #post-query-submit{display:none}.fixed .column-start-date,.fixed .column-end-date,.fixed .column-events-cats{width:14%}#additional-field-table input,#additional-field-table select,#additional-field-table textarea{width:200px}#additional-field-table tbody tr{height:72px}.view-calendar-link{display:inline-block;font-weight:normal;padding:0;height:14.5px}.view-calendar-link-div{display:inline-block;position:absolute;left:200px;margin-top:18px}.notice{background-color:#ffffe0;border:1px solid #e6db55;margin:5px 0 15px}.bubble{border-color:#dfdfdf;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:10px;border-style:solid;border-spacing:0;background-color:#f9f9f9}.eventForm{margin-top:-20px}.eventForm td{padding:0 6px 10px 0;font-size:12px;vertical-align:middle}.eventForm #event-meta td{vertical-align:top}.eventForm #event-meta td div{margin-bottom:10px}.eventForm #event-meta td div:last-child{margin-bottom:20px}.eventForm select,.eventForm input{font-size:11px}.eventForm h4{font-size:1.2em;margin:1em 0 1em}.eventForm h4.event-time{margin-top:0}.tribe-community-event-info{margin:10px;width:100%}.eventtable,#EventInfo{margin:0;padding-top:0;width:100%}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}#ticket_start_date,#ticket_end_date{width:100px}.form-table form input{border:0}#submitLabel{display:block}#submitLabel input{display:block;padding:0}#EventBriteDetailDiv h4,.tribe-community-event-info h4,.eventForm .tribe_sectionheader h4{text-transform:uppercase;border-bottom:1px solid #e5e5e5;padding-bottom:6px}.eventForm .tribe_sectionheader{padding-bottom:5px !important}td.tribe_message{padding-bottom:10px !important}#tribe_thanks{float:left;width:200px;margin:5px 0 0 0}.tribe_brand{font-weight:normal;margin:8px 0;font-family:Georgia !important;font-size:17px !important}.eventForm p{margin:0 0 10px 0 !important}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}.ui-front{z-index:1000000}.ui-widget-overlay.ui-front{z-index:90}.tribe-community-event-info small,#EventBriteDetailDiv small{color:#a3a3a3;font-size:10px}#eventBriteTicketing,#mainDonateRow{background:url(images/bg_fade.png) repeat-x top left;background-color:#fff;padding:10px 15px;border:1px solid #e2e2e2;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topleft:0;-moz-border-radius-topright:0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0;border-radius:3px;margin:-11px 6px 0}#eventBriteTicketing h2{background:url(images/eb_press_little.gif) no-repeat top right;height:80px;margin:0}.tribe-community-event-info,table.eventForm{width:100%}#custom-recurrence-weeks label{width:45px;display:block;float:left;margin-bottom:3px}#custom-recurrence-frequency input{width:30px}#custom-recurrence-years label{width:50px;display:block;float:left;margin-bottom:3px}#recurrence-changed-row{color:red;display:none}#rec-end-error{color:red}#rec-days-error{color:red}.rec-error{display:none}#recurrence-pattern-description{font-style:italic}.recurrence-pattern-description-row{display:none}#tribe-upgrade{margin:20px 0 30px;border:1px solid #ccc;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;padding:0 20px 20px;background:#f6f6f6}#tribe-upgrade .message{border-style:solid;border-width:1px;padding:6px 12px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55}.chosen,.tribe-chosen,.chzn-container{margin-right:10px !important}.venue-dropdown,.organizer-dropdown,.events-dropdown,#eventsDefaultState,#defaultCountry,#StateProvinceSelect{width:220px !important}.multi-day-cutoff-dropdown{width:100px !important}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{overflow:visible !important}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{padding:10px 0;display:inline-block;clear:both}.tribe-settings-form legend{width:220px;margin-right:20px;float:left;font-weight:bold}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-radio label,.tribe-settings-form .tribe-field-checkbox_list label{display:block;margin:5px 0}.tribe-settings-form .tribe-field-radio label input,.tribe-settings-form .tribe-field-checkbox_list label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form fieldset[id^="tribe-field-geoloc_"]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{padding-left:0;margin-left:0;max-width:450px}.tribe-settings-form .tribe-settings-form-wrap h3{margin-bottom:10px;background-color:#f9f9f9;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap h3 ~ h3{margin-top:2.25em}.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid #F00}.tribe_settings .tribe-field-description{position:relative;top:-12px;margin-bottom:0}.tribe_settings #ical-link{top:-14px}.tribe-settings-form #tribe-field-stylesheetOption label{margin-left:20px}.tribe-settings-form #tribe-field-stylesheetOption input{margin-left:-20px;margin-right:8px}.tribe-settings-form #tribe-field-stylesheetOption p.description{color:#999}#modern-tribe-info{margin:20px 0;background-color:#f9f9f9;padding:8px 20px 12px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}#modern-tribe-info img{margin:10px 0;width:250px;height:18px}.tribe-field-textarea.tribe-size-small textarea{width:180px;height:60px}.tribe-field-textarea.tribe-size-medium textarea{width:300px;height:80px}.tribe-field-textarea.tribe-size-large textarea{width:450px;height:120px}.tribe-field-text.tribe-size-small input,.tribe-field-license_key.tribe-size-small input{width:50px}.tribe-field-text.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input{width:225px}.tribe-field-text.tribe-size-large input,.tribe-field-license_key.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.ajax-loading-license,.valid-key,.invalid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.valid-key{color:green}.invalid-key{color:red}#additional-field-table{margin-bottom:20px}#tribe-help-general,#tribe-help-sidebar{float:left}#tribe-help-general{width:70%}#tribe-help-sidebar{width:25%;max-width:200px;margin:20px 0 0 5%}#tribe-help-plugin-info{border:1px solid #CCC;padding:0 12px}.tribe-admin-box-left{float:left;width:20%;margin:20px 0;background-color:#f9f9f9;padding:0 20px 15px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}.tribe-admin-box-right{float:right;width:68%;margin:20px 0;background-color:#f9f9f9;padding:0 20px 15px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid lightGrey;-moz-border-radius:6px;border-radius:6px}.tribe-arrangeable-item .ui-state-default{border:0}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{display:none;padding:25px;border-top:1px solid lightGrey;background-color:#f9f9f9}.tribe-arrangeable-child label{margin:0 0 7px 0;display:block}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form-wrap p,.tribe-settings-form-wrap ul{margin-left:15px}.tribe-settings-form-wrap ul{list-style-type:square;margin-left:35px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-webkit-border-radius:5px}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-dialog{position:relative;padding:.2em;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{border:0;padding:.5em 1em;background:0;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:right;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em !important}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em !important;cursor:pointer;padding:.2em .6em .3em;line-height:1.4em;width:auto;overflow:visible;text-shadow:none}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none !important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-datepicker{font-size:8pt}#ui-datepicker-div{display:none}#tribe-loading{display:none;position:absolute;width:100%;height:100%;left:0;top:0;background:#fff;background:rgba(255,255,255,0.8);z-index:4;webkit-transition:all 1s linear;-moz-transition:all 1s linear;-o-transition:all 1s linear;-ms-transition:all 1s linear;transition:all 1s linear}#tribe-loading span{position:absolute;width:32px;height:32px;left:50%;top:50%;margin:-16px 0 0 -16px;background:url(images/tribe-loading.gif) 0 0 no-repeat;-webkit-background-size:32px 32px;background-size:32px 32px}@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){.events-cal #icon-edit{background-image:url(images/events-screen-icon@2x.png)}#adminmenu #menu-posts-tribe_events div.wp-menu-image{background-image:url(images/menu@2x.png)}#tribe-loading span{background-image:url(images/tribe-loading@2x.gif)}}
|
1 |
+
.events-cal #icon-edit{background:url(images/events-screen-icon.png) no-repeat 6px 3px;-webkit-background-size:23px 25px;background-size:23px 25px}#adminmenu #menu-posts-tribe_events div.wp-menu-image{background:url(images/menu.png) no-repeat 0 -32px;-webkit-background-size:29px 64px;background-size:29px 64px}#adminmenu #menu-posts-tribe_events:hover div.wp-menu-image,#adminmenu #menu-posts-tribe_events.wp-has-current-submenu div.wp-menu-image{background-position:0 0}.invalid input{border:2px solid red !important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{cursor:text;padding:4px 4px 4px 4px;color:#999}input:placeholder,textarea:placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.events-cal .tablenav select[name=m],.events-cal #post-query-submit{display:none}.fixed .column-start-date,.fixed .column-end-date,.fixed .column-events-cats{width:14%}#additional-field-table input,#additional-field-table select,#additional-field-table textarea{width:200px}#additional-field-table tbody tr{height:72px}.view-calendar-link{display:inline-block;font-weight:normal;padding:0;height:14.5px}.view-calendar-link-div{display:inline-block;position:absolute;left:200px;margin-top:18px}.notice{background-color:#ffffe0;border:1px solid #e6db55;margin:5px 0 15px}.bubble{border-color:#dfdfdf;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:10px;border-style:solid;border-spacing:0;background-color:#f9f9f9}.eventForm{margin-top:-20px}.eventForm td{padding:0 6px 10px 0;font-size:12px;vertical-align:middle}.eventForm #event-meta td{vertical-align:top}.eventForm #event-meta td div{margin-bottom:10px}.eventForm #event-meta td div:last-child{margin-bottom:20px}.eventForm select,.eventForm input{font-size:11px}.eventForm h4{font-size:1.2em;margin:1em 0 1em}.eventForm h4.event-time{margin-top:0}.tribe-community-event-info{margin:10px;width:100%}.eventtable,#EventInfo{margin:0;padding-top:0;width:100%}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}#ticket_start_date,#ticket_end_date{width:100px}.form-table form input{border:0}#submitLabel{display:block}#submitLabel input{display:block;padding:0}#EventBriteDetailDiv h4,.tribe-community-event-info h4,.eventForm .tribe_sectionheader h4{text-transform:uppercase;border-bottom:1px solid #e5e5e5;padding-bottom:6px}.eventForm .tribe_sectionheader{padding-bottom:5px !important}td.tribe_message{padding-bottom:10px !important}#tribe_thanks{float:left;width:200px;margin:5px 0 0 0}.tribe_brand{font-weight:normal;margin:8px 0;font-family:Georgia !important;font-size:17px !important}.eventForm p{margin:0 0 10px 0 !important}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}.ui-front{z-index:1000000}.events-cal .ui-widget-overlay.ui-front{z-index:90}.tribe-community-event-info small,#EventBriteDetailDiv small{color:#a3a3a3;font-size:10px}#eventBriteTicketing,#mainDonateRow{background:url(images/bg_fade.png) repeat-x top left;background-color:#fff;padding:10px 15px;border:1px solid #e2e2e2;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topleft:0;-moz-border-radius-topright:0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0;border-radius:3px;margin:-11px 6px 0}#eventBriteTicketing h2{background:url(images/eb_press_little.gif) no-repeat top right;height:80px;margin:0}.tribe-community-event-info,table.eventForm{width:100%}#custom-recurrence-weeks label{width:45px;display:block;float:left;margin-bottom:3px}#custom-recurrence-frequency input{width:30px}#custom-recurrence-years label{width:50px;display:block;float:left;margin-bottom:3px}#recurrence-changed-row{color:red;display:none}#rec-end-error{color:red}#rec-days-error{color:red}.rec-error{display:none}#recurrence-pattern-description{font-style:italic}.recurrence-pattern-description-row{display:none}#tribe-upgrade{margin:20px 0 30px;border:1px solid #ccc;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;padding:0 20px 20px;background:#f6f6f6}#tribe-upgrade .message{border-style:solid;border-width:1px;padding:6px 12px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#ffffe0;border-color:#e6db55}.chosen,.tribe-chosen,.chzn-container{margin-right:10px !important}.venue-dropdown,.organizer-dropdown,.events-dropdown,#eventsDefaultState,#defaultCountry,#StateProvinceSelect{width:220px !important}.multi-day-cutoff-dropdown{width:100px !important}.widget-liquid-right .widget,.inactive-sidebar .widget,.widget-liquid-right .sidebar-description{overflow:visible !important}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{padding:10px 0;display:inline-block;clear:both}.tribe-settings-form legend{width:220px;margin-right:20px;float:left;font-weight:bold}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-radio label,.tribe-settings-form .tribe-field-checkbox_list label{display:block;margin:5px 0}.tribe-settings-form .tribe-field-radio label input,.tribe-settings-form .tribe-field-checkbox_list label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form fieldset[id^="tribe-field-geoloc_"]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{padding-left:0;margin-left:0;max-width:450px}.tribe-settings-form .tribe-settings-form-wrap h3{margin-bottom:10px;background-color:#f9f9f9;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap h3 ~ h3{margin-top:2.25em}.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid #F00}.tribe_settings .tribe-field-description{position:relative;top:-12px;margin-bottom:0}.tribe_settings #ical-link{top:-14px}.tribe-settings-form #tribe-field-stylesheetOption label{margin-left:20px}.tribe-settings-form #tribe-field-stylesheetOption input{margin-left:-20px;margin-right:8px}.tribe-settings-form #tribe-field-stylesheetOption p.description{color:#999}#modern-tribe-info{margin:20px 0;background-color:#f9f9f9;padding:8px 20px 12px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}#modern-tribe-info img{margin:10px 0;width:250px;height:18px}.tribe-field-textarea.tribe-size-small textarea{width:180px;height:60px}.tribe-field-textarea.tribe-size-medium textarea{width:300px;height:80px}.tribe-field-textarea.tribe-size-large textarea{width:450px;height:120px}.tribe-field-text.tribe-size-small input,.tribe-field-license_key.tribe-size-small input{width:50px}.tribe-field-text.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input{width:225px}.tribe-field-text.tribe-size-large input,.tribe-field-license_key.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.ajax-loading-license,.valid-key,.invalid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.valid-key{color:green}.invalid-key{color:red}#additional-field-table{margin-bottom:20px}#tribe-help-general,#tribe-help-sidebar{float:left}#tribe-help-general{width:70%}#tribe-help-sidebar{width:25%;max-width:200px;margin:20px 0 0 5%}#tribe-help-plugin-info{border:1px solid #CCC;padding:0 12px}.tribe-admin-box-left{float:left;width:20%;margin:20px 0;background-color:#f9f9f9;padding:0 20px 15px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}.tribe-admin-box-right{float:right;width:68%;margin:20px 0;background-color:#f9f9f9;padding:0 20px 15px;border:1px solid #ccc;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-khtml-border-radius:4px;-o-border-radius:4px}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid lightGrey;-moz-border-radius:6px;border-radius:6px}.tribe-arrangeable-item .ui-state-default{border:0}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{display:none;padding:25px;border-top:1px solid lightGrey;background-color:#f9f9f9}.tribe-arrangeable-child label{margin:0 0 7px 0;display:block}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.OrganizerInfo td small{display:block;max-width:250px;margin:0}.OrganizerInfo .organizer-email{vertical-align:top}.tribe-settings-form-wrap p,.tribe-settings-form-wrap ul{margin-left:15px}.tribe-settings-form-wrap ul{list-style-type:square;margin-left:35px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.50;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.20;filter:Alpha(Opacity=20);-moz-border-radius:5px;-webkit-border-radius:5px}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-dialog{position:relative;padding:.2em;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{border:0;padding:.5em 1em;background:0;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:right;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em !important}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em !important;cursor:pointer;padding:.2em .6em .3em;line-height:1.4em;width:auto;overflow:visible;text-shadow:none}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none !important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-datepicker{font-size:8pt}#ui-datepicker-div{display:none}#tribe-loading{display:none;position:absolute;width:100%;height:100%;left:0;top:0;background:#fff;background:rgba(255,255,255,0.8);z-index:4;webkit-transition:all 1s linear;-moz-transition:all 1s linear;-o-transition:all 1s linear;-ms-transition:all 1s linear;transition:all 1s linear}#tribe-loading span{position:absolute;width:32px;height:32px;left:50%;top:50%;margin:-16px 0 0 -16px;background:url(images/tribe-loading.gif) 0 0 no-repeat;-webkit-background-size:32px 32px;background-size:32px 32px}@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){.events-cal #icon-edit{background-image:url(images/events-screen-icon@2x.png)}#adminmenu #menu-posts-tribe_events div.wp-menu-image{background-image:url(images/menu@2x.png)}#tribe-loading span{background-image:url(images/tribe-loading@2x.gif)}}
|
resources/events-admin.min.js
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
jQuery(document).ready(function(a){function g(b){"US"==b||"United States"==b?(a("#StateProvinceSelect_chzn").show(),a("#StateProvinceText").hide()):(""!=b?a("#StateProvinceText").show():a("#StateProvinceText").hide(),a("#StateProvinceSelect_chzn").hide())}function f(){return"true"==a('[name="is_recurring"]').val()&&!a('[name="recurrence_action"]').val()&&!a('[name="recurrence_action"]').val()}a(".chosen, .tribe-field-dropdown_chosen select").chosen();a(".select2, .tribe-field-dropdown_select2 select").select2({width:"250px"});
|
2 |
if(a('select[name="tribeEventsTemplate"]').length&&""===a('select[name="tribeEventsTemplate"]').val()){$templates=a('select[name="tribeEventsTemplate"]');var d=$templates.find("option:selected").text();$templates.prev(".select2-container").children().children("span").text(d)}a(".hide-if-js").hide();if("undefined"!=typeof TEC){d={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,showButtonPanel:!0,onSelect:function(b){var c="EventStartDate"==this.id?"minDate":"maxDate",
|
3 |
-
d=a(this).data("datepicker");b=a.datepicker.parseDate(d.settings.dateFormat||a.datepicker._defaults.dateFormat,b,d.settings);
|
4 |
-
var
|
5 |
-
c+"Day']");a(".event"+c+"DateField").remove();"Start"==c?(c=p[
|
6 |
a("#isEventNo").attr("checked")||a("#isEventNo").attr("checked");return!0});var k=a(".venue"),d=a("#saved_venue");0<d.length&&"0"!=d.val()&&(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.length&&"0"!=d.val()&&(h.hide(),a("input",h).val(""));d.change(function(){"0"==a(this).val()?
|
7 |
-
h.fadeIn():h.fadeOut()})}g(a("#EventCountry > option:selected").val());a("
|
8 |
-
"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"==
|
9 |
-
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"
|
10 |
-
|
11 |
-
|
12 |
-
a(
|
13 |
-
a('[name="recurrence[type]"]').change(function(){var b=a(this).find("option:selected"),c=
|
14 |
-
a("#
|
15 |
-
|
16 |
-
a(
|
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()});
|
1 |
jQuery(document).ready(function(a){function g(b){"US"==b||"United States"==b?(a("#StateProvinceSelect_chzn").show(),a("#StateProvinceText").hide()):(""!=b?a("#StateProvinceText").show():a("#StateProvinceText").hide(),a("#StateProvinceSelect_chzn").hide())}function f(){return"true"==a('[name="is_recurring"]').val()&&!a('[name="recurrence_action"]').val()&&!a('[name="recurrence_action"]').val()}a(".chosen, .tribe-field-dropdown_chosen select").chosen();a(".select2, .tribe-field-dropdown_select2 select").select2({width:"250px"});
|
2 |
if(a('select[name="tribeEventsTemplate"]').length&&""===a('select[name="tribeEventsTemplate"]').val()){$templates=a('select[name="tribeEventsTemplate"]');var d=$templates.find("option:selected").text();$templates.prev(".select2-container").children().children("span").text(d)}a(".hide-if-js").hide();if("undefined"!=typeof TEC){d={dateFormat:"yy-mm-dd",showAnim:"fadeIn",changeMonth:!0,changeYear:!0,numberOfMonths:3,showButtonPanel:!0,onSelect:function(b){var c="EventStartDate"==this.id?"minDate":"maxDate",
|
3 |
+
d=a(this).data("datepicker");b=a.datepicker.parseDate(d.settings.dateFormat||a.datepicker._defaults.dateFormat,b,d.settings);q.not(this).not("#recurrence_end").datepicker("option",c,b)}};a.extend(d,TEC);var q=a("#EventStartDate, #EventEndDate, .datepicker").datepicker(d),n=function(){!0===a("#allDayCheckbox").prop("checked")?(a(".timeofdayoptions").hide(),a("#EventTimeFormatDiv").hide()):(a(".timeofdayoptions").show(),a("#EventTimeFormatDiv").show())};a("#allDayCheckbox").click(function(){n()});n();
|
4 |
+
var p=[29,31,28,31,30,31,30,31,31,30,31,30,31],r=[a("#28StartDays"),a("#29StartDays"),a("#30StartDays"),a("#31StartDays")],s=[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=r[p[b]-28],c.val(d.val()),a("select[name='EventStartMonth']").after(c)):(c=s[p[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.length&&"0"!=d.val()&&(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.length&&"0"!=d.val()&&(h.hide(),a("input",h).val(""));d.change(function(){"0"==a(this).val()?
|
7 |
+
h.fadeIn():h.fadeOut()})}g(a("#EventCountry > option:selected").val());var d=a('[name="hideSubsequentRecurrencesDefault"]'),l=a('[name="userToggleSubsequentRecurrences"]');if(d.length&&l.length){var m=a("#tribe-field-userToggleSubsequentRecurrences");d.is(":checked")&&(l.prop("checked",!1),m.hide());d.on("click",function(){a(this).is(":checked")?(l.prop("checked",!1),m.hide()):m.show()})}a("#EventCountry").change(function(){var b=a(this).find("option:selected").val();g(b)});"true"==a('[name="is_recurring"]').val()&&
|
8 |
+
!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),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"==
|
9 |
+
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();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",
|
10 |
+
!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")&&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")+
|
11 |
+
'" 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,buttons:[{text:"Only This Event",click:function(){document.location=c.attr("href")+"&event_start="+a(this).data("start")}},{text:"All Events",click:function(){document.location=c.attr("href")+"&deleteAll"}}]}))});a('[name="recurrence[type]"]').change(function(){var b=
|
12 |
+
a(this).find("option:selected").val();a(".custom-recurrence-row").hide();"Custom"==b?(a("#recurrence-end").show(),a("#custom-recurrence-frequency").show(),a('[name="recurrence[custom-type]"]').change()):("None"==b?a("#recurrence-end").hide():a("#recurrence-end").show(),a("#custom-recurrence-frequency").hide())});a('[name="recurrence[end-type]"]').change(function(){var b=a(this).find("option:selected").val();"On"==b?(a("#rec-count").hide(),a("#recurrence_end").show()):"Never"==b?a("#rec-count, #recurrence_end").hide():
|
13 |
+
(a("#recurrence_end").hide(),a("#rec-count").show())});a('[name="recurrence[custom-type]"]').change(function(){a(".custom-recurrence-row").hide();var b=a(this).find("option:selected"),c=b.data("tablerow");a(c).show();a("#recurrence-interval-type").text(b.data("plural"));a('[name="recurrence[custom-type-text]"]').val(b.data("plural"))});a("#recurrence_end_count").change(function(){a('[name="recurrence[type]"]').change()});a('[name="recurrence[type]"]').change(function(){var b=a(this).find("option:selected"),
|
14 |
+
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]"]');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");
|
15 |
+
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");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",
|
16 |
+
"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="+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()||
|
17 |
+
!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")})});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/tribe-events-ajax-calendar.js
CHANGED
@@ -65,6 +65,8 @@
|
|
65 |
}
|
66 |
}).data('datepicker');
|
67 |
|
|
|
|
|
68 |
if (tt.pushstate && !tt.map_view()) {
|
69 |
|
70 |
var params = 'action=tribe_calendar&eventDate=' + $('#tribe-events-header').data('date');
|
@@ -72,10 +74,15 @@
|
|
72 |
if (td.params.length)
|
73 |
params = params + '&' + td.params;
|
74 |
|
|
|
|
|
|
|
75 |
history.replaceState({
|
76 |
"tribe_params": params
|
77 |
}, ts.page_title, location.href);
|
78 |
|
|
|
|
|
79 |
$(window).on('popstate', function (event) {
|
80 |
|
81 |
var state = event.originalEvent.state;
|
65 |
}
|
66 |
}).data('datepicker');
|
67 |
|
68 |
+
|
69 |
+
|
70 |
if (tt.pushstate && !tt.map_view()) {
|
71 |
|
72 |
var params = 'action=tribe_calendar&eventDate=' + $('#tribe-events-header').data('date');
|
74 |
if (td.params.length)
|
75 |
params = params + '&' + td.params;
|
76 |
|
77 |
+
if (ts.category)
|
78 |
+
params = params + '&tribe_event_category=' + ts.category;
|
79 |
+
|
80 |
history.replaceState({
|
81 |
"tribe_params": params
|
82 |
}, ts.page_title, location.href);
|
83 |
|
84 |
+
|
85 |
+
|
86 |
$(window).on('popstate', function (event) {
|
87 |
|
88 |
var state = event.originalEvent.state;
|
resources/tribe-events-ajax-calendar.min.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
(function(n,q,b,
|
2 |
(a.params.tribe_event_category=a.category),a.url_params={},b(g).trigger("tribe_ev_serializeBar"),a.params=b.param(a.params),a.url_params=b.param(a.url_params),b(g).trigger("tribe_ev_collectParams"),0<a.pushcount||a.filters?(a.do_string=!0,a.pushstate=!1):(a.do_string=!1,a.pushstate=!0));h.pushstate&&!a.filter_cats?(k&&debug.time("Month View Ajax Timer"),b(g).trigger("tribe_ev_ajaxStart").trigger("tribe_ev_monthView_AjaxStart"),b.post(TribeCalendar.ajaxurl,a.params,function(c){a.initial_load=!1;f.enable_inputs("#tribe_events_filters_form",
|
3 |
-
"input, select");if(c.success){a.ajax_running=!1;
|
4 |
-
tribe_params:a.params},a.page_title,
|
5 |
-
b("#tribe-events-bar").length&&(
|
6 |
-
!1,f.pre_ajax(function(){l()})}).data("datepicker");h.pushstate&&!h.map_view()&&(
|
7 |
-
a.ajax_running||(c=b(this),a.date=c.data("month"),f.update_picker(a.date),
|
8 |
-
b("form#tribe-bar-form").on("submit",function(a){s(a)});b(g).on("tribe_ev_runAjax",function(){l()});b(g).on("tribe_ev_updatingRecurrence",function(){a.date=b("#tribe-events-header").data("date");
|
9 |
-
tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
|
1 |
+
(function(n,q,b,e,g,f,a,h,k){b(q).ready(function(){function s(c){"change_view"!=tribe_events_bar_action&&(c.preventDefault(),a.ajax_running||(m.val().length?a.date=m.val():r||(a.date=e.cur_date.slice(0,-3)),e.cur_url=a.filter_cats?b("#tribe-events-header").data("baseurl")+a.date+"/":p+a.date+"/",a.popping=!1,f.pre_ajax(function(){l()})))}function l(){b(".tribe-events-calendar").tribe_spin();a.pushcount=0;a.ajax_running=!0;a.popping||(a.params={action:"tribe_calendar",eventDate:a.date},a.category&&
|
2 |
(a.params.tribe_event_category=a.category),a.url_params={},b(g).trigger("tribe_ev_serializeBar"),a.params=b.param(a.params),a.url_params=b.param(a.url_params),b(g).trigger("tribe_ev_collectParams"),0<a.pushcount||a.filters?(a.do_string=!0,a.pushstate=!1):(a.do_string=!1,a.pushstate=!0));h.pushstate&&!a.filter_cats?(k&&debug.time("Month View Ajax Timer"),b(g).trigger("tribe_ev_ajaxStart").trigger("tribe_ev_monthView_AjaxStart"),b.post(TribeCalendar.ajaxurl,a.params,function(c){a.initial_load=!1;f.enable_inputs("#tribe_events_filters_form",
|
3 |
+
"input, select");if(c.success){a.ajax_running=!1;e.ajax_response={total_count:"",view:c.view,max_pages:"",tribe_paged:"",timestamp:(new Date).getTime()};k&&0===c.html&&debug.warn("Month view ajax had an error in the query and returned 0.");var d="",d=b.isFunction(b.fn.parseHTML)?b.parseHTML(c.html):c.html;b("#tribe-events-content").replaceWith(d);a.page_title=b("#tribe-events-header").data("title");q.title=a.page_title;a.do_string&&(e.cur_url=e.cur_url+"?"+a.url_params,history.pushState({tribe_date:a.date,
|
4 |
+
tribe_params:a.params},a.page_title,e.cur_url));a.pushstate&&history.pushState({tribe_date:a.date,tribe_params:a.params},a.page_title,e.cur_url);b(g).trigger("tribe_ev_ajaxSuccess").trigger("tribe_ev_monthView_ajaxSuccess");k&&debug.timeEnd("Month View Ajax Timer")}})):n.location=a.do_string?e.cur_url+"?"+a.url_params:e.cur_url}var p=b("#tribe-events-header .tribe-events-nav-next a").attr("href").slice(0,-8),d=f.get_url_param("tribe-bar-date"),m=b("#tribe-bar-date"),r=!1;b(".tribe-events-calendar").length&&
|
5 |
+
b("#tribe-events-bar").length&&(d&&7<d.length)&&(b("#tribe-bar-date-day").val(d.slice(-3)),m.val(d.substring(0,7)));var t=m.bootstrapDatepicker({format:"yyyy-mm",showAnim:"fadeIn",viewMode:"months"}).on("changeDate",function(c){var d=c.date.getFullYear(),g=("0"+(c.date.getMonth()+1)).slice(-2);t.hide();r=!0;f.update_picker(c.date);a.date=d+"-"+g;if((h.no_bar()||h.live_ajax()&&h.pushstate)&&!a.ajax_running)e.cur_url=a.filter_cats?b("#tribe-events-header").data("baseurl")+a.date+"/":p+a.date+"/",a.popping=
|
6 |
+
!1,f.pre_ajax(function(){l()})}).data("datepicker");h.pushstate&&!h.map_view()&&(d="action=tribe_calendar&eventDate="+b("#tribe-events-header").data("date"),e.params.length&&(d=d+"&"+e.params),a.category&&(d=d+"&tribe_event_category="+a.category),history.replaceState({tribe_params:d},a.page_title,location.href),b(n).on("popstate",function(b){if(b=b.originalEvent.state)a.do_string=!1,a.pushstate=!1,a.popping=!0,a.params=b.tribe_params,f.pre_ajax(function(){l()}),f.set_form(a.params)}));b("#tribe-events").on("click",
|
7 |
+
".tribe-events-sub-nav a",function(c){c.preventDefault();a.ajax_running||(c=b(this),a.date=c.data("month"),f.update_picker(a.date),e.cur_url=a.filter_cats?b("#tribe-events-header").data("baseurl"):c.attr("href"),a.popping=!1,f.pre_ajax(function(){l()}))}).on("click","td.tribe-events-thismonth",function(a){a.preventDefault();a=b(this).find('[id^="tribe-events-daynum"] a').attr("href");"undefined"!==typeof a&&(n.location=a)}).on("click","td.tribe-events-thismonth a",function(a){a.stopPropagation()});
|
8 |
+
f.snap("#tribe-bar-form","body","#tribe-events-footer .tribe-events-nav-previous a, #tribe-events-footer .tribe-events-nav-next a");b("form#tribe-bar-form").on("submit",function(a){s(a)});b(g).on("tribe_ev_runAjax",function(){l()});b(g).on("tribe_ev_updatingRecurrence",function(){a.date=b("#tribe-events-header").data("date");e.cur_url=a.filter_cats?b("#tribe-events-header").data("baseurl")+a.date+"/":p+a.date+"/";a.popping=!1});k&&debug.info("TEC Debug: tribe-events-ajax-calendar.js successfully loaded, Tribe Events Init finished");
|
9 |
+
k&&debug.timeEnd("Tribe JS Init Timer")})})(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
|
resources/tribe-events-ajax-list.js
CHANGED
@@ -31,6 +31,9 @@
|
|
31 |
if (td.params.length)
|
32 |
params = params + '&' + td.params;
|
33 |
|
|
|
|
|
|
|
34 |
history.replaceState({
|
35 |
"tribe_params": params,
|
36 |
"tribe_url_params": td.params
|
31 |
if (td.params.length)
|
32 |
params = params + '&' + td.params;
|
33 |
|
34 |
+
if (ts.category)
|
35 |
+
params = params + '&tribe_event_category=' + ts.category;
|
36 |
+
|
37 |
history.replaceState({
|
38 |
"tribe_params": params,
|
39 |
"tribe_url_params": td.params
|
resources/tribe-events-ajax-list.min.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
(function(n,m,b,d,h,
|
2 |
-
a.url_params={action:"tribe_list",tribe_paged:a.paged};c.length&&(a.params.hash=c);a.category&&(a.params.tribe_event_category=a.category);b(h).trigger("tribe_ev_serializeBar");a.params=b.param(a.params);a.url_params=b.param(a.url_params);b(h).trigger("tribe_ev_collectParams");a.pushstate=!1;a.do_string=!0}
|
3 |
-
!1;
|
4 |
-
m.title=a.page_title;a.do_string&&history.pushState({tribe_params:a.params,tribe_url_params:a.url_params},a.page_title,d.cur_url+"?"+a.url_params);a.pushstate&&history.pushState({tribe_params:a.params,tribe_url_params:a.url_params},a.page_title,d.cur_url);b(h).trigger("tribe_ev_ajaxSuccess").trigger("tribe_ev_listView_AjaxSuccess");l&&debug.timeEnd("List View Ajax Timer")}})):n.location=a.do_string?d.cur_url+"?"+a.url_params:d.cur_url}var
|
5 |
-
!
|
6 |
-
(b(this).parent().is(".tribe-events-past")?a.view="past":a.view="list",d.cur_url=
|
7 |
-
"#tribe-events-footer .tribe-events-nav-previous a, #tribe-events-footer .tribe-events-nav-next a");if(
|
8 |
-
jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
|
1 |
+
(function(n,m,b,d,h,f,a,g,l){b(m).ready(function(){function p(b){"change_view"!=tribe_events_bar_action&&(b.preventDefault(),a.ajax_running||(a.paged=1,a.view="list",a.popping=!1,f.pre_ajax(function(){k()})))}function k(){b("#tribe-events-content .tribe-events-loop").tribe_spin();a.ajax_running=!0;if(!a.popping){a.filter_cats&&(d.cur_url=b("#tribe-events-header").data("baseurl"));var c=b("#tribe-events-list-hash").val();a.params={action:"tribe_list",tribe_paged:a.paged,tribe_event_display:a.view};
|
2 |
+
a.url_params={action:"tribe_list",tribe_paged:a.paged};c.length&&(a.params.hash=c);a.category&&(a.params.tribe_event_category=a.category);b(h).trigger("tribe_ev_serializeBar");a.params=b.param(a.params);a.url_params=b.param(a.url_params);b(h).trigger("tribe_ev_collectParams");a.pushstate=!1;a.do_string=!0}g.pushstate&&!a.filter_cats?(l&&debug.time("List View Ajax Timer"),b(h).trigger("tribe_ev_ajaxStart").trigger("tribe_ev_listView_AjaxStart"),b.post(TribeList.ajaxurl,a.params,function(c){a.initial_load=
|
3 |
+
!1;f.enable_inputs("#tribe_events_filters_form","input, select");if(c.success){a.ajax_running=!1;d.ajax_response={total_count:parseInt(c.total_count),view:c.view,max_pages:c.max_pages,tribe_paged:c.tribe_paged,timestamp:(new Date).getTime()};b("#tribe-events-list-hash").val(c.hash);var e="",e=b.isFunction(b.fn.parseHTML)?b.parseHTML(c.html):c.html;b("#tribe-events-content").replaceWith(e);0===c.total_count&&b("#tribe-events-header .tribe-events-sub-nav").empty();a.page_title=b("#tribe-events-header").data("title");
|
4 |
+
m.title=a.page_title;a.do_string&&history.pushState({tribe_params:a.params,tribe_url_params:a.url_params},a.page_title,d.cur_url+"?"+a.url_params);a.pushstate&&history.pushState({tribe_params:a.params,tribe_url_params:a.url_params},a.page_title,d.cur_url);b(h).trigger("tribe_ev_ajaxSuccess").trigger("tribe_ev_listView_AjaxSuccess");l&&debug.timeEnd("List View Ajax Timer")}})):n.location=a.do_string?d.cur_url+"?"+a.url_params:d.cur_url}var e=f.get_url_param("tribe_paged");e&&(a.paged=e);g.pushstate&&
|
5 |
+
!g.map_view()&&(e="action=tribe_list&tribe_paged="+a.paged,d.params.length&&(e=e+"&"+d.params),a.category&&(e=e+"&tribe_event_category="+a.category),history.replaceState({tribe_params:e,tribe_url_params:d.params},m.title,location.href),b(n).on("popstate",function(b){if(b=b.originalEvent.state)a.do_string=!1,a.pushstate=!1,a.popping=!0,a.params=b.tribe_params,a.url_params=b.tribe_url_params,f.pre_ajax(function(){k()}),f.set_form(a.params)}));b("#tribe-events-content-wrapper").on("click","li.tribe-events-nav-next a",
|
6 |
+
function(c){c.preventDefault();a.ajax_running||(b(this).parent().is(".tribe-events-past")?a.view="past":a.view="list",d.cur_url=f.url_path(b(this).attr("href")),a.paged++,a.popping=!1,f.pre_ajax(function(){k()}))}).on("click","li.tribe-events-nav-previous a",function(c){c.preventDefault();a.ajax_running||(b(this).parent().is(".tribe-events-past")?a.view="past":a.view="list",d.cur_url=f.url_path(b(this).attr("href")),1<a.paged&&a.paged--,a.popping=!1,f.pre_ajax(function(){k()}))});f.snap("#tribe-events-content-wrapper",
|
7 |
+
"#tribe-events-content-wrapper","#tribe-events-footer .tribe-events-nav-previous a, #tribe-events-footer .tribe-events-nav-next a");if(g.no_bar()||g.live_ajax()&&g.pushstate)b("#tribe-events-bar").on("changeDate","#tribe-bar-date",function(b){g.reset_on()||(a.popping=!1,p(b))});b("form#tribe-bar-form").on("submit",function(b){a.popping=!1;p(b)});b(h).on("tribe_ev_runAjax",function(){k()});l&&debug.info("TEC Debug: tribe-events-ajax-list.js successfully loaded");a.view&&l&&debug.timeEnd("Tribe JS Init Timer")})})(window,
|
8 |
+
document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_debug);
|
resources/tribe-events-bar.js
CHANGED
@@ -115,15 +115,16 @@ var tribe_events_bar_action;
|
|
115 |
// Create list from select options
|
116 |
$tribebarselect.find('option').each(function(i){
|
117 |
var $view = $(this);
|
|
|
118 |
// build list items and append them
|
119 |
var unique_c = 'tribe-bar-views-option-' + $view.data('view');
|
120 |
$('<li></li>', {
|
121 |
'class': 'tribe-bar-views-option ' + unique_c,
|
122 |
'data-tribe-bar-order': i,
|
123 |
-
'data-view':
|
124 |
}).html([
|
125 |
' <a href="#">',
|
126 |
-
' <span class="tribe-icon-' +
|
127 |
'</a>'].join("")
|
128 |
).appendTo( '.tribe-bar-views-list' );
|
129 |
|
115 |
// Create list from select options
|
116 |
$tribebarselect.find('option').each(function(i){
|
117 |
var $view = $(this);
|
118 |
+
displaying = $view.data('view');
|
119 |
// build list items and append them
|
120 |
var unique_c = 'tribe-bar-views-option-' + $view.data('view');
|
121 |
$('<li></li>', {
|
122 |
'class': 'tribe-bar-views-option ' + unique_c,
|
123 |
'data-tribe-bar-order': i,
|
124 |
+
'data-view': displaying
|
125 |
}).html([
|
126 |
' <a href="#">',
|
127 |
+
' <span class="tribe-icon-' + displaying + '">' + $view.text() + '</span>',
|
128 |
'</a>'].join("")
|
129 |
).appendTo( '.tribe-bar-views-list' );
|
130 |
|
resources/tribe-events-bar.min.js
CHANGED
@@ -3,8 +3,8 @@ var tribe_events_bar_action;
|
|
3 |
670>b?a.removeClass("tribe-bar-mini").addClass("tribe-bar-collapse"):a.removeClass("tribe-bar-collapse")}}function u(){tribe_events_bar_action="change_view";if("month"===c.view&&d.length){var a=d.val();7===a.length&&d.val(a+t.get_day())}c.url_params={};b(h).trigger("tribe_ev_preCollectBarParams");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")]=
|
4 |
a.val())});c.url_params=b.param(c.url_params);b(h).trigger("tribe_ev_postCollectBarParams");c.url_params.length&&(c.cur_url+=k.starting_delim()+c.url_params);s.location.href=c.cur_url}var e=b("#tribe-bar-form"),d=b("#tribe-bar-date"),f=b("select[name=tribe-bar-view]");p(e);e.resize(function(){p(e)});if(!b(".tribe-events-week-grid").length&&(!b(".events-gridview").length||k.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",
|
5 |
showAnim:"fadeIn"}).on("changeDate",function(){v.hide()}).data("datepicker")}d.blur(function(){""===d.val()&&(b(".datepicker.dropdown-menu").is(":hidden")&&k.live_ajax()&&k.pushstate)&&(c.date=g.cur_date,g.cur_url=g.base_url,b(h).trigger("tribe_ev_runAjax"))});b(".tribe-bar-settings").length&&b("#tribe-events-bar").addClass("tribe-has-settings");b("#tribe-events-bar .hasDatepicker").length&&b("#tribe-events-bar").addClass("tribe-has-datepicker");b('input[name*="tribe-bar-"]').placeholder();b('<ul class="tribe-bar-views-list" />').insertAfter(f);
|
6 |
-
var q=b(".tribe-bar-views-list");f.find("option").each(function(a){var c=b(this)
|
7 |
-
"#tribe-bar-views",function(a){a.stopPropagation();b(this).toggleClass("tribe-bar-views-open")});e.on("click",".tribe-bar-views-option",function(a){a.preventDefault();a=b(this);a.is(".tribe-bar-active")||(a=a.data("view"),c.cur_url=b("option[data-view="+a+"]").val(),c.view_target=b('select[name=tribe-bar-view] option[value="'+c.cur_url+'"]').data("view"),tribe_events_bar_action="change_view",u())});e.on("click","#tribe-bar-collapse-toggle",function(){b(this).toggleClass("tribe-bar-filters-open");
|
8 |
b(".tribe-bar-filters").slideToggle("fast")});b('label[for="tribe-bar-date"], input[name="tribe-bar-date"]').wrapAll('<div id="tribe-bar-dates" />');b("#tribe-bar-filters").before(b("#tribe-bar-dates"));b(h).on("tribe_ev_serializeBar",function(){b("form#tribe-bar-form input, #tribeHideRecurrence").each(function(){var a=b(this);a.is("#tribe-bar-date")&&(a.val().length?(c.params[a.attr("name")]=a.val(),c.url_params[a.attr("name")]=a.val()):a.is(".placeholder")&&a.is(".bd-updated")?c.url_params[a.attr("name")]=
|
9 |
a.attr("data-oldDate"):c.date=g.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()),("month"===c.view||"day"===c.view||"week"===c.view)&&c.pushcount++))})});var l=b('#tribe-events-bar [class^="tribe-bar-button-"]'),
|
10 |
r=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(){b("#tribe-bar-views").removeClass("tribe-bar-views-open");l.hasClass("open")&&(l.removeClass("open"),r.hide())});r.click(function(a){a.stopPropagation()});m&&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);
|
3 |
670>b?a.removeClass("tribe-bar-mini").addClass("tribe-bar-collapse"):a.removeClass("tribe-bar-collapse")}}function u(){tribe_events_bar_action="change_view";if("month"===c.view&&d.length){var a=d.val();7===a.length&&d.val(a+t.get_day())}c.url_params={};b(h).trigger("tribe_ev_preCollectBarParams");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")]=
|
4 |
a.val())});c.url_params=b.param(c.url_params);b(h).trigger("tribe_ev_postCollectBarParams");c.url_params.length&&(c.cur_url+=k.starting_delim()+c.url_params);s.location.href=c.cur_url}var e=b("#tribe-bar-form"),d=b("#tribe-bar-date"),f=b("select[name=tribe-bar-view]");p(e);e.resize(function(){p(e)});if(!b(".tribe-events-week-grid").length&&(!b(".events-gridview").length||k.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",
|
5 |
showAnim:"fadeIn"}).on("changeDate",function(){v.hide()}).data("datepicker")}d.blur(function(){""===d.val()&&(b(".datepicker.dropdown-menu").is(":hidden")&&k.live_ajax()&&k.pushstate)&&(c.date=g.cur_date,g.cur_url=g.base_url,b(h).trigger("tribe_ev_runAjax"))});b(".tribe-bar-settings").length&&b("#tribe-events-bar").addClass("tribe-has-settings");b("#tribe-events-bar .hasDatepicker").length&&b("#tribe-events-bar").addClass("tribe-has-datepicker");b('input[name*="tribe-bar-"]').placeholder();b('<ul class="tribe-bar-views-list" />').insertAfter(f);
|
6 |
+
var q=b(".tribe-bar-views-list");f.find("option").each(function(a){var c=b(this);displaying=c.data("view");var d="tribe-bar-views-option-"+c.data("view");b("<li></li>",{"class":"tribe-bar-views-option "+d,"data-tribe-bar-order":a,"data-view":displaying}).html([' <a href="#">',' <span class="tribe-icon-'+displaying+'">'+c.text()+"</span>","</a>"].join("")).appendTo(".tribe-bar-views-list")});f=f.find(":selected").data("view");q.find("li[data-view="+f+"]").prependTo(q).addClass("tribe-bar-active");
|
7 |
+
e.on("click","#tribe-bar-views",function(a){a.stopPropagation();b(this).toggleClass("tribe-bar-views-open")});e.on("click",".tribe-bar-views-option",function(a){a.preventDefault();a=b(this);a.is(".tribe-bar-active")||(a=a.data("view"),c.cur_url=b("option[data-view="+a+"]").val(),c.view_target=b('select[name=tribe-bar-view] option[value="'+c.cur_url+'"]').data("view"),tribe_events_bar_action="change_view",u())});e.on("click","#tribe-bar-collapse-toggle",function(){b(this).toggleClass("tribe-bar-filters-open");
|
8 |
b(".tribe-bar-filters").slideToggle("fast")});b('label[for="tribe-bar-date"], input[name="tribe-bar-date"]').wrapAll('<div id="tribe-bar-dates" />');b("#tribe-bar-filters").before(b("#tribe-bar-dates"));b(h).on("tribe_ev_serializeBar",function(){b("form#tribe-bar-form input, #tribeHideRecurrence").each(function(){var a=b(this);a.is("#tribe-bar-date")&&(a.val().length?(c.params[a.attr("name")]=a.val(),c.url_params[a.attr("name")]=a.val()):a.is(".placeholder")&&a.is(".bd-updated")?c.url_params[a.attr("name")]=
|
9 |
a.attr("data-oldDate"):c.date=g.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()),("month"===c.view||"day"===c.view||"week"===c.view)&&c.pushcount++))})});var l=b('#tribe-events-bar [class^="tribe-bar-button-"]'),
|
10 |
r=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(){b("#tribe-bar-views").removeClass("tribe-bar-views-open");l.hasClass("open")&&(l.removeClass("open"),r.hide())});r.click(function(a){a.stopPropagation()});m&&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
@@ -153,7 +153,7 @@ ul.tribe-events-sub-nav a:hover,
|
|
153 |
}
|
154 |
|
155 |
/* Global Main Button Style */
|
156 |
-
.tribe-events-button {
|
157 |
background-color: #666;
|
158 |
color: #fff;
|
159 |
background-image: none;
|
@@ -180,6 +180,7 @@ ul.tribe-events-sub-nav a:hover,
|
|
180 |
|
181 |
.tribe-events-button.tribe-inactive,
|
182 |
.tribe-events-button:hover,
|
|
|
183 |
.tribe-events-button.tribe-active:hover {
|
184 |
background-color: #ddd;
|
185 |
color:#444;
|
@@ -371,6 +372,7 @@ h2.tribe-events-page-title a:focus {
|
|
371 |
#tribe-events-footer .tribe-events-sub-nav {
|
372 |
list-style-type: none;
|
373 |
margin: 0;
|
|
|
374 |
overflow: hidden;
|
375 |
line-height: normal;
|
376 |
text-align: center;
|
@@ -859,7 +861,7 @@ select.tribe-events-dropdown {
|
|
859 |
|
860 |
/* Event Meta */
|
861 |
.single-tribe_events .tribe-events-event-meta {
|
862 |
-
font-size:
|
863 |
}
|
864 |
.tribe-events-event-meta .tribe-events-meta-group,
|
865 |
.tribe-events-event-meta .column {
|
@@ -901,7 +903,12 @@ select.tribe-events-dropdown {
|
|
901 |
}
|
902 |
/* Content */
|
903 |
.single-tribe_events .tribe-events-content {
|
904 |
-
width:
|
|
|
|
|
|
|
|
|
|
|
905 |
padding: 0;
|
906 |
}
|
907 |
@media only screen and (max-width: 767px) {
|
@@ -1154,7 +1161,8 @@ td.tickets_name {
|
|
1154 |
font-size: 13px;
|
1155 |
}
|
1156 |
|
1157 |
-
.single-tribe_events #tribe-events-content form.cart
|
|
|
1158 |
background: #fafafa;
|
1159 |
border: 1px solid #eee;
|
1160 |
margin: 30px 0;
|
@@ -1164,14 +1172,34 @@ td.tickets_name {
|
|
1164 |
table.tribe-events-tickets {
|
1165 |
margin: 0;
|
1166 |
width: 100%;
|
|
|
1167 |
}
|
1168 |
|
1169 |
table.tribe-events-tickets td {
|
1170 |
border-top: 1px solid #ddd;
|
|
|
1171 |
padding: 8px 10px 8px 0;
|
1172 |
vertical-align: middle;
|
1173 |
}
|
1174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1175 |
table.tribe-events-tickets .tickets_nostock {
|
1176 |
display: inline-block;
|
1177 |
text-align: center;
|
153 |
}
|
154 |
|
155 |
/* Global Main Button Style */
|
156 |
+
.tribe-events-button, .entry-content .tribe-events-button {
|
157 |
background-color: #666;
|
158 |
color: #fff;
|
159 |
background-image: none;
|
180 |
|
181 |
.tribe-events-button.tribe-inactive,
|
182 |
.tribe-events-button:hover,
|
183 |
+
.entry-content .tribe-events-button:hover,
|
184 |
.tribe-events-button.tribe-active:hover {
|
185 |
background-color: #ddd;
|
186 |
color:#444;
|
372 |
#tribe-events-footer .tribe-events-sub-nav {
|
373 |
list-style-type: none;
|
374 |
margin: 0;
|
375 |
+
padding: 0;
|
376 |
overflow: hidden;
|
377 |
line-height: normal;
|
378 |
text-align: center;
|
861 |
|
862 |
/* Event Meta */
|
863 |
.single-tribe_events .tribe-events-event-meta {
|
864 |
+
font-size: 13px;
|
865 |
}
|
866 |
.tribe-events-event-meta .tribe-events-meta-group,
|
867 |
.tribe-events-event-meta .column {
|
903 |
}
|
904 |
/* Content */
|
905 |
.single-tribe_events .tribe-events-content {
|
906 |
+
width: 100%;
|
907 |
+
max-width: 100%;
|
908 |
+
padding: 0;
|
909 |
+
}
|
910 |
+
/* Twenty Thirteen Conflict */
|
911 |
+
.sidebar.single-tribe_events .tribe-events-content {
|
912 |
padding: 0;
|
913 |
}
|
914 |
@media only screen and (max-width: 767px) {
|
1161 |
font-size: 13px;
|
1162 |
}
|
1163 |
|
1164 |
+
.single-tribe_events #tribe-events-content form.cart,
|
1165 |
+
.single-tribe_events #tribe-events-content div.cart {
|
1166 |
background: #fafafa;
|
1167 |
border: 1px solid #eee;
|
1168 |
margin: 30px 0;
|
1172 |
table.tribe-events-tickets {
|
1173 |
margin: 0;
|
1174 |
width: 100%;
|
1175 |
+
border-bottom: 0;
|
1176 |
}
|
1177 |
|
1178 |
table.tribe-events-tickets td {
|
1179 |
border-top: 1px solid #ddd;
|
1180 |
+
border-bottom: 1px solid #ddd;
|
1181 |
padding: 8px 10px 8px 0;
|
1182 |
vertical-align: middle;
|
1183 |
}
|
1184 |
|
1185 |
+
table.tribe-events-tickets td.wpec {
|
1186 |
+
line-height: 0;
|
1187 |
+
}
|
1188 |
+
|
1189 |
+
table.tribe-events-tickets td.woocommerce {
|
1190 |
+
border-bottom: 0;
|
1191 |
+
}
|
1192 |
+
|
1193 |
+
table.tribe-events-tickets td.wpec img {
|
1194 |
+
display: none;
|
1195 |
+
}
|
1196 |
+
|
1197 |
+
table.tribe-events-tickets td fieldset {
|
1198 |
+
padding: 14px 0.625em 4px;
|
1199 |
+
border: 0;
|
1200 |
+
margin-top: 8px;
|
1201 |
+
}
|
1202 |
+
|
1203 |
table.tribe-events-tickets .tickets_nostock {
|
1204 |
display: inline-block;
|
1205 |
text-align: center;
|
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;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)}}
|
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,.entry-content .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,.entry-content .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;padding: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:13px}.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:100%;max-width:100%;padding:0}.sidebar.single-tribe_events .tribe-events-content{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,.single-tribe_events #tribe-events-content div.cart{background:#fafafa;border:1px solid #eee;margin:30px 0;padding:0 4% 3%}table.tribe-events-tickets{margin:0;width:100%;border-bottom:0}table.tribe-events-tickets td{border-top:1px solid #ddd;border-bottom:1px solid #ddd;padding:8px 10px 8px 0;vertical-align:middle}table.tribe-events-tickets td.wpec{line-height:0}table.tribe-events-tickets td.woocommerce{border-bottom:0}table.tribe-events-tickets td.wpec img{display:none}table.tribe-events-tickets td fieldset{padding:14px .625em 4px;border:0;margin-top:8px}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
@@ -693,13 +693,15 @@ td.tickets_name {
|
|
693 |
font-size: 13px;
|
694 |
}
|
695 |
|
696 |
-
.single-tribe_events #tribe-events-content form.cart
|
|
|
697 |
margin: 30px 0;
|
698 |
}
|
699 |
|
700 |
table.tribe-events-tickets {
|
701 |
margin: 0;
|
702 |
width: 100%;
|
|
|
703 |
}
|
704 |
|
705 |
table.tribe-events-tickets td {
|
@@ -708,6 +710,18 @@ table.tribe-events-tickets td {
|
|
708 |
vertical-align: middle;
|
709 |
}
|
710 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
table.tribe-events-tickets .tickets_nostock {
|
712 |
display: inline-block;
|
713 |
text-align: center;
|
@@ -723,8 +737,6 @@ h2.tribe-events-tickets-title {
|
|
723 |
@ Template: /modules/bar.php
|
724 |
=============================================*/
|
725 |
|
726 |
-
|
727 |
-
|
728 |
/* Views Select */
|
729 |
#tribe-bar-views .tribe-bar-view-select,
|
730 |
#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2 {
|
693 |
font-size: 13px;
|
694 |
}
|
695 |
|
696 |
+
.single-tribe_events #tribe-events-content form.cart,
|
697 |
+
.single-tribe_events #tribe-events-content div.cart {
|
698 |
margin: 30px 0;
|
699 |
}
|
700 |
|
701 |
table.tribe-events-tickets {
|
702 |
margin: 0;
|
703 |
width: 100%;
|
704 |
+
border-bottom: 0;
|
705 |
}
|
706 |
|
707 |
table.tribe-events-tickets td {
|
710 |
vertical-align: middle;
|
711 |
}
|
712 |
|
713 |
+
table.tribe-events-tickets td.wpec {
|
714 |
+
line-height: 0;
|
715 |
+
}
|
716 |
+
|
717 |
+
table.tribe-events-tickets td.woocommerce {
|
718 |
+
border-bottom: 0;
|
719 |
+
}
|
720 |
+
|
721 |
+
table.tribe-events-tickets td.wpec img {
|
722 |
+
display: none;
|
723 |
+
}
|
724 |
+
|
725 |
table.tribe-events-tickets .tickets_nostock {
|
726 |
display: inline-block;
|
727 |
text-align: center;
|
737 |
@ Template: /modules/bar.php
|
738 |
=============================================*/
|
739 |
|
|
|
|
|
740 |
/* Views Select */
|
741 |
#tribe-bar-views .tribe-bar-view-select,
|
742 |
#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2 {
|
resources/tribe-events-skeleton.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tribe-events-back{margin:0 0 20px 0}.tribe-events-read-more{display:block}.tribe-events-day.page .hentry,.tribe-events-week.page .hentry{margin:0;padding:0 0 15px 0}.event .entry-title{line-height:inherit;padding:inherit}.updated-info{text-indent:-9999px;height:0}.tribe-events-event-schedule-details{display:inline}.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}.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;margin-left:-12px}.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{position:relative;z-index:0;text-align:center}.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;overflow:hidden}#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 .tribe-events-nav-previous,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{margin-right:5px}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next{margin-left:5px}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left{text-align:left}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right{text-align:right}.tribe-events-ajax-loading{display:none;position:absolute;left:50%;-webkit-box-shadow:none;box-shadow:none}.tribe-events-loading .tribe-events-ajax-loading{display:block}#tribe-events-footer{margin-bottom:1em}.events-list #tribe-events-footer,.tribe-events-day #tribe-events-footer,.tribe-events-map #tribe-events-footer{margin:1.25em 0 18px}.single-tribe_events #tribe-events-header,.tribe-events-map #tribe-events-header{margin:24px 0 14px}.single-tribe_events #tribe-events-header li,.single-tribe_events #tribe-events-footer li{width:48%;padding-bottom:10px}#tribe-events-content ul.tribe-events-sub-nav{list-style-type:none;margin:0;overflow:hidden;text-align:center}#tribe-events-content ul.tribe-events-sub-nav li{display:inline-block;zoom:1;*display:inline;margin:0;vertical-align:middle}#tribe-events-content ul.tribe-events-sub-nav li.tribe-events-nav-prev{margin-right:5px}#tribe-events-content ul.tribe-events-sub-nav li.tribe-events-nav-next{margin-left:5px}#tribe-events-content li.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}#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.tribe-events-first{padding-top:0}.tribe-events-list .vevent.hentry h2{padding:0;line-height:1.2}.tribe-events-loop .tribe-events-event-meta{float:none;clear:both;border:0;margin:0 0 15px 0;padding:0;line-height:1.5;font-weight:normal;font-size:1.2em;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1;*display:inline;white-space:pre}.tribe-events-event-meta address.tribe-events-address{display:inline}.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-loop{clear:both}.tribe-events-loop .vevent.tribe-events-last{border-bottom:0}.tribe-events-list .tribe-events-loop .tribe-events-content{clear:both;width:100%;padding:0}.events-archive h3 .published,.single-tribe_venue h3 .published{margin-top:0;font-style:italic;text-transform:none}.tribe-events-loop .tribe-events-event-meta dl{margin:0}.tribe-events-loop .tribe-events-event-meta dt{font-weight:bold;padding-right:12px;width:auto}.tribe-events-loop .tribe-events-event-meta dd{margin-bottom:.25em;margin-left:6.5em}.single-tribe_events #tribe-events-content{padding:0}.single-tribe_events .tribe-events-schedule .tribe-events-divider{margin-right:10px}.single-tribe_events .tribe-events-schedule .recurringinfo{margin-right:10px}.single-tribe_events .tribe-events-schedule .tribe-events-cost{margin-right:10px}#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-top:0}#eventbrite-embed{width:100%;min-height:225px;margin:24px 0}.eventbrite-ticket-embed{margin:0 0 30px 0}.tribe-events-list .vevent.hentry.tribe-event-end-month{border-bottom:0;padding-bottom:0}.single-tribe_events .tribe-events-schedule h2{display:inline-block;zoom:1;*display:inline;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 .tribe-events-event-image{clear:both;text-align:center;margin-bottom:30px}.single-tribe_events .tribe-events-event-meta{width:100%;margin:30px -4% 30px 0}.single-tribe_events .tribe-events-venue-map{width:63%;float:right}.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: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}.tribe-events-event-meta:first-child{border-top:1px solid #bbb}.single-tribe_events .tribe-events-event-meta dl{margin:0}.tribe-events-event-meta dt{clear:left;font-weight:bold}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-single-event-description{width:auto;padding:0;margin-bottom:30px}#tribe-events-content table.tribe-events-calendar{margin:0 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{font-size:11px;font-weight:bold}#tribe-events-content .tribe-events-calendar td{height:110px;width:14.28%;vertical-align:top;padding:0 0 .5em;font-size:12px;position:relative}.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;zoom:1;*display:inline;position:relative}.event-is-recurring{position:relative}.recurring-info-tooltip.tribe-events-tooltip{left:10px;width:200px;max-width:320px;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:6px 8px;font-weight:bold;line-height:1}.tribe-events-calendar th{width:250px;height:10px;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.entry-title{line-height:1.5;font-size:91.7%;font-weight:normal;text-transform:none;margin:0;padding:0;letter-spacing:0}.tribe-events-calendar div[id*="tribe-events-event-"] h3.entry-title a{font-size:100%}#tribe-events-content .tribe-events-tooltip h4.entry-title{margin:0;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 p.entry-summary{padding:0;font-size:11px;line-height:1.5}.tribe-events-list-widget ol,.tribe-events-adv-list-widget ol{list-style-type:square;margin-left:0;margin-bottom:0}.tribe-events-list-widget li,.singular.page li.hentry,.tribe-events-adv-list-widget li,.singular.page li.hentry{margin:6px 0;padding:0 0 10px 0}.tribe-events-list-widget li p.entry-title.summary,.tribe-events-adv-list-widget li p.entry-title.summary{margin-bottom:0;padding:0;font-size:100%}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{margin:30px 0}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 15px;font-size:1.4em;font-weight:bold}#tribe-bar-views .tribe-bar-view-select,#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:none}#tribe-bar-views .tribe-select2{width:108px !important;float:left}.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{width:18px}#tribe-bar-views .select2-container .select2-choice span{margin-right:18px}#tribe-bar-views .select2-container .select2-choice span span{margin-right:0}.tribe-has-settings #tribe-bar-dates{margin-left:-331px}.tribe-has-settings #tribe-bar-views{width:142px;margin-left:-142px}.tribe-has-settings #tribe-bar-views .select2-container .select2-choice{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.tribe-has-settings #tribe-bar-views .select2-container .select2-choice div{-webkit-border-radius:0;border-radius:0;background:transparent;background-image:none;filter:none;border-left:0}#tribe-events-bar .tribe-bar-settings{overflow:hidden}#tribe-events-bar .tribe-bar-button-settings span{background-image:url(images/events-bar/icon-gear.png);background-repeat:no-repeat;background-position:50% 50%;-webkit-background-size:14px 14px;background-size:14px 14px;height:100%;float:left;width:14px;display:inline-block;position:relative}#tribe-bar-views .tribe-bar-drop-content button{width:100%}#tribe-events-bar .tribe-bar-button-settings{border-left-color:transparent;-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;float:left;margin-left:-1px}.tribe-bar-settings .tribe-bar-drop-content{width:285px;right:-5px;padding:10px 12px 4px}.tribe-bar-full #tribe-bar-views .tribe-bar-view-select,.tribe-bar-full #tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:none}.tribe-bar-mini #tribe-bar-views .tribe-bar-view-select,.tribe-bar-mini #tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:block}.tribe-bar-full #tribe-bar-views ul.tribe-bar-view-list{display:block}.tribe-bar-mini #tribe-bar-views ul.tribe-bar-view-list{display:none}@media screen and (max-width:845px){#tribe-bar-views ul.tribe-bar-view-list{display:none}#tribe-bar-views .tribe-bar-view-select,#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:block}}@media screen and (min-width:676px){.tribe-bar-full #tribe-bar-filters .tribe-bar-drop-content{display:inline !important}}
|
1 |
+
.tribe-events-back{margin:0 0 20px 0}.tribe-events-read-more{display:block}.tribe-events-day.page .hentry,.tribe-events-week.page .hentry{margin:0;padding:0 0 15px 0}.event .entry-title{line-height:inherit;padding:inherit}.updated-info{text-indent:-9999px;height:0}.tribe-events-event-schedule-details{display:inline}.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}.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;margin-left:-12px}.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{position:relative;z-index:0;text-align:center}.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;overflow:hidden}#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 .tribe-events-nav-previous,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-previous{margin-right:5px}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-next{margin-left:5px}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-left,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-left{text-align:left}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-right,#tribe-events-footer .tribe-events-sub-nav .tribe-events-nav-right{text-align:right}.tribe-events-ajax-loading{display:none;position:absolute;left:50%;-webkit-box-shadow:none;box-shadow:none}.tribe-events-loading .tribe-events-ajax-loading{display:block}#tribe-events-footer{margin-bottom:1em}.events-list #tribe-events-footer,.tribe-events-day #tribe-events-footer,.tribe-events-map #tribe-events-footer{margin:1.25em 0 18px}.single-tribe_events #tribe-events-header,.tribe-events-map #tribe-events-header{margin:24px 0 14px}.single-tribe_events #tribe-events-header li,.single-tribe_events #tribe-events-footer li{width:48%;padding-bottom:10px}#tribe-events-content ul.tribe-events-sub-nav{list-style-type:none;margin:0;overflow:hidden;text-align:center}#tribe-events-content ul.tribe-events-sub-nav li{display:inline-block;zoom:1;*display:inline;margin:0;vertical-align:middle}#tribe-events-content ul.tribe-events-sub-nav li.tribe-events-nav-prev{margin-right:5px}#tribe-events-content ul.tribe-events-sub-nav li.tribe-events-nav-next{margin-left:5px}#tribe-events-content li.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}#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.tribe-events-first{padding-top:0}.tribe-events-list .vevent.hentry h2{padding:0;line-height:1.2}.tribe-events-loop .tribe-events-event-meta{float:none;clear:both;border:0;margin:0 0 15px 0;padding:0;line-height:1.5;font-weight:normal;font-size:1.2em;overflow:visible}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:inline-block;zoom:1;*display:inline;white-space:pre}.tribe-events-event-meta address.tribe-events-address{display:inline}.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-loop{clear:both}.tribe-events-loop .vevent.tribe-events-last{border-bottom:0}.tribe-events-list .tribe-events-loop .tribe-events-content{clear:both;width:100%;padding:0}.events-archive h3 .published,.single-tribe_venue h3 .published{margin-top:0;font-style:italic;text-transform:none}.tribe-events-loop .tribe-events-event-meta dl{margin:0}.tribe-events-loop .tribe-events-event-meta dt{font-weight:bold;padding-right:12px;width:auto}.tribe-events-loop .tribe-events-event-meta dd{margin-bottom:.25em;margin-left:6.5em}.single-tribe_events #tribe-events-content{padding:0}.single-tribe_events .tribe-events-schedule .tribe-events-divider{margin-right:10px}.single-tribe_events .tribe-events-schedule .recurringinfo{margin-right:10px}.single-tribe_events .tribe-events-schedule .tribe-events-cost{margin-right:10px}#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-top:0}#eventbrite-embed{width:100%;min-height:225px;margin:24px 0}.eventbrite-ticket-embed{margin:0 0 30px 0}.tribe-events-list .vevent.hentry.tribe-event-end-month{border-bottom:0;padding-bottom:0}.single-tribe_events .tribe-events-schedule h2{display:inline-block;zoom:1;*display:inline;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 .tribe-events-event-image{clear:both;text-align:center;margin-bottom:30px}.single-tribe_events .tribe-events-event-meta{width:100%;margin:30px -4% 30px 0}.single-tribe_events .tribe-events-venue-map{width:63%;float:right}.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: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}.tribe-events-event-meta:first-child{border-top:1px solid #bbb}.single-tribe_events .tribe-events-event-meta dl{margin:0}.tribe-events-event-meta dt{clear:left;font-weight:bold}#tribe-events-content .tribe-events-event-meta dd span.adr{display:block}.single-tribe_events .tribe-events-single-event-description{width:auto;padding:0;margin-bottom:30px}#tribe-events-content table.tribe-events-calendar{margin:0 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{font-size:11px;font-weight:bold}#tribe-events-content .tribe-events-calendar td{height:110px;width:14.28%;vertical-align:top;padding:0 0 .5em;font-size:12px;position:relative}.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;zoom:1;*display:inline;position:relative}.event-is-recurring{position:relative}.recurring-info-tooltip.tribe-events-tooltip{left:10px;width:200px;max-width:320px;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:6px 8px;font-weight:bold;line-height:1}.tribe-events-calendar th{width:250px;height:10px;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.entry-title{line-height:1.5;font-size:91.7%;font-weight:normal;text-transform:none;margin:0;padding:0;letter-spacing:0}.tribe-events-calendar div[id*="tribe-events-event-"] h3.entry-title a{font-size:100%}#tribe-events-content .tribe-events-tooltip h4.entry-title{margin:0;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 p.entry-summary{padding:0;font-size:11px;line-height:1.5}.tribe-events-list-widget ol,.tribe-events-adv-list-widget ol{list-style-type:square;margin-left:0;margin-bottom:0}.tribe-events-list-widget li,.singular.page li.hentry,.tribe-events-adv-list-widget li,.singular.page li.hentry{margin:6px 0;padding:0 0 10px 0}.tribe-events-list-widget li p.entry-title.summary,.tribe-events-adv-list-widget li p.entry-title.summary{margin-bottom:0;padding:0;font-size:100%}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,.single-tribe_events #tribe-events-content div.cart{margin:30px 0}table.tribe-events-tickets{margin:0;width:100%;border-bottom:0}table.tribe-events-tickets td{border-top:1px solid #ddd;padding:8px 10px 8px 0;vertical-align:middle}table.tribe-events-tickets td.wpec{line-height:0}table.tribe-events-tickets td.woocommerce{border-bottom:0}table.tribe-events-tickets td.wpec img{display:none}table.tribe-events-tickets .tickets_nostock{display:inline-block;text-align:center}h2.tribe-events-tickets-title{margin:20px 0 15px;font-size:1.4em;font-weight:bold}#tribe-bar-views .tribe-bar-view-select,#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:none}#tribe-bar-views .tribe-select2{width:108px !important;float:left}.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{width:18px}#tribe-bar-views .select2-container .select2-choice span{margin-right:18px}#tribe-bar-views .select2-container .select2-choice span span{margin-right:0}.tribe-has-settings #tribe-bar-dates{margin-left:-331px}.tribe-has-settings #tribe-bar-views{width:142px;margin-left:-142px}.tribe-has-settings #tribe-bar-views .select2-container .select2-choice{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.tribe-has-settings #tribe-bar-views .select2-container .select2-choice div{-webkit-border-radius:0;border-radius:0;background:transparent;background-image:none;filter:none;border-left:0}#tribe-events-bar .tribe-bar-settings{overflow:hidden}#tribe-events-bar .tribe-bar-button-settings span{background-image:url(images/events-bar/icon-gear.png);background-repeat:no-repeat;background-position:50% 50%;-webkit-background-size:14px 14px;background-size:14px 14px;height:100%;float:left;width:14px;display:inline-block;position:relative}#tribe-bar-views .tribe-bar-drop-content button{width:100%}#tribe-events-bar .tribe-bar-button-settings{border-left-color:transparent;-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;float:left;margin-left:-1px}.tribe-bar-settings .tribe-bar-drop-content{width:285px;right:-5px;padding:10px 12px 4px}.tribe-bar-full #tribe-bar-views .tribe-bar-view-select,.tribe-bar-full #tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:none}.tribe-bar-mini #tribe-bar-views .tribe-bar-view-select,.tribe-bar-mini #tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:block}.tribe-bar-full #tribe-bar-views ul.tribe-bar-view-list{display:block}.tribe-bar-mini #tribe-bar-views ul.tribe-bar-view-list{display:none}@media screen and (max-width:845px){#tribe-bar-views ul.tribe-bar-view-list{display:none}#tribe-bar-views .tribe-bar-view-select,#tribe-bar-views .tribe-bar-view-select ~ .tribe-select2{display:block}}@media screen and (min-width:676px){.tribe-bar-full #tribe-bar-filters .tribe-bar-drop-content{display:inline !important}}
|
resources/tribe-events-theme.css
CHANGED
@@ -28,7 +28,9 @@
|
|
28 |
.tribe-events-calendar td.tribe-events-present div[id*="tribe-events-daynum-"] > a,
|
29 |
#tribe_events_filters_wrapper input[type=submit],
|
30 |
.tribe-events-button,
|
|
|
31 |
.tribe-events-button.tribe-inactive,
|
|
|
32 |
.tribe-events-button:hover,
|
33 |
.tribe-events-button.tribe-active:hover {
|
34 |
background-color: #21759b;
|
@@ -41,6 +43,7 @@
|
|
41 |
|
42 |
.tribe-events-button.tribe-inactive,
|
43 |
.tribe-events-button:hover,
|
|
|
44 |
.tribe-events-button.tribe-active:hover {
|
45 |
color:#fff;
|
46 |
}
|
@@ -253,7 +256,9 @@ h2.tribe-events-page-title,
|
|
253 |
}
|
254 |
|
255 |
.single-tribe_events a.tribe-events-ical,
|
256 |
-
.single-tribe_events a.tribe-events-
|
|
|
|
|
257 |
background-color: transparent;
|
258 |
text-transform: none;
|
259 |
font-size: 14px;
|
@@ -261,6 +266,7 @@ h2.tribe-events-page-title,
|
|
261 |
letter-spacing: 0;
|
262 |
padding: 0;
|
263 |
float: none;
|
|
|
264 |
}
|
265 |
|
266 |
/* Featured Image */
|
@@ -463,15 +469,14 @@ h2.tribe-events-page-title,
|
|
463 |
border-top-color: transparent;
|
464 |
}
|
465 |
|
466 |
-
|
467 |
/* = WooTickets
|
468 |
=============================================*/
|
469 |
h2.tribe-events-tickets-title {
|
470 |
font-size: 17px;
|
471 |
}
|
472 |
|
473 |
-
|
474 |
-
|
475 |
@media
|
476 |
only screen and (min--moz-device-pixel-ratio: 2),
|
477 |
only screen and (-o-min-device-pixel-ratio: 2/1),
|
28 |
.tribe-events-calendar td.tribe-events-present div[id*="tribe-events-daynum-"] > a,
|
29 |
#tribe_events_filters_wrapper input[type=submit],
|
30 |
.tribe-events-button,
|
31 |
+
.entry-content .tribe-events-button,
|
32 |
.tribe-events-button.tribe-inactive,
|
33 |
+
.entry-content .tribe-events-button:hover,
|
34 |
.tribe-events-button:hover,
|
35 |
.tribe-events-button.tribe-active:hover {
|
36 |
background-color: #21759b;
|
43 |
|
44 |
.tribe-events-button.tribe-inactive,
|
45 |
.tribe-events-button:hover,
|
46 |
+
.entry-content .tribe-events-button:hover,
|
47 |
.tribe-events-button.tribe-active:hover {
|
48 |
color:#fff;
|
49 |
}
|
256 |
}
|
257 |
|
258 |
.single-tribe_events a.tribe-events-ical,
|
259 |
+
.single-tribe_events a.tribe-events-ical:hover,
|
260 |
+
.single-tribe_events a.tribe-events-gcal,
|
261 |
+
.single-tribe_events a.tribe-events-gcal:hover {
|
262 |
background-color: transparent;
|
263 |
text-transform: none;
|
264 |
font-size: 14px;
|
266 |
letter-spacing: 0;
|
267 |
padding: 0;
|
268 |
float: none;
|
269 |
+
color: #21759B;
|
270 |
}
|
271 |
|
272 |
/* Featured Image */
|
469 |
border-top-color: transparent;
|
470 |
}
|
471 |
|
|
|
472 |
/* = WooTickets
|
473 |
=============================================*/
|
474 |
h2.tribe-events-tickets-title {
|
475 |
font-size: 17px;
|
476 |
}
|
477 |
|
478 |
+
/* = Retina
|
479 |
+
=============================================*/
|
480 |
@media
|
481 |
only screen and (min--moz-device-pixel-ratio: 2),
|
482 |
only screen and (-o-min-device-pixel-ratio: 2/1),
|
resources/tribe-events-theme.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#tribe-events-content .tribe-events-tooltip h4,#tribe_events_filters_wrapper .tribe_events_slider_val,.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{color:#21759b}.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,#tribe_events_filters_wrapper input[type=submit],.tribe-events-button,.tribe-events-button.tribe-inactive,.tribe-events-button:hover,.tribe-events-button.tribe-active:hover{background-color:#21759b}#tribe_events_filters_wrapper input[type=submit]:hover,.tribe-events-button.tribe-active:hover{background-color:#0f3647}.tribe-events-button.tribe-inactive,.tribe-events-button:hover,.tribe-events-button.tribe-active:hover{color:#fff}#tribe_events_filters_wrapper h3 span:after{border-top-color:#21759b}#tribe_events_filters_wrapper .tribe_events_filter_item.closed h3 span:after{border-left-color:#21759b}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{font-size:15px;font-weight:bold}.tribe-events-gcal{margin-right:1.25em}.tribe-events-divider{display:none}.tribe-events-event-image{margin-bottom:1.25em;text-align:left}h2.tribe-events-page-title,#tribe-geo-results h2.tribe-events-page-title{font-size:30px;font-weight:bold}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next a{display:none}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next{display:block}.single-tribe_events #tribe-events-footer,.tribe-events-day #tribe-events-footer,.events-list #tribe-events-footer,.tribe-events-map #tribe-events-footer,.tribe-events-photo #tribe-events-footer{border-top:1px solid #e5e5e5;padding-top:2em}.single-tribe_events #tribe-events-header{display:none}@media only screen and (max-width:767px){#tribe-events-header .tribe-events-sub-nav li a{display:none}}.tribe-events-list .vevent.hentry{border-bottom:0;padding:1.75em 0;position:relative}.tribe-events-list .vevent.hentry h2{font-size:1.6em}.tribe-events-list-separator-year{font-size:28px;padding-top:1.25em}.tribe-events-list-separator-year+.tribe-events-list-separator-month{margin-top:.25em}.tribe-events-list-separator-month{text-transform:none;font-size:24px;margin:1.25em auto;text-align:center;position:relative;background-color:transparent;z-index:1}.tribe-events-list-separator-month:after{content:'';border-bottom:1px solid #c2c2c2;height:1px;width:100%;display:block;position:absolute;top:50%;left:0;z-index:-1}.tribe-events-list-separator-month span{background-color:#fff;padding:0 7.5%}.tribe-events-list-separator-month+.vevent.hentry.tribe-events-first{padding-top:1.5em}.tribe-events-list .vevent.hentry.tribe-event-end-month{padding-bottom:1.5em}.tribe-events-loop .tribe-events-event-meta{margin-bottom:1em;font-size:13px}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{padding-left:0;font-weight:normal;vertical-align:top}.tribe-events-list .time-details,.tribe-events-list .tribe-events-venue-details{line-height:1.2}.tribe-events-list .tribe-events-venue-details,.tribe-events-event-meta address.tribe-events-address{font-weight:normal;font-style:italic}.tribe-events-event-meta address.tribe-events-address{padding-right:3px}@media only screen and (max-width:767px){.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:block;padding:0}}.events-list .tribe-events-loop,.tribe-events-day .tribe-events-loop,.single-tribe_venue .tribe-events-loop,.single-tribe_organizer .tribe-events-loop{max-width:700px;margin:0 auto}.single-tribe_events h2.tribe-events-single-event-title{font-size:33px}.tribe-events-schedule{margin:1em 0 1.5em}.single-tribe_events .tribe-events-schedule .tribe-events-divider{display:inline-block;zoom:1;*display:inline;font-weight:normal}.single-tribe_events .tribe-events-schedule .recurringinfo{margin-right:.5em}.single-tribe_events .tribe-events-schedule h3{font-size:18px;margin:0}.single-tribe_events .tribe-events-cal-links{margin-bottom:1.75em;display:block;overflow:hidden}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{background-color:transparent;text-transform:none;font-size:14px;font-weight:bold;letter-spacing:0;padding:0;float:none}.single-tribe_events .tribe-events-event-image{text-align:left;margin-bottom:1.25em}.tribe-events-event-schedule-details{margin-right:.5em}.tribe-events-meta-group .tribe-events-single-section-title{font-size:17px}.single-tribe_events .tribe-events-event-meta{font-size:14px}@media only screen and (max-width:767px){.single-tribe_events .tribe-events-schedule .recurringinfo{display:block;margin:1em 0 0}.single-tribe_events .tribe-events-schedule .recurringinfo .tribe-events-divider{display:none}}#tribe-events-content .tribe-events-calendar td{border:1px solid #d2d2d2;border-top:0;-webkit-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-moz-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-ms-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-o-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530)}#tribe-events-content .tribe-events-calendar td:hover{background:#f7f7f7;-webkit-box-shadow:rgba(0,0,0,0.2) 0 0 10px;box-shadow:rgba(0,0,0,0.2) 0 0 10px}.tribe-events-othermonth{background:#f9f9f9}#tribe-events-content .tribe-events-calendar .tribe-events-othermonth:hover{-webkit-box-shadow:none;box-shadow:none}#tribe-events-content table.tribe-events-calendar{border-bottom:1px solid #d2d2d2;border-top:0}.tribe-events-calendar div[id*="tribe-events-daynum-"],.tribe-events-calendar div[id*="tribe-events-daynum-"] a{background-color:#b2b2b2;color:#fff;font-size:12px;font-weight:bold}.tribe-events-calendar div[id*="tribe-events-daynum-"] a:hover{color:#666}.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{background-color:#e0e0e0;color:#fff}.tribe-events-calendar td.tribe-events-past .tribe-events-month-event-title a,.tribe-events-calendar td.tribe-events-past .tribe-events-viewmore a{opacity:.5;filter:Alpha(opacity=50)}.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip,.recurring-info-tooltip{border:0;background-color:#fff;color:#606060;padding:.75em 1em 1.15em;-webkit-box-shadow:3px 4px 21px rgba(0,0,0,.38);-moz-box-shadow:3px 4px 21px rgba(0,0,0,.38);box-shadow:3px 4px 21px rgba(0,0,0,.38)}.tribe-events-tooltip .tribe-events-arrow{width:20px;height:7px;background-image:url(images/tribe-theme/tribe-theme-tooltips.png);-webkit-background-size:37px 20px;background-size:37px 20px;bottom:-7px}.events-archive.events-gridview #tribe-events-content table .vevent{border-bottom:1px solid #e0e0e0}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-calendar thead th{background-color:#666;color:#fff;font-weight:bold;letter-spacing:0;padding:1em 0;border-left:1px solid #666;border-right:1px solid #666}.tribe-events-calendar td div[id*="tribe-events-daynum-"]{padding:4px 9px 6px}#tribe-events-content .tribe-events-tooltip h4{margin:0;background-color:transparent;font-size:18px;padding:0;letter-spacing:0;font-weight:bold}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;padding:0}.tribe-events-tooltip .duration{font-style:normal;font-weight:bold;margin:0;padding:.4em 0 .5em}.tribe-events-tooltip .tribe-events-event-thumb{padding:.85em 1em 0 0}.tribe-events-tooltip p.entry-summary{font-size:13px;padding-top:.5em}.events-list.tribe-bar-is-disabled #tribe-events-content-wrapper{max-width:700px;margin:0 auto}.tribe-events-map.tribe-bar-is-disabled #tribe-events-content-wrapper{max-width:none}.tribe-events-filter-view #tribe_events_filters_wrapper{width:26.6%;padding:0 5.32% 15px 0}.tribe-events-filter-view #tribe-events-content{width:68.08%}.tribe-events-filter-view .tribe-events-filter_content{background-color:#f6f6f6;padding:2em 1.5em}.tribe_events_filter_item{padding-bottom:.4em;border-bottom:0}#tribe_events_filters_wrapper h3{margin-bottom:1em;text-transform:uppercase;color:#b2b2b2}#tribe_events_filters_wrapper .tribe_events_filter_item.closed h3 span:after{border-top-color:transparent}h2.tribe-events-tickets-title{font-size:17px}@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-theme/tribe-theme-tooltips@2x.png)}}
|
1 |
+
#tribe-events-content .tribe-events-tooltip h4,#tribe_events_filters_wrapper .tribe_events_slider_val,.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-gcal{color:#21759b}.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,#tribe_events_filters_wrapper input[type=submit],.tribe-events-button,.entry-content .tribe-events-button,.tribe-events-button.tribe-inactive,.entry-content .tribe-events-button:hover,.tribe-events-button:hover,.tribe-events-button.tribe-active:hover{background-color:#21759b}#tribe_events_filters_wrapper input[type=submit]:hover,.tribe-events-button.tribe-active:hover{background-color:#0f3647}.tribe-events-button.tribe-inactive,.tribe-events-button:hover,.entry-content .tribe-events-button:hover,.tribe-events-button.tribe-active:hover{color:#fff}#tribe_events_filters_wrapper h3 span:after{border-top-color:#21759b}#tribe_events_filters_wrapper .tribe_events_filter_item.closed h3 span:after{border-left-color:#21759b}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{font-size:15px;font-weight:bold}.tribe-events-gcal{margin-right:1.25em}.tribe-events-divider{display:none}.tribe-events-event-image{margin-bottom:1.25em;text-align:left}h2.tribe-events-page-title,#tribe-geo-results h2.tribe-events-page-title{font-size:30px;font-weight:bold}#tribe-events-header .tribe-events-sub-nav li,#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next a{display:none}#tribe-events-header .tribe-events-sub-nav .tribe-events-nav-next{display:block}.single-tribe_events #tribe-events-footer,.tribe-events-day #tribe-events-footer,.events-list #tribe-events-footer,.tribe-events-map #tribe-events-footer,.tribe-events-photo #tribe-events-footer{border-top:1px solid #e5e5e5;padding-top:2em}.single-tribe_events #tribe-events-header{display:none}@media only screen and (max-width:767px){#tribe-events-header .tribe-events-sub-nav li a{display:none}}.tribe-events-list .vevent.hentry{border-bottom:0;padding:1.75em 0;position:relative}.tribe-events-list .vevent.hentry h2{font-size:1.6em}.tribe-events-list-separator-year{font-size:28px;padding-top:1.25em}.tribe-events-list-separator-year+.tribe-events-list-separator-month{margin-top:.25em}.tribe-events-list-separator-month{text-transform:none;font-size:24px;margin:1.25em auto;text-align:center;position:relative;background-color:transparent;z-index:1}.tribe-events-list-separator-month:after{content:'';border-bottom:1px solid #c2c2c2;height:1px;width:100%;display:block;position:absolute;top:50%;left:0;z-index:-1}.tribe-events-list-separator-month span{background-color:#fff;padding:0 7.5%}.tribe-events-list-separator-month+.vevent.hentry.tribe-events-first{padding-top:1.5em}.tribe-events-list .vevent.hentry.tribe-event-end-month{padding-bottom:1.5em}.tribe-events-loop .tribe-events-event-meta{margin-bottom:1em;font-size:13px}.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{padding-left:0;font-weight:normal;vertical-align:top}.tribe-events-list .time-details,.tribe-events-list .tribe-events-venue-details{line-height:1.2}.tribe-events-list .tribe-events-venue-details,.tribe-events-event-meta address.tribe-events-address{font-weight:normal;font-style:italic}.tribe-events-event-meta address.tribe-events-address{padding-right:3px}@media only screen and (max-width:767px){.tribe-events-list .tribe-events-loop .tribe-events-event-meta .recurringinfo{display:block;padding:0}}.events-list .tribe-events-loop,.tribe-events-day .tribe-events-loop,.single-tribe_venue .tribe-events-loop,.single-tribe_organizer .tribe-events-loop{max-width:700px;margin:0 auto}.single-tribe_events h2.tribe-events-single-event-title{font-size:33px}.tribe-events-schedule{margin:1em 0 1.5em}.single-tribe_events .tribe-events-schedule .tribe-events-divider{display:inline-block;zoom:1;*display:inline;font-weight:normal}.single-tribe_events .tribe-events-schedule .recurringinfo{margin-right:.5em}.single-tribe_events .tribe-events-schedule h3{font-size:18px;margin:0}.single-tribe_events .tribe-events-cal-links{margin-bottom:1.75em;display:block;overflow:hidden}.single-tribe_events a.tribe-events-ical,.single-tribe_events a.tribe-events-ical:hover,.single-tribe_events a.tribe-events-gcal,.single-tribe_events a.tribe-events-gcal:hover{background-color:transparent;text-transform:none;font-size:14px;font-weight:bold;letter-spacing:0;padding:0;float:none;color:#21759b}.single-tribe_events .tribe-events-event-image{text-align:left;margin-bottom:1.25em}.tribe-events-event-schedule-details{margin-right:.5em}.tribe-events-meta-group .tribe-events-single-section-title{font-size:17px}.single-tribe_events .tribe-events-event-meta{font-size:14px}@media only screen and (max-width:767px){.single-tribe_events .tribe-events-schedule .recurringinfo{display:block;margin:1em 0 0}.single-tribe_events .tribe-events-schedule .recurringinfo .tribe-events-divider{display:none}}#tribe-events-content .tribe-events-calendar td{border:1px solid #d2d2d2;border-top:0;-webkit-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-moz-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-ms-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);-o-transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530);transition:all .2s cubic-bezier(0.550,0.085,0.680,0.530)}#tribe-events-content .tribe-events-calendar td:hover{background:#f7f7f7;-webkit-box-shadow:rgba(0,0,0,0.2) 0 0 10px;box-shadow:rgba(0,0,0,0.2) 0 0 10px}.tribe-events-othermonth{background:#f9f9f9}#tribe-events-content .tribe-events-calendar .tribe-events-othermonth:hover{-webkit-box-shadow:none;box-shadow:none}#tribe-events-content table.tribe-events-calendar{border-bottom:1px solid #d2d2d2;border-top:0}.tribe-events-calendar div[id*="tribe-events-daynum-"],.tribe-events-calendar div[id*="tribe-events-daynum-"] a{background-color:#b2b2b2;color:#fff;font-size:12px;font-weight:bold}.tribe-events-calendar div[id*="tribe-events-daynum-"] a:hover{color:#666}.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{background-color:#e0e0e0;color:#fff}.tribe-events-calendar td.tribe-events-past .tribe-events-month-event-title a,.tribe-events-calendar td.tribe-events-past .tribe-events-viewmore a{opacity:.5;filter:Alpha(opacity=50)}.tribe-events-calendar .tribe-events-tooltip,.tribe-events-week .tribe-events-tooltip,.recurring-info-tooltip{border:0;background-color:#fff;color:#606060;padding:.75em 1em 1.15em;-webkit-box-shadow:3px 4px 21px rgba(0,0,0,.38);-moz-box-shadow:3px 4px 21px rgba(0,0,0,.38);box-shadow:3px 4px 21px rgba(0,0,0,.38)}.tribe-events-tooltip .tribe-events-arrow{width:20px;height:7px;background-image:url(images/tribe-theme/tribe-theme-tooltips.png);-webkit-background-size:37px 20px;background-size:37px 20px;bottom:-7px}.events-archive.events-gridview #tribe-events-content table .vevent{border-bottom:1px solid #e0e0e0}.events-archive.events-gridview #tribe-events-content table .tribe-events-last{border-bottom:0}.tribe-events-calendar thead th{background-color:#666;color:#fff;font-weight:bold;letter-spacing:0;padding:1em 0;border-left:1px solid #666;border-right:1px solid #666}.tribe-events-calendar td div[id*="tribe-events-daynum-"]{padding:4px 9px 6px}#tribe-events-content .tribe-events-tooltip h4{margin:0;background-color:transparent;font-size:18px;padding:0;letter-spacing:0;font-weight:bold}.tribe-events-tooltip .tribe-events-event-body{font-size:11px;padding:0}.tribe-events-tooltip .duration{font-style:normal;font-weight:bold;margin:0;padding:.4em 0 .5em}.tribe-events-tooltip .tribe-events-event-thumb{padding:.85em 1em 0 0}.tribe-events-tooltip p.entry-summary{font-size:13px;padding-top:.5em}.events-list.tribe-bar-is-disabled #tribe-events-content-wrapper{max-width:700px;margin:0 auto}.tribe-events-map.tribe-bar-is-disabled #tribe-events-content-wrapper{max-width:none}.tribe-events-filter-view #tribe_events_filters_wrapper{width:26.6%;padding:0 5.32% 15px 0}.tribe-events-filter-view #tribe-events-content{width:68.08%}.tribe-events-filter-view .tribe-events-filter_content{background-color:#f6f6f6;padding:2em 1.5em}.tribe_events_filter_item{padding-bottom:.4em;border-bottom:0}#tribe_events_filters_wrapper h3{margin-bottom:1em;text-transform:uppercase;color:#b2b2b2}#tribe_events_filters_wrapper .tribe_events_filter_item.closed h3 span:after{border-top-color:transparent}h2.tribe-events-tickets-title{font-size:17px}@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-theme/tribe-theme-tooltips@2x.png)}}
|
the-events-calendar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: The Events Calendar
|
4 |
Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
-
Version: 3.
|
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.2
|
6 |
Author: Modern Tribe, Inc.
|
7 |
Author URI: http://m.tri.be/1x
|
8 |
Text Domain: tribe-events-calendar
|
views/default-template.php
CHANGED
@@ -12,9 +12,9 @@
|
|
12 |
*
|
13 |
*/
|
14 |
|
15 |
-
if ( !defined('ABSPATH') ) { die('-1'); }
|
16 |
|
17 |
-
|
18 |
<div id="tribe-events-pg-template">
|
19 |
<?php tribe_events_before_html(); ?>
|
20 |
<?php tribe_get_view(); ?>
|
12 |
*
|
13 |
*/
|
14 |
|
15 |
+
if ( !defined('ABSPATH') ) { die('-1'); }
|
16 |
|
17 |
+
get_header(); ?>
|
18 |
<div id="tribe-events-pg-template">
|
19 |
<?php tribe_events_before_html(); ?>
|
20 |
<?php tribe_get_view(); ?>
|