The Events Calendar - Version 4.7.1

Version Description

Download this release

Release Info

Developer ModernTribe
Plugin Icon The Events Calendar
Version 4.7.1
Comparing to
See all releases

Code changes from version 4.7.0.1 to 4.7.1

common/readme.txt CHANGED
@@ -3,6 +3,11 @@
3
 
4
  == Changelog ==
5
 
 
 
 
 
 
6
  = [4.8.0.1] 2018-11-30 =
7
 
8
  * Fix - Added safety measure to reduce risk of a fatal error when examining list of network-activated plugins [115826]
3
 
4
  == Changelog ==
5
 
6
+ = [4.8.1] 2018-12-05 =
7
+
8
+ * Fix - speed up and improve robustness of the asynchronous process feature detection code [118934]
9
+ * Language - 0 new strings added, 0 updated, 1 fuzzied, and 0 obsoleted
10
+
11
  = [4.8.0.1] 2018-11-30 =
12
 
13
  * Fix - Added safety measure to reduce risk of a fatal error when examining list of network-activated plugins [115826]
common/src/Tribe/Feature_Detection.php CHANGED
@@ -12,6 +12,7 @@
12
  * @since 4.7.23
13
  */
14
  class Tribe__Feature_Detection {
 
15
  /**
16
  * The name of the transient storing the support check results.
17
  *
@@ -19,6 +20,13 @@ class Tribe__Feature_Detection {
19
  */
20
  public static $transient = 'tribe_feature_detection';
21
 
 
 
 
 
 
 
 
22
  /**
23
  * Checks whether async, AJAX-based, background processing is supported or not.
24
  *
@@ -52,33 +60,78 @@ class Tribe__Feature_Detection {
52
 
53
  $cached = get_transient( self::$transient );
54
 
 
55
  if (
56
  $force
57
  || false === $cached
58
  || ( is_array( $cached ) && ! isset( $cached['supports_async_process'] ) )
59
  ) {
60
- /*
61
- * Build and dispatch the tester: if it works a transient should be set.
62
- */
63
- $tester = new Tribe__Process__Tester();
64
- $tester->dispatch();
 
 
 
 
65
 
66
  $wait_up_to = 10;
67
  $start = time();
68
  $supports_async_process = false;
 
69
 
70
- while ( ! $supports_async_process && time() <= $start + $wait_up_to ) {
71
- $supports_async_process = (bool) get_transient( $tester->get_canary_transient() );
 
 
 
 
 
 
72
  }
73
 
74
  // Remove it not to spoof future checks.
75
- delete_transient( $tester->get_canary_transient() );
 
 
76
 
77
  $cached['supports_async_process'] = $supports_async_process;
78
 
79
  set_transient( self::$transient, $cached, WEEK_IN_SECONDS );
80
  }
81
 
82
- return (bool) $cached['supports_async_process'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
- }
12
  * @since 4.7.23
13
  */
14
  class Tribe__Feature_Detection {
15
+
16
  /**
17
  * The name of the transient storing the support check results.
18
  *
20
  */
21
  public static $transient = 'tribe_feature_detection';
22
 
23
+ /**
24
+ * The name of the option that will be used to indicate a feature detection is running.
25
+ *
26
+ * @var string
27
+ */
28
+ protected $lock_option_name;
29
+
30
  /**
31
  * Checks whether async, AJAX-based, background processing is supported or not.
32
  *
60
 
61
  $cached = get_transient( self::$transient );
62
 
63
+ $this->lock_option_name = 'tribe_feature_support_check_lock';
64
  if (
65
  $force
66
  || false === $cached
67
  || ( is_array( $cached ) && ! isset( $cached['supports_async_process'] ) )
68
  ) {
69
+ if ( ! $this->has_lock() ) {
70
+ // Let's avoid race conditions by running two or more checks at the same time.
71
+ $this->lock();
72
+ /*
73
+ * Build and dispatch the tester: if it works a transient should be set.
74
+ */
75
+ $tester = new Tribe__Process__Tester();
76
+ $tester->dispatch();
77
+ }
78
 
79
  $wait_up_to = 10;
80
  $start = time();
81
  $supports_async_process = false;
82
+ $transient_name = Tribe__Process__Tester::TRANSIENT_NAME;
83
 
84
+ while ( time() <= $start + $wait_up_to ) {
85
+ // We want to force a refetch from the database on each check.
86
+ wp_cache_delete( $transient_name, 'transient' );
87
+ $supports_async_process = ( (bool) $transient_name );
88
+ if ( $supports_async_process ) {
89
+ break;
90
+ }
91
+ sleep( $wait_up_to / 5 );
92
  }
93
 
94
  // Remove it not to spoof future checks.
95
+ delete_transient( $transient_name );
96
+
97
+ $this->unlock();
98
 
99
  $cached['supports_async_process'] = $supports_async_process;
100
 
101
  set_transient( self::$transient, $cached, WEEK_IN_SECONDS );
102
  }
103
 
104
+ return $cached['supports_async_process'];
105
+ }
106
+
107
+ /**
108
+ * Sets the lock option to `1` to indicate a feature detection is running.
109
+ *
110
+ * @since 4.8.1
111
+ */
112
+ protected function lock() {
113
+ update_option( $this->lock_option_name, '1' );
114
+ }
115
+
116
+ /**
117
+ * Deletes the lock option to indicate the current feature detection process is done.
118
+ *
119
+ * @since 4.8.1
120
+ */
121
+ protected function unlock() {
122
+ delete_option( $this->lock_option_name );
123
+ }
124
+
125
+ /**
126
+ * Checks whether a feature detection lock is currently in place or not.
127
+ *
128
+ * @since 4.8.1
129
+ *
130
+ * @return bool Whether a feature detection lock is currently in place or not.
131
+ */
132
+ protected function has_lock() {
133
+ $lock_option = get_option( $this->lock_option_name );
134
+
135
+ return ! empty( $lock_option );
136
  }
137
+ }
common/src/Tribe/Field.php CHANGED
@@ -245,7 +245,7 @@ if ( ! class_exists( 'Tribe__Field' ) ) {
245
  $return .= ( $this->error ) ? ' tribe-error' : '';
246
  $return .= ( $this->size ) ? ' tribe-size-' . $this->size : '';
247
  $return .= ( $this->class ) ? ' ' . $this->class . '"' : '"';
248
- $return .= ( $this->fieldset_attributes ) ? ' ' . $this->do_fieldset_attributes() . '"' : '"';
249
  $return .= '>';
250
 
251
  return apply_filters( 'tribe_field_start', $return, $this->id, $this->type, $this->error, $this->class, $this );
245
  $return .= ( $this->error ) ? ' tribe-error' : '';
246
  $return .= ( $this->size ) ? ' tribe-size-' . $this->size : '';
247
  $return .= ( $this->class ) ? ' ' . $this->class . '"' : '"';
248
+ $return .= ( $this->fieldset_attributes ) ? ' ' . $this->do_fieldset_attributes() : '';
249
  $return .= '>';
250
 
251
  return apply_filters( 'tribe_field_start', $return, $this->id, $this->type, $this->error, $this->class, $this );
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.8.0.1';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.8.1';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
common/src/Tribe/Process/Handler.php CHANGED
@@ -55,7 +55,7 @@ abstract class Tribe__Process__Handler extends WP_Async_Request {
55
  */
56
  public function __construct( ) {
57
  $class = get_class( $this );
58
- $this->action = $class::action();
59
  parent::__construct();
60
 
61
  $this->cron_hook_identifier = $this->identifier;
55
  */
56
  public function __construct( ) {
57
  $class = get_class( $this );
58
+ $this->action = call_user_func( array( $class, 'action' ) );
59
  parent::__construct();
60
 
61
  $this->cron_hook_identifier = $this->identifier;
common/src/Tribe/Process/Tester.php CHANGED
@@ -12,7 +12,7 @@ class Tribe__Process__Tester extends Tribe__Process__Handler {
12
  *
13
  * @var
14
  */
15
- protected $transient_name = 'tribe_supports_async_process';
16
 
17
  /**
18
  * Handles the process immediately, not in an async manner.
@@ -32,17 +32,6 @@ class Tribe__Process__Tester extends Tribe__Process__Handler {
32
  return null;
33
  }
34
 
35
- /**
36
- * Returns the name of the transient this class will set as part of its test.
37
- *
38
- * @since 4.7.23
39
- *
40
- * @return string The set transient name.
41
- */
42
- public function get_canary_transient() {
43
- return $this->transient_name;
44
- }
45
-
46
  /**
47
  * Call the dispatch method, in its vanilla form, as the base class would.
48
  *
@@ -88,7 +77,7 @@ class Tribe__Process__Tester extends Tribe__Process__Handler {
88
  * @since 4.7.23
89
  */
90
  protected function handle() {
91
- set_transient( $this->transient_name, 1, HOUR_IN_SECONDS );
92
  }
93
 
94
  /**
12
  *
13
  * @var
14
  */
15
+ const TRANSIENT_NAME = 'tribe_supports_async_process';
16
 
17
  /**
18
  * Handles the process immediately, not in an async manner.
32
  return null;
33
  }
34
 
 
 
 
 
 
 
 
 
 
 
 
35
  /**
36
  * Call the dispatch method, in its vanilla form, as the base class would.
37
  *
77
  * @since 4.7.23
78
  */
79
  protected function handle() {
80
+ set_transient( self::TRANSIENT_NAME, 1, HOUR_IN_SECONDS );
81
  }
82
 
83
  /**
common/tribe-common.php CHANGED
@@ -1,7 +1,7 @@
1
- <?php
2
  /*
3
  Description: An event settings framework for managing shared options
4
- Version: 4.8.0.1
5
  Author: Modern Tribe, Inc.
6
  Author URI: http://m.tri.be/1x
7
  Text Domain: tribe-common
1
+ 4.18.<?php
2
  /*
3
  Description: An event settings framework for managing shared options
4
+ Version: 4.8.1
5
  Author: Modern Tribe, Inc.
6
  Author URI: http://m.tri.be/1x
7
  Text Domain: tribe-common
lang/the-events-calendar-cs_CZ.mo CHANGED
Binary file
lang/the-events-calendar-cs_CZ.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-10-03 22:36:46+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -6172,7 +6172,7 @@ msgstr "Importování Akcí"
6172
  #: src/modules/blocks/event-links/template.js:101
6173
  #: src/resources/js/app/blocks.js:48525
6174
  msgid "Share Settings"
6175
- msgstr ""
6176
 
6177
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6178
  msgid "Draft"
@@ -6294,7 +6294,7 @@ msgstr "Název:"
6294
 
6295
  #: src/resources/js/app/blocks.js:47396
6296
  msgid "Show Google Maps Link"
6297
- msgstr ""
6298
 
6299
  #: src/admin-views/create-venue-fields.php:166
6300
  #: src/admin-views/venue-meta-box.php:136
@@ -6749,12 +6749,12 @@ msgstr "Výchozí šablona akcí"
6749
  #: src/modules/blocks/classic-event-details/template.js:117
6750
  #: src/resources/js/app/blocks.js:45080
6751
  msgid "Price: "
6752
- msgstr ""
6753
 
6754
  #: common/src/modules/elements/image-upload/element.js:46
6755
  #: common/src/resources/js/app/elements.js:59497
6756
  msgid "remove"
6757
- msgstr ""
6758
 
6759
  #: common/src/admin-views/event-log.php:65
6760
  msgid "View"
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-12-02 22:12:10+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
6172
  #: src/modules/blocks/event-links/template.js:101
6173
  #: src/resources/js/app/blocks.js:48525
6174
  msgid "Share Settings"
6175
+ msgstr "Uložit nastavení"
6176
 
6177
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6178
  msgid "Draft"
6294
 
6295
  #: src/resources/js/app/blocks.js:47396
6296
  msgid "Show Google Maps Link"
6297
+ msgstr "Zobrazit odkaz na Google Mapy:"
6298
 
6299
  #: src/admin-views/create-venue-fields.php:166
6300
  #: src/admin-views/venue-meta-box.php:136
6749
  #: src/modules/blocks/classic-event-details/template.js:117
6750
  #: src/resources/js/app/blocks.js:45080
6751
  msgid "Price: "
6752
+ msgstr "Cena:"
6753
 
6754
  #: common/src/modules/elements/image-upload/element.js:46
6755
  #: common/src/resources/js/app/elements.js:59497
6756
  msgid "remove"
6757
+ msgstr "Odstranit"
6758
 
6759
  #: common/src/admin-views/event-log.php:65
6760
  msgid "View"
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-el.mo CHANGED
Binary file
lang/the-events-calendar-el.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-10-10 07:21:53+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -6143,7 +6143,7 @@ msgstr "Εισαγωγή εκδηλώσεων"
6143
  #: src/modules/blocks/event-links/template.js:101
6144
  #: src/resources/js/app/blocks.js:48525
6145
  msgid "Share Settings"
6146
- msgstr ""
6147
 
6148
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6149
  msgid "Draft"
@@ -6264,7 +6264,7 @@ msgstr "Τίτλος:"
6264
 
6265
  #: src/resources/js/app/blocks.js:47396
6266
  msgid "Show Google Maps Link"
6267
- msgstr ""
6268
 
6269
  #: src/admin-views/create-venue-fields.php:166
6270
  #: src/admin-views/venue-meta-box.php:136
@@ -6719,7 +6719,7 @@ msgstr "Προεπιλεγμένο Πρότυπο Εκδηλώσεων"
6719
  #: src/modules/blocks/classic-event-details/template.js:117
6720
  #: src/resources/js/app/blocks.js:45080
6721
  msgid "Price: "
6722
- msgstr ""
6723
 
6724
  #: common/src/modules/elements/image-upload/element.js:46
6725
  #: common/src/resources/js/app/elements.js:59497
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-12-03 10:34:43+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
6143
  #: src/modules/blocks/event-links/template.js:101
6144
  #: src/resources/js/app/blocks.js:48525
6145
  msgid "Share Settings"
6146
+ msgstr "Αποθήκευση ρυθμίσεων"
6147
 
6148
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6149
  msgid "Draft"
6264
 
6265
  #: src/resources/js/app/blocks.js:47396
6266
  msgid "Show Google Maps Link"
6267
+ msgstr "Εμφάνιση Συνδέσμου Χαρτών Google"
6268
 
6269
  #: src/admin-views/create-venue-fields.php:166
6270
  #: src/admin-views/venue-meta-box.php:136
6719
  #: src/modules/blocks/classic-event-details/template.js:117
6720
  #: src/resources/js/app/blocks.js:45080
6721
  msgid "Price: "
6722
+ msgstr "Τιμή:"
6723
 
6724
  #: common/src/modules/elements/image-upload/element.js:46
6725
  #: common/src/resources/js/app/elements.js:59497
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-11-28 06:56:24+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -13,51 +13,51 @@ msgstr ""
13
 
14
  #: src/resources/js/app/blocks.js:48214
15
  msgid "Edit Organizer"
16
- msgstr ""
17
 
18
  #: src/resources/js/app/blocks.js:48211
19
  msgid "Organizer Settings"
20
- msgstr ""
21
 
22
  #: src/resources/js/app/blocks.js:48137
23
  msgid "Add or find an organizer"
24
- msgstr ""
25
 
26
  #: src/resources/js/app/blocks.js:47979
27
  msgid "Add email"
28
- msgstr ""
29
 
30
  #: src/resources/js/app/blocks.js:47972
31
  msgid "Add website"
32
- msgstr ""
33
 
34
  #: src/resources/js/app/blocks.js:47965
35
  msgid "Add Phone"
36
- msgstr ""
37
 
38
  #: src/resources/js/app/blocks.js:47394
39
  msgid "Venue Settings"
40
- msgstr ""
41
 
42
  #: src/resources/js/app/blocks.js:47272
43
  msgid "Add or find a venue"
44
- msgstr ""
45
 
46
  #: src/resources/js/app/blocks.js:46934
47
  msgid "(Untitled Venue)"
48
- msgstr ""
49
 
50
  #: src/resources/js/app/blocks.js:46387
51
  msgid "Multi-Day"
52
- msgstr ""
53
 
54
  #: src/resources/js/app/blocks.js:45448
55
  msgid "Show Time Zone"
56
- msgstr ""
57
 
58
  #: src/resources/js/app/blocks.js:45441
59
  msgid "Time Zone"
60
- msgstr ""
61
 
62
  #: src/resources/js/app/blocks.js:45434
63
  msgid "Time Range Separator"
@@ -69,27 +69,27 @@ msgstr ""
69
 
70
  #: src/resources/js/app/blocks.js:13219 src/resources/js/app/elements.js:9845
71
  msgid "Add or Find"
72
- msgstr ""
73
 
74
  #: src/resources/js/app/blocks.js:12598 src/resources/js/app/elements.js:9224
75
  msgid "A Google Map API KEY is required to view the map"
76
- msgstr ""
77
 
78
  #: src/resources/js/app/blocks.js:12479 src/resources/js/app/elements.js:9105
79
  msgid "The map does not have valid coordinates nor a valid address"
80
- msgstr ""
81
 
82
  #: src/resources/js/app/blocks.js:12389 src/resources/js/app/elements.js:9015
83
  msgid "Make sure Google Maps Library is included on this page."
84
- msgstr ""
85
 
86
  #: src/resources/js/app/blocks.js:11712 src/resources/js/app/elements.js:8338
87
  msgid "Country"
88
- msgstr ""
89
 
90
  #: src/resources/js/app/blocks.js:11444 src/resources/js/app/elements.js:8070
91
  msgid "Name:"
92
- msgstr ""
93
 
94
  #: src/modules/blocks/event-datetime/subblocks/content/index.js:23
95
  #: src/resources/js/app/blocks.js:46184
@@ -107,7 +107,7 @@ msgstr ""
107
  #: src/resources/js/app/blocks.js:46185 src/resources/js/app/blocks.js:46660
108
  #: src/resources/js/app/blocks.js:46745
109
  msgid "Define the date, time, and duration for your event."
110
- msgstr ""
111
 
112
  #: src/modules/blocks/event-datetime/index.js:27
113
  #: src/resources/js/app/blocks.js:46744
@@ -117,27 +117,27 @@ msgstr ""
117
  #: src/modules/blocks/event-website/index.js:22
118
  #: src/resources/js/app/blocks.js:49446
119
  msgid "Is there another website for this event? Link to it with a button!"
120
- msgstr ""
121
 
122
  #: src/modules/blocks/event-website/template.js:26
123
  #: src/resources/js/app/blocks.js:49305
124
  msgid "Add Event Website"
125
- msgstr ""
126
 
127
  #: src/modules/blocks/event-links/index.js:22
128
  #: src/resources/js/app/blocks.js:48614
129
  msgid "Encourage visitors to add your event to their calendars with handy sharing buttons."
130
- msgstr ""
131
 
132
  #: src/modules/blocks/event-links/index.js:21
133
  #: src/resources/js/app/blocks.js:48613
134
  msgid "Event Sharing"
135
- msgstr ""
136
 
137
  #: src/modules/blocks/event-links/template.js:108
138
  #: src/resources/js/app/blocks.js:48532
139
  msgid "iCal"
140
- msgstr ""
141
 
142
  #: src/resources/js/app/blocks.js:47401
143
  msgid "Show Google Maps Embed"
@@ -146,27 +146,27 @@ msgstr ""
146
  #: src/modules/blocks/event-category/index.js:22
147
  #: src/resources/js/app/blocks.js:49143
148
  msgid "Show assigned event categories as links to their respective archives."
149
- msgstr ""
150
 
151
  #: src/modules/blocks/event-category/index.js:21
152
  #: src/resources/js/app/blocks.js:49142
153
  msgid "Event Categories"
154
- msgstr ""
155
 
156
  #: src/modules/blocks/event-category/block.js:46
157
  #: src/resources/js/app/blocks.js:49112
158
  msgid "Add Event Categories in document settings"
159
- msgstr ""
160
 
161
  #: src/modules/blocks/featured-image/index.js:22
162
  #: src/resources/js/app/blocks.js:49610
163
  msgid "Display the featured image in the post content."
164
- msgstr ""
165
 
166
  #: src/modules/blocks/featured-image/block.js:80
167
  #: src/resources/js/app/blocks.js:49562
168
  msgid "Loading the Image"
169
- msgstr ""
170
 
171
  #: src/modules/blocks/featured-image/block.js:65
172
  #: src/resources/js/app/blocks.js:49551
@@ -177,7 +177,7 @@ msgstr ""
177
  #: src/modules/blocks/featured-image/index.js:21
178
  #: src/resources/js/app/blocks.js:49542 src/resources/js/app/blocks.js:49609
179
  msgid "Featured Image"
180
- msgstr ""
181
 
182
  #: src/modules/blocks/event-tags/index.js:22
183
  #: src/resources/js/app/blocks.js:49255
@@ -193,74 +193,74 @@ msgstr ""
193
  #: src/modules/blocks/event-tags/index.js:21
194
  #: src/resources/js/app/blocks.js:49223 src/resources/js/app/blocks.js:49254
195
  msgid "Tags"
196
- msgstr ""
197
 
198
  #: src/modules/blocks/event-venue/index.js:18
199
  #: src/resources/js/app/blocks.js:47617
200
  msgid "Where is this event happening? Select or create a location."
201
- msgstr ""
202
 
203
  #: src/modules/blocks/event-venue/index.js:17
204
  #: src/resources/js/app/blocks.js:47616
205
  msgid "Event Venue"
206
- msgstr ""
207
 
208
  #: src/modules/blocks/event-price/index.js:18
209
  #: src/resources/js/app/blocks.js:49019
210
  msgid "Let visitors know the cost of this event or if it’s free to attend."
211
- msgstr ""
212
 
213
  #: src/modules/blocks/event-price/index.js:17
214
  #: src/resources/js/app/blocks.js:49018
215
  msgid "Event Price"
216
- msgstr ""
217
 
218
  #: src/modules/blocks/event-price/template.js:156
219
  #: src/resources/js/app/blocks.js:48830
220
  msgid "Currency symbol follows price"
221
- msgstr ""
222
 
223
  #: src/modules/blocks/event-price/template.js:123
224
  #: src/resources/js/app/blocks.js:48791
225
  msgid "enter 0 as price for free events"
226
- msgstr ""
227
 
228
  #: src/modules/blocks/event-price/template.js:117
229
  #: src/resources/js/app/blocks.js:48783
230
  msgid "Description"
231
- msgstr ""
232
 
233
  #: src/modules/blocks/event-price/template.js:109
234
  #: src/resources/js/app/blocks.js:48775
235
  msgid "Fixed Price or Range"
236
- msgstr ""
237
 
238
  #: src/modules/blocks/event-price/template.js:43
239
  #: src/resources/js/app/blocks.js:48696
240
  msgid "Add Price"
241
- msgstr ""
242
 
243
  #: src/modules/blocks/classic-event-details/event-details-organizers/event-details-organizer/template.js:40
244
  #: src/resources/js/app/blocks.js:44712
245
  msgid "Remove Organizer"
246
- msgstr ""
247
 
248
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:62
249
  #: src/resources/js/app/blocks.js:44842
250
  msgid "Add existing Organizer"
251
- msgstr ""
252
 
253
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:61
254
  #: src/resources/js/app/blocks.js:44841
255
  msgid "Search for an organizer"
256
- msgstr ""
257
 
258
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:25
259
  #: src/resources/js/app/blocks.js:11429 src/resources/js/app/blocks.js:11538
260
  #: src/resources/js/app/blocks.js:44791 src/resources/js/app/elements.js:8055
261
  #: src/resources/js/app/elements.js:8164
262
  msgid "Create Organizer"
263
- msgstr ""
264
 
265
  #: src/modules/blocks/classic-event-details/index.js:22
266
  #: src/resources/js/app/blocks.js:45285
@@ -276,64 +276,64 @@ msgstr ""
276
  #: src/modules/blocks/event-price/template.js:152
277
  #: src/resources/js/app/blocks.js:45170 src/resources/js/app/blocks.js:48826
278
  msgid "E.g.: $"
279
- msgstr ""
280
 
281
  #: src/modules/blocks/classic-event-details/template.js:191
282
  #: src/modules/blocks/event-price/template.js:150
283
  #: src/resources/js/app/blocks.js:45168 src/resources/js/app/blocks.js:48824
284
  msgid " Currency Symbol"
285
- msgstr ""
286
 
287
  #: src/modules/blocks/classic-event-details/template.js:186
288
  #: src/resources/js/app/blocks.js:45163
289
  msgid "Show symbol before"
290
- msgstr ""
291
 
292
  #: src/modules/blocks/classic-event-details/template.js:184
293
  #: src/modules/blocks/event-price/template.js:147
294
  #: src/resources/js/app/blocks.js:45161 src/resources/js/app/blocks.js:48821
295
  msgid "Price Settings"
296
- msgstr ""
297
 
298
  #: src/modules/blocks/classic-event-details/template.js:179
299
  #: src/resources/js/app/blocks.js:45154
300
  msgid "Is All Day Event"
301
- msgstr ""
302
 
303
  #: src/modules/blocks/classic-event-details/template.js:177
304
  #: src/resources/js/app/blocks.js:45152 src/resources/js/app/blocks.js:45425
305
  msgid "Date Time Settings"
306
- msgstr ""
307
 
308
  #: src/modules/blocks/classic-event-details/template.js:156
309
  #: src/resources/js/app/blocks.js:45129
310
  msgid "Event Category:"
311
- msgstr ""
312
 
313
  #: src/modules/blocks/classic-event-details/template.js:122
314
  #: src/resources/js/app/blocks.js:45091 src/resources/js/app/blocks.js:45895
315
  msgid "Enter price"
316
- msgstr ""
317
 
318
  #: src/modules/blocks/classic-event-details/template.js:101
319
  #: src/resources/js/app/blocks.js:45060
320
  msgid "Enter url"
321
- msgstr ""
322
 
323
  #: src/modules/blocks/classic-event-details/template.js:97
324
  #: src/resources/js/app/blocks.js:45054
325
  msgid "Website: "
326
- msgstr ""
327
 
328
  #: src/modules/blocks/classic-event-details/template.js:79
329
  #: src/resources/js/app/blocks.js:45022
330
  msgid "End: "
331
- msgstr ""
332
 
333
  #: src/modules/blocks/classic-event-details/template.js:57
334
  #: src/resources/js/app/blocks.js:44982
335
  msgid "Start: "
336
- msgstr ""
337
 
338
  #: src/modules/blocks/event-organizer/index.js:17
339
  #: src/resources/js/app/blocks.js:48388
@@ -343,34 +343,34 @@ msgstr ""
343
  #: src/modules/blocks/event-organizer/index.js:16
344
  #: src/resources/js/app/blocks.js:48387
345
  msgid "Event Organizer"
346
- msgstr ""
347
 
348
  #: src/modules/data/blocks/price/reducer.js:23
349
  #: src/resources/js/app/data.js:9364 src/resources/js/app/blocks.js:10508
350
  msgid "$"
351
- msgstr ""
352
 
353
  #: src/modules/data/blocks/datetime/reducer.js:23
354
  #: src/resources/js/app/data.js:6796 src/resources/js/app/blocks.js:6842
355
  msgid "-"
356
- msgstr ""
357
 
358
  #: src/modules/data/blocks/datetime/reducer.js:22
359
  #: src/resources/js/app/data.js:6795 src/resources/js/app/blocks.js:6841
360
  msgid "@"
361
- msgstr ""
362
 
363
  #: src/modules/elements/terms-list/element.js:128
364
  #: src/resources/js/app/blocks.js:11214 src/resources/js/app/elements.js:7840
365
  msgid ", "
366
- msgstr ""
367
 
368
  #: src/modules/elements/terms-list/element.js:45
369
  #: src/modules/blocks/classic-event-details/event-details-organizers/event-details-organizer/template.js:26
370
  #: src/resources/js/app/blocks.js:11083 src/resources/js/app/blocks.js:44700
371
  #: src/resources/js/app/elements.js:7709
372
  msgid "(Untitled)"
373
- msgstr ""
374
 
375
  #: src/modules/elements/upsell/element.js:33
376
  #: src/resources/js/app/blocks.js:13490 src/resources/js/app/elements.js:10116
@@ -387,19 +387,19 @@ msgstr ""
387
  #: common/src/resources/js/app/elements.js:9791
388
  #: common/src/resources/js/app/utils.js:7339
389
  msgid "at"
390
- msgstr ""
391
 
392
  #: src/views/blocks/event-datetime.php:80
393
  msgid "All day"
394
- msgstr ""
395
 
396
  #: src/views/modules/bar.php:51
397
  msgid "Hide %s Search"
398
- msgstr ""
399
 
400
  #: src/views/modules/bar.php:50 src/views/modules/bar.php:54
401
  msgid "Show %s Search"
402
- msgstr ""
403
 
404
  #: src/admin-views/aggregator/settings.php:159
405
  #: src/admin-views/aggregator/settings.php:268
@@ -409,33 +409,33 @@ msgstr ""
409
  #: src/admin-views/aggregator/settings.php:456
410
  #: src/admin-views/aggregator/settings.php:524
411
  msgid "Show Map"
412
- msgstr ""
413
 
414
  #: src/admin-views/tribe-options-general.php:243
415
  msgid "Enable Maps"
416
- msgstr ""
417
 
418
  #: src/admin-views/create-venue-fields.php:257
419
  msgid "Show Map Link?"
420
- msgstr ""
421
 
422
  #: src/admin-views/create-venue-fields.php:248
423
  #: src/admin-views/create-venue-fields.php:285
424
  #: src/admin-views/venue-meta-box.php:202
425
  #: src/admin-views/venue-meta-box.php:238
426
  msgid "Show Map Link:"
427
- msgstr ""
428
 
429
  #: src/admin-views/create-venue-fields.php:239
430
  msgid "Show Map?"
431
- msgstr ""
432
 
433
  #: src/admin-views/create-venue-fields.php:230
434
  #: src/admin-views/create-venue-fields.php:268
435
  #: src/admin-views/venue-meta-box.php:185
436
  #: src/admin-views/venue-meta-box.php:221
437
  msgid "Show Map:"
438
- msgstr ""
439
 
440
  #: src/Tribe/Editor/Compatibility.php:118
441
  msgid "Hidden Blocks Editor Config"
@@ -447,7 +447,7 @@ msgstr ""
447
 
448
  #: src/Tribe/Editor/Compatibility.php:110
449
  msgid "Activate Block Editor for Events"
450
- msgstr ""
451
 
452
  #: src/Tribe/Editor/Blocks/Event_Website.php:26
453
  msgid "Add Button Text"
@@ -455,11 +455,11 @@ msgstr ""
455
 
456
  #: src/Tribe/Editor/Meta.php:61 src/Tribe/Editor/Meta.php:70
457
  msgid "Event Organizers"
458
- msgstr ""
459
 
460
  #: src/Tribe/Aggregator/Record/CSV.php:104
461
  msgid "Unknown Column "
462
- msgstr ""
463
 
464
  #: src/Tribe/Aggregator/Record/Queue_Processor.php:288
465
  msgid "There was an error building the record queue: "
@@ -467,11 +467,11 @@ msgstr ""
467
 
468
  #: src/Tribe/Admin/Notice/Marketing.php:114
469
  msgid "Try Events Gutenberg"
470
- msgstr ""
471
 
472
  #: src/Tribe/Admin/Notice/Marketing.php:106
473
  msgid "Download the eBook"
474
- msgstr ""
475
 
476
  #: src/Tribe/Admin/Notice/Marketing.php:100
477
  msgid "Get up to speed with our comprehensive Guide to Gutenberg ebook, then see how events and tickets will behave in the block editor by installing our free Events Gutenberg extension."
@@ -479,11 +479,11 @@ msgstr ""
479
 
480
  #: src/Tribe/Admin/Notice/Marketing.php:95
481
  msgid "WordPress 5.0 is coming soon, and with it, the arrival of the new block editor interface."
482
- msgstr ""
483
 
484
  #: src/Tribe/Admin/Notice/Marketing.php:91
485
  msgid "<strong>The Events Calendar & Gutenberg</strong>"
486
- msgstr ""
487
 
488
  #: src/Tribe/Main.php:1464
489
  msgid "When running version %1$s of The Events Calendar alongside %2$s, %2$s must be version %3$s or greater. Please %4$smanually update now.%5$s"
@@ -491,37 +491,37 @@ msgstr ""
491
 
492
  #: src/Tribe/Google/Maps_API_Key.php:107
493
  msgid "(click here for details)"
494
- msgstr ""
495
 
496
  #: src/Tribe/Editor.php:534
497
  msgid "Event Blocks"
498
- msgstr ""
499
 
500
  #: src/Tribe/Editor.php:258 src/Tribe/Editor.php:301
501
  msgid "Add Description..."
502
- msgstr ""
503
 
504
  #: common/src/Tribe/Editor/Configuration.php:97
505
  msgid "F j, Y g:i a"
506
- msgstr ""
507
 
508
  #: common/src/Tribe/Editor/Configuration.php:96
509
  #: src/resources/js/app/blocks.js:45852 src/resources/js/app/blocks.js:46326
510
  msgid "F j"
511
- msgstr ""
512
 
513
  #: common/src/Tribe/Editor/Configuration.php:95
514
  msgid "F j, Y"
515
- msgstr ""
516
 
517
  #: common/src/Tribe/Editor/Configuration.php:94
518
  msgid "g:i a"
519
- msgstr ""
520
 
521
  #. translators: %s: duration
522
  #: common/src/Tribe/Editor/Configuration.php:90
523
  msgid "%s ago"
524
- msgstr ""
525
 
526
  #. translators: %s: duration
527
  #: common/src/Tribe/Editor/Configuration.php:88
@@ -530,7 +530,7 @@ msgstr ""
530
 
531
  #: common/src/Tribe/Editor/Blocks/Abstract.php:127
532
  msgid "Problem loading the block, please remove this block to restart."
533
- msgstr ""
534
 
535
  #: common/src/Tribe/Editor/Meta.php:123
536
  msgid "Text Array"
@@ -542,11 +542,11 @@ msgstr ""
542
 
543
  #: src/admin-views/tribe-options-general.php:69
544
  msgid "Enable WordPress Custom Fields on Events."
545
- msgstr ""
546
 
547
  #: src/admin-views/tribe-options-general.php:68
548
  msgid "Show Custom Fields metabox"
549
- msgstr ""
550
 
551
  #: src/admin-views/tribe-options-display.php:139
552
  msgid "Please note that you are using The Events Calendar's default Google Maps API key, which will limit the Map View's functionality. Visit %sthe API Settings page%s to learn more and add your own Google Maps API key."
@@ -554,7 +554,7 @@ msgstr ""
554
 
555
  #: src/admin-views/aggregator/settings.php:230
556
  msgid "Stop current processes"
557
- msgstr ""
558
 
559
  #: src/admin-views/aggregator/settings.php:219
560
  msgid "The Asynchronous import process is faster and does not rely on WordPress Cron but might not work correctly in all WordPress installations, try switching to the Cron-based process for maximum compatibility."
@@ -574,11 +574,11 @@ msgstr ""
574
 
575
  #: src/admin-views/aggregator/origins/eventbrite.php:127
576
  msgid "Import from Eventbrite URL"
577
- msgstr ""
578
 
579
  #: src/Tribe/Google/Maps_API_Key.php:109
580
  msgid "to create your own free Google Maps API key."
581
- msgstr ""
582
 
583
  #: src/Tribe/Google/Maps_API_Key.php:106
584
  msgid "If you do not add your own API key, the built-in API key will always populate this field and some map-related functionality will be limited "
@@ -586,7 +586,7 @@ msgstr ""
586
 
587
  #: src/Tribe/Google/Maps_API_Key.php:105
588
  msgid "You are using The Events Calendar's built-in Google Maps API key."
589
- msgstr ""
590
 
591
  #: src/Tribe/Google/Maps_API_Key.php:77
592
  msgid "Read More"
@@ -1281,7 +1281,7 @@ msgstr "L'URL actuelle de votre page d'événements est %1$s.<br><br>Vous ne pou
1281
 
1282
  #: src/admin-views/tribe-options-display.php:61
1283
  msgid "There are going to be situations where no out-of-the-box template is 100&#37; perfect. Check out our <a href=\"%s\">our themer's guide</a> for instructions on custom modifications."
1284
- msgstr "Il va y avoir des situations où aucun modèle prédéfinis n’est parfait à 100%. Consultez notre <a href=\"\"%s\"\">Guide d’instructions</a> sur les modifications personnalisées."
1285
 
1286
  #: src/admin-views/tribe-options-display.php:58
1287
  msgid "The settings below control the display of your calendar. If things don't look right, try switching between the three style sheet options or pick a page template from your theme."
@@ -2236,7 +2236,7 @@ msgstr "Autres URL"
2236
 
2237
  #: src/admin-views/aggregator/settings.php:481
2238
  msgid "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
2239
- msgstr ""
2240
 
2241
  #: src/admin-views/aggregator/settings.php:480
2242
  msgid "Import Event Settings"
@@ -3829,7 +3829,7 @@ msgstr "Réglages de l’import iCalendar"
3829
  #: src/admin-views/aggregator/settings.php:457
3830
  #: src/admin-views/aggregator/settings.php:525
3831
  msgid "Show map by default on imported event and venues"
3832
- msgstr ""
3833
 
3834
  #: src/admin-views/aggregator/settings.php:148
3835
  msgid "The default event category for events"
@@ -6145,7 +6145,7 @@ msgstr "Import d’évènements"
6145
  #: src/modules/blocks/event-links/template.js:101
6146
  #: src/resources/js/app/blocks.js:48525
6147
  msgid "Share Settings"
6148
- msgstr ""
6149
 
6150
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6151
  msgid "Draft"
@@ -6266,7 +6266,7 @@ msgstr "Titre :"
6266
 
6267
  #: src/resources/js/app/blocks.js:47396
6268
  msgid "Show Google Maps Link"
6269
- msgstr ""
6270
 
6271
  #: src/admin-views/create-venue-fields.php:166
6272
  #: src/admin-views/venue-meta-box.php:136
@@ -6721,12 +6721,12 @@ msgstr "Thème par défaut des évènements"
6721
  #: src/modules/blocks/classic-event-details/template.js:117
6722
  #: src/resources/js/app/blocks.js:45080
6723
  msgid "Price: "
6724
- msgstr ""
6725
 
6726
  #: common/src/modules/elements/image-upload/element.js:46
6727
  #: common/src/resources/js/app/elements.js:59497
6728
  msgid "remove"
6729
- msgstr ""
6730
 
6731
  #: common/src/admin-views/event-log.php:65
6732
  msgid "View"
@@ -8634,7 +8634,7 @@ msgstr "Ajouter un %s"
8634
 
8635
  #: src/Tribe/Main.php:1967 src/Tribe/Venue.php:110 src/Tribe/Organizer.php:91
8636
  msgid "Add New"
8637
- msgstr "Ajouter un"
8638
 
8639
  #: src/Tribe/Main.php:1934 src/Tribe/Main.php:2373
8640
  msgid "tag"
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-12-03 14:35:18+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
13
 
14
  #: src/resources/js/app/blocks.js:48214
15
  msgid "Edit Organizer"
16
+ msgstr "Modifier l’organisateur"
17
 
18
  #: src/resources/js/app/blocks.js:48211
19
  msgid "Organizer Settings"
20
+ msgstr "Réglages de l’organisateur"
21
 
22
  #: src/resources/js/app/blocks.js:48137
23
  msgid "Add or find an organizer"
24
+ msgstr "Ajouter ou chercher un organisateur"
25
 
26
  #: src/resources/js/app/blocks.js:47979
27
  msgid "Add email"
28
+ msgstr "Ajouter l’e-mail"
29
 
30
  #: src/resources/js/app/blocks.js:47972
31
  msgid "Add website"
32
+ msgstr "Ajouter un site web"
33
 
34
  #: src/resources/js/app/blocks.js:47965
35
  msgid "Add Phone"
36
+ msgstr "Ajouter le téléphone"
37
 
38
  #: src/resources/js/app/blocks.js:47394
39
  msgid "Venue Settings"
40
+ msgstr "Réglages du lieu"
41
 
42
  #: src/resources/js/app/blocks.js:47272
43
  msgid "Add or find a venue"
44
+ msgstr "Ajouter une chercher un lieu"
45
 
46
  #: src/resources/js/app/blocks.js:46934
47
  msgid "(Untitled Venue)"
48
+ msgstr "(Lieu sans titre)"
49
 
50
  #: src/resources/js/app/blocks.js:46387
51
  msgid "Multi-Day"
52
+ msgstr "Plusieurs jours"
53
 
54
  #: src/resources/js/app/blocks.js:45448
55
  msgid "Show Time Zone"
56
+ msgstr "Afficher le fuseau horaire"
57
 
58
  #: src/resources/js/app/blocks.js:45441
59
  msgid "Time Zone"
60
+ msgstr "Fuseau horaire"
61
 
62
  #: src/resources/js/app/blocks.js:45434
63
  msgid "Time Range Separator"
69
 
70
  #: src/resources/js/app/blocks.js:13219 src/resources/js/app/elements.js:9845
71
  msgid "Add or Find"
72
+ msgstr "Ajouter ou chercher"
73
 
74
  #: src/resources/js/app/blocks.js:12598 src/resources/js/app/elements.js:9224
75
  msgid "A Google Map API KEY is required to view the map"
76
+ msgstr "Une clé API Google Maps est nécessaire pour afficher la carte."
77
 
78
  #: src/resources/js/app/blocks.js:12479 src/resources/js/app/elements.js:9105
79
  msgid "The map does not have valid coordinates nor a valid address"
80
+ msgstr "Les coordonnées ou l'adresse de cette carte ne sont pas valides"
81
 
82
  #: src/resources/js/app/blocks.js:12389 src/resources/js/app/elements.js:9015
83
  msgid "Make sure Google Maps Library is included on this page."
84
+ msgstr "Assurez-vous que la Librairie Google Maps est bien incluse sur cette page."
85
 
86
  #: src/resources/js/app/blocks.js:11712 src/resources/js/app/elements.js:8338
87
  msgid "Country"
88
+ msgstr "Pays"
89
 
90
  #: src/resources/js/app/blocks.js:11444 src/resources/js/app/elements.js:8070
91
  msgid "Name:"
92
+ msgstr "Nom :"
93
 
94
  #: src/modules/blocks/event-datetime/subblocks/content/index.js:23
95
  #: src/resources/js/app/blocks.js:46184
107
  #: src/resources/js/app/blocks.js:46185 src/resources/js/app/blocks.js:46660
108
  #: src/resources/js/app/blocks.js:46745
109
  msgid "Define the date, time, and duration for your event."
110
+ msgstr "Définissez une date, une heure et une durée pour votre évènement."
111
 
112
  #: src/modules/blocks/event-datetime/index.js:27
113
  #: src/resources/js/app/blocks.js:46744
117
  #: src/modules/blocks/event-website/index.js:22
118
  #: src/resources/js/app/blocks.js:49446
119
  msgid "Is there another website for this event? Link to it with a button!"
120
+ msgstr "Y a-t-il un autre site internet pour cet évènement ? Affichez un bouton avec un lien vers ce site !"
121
 
122
  #: src/modules/blocks/event-website/template.js:26
123
  #: src/resources/js/app/blocks.js:49305
124
  msgid "Add Event Website"
125
+ msgstr "Ajouter un site web de l’évènement"
126
 
127
  #: src/modules/blocks/event-links/index.js:22
128
  #: src/resources/js/app/blocks.js:48614
129
  msgid "Encourage visitors to add your event to their calendars with handy sharing buttons."
130
+ msgstr "Encouragez vos visiteurs à ajouter votre évènement à leur agenda avec des boutons de partage très pratiques."
131
 
132
  #: src/modules/blocks/event-links/index.js:21
133
  #: src/resources/js/app/blocks.js:48613
134
  msgid "Event Sharing"
135
+ msgstr "Partage d’évènement"
136
 
137
  #: src/modules/blocks/event-links/template.js:108
138
  #: src/resources/js/app/blocks.js:48532
139
  msgid "iCal"
140
+ msgstr "iCal"
141
 
142
  #: src/resources/js/app/blocks.js:47401
143
  msgid "Show Google Maps Embed"
146
  #: src/modules/blocks/event-category/index.js:22
147
  #: src/resources/js/app/blocks.js:49143
148
  msgid "Show assigned event categories as links to their respective archives."
149
+ msgstr "Afficher les Catégories d'évènements en tant que liens vers leurs archives respectives."
150
 
151
  #: src/modules/blocks/event-category/index.js:21
152
  #: src/resources/js/app/blocks.js:49142
153
  msgid "Event Categories"
154
+ msgstr "Catégorie d’évènement"
155
 
156
  #: src/modules/blocks/event-category/block.js:46
157
  #: src/resources/js/app/blocks.js:49112
158
  msgid "Add Event Categories in document settings"
159
+ msgstr "Ajouter les Catégories d'évènements dans les réglages du document."
160
 
161
  #: src/modules/blocks/featured-image/index.js:22
162
  #: src/resources/js/app/blocks.js:49610
163
  msgid "Display the featured image in the post content."
164
+ msgstr "Afficher l'image à la Une dans le contenu de l'article."
165
 
166
  #: src/modules/blocks/featured-image/block.js:80
167
  #: src/resources/js/app/blocks.js:49562
168
  msgid "Loading the Image"
169
+ msgstr "Chargement de l’image"
170
 
171
  #: src/modules/blocks/featured-image/block.js:65
172
  #: src/resources/js/app/blocks.js:49551
177
  #: src/modules/blocks/featured-image/index.js:21
178
  #: src/resources/js/app/blocks.js:49542 src/resources/js/app/blocks.js:49609
179
  msgid "Featured Image"
180
+ msgstr "Image à la une"
181
 
182
  #: src/modules/blocks/event-tags/index.js:22
183
  #: src/resources/js/app/blocks.js:49255
193
  #: src/modules/blocks/event-tags/index.js:21
194
  #: src/resources/js/app/blocks.js:49223 src/resources/js/app/blocks.js:49254
195
  msgid "Tags"
196
+ msgstr "Étiquettes"
197
 
198
  #: src/modules/blocks/event-venue/index.js:18
199
  #: src/resources/js/app/blocks.js:47617
200
  msgid "Where is this event happening? Select or create a location."
201
+ msgstr "Où cet évènement a-t-il lieu ? Sélectionnez ou créez un lieu."
202
 
203
  #: src/modules/blocks/event-venue/index.js:17
204
  #: src/resources/js/app/blocks.js:47616
205
  msgid "Event Venue"
206
+ msgstr "Lieu de l'évènement"
207
 
208
  #: src/modules/blocks/event-price/index.js:18
209
  #: src/resources/js/app/blocks.js:49019
210
  msgid "Let visitors know the cost of this event or if it’s free to attend."
211
+ msgstr "Indiquez le prix de cet évènement, ou si il est gratuit."
212
 
213
  #: src/modules/blocks/event-price/index.js:17
214
  #: src/resources/js/app/blocks.js:49018
215
  msgid "Event Price"
216
+ msgstr "Prix de l’évènement"
217
 
218
  #: src/modules/blocks/event-price/template.js:156
219
  #: src/resources/js/app/blocks.js:48830
220
  msgid "Currency symbol follows price"
221
+ msgstr "Le symbole monétaire suit le prix"
222
 
223
  #: src/modules/blocks/event-price/template.js:123
224
  #: src/resources/js/app/blocks.js:48791
225
  msgid "enter 0 as price for free events"
226
+ msgstr "Indiquez 0 en tant que prix pour les évènements gratuits"
227
 
228
  #: src/modules/blocks/event-price/template.js:117
229
  #: src/resources/js/app/blocks.js:48783
230
  msgid "Description"
231
+ msgstr "Description"
232
 
233
  #: src/modules/blocks/event-price/template.js:109
234
  #: src/resources/js/app/blocks.js:48775
235
  msgid "Fixed Price or Range"
236
+ msgstr "Prix fixe ou fourchette de prix"
237
 
238
  #: src/modules/blocks/event-price/template.js:43
239
  #: src/resources/js/app/blocks.js:48696
240
  msgid "Add Price"
241
+ msgstr "Ajouter un prix"
242
 
243
  #: src/modules/blocks/classic-event-details/event-details-organizers/event-details-organizer/template.js:40
244
  #: src/resources/js/app/blocks.js:44712
245
  msgid "Remove Organizer"
246
+ msgstr "Retirer l’organisateur"
247
 
248
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:62
249
  #: src/resources/js/app/blocks.js:44842
250
  msgid "Add existing Organizer"
251
+ msgstr "Ajouter un organisateur existant"
252
 
253
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:61
254
  #: src/resources/js/app/blocks.js:44841
255
  msgid "Search for an organizer"
256
+ msgstr "Rechercher un organisateur"
257
 
258
  #: src/modules/blocks/classic-event-details/event-details-organizers/template.js:25
259
  #: src/resources/js/app/blocks.js:11429 src/resources/js/app/blocks.js:11538
260
  #: src/resources/js/app/blocks.js:44791 src/resources/js/app/elements.js:8055
261
  #: src/resources/js/app/elements.js:8164
262
  msgid "Create Organizer"
263
+ msgstr "Créer un organisateur"
264
 
265
  #: src/modules/blocks/classic-event-details/index.js:22
266
  #: src/resources/js/app/blocks.js:45285
276
  #: src/modules/blocks/event-price/template.js:152
277
  #: src/resources/js/app/blocks.js:45170 src/resources/js/app/blocks.js:48826
278
  msgid "E.g.: $"
279
+ msgstr "Exemple : $"
280
 
281
  #: src/modules/blocks/classic-event-details/template.js:191
282
  #: src/modules/blocks/event-price/template.js:150
283
  #: src/resources/js/app/blocks.js:45168 src/resources/js/app/blocks.js:48824
284
  msgid " Currency Symbol"
285
+ msgstr "Symbole monétaire"
286
 
287
  #: src/modules/blocks/classic-event-details/template.js:186
288
  #: src/resources/js/app/blocks.js:45163
289
  msgid "Show symbol before"
290
+ msgstr "Afficher le symbole avant"
291
 
292
  #: src/modules/blocks/classic-event-details/template.js:184
293
  #: src/modules/blocks/event-price/template.js:147
294
  #: src/resources/js/app/blocks.js:45161 src/resources/js/app/blocks.js:48821
295
  msgid "Price Settings"
296
+ msgstr "Réglages du prix"
297
 
298
  #: src/modules/blocks/classic-event-details/template.js:179
299
  #: src/resources/js/app/blocks.js:45154
300
  msgid "Is All Day Event"
301
+ msgstr "Est-ce un évènement qui dure la journée ?"
302
 
303
  #: src/modules/blocks/classic-event-details/template.js:177
304
  #: src/resources/js/app/blocks.js:45152 src/resources/js/app/blocks.js:45425
305
  msgid "Date Time Settings"
306
+ msgstr "Réglages de la date"
307
 
308
  #: src/modules/blocks/classic-event-details/template.js:156
309
  #: src/resources/js/app/blocks.js:45129
310
  msgid "Event Category:"
311
+ msgstr "Catégorie de l’évènement :"
312
 
313
  #: src/modules/blocks/classic-event-details/template.js:122
314
  #: src/resources/js/app/blocks.js:45091 src/resources/js/app/blocks.js:45895
315
  msgid "Enter price"
316
+ msgstr "Saisir le prix"
317
 
318
  #: src/modules/blocks/classic-event-details/template.js:101
319
  #: src/resources/js/app/blocks.js:45060
320
  msgid "Enter url"
321
+ msgstr "Saisissez l’url"
322
 
323
  #: src/modules/blocks/classic-event-details/template.js:97
324
  #: src/resources/js/app/blocks.js:45054
325
  msgid "Website: "
326
+ msgstr "Site Web :"
327
 
328
  #: src/modules/blocks/classic-event-details/template.js:79
329
  #: src/resources/js/app/blocks.js:45022
330
  msgid "End: "
331
+ msgstr "Fin : "
332
 
333
  #: src/modules/blocks/classic-event-details/template.js:57
334
  #: src/resources/js/app/blocks.js:44982
335
  msgid "Start: "
336
+ msgstr "Début : "
337
 
338
  #: src/modules/blocks/event-organizer/index.js:17
339
  #: src/resources/js/app/blocks.js:48388
343
  #: src/modules/blocks/event-organizer/index.js:16
344
  #: src/resources/js/app/blocks.js:48387
345
  msgid "Event Organizer"
346
+ msgstr "Organisateur de l’évènement"
347
 
348
  #: src/modules/data/blocks/price/reducer.js:23
349
  #: src/resources/js/app/data.js:9364 src/resources/js/app/blocks.js:10508
350
  msgid "$"
351
+ msgstr "$"
352
 
353
  #: src/modules/data/blocks/datetime/reducer.js:23
354
  #: src/resources/js/app/data.js:6796 src/resources/js/app/blocks.js:6842
355
  msgid "-"
356
+ msgstr "-"
357
 
358
  #: src/modules/data/blocks/datetime/reducer.js:22
359
  #: src/resources/js/app/data.js:6795 src/resources/js/app/blocks.js:6841
360
  msgid "@"
361
+ msgstr "@"
362
 
363
  #: src/modules/elements/terms-list/element.js:128
364
  #: src/resources/js/app/blocks.js:11214 src/resources/js/app/elements.js:7840
365
  msgid ", "
366
+ msgstr ", "
367
 
368
  #: src/modules/elements/terms-list/element.js:45
369
  #: src/modules/blocks/classic-event-details/event-details-organizers/event-details-organizer/template.js:26
370
  #: src/resources/js/app/blocks.js:11083 src/resources/js/app/blocks.js:44700
371
  #: src/resources/js/app/elements.js:7709
372
  msgid "(Untitled)"
373
+ msgstr "(sans titre)"
374
 
375
  #: src/modules/elements/upsell/element.js:33
376
  #: src/resources/js/app/blocks.js:13490 src/resources/js/app/elements.js:10116
387
  #: common/src/resources/js/app/elements.js:9791
388
  #: common/src/resources/js/app/utils.js:7339
389
  msgid "at"
390
+ msgstr "à"
391
 
392
  #: src/views/blocks/event-datetime.php:80
393
  msgid "All day"
394
+ msgstr "Toute la journée"
395
 
396
  #: src/views/modules/bar.php:51
397
  msgid "Hide %s Search"
398
+ msgstr "Masquer %s la Recherche"
399
 
400
  #: src/views/modules/bar.php:50 src/views/modules/bar.php:54
401
  msgid "Show %s Search"
402
+ msgstr "Afficher %s la Recherche"
403
 
404
  #: src/admin-views/aggregator/settings.php:159
405
  #: src/admin-views/aggregator/settings.php:268
409
  #: src/admin-views/aggregator/settings.php:456
410
  #: src/admin-views/aggregator/settings.php:524
411
  msgid "Show Map"
412
+ msgstr "Afficher la carte"
413
 
414
  #: src/admin-views/tribe-options-general.php:243
415
  msgid "Enable Maps"
416
+ msgstr "Activer les cartes"
417
 
418
  #: src/admin-views/create-venue-fields.php:257
419
  msgid "Show Map Link?"
420
+ msgstr "Afficher le lien vers la Google Map ?"
421
 
422
  #: src/admin-views/create-venue-fields.php:248
423
  #: src/admin-views/create-venue-fields.php:285
424
  #: src/admin-views/venue-meta-box.php:202
425
  #: src/admin-views/venue-meta-box.php:238
426
  msgid "Show Map Link:"
427
+ msgstr "Afficher le lien vers la Google Map :"
428
 
429
  #: src/admin-views/create-venue-fields.php:239
430
  msgid "Show Map?"
431
+ msgstr "Afficher la carte ?"
432
 
433
  #: src/admin-views/create-venue-fields.php:230
434
  #: src/admin-views/create-venue-fields.php:268
435
  #: src/admin-views/venue-meta-box.php:185
436
  #: src/admin-views/venue-meta-box.php:221
437
  msgid "Show Map:"
438
+ msgstr "Afficher la carte :"
439
 
440
  #: src/Tribe/Editor/Compatibility.php:118
441
  msgid "Hidden Blocks Editor Config"
447
 
448
  #: src/Tribe/Editor/Compatibility.php:110
449
  msgid "Activate Block Editor for Events"
450
+ msgstr "Activer l'éditeur de blocs pour les évènements."
451
 
452
  #: src/Tribe/Editor/Blocks/Event_Website.php:26
453
  msgid "Add Button Text"
455
 
456
  #: src/Tribe/Editor/Meta.php:61 src/Tribe/Editor/Meta.php:70
457
  msgid "Event Organizers"
458
+ msgstr "organisateurs de l’évènement"
459
 
460
  #: src/Tribe/Aggregator/Record/CSV.php:104
461
  msgid "Unknown Column "
462
+ msgstr "Colonne inconnue"
463
 
464
  #: src/Tribe/Aggregator/Record/Queue_Processor.php:288
465
  msgid "There was an error building the record queue: "
467
 
468
  #: src/Tribe/Admin/Notice/Marketing.php:114
469
  msgid "Try Events Gutenberg"
470
+ msgstr "Essayez Events pour Gutenberg"
471
 
472
  #: src/Tribe/Admin/Notice/Marketing.php:106
473
  msgid "Download the eBook"
474
+ msgstr "Télécharger le eBook"
475
 
476
  #: src/Tribe/Admin/Notice/Marketing.php:100
477
  msgid "Get up to speed with our comprehensive Guide to Gutenberg ebook, then see how events and tickets will behave in the block editor by installing our free Events Gutenberg extension."
479
 
480
  #: src/Tribe/Admin/Notice/Marketing.php:95
481
  msgid "WordPress 5.0 is coming soon, and with it, the arrival of the new block editor interface."
482
+ msgstr "WordPress 5.0 arrive bientôt, et avec lui, l'nterface avec le nouvel éditeur de bloc."
483
 
484
  #: src/Tribe/Admin/Notice/Marketing.php:91
485
  msgid "<strong>The Events Calendar & Gutenberg</strong>"
486
+ msgstr "<strong>The Events Calendar & Gutenberg</strong>"
487
 
488
  #: src/Tribe/Main.php:1464
489
  msgid "When running version %1$s of The Events Calendar alongside %2$s, %2$s must be version %3$s or greater. Please %4$smanually update now.%5$s"
491
 
492
  #: src/Tribe/Google/Maps_API_Key.php:107
493
  msgid "(click here for details)"
494
+ msgstr "(Cliquez ici pour plus de datails)"
495
 
496
  #: src/Tribe/Editor.php:534
497
  msgid "Event Blocks"
498
+ msgstr "Blocks Évènements"
499
 
500
  #: src/Tribe/Editor.php:258 src/Tribe/Editor.php:301
501
  msgid "Add Description..."
502
+ msgstr "Ajouter une description..."
503
 
504
  #: common/src/Tribe/Editor/Configuration.php:97
505
  msgid "F j, Y g:i a"
506
+ msgstr "F j, Y g:i a"
507
 
508
  #: common/src/Tribe/Editor/Configuration.php:96
509
  #: src/resources/js/app/blocks.js:45852 src/resources/js/app/blocks.js:46326
510
  msgid "F j"
511
+ msgstr "F j"
512
 
513
  #: common/src/Tribe/Editor/Configuration.php:95
514
  msgid "F j, Y"
515
+ msgstr "F j, Y"
516
 
517
  #: common/src/Tribe/Editor/Configuration.php:94
518
  msgid "g:i a"
519
+ msgstr "g:i a"
520
 
521
  #. translators: %s: duration
522
  #: common/src/Tribe/Editor/Configuration.php:90
523
  msgid "%s ago"
524
+ msgstr "Il y a %s"
525
 
526
  #. translators: %s: duration
527
  #: common/src/Tribe/Editor/Configuration.php:88
530
 
531
  #: common/src/Tribe/Editor/Blocks/Abstract.php:127
532
  msgid "Problem loading the block, please remove this block to restart."
533
+ msgstr "Problème lors du chargement du bloc, veuillez supprimer ce bloc pour recommencer."
534
 
535
  #: common/src/Tribe/Editor/Meta.php:123
536
  msgid "Text Array"
542
 
543
  #: src/admin-views/tribe-options-general.php:69
544
  msgid "Enable WordPress Custom Fields on Events."
545
+ msgstr "Activer les champs personnalisés de WordPress pour les évènements."
546
 
547
  #: src/admin-views/tribe-options-general.php:68
548
  msgid "Show Custom Fields metabox"
549
+ msgstr "Afficher la boîte de méta pour les champs personnalisés"
550
 
551
  #: src/admin-views/tribe-options-display.php:139
552
  msgid "Please note that you are using The Events Calendar's default Google Maps API key, which will limit the Map View's functionality. Visit %sthe API Settings page%s to learn more and add your own Google Maps API key."
554
 
555
  #: src/admin-views/aggregator/settings.php:230
556
  msgid "Stop current processes"
557
+ msgstr "Arrêter les process en cours"
558
 
559
  #: src/admin-views/aggregator/settings.php:219
560
  msgid "The Asynchronous import process is faster and does not rely on WordPress Cron but might not work correctly in all WordPress installations, try switching to the Cron-based process for maximum compatibility."
574
 
575
  #: src/admin-views/aggregator/origins/eventbrite.php:127
576
  msgid "Import from Eventbrite URL"
577
+ msgstr "Import depuis une URL Eventbrite"
578
 
579
  #: src/Tribe/Google/Maps_API_Key.php:109
580
  msgid "to create your own free Google Maps API key."
581
+ msgstr "pour créer votre propre clé API Google Maps gratuite."
582
 
583
  #: src/Tribe/Google/Maps_API_Key.php:106
584
  msgid "If you do not add your own API key, the built-in API key will always populate this field and some map-related functionality will be limited "
586
 
587
  #: src/Tribe/Google/Maps_API_Key.php:105
588
  msgid "You are using The Events Calendar's built-in Google Maps API key."
589
+ msgstr "Vous utilisez la clé API Google Maps intégrée à The Events Calendar."
590
 
591
  #: src/Tribe/Google/Maps_API_Key.php:77
592
  msgid "Read More"
1281
 
1282
  #: src/admin-views/tribe-options-display.php:61
1283
  msgid "There are going to be situations where no out-of-the-box template is 100&#37; perfect. Check out our <a href=\"%s\">our themer's guide</a> for instructions on custom modifications."
1284
+ msgstr "Il va y avoir des situations où aucun modèle prédéfini n’est parfait à 100%. Consultez notre <a href=\"\"%s\"\">Guide d’instructions</a> sur les modifications personnalisées."
1285
 
1286
  #: src/admin-views/tribe-options-display.php:58
1287
  msgid "The settings below control the display of your calendar. If things don't look right, try switching between the three style sheet options or pick a page template from your theme."
2236
 
2237
  #: src/admin-views/aggregator/settings.php:481
2238
  msgid "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
2239
+ msgstr "Récupérez la configuration des évènements d’une autre source (ex. Show Google Maps Link ou Sticky in Month View) lors d’import d’un autre site en utilisant The Events Calendar."
2240
 
2241
  #: src/admin-views/aggregator/settings.php:480
2242
  msgid "Import Event Settings"
3829
  #: src/admin-views/aggregator/settings.php:457
3830
  #: src/admin-views/aggregator/settings.php:525
3831
  msgid "Show map by default on imported event and venues"
3832
+ msgstr "Afficher Google Map par défaut sur les évènements et les lieux importés"
3833
 
3834
  #: src/admin-views/aggregator/settings.php:148
3835
  msgid "The default event category for events"
6145
  #: src/modules/blocks/event-links/template.js:101
6146
  #: src/resources/js/app/blocks.js:48525
6147
  msgid "Share Settings"
6148
+ msgstr "Partager les réglages"
6149
 
6150
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6151
  msgid "Draft"
6266
 
6267
  #: src/resources/js/app/blocks.js:47396
6268
  msgid "Show Google Maps Link"
6269
+ msgstr "Afficher le lien Google Maps :"
6270
 
6271
  #: src/admin-views/create-venue-fields.php:166
6272
  #: src/admin-views/venue-meta-box.php:136
6721
  #: src/modules/blocks/classic-event-details/template.js:117
6722
  #: src/resources/js/app/blocks.js:45080
6723
  msgid "Price: "
6724
+ msgstr "Prix :"
6725
 
6726
  #: common/src/modules/elements/image-upload/element.js:46
6727
  #: common/src/resources/js/app/elements.js:59497
6728
  msgid "remove"
6729
+ msgstr "Supprimer"
6730
 
6731
  #: common/src/admin-views/event-log.php:65
6732
  msgid "View"
8634
 
8635
  #: src/Tribe/Main.php:1967 src/Tribe/Venue.php:110 src/Tribe/Organizer.php:91
8636
  msgid "Add New"
8637
+ msgstr "Ajouter un évènement"
8638
 
8639
  #: src/Tribe/Main.php:1934 src/Tribe/Main.php:2373
8640
  msgid "tag"
lang/the-events-calendar-gl_ES.mo CHANGED
Binary file
lang/the-events-calendar-gl_ES.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-07-14 19:15:10+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -2234,7 +2234,7 @@ msgstr "Outras URLs"
2234
 
2235
  #: src/admin-views/aggregator/settings.php:481
2236
  msgid "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
2237
- msgstr ""
2238
 
2239
  #: src/admin-views/aggregator/settings.php:480
2240
  msgid "Import Event Settings"
@@ -3827,7 +3827,7 @@ msgstr "configuración de importación de ICalendar"
3827
  #: src/admin-views/aggregator/settings.php:457
3828
  #: src/admin-views/aggregator/settings.php:525
3829
  msgid "Show map by default on imported event and venues"
3830
- msgstr ""
3831
 
3832
  #: src/admin-views/aggregator/settings.php:148
3833
  msgid "The default event category for events"
@@ -3881,7 +3881,7 @@ msgstr "Sobreescribe o meu evento con calquera cambio da fonte orixinal."
3881
 
3882
  #: src/admin-views/aggregator/settings.php:49
3883
  msgid "You can make changes to imported events via The Events Calendar and see those changes reflected on your site’s calendar. The owner of the original event source (e.g. the iCalendar feed or Meetup group) might also make changes to their event. If you choose to re-import an altered event (manually or via a scheduled import), any changes made at the source or on your calendar will need to be addressed."
3884
- msgstr ""
3885
 
3886
  #: src/admin-views/aggregator/settings.php:44
3887
  #: src/admin-views/aggregator/settings.php:54
@@ -4410,7 +4410,7 @@ msgstr "Renova a túa licenza Aggregator de eventos"
4410
 
4411
  #: src/Tribe/Aggregator/Tabs/New.php:561
4412
  msgid "Renew your license in order to import events from iCalendar, Google, or Meetup."
4413
- msgstr ""
4414
 
4415
  #: src/Tribe/Aggregator/Tabs/New.php:560
4416
  msgid "Your Event Aggregator license is expired."
@@ -4431,7 +4431,7 @@ msgstr "Mércao agora"
4431
 
4432
  #: src/Tribe/Aggregator/Tabs/New.php:502
4433
  msgid "With Event Aggregator, you can import events from iCalendar, Google, and Meetup.com in a jiffy."
4434
- msgstr ""
4435
 
4436
  #: src/Tribe/Aggregator/Tabs/New.php:500
4437
  msgid "Import Using Event Aggregator"
@@ -6143,7 +6143,7 @@ msgstr "Importar eventos"
6143
  #: src/modules/blocks/event-links/template.js:101
6144
  #: src/resources/js/app/blocks.js:48525
6145
  msgid "Share Settings"
6146
- msgstr ""
6147
 
6148
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6149
  msgid "Draft"
@@ -6264,7 +6264,7 @@ msgstr "Título:"
6264
 
6265
  #: src/resources/js/app/blocks.js:47396
6266
  msgid "Show Google Maps Link"
6267
- msgstr ""
6268
 
6269
  #: src/admin-views/create-venue-fields.php:166
6270
  #: src/admin-views/venue-meta-box.php:136
@@ -6719,12 +6719,12 @@ msgstr "Modelo de eventos predefinido"
6719
  #: src/modules/blocks/classic-event-details/template.js:117
6720
  #: src/resources/js/app/blocks.js:45080
6721
  msgid "Price: "
6722
- msgstr ""
6723
 
6724
  #: common/src/modules/elements/image-upload/element.js:46
6725
  #: common/src/resources/js/app/elements.js:59497
6726
  msgid "remove"
6727
- msgstr ""
6728
 
6729
  #: common/src/admin-views/event-log.php:65
6730
  msgid "View"
@@ -6874,7 +6874,7 @@ msgstr "Recursos de apoio"
6874
 
6875
  #: src/admin-views/admin-welcome-message.php:44
6876
  msgid "Addons for Community, Tickets, Filters, and more."
6877
- msgstr ""
6878
 
6879
  #: src/admin-views/admin-welcome-message.php:43
6880
  msgid "Looking for More Features?"
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-12-02 09:48:28+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
2234
 
2235
  #: src/admin-views/aggregator/settings.php:481
2236
  msgid "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar."
2237
+ msgstr "Obtén a configuración do evento de orixe (por exemplo, Amosar ligazón de Google Maps ou vinculación a Month View) ao importar desde outro sitio mediante The Events Calendar."
2238
 
2239
  #: src/admin-views/aggregator/settings.php:480
2240
  msgid "Import Event Settings"
3827
  #: src/admin-views/aggregator/settings.php:457
3828
  #: src/admin-views/aggregator/settings.php:525
3829
  msgid "Show map by default on imported event and venues"
3830
+ msgstr "Mostrar Google Map por defecto no evento e lugares importados"
3831
 
3832
  #: src/admin-views/aggregator/settings.php:148
3833
  msgid "The default event category for events"
3881
 
3882
  #: src/admin-views/aggregator/settings.php:49
3883
  msgid "You can make changes to imported events via The Events Calendar and see those changes reflected on your site’s calendar. The owner of the original event source (e.g. the iCalendar feed or Meetup group) might also make changes to their event. If you choose to re-import an altered event (manually or via a scheduled import), any changes made at the source or on your calendar will need to be addressed."
3884
+ msgstr "Podes facer cambios a eventos importados a través do Calendario de eventos e ver os cambios reflectidos no calendario do seu sitio. O propietario da fonte do evento orixinal (por exemplo, a fonte de iCalendar ou o grupo de Facebook) tamén pode facer cambios no seu evento. Se elixe volver importar un evento alterado (manualmente ou mediante unha importación programada), haberá que realizar calquera cambio feito na orixe ou no seu calendario."
3885
 
3886
  #: src/admin-views/aggregator/settings.php:44
3887
  #: src/admin-views/aggregator/settings.php:54
4410
 
4411
  #: src/Tribe/Aggregator/Tabs/New.php:561
4412
  msgid "Renew your license in order to import events from iCalendar, Google, or Meetup."
4413
+ msgstr "Renova a túa licenza para importar eventos de Facebook, iCalendar, Google ou Meetup."
4414
 
4415
  #: src/Tribe/Aggregator/Tabs/New.php:560
4416
  msgid "Your Event Aggregator license is expired."
4431
 
4432
  #: src/Tribe/Aggregator/Tabs/New.php:502
4433
  msgid "With Event Aggregator, you can import events from iCalendar, Google, and Meetup.com in a jiffy."
4434
+ msgstr "Con Event Aggregator, podes importar eventos desde Facebook, iCalendar, Google e Meetup.com nun momento."
4435
 
4436
  #: src/Tribe/Aggregator/Tabs/New.php:500
4437
  msgid "Import Using Event Aggregator"
6143
  #: src/modules/blocks/event-links/template.js:101
6144
  #: src/resources/js/app/blocks.js:48525
6145
  msgid "Share Settings"
6146
+ msgstr "Gardar configuracións"
6147
 
6148
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6149
  msgid "Draft"
6264
 
6265
  #: src/resources/js/app/blocks.js:47396
6266
  msgid "Show Google Maps Link"
6267
+ msgstr "Amosar ligazón de Google Maps:"
6268
 
6269
  #: src/admin-views/create-venue-fields.php:166
6270
  #: src/admin-views/venue-meta-box.php:136
6719
  #: src/modules/blocks/classic-event-details/template.js:117
6720
  #: src/resources/js/app/blocks.js:45080
6721
  msgid "Price: "
6722
+ msgstr "Custe: "
6723
 
6724
  #: common/src/modules/elements/image-upload/element.js:46
6725
  #: common/src/resources/js/app/elements.js:59497
6726
  msgid "remove"
6727
+ msgstr "Eliminar"
6728
 
6729
  #: common/src/admin-views/event-log.php:65
6730
  msgid "View"
6874
 
6875
  #: src/admin-views/admin-welcome-message.php:44
6876
  msgid "Addons for Community, Tickets, Filters, and more."
6877
+ msgstr "Complementos para a Comunidade, Entradas, Filtros, Facebook e moito máis."
6878
 
6879
  #: src/admin-views/admin-welcome-message.php:43
6880
  msgid "Looking for More Features?"
lang/the-events-calendar-ro_RO.mo CHANGED
Binary file
lang/the-events-calendar-ro_RO.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2018-11-30 15:10:13+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -6172,7 +6172,7 @@ msgstr ""
6172
  #: src/modules/blocks/event-links/template.js:101
6173
  #: src/resources/js/app/blocks.js:48525
6174
  msgid "Share Settings"
6175
- msgstr ""
6176
 
6177
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6178
  msgid "Draft"
2
  # This file is distributed under the same license as the Plugins - The Events Calendar - Stable (latest release) package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2018-12-03 19:20:40+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
6172
  #: src/modules/blocks/event-links/template.js:101
6173
  #: src/resources/js/app/blocks.js:48525
6174
  msgid "Share Settings"
6175
+ msgstr "Partajează setările"
6176
 
6177
  #: src/deprecated/Tribe__Events__Importer__Options.php:136
6178
  msgid "Draft"
readme.txt CHANGED
@@ -4,8 +4,8 @@ Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo,
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: 4.5
7
- Stable tag: 4.7.0.1
8
- Tested up to: 4.9.8
9
  Requires PHP: 5.2.4
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -215,6 +215,14 @@ Still not happy? Shoot us an email to support@theeventscalendar.com or tweet to
215
 
216
  == Changelog ==
217
 
 
 
 
 
 
 
 
 
218
  = [4.7.0.1] 2018-11-30 =
219
 
220
  * Fix - Update common library to maximize compatibility with earlier PHP versions (our thanks to @megabit81 for highlighting this problem) [119073]
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: 4.5
7
+ Stable tag: 4.7.1
8
+ Tested up to: 5.0
9
  Requires PHP: 5.2.4
10
  License: GPLv2 or later
11
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
215
 
216
  == Changelog ==
217
 
218
+ = [4.7.1] 2018-12-05 =
219
+
220
+ * Feature - Added additional caching to TEC REST API archives and the Post Repository event/venue/organizer responses [117159]
221
+ * Feature - Added new `tribe_events_set_month_view_events_from_cache` action to make it easier to listen for when Month View events are retrieved from the Month View cache [116124]
222
+ * Fix - Importing CSV files with whitespace at the beginning of the rows won't remove headers and skip columns on Preview [117236]
223
+ * Fix - Prevent JavaScript error in Month View when the Date filter is removed from the Tribe Bar (thank you to @tyrann0us on GitHub for submitting this fix!) [116995]
224
+ * Fix - Facilitate automated updates for Events Calendar PRO even if it's requirements have not been met
225
+
226
  = [4.7.0.1] 2018-11-30 =
227
 
228
  * Fix - Update common library to maximize compatibility with earlier PHP versions (our thanks to @megabit81 for highlighting this problem) [119073]
src/Tribe/Aggregator/Processes/Import_Events.php CHANGED
@@ -209,6 +209,35 @@ class Tribe__Events__Aggregator__Processes__Import_Events extends Tribe__Process
209
  $data = (array) $item['data'];
210
  $this->transitional_id = filter_var( $item['transitional_id'], FILTER_SANITIZE_STRING );
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  /**
213
  * To avoid deadlocks when dealing with circular dependencies an item can be requeued only
214
  * so many times.
209
  $data = (array) $item['data'];
210
  $this->transitional_id = filter_var( $item['transitional_id'], FILTER_SANITIZE_STRING );
211
 
212
+ /*
213
+ * Make sure the import is happening in the context of the same site that started it.
214
+ * This deals with mis-handling and orphaned calls to the the `switch_to_blog` function.
215
+ */
216
+ $current_blog_id = is_multisite() ? get_current_blog_id() : 1;
217
+ $task_blog_id = isset( $item['blog_id'] ) ? (int) $item['blog_id'] : $current_blog_id;
218
+
219
+ if ( $current_blog_id !== $task_blog_id ) {
220
+ /*
221
+ * Requeue this task and log an error. For whatever reason the blog id context of this task is not
222
+ * the expected one.
223
+ * We do not switch to the correct task blog to avoid potentially causing more issues: this is an issue
224
+ * already so let's log an error.
225
+ */
226
+ /** @var Tribe__Log $logger */
227
+ $logger = tribe( 'logger' );
228
+ $logger->log_error(
229
+ sprintf(
230
+ 'Event Aggregator import task supposed to run in context of blog %d, running instead in blog %d: not importing.',
231
+ $task_blog_id,
232
+ $current_blog_id
233
+ ),
234
+ 'Event Aggregator Import'
235
+ );
236
+
237
+ // Return the item to indicate the task should be re-queued.
238
+ return $item;
239
+ }
240
+
241
  /**
242
  * To avoid deadlocks when dealing with circular dependencies an item can be requeued only
243
  * so many times.
src/Tribe/Aggregator/Record/Abstract.php CHANGED
@@ -733,7 +733,7 @@ abstract class Tribe__Events__Aggregator__Record__Abstract {
733
  }
734
 
735
  // Set site for origin(s) that need it for new token handling.
736
- if ( \in_array( $args['origin'], array( 'eventbrite', 'facebook-dev' ), true ) ) {
737
  $args['site'] = site_url();
738
  }
739
 
733
  }
734
 
735
  // Set site for origin(s) that need it for new token handling.
736
+ if ( in_array( $args['origin'], array( 'eventbrite', 'facebook-dev' ), true ) ) {
737
  $args['site'] = site_url();
738
  }
739
 
src/Tribe/Aggregator/Record/Async_Queue.php CHANGED
@@ -84,12 +84,16 @@ class Tribe__Events__Aggregator__Record__Async_Queue
84
  /** @var Tribe__Process__Queue $import_queue */
85
  $import_queue = tribe( 'events-aggregator.processes.import-events' );
86
 
 
 
 
87
  foreach ( $items as $item ) {
88
- $item_data = array(
89
  'user_id' => get_current_user_id(),
90
  'record_id' => $this->record->id,
91
  'data' => $item,
92
  'transitional_id' => $transitional_id,
 
93
  );
94
  $import_queue->push_to_queue( $item_data );
95
  }
84
  /** @var Tribe__Process__Queue $import_queue */
85
  $import_queue = tribe( 'events-aggregator.processes.import-events' );
86
 
87
+ // Fetch and store the current blog ID to make sure each task knows the blog context it should happen into.
88
+ $current_blog_id = is_multisite() ? get_current_blog_id() : 1;
89
+
90
  foreach ( $items as $item ) {
91
+ $item_data = array(
92
  'user_id' => get_current_user_id(),
93
  'record_id' => $this->record->id,
94
  'data' => $item,
95
  'transitional_id' => $transitional_id,
96
+ 'blog_id' => $current_blog_id,
97
  );
98
  $import_queue->push_to_queue( $item_data );
99
  }
src/Tribe/Aggregator/Record/CSV.php CHANGED
@@ -92,6 +92,16 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
92
 
93
  $rows = $importer->do_import_preview();
94
 
 
 
 
 
 
 
 
 
 
 
95
  $headers = array_shift( $rows );
96
 
97
  /*
@@ -99,12 +109,16 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
99
  * each column without an header a generated one.
100
  */
101
  $empty_counter = 1;
102
- foreach ( $headers as $key => &$header ) {
 
 
103
  if ( empty( $header ) ) {
104
  $header = __( 'Unknown Column ', 'the-events-calendar' ) . $empty_counter ++;
105
  }
 
106
  }
107
 
 
108
  $data = array();
109
 
110
  foreach ( $rows as $row ) {
@@ -432,4 +446,4 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
432
  private function clean_up_after_import() {
433
  Tribe__Events__Importer__File_Uploader::clear_old_files();
434
  }
435
- }
92
 
93
  $rows = $importer->do_import_preview();
94
 
95
+ /*
96
+ * Strip whitespace from the beginning and end of row values
97
+ */
98
+ $formatted_rows = array();
99
+
100
+ foreach ( $rows as $row ) {
101
+ $formatted_rows[] = array_map( 'trim', $row );
102
+ }
103
+
104
+ $rows = $formatted_rows;
105
  $headers = array_shift( $rows );
106
 
107
  /*
109
  * each column without an header a generated one.
110
  */
111
  $empty_counter = 1;
112
+ $formatted_headers = array();
113
+
114
+ foreach ( $headers as $header ) {
115
  if ( empty( $header ) ) {
116
  $header = __( 'Unknown Column ', 'the-events-calendar' ) . $empty_counter ++;
117
  }
118
+ $formatted_headers[] = $header;
119
  }
120
 
121
+ $headers = $formatted_headers;
122
  $data = array();
123
 
124
  foreach ( $rows as $row ) {
446
  private function clean_up_after_import() {
447
  Tribe__Events__Importer__File_Uploader::clear_old_files();
448
  }
449
+ }
src/Tribe/Main.php CHANGED
@@ -32,7 +32,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
 
35
- const VERSION = '4.7.0.1';
36
  const MIN_ADDON_VERSION = '4.4';
37
  const MIN_COMMON_VERSION = '4.8';
38
 
@@ -439,6 +439,9 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
439
  class_exists( 'Tribe__Events__Pro__Main' )
440
  && version_compare( Tribe__Events__Pro__Main::VERSION, $this->addon_dependencies['events-pro'], '<' )
441
  ) {
 
 
 
442
  add_action( 'admin_notices', array( $this, 'pro_compatibility_notice' ) );
443
  remove_action( 'plugins_loaded', 'Tribe_ECP_Load', 2 );
444
  return;
@@ -1510,6 +1513,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
1510
  'Main.php',
1511
  'Deactivation.php',
1512
  'Updater.php',
 
1513
  );
1514
 
1515
  foreach ( $files_to_include as $file ) {
32
  const VENUE_POST_TYPE = 'tribe_venue';
33
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
34
 
35
+ const VERSION = '4.7.1';
36
  const MIN_ADDON_VERSION = '4.4';
37
  const MIN_COMMON_VERSION = '4.8';
38
 
439
  class_exists( 'Tribe__Events__Pro__Main' )
440
  && version_compare( Tribe__Events__Pro__Main::VERSION, $this->addon_dependencies['events-pro'], '<' )
441
  ) {
442
+ $pue = new Tribe__Events__Pro__PUE( EVENTS_CALENDAR_PRO_DIR . '/events-calendar-pro.php' );
443
+ $pue->load_plugin_update_engine();
444
+
445
  add_action( 'admin_notices', array( $this, 'pro_compatibility_notice' ) );
446
  remove_action( 'plugins_loaded', 'Tribe_ECP_Load', 2 );
447
  return;
1513
  'Main.php',
1514
  'Deactivation.php',
1515
  'Updater.php',
1516
+ 'PUE.php',
1517
  );
1518
 
1519
  foreach ( $files_to_include as $file ) {
src/Tribe/Query.php CHANGED
@@ -942,7 +942,8 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
942
  public static function getHideFromUpcomingEvents() {
943
  global $wpdb;
944
 
945
- $cache = new Tribe__Cache();
 
946
  $cache_key = 'tribe-hide-from-upcoming-events';
947
  $found = $cache->get( $cache_key, 'save_post' );
948
  if ( is_array( $found ) ) {
@@ -984,7 +985,8 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
984
  $args = array_filter( $args, array( __CLASS__, 'filter_args' ) );
985
  ksort( $args );
986
 
987
- $cache = new Tribe__Cache();
 
988
  $cache_key = 'daily_counts_and_ids_' . serialize( $args );
989
  $found = $cache->get( $cache_key, 'save_post' );
990
  if ( $found ) {
@@ -1091,9 +1093,12 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
1091
  update_object_term_cache( $final_event_ids, Tribe__Events__Main::POSTTYPE );
1092
  update_postmeta_cache( $final_event_ids );
1093
  }
 
1094
  // return IDs per day and total counts per day
1095
  $return = array( 'counts' => $counts, 'event_ids' => $event_ids );
1096
- $cache = new Tribe__Cache;
 
 
1097
  $cache_key = 'daily_counts_and_ids_' . serialize( $args );
1098
  $cache->set( $cache_key, $return, Tribe__Cache::NON_PERSISTENT, 'save_post' );
1099
 
@@ -1135,7 +1140,8 @@ if ( ! class_exists( 'Tribe__Events__Query' ) ) {
1135
  $args = array_filter( $args, array( __CLASS__, 'filter_args' ) );
1136
  ksort( $args );
1137
 
1138
- $cache = new Tribe__Cache();
 
1139
  $cache_key = 'get_events_' . get_current_user_id() . serialize( $args );
1140
 
1141
  $result = $cache->get( $cache_key, 'save_post' );
942
  public static function getHideFromUpcomingEvents() {
943
  global $wpdb;
944
 
945
+ /** @var Tribe__Cache $cache */
946
+ $cache = tribe( 'cache' );
947
  $cache_key = 'tribe-hide-from-upcoming-events';
948
  $found = $cache->get( $cache_key, 'save_post' );
949
  if ( is_array( $found ) ) {
985
  $args = array_filter( $args, array( __CLASS__, 'filter_args' ) );
986
  ksort( $args );
987
 
988
+ /** @var Tribe__Cache $cache */
989
+ $cache = tribe( 'cache' );
990
  $cache_key = 'daily_counts_and_ids_' . serialize( $args );
991
  $found = $cache->get( $cache_key, 'save_post' );
992
  if ( $found ) {
1093
  update_object_term_cache( $final_event_ids, Tribe__Events__Main::POSTTYPE );
1094
  update_postmeta_cache( $final_event_ids );
1095
  }
1096
+
1097
  // return IDs per day and total counts per day
1098
  $return = array( 'counts' => $counts, 'event_ids' => $event_ids );
1099
+
1100
+ /** @var Tribe__Cache $cache */
1101
+ $cache = tribe( 'cache' );
1102
  $cache_key = 'daily_counts_and_ids_' . serialize( $args );
1103
  $cache->set( $cache_key, $return, Tribe__Cache::NON_PERSISTENT, 'save_post' );
1104
 
1140
  $args = array_filter( $args, array( __CLASS__, 'filter_args' ) );
1141
  ksort( $args );
1142
 
1143
+ /** @var Tribe__Cache $cache */
1144
+ $cache = tribe( 'cache' );
1145
  $cache_key = 'get_events_' . get_current_user_id() . serialize( $args );
1146
 
1147
  $result = $cache->get( $cache_key, 'save_post' );
src/Tribe/REST/V1/Endpoints/Archive_Event.php CHANGED
@@ -53,18 +53,18 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Event
53
  * @return WP_Error|WP_REST_Response An array containing the data on success or a WP_Error instance on failure.
54
  */
55
  public function get( WP_REST_Request $request ) {
56
- $args = array();
57
  $date_format = Tribe__Date_Utils::DBDATETIMEFORMAT;
58
 
59
- $args['paged'] = $request['page'];
60
  $args['posts_per_page'] = $request['per_page'];
61
- $args['start_date'] = isset( $request['start_date'] ) ?
62
  Tribe__Timezones::localize_date( $date_format, $request['start_date'] )
63
  : false;
64
- $args['end_date'] = isset( $request['end_date'] ) ?
65
  Tribe__Timezones::localize_date( $date_format, $request['end_date'] )
66
  : false;
67
- $args['s'] = $request['search'];
68
 
69
  if ( $post__in = $request['include'] ) {
70
  $args['post__in'] = $request['include'];
@@ -122,7 +122,7 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Event
122
 
123
  // Filter by geoloc
124
  if ( ! empty( $request['geoloc'] ) ) {
125
- $args['tribe_geoloc'] = 1;
126
  $args['tribe_geoloc_lat'] = isset( $request['geoloc_lat'] ) ? $request['geoloc_lat'] : '';
127
  $args['tribe_geoloc_lng'] = isset( $request['geoloc_lng'] ) ? $request['geoloc_lng'] : '';
128
  }
@@ -136,12 +136,8 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Event
136
 
137
  $args = $this->parse_args( $args, $request->get_default_params() );
138
 
139
- $data = array( 'events' => array() );
140
-
141
- $data['rest_url'] = $this->get_current_rest_url( $args, $extra_rest_args );
142
-
143
  if ( null === $request['status'] ) {
144
- $cap = get_post_type_object( Tribe__Events__Main::POSTTYPE )->cap->edit_posts;
145
  $args['post_status'] = current_user_can( $cap ) ? 'any' : 'publish';
146
  } else {
147
  $args['post_status'] = $this->filter_post_status_list( $request['status'] );
@@ -154,34 +150,52 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Event
154
  $args['posts_per_page'] = $this->get_default_posts_per_page();
155
  }
156
 
157
- $events = tribe_get_events( $args );
 
 
158
 
159
- $page = $this->parse_page( $request ) ? $this->parse_page( $request ) : 1;
160
 
161
- if ( empty( $events ) && (int) $page > 1 ) {
162
- $message = $this->messages->get_message( 'event-archive-page-not-found' );
163
 
164
- return new WP_Error( 'event-archive-page-not-found', $message, array( 'status' => 404 ) );
165
- }
166
 
167
- $events = wp_list_pluck( $events, 'ID' );
168
 
169
- unset( $args['fields'] );
170
 
171
- if ( $this->has_next( $args, $page ) ) {
172
- $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
173
- }
174
 
175
- if ( $this->has_previous( $page, $args ) ) {
176
- $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
177
- }
178
 
179
- foreach ( $events as $event_id ) {
180
- $data['events'][] = $this->repository->get_event_data( $event_id );
181
- }
182
 
183
- $data['total'] = $total = $this->get_total( $args );
184
- $data['total_pages'] = $this->get_total_pages( $total, $args['posts_per_page'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
 
186
  /**
187
  * Filters the data that will be returned for an events archive request.
53
  * @return WP_Error|WP_REST_Response An array containing the data on success or a WP_Error instance on failure.
54
  */
55
  public function get( WP_REST_Request $request ) {
56
+ $args = array();
57
  $date_format = Tribe__Date_Utils::DBDATETIMEFORMAT;
58
 
59
+ $args['paged'] = $request['page'];
60
  $args['posts_per_page'] = $request['per_page'];
61
+ $args['start_date'] = isset( $request['start_date'] ) ?
62
  Tribe__Timezones::localize_date( $date_format, $request['start_date'] )
63
  : false;
64
+ $args['end_date'] = isset( $request['end_date'] ) ?
65
  Tribe__Timezones::localize_date( $date_format, $request['end_date'] )
66
  : false;
67
+ $args['s'] = $request['search'];
68
 
69
  if ( $post__in = $request['include'] ) {
70
  $args['post__in'] = $request['include'];
122
 
123
  // Filter by geoloc
124
  if ( ! empty( $request['geoloc'] ) ) {
125
+ $args['tribe_geoloc'] = 1;
126
  $args['tribe_geoloc_lat'] = isset( $request['geoloc_lat'] ) ? $request['geoloc_lat'] : '';
127
  $args['tribe_geoloc_lng'] = isset( $request['geoloc_lng'] ) ? $request['geoloc_lng'] : '';
128
  }
136
 
137
  $args = $this->parse_args( $args, $request->get_default_params() );
138
 
 
 
 
 
139
  if ( null === $request['status'] ) {
140
+ $cap = get_post_type_object( Tribe__Events__Main::POSTTYPE )->cap->edit_posts;
141
  $args['post_status'] = current_user_can( $cap ) ? 'any' : 'publish';
142
  } else {
143
  $args['post_status'] = $this->filter_post_status_list( $request['status'] );
150
  $args['posts_per_page'] = $this->get_default_posts_per_page();
151
  }
152
 
153
+ /** @var Tribe__Cache $cache */
154
+ $cache = tribe( 'cache' );
155
+ $cache_key = 'rest_get_events_data_' . get_current_user_id() . '_' . wp_json_encode( $args );
156
 
157
+ $data = $cache->get( $cache_key, 'save_post' );
158
 
159
+ if ( ! is_array( $data ) ) {
160
+ $data = array( 'events' => array() );
161
 
162
+ $data['rest_url'] = $this->get_current_rest_url( $args, $extra_rest_args );
 
163
 
164
+ $events = tribe_get_events( $args );
165
 
166
+ $page = $this->parse_page( $request ) ? $this->parse_page( $request ) : 1;
167
 
168
+ if ( empty( $events ) && (int) $page > 1 ) {
169
+ $message = $this->messages->get_message( 'event-archive-page-not-found' );
 
170
 
171
+ return new WP_Error( 'event-archive-page-not-found', $message, array( 'status' => 404 ) );
172
+ }
 
173
 
174
+ $events = wp_list_pluck( $events, 'ID' );
 
 
175
 
176
+ unset( $args['fields'] );
177
+
178
+ if ( $this->has_next( $args, $page ) ) {
179
+ $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
180
+ }
181
+
182
+ if ( $this->has_previous( $page, $args ) ) {
183
+ $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
184
+ }
185
+
186
+ foreach ( $events as $event_id ) {
187
+ $event = $this->repository->get_event_data( $event_id );
188
+
189
+ if ( $event && ! is_wp_error( $event ) ) {
190
+ $data['events'][] = $event;
191
+ }
192
+ }
193
+
194
+ $data['total'] = $total = $this->get_total( $args );
195
+ $data['total_pages'] = $this->get_total_pages( $total, $args['posts_per_page'] );
196
+
197
+ $cache->set( $cache_key, $data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
198
+ }
199
 
200
  /**
201
  * Filters the data that will be returned for an events archive request.
src/Tribe/REST/V1/Endpoints/Archive_Organizer.php CHANGED
@@ -106,9 +106,7 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Organizer
106
  */
107
  $default_only_with_upcoming = apply_filters( 'tribe_rest_organizer_default_only_with_upcoming', false );
108
 
109
- $only_with_upcoming = isset( $request['only_with_upcoming'] )
110
- ? tribe_is_truthy( $request['only_with_upcoming'] )
111
- : $default_only_with_upcoming;
112
  unset( $args['only_with_upcoming'] );
113
 
114
  if ( ! empty( $args['s'] ) ) {
@@ -130,42 +128,53 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Organizer
130
  }
131
  }
132
 
133
- $posts_per_page = Tribe__Utils__Array::get( $args, 'posts_per_page', $this->get_default_posts_per_page() );
 
 
134
 
135
- $organizers = isset( $organizers )
136
- ? $organizers
137
- : tribe_get_organizers( $only_with_upcoming, $posts_per_page, true, $args );
138
 
139
- unset( $args['fields'] );
 
 
140
 
141
- $ids = wp_list_pluck( $organizers, 'ID' );
142
 
143
- $data = array( 'organizers' => array() );
144
 
145
- foreach ( $ids as $organizer_id ) {
146
- $data['organizers'][] = $this->repository->get_organizer_data( $organizer_id );
147
- }
148
 
149
- $data['rest_url'] = $this->get_current_rest_url( $args );
 
150
 
151
- $page = Tribe__Utils__Array::get( $args, 'paged', 1 );
 
 
 
152
 
153
- if ( empty( $organizers ) && (int) $page > 1 ) {
154
- $message = $this->messages->get_message( 'organizer-archive-page-not-found' );
155
 
156
- return new WP_Error( 'organizer-archive-page-not-found', $message, array( 'status' => 404 ) );
157
- }
158
 
159
- if ( $this->has_next( $args, $page, $only_with_upcoming ) ) {
160
- $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
161
- }
162
 
163
- if ( $this->has_previous( $page, $args, $only_with_upcoming ) ) {
164
- $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
165
- }
166
 
167
- $data['total'] = $total = $this->get_total( $args, $only_with_upcoming );
168
- $data['total_pages'] = $this->get_total_pages( $total, $posts_per_page );
 
 
 
 
 
 
 
 
 
 
 
169
 
170
  $response = new WP_REST_Response( $data );
171
 
106
  */
107
  $default_only_with_upcoming = apply_filters( 'tribe_rest_organizer_default_only_with_upcoming', false );
108
 
109
+ $only_with_upcoming = isset( $request['only_with_upcoming'] ) ? tribe_is_truthy( $request['only_with_upcoming'] ) : $default_only_with_upcoming;
 
 
110
  unset( $args['only_with_upcoming'] );
111
 
112
  if ( ! empty( $args['s'] ) ) {
128
  }
129
  }
130
 
131
+ /** @var Tribe__Cache $cache */
132
+ $cache = tribe( 'cache' );
133
+ $cache_key = 'rest_get_organizers_data_' . get_current_user_id() . '_' . wp_json_encode( $args );
134
 
135
+ $data = $cache->get( $cache_key, 'save_post' );
 
 
136
 
137
+ if ( ! is_array( $data ) ) {
138
+ $posts_per_page = Tribe__Utils__Array::get( $args, 'posts_per_page', $this->get_default_posts_per_page() );
139
+ $organizers = isset( $organizers ) ? $organizers : tribe_get_organizers( $only_with_upcoming, $posts_per_page, true, $args );
140
 
141
+ unset( $args['fields'] );
142
 
143
+ $ids = wp_list_pluck( $organizers, 'ID' );
144
 
145
+ $data = array( 'organizers' => array() );
 
 
146
 
147
+ foreach ( $ids as $organizer_id ) {
148
+ $organizer = $this->repository->get_organizer_data( $organizer_id );
149
 
150
+ if ( $organizer && ! is_wp_error( $organizer ) ) {
151
+ $data['organizers'][] = $organizer;
152
+ }
153
+ }
154
 
155
+ $data['rest_url'] = $this->get_current_rest_url( $args );
 
156
 
157
+ $page = Tribe__Utils__Array::get( $args, 'paged', 1 );
 
158
 
159
+ if ( empty( $organizers ) && (int) $page > 1 ) {
160
+ $message = $this->messages->get_message( 'organizer-archive-page-not-found' );
 
161
 
162
+ return new WP_Error( 'organizer-archive-page-not-found', $message, array( 'status' => 404 ) );
163
+ }
 
164
 
165
+ if ( $this->has_next( $args, $page, $only_with_upcoming ) ) {
166
+ $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
167
+ }
168
+
169
+ if ( $this->has_previous( $page, $args, $only_with_upcoming ) ) {
170
+ $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
171
+ }
172
+
173
+ $data['total'] = $total = $this->get_total( $args, $only_with_upcoming );
174
+ $data['total_pages'] = $this->get_total_pages( $total, $posts_per_page );
175
+
176
+ $cache->set( $cache_key, $data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
177
+ }
178
 
179
  $response = new WP_REST_Response( $data );
180
 
src/Tribe/REST/V1/Endpoints/Archive_Venue.php CHANGED
@@ -105,9 +105,7 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Venue
105
  */
106
  $default_only_with_upcoming = apply_filters( 'tribe_rest_venue_default_only_with_upcoming', false );
107
 
108
- $only_with_upcoming = isset( $request['only_with_upcoming'] )
109
- ? tribe_is_truthy( $request['only_with_upcoming'] )
110
- : $default_only_with_upcoming;
111
  unset( $args['only_with_upcoming'] );
112
 
113
  if ( ! empty( $args['s'] ) ) {
@@ -128,41 +126,53 @@ class Tribe__Events__REST__V1__Endpoints__Archive_Venue
128
  }
129
  }
130
 
131
- $posts_per_page = Tribe__Utils__Array::get( $args, 'posts_per_page', $this->get_default_posts_per_page() );
132
- $venues = isset( $venues )
133
- ? $venues
134
- : tribe_get_venues( $only_with_upcoming, $posts_per_page, true, $args );
135
 
136
- unset( $args['fields'] );
137
 
138
- $ids = wp_list_pluck( $venues, 'ID' );
 
 
139
 
140
- $data = array( 'venues' => array() );
141
 
142
- foreach ( $ids as $venue_id ) {
143
- $data['venues'][] = $this->repository->get_venue_data( $venue_id );
144
- }
145
 
146
- $data['rest_url'] = $this->get_current_rest_url( $args );
147
 
148
- $page = Tribe__Utils__Array::get( $args, 'paged', 1 );
 
149
 
150
- if ( empty( $venues ) && (int) $page > 1 ) {
151
- $message = $this->messages->get_message( 'venue-archive-page-not-found' );
 
 
152
 
153
- return new WP_Error( 'venue-archive-page-not-found', $message, array( 'status' => 404 ) );
154
- }
155
 
156
- if ( $this->has_next( $args, $page, $only_with_upcoming ) ) {
157
- $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
158
- }
159
 
160
- if ( $this->has_previous( $page, $args, $only_with_upcoming ) ) {
161
- $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
162
- }
 
 
163
 
164
- $data['total'] = $total = $this->get_total( $args, $only_with_upcoming );
165
- $data['total_pages'] = $this->get_total_pages( $total, $posts_per_page );
 
 
 
 
 
 
 
 
 
 
 
166
 
167
  $response = new WP_REST_Response( $data );
168
 
105
  */
106
  $default_only_with_upcoming = apply_filters( 'tribe_rest_venue_default_only_with_upcoming', false );
107
 
108
+ $only_with_upcoming = isset( $request['only_with_upcoming'] ) ? tribe_is_truthy( $request['only_with_upcoming'] ) : $default_only_with_upcoming;
 
 
109
  unset( $args['only_with_upcoming'] );
110
 
111
  if ( ! empty( $args['s'] ) ) {
126
  }
127
  }
128
 
129
+ /** @var Tribe__Cache $cache */
130
+ $cache = tribe( 'cache' );
131
+ $cache_key = 'rest_get_venues_data_' . get_current_user_id() . '_' . wp_json_encode( $args );
 
132
 
133
+ $data = $cache->get( $cache_key, 'save_post' );
134
 
135
+ if ( ! is_array( $data ) ) {
136
+ $posts_per_page = Tribe__Utils__Array::get( $args, 'posts_per_page', $this->get_default_posts_per_page() );
137
+ $venues = isset( $venues ) ? $venues : tribe_get_venues( $only_with_upcoming, $posts_per_page, true, $args );
138
 
139
+ unset( $args['fields'] );
140
 
141
+ $ids = wp_list_pluck( $venues, 'ID' );
 
 
142
 
143
+ $data = array( 'venues' => array() );
144
 
145
+ foreach ( $ids as $venue_id ) {
146
+ $venue = $this->repository->get_venue_data( $venue_id );
147
 
148
+ if ( $venue && ! is_wp_error( $venue ) ) {
149
+ $data['venues'][] = $venue;
150
+ }
151
+ }
152
 
153
+ $data['rest_url'] = $this->get_current_rest_url( $args );
 
154
 
155
+ $page = Tribe__Utils__Array::get( $args, 'paged', 1 );
 
 
156
 
157
+ if ( empty( $venues ) && (int) $page > 1 ) {
158
+ $message = $this->messages->get_message( 'venue-archive-page-not-found' );
159
+
160
+ return new WP_Error( 'venue-archive-page-not-found', $message, array( 'status' => 404 ) );
161
+ }
162
 
163
+ if ( $this->has_next( $args, $page, $only_with_upcoming ) ) {
164
+ $data['next_rest_url'] = $this->get_next_rest_url( $data['rest_url'], $page );
165
+ }
166
+
167
+ if ( $this->has_previous( $page, $args, $only_with_upcoming ) ) {
168
+ $data['previous_rest_url'] = $this->get_previous_rest_url( $data['rest_url'], $page );;
169
+ }
170
+
171
+ $data['total'] = $total = $this->get_total( $args, $only_with_upcoming );
172
+ $data['total_pages'] = $this->get_total_pages( $total, $posts_per_page );
173
+
174
+ $cache->set( $cache_key, $data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
175
+ }
176
 
177
  $response = new WP_REST_Response( $data );
178
 
src/Tribe/REST/V1/Post_Repository.php CHANGED
@@ -60,6 +60,20 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
60
  * @since 4.6 Added $context param
61
  */
62
  public function get_event_data( $event_id, $context = '' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  $event = get_post( $event_id );
64
 
65
  if ( empty( $event ) || ! tribe_is_event( $event ) ) {
@@ -147,6 +161,8 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
147
  */
148
  $data = apply_filters( 'tribe_rest_event_data', $data, $event );
149
 
 
 
150
  return $data;
151
  }
152
 
@@ -161,6 +177,20 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
161
  * @since 4.6 Added $context param
162
  */
163
  public function get_venue_data( $event_or_venue_id, $context = '' ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  if ( tribe_is_event( $event_or_venue_id ) ) {
165
  $venue = get_post( tribe_get_venue_id( $event_or_venue_id ) );
166
  if ( empty( $venue ) ) {
@@ -248,6 +278,8 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
248
  */
249
  $data = apply_filters( 'tribe_rest_venue_data', $data, $venue, $event );
250
 
 
 
251
  return $data;
252
  }
253
 
@@ -348,7 +380,26 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
348
 
349
  $data = array();
350
 
 
 
 
351
  foreach ( $organizers as $organizer_id ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  $organizer = get_post( $organizer_id );
353
 
354
  if ( empty( $organizer ) ) {
@@ -405,6 +456,8 @@ class Tribe__Events__REST__V1__Post_Repository implements Tribe__Events__REST__I
405
  */
406
  $this_data = apply_filters( 'tribe_rest_organizer_data', array_filter( $this_data ), $organizer );
407
 
 
 
408
  $data[] = $this_data;
409
  }
410
 
60
  * @since 4.6 Added $context param
61
  */
62
  public function get_event_data( $event_id, $context = '' ) {
63
+ if ( $event_id instanceof WP_Post ) {
64
+ $event_id = $event_id->ID;
65
+ }
66
+
67
+ /** @var Tribe__Cache $cache */
68
+ $cache = tribe( 'cache' );
69
+ $cache_key = 'rest_get_event_data_' . get_current_user_id() . '_' . $event_id . '_' . $context;
70
+
71
+ $data = $cache->get( $cache_key, 'save_post' );
72
+
73
+ if ( is_array( $data ) ) {
74
+ return $data;
75
+ }
76
+
77
  $event = get_post( $event_id );
78
 
79
  if ( empty( $event ) || ! tribe_is_event( $event ) ) {
161
  */
162
  $data = apply_filters( 'tribe_rest_event_data', $data, $event );
163
 
164
+ $cache->set( $cache_key, $data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
165
+
166
  return $data;
167
  }
168
 
177
  * @since 4.6 Added $context param
178
  */
179
  public function get_venue_data( $event_or_venue_id, $context = '' ) {
180
+ if ( $event_or_venue_id instanceof WP_Post ) {
181
+ $event_or_venue_id = tribe_get_venue_id( $event_or_venue_id->ID );
182
+ }
183
+
184
+ /** @var Tribe__Cache $cache */
185
+ $cache = tribe( 'cache' );
186
+ $cache_key = 'rest_get_venue_data_' . get_current_user_id() . '_' . $event_or_venue_id . '_' . $context;
187
+
188
+ $data = $cache->get( $cache_key, 'save_post' );
189
+
190
+ if ( is_array( $data ) ) {
191
+ return $data;
192
+ }
193
+
194
  if ( tribe_is_event( $event_or_venue_id ) ) {
195
  $venue = get_post( tribe_get_venue_id( $event_or_venue_id ) );
196
  if ( empty( $venue ) ) {
278
  */
279
  $data = apply_filters( 'tribe_rest_venue_data', $data, $venue, $event );
280
 
281
+ $cache->set( $cache_key, $data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
282
+
283
  return $data;
284
  }
285
 
380
 
381
  $data = array();
382
 
383
+ /** @var Tribe__Cache $cache */
384
+ $cache = tribe( 'cache' );
385
+
386
  foreach ( $organizers as $organizer_id ) {
387
+ if ( is_object( $organizer_id ) ) {
388
+ $organizer = $organizer_id;
389
+
390
+ $organizer_id = $organizer->ID;
391
+ }
392
+
393
+ $cache_key = 'rest_get_organizer_data_' . get_current_user_id() . '_' . $organizer_id . '_' . $context;
394
+
395
+ $this_data = $cache->get( $cache_key, 'save_post' );
396
+
397
+ if ( is_array( $this_data ) ) {
398
+ $data[] = $this_data;
399
+
400
+ continue;
401
+ }
402
+
403
  $organizer = get_post( $organizer_id );
404
 
405
  if ( empty( $organizer ) ) {
456
  */
457
  $this_data = apply_filters( 'tribe_rest_organizer_data', array_filter( $this_data ), $organizer );
458
 
459
+ $cache->set( $cache_key, $this_data, Tribe__Cache::NON_PERSISTENT, 'save_post' );
460
+
461
  $data[] = $this_data;
462
  }
463
 
src/Tribe/Template/Month.php CHANGED
@@ -569,6 +569,15 @@ if ( ! class_exists( 'Tribe__Events__Template__Month' ) ) {
569
  $cached_events = $cache->$cache_getter( $cache_key, 'save_post' );
570
 
571
  if ( $cached_events !== false ) {
 
 
 
 
 
 
 
 
 
572
  $this->events_in_month = $cached_events;
573
  return;
574
  }
569
  $cached_events = $cache->$cache_getter( $cache_key, 'save_post' );
570
 
571
  if ( $cached_events !== false ) {
572
+ /**
573
+ * A simple utility to listen for when events have been successfully pulled from cache.
574
+ *
575
+ * @since 4.7.1
576
+ *
577
+ * @param array $cached_events The array of event data pulled from cache.
578
+ */
579
+ do_action( 'tribe_events_set_month_view_events_from_cache', $cached_events );
580
+
581
  $this->events_in_month = $cached_events;
582
  return;
583
  }
src/resources/js/tribe-events-ajax-calendar.js CHANGED
@@ -374,7 +374,8 @@
374
  if ( ts.ajax_running ) {
375
  return;
376
  }
377
- if ( $tribedate.val().length ) {
 
378
  if ( '0' !== ts.datepicker_format ) {
379
  ts.date = tribeDateFormat( $tribedate.bootstrapDatepicker( 'getDate' ), 'tribeMonthQuery' );
380
  }
@@ -382,6 +383,7 @@
382
  ts.date = $tribedate.val();
383
  }
384
  }
 
385
  else {
386
  if ( !dateMod ) {
387
  ts.date = td.cur_date.slice( 0, -3 );
374
  if ( ts.ajax_running ) {
375
  return;
376
  }
377
+
378
+ if ( $tribedate.length ) {
379
  if ( '0' !== ts.datepicker_format ) {
380
  ts.date = tribeDateFormat( $tribedate.bootstrapDatepicker( 'getDate' ), 'tribeMonthQuery' );
381
  }
383
  ts.date = $tribedate.val();
384
  }
385
  }
386
+
387
  else {
388
  if ( !dateMod ) {
389
  ts.date = td.cur_date.slice( 0, -3 );
src/resources/js/tribe-events-ajax-calendar.min.js CHANGED
@@ -1 +1 @@
1
- !function(m,v,g,f,h,y,x,j,k,w){g(v).ready(function(){var r=g("body"),e=g('[class^="tribe-events-nav-"] a'),t=y.get_url_param("tribe-bar-date"),i=g(v.getElementById("tribe-events")),a=g(v.getElementById("tribe-bar-date")),n=!1;if(!(i.length<1||r.hasClass("single-tribe_events"))){var s="/";void 0!==k.events_base?s=g(v.getElementById("tribe-events-header")).data("baseurl"):e.length&&(s=e.first().attr("href").slice(0,-8)),f.default_permalinks&&(s=s.split("?")[0]),g(".tribe-events-calendar").length&&g(v.getElementById("tribe-events-bar")).length&&t&&7<t.length&&(g(v.getElementById("tribe-bar-date-day")).val(t.slice(-3)),a.val(t.substring(0,7)));var l="yyyy-mm";if("0"!==x.datepicker_format){var o=parseInt(x.datepicker_format),_="m"+x.datepicker_format.toString();l=f.datepicker_formats.month[o],t&&(t.length<=7&&(t+="-01"),a.val(tribeDateFormat(t,_)))}if(f.datepicker_opts={format:l,minViewMode:"months",autoclose:!0},tribe_ev.fn.ensure_datepicker_i18n(),a.bootstrapDatepicker(f.datepicker_opts).on("changeDate",function(e){x.mdate=e.date;var t=e.date.getFullYear(),a=("0"+(e.date.getMonth()+1)).slice(-2);if(n=!0,x.date=t+"-"+a,j.no_bar()||j.live_ajax()&&j.pushstate){if(x.ajax_running||x.updating_picker)return;x.filter_cats?f.cur_url=g(v.getElementById("tribe-events-header")).data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1,y.pre_ajax(function(){c()})}}),b(!0),g(h).on("tribe_ev_resizeComplete",function(){b(!0)}),j.pushstate&&!j.map_view()){var d="action=tribe_calendar&eventDate="+g("#tribe-events-header").data("date");f.params.length&&(d=d+"&"+f.params),x.category&&(d=d+"&tribe_event_category="+x.category),y.is_featured()&&(d+="&featured=1"),history.replaceState({tribe_params:d},x.page_title,location.href),g(m).on("popstate",function(e){var t=e.originalEvent.state;t&&(x.do_string=!1,x.pushstate=!1,x.popping=!0,x.params=t.tribe_params,y.pre_ajax(function(){c()}),y.set_form(x.params))})}g(v.getElementById("tribe-events")).on("click",".tribe-events-nav-previous, .tribe-events-nav-next",function(e){if(e.preventDefault(),!x.ajax_running){var t,a=g(this).find("a");x.date=a.data("month"),x.mdate=x.date+"-01","0"!==x.datepicker_format?y.update_picker(tribeDateFormat(x.mdate,_)):y.update_picker(x.date),t=x.filter_cats?g("#tribe-events-header").data("baseurl"):a.attr("href"),f.default_permalinks&&(t=f.cur_url.split("?")[0]),i.is(".tribe-events-shortcode")&&f.default_permalinks&&(t=y.get_base_url()),y.update_base_url(t),x.popping=!1,y.pre_ajax(function(){c()})}}).on("click","td.tribe-events-thismonth a",function(e){e.stopPropagation()}).on("click",'[id*="tribe-events-daynum-"] a',function(e){r.is(".tribe-mobile")&&(e.preventDefault(),u(g(this).closest(".mobile-trigger")))}).on("click",".mobile-trigger",function(e){r.is(".tribe-mobile")&&(e.preventDefault(),e.stopPropagation(),u(g(this)))}),y.snap("#tribe-bar-form","body","#tribe-events-footer .tribe-events-nav-previous, #tribe-events-footer .tribe-events-nav-next"),g("form#tribe-bar-form").on("submit",function(e){!function(e){if("change_view"!=tribe_events_bar_action){if(e.preventDefault(),x.ajax_running)return;a.val().length?"0"!==x.datepicker_format?x.date=tribeDateFormat(a.bootstrapDatepicker("getDate"),"tribeMonthQuery"):x.date=a.val():n||(x.date=f.cur_date.slice(0,-3)),x.filter_cats?f.cur_url=g("#tribe-events-header").data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1,y.pre_ajax(function(){c()})}}(e)}),g(h).on("tribe_ev_runAjax",function(){c()}),g(h).on("tribe_ev_updatingRecurrence",function(){x.date=g("#tribe-events-header").data("date"),x.filter_cats?f.cur_url=g("#tribe-events-header").data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1}),w&&tec_debug.info("TEC Debug: tribe-events-ajax-calendar.js successfully loaded, Tribe Events Init finished"),w&&tec_debug.timeEnd("Tribe JS Init Timer")}function u(e){var t=e.data("tribejson");if(void 0!==e.attr("data-day")){t.date=e.attr("data-day");var a,r,i,n,s,l=e.parents(".tribe-events-calendar"),o=l.next(v.getElementById("tribe-mobile-container")),_=o.find(".tribe-mobile-day"),d=l.find(".mobile-trigger"),u='[data-day="'+t.date+'"]',p=_.filter(u);t.has_events=e.hasClass("tribe-events-has-events"),d.removeClass("mobile-active").filter(u).addClass("mobile-active"),_.hide(),p.length?p.show():(o.append(tribe_tmpl("tribe_tmpl_month_mobile_day_header",t)),a=t.date,r=g('.tribe-mobile-day[data-day="'+a+'"]'),i=g('.tribe-events-calendar td[data-day="'+a+'"]'),n=i.find(".tribe-events-viewmore"),(s=i.find(".type-tribe_events")).length&&(s.each(function(){var e=g(this);if(e.tribe_has_attr("data-tribejson")){var t=e.data("tribejson");if("string"==typeof t)try{t=JSON.parse(t)}catch(e){t={}}t&&"eventId"in t&&r.append(tribe_tmpl("tribe_tmpl_month_mobile",t))}}),n.length&&r.append(n.clone())))}}function p(){i.find(".tribe-events-calendar th").each(function(){var e=g(this),t=e.attr("data-day-abbr"),a=e.attr("title");r.is(".tribe-mobile")?e.text(t):e.text(a)})}function b(e){r.is(".tribe-mobile")?(p(),function(){var e=i.find(".mobile-active"),t=i.find(".mobile-trigger"),a=i.find(v.getElementById("tribe-events-content")).find(".tribe-events-calendar");e.length||(e=i.find(".tribe-events-present"));g(v.getElementById("tribe-mobile-container")).length||g('<div id="tribe-mobile-container" />').insertAfter(a),e.length&&e.is(".tribe-events-thismonth")?u(e):u(t.filter(".tribe-events-thismonth").first())}()):e&&p()}function c(){y.invalid_date(x.date)||(g(".tribe-events-calendar").tribe_spin(),x.pushcount=0,x.ajax_running=!0,x.popping||(x.params={action:"tribe_calendar",eventDate:x.date,featured:y.is_featured()},x.url_params={},x.category&&(x.params.tribe_event_category=x.category,x.url_params.tribe_events_cat=x.category),f.default_permalinks&&(i.is(".tribe-events-shortcode")||(x.url_params.hasOwnProperty("post_type")||(x.url_params.post_type=k.events_post_type),x.url_params.hasOwnProperty("eventDisplay")||(x.url_params.eventDisplay=x.view))),g(h).trigger("tribe_ev_serializeBar"),x.params=g.param(x.params),x.url_params=g.param(x.url_params),g(h).trigger("tribe_ev_collectParams"),0<x.pushcount||x.filters||f.default_permalinks||x.category?(x.do_string=!0,x.pushstate=!1):(x.do_string=!1,x.pushstate=!0)),j.pushstate&&!x.filter_cats?(w&&tec_debug.time("Month View Ajax Timer"),g(h).trigger("tribe_ev_ajaxStart").trigger("tribe_ev_monthView_AjaxStart"),g.post(TribeCalendar.ajaxurl,x.params,function(e){if(x.initial_load=!1,y.enable_inputs("#tribe_events_filters_form","input, select"),e.success){x.ajax_running=!1,f.ajax_response={total_count:"",view:e.view,max_pages:"",tribe_paged:"",timestamp:(new Date).getTime()},w&&0===e.html&&tec_debug.warn("Month view ajax had an error in the query and returned 0.");var t="";t=g.isFunction(g.fn.parseHTML)?g.parseHTML(e.html):e.html,f.cur_url=y.get_base_url(),g("#tribe-events-content").replaceWith(t),b(!0),x.page_title=g("#tribe-events-header").data("title"),x.view_title=g("#tribe-events-header").data("viewtitle"),v.title=x.page_title,g(".tribe-events-page-title").html(x.view_title),(g("#tribe-events.tribe-events-shortcode").length||x.do_string)&&(f.default_permalinks?f.cur_url=f.cur_url+"&"+x.url_params:(-1!==f.cur_url.indexOf("?")&&(f.cur_url=f.cur_url.split("?")[0]),f.cur_url=f.cur_url+"?"+x.url_params)),x.do_string&&history.pushState({tribe_date:x.date,tribe_params:x.params},x.page_title,f.cur_url),x.pushstate&&history.pushState({tribe_date:x.date,tribe_params:x.params},x.page_title,f.cur_url),g(h).trigger("tribe_ev_ajaxSuccess").trigger("tribe_ev_monthView_ajaxSuccess"),g(h).trigger("ajax-success.tribe").trigger("tribe_ev_monthView_ajaxSuccess"),w&&tec_debug.timeEnd("Month View Ajax Timer")}})):x.url_params.length?m.location=f.cur_url+"?"+x.url_params:m.location=f.cur_url)}})}(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_js_config,tribe_debug);
1
+ !function(m,v,g,f,h,y,x,j,k,w){g(v).ready(function(){var r=g("body"),e=g('[class^="tribe-events-nav-"] a'),t=y.get_url_param("tribe-bar-date"),i=g(v.getElementById("tribe-events")),a=g(v.getElementById("tribe-bar-date")),n=!1;if(!(i.length<1||r.hasClass("single-tribe_events"))){var s="/";void 0!==k.events_base?s=g(v.getElementById("tribe-events-header")).data("baseurl"):e.length&&(s=e.first().attr("href").slice(0,-8)),f.default_permalinks&&(s=s.split("?")[0]),g(".tribe-events-calendar").length&&g(v.getElementById("tribe-events-bar")).length&&t&&7<t.length&&(g(v.getElementById("tribe-bar-date-day")).val(t.slice(-3)),a.val(t.substring(0,7)));var l="yyyy-mm";if("0"!==x.datepicker_format){var o=parseInt(x.datepicker_format),_="m"+x.datepicker_format.toString();l=f.datepicker_formats.month[o],t&&(t.length<=7&&(t+="-01"),a.val(tribeDateFormat(t,_)))}if(f.datepicker_opts={format:l,minViewMode:"months",autoclose:!0},tribe_ev.fn.ensure_datepicker_i18n(),a.bootstrapDatepicker(f.datepicker_opts).on("changeDate",function(e){x.mdate=e.date;var t=e.date.getFullYear(),a=("0"+(e.date.getMonth()+1)).slice(-2);if(n=!0,x.date=t+"-"+a,j.no_bar()||j.live_ajax()&&j.pushstate){if(x.ajax_running||x.updating_picker)return;x.filter_cats?f.cur_url=g(v.getElementById("tribe-events-header")).data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1,y.pre_ajax(function(){c()})}}),b(!0),g(h).on("tribe_ev_resizeComplete",function(){b(!0)}),j.pushstate&&!j.map_view()){var d="action=tribe_calendar&eventDate="+g("#tribe-events-header").data("date");f.params.length&&(d=d+"&"+f.params),x.category&&(d=d+"&tribe_event_category="+x.category),y.is_featured()&&(d+="&featured=1"),history.replaceState({tribe_params:d},x.page_title,location.href),g(m).on("popstate",function(e){var t=e.originalEvent.state;t&&(x.do_string=!1,x.pushstate=!1,x.popping=!0,x.params=t.tribe_params,y.pre_ajax(function(){c()}),y.set_form(x.params))})}g(v.getElementById("tribe-events")).on("click",".tribe-events-nav-previous, .tribe-events-nav-next",function(e){if(e.preventDefault(),!x.ajax_running){var t,a=g(this).find("a");x.date=a.data("month"),x.mdate=x.date+"-01","0"!==x.datepicker_format?y.update_picker(tribeDateFormat(x.mdate,_)):y.update_picker(x.date),t=x.filter_cats?g("#tribe-events-header").data("baseurl"):a.attr("href"),f.default_permalinks&&(t=f.cur_url.split("?")[0]),i.is(".tribe-events-shortcode")&&f.default_permalinks&&(t=y.get_base_url()),y.update_base_url(t),x.popping=!1,y.pre_ajax(function(){c()})}}).on("click","td.tribe-events-thismonth a",function(e){e.stopPropagation()}).on("click",'[id*="tribe-events-daynum-"] a',function(e){r.is(".tribe-mobile")&&(e.preventDefault(),u(g(this).closest(".mobile-trigger")))}).on("click",".mobile-trigger",function(e){r.is(".tribe-mobile")&&(e.preventDefault(),e.stopPropagation(),u(g(this)))}),y.snap("#tribe-bar-form","body","#tribe-events-footer .tribe-events-nav-previous, #tribe-events-footer .tribe-events-nav-next"),g("form#tribe-bar-form").on("submit",function(e){!function(e){if("change_view"!=tribe_events_bar_action){if(e.preventDefault(),x.ajax_running)return;a.length?"0"!==x.datepicker_format?x.date=tribeDateFormat(a.bootstrapDatepicker("getDate"),"tribeMonthQuery"):x.date=a.val():n||(x.date=f.cur_date.slice(0,-3)),x.filter_cats?f.cur_url=g("#tribe-events-header").data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1,y.pre_ajax(function(){c()})}}(e)}),g(h).on("tribe_ev_runAjax",function(){c()}),g(h).on("tribe_ev_updatingRecurrence",function(){x.date=g("#tribe-events-header").data("date"),x.filter_cats?f.cur_url=g("#tribe-events-header").data("baseurl")+x.date+"/":f.default_permalinks?f.cur_url=s:f.cur_url=s+x.date+"/",x.popping=!1}),w&&tec_debug.info("TEC Debug: tribe-events-ajax-calendar.js successfully loaded, Tribe Events Init finished"),w&&tec_debug.timeEnd("Tribe JS Init Timer")}function u(e){var t=e.data("tribejson");if(void 0!==e.attr("data-day")){t.date=e.attr("data-day");var a,r,i,n,s,l=e.parents(".tribe-events-calendar"),o=l.next(v.getElementById("tribe-mobile-container")),_=o.find(".tribe-mobile-day"),d=l.find(".mobile-trigger"),u='[data-day="'+t.date+'"]',p=_.filter(u);t.has_events=e.hasClass("tribe-events-has-events"),d.removeClass("mobile-active").filter(u).addClass("mobile-active"),_.hide(),p.length?p.show():(o.append(tribe_tmpl("tribe_tmpl_month_mobile_day_header",t)),a=t.date,r=g('.tribe-mobile-day[data-day="'+a+'"]'),i=g('.tribe-events-calendar td[data-day="'+a+'"]'),n=i.find(".tribe-events-viewmore"),(s=i.find(".type-tribe_events")).length&&(s.each(function(){var e=g(this);if(e.tribe_has_attr("data-tribejson")){var t=e.data("tribejson");if("string"==typeof t)try{t=JSON.parse(t)}catch(e){t={}}t&&"eventId"in t&&r.append(tribe_tmpl("tribe_tmpl_month_mobile",t))}}),n.length&&r.append(n.clone())))}}function p(){i.find(".tribe-events-calendar th").each(function(){var e=g(this),t=e.attr("data-day-abbr"),a=e.attr("title");r.is(".tribe-mobile")?e.text(t):e.text(a)})}function b(e){r.is(".tribe-mobile")?(p(),function(){var e=i.find(".mobile-active"),t=i.find(".mobile-trigger"),a=i.find(v.getElementById("tribe-events-content")).find(".tribe-events-calendar");e.length||(e=i.find(".tribe-events-present"));g(v.getElementById("tribe-mobile-container")).length||g('<div id="tribe-mobile-container" />').insertAfter(a),e.length&&e.is(".tribe-events-thismonth")?u(e):u(t.filter(".tribe-events-thismonth").first())}()):e&&p()}function c(){y.invalid_date(x.date)||(g(".tribe-events-calendar").tribe_spin(),x.pushcount=0,x.ajax_running=!0,x.popping||(x.params={action:"tribe_calendar",eventDate:x.date,featured:y.is_featured()},x.url_params={},x.category&&(x.params.tribe_event_category=x.category,x.url_params.tribe_events_cat=x.category),f.default_permalinks&&(i.is(".tribe-events-shortcode")||(x.url_params.hasOwnProperty("post_type")||(x.url_params.post_type=k.events_post_type),x.url_params.hasOwnProperty("eventDisplay")||(x.url_params.eventDisplay=x.view))),g(h).trigger("tribe_ev_serializeBar"),x.params=g.param(x.params),x.url_params=g.param(x.url_params),g(h).trigger("tribe_ev_collectParams"),0<x.pushcount||x.filters||f.default_permalinks||x.category?(x.do_string=!0,x.pushstate=!1):(x.do_string=!1,x.pushstate=!0)),j.pushstate&&!x.filter_cats?(w&&tec_debug.time("Month View Ajax Timer"),g(h).trigger("tribe_ev_ajaxStart").trigger("tribe_ev_monthView_AjaxStart"),g.post(TribeCalendar.ajaxurl,x.params,function(e){if(x.initial_load=!1,y.enable_inputs("#tribe_events_filters_form","input, select"),e.success){x.ajax_running=!1,f.ajax_response={total_count:"",view:e.view,max_pages:"",tribe_paged:"",timestamp:(new Date).getTime()},w&&0===e.html&&tec_debug.warn("Month view ajax had an error in the query and returned 0.");var t="";t=g.isFunction(g.fn.parseHTML)?g.parseHTML(e.html):e.html,f.cur_url=y.get_base_url(),g("#tribe-events-content").replaceWith(t),b(!0),x.page_title=g("#tribe-events-header").data("title"),x.view_title=g("#tribe-events-header").data("viewtitle"),v.title=x.page_title,g(".tribe-events-page-title").html(x.view_title),(g("#tribe-events.tribe-events-shortcode").length||x.do_string)&&(f.default_permalinks?f.cur_url=f.cur_url+"&"+x.url_params:(-1!==f.cur_url.indexOf("?")&&(f.cur_url=f.cur_url.split("?")[0]),f.cur_url=f.cur_url+"?"+x.url_params)),x.do_string&&history.pushState({tribe_date:x.date,tribe_params:x.params},x.page_title,f.cur_url),x.pushstate&&history.pushState({tribe_date:x.date,tribe_params:x.params},x.page_title,f.cur_url),g(h).trigger("tribe_ev_ajaxSuccess").trigger("tribe_ev_monthView_ajaxSuccess"),g(h).trigger("ajax-success.tribe").trigger("tribe_ev_monthView_ajaxSuccess"),w&&tec_debug.timeEnd("Month View Ajax Timer")}})):x.url_params.length?m.location=f.cur_url+"?"+x.url_params:m.location=f.cur_url)}})}(window,document,jQuery,tribe_ev.data,tribe_ev.events,tribe_ev.fn,tribe_ev.state,tribe_ev.tests,tribe_js_config,tribe_debug);
src/views/month/mobile.php CHANGED
@@ -6,7 +6,7 @@
6
  *
7
  * [your-theme]/tribe-events/month/mobile.php
8
  *
9
- * @version 4.6.21
10
  */
11
  ?>
12
 
@@ -17,7 +17,7 @@
17
  </script>
18
 
19
  <script type="text/html" id="tribe_tmpl_month_mobile">
20
- <div class="frhhhhhhhr tribe-events-mobile tribe-clearfix tribe-events-mobile-event-[[=eventId]][[ if(categoryClasses.length) { ]] [[= categoryClasses]][[ } ]]">
21
  <h4 class="summary">
22
  <a class="url" href="[[=permalink]]" title="[[=title]]" rel="bookmark">[[=raw title]]<\/a>
23
  <\/h4>
6
  *
7
  * [your-theme]/tribe-events/month/mobile.php
8
  *
9
+ * @version 4.7.1
10
  */
11
  ?>
12
 
17
  </script>
18
 
19
  <script type="text/html" id="tribe_tmpl_month_mobile">
20
+ <div class="tribe-events-mobile tribe-clearfix tribe-events-mobile-event-[[=eventId]][[ if(categoryClasses.length) { ]] [[= categoryClasses]][[ } ]]">
21
  <h4 class="summary">
22
  <a class="url" href="[[=permalink]]" title="[[=title]]" rel="bookmark">[[=raw title]]<\/a>
23
  <\/h4>
the-events-calendar.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: The Events Calendar
4
  Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
- Version: 4.7.0.1
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: the-events-calendar
2
  /*
3
  Plugin Name: The Events Calendar
4
  Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
+ Version: 4.7.1
6
  Author: Modern Tribe, Inc.
7
  Author URI: http://m.tri.be/1x
8
  Text Domain: the-events-calendar