The Events Calendar - Version 5.2.1

Version Description

= [5.0] =

Please see the changelog for the complete list of changes in this release. Previous versions of The Events Calendar are not cross-compatible with 5.X add-ons. Remember to always make a backup of your database and files before updating!

Download this release

Release Info

Developer bordoni
Plugin Icon The Events Calendar
Version 5.2.1
Comparing to
See all releases

Code changes from version 5.2.0 to 5.2.1

Files changed (87) hide show
  1. common/lang/tribe-common-bg_BG.mo +0 -0
  2. common/lang/tribe-common-cs_CZ.mo +0 -0
  3. common/lang/tribe-common.pot +12 -12
  4. common/src/Tribe/Admin/Activation_Page.php +22 -0
  5. common/src/Tribe/Ajax/Dropdown.php +14 -8
  6. common/src/Tribe/Assets.php +12 -0
  7. common/src/Tribe/Log/Canonical_Formatter.php +78 -5
  8. common/src/Tribe/Log/Service_Provider.php +1 -1
  9. common/src/Tribe/Main.php +2 -1
  10. common/src/Tribe/Service_Providers/Widgets.php +77 -0
  11. common/src/Tribe/Widget/Manager.php +97 -0
  12. common/src/Tribe/Widget/Widget_Abstract.php +314 -0
  13. common/src/Tribe/Widget/Widget_Interface.php +207 -0
  14. common/src/admin-views/tribe-options-display.php +1 -1
  15. common/src/functions/utils.php +44 -13
  16. common/src/resources/css/tribe-common-admin.min.css +1 -1
  17. common/src/resources/images/header/welcome-desktop-et.jpg +0 -0
  18. common/src/resources/images/header/welcome-desktop-etplus.jpg +0 -0
  19. common/src/resources/images/header/welcome-mobile-et.jpg +0 -0
  20. common/src/resources/images/header/welcome-mobile-etplus.jpg +0 -0
  21. common/src/resources/images/icons/horns-white.svg +1 -0
  22. common/src/resources/images/mascot.png +0 -0
  23. common/src/resources/images/welcome/calendar.jpg +0 -0
  24. common/src/resources/images/welcome/et-plus-upsell.jpg +0 -0
  25. common/src/resources/images/welcome/extension-library.jpg +0 -0
  26. common/src/resources/images/welcome/guide-book-green.jpg +0 -0
  27. common/src/resources/images/welcome/up-sell.jpg +0 -0
  28. common/vendor/autoload.php +1 -1
  29. common/vendor/autoload_52.php +1 -1
  30. common/vendor/composer/autoload_classmap.php +4 -0
  31. common/vendor/composer/autoload_real.php +4 -4
  32. common/vendor/composer/autoload_real_52.php +3 -3
  33. common/vendor/composer/autoload_static.php +9 -5
  34. lang/the-events-calendar-ar.mo +0 -0
  35. lang/the-events-calendar-de_DE.mo +0 -0
  36. lang/the-events-calendar-es_ES.mo +0 -0
  37. lang/the-events-calendar-hr.mo +0 -0
  38. lang/the-events-calendar-nl_NL.mo +0 -0
  39. lang/the-events-calendar-pl_PL.mo +0 -0
  40. lang/the-events-calendar-ru_RU.mo +0 -0
  41. lang/the-events-calendar-tr_TR.mo +0 -0
  42. lang/the-events-calendar-zh_TW.mo +0 -0
  43. lang/the-events-calendar.pot +222 -204
  44. readme.txt +14 -2
  45. src/Tribe/Aggregator/Record/Queue_Processor.php +34 -2
  46. src/Tribe/Assets.php +0 -13
  47. src/Tribe/Integrations/WPML/Views/V2/Filters.php +165 -0
  48. src/Tribe/Integrations/WPML/WPML.php +14 -0
  49. src/Tribe/Integrations/X_Theme/X_Theme.php +1 -1
  50. src/Tribe/Main.php +2 -1
  51. src/Tribe/Views/V2/Assets.php +43 -0
  52. src/Tribe/Views/V2/Hooks.php +3 -3
  53. src/Tribe/Views/V2/Rest_Endpoint.php +56 -10
  54. src/Tribe/Views/V2/Template.php +9 -1
  55. src/Tribe/Views/V2/Template_Bootstrap.php +19 -2
  56. src/Tribe/Views/V2/View.php +35 -1
  57. src/Tribe/Views/V2/View_Interface.php +9 -0
  58. src/Tribe/Views/V2/Views/Latest_Past_View.php +6 -5
  59. src/Tribe/Views/V2/Views/Traits/iCal_Data.php +6 -2
  60. src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php +88 -0
  61. src/Tribe/Views/V2/Widgets/Service_Provider.php +91 -0
  62. src/Tribe/Views/V2/Widgets/Widget_Abstract.php +141 -0
  63. src/Tribe/Views/V2/Widgets/Widget_List.php +105 -0
  64. src/Tribe/iCal.php +10 -1
  65. src/functions/views/provider.php +15 -0
  66. src/resources/css/widgets-full.min.css +1 -0
  67. src/resources/css/widgets-skeleton.min.css +1 -0
  68. src/resources/js/views/manager.js +1 -1
  69. src/views/v2/day.php +3 -1
  70. src/views/v2/list.php +3 -1
  71. src/views/v2/month.php +2 -0
  72. src/views/v2/widgets/events-list.php +120 -0
  73. src/views/v2/widgets/events-list/event.php +46 -0
  74. src/views/v2/widgets/events-list/event/cost.php +28 -0
  75. src/views/v2/widgets/events-list/event/date-tag.php +42 -0
  76. src/views/v2/widgets/events-list/event/date.php +32 -0
  77. src/views/v2/widgets/events-list/event/date/featured.php +31 -0
  78. src/views/v2/widgets/events-list/event/organizer.php +19 -0
  79. src/views/v2/widgets/events-list/event/title.php +31 -0
  80. src/views/v2/widgets/events-list/event/venue.php +91 -0
  81. src/views/v2/widgets/events-list/view-more.php +30 -0
  82. src/views/v2/widgets/widget-list.php +9 -0
  83. the-events-calendar.php +1 -1
  84. vendor/autoload.php +1 -1
  85. vendor/composer/autoload_classmap.php +5 -0
  86. vendor/composer/autoload_real.php +4 -4
  87. vendor/composer/autoload_static.php +9 -4
common/lang/tribe-common-bg_BG.mo CHANGED
Binary file
common/lang/tribe-common-cs_CZ.mo CHANGED
Binary file
common/lang/tribe-common.pot CHANGED
@@ -2,29 +2,29 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Tribe Common 4.12.7\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2020-08-20 16:27:52+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-08-20 16:27\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
- #: src/Tribe/Admin/Activation_Page.php:84
16
  msgid "Go to plugins page"
17
  msgstr ""
18
 
19
- #: src/Tribe/Admin/Activation_Page.php:84
20
  msgid "Return to Plugins page"
21
  msgstr ""
22
 
23
- #: src/Tribe/Admin/Activation_Page.php:92
24
  msgid "Go to WordPress Updates page"
25
  msgstr ""
26
 
27
- #: src/Tribe/Admin/Activation_Page.php:92
28
  msgid "Return to WordPress Updates"
29
  msgstr ""
30
 
@@ -223,15 +223,15 @@ msgstr ""
223
  msgid "Cannot look for Terms without a taxonomy"
224
  msgstr ""
225
 
226
- #: src/Tribe/Ajax/Dropdown.php:180
227
  msgid "Missing data source for this dropdown"
228
  msgstr ""
229
 
230
- #: src/Tribe/Ajax/Dropdown.php:193
231
  msgid "Empty data set for this dropdown"
232
  msgstr ""
233
 
234
- #: src/Tribe/Ajax/Dropdown.php:243
235
  msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
236
  msgstr ""
237
 
@@ -2510,11 +2510,11 @@ msgstr ""
2510
  msgid "Invalid Key"
2511
  msgstr ""
2512
 
2513
- #: src/Tribe/Support.php:371 src/Tribe/Support.php:397
2514
  msgid "Permission Error"
2515
  msgstr ""
2516
 
2517
- #: src/Tribe/Support.php:385
2518
  msgid "Unique System Info Key Generated"
2519
  msgstr ""
2520
 
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Tribe Common 4.12.11\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2020-10-14 15:50:53+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2020-10-14 15:50\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
+ #: src/Tribe/Admin/Activation_Page.php:106
16
  msgid "Go to plugins page"
17
  msgstr ""
18
 
19
+ #: src/Tribe/Admin/Activation_Page.php:106
20
  msgid "Return to Plugins page"
21
  msgstr ""
22
 
23
+ #: src/Tribe/Admin/Activation_Page.php:114
24
  msgid "Go to WordPress Updates page"
25
  msgstr ""
26
 
27
+ #: src/Tribe/Admin/Activation_Page.php:114
28
  msgid "Return to WordPress Updates"
29
  msgstr ""
30
 
223
  msgid "Cannot look for Terms without a taxonomy"
224
  msgstr ""
225
 
226
+ #: src/Tribe/Ajax/Dropdown.php:186
227
  msgid "Missing data source for this dropdown"
228
  msgstr ""
229
 
230
+ #: src/Tribe/Ajax/Dropdown.php:199
231
  msgid "Empty data set for this dropdown"
232
  msgstr ""
233
 
234
+ #: src/Tribe/Ajax/Dropdown.php:249
235
  msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
236
  msgstr ""
237
 
2510
  msgid "Invalid Key"
2511
  msgstr ""
2512
 
2513
+ #: src/Tribe/Support.php:376 src/Tribe/Support.php:402
2514
  msgid "Permission Error"
2515
  msgstr ""
2516
 
2517
+ #: src/Tribe/Support.php:390
2518
  msgid "Unique System Info Key Generated"
2519
  msgstr ""
2520
 
common/src/Tribe/Admin/Activation_Page.php CHANGED
@@ -43,6 +43,28 @@ class Tribe__Admin__Activation_Page {
43
  $this->hooks();
44
  }
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * Listen for opportunities to show update and welcome splash pages.
48
  */
43
  $this->hooks();
44
  }
45
 
46
+ /**
47
+ * Determines if we are currently on the Welcome page.
48
+ *
49
+ * @since 4.12.11
50
+ *
51
+ * @return bool
52
+ */
53
+ public function is_welcome_page() {
54
+ return isset( $_GET[ $this->welcome_slug ] );
55
+ }
56
+
57
+ /**
58
+ * Determines if we are currently on the update page.
59
+ *
60
+ * @since 4.12.11
61
+ *
62
+ * @return bool
63
+ */
64
+ public function is_update_page() {
65
+ return isset( $_GET[ $this->update_slug ] );
66
+ }
67
+
68
  /**
69
  * Listen for opportunities to show update and welcome splash pages.
70
  */
common/src/Tribe/Ajax/Dropdown.php CHANGED
@@ -24,15 +24,15 @@ class Tribe__Ajax__Dropdown {
24
  *
25
  * @since 4.6
26
  *
27
- * @param string $search Search string from Select2
28
- * @param int $page When we deal with pagination
29
- * @param array $args Which arguments we got from the Template
30
- * @param string $source What source it is
31
  *
32
  * @return array
33
  */
34
  public function search_terms( $search, $page, $args, $source ) {
35
- $data = array();
36
 
37
  if ( empty( $args['taxonomy'] ) ) {
38
  $this->error( esc_attr__( 'Cannot look for Terms without a taxonomy', 'tribe-common' ) );
@@ -43,7 +43,13 @@ class Tribe__Ajax__Dropdown {
43
  $args['hide_empty'] = isset( $args['hide_empty'] ) ? $args['hide_empty'] : false;
44
 
45
  if ( ! empty( $search ) ) {
46
- $args['search'] = $search;
 
 
 
 
 
 
47
  }
48
 
49
  // On versions older than 4.5 taxonomy goes as an Param
@@ -53,7 +59,7 @@ class Tribe__Ajax__Dropdown {
53
  $terms = get_terms( $args );
54
  }
55
 
56
- $results = array();
57
 
58
  // Respect the parent/child_of argument if set
59
  $parent = ! empty( $args['child_of'] ) ? (int) $args['child_of'] : 0;
@@ -67,7 +73,7 @@ class Tribe__Ajax__Dropdown {
67
  // Prep for Select2
68
  $term->id = $term->term_id;
69
  $term->text = $term->name;
70
- $term->breadcrumbs = array();
71
 
72
  if ( 0 !== (int) $term->parent ) {
73
  $ancestors = get_ancestors( $term->id, $term->taxonomy );
24
  *
25
  * @since 4.6
26
  *
27
+ * @param string|array $search Search string from Select2
28
+ * @param int $page When we deal with pagination
29
+ * @param array $args Which arguments we got from the Template
30
+ * @param string $source What source it is
31
  *
32
  * @return array
33
  */
34
  public function search_terms( $search, $page, $args, $source ) {
35
+ $data = [];
36
 
37
  if ( empty( $args['taxonomy'] ) ) {
38
  $this->error( esc_attr__( 'Cannot look for Terms without a taxonomy', 'tribe-common' ) );
43
  $args['hide_empty'] = isset( $args['hide_empty'] ) ? $args['hide_empty'] : false;
44
 
45
  if ( ! empty( $search ) ) {
46
+ if ( ! is_array( $search ) ) {
47
+ // For older pieces that still use Select2 format.
48
+ $args['search'] = $search;
49
+ } else {
50
+ // Newer SelectWoo uses a new search format.
51
+ $args['search'] = $search['term'];
52
+ }
53
  }
54
 
55
  // On versions older than 4.5 taxonomy goes as an Param
59
  $terms = get_terms( $args );
60
  }
61
 
62
+ $results = [];
63
 
64
  // Respect the parent/child_of argument if set
65
  $parent = ! empty( $args['child_of'] ) ? (int) $args['child_of'] : 0;
73
  // Prep for Select2
74
  $term->id = $term->term_id;
75
  $term->text = $term->name;
76
+ $term->breadcrumbs = [];
77
 
78
  if ( 0 !== (int) $term->parent ) {
79
  $ancestors = get_ancestors( $term->id, $term->taxonomy );
common/src/Tribe/Assets.php CHANGED
@@ -255,6 +255,11 @@ class Tribe__Assets {
255
  $this->localized[] = $localize->name;
256
  }
257
  }
 
 
 
 
 
258
  } else {
259
  wp_enqueue_style( $asset->slug );
260
  }
@@ -443,6 +448,8 @@ class Tribe__Assets {
443
  // Bigger Variables at the end.
444
  'localize' => [],
445
  'conditionals' => [],
 
 
446
  ];
447
 
448
  // Merge Arguments.
@@ -531,6 +538,11 @@ class Tribe__Assets {
531
  $asset->groups = array_unique( $asset->groups );
532
  }
533
 
 
 
 
 
 
534
  /**
535
  * Filter an Asset loading variables.
536
  *
255
  $this->localized[] = $localize->name;
256
  }
257
  }
258
+
259
+ // If available, load the script translations.
260
+ if ( isset( $asset->translations['domain'], $asset->translations['path'] ) && function_exists( 'wp_set_script_translations' ) ) {
261
+ wp_set_script_translations( $asset->slug, $asset->translations['domain'], $asset->translations['path'] );
262
+ }
263
  } else {
264
  wp_enqueue_style( $asset->slug );
265
  }
448
  // Bigger Variables at the end.
449
  'localize' => [],
450
  'conditionals' => [],
451
+ // Used to handle Translations handled in the JavaScript side of the Assets.
452
+ 'translations' => [],
453
  ];
454
 
455
  // Merge Arguments.
538
  $asset->groups = array_unique( $asset->groups );
539
  }
540
 
541
+ if ( isset( $arguments['translations']['domain'], $arguments['translations']['path'] ) ) {
542
+ $asset->translastions['domain'] = $arguments['translations']['domain'];
543
+ $asset->translastions['path'] = $arguments['translations']['path'];
544
+ }
545
+
546
  /**
547
  * Filter an Asset loading variables.
548
  *
common/src/Tribe/Log/Canonical_Formatter.php CHANGED
@@ -11,9 +11,37 @@
11
  namespace Tribe\Log;
12
 
13
 
 
14
  use Monolog\Formatter\LineFormatter;
15
 
16
- class Canonical_Formatter extends LineFormatter {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
  /**
19
  * Formats a log record.
@@ -29,14 +57,59 @@ class Canonical_Formatter extends LineFormatter {
29
 
30
  if ( $has_context ) {
31
  $record['message'] = $this->format_record_message( $record );
32
-
33
- $this->format = 'tribe-canonical-line channel=%channel% %message%';
34
  } else {
35
  // Fall-back on a standard format if the message does not have a context.
36
- $this->format = 'tribe.%channel%.%level_name%: %message%';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
 
39
- return parent::format( $record );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
 
42
  /**
11
  namespace Tribe\Log;
12
 
13
 
14
+ use Monolog\Formatter\FormatterInterface;
15
  use Monolog\Formatter\LineFormatter;
16
 
17
+ class Canonical_Formatter implements FormatterInterface {
18
+ /**
19
+ * @since TBD
20
+ *
21
+ * @var string Our standard format for the Monolog LineFormatter.
22
+ */
23
+ protected $standard_format = 'tribe.%channel%.%level_name%: %message%';
24
+
25
+ /**
26
+ * @since TBD
27
+ *
28
+ * @var string Our standard format Monolog LineFormatter.
29
+ */
30
+ protected $standard_formatter;
31
+
32
+ /**
33
+ * @since TBD
34
+ *
35
+ * @var string Our context-aware format for the Monolog LineFormatter.
36
+ */
37
+ protected $context_format = 'tribe-canonical-line channel=%channel% %message%';
38
+
39
+ /**
40
+ * @since TBD
41
+ *
42
+ * @var string Our context-aware Monolog LineFormatter.
43
+ */
44
+ protected $context_formatter;
45
 
46
  /**
47
  * Formats a log record.
57
 
58
  if ( $has_context ) {
59
  $record['message'] = $this->format_record_message( $record );
60
+ $formatter = $this->get_context_formatter();
 
61
  } else {
62
  // Fall-back on a standard format if the message does not have a context.
63
+ $formatter = $this->get_standard_formatter();
64
+ }
65
+
66
+ return $formatter->format( $record );
67
+ }
68
+
69
+ /**
70
+ * Gets a LineFormatter whose format is context aware.
71
+ *
72
+ * @since TBD
73
+ *
74
+ * @return LineFormatter
75
+ */
76
+ public function get_context_formatter() {
77
+ if ( empty( $this->context_formatter ) ) {
78
+ $this->context_formatter = new LineFormatter( $this->context_format );
79
+ }
80
+
81
+ return $this->context_formatter;
82
+ }
83
+
84
+ /**
85
+ * Gets a LineFormatter whose format is our standard logging format.
86
+ *
87
+ * @since TBD
88
+ *
89
+ * @return LineFormatter
90
+ */
91
+ public function get_standard_formatter() {
92
+ if ( empty( $this->standard_formatter ) ) {
93
+ $this->standard_formatter = new LineFormatter( $this->standard_format );
94
  }
95
 
96
+ return $this->standard_formatter;
97
+ }
98
+
99
+ /**
100
+ * Formats a set of log records.
101
+ *
102
+ * This simply hands off the work of formatting Batches to the LineFormatter.
103
+ *
104
+ * @since TBD
105
+ *
106
+ * @param array $records A set of records to format
107
+ * @return mixed The formatted set of records
108
+ */
109
+ public function formatBatch( array $records ) {
110
+ $line_formatter = new LineFormatter();
111
+
112
+ return $line_formatter->formatBatch( $records );
113
  }
114
 
115
  /**
common/src/Tribe/Log/Service_Provider.php CHANGED
@@ -70,7 +70,7 @@ class Service_Provider extends \tad_DI52_ServiceProvider {
70
  */
71
  $level_threshold = apply_filters( 'tribe_log_level', Logger::WARNING );
72
 
73
- $error_log_handler = new ErrorLogHandler( null, $level_threshold );
74
 
75
  /**
76
  * Filters whether to use canonical format for the logs or not.
70
  */
71
  $level_threshold = apply_filters( 'tribe_log_level', Logger::WARNING );
72
 
73
+ $error_log_handler = new ErrorLogHandler( ErrorLogHandler::OPERATING_SYSTEM, $level_threshold );
74
 
75
  /**
76
  * Filters whether to use canonical format for the logs or not.
common/src/Tribe/Main.php CHANGED
@@ -19,7 +19,7 @@ class Tribe__Main {
19
  const OPTIONNAME = 'tribe_events_calendar_options';
20
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
21
 
22
- const VERSION = '4.12.10';
23
 
24
  const FEED_URL = 'https://theeventscalendar.com/feed/';
25
 
@@ -637,6 +637,7 @@ class Tribe__Main {
637
  tribe_register_provider( Tribe\Service_Providers\Body_Classes::class );
638
  tribe_register_provider( Tribe\Log\Service_Provider::class );
639
  tribe_register_provider( Tribe\Service_Providers\Crons::class );
 
640
  }
641
 
642
  /**
19
  const OPTIONNAME = 'tribe_events_calendar_options';
20
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
21
 
22
+ const VERSION = '4.12.12';
23
 
24
  const FEED_URL = 'https://theeventscalendar.com/feed/';
25
 
637
  tribe_register_provider( Tribe\Service_Providers\Body_Classes::class );
638
  tribe_register_provider( Tribe\Log\Service_Provider::class );
639
  tribe_register_provider( Tribe\Service_Providers\Crons::class );
640
+ tribe_register_provider( Tribe\Service_Providers\Widgets::class );
641
  }
642
 
643
  /**
common/src/Tribe/Service_Providers/Widgets.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Tribe\Service_Providers;
3
+
4
+ use Tribe\Widget\Manager;
5
+
6
+ /**
7
+ * Class Widget
8
+ *
9
+ * @since 5.12.12
10
+ *
11
+ * @package Tribe\Service_Providers
12
+ */
13
+ class Widgets extends \tad_DI52_ServiceProvider {
14
+
15
+ /**
16
+ * Binds and sets up implementations.
17
+ *
18
+ * @since 5.12.12
19
+ */
20
+ public function register() {
21
+ if ( ! static::is_active() ) {
22
+ return;
23
+ }
24
+
25
+ $this->container->singleton( Manager::class, Manager::class );
26
+ $this->container->singleton(
27
+ 'widget.manager',
28
+ function() {
29
+ return $this->container->make( Manager::class );
30
+ }
31
+ );
32
+
33
+ $this->register_hooks();
34
+
35
+ $this->container->singleton( static::class, $this );
36
+ $this->container->singleton( 'widgets', $this );
37
+ }
38
+
39
+ /**
40
+ * Static method wrapper around a filter to allow full deactivation of this provider.
41
+ *
42
+ * @since 5.12.12
43
+ *
44
+ * @return boolean If this service provider is active.
45
+ */
46
+ public static function is_active() {
47
+ /**
48
+ * Allows filtering to prevent all Tribe widgets from loading.
49
+ *
50
+ * @since 5.12.12
51
+ *
52
+ * @param boolean $is_active If widgets should be loaded or not.
53
+ */
54
+ return apply_filters( 'tribe_widgets_is_active', true );
55
+ }
56
+
57
+ /**
58
+ * Registers the provider handling all the 1st level filters and actions for this service provider.
59
+ *
60
+ * @since 5.12.12
61
+ */
62
+ protected function register_hooks() {
63
+ add_action( 'widgets_init', [ $this, 'register_widgets_with_wp' ], 20 );
64
+ }
65
+
66
+ /**
67
+ * Adds the new widgets.
68
+ *
69
+ * This triggers on `init@P20` due to how v1 is added on `init@P10` and removed on `init@P15`,
70
+ * as it's important to leave gaps on priority for future flexibility.
71
+ *
72
+ * @since 5.12.12
73
+ */
74
+ public function register_widgets_with_wp() {
75
+ $this->container->make( Manager::class )->register_widgets_with_wp();
76
+ }
77
+ }
common/src/Tribe/Widget/Manager.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widgets manager for Tribe plugins.
4
+ *
5
+ * @since 5.12.12
6
+ *
7
+ * @package Tribe\Widget
8
+ */
9
+
10
+ namespace Tribe\Widget;
11
+
12
+ /**
13
+ * Class Widget Manager.
14
+ *
15
+ * @since 5.12.12
16
+ *
17
+ * @package Tribe\Widget
18
+ */
19
+ class Manager {
20
+
21
+ /**
22
+ * Get the list of widgets available for handling.
23
+ *
24
+ * @since 5.12.12
25
+ *
26
+ * @return array An associative array of widgets in the shape `[ <slug> => <class> ]`.
27
+ */
28
+ public function get_registered_widgets() {
29
+ $widgets = [];
30
+
31
+ /**
32
+ * Allow the registering of widgets from other plugins.
33
+ *
34
+ * @since 5.12.12
35
+ *
36
+ * @var array<string,string> An associative array of widgets in the shape `[ <slug> => <class> ]`.
37
+ */
38
+ $widgets = apply_filters( 'tribe_widgets', $widgets );
39
+
40
+ return $widgets;
41
+ }
42
+
43
+ /**
44
+ * Verifies if a given widget slug is registered for handling.
45
+ *
46
+ * @since 5.12.12
47
+ *
48
+ * @param string $slug The widget slug we are checking for registration.
49
+ *
50
+ * @return bool Whether the widget is registered or not.
51
+ */
52
+ public function is_widget_registered( $slug ) {
53
+ $registered_widgets = $this->get_registered_widgets();
54
+
55
+ return isset( $registered_widgets[ $slug ] );
56
+ }
57
+
58
+ /**
59
+ * Verifies if a given widget class name is registered for handling.
60
+ *
61
+ * @since 5.12.12
62
+ *
63
+ * @param string $class_name The widget class name we are checking for registration.
64
+ *
65
+ * @return bool Whether the widget is registered, by class.
66
+ */
67
+ public function is_widget_registered_by_class( $class_name ) {
68
+ $registered_widgets = $this->get_registered_widgets();
69
+
70
+ return in_array( $class_name, $registered_widgets, true );
71
+ }
72
+
73
+ /**
74
+ * Add new widgets handler to ensure our list of widget slugs is registered by class name.
75
+ *
76
+ * @since 5.12.12
77
+ */
78
+ public function register_widgets_with_wp() {
79
+ $registered_widgets = $this->get_registered_widgets();
80
+
81
+ // Add to WordPress all of the registered Widgets.
82
+ foreach ( $registered_widgets as $widget => $class_name ) {
83
+ register_widget( $class_name );
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Remove Widget from WordPress widget register by class name.
89
+ *
90
+ * @since 5.12.12
91
+ *
92
+ * @param string $class_name The class name of the widget to unregister.
93
+ */
94
+ public function unregister_widget_from_wp( $class_name ) {
95
+ unregister_widget( $class_name );
96
+ }
97
+ }
common/src/Tribe/Widget/Widget_Abstract.php ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Tribe\Widget;
4
+
5
+ use Tribe__Utils__Array as Arr;
6
+
7
+ /**
8
+ * The abstract base without Views that all widgets should implement.
9
+ *
10
+ * @since 5.12.12
11
+ *
12
+ * @package Tribe\Widget
13
+ */
14
+ abstract class Widget_Abstract extends \WP_Widget implements Widget_Interface {
15
+
16
+ /**
17
+ * Slug of the current widget.
18
+ *
19
+ * @since 5.12.12
20
+ *
21
+ * @var string
22
+ */
23
+ protected $slug;
24
+
25
+ /**
26
+ * Default arguments to be merged into final arguments of the widget.
27
+ *
28
+ * @since 5.12.12
29
+ *
30
+ * @var array<string,mixed>
31
+ */
32
+ protected $default_arguments = [];
33
+
34
+ /**
35
+ * Array map allowing aliased widget arguments.
36
+ *
37
+ * The array keys are aliases of the array values (i.e. the "real" widget attributes to parse).
38
+ * Example array: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
39
+ * Example widget usage: [some_tag alias=17 to='Fred'] will be parsed as [some_tag canonical=17 to='Fred']
40
+ *
41
+ * @since 5.12.12
42
+ *
43
+ * @var array<string,string>
44
+ */
45
+ protected $aliased_arguments = [];
46
+
47
+ /**
48
+ * Array of callbacks for validation of arguments.
49
+ *
50
+ * @since 5.12.12
51
+ *
52
+ * @var array<string,callable>
53
+ */
54
+ protected $validate_arguments_map = [];
55
+
56
+ /**
57
+ * Arguments of the current widget.
58
+ *
59
+ * @since 5.12.12
60
+ *
61
+ * @var array<string,mixed>
62
+ */
63
+ protected $arguments;
64
+
65
+ /**
66
+ * HTML content of the current widget.
67
+ *
68
+ * @since 5.12.12
69
+ *
70
+ * @var string
71
+ */
72
+ protected $content;
73
+
74
+ /**
75
+ * {@inheritDoc}
76
+ */
77
+ public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] ) {
78
+ $arguments = $this->get_arguments();
79
+
80
+ parent::__construct(
81
+ Arr::get( $arguments, 'id_base', '' ),
82
+ Arr::get( $arguments, 'name', '' ),
83
+ Arr::get( $arguments, 'widget_options', [] ),
84
+ Arr::get( $arguments, 'control_options', [] )
85
+ );
86
+
87
+ // @todo add what this does in in TEC-3612 & TEC-3613.
88
+ $this->setup();
89
+ }
90
+
91
+ /**
92
+ * Setup the widget.
93
+ *
94
+ * @todo update in TEC-3612 & TEC-3613
95
+ *
96
+ * @since 5.12.12
97
+ *
98
+ * @return mixed
99
+ */
100
+ public abstract function setup();
101
+
102
+ /**
103
+ * Echoes the widget content.
104
+ *
105
+ * @todo Widget display will be handled in TEC-3620 & TEC-3597.
106
+ * @todo Add future support for passing along `$args` and `$instance` for the widget HTML view.
107
+ *
108
+ * @since 5.12.12
109
+ *
110
+ * @param array<string,mixed> $args Display arguments including 'before_title', 'after_title',
111
+ * 'before_widget', and 'after_widget'.
112
+ * @param array<string,mixed> $instance The settings for the particular instance of the widget.
113
+ */
114
+ public function widget( $args, $instance ) {
115
+ echo $this->get_html();
116
+ }
117
+
118
+ /**
119
+ * Returns the rendered View HTML code.
120
+ *
121
+ * @since 5.12.12
122
+ *
123
+ * @return string
124
+ */
125
+ public abstract function get_html();
126
+
127
+ /**
128
+ * {@inheritDoc}
129
+ */
130
+ public function set_aliased_arguments( array $alias_map ) {
131
+ $this->aliased_arguments = Arr::filter_to_flat_scalar_associative_array( (array) $alias_map );
132
+ }
133
+
134
+ /**
135
+ * {@inheritDoc}
136
+ */
137
+ public function get_aliased_arguments() {
138
+ return $this->aliased_arguments;
139
+ }
140
+
141
+ /**
142
+ * {@inheritDoc}
143
+ */
144
+ public function parse_arguments( array $arguments ) {
145
+ $arguments = Arr::parse_associative_array_alias( (array) $arguments, (array) $this->get_aliased_arguments() );
146
+
147
+ return $this->validate_arguments( $arguments );
148
+ }
149
+
150
+ /**
151
+ * {@inheritDoc}
152
+ */
153
+ public function validate_arguments( array $arguments ) {
154
+ $validate_arguments_map = $this->get_validated_arguments_map();
155
+ foreach ( $validate_arguments_map as $key => $callback ) {
156
+ $arguments[ $key ] = $callback( isset( $arguments[ $key ] ) ? $arguments[ $key ] : null );
157
+ }
158
+
159
+ return $arguments;
160
+ }
161
+
162
+ /**
163
+ * {@inheritDoc}
164
+ */
165
+ public function get_registration_slug() {
166
+ return $this->slug;
167
+ }
168
+
169
+ /**
170
+ * {@inheritDoc}
171
+ */
172
+ public function get_validated_arguments_map() {
173
+ /**
174
+ * Applies a filter to the validation map for instance arguments.
175
+ *
176
+ * @since 5.12.12
177
+ *
178
+ * @param array<string,callable> $validate_arguments_map Current set of callbacks for arguments.
179
+ * @param static $instance The widget instance we are dealing with.
180
+ */
181
+ $validate_arguments_map = apply_filters( 'tribe_widget_validate_arguments_map', $this->validate_arguments_map, $this );
182
+
183
+ $registration_slug = $this->get_registration_slug();
184
+
185
+ /**
186
+ * Applies a filter to the validation map for instance arguments for a specific widget. Based on the registration slug of the widget
187
+ *
188
+ * @since 5.12.12
189
+ *
190
+ * @param array<string,callable> $validate_arguments_map Current set of callbacks for arguments.
191
+ * @param static $instance The widget instance we are dealing with.
192
+ */
193
+ $validate_arguments_map = apply_filters( "tribe__widget_{$registration_slug}_validate_arguments_map", $validate_arguments_map, $this );
194
+
195
+ return $validate_arguments_map;
196
+ }
197
+
198
+ /**
199
+ * {@inheritDoc}
200
+ */
201
+ public function get_arguments() {
202
+
203
+ return $this->filter_arguments( $this->arguments );
204
+ }
205
+
206
+ /**
207
+ * {@inheritDoc}
208
+ */
209
+ public function filter_arguments( $arguments ) {
210
+ /**
211
+ * Applies a filter to instance arguments.
212
+ *
213
+ * @since 5.12.12
214
+ *
215
+ * @param array<string,mixed> $arguments Current set of arguments.
216
+ * @param static $instance The widget instance we are dealing with.
217
+ */
218
+ $arguments = apply_filters( 'tribe_widget_arguments', $arguments, $this );
219
+
220
+ $registration_slug = $this->get_registration_slug();
221
+
222
+ /**
223
+ * Applies a filter to instance arguments based on the registration slug of the widget.
224
+ *
225
+ * @since 5.12.12
226
+ *
227
+ * @param array<string,mixed> $arguments Current set of arguments.
228
+ * @param static $instance The widget instance we are dealing with.
229
+ */
230
+ $arguments = apply_filters( "tribe_widget_{$registration_slug}_arguments", $arguments, $this );
231
+
232
+ return $arguments;
233
+ }
234
+
235
+
236
+ /**
237
+ * {@inheritDoc}
238
+ */
239
+ public function get_argument( $index, $default = null ) {
240
+ $arguments = $this->get_arguments();
241
+ $argument = Arr::get( $arguments, $index, $default );
242
+
243
+ return $this->filter_argument( $argument, $index, $default );
244
+ }
245
+
246
+ /**
247
+ * {@inheritDoc}
248
+ */
249
+ public function filter_argument( $argument, $index, $default = null ) {
250
+ /**
251
+ * Applies a filter to a specific widget argument, catch all for all widgets.
252
+ *
253
+ * @since 5.12.12
254
+ *
255
+ * @param mixed $argument The argument.
256
+ * @param string|int $index Which index we intend to fetch from the arguments.
257
+ * @param array<string,mixed> $default Default value if it doesn't exist.
258
+ * @param static $instance The widget instance we are dealing with.
259
+ */
260
+ $argument = apply_filters( 'tribe_widget_argument', $argument, $index, $default, $this );
261
+
262
+ $registration_slug = $this->get_registration_slug();
263
+
264
+ /**
265
+ * Applies a filter to a specific widget argument, to a particular registration slug.
266
+ *
267
+ * @since 5.12.12
268
+ *
269
+ * @param mixed $argument The argument value.
270
+ * @param string|int $index Which index we intend to fetch from the arguments.
271
+ * @param mixed $default Default value if it doesn't exist.
272
+ * @param static $instance The widget instance we are dealing with.
273
+ */
274
+ $argument = apply_filters( "tribe_widget_{$registration_slug}_argument", $argument, $index, $default, $this );
275
+
276
+ return $argument;
277
+ }
278
+
279
+ /**
280
+ * {@inheritDoc}
281
+ */
282
+ public function get_default_arguments() {
283
+ return $this->filter_default_arguments( $this->default_arguments );
284
+ }
285
+
286
+ /**
287
+ * {@inheritDoc}
288
+ */
289
+ public function filter_default_arguments( array $default_arguments = [] ) {
290
+ /**
291
+ * Applies a filter to default instance arguments.
292
+ *
293
+ * @since 5.12.12
294
+ *
295
+ * @param array<string,mixed> $default_arguments Current set of default arguments.
296
+ * @param static $instance The widget instance we are dealing with.
297
+ */
298
+ $default_arguments = apply_filters( 'tribe_widget_default_arguments', $default_arguments, $this );
299
+
300
+ $registration_slug = $this->get_registration_slug();
301
+
302
+ /**
303
+ * Applies a filter to default instance arguments based on the registration slug of the widget.
304
+ *
305
+ * @since 5.12.12
306
+ *
307
+ * @param array<string,mixed> $default_arguments Current set of default arguments.
308
+ * @param static $instance The widget instance we are dealing with.
309
+ */
310
+ $default_arguments = apply_filters( "tribe_widget_{$registration_slug}_default_arguments", $default_arguments, $this );
311
+
312
+ return $default_arguments;
313
+ }
314
+ }
common/src/Tribe/Widget/Widget_Interface.php ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Tribe\Widget;
4
+
5
+ /**
6
+ * Interface Widget_Interface
7
+ *
8
+ * @since 5.12.12
9
+ *
10
+ * @package Tribe\Widget
11
+ *
12
+ */
13
+ interface Widget_Interface {
14
+
15
+ /**
16
+ * Constructor for V2 Widgets.
17
+ *
18
+ * @since 5.12.12
19
+ *
20
+ * @param string $id_base Optional. Base ID for the widget, lowercase. If left empty,
21
+ * a portion of the widget's class name will be used. Has to be unique.
22
+ * @param string $name Name for the widget displayed on the configuration page.
23
+ * @param array<string,mixed> $widget_options Optional. Widget options. See wp_register_sidebar_widget() for
24
+ * information on accepted arguments. Default empty array.
25
+ * @param array<string,mixed> $control_options Optional. Widget control options. See wp_register_widget_control() for
26
+ * information on accepted arguments. Default empty array.
27
+ */
28
+ public function __construct( $id_base = '', $name = '', $widget_options = [], $control_options = [] );
29
+
30
+ /**
31
+ * Echoes the widget content.
32
+ *
33
+ * @since 5.12.12
34
+ *
35
+ * @param array<string,mixed> $args Display arguments including 'before_title', 'after_title',
36
+ * 'before_widget', and 'after_widget'.
37
+ * @param array<string,mixed> $instance The settings for the particular instance of the widget.
38
+ */
39
+ public function widget( $args, $instance );
40
+
41
+ /**
42
+ * Updates a particular instance of a widget.
43
+ *
44
+ * This function should check that `$new_instance` is set correctly. The newly-calculated
45
+ * value of `$instance` should be returned. If false is returned, the instance won't be
46
+ * saved/updated.
47
+ *
48
+ * @since 5.12.12
49
+ *
50
+ * @param array<string,mixed> $new_instance New settings for this instance as input by the user via
51
+ * WP_Widget::form().
52
+ * @param array<string,mixed> $old_instance Old settings for this instance.
53
+ *
54
+ * @return array<string,mixed> Settings to save or bool false to cancel saving.
55
+ */
56
+ public function update( $new_instance, $old_instance );
57
+
58
+ /**
59
+ * Outputs the settings update form.
60
+ *
61
+ * @since 5.12.12
62
+ *
63
+ * @param array<string,mixed> $instance Current settings.
64
+ *
65
+ * @return string Default return is 'noform'.
66
+ */
67
+ public function form( $instance );
68
+
69
+ /**
70
+ * Returns the widget slug that allows the widget to be built via the widget class using that slug.
71
+ *
72
+ * @since 5.12.12
73
+ *
74
+ * @return string The widget slug.
75
+ */
76
+ public function get_registration_slug();
77
+
78
+ /**
79
+ * Sets the aliased arguments array.
80
+ *
81
+ * @see Tribe__Utils__Array::parse_associative_array_alias() The expected format.
82
+ *
83
+ * @since 5.12.12
84
+ *
85
+ * @param array<string,mixed> $alias_map An associative array of aliases: key as alias, value as mapped canonical.
86
+ * Example: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
87
+ */
88
+ public function set_aliased_arguments( array $alias_map );
89
+
90
+ /**
91
+ * Gets the aliased arguments array.
92
+ *
93
+ * @since 5.12.12
94
+ *
95
+ * @return array<string,string> The associative array map of aliases and their canonical arguments.
96
+ */
97
+ public function get_aliased_arguments();
98
+
99
+ /**
100
+ * Returns the arguments for the widget parsed correctly with defaults applied.
101
+ *
102
+ * @since 5.12.12
103
+ *
104
+ * @param array $arguments Set of arguments passed to the widget at hand.
105
+ *
106
+ * @return array<string,mixed> The parsed widget arguments map.
107
+ */
108
+ public function parse_arguments( array $arguments );
109
+
110
+ /**
111
+ * Returns the array of arguments for this widget after applying the validation callbacks.
112
+ *
113
+ * @since 5.12.12
114
+ *
115
+ * @param array $arguments Set of arguments passed to the widget at hand.
116
+ *
117
+ * @return array<string,mixed> The validated widget arguments map.
118
+ */
119
+ public function validate_arguments( array $arguments );
120
+
121
+ /**
122
+ * Returns the array of callbacks for this widget's arguments.
123
+ *
124
+ * @since 5.12.12
125
+ *
126
+ * @return array<string,mixed> A map of the widget arguments that have survived validation.
127
+ */
128
+ public function get_validated_arguments_map();
129
+
130
+ /**
131
+ * Returns a widget arguments after been parsed.
132
+ *
133
+ * @since 5.12.12
134
+ *
135
+ * @return array<string,mixed> The widget arguments, as set by the user in the widget string.
136
+ */
137
+ public function get_arguments();
138
+
139
+ /**
140
+ * Get a widget's arguments after they have been been parsed.
141
+ *
142
+ * @since 5.12.12
143
+ *
144
+ * @param array<string,mixed> $arguments Current set of arguments.
145
+ *
146
+ * @return array<string,mixed> The widget arguments, as set by the user in the widget string.
147
+ */
148
+ public function filter_arguments( $arguments );
149
+
150
+ /**
151
+ * Get a single widget argument after it has been parsed and filtered.
152
+ *
153
+ * @since 5.12.12
154
+ *
155
+ * @param string|int $index Which index we intend to fetch from the arguments.
156
+ * @param array|mixed $default Default value if it doesn't exist.
157
+ *
158
+ * @uses Tribe__Utils__Array::get For index fetching and Default.
159
+ *
160
+ * @return mixed Value for the Index passed as the first argument.
161
+ */
162
+ public function get_argument( $index, $default = null );
163
+
164
+ /**
165
+ * Filter a widget argument.
166
+ *
167
+ * @since 5.12.12
168
+ *
169
+ * @param mixed $argument The argument value.
170
+ * @param string|int $index Which index we intend to fetch from the arguments.
171
+ * @param array|mixed $default Default value if it doesn't exist.
172
+ *
173
+ * @uses Tribe__Utils__Array::get For index fetching and Default.
174
+ *
175
+ * @return mixed Value for the Index passed as the first argument.
176
+ */
177
+ public function filter_argument( $argument, $index, $default = null );
178
+
179
+ /**
180
+ * Get default arguments for a widget.
181
+ *
182
+ * @since 5.12.12
183
+ *
184
+ * @return array<string,mixed> The map of widget default arguments.
185
+ */
186
+ public function get_default_arguments();
187
+
188
+ /**
189
+ * Get a widget's default arguments.
190
+ *
191
+ * @since 5.12.12
192
+ *
193
+ * @param array<string,mixed> $default_arguments Current set of default arguments.
194
+ *
195
+ * @return array<string,mixed> The map of widget default arguments.
196
+ */
197
+ public function filter_default_arguments( array $default_arguments = [] );
198
+
199
+ /**
200
+ * Returns a widget's HTML.
201
+ *
202
+ * @since 5.12.12
203
+ *
204
+ * @return string The rendered widget's HTML code.
205
+ */
206
+ public function get_html();
207
+ }
common/src/admin-views/tribe-options-display.php CHANGED
@@ -27,7 +27,7 @@ $displayTab = array(
27
  . sprintf(
28
  __( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
29
  '<code>date()</code>',
30
- 'https://codex.wordpress.org/Formatting_Date_and_Time'
31
  )
32
  . '</p>',
33
  ),
27
  . sprintf(
28
  __( 'The following three fields accept the date format options available to the PHP %1$s function. <a href="%2$s" target="_blank">Learn how to make your own date format here</a>.', 'tribe-common' ),
29
  '<code>date()</code>',
30
+ 'https://wordpress.org/support/article/formatting-date-and-time/'
31
  )
32
  . '</p>',
33
  ),
common/src/functions/utils.php CHANGED
@@ -289,21 +289,21 @@ if ( ! function_exists( 'tribe_normalize_terms_list' ) ) {
289
 
290
  return $normalized;
291
  }
 
292
 
293
- if ( ! function_exists( 'tribe_upload_image' ) ) {
294
- /**
295
- * @see Tribe__Image__Uploader::upload_and_get_attachment_id()
296
- *
297
- * @param string|int $image The path to an image file, an image URL or an attachment post ID.
298
- *
299
- * @return int|bool The attachment post ID if the uploading and attachment is successful or the ID refers to an attachment;
300
- * `false` otherwise.
301
- */
302
- function tribe_upload_image( $image ) {
303
- $uploader = new Tribe__Image__Uploader( $image );
304
 
305
- return $uploader->upload_and_get_attachment_id();
306
- }
307
  }
308
  }
309
 
@@ -1107,4 +1107,35 @@ if ( ! function_exists( 'tribe_without_filters' ) ) {
1107
 
1108
  return $result;
1109
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1110
  }
289
 
290
  return $normalized;
291
  }
292
+ }
293
 
294
+ if ( ! function_exists( 'tribe_upload_image' ) ) {
295
+ /**
296
+ * @see Tribe__Image__Uploader::upload_and_get_attachment_id()
297
+ *
298
+ * @param string|int $image The path to an image file, an image URL or an attachment post ID.
299
+ *
300
+ * @return int|bool The attachment post ID if the uploading and attachment is successful or the ID refers to an attachment;
301
+ * `false` otherwise.
302
+ */
303
+ function tribe_upload_image( $image ) {
304
+ $uploader = new Tribe__Image__Uploader( $image );
305
 
306
+ return $uploader->upload_and_get_attachment_id();
 
307
  }
308
  }
309
 
1107
 
1108
  return $result;
1109
  }
1110
+
1111
+ /**
1112
+ * Runs a callbacks while suspending, removing and re-adding, a filter or action.
1113
+ *
1114
+ * The function will infer the priority of the filter, required for its correct detachment and re-attachment, on
1115
+ * its own.
1116
+ *
1117
+ * @since 5.12.12
1118
+ *
1119
+ * @param string $filter_tag The filter tag to suspend.
1120
+ * @param callable $filter_callback The filter_callback currently attached to the filter.
1121
+ * @param callable $do The filter_callback that will be run detaching the `$filter_callback`.
1122
+ * @param int $args The number of arguments that should be used to re-attach the filtering callback to the filter.
1123
+ *
1124
+ * @return mixed The return value of the `$do` callback.
1125
+ */
1126
+ function tribe_suspending_filter( $filter_tag, callable $filter_callback, callable $do, $args = 1 ) {
1127
+ $priority = has_filter( $filter_tag, $filter_callback );
1128
+
1129
+ if ( false !== $priority ) {
1130
+ remove_filter( $filter_tag, $filter_callback, $priority );
1131
+ }
1132
+
1133
+ $result = $do();
1134
+
1135
+ if ( false !== $priority ) {
1136
+ add_filter( $filter_tag, $filter_callback, $priority, $args );
1137
+ }
1138
+
1139
+ return $result;
1140
+ }
1141
  }
common/src/resources/css/tribe-common-admin.min.css CHANGED
@@ -1 +1 @@
1
- .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-quick-nav{border-radius:100px;margin:24px 0 94px;padding:0;height:54px;width:620px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}}
1
+ .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}.tribe-rating{color:#3d54ff}.tribe-rating:hover{color:#1c39bb}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container .selection,.tribe-ea-dropdown.select2-container .selection{margin-top:inherit}.tribe-dropdown .select2-selection--single,.tribe-ea-dropdown .select2-selection--single{height:32px}.tribe-dropdown .select2-selection--single .select2-selection__clear,.tribe-ea-dropdown .select2-selection--single .select2-selection__clear{line-height:28px}.tribe-dropdown .select2-selection--single .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--single .select2-selection__rendered{line-height:32px;padding-right:28px}.tribe-dropdown.select2-container--focus .select2-selection--single,.tribe-ea-dropdown.select2-container--focus .select2-selection--single{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-container--open .select2-search__field,.tribe-ea-dropdown.select2-container--open .select2-search__field{padding:0}.tribe-dropdown.select2-container--open .select2-dropdown--below,.tribe-ea-dropdown.select2-container--open .select2-dropdown--below{margin-top:-1px;border-top:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{margin-bottom:-16px;border-bottom:1px solid #aaa}.tribe-dropdown.select2-container--open .select2-selection--single,.tribe-ea-dropdown.select2-container--open .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown.select2-container--open .select2-selection__arrow b,.tribe-ea-dropdown.select2-container--open .select2-selection__arrow b{transform:rotate(180deg)}.tribe-dropdown.select2-selection--single,.tribe-ea-dropdown.select2-selection--single{background-image:none;border-radius:3px;border:1px solid #ccc;overflow:hidden}.tribe-dropdown.select2-selection--single>.select2-selection__rendered,.tribe-ea-dropdown.select2-selection--single>.select2-selection__rendered{white-space:normal}.tribe-dropdown.select2-selection--single .select2-selection__arrow,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow{background-image:none;background:transparent;border-left:0;top:2px;width:26px}.tribe-dropdown.select2-selection--single .select2-selection__arrow b,.tribe-ea-dropdown.select2-selection--single .select2-selection__arrow b{background:#fff url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:auto;background-size:16px 16px;border:0;top:0;bottom:0;left:0;right:0;display:block;width:auto;height:auto;margin:0;padding:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline{line-height:25px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-search--inline input{padding-top:0;padding-bottom:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice div{line-height:inherit}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice__remove{top:3px;left:4px;transition-property:border,color}.select2-results .select2-results__option{color:#939393;font-weight:400;margin-bottom:0}.select2-results .select2-results__option[aria-disabled=true]{background-color:#e0e0e0}.select2-results.select2-results__option--highlighted{background-color:#efefef;color:#a1a1a1;cursor:default;display:block}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-selection--single .select2-selection__arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff}body.tribe-welcome .update-nag{display:none}body.tribe-welcome #wpcontent{padding:0}body.tribe-welcome .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:20px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-video{-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);-webkit-transform:rotate(.000001deg);border-radius:16px;height:200px;margin-bottom:72px;overflow:hidden}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;text-align:left;margin-bottom:16px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{text-align:left;color:#fff}.tribe-events-admin-graphic{position:absolute;top:106px;right:0;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::-webkit-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::-moz-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input:-ms-input-placeholder,input[type=email].tribe-events-admin-card__input::-ms-input-placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;margin:0 auto;height:100px}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}.tribe-events-admin-quick-nav{background:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-section-header{color:#000;font-size:24px;font-weight:700;line-height:28px;margin:21px 0 24px}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-top:8px;padding-bottom:0}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{width:300px;top:230px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;box-sizing:border-box;border-radius:16px;margin-left:22px;box-shadow:none}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{border-color:#3d54ff;color:#3d54ff;background:#fff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--1up{display:inline-block;width:calc(50% - 18px);margin-left:32px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:340px;margin-bottom:27px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{top:0;max-width:250px}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-section-header{font-size:28px;line-height:32px;margin-bottom:21px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{width:100%;max-width:1060px}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{display:inline-block;border-radius:100px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0;height:54px}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}
common/src/resources/images/header/welcome-desktop-et.jpg ADDED
Binary file
common/src/resources/images/header/welcome-desktop-etplus.jpg ADDED
Binary file
common/src/resources/images/header/welcome-mobile-et.jpg ADDED
Binary file
common/src/resources/images/header/welcome-mobile-etplus.jpg ADDED
Binary file
common/src/resources/images/icons/horns-white.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg fill="none" height="46" viewBox="0 0 37 46" width="37" xmlns="http://www.w3.org/2000/svg"><g stroke="#fff" stroke-linecap="round" stroke-width="2.25"><path d="m27.2161 19.5106c.1047-4.2905-1.1512-6.0698-3.7676-6.0698-2.6163 0-3.827 2.5473-3.5357 5.9545"/><path d="m27.6405 20.0339c0-3.2122.3778-15.48837 3.8955-15.50929 2.9087-.01763 4.1759 5.78649 4.1759 16.38229 0 10.5955-1.0247 19.9527-12.5277 23.128-11.2161 3.0959-21.14822-5.3731-18.32276-13.8498 3.23374-9.7018 23.18836-13.412 24.72666-8.3688 1.0523 3.4503-8.4009 10.2174-13.4245 9.9386-3.4856-.1937-4.2208-3.4538.1047-3.7673 4.3256-.3141 7.5349 1.779 5.8607 8.0582"/><path d="m19.2975 20.1038c.3254-3.9173-1.0116-8.5991-4.766-8.1375-3.3532.4121-3.5758 5.2963-2.6292 10.0038"/><path d="m2.48356 24.2201c-1.92733-9.6366-2.638836-22.75983 1.81843-23.228818 4.06506-.427867 6.44271 11.667118 7.18151 17.996118"/></g></svg>
common/src/resources/images/mascot.png CHANGED
Binary file
common/src/resources/images/welcome/calendar.jpg ADDED
Binary file
common/src/resources/images/welcome/et-plus-upsell.jpg ADDED
Binary file
common/src/resources/images/welcome/extension-library.jpg ADDED
Binary file
common/src/resources/images/welcome/guide-book-green.jpg ADDED
Binary file
common/src/resources/images/welcome/up-sell.jpg ADDED
Binary file
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit56ba4f3e40664dd4e753b16df7ff220e::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitd794e69694ca110e13b34e0378ec9ad4::getLoader();
common/vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit70b63d7b756a7c38f3b80512ad2b8c34::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit7937cc809811a92cd7bade186faf7c51::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -131,6 +131,7 @@ return array(
131
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
132
  'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
133
  'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
 
134
  'Tribe\\Shortcode\\Manager' => $baseDir . '/src/Tribe/Shortcode/Manager.php',
135
  'Tribe\\Shortcode\\Shortcode_Abstract' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
136
  'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
@@ -152,6 +153,9 @@ return array(
152
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
153
  'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
154
  'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
 
 
 
155
  'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
156
  'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
157
  'tad_DI52_ProtectedValue' => $vendorDir . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
131
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
132
  'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
133
  'Tribe\\Service_Providers\\Tooltip' => $baseDir . '/src/Tribe/Service_Providers/Tooltip.php',
134
+ 'Tribe\\Service_Providers\\Widgets' => $baseDir . '/src/Tribe/Service_Providers/Widgets.php',
135
  'Tribe\\Shortcode\\Manager' => $baseDir . '/src/Tribe/Shortcode/Manager.php',
136
  'Tribe\\Shortcode\\Shortcode_Abstract' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
137
  'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
153
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
154
  'Tribe\\Utils\\Query' => $baseDir . '/src/Tribe/Utils/Query.php',
155
  'Tribe\\Utils\\Strings' => $baseDir . '/src/Tribe/Utils/Strings.php',
156
+ 'Tribe\\Widget\\Manager' => $baseDir . '/src/Tribe/Widget/Manager.php',
157
+ 'Tribe\\Widget\\Widget_Abstract' => $baseDir . '/src/Tribe/Widget/Widget_Abstract.php',
158
+ 'Tribe\\Widget\\Widget_Interface' => $baseDir . '/src/Tribe/Widget/Widget_Interface.php',
159
  'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
160
  'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
161
  'tad_DI52_ProtectedValue' => $vendorDir . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit56ba4f3e40664dd4e753b16df7ff220e
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit56ba4f3e40664dd4e753b16df7ff220e
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit56ba4f3e40664dd4e753b16df7ff220e', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit56ba4f3e40664dd4e753b16df7ff220e', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitd794e69694ca110e13b34e0378ec9ad4
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitd794e69694ca110e13b34e0378ec9ad4', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitd794e69694ca110e13b34e0378ec9ad4', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
common/vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit70b63d7b756a7c38f3b80512ad2b8c34 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit70b63d7b756a7c38f3b80512ad2b8c34 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit70b63d7b756a7c38f3b80512ad2b8c34', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit70b63d7b756a7c38f3b80512ad2b8c34', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit7937cc809811a92cd7bade186faf7c51 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit7937cc809811a92cd7bade186faf7c51', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit7937cc809811a92cd7bade186faf7c51', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
common/vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -187,6 +187,7 @@ class ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e
187
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
188
  'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
189
  'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
 
190
  'Tribe\\Shortcode\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Manager.php',
191
  'Tribe\\Shortcode\\Shortcode_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
192
  'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
@@ -208,6 +209,9 @@ class ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e
208
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
209
  'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
210
  'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
 
 
 
211
  'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
212
  'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
213
  'tad_DI52_ProtectedValue' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
@@ -220,10 +224,10 @@ class ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e
220
  public static function getInitializer(ClassLoader $loader)
221
  {
222
  return \Closure::bind(function () use ($loader) {
223
- $loader->prefixLengthsPsr4 = ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e::$prefixLengthsPsr4;
224
- $loader->prefixDirsPsr4 = ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e::$prefixDirsPsr4;
225
- $loader->prefixesPsr0 = ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e::$prefixesPsr0;
226
- $loader->classMap = ComposerStaticInit56ba4f3e40664dd4e753b16df7ff220e::$classMap;
227
 
228
  }, null, ClassLoader::class);
229
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
187
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
188
  'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
189
  'Tribe\\Service_Providers\\Tooltip' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Tooltip.php',
190
+ 'Tribe\\Service_Providers\\Widgets' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Widgets.php',
191
  'Tribe\\Shortcode\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Manager.php',
192
  'Tribe\\Shortcode\\Shortcode_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Abstract.php',
193
  'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
209
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
210
  'Tribe\\Utils\\Query' => __DIR__ . '/../..' . '/src/Tribe/Utils/Query.php',
211
  'Tribe\\Utils\\Strings' => __DIR__ . '/../..' . '/src/Tribe/Utils/Strings.php',
212
+ 'Tribe\\Widget\\Manager' => __DIR__ . '/../..' . '/src/Tribe/Widget/Manager.php',
213
+ 'Tribe\\Widget\\Widget_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Widget/Widget_Abstract.php',
214
+ 'Tribe\\Widget\\Widget_Interface' => __DIR__ . '/../..' . '/src/Tribe/Widget/Widget_Interface.php',
215
  'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
216
  'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
217
  'tad_DI52_ProtectedValue' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ProtectedValue.php',
224
  public static function getInitializer(ClassLoader $loader)
225
  {
226
  return \Closure::bind(function () use ($loader) {
227
+ $loader->prefixLengthsPsr4 = ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4::$prefixLengthsPsr4;
228
+ $loader->prefixDirsPsr4 = ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4::$prefixDirsPsr4;
229
+ $loader->prefixesPsr0 = ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4::$prefixesPsr0;
230
+ $loader->classMap = ComposerStaticInitd794e69694ca110e13b34e0378ec9ad4::$classMap;
231
 
232
  }, null, ClassLoader::class);
233
  }
lang/the-events-calendar-ar.mo CHANGED
Binary file
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-es_ES.mo CHANGED
Binary file
lang/the-events-calendar-hr.mo CHANGED
Binary file
lang/the-events-calendar-nl_NL.mo CHANGED
Binary file
lang/the-events-calendar-pl_PL.mo CHANGED
Binary file
lang/the-events-calendar-ru_RU.mo CHANGED
Binary file
lang/the-events-calendar-tr_TR.mo CHANGED
Binary file
lang/the-events-calendar-zh_TW.mo DELETED
Binary file
lang/the-events-calendar.pot CHANGED
@@ -5,11 +5,11 @@ msgstr ""
5
  "Project-Id-Version: The Events Calendar 5.2.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
- "POT-Creation-Date: 2020-09-24 06:38:54+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "PO-Revision-Date: 2020-09-24 06:38\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
@@ -47,7 +47,7 @@ msgstr ""
47
  msgid "%s"
48
  msgstr ""
49
 
50
- #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4177
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  msgstr ""
@@ -57,8 +57,8 @@ msgid "Add %s"
57
  msgstr ""
58
 
59
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
60
- #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2045
61
- #: src/Tribe/Main.php:5273 src/Tribe/Main.php:5320 src/Tribe/Organizer.php:93
62
  #: src/Tribe/Venue.php:112
63
  msgid "Edit %s"
64
  msgstr ""
@@ -69,7 +69,7 @@ msgstr ""
69
  msgid "Import"
70
  msgstr ""
71
 
72
- #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4225
73
  msgid "Settings"
74
  msgstr ""
75
 
@@ -129,7 +129,7 @@ msgid ""
129
  "refresh and try again."
130
  msgstr ""
131
 
132
- #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2064
133
  msgid "%s Categories"
134
  msgstr ""
135
 
@@ -165,7 +165,7 @@ msgstr ""
165
 
166
  #: src/Tribe/Aggregator/API/Origins.php:47
167
  #: src/Tribe/Aggregator/Record/gCal.php:14
168
- #: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:122
169
  #: src/admin-views/aggregator/settings.php:618
170
  msgid "Google Calendar"
171
  msgstr ""
@@ -1652,182 +1652,182 @@ msgstr ""
1652
  msgid "Merge Duplicates"
1653
  msgstr ""
1654
 
1655
- #: src/Tribe/Assets.php:720 src/deprecated/Tribe__Events__Asset__Dynamic.php:26
1656
  msgid "Sunday"
1657
  msgstr ""
1658
 
1659
- #: src/Tribe/Assets.php:721 src/deprecated/Tribe__Events__Asset__Dynamic.php:27
1660
  msgid "Monday"
1661
  msgstr ""
1662
 
1663
- #: src/Tribe/Assets.php:722 src/deprecated/Tribe__Events__Asset__Dynamic.php:28
1664
  msgid "Tuesday"
1665
  msgstr ""
1666
 
1667
- #: src/Tribe/Assets.php:723 src/deprecated/Tribe__Events__Asset__Dynamic.php:29
1668
  msgid "Wednesday"
1669
  msgstr ""
1670
 
1671
- #: src/Tribe/Assets.php:724 src/deprecated/Tribe__Events__Asset__Dynamic.php:30
1672
  msgid "Thursday"
1673
  msgstr ""
1674
 
1675
- #: src/Tribe/Assets.php:725 src/deprecated/Tribe__Events__Asset__Dynamic.php:31
1676
  msgid "Friday"
1677
  msgstr ""
1678
 
1679
- #: src/Tribe/Assets.php:726 src/deprecated/Tribe__Events__Asset__Dynamic.php:32
1680
  msgid "Saturday"
1681
  msgstr ""
1682
 
1683
- #: src/Tribe/Assets.php:729 src/deprecated/Tribe__Events__Asset__Dynamic.php:35
1684
  msgid "Sun"
1685
  msgstr ""
1686
 
1687
- #: src/Tribe/Assets.php:730 src/deprecated/Tribe__Events__Asset__Dynamic.php:36
1688
  msgid "Mon"
1689
  msgstr ""
1690
 
1691
- #: src/Tribe/Assets.php:731 src/deprecated/Tribe__Events__Asset__Dynamic.php:37
1692
  msgid "Tue"
1693
  msgstr ""
1694
 
1695
- #: src/Tribe/Assets.php:732 src/deprecated/Tribe__Events__Asset__Dynamic.php:38
1696
  msgid "Wed"
1697
  msgstr ""
1698
 
1699
- #: src/Tribe/Assets.php:733 src/deprecated/Tribe__Events__Asset__Dynamic.php:39
1700
  msgid "Thu"
1701
  msgstr ""
1702
 
1703
- #: src/Tribe/Assets.php:734 src/deprecated/Tribe__Events__Asset__Dynamic.php:40
1704
  msgid "Fri"
1705
  msgstr ""
1706
 
1707
- #: src/Tribe/Assets.php:735 src/deprecated/Tribe__Events__Asset__Dynamic.php:41
1708
  msgid "Sat"
1709
  msgstr ""
1710
 
1711
- #: src/Tribe/Assets.php:738 src/deprecated/Tribe__Events__Asset__Dynamic.php:44
1712
  msgid "January"
1713
  msgstr ""
1714
 
1715
- #: src/Tribe/Assets.php:739 src/deprecated/Tribe__Events__Asset__Dynamic.php:45
1716
  msgid "February"
1717
  msgstr ""
1718
 
1719
- #: src/Tribe/Assets.php:740 src/deprecated/Tribe__Events__Asset__Dynamic.php:46
1720
  msgid "March"
1721
  msgstr ""
1722
 
1723
- #: src/Tribe/Assets.php:741 src/deprecated/Tribe__Events__Asset__Dynamic.php:47
1724
  msgid "April"
1725
  msgstr ""
1726
 
1727
- #: src/Tribe/Assets.php:742 src/Tribe/Assets.php:756
1728
  #: src/deprecated/Tribe__Events__Asset__Dynamic.php:48
1729
  #: src/deprecated/Tribe__Events__Asset__Dynamic.php:62
1730
  msgid "May"
1731
  msgstr ""
1732
 
1733
- #: src/Tribe/Assets.php:743 src/deprecated/Tribe__Events__Asset__Dynamic.php:49
1734
  msgid "June"
1735
  msgstr ""
1736
 
1737
- #: src/Tribe/Assets.php:744 src/deprecated/Tribe__Events__Asset__Dynamic.php:50
1738
  msgid "July"
1739
  msgstr ""
1740
 
1741
- #: src/Tribe/Assets.php:745 src/deprecated/Tribe__Events__Asset__Dynamic.php:51
1742
  msgid "August"
1743
  msgstr ""
1744
 
1745
- #: src/Tribe/Assets.php:746 src/deprecated/Tribe__Events__Asset__Dynamic.php:52
1746
  msgid "September"
1747
  msgstr ""
1748
 
1749
- #: src/Tribe/Assets.php:747 src/deprecated/Tribe__Events__Asset__Dynamic.php:53
1750
  msgid "October"
1751
  msgstr ""
1752
 
1753
- #: src/Tribe/Assets.php:748 src/deprecated/Tribe__Events__Asset__Dynamic.php:54
1754
  msgid "November"
1755
  msgstr ""
1756
 
1757
- #: src/Tribe/Assets.php:749 src/deprecated/Tribe__Events__Asset__Dynamic.php:55
1758
  msgid "December"
1759
  msgstr ""
1760
 
1761
- #: src/Tribe/Assets.php:752 src/deprecated/Tribe__Events__Asset__Dynamic.php:58
1762
  msgid "Jan"
1763
  msgstr ""
1764
 
1765
- #: src/Tribe/Assets.php:753 src/deprecated/Tribe__Events__Asset__Dynamic.php:59
1766
  msgid "Feb"
1767
  msgstr ""
1768
 
1769
- #: src/Tribe/Assets.php:754 src/deprecated/Tribe__Events__Asset__Dynamic.php:60
1770
  msgid "Mar"
1771
  msgstr ""
1772
 
1773
- #: src/Tribe/Assets.php:755 src/deprecated/Tribe__Events__Asset__Dynamic.php:61
1774
  msgid "Apr"
1775
  msgstr ""
1776
 
1777
- #: src/Tribe/Assets.php:757 src/deprecated/Tribe__Events__Asset__Dynamic.php:63
1778
  msgid "Jun"
1779
  msgstr ""
1780
 
1781
- #: src/Tribe/Assets.php:758 src/deprecated/Tribe__Events__Asset__Dynamic.php:64
1782
  msgid "Jul"
1783
  msgstr ""
1784
 
1785
- #: src/Tribe/Assets.php:759 src/deprecated/Tribe__Events__Asset__Dynamic.php:65
1786
  msgid "Aug"
1787
  msgstr ""
1788
 
1789
- #: src/Tribe/Assets.php:760 src/deprecated/Tribe__Events__Asset__Dynamic.php:66
1790
  msgid "Sep"
1791
  msgstr ""
1792
 
1793
- #: src/Tribe/Assets.php:761 src/deprecated/Tribe__Events__Asset__Dynamic.php:67
1794
  msgid "Oct"
1795
  msgstr ""
1796
 
1797
- #: src/Tribe/Assets.php:762 src/deprecated/Tribe__Events__Asset__Dynamic.php:68
1798
  msgid "Nov"
1799
  msgstr ""
1800
 
1801
- #: src/Tribe/Assets.php:763 src/deprecated/Tribe__Events__Asset__Dynamic.php:69
1802
  msgid "Dec"
1803
  msgstr ""
1804
 
1805
- #: src/Tribe/Assets.php:766 src/deprecated/Tribe__Events__Asset__Dynamic.php:72
1806
  msgid ""
1807
  "This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
1808
  msgstr ""
1809
 
1810
- #: src/Tribe/Assets.php:767 src/deprecated/Tribe__Events__Asset__Dynamic.php:73
1811
  msgid "This event is at %%starttime%% on %%startdatewithyear%%."
1812
  msgstr ""
1813
 
1814
- #: src/Tribe/Assets.php:768 src/deprecated/Tribe__Events__Asset__Dynamic.php:74
1815
  msgid "This event is all day on %%startdatewithyear%%."
1816
  msgstr ""
1817
 
1818
- #: src/Tribe/Assets.php:769 src/deprecated/Tribe__Events__Asset__Dynamic.php:75
1819
  msgid ""
1820
  "This event starts at %%starttime%% on %%startdatenoyear%% and ends at %"
1821
  "%endtime%% on %%enddatewithyear%%"
1822
  msgstr ""
1823
 
1824
- #: src/Tribe/Assets.php:770 src/deprecated/Tribe__Events__Asset__Dynamic.php:76
1825
  msgid ""
1826
  "This event starts at %%starttime%% on %%startdatenoyear%% and ends on %"
1827
  "%enddatewithyear%%"
1828
  msgstr ""
1829
 
1830
- #: src/Tribe/Assets.php:771 src/deprecated/Tribe__Events__Asset__Dynamic.php:77
1831
  msgid ""
1832
  "This event is all day starting on %%startdatenoyear%% and ending on %"
1833
  "%enddatewithyear%%."
@@ -1999,7 +1999,7 @@ msgstr ""
1999
  msgid "Show Featured Event Images"
2000
  msgstr ""
2001
 
2002
- #: src/Tribe/Editor/Blocks/Event_Links.php:27 src/Tribe/iCal.php:123
2003
  msgid "iCal Export"
2004
  msgstr ""
2005
 
@@ -2027,7 +2027,7 @@ msgstr ""
2027
  #: src/Tribe/Template/Single_Event.php:121
2028
  #: src/Tribe/Views/V2/Template_Bootstrap.php:136
2029
  #: src/Tribe/Views/V2/Template_Bootstrap.php:176
2030
- #: src/Tribe/Views/V2/Template_Bootstrap.php:468
2031
  msgid "This %s has passed."
2032
  msgstr ""
2033
 
@@ -2614,7 +2614,8 @@ msgctxt ""
2614
  msgid "Create or Find %s"
2615
  msgstr ""
2616
 
2617
- #: src/Tribe/List_Widget.php:32
 
2618
  msgid "A widget that displays upcoming events."
2619
  msgstr ""
2620
 
@@ -2628,201 +2629,201 @@ msgstr ""
2628
 
2629
  #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.2.0) #-#-#-#-#
2630
  #. Plugin Name of the plugin/theme
2631
- #: src/Tribe/Main.php:945 src/Tribe/Main.php:1400 src/Tribe/Privacy.php:29
2632
  #: src/admin-views/admin-welcome-message.php:29
2633
  #: src/functions/template-tags/general.php:1421 the-events-calendar.php:57
2634
  msgid "The Events Calendar"
2635
  msgstr ""
2636
 
2637
- #: src/Tribe/Main.php:952
2638
  msgid "month"
2639
  msgstr ""
2640
 
2641
- #: src/Tribe/Main.php:953
2642
  msgid "list"
2643
  msgstr ""
2644
 
2645
- #: src/Tribe/Main.php:954
2646
  msgid "upcoming"
2647
  msgstr ""
2648
 
2649
- #: src/Tribe/Main.php:955
2650
  msgid "past"
2651
  msgstr ""
2652
 
2653
- #: src/Tribe/Main.php:956
2654
  msgid "day"
2655
  msgstr ""
2656
 
2657
- #: src/Tribe/Main.php:957
2658
  msgid "today"
2659
  msgstr ""
2660
 
2661
- #: src/Tribe/Main.php:958
2662
  msgctxt "featured events slug"
2663
  msgid "featured"
2664
  msgstr ""
2665
 
2666
- #: src/Tribe/Main.php:959
2667
  msgctxt "all events slug"
2668
  msgid "all"
2669
  msgstr ""
2670
 
2671
- #: src/Tribe/Main.php:983
2672
  msgid "Initializing Tribe Events on %s"
2673
  msgstr ""
2674
 
2675
- #: src/Tribe/Main.php:1041 src/Tribe/Main.php:1043
2676
  msgid "Welcome to The Events Calendar!"
2677
  msgstr ""
2678
 
2679
- #: src/Tribe/Main.php:1189
2680
  msgid ""
2681
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
2682
  "show its calendar in place of the page."
2683
  msgstr ""
2684
 
2685
- #: src/Tribe/Main.php:1192
2686
  msgid "Ask the site administrator to edit the %s slug"
2687
  msgstr ""
2688
 
2689
- #: src/Tribe/Main.php:1194
2690
  msgid "Edit the %s slug"
2691
  msgstr ""
2692
 
2693
- #: src/Tribe/Main.php:1198
2694
  msgid " ask the site administrator to set a different Events URL slug."
2695
  msgstr ""
2696
 
2697
- #: src/Tribe/Main.php:1203
2698
  msgid "edit Events settings."
2699
  msgstr ""
2700
 
2701
- #: src/Tribe/Main.php:1206
2702
  msgid "%1$s or %2$s"
2703
  msgstr ""
2704
 
2705
- #: src/Tribe/Main.php:1275
2706
  msgid "Upgrade your calendar views"
2707
  msgstr ""
2708
 
2709
- #: src/Tribe/Main.php:1311
2710
  msgid "Upgrade"
2711
  msgstr ""
2712
 
2713
- #: src/Tribe/Main.php:1360
2714
  msgid "New User Primer"
2715
  msgstr ""
2716
 
2717
- #: src/Tribe/Main.php:1362
2718
  msgid ""
2719
  "We are committed to helping make your calendar spectacular and have a wealth "
2720
  "of resources available, including a handy %s to get your calendar up and "
2721
  "running."
2722
  msgstr ""
2723
 
2724
- #: src/Tribe/Main.php:1373
2725
  msgid "Support for The Events Calendar"
2726
  msgstr ""
2727
 
2728
- #: src/Tribe/Main.php:1376
2729
  msgid ""
2730
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
2731
  "available to you."
2732
  msgstr ""
2733
 
2734
- #: src/Tribe/Main.php:1376
2735
  msgid "Settings overview"
2736
  msgstr ""
2737
 
2738
- #: src/Tribe/Main.php:1378
2739
  msgid ""
2740
  "%s: A complete look at the features you can expect to see right out of the "
2741
  "box as well as how to use them."
2742
  msgstr ""
2743
 
2744
- #: src/Tribe/Main.php:1378
2745
  msgid "Features overview"
2746
  msgstr ""
2747
 
2748
- #: src/Tribe/Main.php:1380
2749
  msgid ""
2750
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
2751
  "needs, including custom layouts and styles."
2752
  msgstr ""
2753
 
2754
- #: src/Tribe/Main.php:1380
2755
  msgid "Themer's Guide"
2756
  msgstr ""
2757
 
2758
- #: src/Tribe/Main.php:1382
2759
  msgid ""
2760
  "%s: An overview of the default templates and styles that are included in the "
2761
  "plugin, as well as how to change them."
2762
  msgstr ""
2763
 
2764
- #: src/Tribe/Main.php:1382
2765
  msgid "Using stylesheets and page templates"
2766
  msgstr ""
2767
 
2768
- #: src/Tribe/Main.php:1384
2769
  msgid ""
2770
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
2771
  "coming from and how to fix it."
2772
  msgstr ""
2773
 
2774
- #: src/Tribe/Main.php:1384
2775
  msgid "Troubleshooting common problems"
2776
  msgstr ""
2777
 
2778
- #: src/Tribe/Main.php:1386
2779
  msgid ""
2780
  "%s: Code and guides for customizing your calendar in useful and interesting "
2781
  "ways."
2782
  msgstr ""
2783
 
2784
- #: src/Tribe/Main.php:1386
2785
  msgid "Customizing the Events plugins"
2786
  msgstr ""
2787
 
2788
- #: src/Tribe/Main.php:1401
2789
  msgid "Events Tickets"
2790
  msgstr ""
2791
 
2792
- #: src/Tribe/Main.php:1402
2793
  msgid ""
2794
  "If you have tried the above steps and are still having trouble, you can post "
2795
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
2796
  "monitors these forums once a week and would be happy to assist you there. "
2797
  msgstr ""
2798
 
2799
- #: src/Tribe/Main.php:1404 src/Tribe/Main.php:1412
2800
  msgid "premium support on our website"
2801
  msgstr ""
2802
 
2803
- #: src/Tribe/Main.php:1405
2804
  msgid ""
2805
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
2806
  "purchase of any of our premium plugins. Pick up a license and you can post "
2807
  "there directly and expect a response within 24-48 hours during weekdays"
2808
  msgstr ""
2809
 
2810
- #: src/Tribe/Main.php:1409
2811
  msgid "open-source forum on WordPress.org"
2812
  msgstr ""
2813
 
2814
- #: src/Tribe/Main.php:1410
2815
  msgid ""
2816
  "If you have tried the above steps and are still having trouble, you can post "
2817
  "a new thread to our %s. Our support staff monitors these forums once a week "
2818
  "and would be happy to assist you there."
2819
  msgstr ""
2820
 
2821
- #: src/Tribe/Main.php:1413
2822
  msgid "Events Calendar PRO"
2823
  msgstr ""
2824
 
2825
- #: src/Tribe/Main.php:1414
2826
  msgid ""
2827
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
2828
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
@@ -2830,427 +2831,427 @@ msgid ""
2830
  "weekdays."
2831
  msgstr ""
2832
 
2833
- #: src/Tribe/Main.php:1418
2834
  msgid "post a thread"
2835
  msgstr ""
2836
 
2837
- #: src/Tribe/Main.php:1419
2838
  msgid ""
2839
  "If you have a valid license for one of our paid plugins, you can %s in our "
2840
  "premium support forums. Our support team monitors the forums and will "
2841
  "respond to your thread within 24-48 hours (during the week)."
2842
  msgstr ""
2843
 
2844
- #: src/Tribe/Main.php:1462
2845
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
2846
  #: src/functions/template-tags/general.php:130
2847
  msgid "Events"
2848
  msgstr ""
2849
 
2850
- #: src/Tribe/Main.php:1470 src/admin-views/aggregator/tabs/import-form.php:227
2851
  #: src/admin-views/aggregator/tabs/import-form.php:239
2852
  #: src/functions/template-tags/general.php:74
2853
  msgid "Event"
2854
  msgstr ""
2855
 
2856
- #: src/Tribe/Main.php:1687
2857
  msgid ""
2858
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
2859
  "your WordPress install."
2860
  msgstr ""
2861
 
2862
- #: src/Tribe/Main.php:1690
2863
  msgid ""
2864
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
2865
  "about moving you to a newer version of PHP."
2866
  msgstr ""
2867
 
2868
- #: src/Tribe/Main.php:1722
2869
  msgid ""
2870
  "To continue using The Events Calendar, please install the latest version of"
2871
  msgstr ""
2872
 
2873
- #: src/Tribe/Main.php:1724 src/Tribe/Main.php:1725
2874
  msgid "Event Tickets"
2875
  msgstr ""
2876
 
2877
- #: src/Tribe/Main.php:1760
2878
  msgid ""
2879
  "It appears as if the tribe-common libraries cannot be found! The directory "
2880
  "should be in the \"common/\" directory in the events calendar plugin."
2881
  msgstr ""
2882
 
2883
- #: src/Tribe/Main.php:1996 src/Tribe/Main.php:2455
2884
  msgid "category"
2885
  msgstr ""
2886
 
2887
- #: src/Tribe/Main.php:2010 src/Tribe/Main.php:2454
2888
  msgid "tag"
2889
  msgstr ""
2890
 
2891
- #: src/Tribe/Main.php:2043 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
2892
  msgid "Add New"
2893
  msgstr ""
2894
 
2895
- #: src/Tribe/Main.php:2044 src/Tribe/Main.php:2181 src/Tribe/Main.php:2182
2896
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
2897
  msgid "Add New %s"
2898
  msgstr ""
2899
 
2900
- #: src/Tribe/Main.php:2046 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
2901
  msgid "New %s"
2902
  msgstr ""
2903
 
2904
- #: src/Tribe/Main.php:2047 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
2905
  #: src/views/month/single-day.php:26
2906
  msgid "View %s"
2907
  msgstr ""
2908
 
2909
- #: src/Tribe/Main.php:2048 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
2910
  msgid "Search %s"
2911
  msgstr ""
2912
 
2913
- #: src/Tribe/Main.php:2049 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
2914
  msgid "No %s found"
2915
  msgstr ""
2916
 
2917
- #: src/Tribe/Main.php:2050 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
2918
  msgid "No %s found in Trash"
2919
  msgstr ""
2920
 
2921
- #: src/Tribe/Main.php:2051 src/Tribe/Main.php:2138 src/Tribe/Main.php:2158
2922
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
2923
  msgid "%s published."
2924
  msgstr ""
2925
 
2926
- #: src/Tribe/Main.php:2052 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
2927
  msgid "%s published privately."
2928
  msgstr ""
2929
 
2930
- #: src/Tribe/Main.php:2053 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
2931
  msgid "%s reverted to draft."
2932
  msgstr ""
2933
 
2934
- #: src/Tribe/Main.php:2054 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
2935
  msgid "%s scheduled."
2936
  msgstr ""
2937
 
2938
- #: src/Tribe/Main.php:2055 src/Tribe/Main.php:2097 src/Tribe/Main.php:2132
2939
- #: src/Tribe/Main.php:2135 src/Tribe/Main.php:2152 src/Tribe/Main.php:2155
2940
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
2941
  msgid "%s updated."
2942
  msgstr ""
2943
 
2944
- #: src/Tribe/Main.php:2065
2945
  msgid "%s Category"
2946
  msgstr ""
2947
 
2948
- #: src/Tribe/Main.php:2066
2949
  msgid "Search %s Categories"
2950
  msgstr ""
2951
 
2952
- #: src/Tribe/Main.php:2067
2953
  msgid "All %s Categories"
2954
  msgstr ""
2955
 
2956
- #: src/Tribe/Main.php:2068
2957
  msgid "Parent %s Category"
2958
  msgstr ""
2959
 
2960
- #: src/Tribe/Main.php:2069
2961
  msgid "Parent %s Category:"
2962
  msgstr ""
2963
 
2964
- #: src/Tribe/Main.php:2070
2965
  msgid "Edit %s Category"
2966
  msgstr ""
2967
 
2968
- #: src/Tribe/Main.php:2071
2969
  msgid "Update %s Category"
2970
  msgstr ""
2971
 
2972
- #: src/Tribe/Main.php:2072
2973
  msgid "Add New %s Category"
2974
  msgstr ""
2975
 
2976
- #: src/Tribe/Main.php:2073
2977
  msgid "New %s Category Name"
2978
  msgstr ""
2979
 
2980
- #: src/Tribe/Main.php:2090
2981
  msgid "%1$s updated. %2$sView %1$s%3$s"
2982
  msgstr ""
2983
 
2984
- #: src/Tribe/Main.php:2095 src/Tribe/Main.php:2133 src/Tribe/Main.php:2153
2985
  msgid "Custom field updated."
2986
  msgstr ""
2987
 
2988
- #: src/Tribe/Main.php:2096 src/Tribe/Main.php:2134 src/Tribe/Main.php:2154
2989
  msgid "Custom field deleted."
2990
  msgstr ""
2991
 
2992
  #. translators: %s: date and time of the revision
2993
- #: src/Tribe/Main.php:2099 src/Tribe/Main.php:2137
2994
  msgid "%1$s restored to revision from %2$s"
2995
  msgstr ""
2996
 
2997
- #: src/Tribe/Main.php:2101
2998
  msgid "%1$s published. %2$sView %3$s"
2999
  msgstr ""
3000
 
3001
- #: src/Tribe/Main.php:2106 src/Tribe/Main.php:2139 src/Tribe/Main.php:2159
3002
  msgid "%s saved."
3003
  msgstr ""
3004
 
3005
- #: src/Tribe/Main.php:2108
3006
  msgid "%1$s submitted. %2$sPreview %3$s"
3007
  msgstr ""
3008
 
3009
- #: src/Tribe/Main.php:2114
3010
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
3011
  msgstr ""
3012
 
3013
  #. translators: Publish box date format, see http://php.net/date
3014
- #: src/Tribe/Main.php:2117 src/Tribe/Main.php:2145 src/Tribe/Main.php:2165
3015
  msgid "M j, Y @ G:i"
3016
  msgstr ""
3017
 
3018
- #: src/Tribe/Main.php:2123
3019
  msgid "%1$s draft updated. %2$sPreview %3$s"
3020
  msgstr ""
3021
 
3022
- #: src/Tribe/Main.php:2140 src/Tribe/Main.php:2160
3023
  msgid "%s submitted."
3024
  msgstr ""
3025
 
3026
- #: src/Tribe/Main.php:2142 src/Tribe/Main.php:2162
3027
  msgid "%1$s scheduled for: %2$s."
3028
  msgstr ""
3029
 
3030
- #: src/Tribe/Main.php:2147 src/Tribe/Main.php:2167
3031
  msgid "%s draft updated."
3032
  msgstr ""
3033
 
3034
  #. translators: %s: date and time of the revision
3035
- #: src/Tribe/Main.php:2157
3036
  msgid "%s restored to revision from %s"
3037
  msgstr ""
3038
 
3039
- #: src/Tribe/Main.php:2211
3040
  msgid ""
3041
  "Without a defined location your event will not display a %sGoogle Rich "
3042
  "Snippet%s on the search results."
3043
  msgstr ""
3044
 
3045
- #: src/Tribe/Main.php:2456
3046
  msgid "page"
3047
  msgstr ""
3048
 
3049
- #: src/Tribe/Main.php:2457 src/functions/template-tags/general.php:102
3050
  msgid "event"
3051
  msgstr ""
3052
 
3053
- #: src/Tribe/Main.php:2458 src/functions/template-tags/general.php:158
3054
  msgid "events"
3055
  msgstr ""
3056
 
3057
- #: src/Tribe/Main.php:2459
3058
  msgid "all"
3059
  msgstr ""
3060
 
3061
- #: src/Tribe/Main.php:2841
3062
  msgid " (View Full %1$s Description Here: %2$s)"
3063
  msgstr ""
3064
 
3065
- #: src/Tribe/Main.php:3620 src/Tribe/Main.php:3655
3066
  #: src/functions/template-tags/day.php:157
3067
  #: src/functions/template-tags/day.php:178
3068
  msgid "Date out of range."
3069
  msgstr ""
3070
 
3071
- #: src/Tribe/Main.php:3697
3072
  msgid "%s Options"
3073
  msgstr ""
3074
 
3075
- #: src/Tribe/Main.php:3706 src/Tribe/Main.php:3719
3076
  msgid "%s Information"
3077
  msgstr ""
3078
 
3079
- #: src/Tribe/Main.php:4051
3080
  msgid "Support"
3081
  msgstr ""
3082
 
3083
- #: src/Tribe/Main.php:4054
3084
  msgid "View All Add-Ons"
3085
  msgstr ""
3086
 
3087
- #: src/Tribe/Main.php:4074
3088
  msgid "News from Modern Tribe"
3089
  msgstr ""
3090
 
3091
- #: src/Tribe/Main.php:4119
3092
  msgid "Additional Functionality"
3093
  msgstr ""
3094
 
3095
- #: src/Tribe/Main.php:4124
3096
  msgid ""
3097
  "Looking for additional functionality including recurring events, ticket "
3098
  "sales, publicly submitted events, new views and more?"
3099
  msgstr ""
3100
 
3101
- #: src/Tribe/Main.php:4125
3102
  msgid "Check out the %savailable add-ons%s."
3103
  msgstr ""
3104
 
3105
- #: src/Tribe/Main.php:4226
3106
  msgid "Calendar"
3107
  msgstr ""
3108
 
3109
- #: src/Tribe/Main.php:4242
3110
  msgid "List"
3111
  msgstr ""
3112
 
3113
- #: src/Tribe/Main.php:4260
3114
  msgid "Month"
3115
  msgstr ""
3116
 
3117
- #: src/Tribe/Main.php:4277 src/admin-views/aggregator/fields/schedule.php:43
3118
  #: src/admin-views/aggregator/fields/schedule.php:61
3119
  msgid "Day"
3120
  msgstr ""
3121
 
3122
- #: src/Tribe/Main.php:4300
3123
  msgid "Search for %s by Keyword."
3124
  msgstr ""
3125
 
3126
- #: src/Tribe/Main.php:4303
3127
  #: src/views/v2/components/events-bar/search-button.php:24
3128
  msgid "Search"
3129
  msgstr ""
3130
 
3131
- #: src/Tribe/Main.php:4304
3132
  msgid "Keyword"
3133
  msgstr ""
3134
 
3135
- #: src/Tribe/Main.php:4321
3136
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3137
  msgstr ""
3138
 
3139
- #: src/Tribe/Main.php:4322
3140
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3141
  msgstr ""
3142
 
3143
- #: src/Tribe/Main.php:4323
3144
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3145
  msgstr ""
3146
 
3147
- #: src/Tribe/Main.php:4324
3148
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3149
  msgstr ""
3150
 
3151
- #: src/Tribe/Main.php:4325
3152
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3153
  msgstr ""
3154
 
3155
- #: src/Tribe/Main.php:4326
3156
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3157
  msgstr ""
3158
 
3159
- #: src/Tribe/Main.php:4327
3160
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3161
  msgstr ""
3162
 
3163
- #: src/Tribe/Main.php:4328
3164
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3165
  msgstr ""
3166
 
3167
- #: src/Tribe/Main.php:4329
3168
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3169
  msgstr ""
3170
 
3171
- #: src/Tribe/Main.php:4330
3172
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3173
  msgstr ""
3174
 
3175
- #: src/Tribe/Main.php:4331
3176
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3177
  msgstr ""
3178
 
3179
- #: src/Tribe/Main.php:4332
3180
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3181
  msgstr ""
3182
 
3183
- #: src/Tribe/Main.php:4336
3184
  msgid "4 digit year hyphen 2 digit month"
3185
  msgstr ""
3186
 
3187
- #: src/Tribe/Main.php:4337 src/Tribe/Main.php:4339
3188
  msgid "1 digit month slash 4 digit year"
3189
  msgstr ""
3190
 
3191
- #: src/Tribe/Main.php:4338 src/Tribe/Main.php:4340
3192
  msgid "2 digit month slash 4 digit year"
3193
  msgstr ""
3194
 
3195
- #: src/Tribe/Main.php:4341 src/Tribe/Main.php:4342 src/Tribe/Main.php:4343
3196
  msgid "1 digit month hyphen 4 digit year"
3197
  msgstr ""
3198
 
3199
- #: src/Tribe/Main.php:4344
3200
  msgid "2 digit month hyphen 4 digit year"
3201
  msgstr ""
3202
 
3203
- #: src/Tribe/Main.php:4345
3204
  msgid "4 digit year dot 2 digit month"
3205
  msgstr ""
3206
 
3207
- #: src/Tribe/Main.php:4346 src/Tribe/Main.php:4347
3208
  msgid "2 digit month dot 4 digit year"
3209
  msgstr ""
3210
 
3211
- #: src/Tribe/Main.php:4376 src/Tribe/Main.php:4413
3212
  #: src/admin-views/aggregator/origins/refine.php:7
3213
  msgid "Date"
3214
  msgstr ""
3215
 
3216
- #: src/Tribe/Main.php:4378
3217
  msgid "Search for %s by Date. Please use the format %s."
3218
  msgstr ""
3219
 
3220
- #: src/Tribe/Main.php:4391
3221
  msgid "%s In"
3222
  msgstr ""
3223
 
3224
- #: src/Tribe/Main.php:4393
3225
  msgid "Search for %s by month. Please use the format %s."
3226
  msgstr ""
3227
 
3228
- #: src/Tribe/Main.php:4396
3229
  msgid "%s From"
3230
  msgstr ""
3231
 
3232
- #: src/Tribe/Main.php:4399
3233
  msgid "Day Of"
3234
  msgstr ""
3235
 
3236
- #: src/Tribe/Main.php:4479
3237
  msgid "Once Every 30 Mins"
3238
  msgstr ""
3239
 
3240
- #: src/Tribe/Main.php:5206
3241
  msgid ""
3242
  "Your version of The Events Calendar is not up-to-date with one of your The "
3243
  "Events Calendar add-ons. Please %supdate now.%s"
3244
  msgstr ""
3245
 
3246
- #: src/Tribe/Main.php:5218
3247
  msgid ""
3248
  "The following plugins are out of date: %1$s. All add-ons contain "
3249
  "dependencies on The Events Calendar and will not function properly unless "
3250
  "paired with the right version. %2$sLearn More%3$s."
3251
  msgstr ""
3252
 
3253
- #: src/Tribe/Main.php:5257 src/Tribe/Main.php:5314
3254
  msgid "Use Saved %s:"
3255
  msgstr ""
3256
 
@@ -4753,7 +4754,7 @@ msgctxt "day_view"
4753
  msgid "%1$s for %2$s"
4754
  msgstr ""
4755
 
4756
- #: src/Tribe/Views/V2/View.php:1882 src/views/v2/day/event/date/featured.php:27
4757
  #: src/views/v2/day/event/date/featured.php:28
4758
  #: src/views/v2/day/event/date/featured.php:32
4759
  #: src/views/v2/latest-past/event/date/featured.php:27
@@ -4773,6 +4774,9 @@ msgstr ""
4773
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:27
4774
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:28
4775
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:32
 
 
 
4776
  msgid "Featured"
4777
  msgstr ""
4778
 
@@ -4802,38 +4806,42 @@ msgid "Jump to the %1$snext upcoming event(s)%2$s."
4802
  msgstr ""
4803
 
4804
  #. translators: %s: Events (plural).
4805
- #: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:54
4806
  msgid "Export %s"
4807
  msgstr ""
4808
 
4809
- #: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:59 src/Tribe/iCal.php:176
4810
  msgid ""
4811
  "Use this to share calendar data with Google Calendar, Apple iCal and other "
4812
  "compatible apps"
4813
  msgstr ""
4814
 
4815
- #: src/Tribe/iCal.php:53
 
 
 
 
4816
  msgctxt "feed link"
4817
  msgid "&raquo;"
4818
  msgstr ""
4819
 
4820
- #: src/Tribe/iCal.php:54
4821
  msgid "%1$s %2$s iCal Feed"
4822
  msgstr ""
4823
 
4824
- #: src/Tribe/iCal.php:122 src/views/blocks/event-links.php:35
4825
  msgid "Add to Google Calendar"
4826
  msgstr ""
4827
 
4828
- #: src/Tribe/iCal.php:123 src/views/blocks/event-links.php:46
4829
  msgid "Download .ics file"
4830
  msgstr ""
4831
 
4832
- #: src/Tribe/iCal.php:175
4833
  msgid "Export Events"
4834
  msgstr ""
4835
 
4836
- #: src/Tribe/iCal.php:423
4837
  msgctxt "iCal feed description"
4838
  msgid "Events for %s"
4839
  msgstr ""
@@ -7543,7 +7551,7 @@ msgstr ""
7543
  msgid "Previous day"
7544
  msgstr ""
7545
 
7546
- #: src/views/v2/day.php:44 src/views/v2/list.php:43 src/views/v2/month.php:42
7547
  msgid "Loading..."
7548
  msgstr ""
7549
 
@@ -7622,6 +7630,16 @@ msgstr ""
7622
  msgid "Previous month"
7623
  msgstr ""
7624
 
 
 
 
 
 
 
 
 
 
 
7625
  #: src/views/widgets/list-widget.php:112
7626
  msgid "View All %s"
7627
  msgstr ""
5
  "Project-Id-Version: The Events Calendar 5.2.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
+ "POT-Creation-Date: 2020-10-20 15:45:50+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "PO-Revision-Date: 2020-10-20 15:45\n"
13
  "Last-Translator: \n"
14
  "Language-Team: \n"
15
 
47
  msgid "%s"
48
  msgstr ""
49
 
50
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4178
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  msgstr ""
57
  msgstr ""
58
 
59
  #: src/Tribe/Admin/Bar/Default_Configurator.php:62
60
+ #: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2046
61
+ #: src/Tribe/Main.php:5274 src/Tribe/Main.php:5321 src/Tribe/Organizer.php:93
62
  #: src/Tribe/Venue.php:112
63
  msgid "Edit %s"
64
  msgstr ""
69
  msgid "Import"
70
  msgstr ""
71
 
72
+ #: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4226
73
  msgid "Settings"
74
  msgstr ""
75
 
129
  "refresh and try again."
130
  msgstr ""
131
 
132
+ #: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2065
133
  msgid "%s Categories"
134
  msgstr ""
135
 
165
 
166
  #: src/Tribe/Aggregator/API/Origins.php:47
167
  #: src/Tribe/Aggregator/Record/gCal.php:14
168
+ #: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:131
169
  #: src/admin-views/aggregator/settings.php:618
170
  msgid "Google Calendar"
171
  msgstr ""
1652
  msgid "Merge Duplicates"
1653
  msgstr ""
1654
 
1655
+ #: src/Tribe/Assets.php:707 src/deprecated/Tribe__Events__Asset__Dynamic.php:26
1656
  msgid "Sunday"
1657
  msgstr ""
1658
 
1659
+ #: src/Tribe/Assets.php:708 src/deprecated/Tribe__Events__Asset__Dynamic.php:27
1660
  msgid "Monday"
1661
  msgstr ""
1662
 
1663
+ #: src/Tribe/Assets.php:709 src/deprecated/Tribe__Events__Asset__Dynamic.php:28
1664
  msgid "Tuesday"
1665
  msgstr ""
1666
 
1667
+ #: src/Tribe/Assets.php:710 src/deprecated/Tribe__Events__Asset__Dynamic.php:29
1668
  msgid "Wednesday"
1669
  msgstr ""
1670
 
1671
+ #: src/Tribe/Assets.php:711 src/deprecated/Tribe__Events__Asset__Dynamic.php:30
1672
  msgid "Thursday"
1673
  msgstr ""
1674
 
1675
+ #: src/Tribe/Assets.php:712 src/deprecated/Tribe__Events__Asset__Dynamic.php:31
1676
  msgid "Friday"
1677
  msgstr ""
1678
 
1679
+ #: src/Tribe/Assets.php:713 src/deprecated/Tribe__Events__Asset__Dynamic.php:32
1680
  msgid "Saturday"
1681
  msgstr ""
1682
 
1683
+ #: src/Tribe/Assets.php:716 src/deprecated/Tribe__Events__Asset__Dynamic.php:35
1684
  msgid "Sun"
1685
  msgstr ""
1686
 
1687
+ #: src/Tribe/Assets.php:717 src/deprecated/Tribe__Events__Asset__Dynamic.php:36
1688
  msgid "Mon"
1689
  msgstr ""
1690
 
1691
+ #: src/Tribe/Assets.php:718 src/deprecated/Tribe__Events__Asset__Dynamic.php:37
1692
  msgid "Tue"
1693
  msgstr ""
1694
 
1695
+ #: src/Tribe/Assets.php:719 src/deprecated/Tribe__Events__Asset__Dynamic.php:38
1696
  msgid "Wed"
1697
  msgstr ""
1698
 
1699
+ #: src/Tribe/Assets.php:720 src/deprecated/Tribe__Events__Asset__Dynamic.php:39
1700
  msgid "Thu"
1701
  msgstr ""
1702
 
1703
+ #: src/Tribe/Assets.php:721 src/deprecated/Tribe__Events__Asset__Dynamic.php:40
1704
  msgid "Fri"
1705
  msgstr ""
1706
 
1707
+ #: src/Tribe/Assets.php:722 src/deprecated/Tribe__Events__Asset__Dynamic.php:41
1708
  msgid "Sat"
1709
  msgstr ""
1710
 
1711
+ #: src/Tribe/Assets.php:725 src/deprecated/Tribe__Events__Asset__Dynamic.php:44
1712
  msgid "January"
1713
  msgstr ""
1714
 
1715
+ #: src/Tribe/Assets.php:726 src/deprecated/Tribe__Events__Asset__Dynamic.php:45
1716
  msgid "February"
1717
  msgstr ""
1718
 
1719
+ #: src/Tribe/Assets.php:727 src/deprecated/Tribe__Events__Asset__Dynamic.php:46
1720
  msgid "March"
1721
  msgstr ""
1722
 
1723
+ #: src/Tribe/Assets.php:728 src/deprecated/Tribe__Events__Asset__Dynamic.php:47
1724
  msgid "April"
1725
  msgstr ""
1726
 
1727
+ #: src/Tribe/Assets.php:729 src/Tribe/Assets.php:743
1728
  #: src/deprecated/Tribe__Events__Asset__Dynamic.php:48
1729
  #: src/deprecated/Tribe__Events__Asset__Dynamic.php:62
1730
  msgid "May"
1731
  msgstr ""
1732
 
1733
+ #: src/Tribe/Assets.php:730 src/deprecated/Tribe__Events__Asset__Dynamic.php:49
1734
  msgid "June"
1735
  msgstr ""
1736
 
1737
+ #: src/Tribe/Assets.php:731 src/deprecated/Tribe__Events__Asset__Dynamic.php:50
1738
  msgid "July"
1739
  msgstr ""
1740
 
1741
+ #: src/Tribe/Assets.php:732 src/deprecated/Tribe__Events__Asset__Dynamic.php:51
1742
  msgid "August"
1743
  msgstr ""
1744
 
1745
+ #: src/Tribe/Assets.php:733 src/deprecated/Tribe__Events__Asset__Dynamic.php:52
1746
  msgid "September"
1747
  msgstr ""
1748
 
1749
+ #: src/Tribe/Assets.php:734 src/deprecated/Tribe__Events__Asset__Dynamic.php:53
1750
  msgid "October"
1751
  msgstr ""
1752
 
1753
+ #: src/Tribe/Assets.php:735 src/deprecated/Tribe__Events__Asset__Dynamic.php:54
1754
  msgid "November"
1755
  msgstr ""
1756
 
1757
+ #: src/Tribe/Assets.php:736 src/deprecated/Tribe__Events__Asset__Dynamic.php:55
1758
  msgid "December"
1759
  msgstr ""
1760
 
1761
+ #: src/Tribe/Assets.php:739 src/deprecated/Tribe__Events__Asset__Dynamic.php:58
1762
  msgid "Jan"
1763
  msgstr ""
1764
 
1765
+ #: src/Tribe/Assets.php:740 src/deprecated/Tribe__Events__Asset__Dynamic.php:59
1766
  msgid "Feb"
1767
  msgstr ""
1768
 
1769
+ #: src/Tribe/Assets.php:741 src/deprecated/Tribe__Events__Asset__Dynamic.php:60
1770
  msgid "Mar"
1771
  msgstr ""
1772
 
1773
+ #: src/Tribe/Assets.php:742 src/deprecated/Tribe__Events__Asset__Dynamic.php:61
1774
  msgid "Apr"
1775
  msgstr ""
1776
 
1777
+ #: src/Tribe/Assets.php:744 src/deprecated/Tribe__Events__Asset__Dynamic.php:63
1778
  msgid "Jun"
1779
  msgstr ""
1780
 
1781
+ #: src/Tribe/Assets.php:745 src/deprecated/Tribe__Events__Asset__Dynamic.php:64
1782
  msgid "Jul"
1783
  msgstr ""
1784
 
1785
+ #: src/Tribe/Assets.php:746 src/deprecated/Tribe__Events__Asset__Dynamic.php:65
1786
  msgid "Aug"
1787
  msgstr ""
1788
 
1789
+ #: src/Tribe/Assets.php:747 src/deprecated/Tribe__Events__Asset__Dynamic.php:66
1790
  msgid "Sep"
1791
  msgstr ""
1792
 
1793
+ #: src/Tribe/Assets.php:748 src/deprecated/Tribe__Events__Asset__Dynamic.php:67
1794
  msgid "Oct"
1795
  msgstr ""
1796
 
1797
+ #: src/Tribe/Assets.php:749 src/deprecated/Tribe__Events__Asset__Dynamic.php:68
1798
  msgid "Nov"
1799
  msgstr ""
1800
 
1801
+ #: src/Tribe/Assets.php:750 src/deprecated/Tribe__Events__Asset__Dynamic.php:69
1802
  msgid "Dec"
1803
  msgstr ""
1804
 
1805
+ #: src/Tribe/Assets.php:753 src/deprecated/Tribe__Events__Asset__Dynamic.php:72
1806
  msgid ""
1807
  "This event is from %%starttime%% to %%endtime%% on %%startdatewithyear%%."
1808
  msgstr ""
1809
 
1810
+ #: src/Tribe/Assets.php:754 src/deprecated/Tribe__Events__Asset__Dynamic.php:73
1811
  msgid "This event is at %%starttime%% on %%startdatewithyear%%."
1812
  msgstr ""
1813
 
1814
+ #: src/Tribe/Assets.php:755 src/deprecated/Tribe__Events__Asset__Dynamic.php:74
1815
  msgid "This event is all day on %%startdatewithyear%%."
1816
  msgstr ""
1817
 
1818
+ #: src/Tribe/Assets.php:756 src/deprecated/Tribe__Events__Asset__Dynamic.php:75
1819
  msgid ""
1820
  "This event starts at %%starttime%% on %%startdatenoyear%% and ends at %"
1821
  "%endtime%% on %%enddatewithyear%%"
1822
  msgstr ""
1823
 
1824
+ #: src/Tribe/Assets.php:757 src/deprecated/Tribe__Events__Asset__Dynamic.php:76
1825
  msgid ""
1826
  "This event starts at %%starttime%% on %%startdatenoyear%% and ends on %"
1827
  "%enddatewithyear%%"
1828
  msgstr ""
1829
 
1830
+ #: src/Tribe/Assets.php:758 src/deprecated/Tribe__Events__Asset__Dynamic.php:77
1831
  msgid ""
1832
  "This event is all day starting on %%startdatenoyear%% and ending on %"
1833
  "%enddatewithyear%%."
1999
  msgid "Show Featured Event Images"
2000
  msgstr ""
2001
 
2002
+ #: src/Tribe/Editor/Blocks/Event_Links.php:27 src/Tribe/iCal.php:132
2003
  msgid "iCal Export"
2004
  msgstr ""
2005
 
2027
  #: src/Tribe/Template/Single_Event.php:121
2028
  #: src/Tribe/Views/V2/Template_Bootstrap.php:136
2029
  #: src/Tribe/Views/V2/Template_Bootstrap.php:176
2030
+ #: src/Tribe/Views/V2/Template_Bootstrap.php:485
2031
  msgid "This %s has passed."
2032
  msgstr ""
2033
 
2614
  msgid "Create or Find %s"
2615
  msgstr ""
2616
 
2617
+ #: src/Tribe/List_Widget.php:32 src/Tribe/Views/V2/Widgets/Widget_List.php:96
2618
+ #: src/Tribe/Views/V2/Widgets/Widget_List.php:99
2619
  msgid "A widget that displays upcoming events."
2620
  msgstr ""
2621
 
2629
 
2630
  #. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.2.0) #-#-#-#-#
2631
  #. Plugin Name of the plugin/theme
2632
+ #: src/Tribe/Main.php:946 src/Tribe/Main.php:1401 src/Tribe/Privacy.php:29
2633
  #: src/admin-views/admin-welcome-message.php:29
2634
  #: src/functions/template-tags/general.php:1421 the-events-calendar.php:57
2635
  msgid "The Events Calendar"
2636
  msgstr ""
2637
 
2638
+ #: src/Tribe/Main.php:953
2639
  msgid "month"
2640
  msgstr ""
2641
 
2642
+ #: src/Tribe/Main.php:954
2643
  msgid "list"
2644
  msgstr ""
2645
 
2646
+ #: src/Tribe/Main.php:955
2647
  msgid "upcoming"
2648
  msgstr ""
2649
 
2650
+ #: src/Tribe/Main.php:956
2651
  msgid "past"
2652
  msgstr ""
2653
 
2654
+ #: src/Tribe/Main.php:957
2655
  msgid "day"
2656
  msgstr ""
2657
 
2658
+ #: src/Tribe/Main.php:958
2659
  msgid "today"
2660
  msgstr ""
2661
 
2662
+ #: src/Tribe/Main.php:959
2663
  msgctxt "featured events slug"
2664
  msgid "featured"
2665
  msgstr ""
2666
 
2667
+ #: src/Tribe/Main.php:960
2668
  msgctxt "all events slug"
2669
  msgid "all"
2670
  msgstr ""
2671
 
2672
+ #: src/Tribe/Main.php:984
2673
  msgid "Initializing Tribe Events on %s"
2674
  msgstr ""
2675
 
2676
+ #: src/Tribe/Main.php:1042 src/Tribe/Main.php:1044
2677
  msgid "Welcome to The Events Calendar!"
2678
  msgstr ""
2679
 
2680
+ #: src/Tribe/Main.php:1190
2681
  msgid ""
2682
  "The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
2683
  "show its calendar in place of the page."
2684
  msgstr ""
2685
 
2686
+ #: src/Tribe/Main.php:1193
2687
  msgid "Ask the site administrator to edit the %s slug"
2688
  msgstr ""
2689
 
2690
+ #: src/Tribe/Main.php:1195
2691
  msgid "Edit the %s slug"
2692
  msgstr ""
2693
 
2694
+ #: src/Tribe/Main.php:1199
2695
  msgid " ask the site administrator to set a different Events URL slug."
2696
  msgstr ""
2697
 
2698
+ #: src/Tribe/Main.php:1204
2699
  msgid "edit Events settings."
2700
  msgstr ""
2701
 
2702
+ #: src/Tribe/Main.php:1207
2703
  msgid "%1$s or %2$s"
2704
  msgstr ""
2705
 
2706
+ #: src/Tribe/Main.php:1276
2707
  msgid "Upgrade your calendar views"
2708
  msgstr ""
2709
 
2710
+ #: src/Tribe/Main.php:1312
2711
  msgid "Upgrade"
2712
  msgstr ""
2713
 
2714
+ #: src/Tribe/Main.php:1361
2715
  msgid "New User Primer"
2716
  msgstr ""
2717
 
2718
+ #: src/Tribe/Main.php:1363
2719
  msgid ""
2720
  "We are committed to helping make your calendar spectacular and have a wealth "
2721
  "of resources available, including a handy %s to get your calendar up and "
2722
  "running."
2723
  msgstr ""
2724
 
2725
+ #: src/Tribe/Main.php:1374
2726
  msgid "Support for The Events Calendar"
2727
  msgstr ""
2728
 
2729
+ #: src/Tribe/Main.php:1377
2730
  msgid ""
2731
  "%s: A thorough walkthrough of The Events Calendar and the settings that are "
2732
  "available to you."
2733
  msgstr ""
2734
 
2735
+ #: src/Tribe/Main.php:1377
2736
  msgid "Settings overview"
2737
  msgstr ""
2738
 
2739
+ #: src/Tribe/Main.php:1379
2740
  msgid ""
2741
  "%s: A complete look at the features you can expect to see right out of the "
2742
  "box as well as how to use them."
2743
  msgstr ""
2744
 
2745
+ #: src/Tribe/Main.php:1379
2746
  msgid "Features overview"
2747
  msgstr ""
2748
 
2749
+ #: src/Tribe/Main.php:1381
2750
  msgid ""
2751
  "%s: Our most comprehensive outline for customizing the calendar to suit your "
2752
  "needs, including custom layouts and styles."
2753
  msgstr ""
2754
 
2755
+ #: src/Tribe/Main.php:1381
2756
  msgid "Themer's Guide"
2757
  msgstr ""
2758
 
2759
+ #: src/Tribe/Main.php:1383
2760
  msgid ""
2761
  "%s: An overview of the default templates and styles that are included in the "
2762
  "plugin, as well as how to change them."
2763
  msgstr ""
2764
 
2765
+ #: src/Tribe/Main.php:1383
2766
  msgid "Using stylesheets and page templates"
2767
  msgstr ""
2768
 
2769
+ #: src/Tribe/Main.php:1385
2770
  msgid ""
2771
  "%s: Do you see an issue with your calendar? Go here first to find where it’s "
2772
  "coming from and how to fix it."
2773
  msgstr ""
2774
 
2775
+ #: src/Tribe/Main.php:1385
2776
  msgid "Troubleshooting common problems"
2777
  msgstr ""
2778
 
2779
+ #: src/Tribe/Main.php:1387
2780
  msgid ""
2781
  "%s: Code and guides for customizing your calendar in useful and interesting "
2782
  "ways."
2783
  msgstr ""
2784
 
2785
+ #: src/Tribe/Main.php:1387
2786
  msgid "Customizing the Events plugins"
2787
  msgstr ""
2788
 
2789
+ #: src/Tribe/Main.php:1402
2790
  msgid "Events Tickets"
2791
  msgstr ""
2792
 
2793
+ #: src/Tribe/Main.php:1403
2794
  msgid ""
2795
  "If you have tried the above steps and are still having trouble, you can post "
2796
  "a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
2797
  "monitors these forums once a week and would be happy to assist you there. "
2798
  msgstr ""
2799
 
2800
+ #: src/Tribe/Main.php:1405 src/Tribe/Main.php:1413
2801
  msgid "premium support on our website"
2802
  msgstr ""
2803
 
2804
+ #: src/Tribe/Main.php:1406
2805
  msgid ""
2806
  "<strong>Looking for more immediate support?</strong> We offer %s with the "
2807
  "purchase of any of our premium plugins. Pick up a license and you can post "
2808
  "there directly and expect a response within 24-48 hours during weekdays"
2809
  msgstr ""
2810
 
2811
+ #: src/Tribe/Main.php:1410
2812
  msgid "open-source forum on WordPress.org"
2813
  msgstr ""
2814
 
2815
+ #: src/Tribe/Main.php:1411
2816
  msgid ""
2817
  "If you have tried the above steps and are still having trouble, you can post "
2818
  "a new thread to our %s. Our support staff monitors these forums once a week "
2819
  "and would be happy to assist you there."
2820
  msgstr ""
2821
 
2822
+ #: src/Tribe/Main.php:1414
2823
  msgid "Events Calendar PRO"
2824
  msgstr ""
2825
 
2826
+ #: src/Tribe/Main.php:1415
2827
  msgid ""
2828
  "<strong>Looking for more immediate support?</strong> We offer %1$s with the "
2829
  "purchase of any of our premium plugins (like %2$s). Pick up a license and "
2831
  "weekdays."
2832
  msgstr ""
2833
 
2834
+ #: src/Tribe/Main.php:1419
2835
  msgid "post a thread"
2836
  msgstr ""
2837
 
2838
+ #: src/Tribe/Main.php:1420
2839
  msgid ""
2840
  "If you have a valid license for one of our paid plugins, you can %s in our "
2841
  "premium support forums. Our support team monitors the forums and will "
2842
  "respond to your thread within 24-48 hours (during the week)."
2843
  msgstr ""
2844
 
2845
+ #: src/Tribe/Main.php:1463
2846
  #: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
2847
  #: src/functions/template-tags/general.php:130
2848
  msgid "Events"
2849
  msgstr ""
2850
 
2851
+ #: src/Tribe/Main.php:1471 src/admin-views/aggregator/tabs/import-form.php:227
2852
  #: src/admin-views/aggregator/tabs/import-form.php:239
2853
  #: src/functions/template-tags/general.php:74
2854
  msgid "Event"
2855
  msgstr ""
2856
 
2857
+ #: src/Tribe/Main.php:1688
2858
  msgid ""
2859
  "Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
2860
  "your WordPress install."
2861
  msgstr ""
2862
 
2863
+ #: src/Tribe/Main.php:1691
2864
  msgid ""
2865
  "Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
2866
  "about moving you to a newer version of PHP."
2867
  msgstr ""
2868
 
2869
+ #: src/Tribe/Main.php:1723
2870
  msgid ""
2871
  "To continue using The Events Calendar, please install the latest version of"
2872
  msgstr ""
2873
 
2874
+ #: src/Tribe/Main.php:1725 src/Tribe/Main.php:1726
2875
  msgid "Event Tickets"
2876
  msgstr ""
2877
 
2878
+ #: src/Tribe/Main.php:1761
2879
  msgid ""
2880
  "It appears as if the tribe-common libraries cannot be found! The directory "
2881
  "should be in the \"common/\" directory in the events calendar plugin."
2882
  msgstr ""
2883
 
2884
+ #: src/Tribe/Main.php:1997 src/Tribe/Main.php:2456
2885
  msgid "category"
2886
  msgstr ""
2887
 
2888
+ #: src/Tribe/Main.php:2011 src/Tribe/Main.php:2455
2889
  msgid "tag"
2890
  msgstr ""
2891
 
2892
+ #: src/Tribe/Main.php:2044 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
2893
  msgid "Add New"
2894
  msgstr ""
2895
 
2896
+ #: src/Tribe/Main.php:2045 src/Tribe/Main.php:2182 src/Tribe/Main.php:2183
2897
  #: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
2898
  msgid "Add New %s"
2899
  msgstr ""
2900
 
2901
+ #: src/Tribe/Main.php:2047 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
2902
  msgid "New %s"
2903
  msgstr ""
2904
 
2905
+ #: src/Tribe/Main.php:2048 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
2906
  #: src/views/month/single-day.php:26
2907
  msgid "View %s"
2908
  msgstr ""
2909
 
2910
+ #: src/Tribe/Main.php:2049 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
2911
  msgid "Search %s"
2912
  msgstr ""
2913
 
2914
+ #: src/Tribe/Main.php:2050 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
2915
  msgid "No %s found"
2916
  msgstr ""
2917
 
2918
+ #: src/Tribe/Main.php:2051 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
2919
  msgid "No %s found in Trash"
2920
  msgstr ""
2921
 
2922
+ #: src/Tribe/Main.php:2052 src/Tribe/Main.php:2139 src/Tribe/Main.php:2159
2923
  #: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
2924
  msgid "%s published."
2925
  msgstr ""
2926
 
2927
+ #: src/Tribe/Main.php:2053 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
2928
  msgid "%s published privately."
2929
  msgstr ""
2930
 
2931
+ #: src/Tribe/Main.php:2054 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
2932
  msgid "%s reverted to draft."
2933
  msgstr ""
2934
 
2935
+ #: src/Tribe/Main.php:2055 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
2936
  msgid "%s scheduled."
2937
  msgstr ""
2938
 
2939
+ #: src/Tribe/Main.php:2056 src/Tribe/Main.php:2098 src/Tribe/Main.php:2133
2940
+ #: src/Tribe/Main.php:2136 src/Tribe/Main.php:2153 src/Tribe/Main.php:2156
2941
  #: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
2942
  msgid "%s updated."
2943
  msgstr ""
2944
 
2945
+ #: src/Tribe/Main.php:2066
2946
  msgid "%s Category"
2947
  msgstr ""
2948
 
2949
+ #: src/Tribe/Main.php:2067
2950
  msgid "Search %s Categories"
2951
  msgstr ""
2952
 
2953
+ #: src/Tribe/Main.php:2068
2954
  msgid "All %s Categories"
2955
  msgstr ""
2956
 
2957
+ #: src/Tribe/Main.php:2069
2958
  msgid "Parent %s Category"
2959
  msgstr ""
2960
 
2961
+ #: src/Tribe/Main.php:2070
2962
  msgid "Parent %s Category:"
2963
  msgstr ""
2964
 
2965
+ #: src/Tribe/Main.php:2071
2966
  msgid "Edit %s Category"
2967
  msgstr ""
2968
 
2969
+ #: src/Tribe/Main.php:2072
2970
  msgid "Update %s Category"
2971
  msgstr ""
2972
 
2973
+ #: src/Tribe/Main.php:2073
2974
  msgid "Add New %s Category"
2975
  msgstr ""
2976
 
2977
+ #: src/Tribe/Main.php:2074
2978
  msgid "New %s Category Name"
2979
  msgstr ""
2980
 
2981
+ #: src/Tribe/Main.php:2091
2982
  msgid "%1$s updated. %2$sView %1$s%3$s"
2983
  msgstr ""
2984
 
2985
+ #: src/Tribe/Main.php:2096 src/Tribe/Main.php:2134 src/Tribe/Main.php:2154
2986
  msgid "Custom field updated."
2987
  msgstr ""
2988
 
2989
+ #: src/Tribe/Main.php:2097 src/Tribe/Main.php:2135 src/Tribe/Main.php:2155
2990
  msgid "Custom field deleted."
2991
  msgstr ""
2992
 
2993
  #. translators: %s: date and time of the revision
2994
+ #: src/Tribe/Main.php:2100 src/Tribe/Main.php:2138
2995
  msgid "%1$s restored to revision from %2$s"
2996
  msgstr ""
2997
 
2998
+ #: src/Tribe/Main.php:2102
2999
  msgid "%1$s published. %2$sView %3$s"
3000
  msgstr ""
3001
 
3002
+ #: src/Tribe/Main.php:2107 src/Tribe/Main.php:2140 src/Tribe/Main.php:2160
3003
  msgid "%s saved."
3004
  msgstr ""
3005
 
3006
+ #: src/Tribe/Main.php:2109
3007
  msgid "%1$s submitted. %2$sPreview %3$s"
3008
  msgstr ""
3009
 
3010
+ #: src/Tribe/Main.php:2115
3011
  msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
3012
  msgstr ""
3013
 
3014
  #. translators: Publish box date format, see http://php.net/date
3015
+ #: src/Tribe/Main.php:2118 src/Tribe/Main.php:2146 src/Tribe/Main.php:2166
3016
  msgid "M j, Y @ G:i"
3017
  msgstr ""
3018
 
3019
+ #: src/Tribe/Main.php:2124
3020
  msgid "%1$s draft updated. %2$sPreview %3$s"
3021
  msgstr ""
3022
 
3023
+ #: src/Tribe/Main.php:2141 src/Tribe/Main.php:2161
3024
  msgid "%s submitted."
3025
  msgstr ""
3026
 
3027
+ #: src/Tribe/Main.php:2143 src/Tribe/Main.php:2163
3028
  msgid "%1$s scheduled for: %2$s."
3029
  msgstr ""
3030
 
3031
+ #: src/Tribe/Main.php:2148 src/Tribe/Main.php:2168
3032
  msgid "%s draft updated."
3033
  msgstr ""
3034
 
3035
  #. translators: %s: date and time of the revision
3036
+ #: src/Tribe/Main.php:2158
3037
  msgid "%s restored to revision from %s"
3038
  msgstr ""
3039
 
3040
+ #: src/Tribe/Main.php:2212
3041
  msgid ""
3042
  "Without a defined location your event will not display a %sGoogle Rich "
3043
  "Snippet%s on the search results."
3044
  msgstr ""
3045
 
3046
+ #: src/Tribe/Main.php:2457
3047
  msgid "page"
3048
  msgstr ""
3049
 
3050
+ #: src/Tribe/Main.php:2458 src/functions/template-tags/general.php:102
3051
  msgid "event"
3052
  msgstr ""
3053
 
3054
+ #: src/Tribe/Main.php:2459 src/functions/template-tags/general.php:158
3055
  msgid "events"
3056
  msgstr ""
3057
 
3058
+ #: src/Tribe/Main.php:2460
3059
  msgid "all"
3060
  msgstr ""
3061
 
3062
+ #: src/Tribe/Main.php:2842
3063
  msgid " (View Full %1$s Description Here: %2$s)"
3064
  msgstr ""
3065
 
3066
+ #: src/Tribe/Main.php:3621 src/Tribe/Main.php:3656
3067
  #: src/functions/template-tags/day.php:157
3068
  #: src/functions/template-tags/day.php:178
3069
  msgid "Date out of range."
3070
  msgstr ""
3071
 
3072
+ #: src/Tribe/Main.php:3698
3073
  msgid "%s Options"
3074
  msgstr ""
3075
 
3076
+ #: src/Tribe/Main.php:3707 src/Tribe/Main.php:3720
3077
  msgid "%s Information"
3078
  msgstr ""
3079
 
3080
+ #: src/Tribe/Main.php:4052
3081
  msgid "Support"
3082
  msgstr ""
3083
 
3084
+ #: src/Tribe/Main.php:4055
3085
  msgid "View All Add-Ons"
3086
  msgstr ""
3087
 
3088
+ #: src/Tribe/Main.php:4075
3089
  msgid "News from Modern Tribe"
3090
  msgstr ""
3091
 
3092
+ #: src/Tribe/Main.php:4120
3093
  msgid "Additional Functionality"
3094
  msgstr ""
3095
 
3096
+ #: src/Tribe/Main.php:4125
3097
  msgid ""
3098
  "Looking for additional functionality including recurring events, ticket "
3099
  "sales, publicly submitted events, new views and more?"
3100
  msgstr ""
3101
 
3102
+ #: src/Tribe/Main.php:4126
3103
  msgid "Check out the %savailable add-ons%s."
3104
  msgstr ""
3105
 
3106
+ #: src/Tribe/Main.php:4227
3107
  msgid "Calendar"
3108
  msgstr ""
3109
 
3110
+ #: src/Tribe/Main.php:4243
3111
  msgid "List"
3112
  msgstr ""
3113
 
3114
+ #: src/Tribe/Main.php:4261
3115
  msgid "Month"
3116
  msgstr ""
3117
 
3118
+ #: src/Tribe/Main.php:4278 src/admin-views/aggregator/fields/schedule.php:43
3119
  #: src/admin-views/aggregator/fields/schedule.php:61
3120
  msgid "Day"
3121
  msgstr ""
3122
 
3123
+ #: src/Tribe/Main.php:4301
3124
  msgid "Search for %s by Keyword."
3125
  msgstr ""
3126
 
3127
+ #: src/Tribe/Main.php:4304
3128
  #: src/views/v2/components/events-bar/search-button.php:24
3129
  msgid "Search"
3130
  msgstr ""
3131
 
3132
+ #: src/Tribe/Main.php:4305
3133
  msgid "Keyword"
3134
  msgstr ""
3135
 
3136
+ #: src/Tribe/Main.php:4322
3137
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3138
  msgstr ""
3139
 
3140
+ #: src/Tribe/Main.php:4323
3141
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3142
  msgstr ""
3143
 
3144
+ #: src/Tribe/Main.php:4324
3145
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3146
  msgstr ""
3147
 
3148
+ #: src/Tribe/Main.php:4325
3149
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3150
  msgstr ""
3151
 
3152
+ #: src/Tribe/Main.php:4326
3153
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3154
  msgstr ""
3155
 
3156
+ #: src/Tribe/Main.php:4327
3157
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3158
  msgstr ""
3159
 
3160
+ #: src/Tribe/Main.php:4328
3161
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3162
  msgstr ""
3163
 
3164
+ #: src/Tribe/Main.php:4329
3165
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3166
  msgstr ""
3167
 
3168
+ #: src/Tribe/Main.php:4330
3169
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3170
  msgstr ""
3171
 
3172
+ #: src/Tribe/Main.php:4331
3173
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3174
  msgstr ""
3175
 
3176
+ #: src/Tribe/Main.php:4332
3177
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3178
  msgstr ""
3179
 
3180
+ #: src/Tribe/Main.php:4333
3181
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3182
  msgstr ""
3183
 
3184
+ #: src/Tribe/Main.php:4337
3185
  msgid "4 digit year hyphen 2 digit month"
3186
  msgstr ""
3187
 
3188
+ #: src/Tribe/Main.php:4338 src/Tribe/Main.php:4340
3189
  msgid "1 digit month slash 4 digit year"
3190
  msgstr ""
3191
 
3192
+ #: src/Tribe/Main.php:4339 src/Tribe/Main.php:4341
3193
  msgid "2 digit month slash 4 digit year"
3194
  msgstr ""
3195
 
3196
+ #: src/Tribe/Main.php:4342 src/Tribe/Main.php:4343 src/Tribe/Main.php:4344
3197
  msgid "1 digit month hyphen 4 digit year"
3198
  msgstr ""
3199
 
3200
+ #: src/Tribe/Main.php:4345
3201
  msgid "2 digit month hyphen 4 digit year"
3202
  msgstr ""
3203
 
3204
+ #: src/Tribe/Main.php:4346
3205
  msgid "4 digit year dot 2 digit month"
3206
  msgstr ""
3207
 
3208
+ #: src/Tribe/Main.php:4347 src/Tribe/Main.php:4348
3209
  msgid "2 digit month dot 4 digit year"
3210
  msgstr ""
3211
 
3212
+ #: src/Tribe/Main.php:4377 src/Tribe/Main.php:4414
3213
  #: src/admin-views/aggregator/origins/refine.php:7
3214
  msgid "Date"
3215
  msgstr ""
3216
 
3217
+ #: src/Tribe/Main.php:4379
3218
  msgid "Search for %s by Date. Please use the format %s."
3219
  msgstr ""
3220
 
3221
+ #: src/Tribe/Main.php:4392
3222
  msgid "%s In"
3223
  msgstr ""
3224
 
3225
+ #: src/Tribe/Main.php:4394
3226
  msgid "Search for %s by month. Please use the format %s."
3227
  msgstr ""
3228
 
3229
+ #: src/Tribe/Main.php:4397
3230
  msgid "%s From"
3231
  msgstr ""
3232
 
3233
+ #: src/Tribe/Main.php:4400
3234
  msgid "Day Of"
3235
  msgstr ""
3236
 
3237
+ #: src/Tribe/Main.php:4480
3238
  msgid "Once Every 30 Mins"
3239
  msgstr ""
3240
 
3241
+ #: src/Tribe/Main.php:5207
3242
  msgid ""
3243
  "Your version of The Events Calendar is not up-to-date with one of your The "
3244
  "Events Calendar add-ons. Please %supdate now.%s"
3245
  msgstr ""
3246
 
3247
+ #: src/Tribe/Main.php:5219
3248
  msgid ""
3249
  "The following plugins are out of date: %1$s. All add-ons contain "
3250
  "dependencies on The Events Calendar and will not function properly unless "
3251
  "paired with the right version. %2$sLearn More%3$s."
3252
  msgstr ""
3253
 
3254
+ #: src/Tribe/Main.php:5258 src/Tribe/Main.php:5315
3255
  msgid "Use Saved %s:"
3256
  msgstr ""
3257
 
4754
  msgid "%1$s for %2$s"
4755
  msgstr ""
4756
 
4757
+ #: src/Tribe/Views/V2/View.php:1916 src/views/v2/day/event/date/featured.php:27
4758
  #: src/views/v2/day/event/date/featured.php:28
4759
  #: src/views/v2/day/event/date/featured.php:32
4760
  #: src/views/v2/latest-past/event/date/featured.php:27
4774
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:27
4775
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:28
4776
  #: src/views/v2/month/mobile-events/mobile-day/mobile-event/date/featured.php:32
4777
+ #: src/views/v2/widgets/events-list/event/date/featured.php:25
4778
+ #: src/views/v2/widgets/events-list/event/date/featured.php:26
4779
+ #: src/views/v2/widgets/events-list/event/date/featured.php:30
4780
  msgid "Featured"
4781
  msgstr ""
4782
 
4806
  msgstr ""
4807
 
4808
  #. translators: %s: Events (plural).
4809
+ #: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:55
4810
  msgid "Export %s"
4811
  msgstr ""
4812
 
4813
+ #: src/Tribe/Views/V2/Views/Traits/iCal_Data.php:60 src/Tribe/iCal.php:185
4814
  msgid ""
4815
  "Use this to share calendar data with Google Calendar, Apple iCal and other "
4816
  "compatible apps"
4817
  msgstr ""
4818
 
4819
+ #: src/Tribe/Views/V2/Widgets/Widget_List.php:98
4820
+ msgid "Events List V2"
4821
+ msgstr ""
4822
+
4823
+ #: src/Tribe/iCal.php:55
4824
  msgctxt "feed link"
4825
  msgid "&raquo;"
4826
  msgstr ""
4827
 
4828
+ #: src/Tribe/iCal.php:56
4829
  msgid "%1$s %2$s iCal Feed"
4830
  msgstr ""
4831
 
4832
+ #: src/Tribe/iCal.php:131 src/views/blocks/event-links.php:35
4833
  msgid "Add to Google Calendar"
4834
  msgstr ""
4835
 
4836
+ #: src/Tribe/iCal.php:132 src/views/blocks/event-links.php:46
4837
  msgid "Download .ics file"
4838
  msgstr ""
4839
 
4840
+ #: src/Tribe/iCal.php:184
4841
  msgid "Export Events"
4842
  msgstr ""
4843
 
4844
+ #: src/Tribe/iCal.php:432
4845
  msgctxt "iCal feed description"
4846
  msgid "Events for %s"
4847
  msgstr ""
7551
  msgid "Previous day"
7552
  msgstr ""
7553
 
7554
+ #: src/views/v2/day.php:46 src/views/v2/list.php:45 src/views/v2/month.php:44
7555
  msgid "Loading..."
7556
  msgstr ""
7557
 
7630
  msgid "Previous month"
7631
  msgstr ""
7632
 
7633
+ #: src/views/v2/widgets/events-list/view-more.php:28
7634
+ msgid "View more"
7635
+ msgstr ""
7636
+
7637
+ #. translators: %1$s: Event (plural).
7638
+ #: src/views/v2/widgets/events-list.php:87
7639
+ msgctxt "Title for events list widget."
7640
+ msgid "Upcoming %1$s"
7641
+ msgstr ""
7642
+
7643
  #: src/views/widgets/list-widget.php:112
7644
  msgid "View All %s"
7645
  msgstr ""
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === The Events Calendar ===
2
 
3
- Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo, Camwyn, cliffpaulick, courane01, faction23, GeoffBel, geoffgraham, jbrinley, jentheo, leahkoerper, lucatume, neillmcshea, nicosantos, patriciahillebrandt, peterchester, paulskim, reid.peifer, roblagatta, ryancurban, shane.pearlman, vicskf, zbtirrell, juanfra
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: https://m.tri.be/29
6
  Requires at least: 4.9.14
7
- Stable tag: 5.2.0
8
  Tested up to: 5.5.1
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
@@ -222,6 +222,18 @@ Remember to always make a backup of your database and files before updating!
222
 
223
  == Changelog ==
224
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  = [5.2.0] 2020-09-28 =
226
 
227
  * Fix - Fix the order of the List View when the PRO is set to show only the first instance of a Recurring Event. [ECP-467]
1
  === The Events Calendar ===
2
 
3
+ Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo, camwynsp, cliffpaulick, courane01, faction23, GeoffBel, geoffgraham, jbrinley, jentheo, leahkoerper, lucatume, neillmcshea, nicosantos, patriciahillebrandt, peterchester, paulskim, reid.peifer, roblagatta, ryancurban, shane.pearlman, vicskf, zbtirrell, juanfra
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: https://m.tri.be/29
6
  Requires at least: 4.9.14
7
+ Stable tag: 5.2.1
8
  Tested up to: 5.5.1
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
222
 
223
  == Changelog ==
224
 
225
+ = [5.2.1] 2020-10-22 =
226
+
227
+ * Tweak - Change Views v2 AJAX request method from GET to POST to avoid issues with too long URLs. [TEC-3283]
228
+ * Tweak - Add the `tribe_events_views_v2_endpoint_method` filter to allow controlling the HTTP method Views should use to fetch their content from the back-end endpoint. [TEC-3283]
229
+ * Tweak - Add the `tribe_events_views_v2_endpoint_url` filter to allow controlling the URL Views should use to fetch their content from the back-end endpoint. [TEC-3283]
230
+ * Fix - Prevent Event Aggregator 15 minute Cron Schedule from being created when not required (props @jetxpert) [EA-317]
231
+ * Fix - Add filter to toggle off the event templates hijack. [TEC-3521]
232
+ * Fix - Correct url for current month iCal export link. [TEC-3575]
233
+ * Fix - Avoid loading the same CSS file twice on the back-end. [TEC-3623]
234
+ * Fix - Ensure ECP shortcode prev/next urls handle categories gracefully. [ECP-492]
235
+ * Language - 3 new strings added, 200 updated, 0 fuzzied, and 0 obsoleted
236
+
237
  = [5.2.0] 2020-09-28 =
238
 
239
  * Fix - Fix the order of the List View when the PRO is set to show only the first instance of a Recurring Event. [ECP-467]
src/Tribe/Aggregator/Record/Queue_Processor.php CHANGED
@@ -68,6 +68,20 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
68
  * batches of pending import record inserts/updates.
69
  */
70
  public function register_scheduled_task() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  if ( wp_next_scheduled( self::$scheduled_key ) ) {
72
  return;
73
  }
@@ -164,11 +178,23 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
164
  *
165
  * If no records in need of further processing can be found it will return bool false.
166
  *
 
 
167
  * @param boolean $interactive_only Whether or not we should look for imports that were kicked off interactively
 
168
  *
169
- * @return boolean
170
  */
171
- public function next_waiting_record( $interactive_only = false ) {
 
 
 
 
 
 
 
 
 
172
  $args = array(
173
  'post_type' => Tribe__Events__Aggregator__Records::$post_type,
174
  'post_status' => 'any',
@@ -195,6 +221,12 @@ class Tribe__Events__Aggregator__Record__Queue_Processor {
195
  }
196
 
197
  $next_record = array_shift( $waiting_records );
 
 
 
 
 
 
198
  return $this->current_record_id = $next_record->ID;
199
  }
200
 
68
  * batches of pending import record inserts/updates.
69
  */
70
  public function register_scheduled_task() {
71
+ // Bail on registration of scheduled event in case we dont have an API setup.
72
+ if ( is_wp_error( tribe( 'events-aggregator.service' )->api() ) ) {
73
+ // Also clear in case we dont have an API key.
74
+ $this->clear_scheduled_task();
75
+ return;
76
+ }
77
+
78
+ // Prevent from trying to schedule in case we dont have any scheduled records to process, value will either be false or 0.
79
+ if ( ! $this->next_waiting_record( false, true ) ) {
80
+ // Also clear in case we don't have any records to process.
81
+ $this->clear_scheduled_task();
82
+ return;
83
+ }
84
+
85
  if ( wp_next_scheduled( self::$scheduled_key ) ) {
86
  return;
87
  }
178
  *
179
  * If no records in need of further processing can be found it will return bool false.
180
  *
181
+ * @since TBD Inclusion of a $cache param for performance purposes.
182
+ *
183
  * @param boolean $interactive_only Whether or not we should look for imports that were kicked off interactively
184
+ * @param boolean $cache When checking on every request we should utilize transient caching to prevent hitting the DB every time.
185
  *
186
+ * @return boolean|integer
187
  */
188
+ public function next_waiting_record( $interactive_only = false, $cache = false ) {
189
+ if ( true === $cache ) {
190
+ $transient_key = 'tribe-event-aggregator-next_waiting_record' . ( ! $interactive_only ?: '_interactive_only' );
191
+ $next_waiting_record = get_transient( $transient_key );
192
+
193
+ if ( ! empty( $next_waiting_record ) ) {
194
+ return $this->current_record_id = $next_waiting_record;
195
+ }
196
+ }
197
+
198
  $args = array(
199
  'post_type' => Tribe__Events__Aggregator__Records::$post_type,
200
  'post_status' => 'any',
221
  }
222
 
223
  $next_record = array_shift( $waiting_records );
224
+
225
+ // Set cache in case of usage.
226
+ if ( true === $cache ) {
227
+ set_transient( $transient_key, $next_record->ID, 5 * MINUTE_IN_SECONDS );
228
+ }
229
+
230
  return $this->current_record_id = $next_record->ID;
231
  }
232
 
src/Tribe/Assets.php CHANGED
@@ -82,19 +82,6 @@ class Tribe__Events__Assets {
82
  )
83
  );
84
 
85
- // All tribe events pages
86
- tribe_asset(
87
- $plugin,
88
- 'tribe_events-admin',
89
- 'events-admin.css',
90
- array(),
91
- 'admin_enqueue_scripts',
92
- array(
93
- 'groups' => array( 'events-admin' ),
94
- 'conditionals' => array( $this, 'should_enqueue_admin' ),
95
- )
96
- );
97
-
98
  // Post Type admin page
99
  tribe_assets(
100
  $plugin,
82
  )
83
  );
84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  // Post Type admin page
86
  tribe_assets(
87
  $plugin,
src/Tribe/Integrations/WPML/Views/V2/Filters.php ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Manages integration between WPML and Views v2 filters of The Events Calendar.
4
+ *
5
+ * @since 5.2.1
6
+ *
7
+ * @package Tribe\Events\Integrations\WPML\Views\V2
8
+ */
9
+
10
+ namespace Tribe\Events\Integrations\WPML\Views\V2;
11
+
12
+ /**
13
+ * Class Filters
14
+ *
15
+ * @since 5.2.1
16
+ *
17
+ * @package Tribe\Events\Integrations\WPML\Views\V2
18
+ */
19
+ class Filters {
20
+ /**
21
+ * Translates the View URL.
22
+ *
23
+ * @since 5.2.1
24
+ *
25
+ * @param string $url The original View URL.
26
+ *
27
+ * @return string The translated View URL.
28
+ */
29
+ public static function translate_view_url( $url ) {
30
+ $lang = static::get_request_lang();
31
+ if ( false === $lang ) {
32
+ return $url;
33
+ }
34
+
35
+ return apply_filters( 'wpml_permalink', $url, $lang );
36
+ }
37
+
38
+ /**
39
+ * Returns the current request language, read from the request cookie.
40
+ *
41
+ * @since 5.2.1
42
+ *
43
+ * @return string|false Either the request language, e.g. `fr`, or `false` to indicate the language could not be
44
+ * parsed from the request context.
45
+ */
46
+ protected static function get_request_lang() {
47
+ return defined( 'ICL_LANGUAGE_CODE' ) ? ICL_LANGUAGE_CODE : false;
48
+ }
49
+
50
+ /**
51
+ * Translates the URls contained in the View template variables.
52
+ *
53
+ * @since 5.2.1
54
+ *
55
+ * @param array<string,mixed> $template_vars The original View template variables.
56
+ *
57
+ * @return array<string,mixed> The View template variables, with the URLs there contained translated, if required.
58
+ */
59
+ public static function translate_template_vars_urls( $template_vars = [] ) {
60
+ if ( ! is_array( $template_vars ) ) {
61
+ return $template_vars;
62
+ }
63
+
64
+ $url_keys = array_filter(
65
+ $template_vars,
66
+ static function ( $value, $key ) {
67
+ return strpos( $key, 'url' ) !== false && (bool) filter_var( $value, FILTER_VALIDATE_URL );
68
+ },
69
+ ARRAY_FILTER_USE_BOTH
70
+ );
71
+
72
+ if ( 0 === count( $url_keys ) ) {
73
+ return $template_vars;
74
+ }
75
+
76
+ $lang = static::get_request_lang();
77
+
78
+ if ( false === $lang ) {
79
+ return $template_vars;
80
+ }
81
+
82
+ foreach ( $url_keys as $key => $value ) {
83
+ $template_vars[ $key ] = apply_filters( 'wpml_permalink', $value, $lang );
84
+ }
85
+
86
+ return $template_vars;
87
+ }
88
+
89
+ /**
90
+ * Translates the URL of the public Views, the ones selectable in the Views selector.
91
+ *
92
+ * @since 5.2.1
93
+ *
94
+ * @param array<string,array<string,mixed>> $public_views The original data for the current public Views.
95
+ *
96
+ * @return array<string,array<string,mixed>> $public_views The modified data for the current public Views.
97
+ */
98
+ public static function translate_public_views_urls( $public_views = [] ) {
99
+ if ( ! is_array( $public_views ) ) {
100
+ return $public_views;
101
+ }
102
+
103
+ $lang = static::get_request_lang();
104
+
105
+ if ( false === $lang ) {
106
+ return $public_views;
107
+ }
108
+
109
+ array_walk(
110
+ $public_views,
111
+ static function ( $view_data ) use ( $lang ) {
112
+ if ( ! isset( $view_data->view_url ) ) {
113
+ return;
114
+ }
115
+ $view_data->view_url = apply_filters( 'wpml_permalink', $view_data->view_url, $lang );
116
+ }
117
+ );
118
+
119
+ return $public_views;
120
+ }
121
+
122
+ /**
123
+ * Updates the Views v2 request URI used to set up the `$_SERVER['REQUEST_URI']` in the `View::setup_the_loop`
124
+ * method to make sure it will point to the correct URL.
125
+ *
126
+ * @since 5.2.1
127
+ *
128
+ * @param string $request_uri The original request URI.
129
+ *
130
+ * @return string The corrected request URI.
131
+ */
132
+ public static function translate_view_request_uri( $request_uri ) {
133
+ if ( ! is_string( $request_uri ) ) {
134
+ return $request_uri;
135
+ }
136
+
137
+ $lang = static::get_request_lang();
138
+
139
+ if ( false === $lang ) {
140
+ return $request_uri;
141
+ }
142
+
143
+ if ( static::using_subdir() && strpos( $request_uri, '/' . $lang ) !== 0 ) {
144
+ $request_uri = '/' . $lang . $request_uri;
145
+ }
146
+
147
+ return $request_uri;
148
+ }
149
+
150
+ /**
151
+ * Returns whether the current WPML URL translation setting is the sub-directory one (e.g. `http://foo.bar/it`) or
152
+ * not.
153
+ *
154
+ * @since 5.2.1
155
+ *
156
+ * @return bool Whether the current WPML URL translation setting is the sub-directory one or not.
157
+ */
158
+ protected static function using_subdir() {
159
+ /** @var \SitePress $sitepress */
160
+ global $sitepress;
161
+ $lang_negotiation = (int) $sitepress->get_setting( 'language_negotiation_type' );
162
+
163
+ return WPML_LANGUAGE_NEGOTIATION_TYPE_DIRECTORY === $lang_negotiation;
164
+ }
165
+ }
src/Tribe/Integrations/WPML/WPML.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  /**
3
  * Class Tribe__Events__Integrations__WPML__WPML
4
  *
@@ -83,6 +86,17 @@ class Tribe__Events__Integrations__WPML__WPML {
83
  $option = Tribe__Events__Integrations__WPML__Option::instance();
84
  add_filter( 'tribe_get_single_option', [ $option, 'translate' ], 20, 3 );
85
  }
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  protected function setup_cache_expiration_triggers() {
1
  <?php
2
+
3
+ use Tribe\Events\Integrations\WPML\Views\V2\Filters as Views_V2_Filters;
4
+
5
  /**
6
  * Class Tribe__Events__Integrations__WPML__WPML
7
  *
86
  $option = Tribe__Events__Integrations__WPML__Option::instance();
87
  add_filter( 'tribe_get_single_option', [ $option, 'translate' ], 20, 3 );
88
  }
89
+
90
+ /*
91
+ * Handle Views v2 URLs in all the places that's required.
92
+ *
93
+ * Commented out as this is not a reliably working implementation.
94
+ *
95
+ add_filter( 'tribe_events_views_v2_view_url', [ Views_V2_Filters::class, 'translate_view_url' ] );
96
+ add_filter( 'tribe_events_views_v2_view_template_vars', [ Views_V2_Filters::class, 'translate_template_vars_urls' ] );
97
+ add_filter( 'tribe_events_views_v2_view_public_views', [ Views_V2_Filters::class, 'translate_public_views_urls' ] );
98
+ add_filter( 'tribe_events_views_v2_request_uri', [ Views_V2_Filters::class, 'translate_view_request_uri' ] );
99
+ */
100
  }
101
 
102
  protected function setup_cache_expiration_triggers() {
src/Tribe/Integrations/X_Theme/X_Theme.php CHANGED
@@ -27,7 +27,7 @@ class Tribe__Events__Integrations__X_Theme__X_Theme {
27
  }
28
 
29
  /**
30
- * Hooks the filters and actions neede for this integration to work.
31
  */
32
  public function hook() {
33
  add_filter( 'template_include', array( $this, 'filter_template_include' ) );
27
  }
28
 
29
  /**
30
+ * Hooks the filters and actions needed for this integration to work.
31
  */
32
  public function hook() {
33
  add_filter( 'template_include', array( $this, 'filter_template_include' ) );
src/Tribe/Main.php CHANGED
@@ -35,7 +35,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
35
  const VENUE_POST_TYPE = 'tribe_venue';
36
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
37
 
38
- const VERSION = '5.2.0';
39
 
40
  /**
41
  * Min Pro Addon
@@ -615,6 +615,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
615
 
616
  // The Views v2 service provider.
617
  tribe_register_provider( Tribe\Events\Views\V2\Service_Provider::class );
 
618
 
619
  // Register and start the Customizer Sections
620
  if ( ! tribe_events_views_v2_is_enabled() ) {
35
  const VENUE_POST_TYPE = 'tribe_venue';
36
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
37
 
38
+ const VERSION = '5.2.1';
39
 
40
  /**
41
  * Min Pro Addon
615
 
616
  // The Views v2 service provider.
617
  tribe_register_provider( Tribe\Events\Views\V2\Service_Provider::class );
618
+ tribe_register_provider( Tribe\Events\Views\V2\Widgets\Service_Provider::class );
619
 
620
  // Register and start the Customizer Sections
621
  if ( ! tribe_events_views_v2_is_enabled() ) {
src/Tribe/Views/V2/Assets.php CHANGED
@@ -99,6 +99,49 @@ class Assets extends \tad_DI52_ServiceProvider {
99
  ]
100
  );
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  tribe_asset(
103
  $plugin,
104
  'tribe-events-views-v2-bootstrap-datepicker',
99
  ]
100
  );
101
 
102
+ /**
103
+ * @todo: @paulmskim figure out how to enqueue only when widget is available.
104
+ * @todo: @paulmskim commented out for release so widget styles do not enqueue, uncomment when actually releasing.
105
+ */
106
+ // tribe_asset(
107
+ // $plugin,
108
+ // 'tribe-events-widgets-v2-skeleton',
109
+ // 'widgets-skeleton.css',
110
+ // [
111
+ // 'tribe-common-skeleton-style',
112
+ // ],
113
+ // 'wp_enqueue_scripts',
114
+ // [
115
+ // 'priority' => 10,
116
+ // 'conditionals' => [ $this, 'should_enqueue_frontend' ],
117
+ // 'groups' => [ static::$group_key ],
118
+ // ]
119
+ // );
120
+
121
+ /**
122
+ * @todo: @paulmskim figure out how to enqueue only when widget is available.
123
+ * @todo: @paulmskim commented out for release so widget styles do not enqueue, uncomment when actually releasing.
124
+ */
125
+ // tribe_asset(
126
+ // $plugin,
127
+ // 'tribe-events-widgets-v2-full',
128
+ // 'widgets-full.css',
129
+ // [
130
+ // 'tribe-common-full-style',
131
+ // 'tribe-events-widgets-v2-skeleton',
132
+ // ],
133
+ // 'wp_enqueue_scripts',
134
+ // [
135
+ // 'priority' => 10,
136
+ // 'conditionals' => [
137
+ // 'operator' => 'AND',
138
+ // [ $this, 'should_enqueue_frontend' ],
139
+ // [ $this, 'should_enqueue_full_styles' ],
140
+ // ],
141
+ // 'groups' => [ static::$group_key ],
142
+ // ]
143
+ // );
144
+
145
  tribe_asset(
146
  $plugin,
147
  'tribe-events-views-v2-bootstrap-datepicker',
src/Tribe/Views/V2/Hooks.php CHANGED
@@ -552,7 +552,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
552
  *
553
  * @since 4.9.13
554
  *
555
- * @param array $fields Fields that were passed for the Settigns tab.
556
  *
557
  * @return array Fields after changing the tooltip.
558
  */
@@ -571,7 +571,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
571
  *
572
  * @since 4.9.13
573
  *
574
- * @param array $plugins List of plugisn to be checked.
575
  *
576
  * @return array
577
  */
@@ -833,7 +833,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
833
  'tribe-events-views-v2-full',
834
  ];
835
 
836
- // Unenqueue legacy sheets.
837
  $keys = array_keys( $sheets, 'tribe-events-calendar-style' );
838
  if ( ! empty( $keys ) ) {
839
  foreach ( $keys as $key ) {
552
  *
553
  * @since 4.9.13
554
  *
555
+ * @param array $fields Fields that were passed for the Settings tab.
556
  *
557
  * @return array Fields after changing the tooltip.
558
  */
571
  *
572
  * @since 4.9.13
573
  *
574
+ * @param array $plugins List of plugins to be checked.
575
  *
576
  * @return array
577
  */
833
  'tribe-events-views-v2-full',
834
  ];
835
 
836
+ // Dequeue legacy sheets.
837
  $keys = array_keys( $sheets, 'tribe-events-calendar-style' );
838
  if ( ! empty( $keys ) ) {
839
  foreach ( $keys as $key ) {
src/Tribe/Views/V2/Rest_Endpoint.php CHANGED
@@ -48,19 +48,38 @@ class Rest_Endpoint {
48
  protected static $did_rest_authentication_errors;
49
 
50
  /**
51
- * Returns the final REST URL for the HTML
 
 
 
52
  *
53
  * @since 4.9.2
 
54
  *
55
- * @return string
56
  */
57
  public function get_url() {
58
- if ( ! $this->is_available() ) {
 
 
59
  $url = admin_url( 'admin-ajax.php' );
60
- return add_query_arg( [ 'action' => static::$ajax_action ], $url );
 
 
61
  }
62
 
63
- return get_rest_url( null, static::ROOT_NAMESPACE . '/html' );
 
 
 
 
 
 
 
 
 
 
 
64
  }
65
 
66
  /**
@@ -140,12 +159,14 @@ class Rest_Endpoint {
140
  * Register the endpoint if available.
141
  *
142
  * @since 4.9.7
 
143
  *
144
  * @return boolean If we registered the endpoint.
145
  */
146
  public function register() {
147
  return register_rest_route( static::ROOT_NAMESPACE, '/html', [
148
- 'methods' => Server::READABLE,
 
149
  // @todo Make sure we do proper handling of cache longer then 12h.
150
  'permission_callback' => static function ( Request $request ) {
151
 
@@ -188,13 +209,14 @@ class Rest_Endpoint {
188
  * the REST API still have the Views V2 working.
189
  *
190
  * @since 4.9.7
 
191
  *
192
  * @param array $params Associative array with the params that will be used on this mocked request
193
  *
194
  * @return Request The mocked request.
195
  */
196
  public function get_mocked_rest_request( array $params ) {
197
- $request = new Request( 'GET', static::ROOT_NAMESPACE . '/html' );
198
  $arguments = $this->get_request_arguments();
199
 
200
  foreach ( $params as $key => $value ) {
@@ -224,11 +246,12 @@ class Rest_Endpoint {
224
  * and use the same method behind the scenes to make sure we have consistency.
225
  *
226
  * @since 4.9.7
227
- *
228
- * @return void
229
  */
230
  public function handle_ajax_request() {
231
- $request = $this->get_mocked_rest_request( $_GET );
 
 
232
  if ( is_wp_error( $request ) ) {
233
  /**
234
  * @todo Once we have a error handling on the new view we need to throw it here.
@@ -300,4 +323,27 @@ class Rest_Endpoint {
300
 
301
  return $errors;
302
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  }
48
  protected static $did_rest_authentication_errors;
49
 
50
  /**
51
+ * Returns the URL View will use to fetch their content.
52
+ *
53
+ * Depending on whether the REST API is enabled or not on the site, the URL might be a REST API one or an
54
+ * admin AJAX one.
55
  *
56
  * @since 4.9.2
57
+ * @since 5.2.1 Add filtering to the URL.
58
  *
59
+ * @return string The URL of the backend endpoint Views will use to fetch their content.
60
  */
61
  public function get_url() {
62
+ $rest_available = $this->is_available();
63
+
64
+ if ( ! $rest_available ) {
65
  $url = admin_url( 'admin-ajax.php' );
66
+ $url = add_query_arg( [ 'action' => static::$ajax_action ], $url );
67
+ } else {
68
+ $url = get_rest_url( null, static::ROOT_NAMESPACE . '/html' );
69
  }
70
 
71
+ /**
72
+ * Filters the URL Views should use to fetch their contents from the backend.
73
+ *
74
+ * @since 5.2.1
75
+ *
76
+ * @param string $url The View endpoint URL, either a REST API URL or a admin-ajax.php fallback URL if REST API
77
+ * is not available.
78
+ * @param bool $rest_available Whether the REST API endpoing URL is available on the current site or not.
79
+ */
80
+ $url = apply_filters( 'tribe_events_views_v2_endpoint_url', $url, $rest_available );
81
+
82
+ return $url;
83
  }
84
 
85
  /**
159
  * Register the endpoint if available.
160
  *
161
  * @since 4.9.7
162
+ * @since 5.2.1 Add support for the POST method.
163
  *
164
  * @return boolean If we registered the endpoint.
165
  */
166
  public function register() {
167
  return register_rest_route( static::ROOT_NAMESPACE, '/html', [
168
+ // Support both GET and POST HTTP methods: we originally used GET.
169
+ 'methods' => [ Server::READABLE, Server::CREATABLE ],
170
  // @todo Make sure we do proper handling of cache longer then 12h.
171
  'permission_callback' => static function ( Request $request ) {
172
 
209
  * the REST API still have the Views V2 working.
210
  *
211
  * @since 4.9.7
212
+ * @since 5.2.1 Changed the mock request HTTP method to POST (was GET).
213
  *
214
  * @param array $params Associative array with the params that will be used on this mocked request
215
  *
216
  * @return Request The mocked request.
217
  */
218
  public function get_mocked_rest_request( array $params ) {
219
+ $request = new Request( 'POST', static::ROOT_NAMESPACE . '/html' );
220
  $arguments = $this->get_request_arguments();
221
 
222
  foreach ( $params as $key => $value ) {
246
  * and use the same method behind the scenes to make sure we have consistency.
247
  *
248
  * @since 4.9.7
249
+ * @since 5.2.1 Look up the POST data before the GET one to process the request.
 
250
  */
251
  public function handle_ajax_request() {
252
+ // Use the POST method data, if set; else fallback on the GET data.
253
+ $source = isset( $_POST ) ? $_POST : $_GET;
254
+ $request = $this->get_mocked_rest_request( $source );
255
  if ( is_wp_error( $request ) ) {
256
  /**
257
  * @todo Once we have a error handling on the new view we need to throw it here.
323
 
324
  return $errors;
325
  }
326
+
327
+ /**
328
+ * Returns the filtered HTTP method Views should use to fetch their content from the backend endpoint.
329
+ *
330
+ * @since 5.2.1
331
+ *
332
+ * @return string The filtered HTTP method Views should use to fetch their content from the back-end endpoint.
333
+ */
334
+ public function get_method() {
335
+ /**
336
+ * Filters the HTTP method Views should use to fetch their contents calling the back-end endpoint.
337
+ *
338
+ * @since 5.2.1
339
+ *
340
+ * @param string $method The HTTP method Views will use to fetch their content. Either `POST` (default) or
341
+ * `GET`. Invalid values will be set to the default `POST`.
342
+ */
343
+ $method = strtoupper( (string) apply_filters( 'tribe_events_views_v2_endpoint_method', 'POST' ) );
344
+
345
+ $method = in_array( $method, [ 'POST', 'GET' ], true ) ? $method : 'POST';
346
+
347
+ return $method;
348
+ }
349
  }
src/Tribe/Views/V2/Template.php CHANGED
@@ -60,7 +60,15 @@ class Template extends Base_Template {
60
  $context = wp_parse_args( $context_overrides, $this->context );
61
  $context['_context'] = $context;
62
 
63
- return parent::template( $this->view->get_template_slug(), $context, false );
 
 
 
 
 
 
 
 
64
  }
65
 
66
  /**
60
  $context = wp_parse_args( $context_overrides, $this->context );
61
  $context['_context'] = $context;
62
 
63
+ $template_slug = $this->view->get_template_slug();
64
+ if ( ! empty( $this->view->get_template_path() ) ) {
65
+ $template_slug = [
66
+ $this->view->get_template_path(),
67
+ $template_slug,
68
+ ];
69
+ }
70
+
71
+ return parent::template( $template_slug, $context, false );
72
  }
73
 
74
  /**
src/Tribe/Views/V2/Template_Bootstrap.php CHANGED
@@ -338,7 +338,25 @@ class Template_Bootstrap {
338
  * @return string Path to the File that initializes the template
339
  */
340
  public function filter_template_include( $template ) {
341
- $query = tribe_get_global_query_object();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
342
 
343
  // Global 404 needs to be respected.
344
  if ( $query->is_404() ) {
@@ -350,7 +368,6 @@ class Template_Bootstrap {
350
  return $template;
351
  }
352
 
353
- $context = tribe_context();
354
  $view_slug = $context->get( 'view' );
355
  $is_embed = V1_Templates::is_embed() || 'embed' === $view_slug;
356
 
338
  * @return string Path to the File that initializes the template
339
  */
340
  public function filter_template_include( $template ) {
341
+ $query = tribe_get_global_query_object();
342
+ $context = tribe_context();
343
+
344
+ /**
345
+ * Allows filtering the loading of our proprietary templates.
346
+ *
347
+ * @since 5.2.1
348
+ *
349
+ * @param boolean $load Whether we should load the theme templates instead of the Tribe templates. Default false.
350
+ * @param string $template The template located by WordPress.
351
+ * @param Tribe__Context $context The singleton, immutable, global object instance.
352
+ * @param WP_Query $query The global $wp_query, the $wp_the_query if $wp_query empty, null otherwise. From tribe_get_global_query_object() above.
353
+ */
354
+ $load_template = apply_filters( 'tribe_events_views_v2_use_wp_template_hierarchy', false, $template, $context, $query );
355
+
356
+ // Let others decide if they want to load our templates or not.
357
+ if ( (bool) $load_template ) {
358
+ return $template;
359
+ }
360
 
361
  // Global 404 needs to be respected.
362
  if ( $query->is_404() ) {
368
  return $template;
369
  }
370
 
 
371
  $view_slug = $context->get( 'view' );
372
  $is_embed = V1_Templates::is_embed() || 'embed' === $view_slug;
373
 
src/Tribe/Views/V2/View.php CHANGED
@@ -78,6 +78,15 @@ class View implements View_Interface {
78
  */
79
  protected $template_slug;
80
 
 
 
 
 
 
 
 
 
 
81
  /**
82
  * The Template instance the view will use to locate, manage and render its template.
83
  *
@@ -640,6 +649,13 @@ class View implements View_Interface {
640
  return $this->slug;
641
  }
642
 
 
 
 
 
 
 
 
643
  /**
644
  * {@inheritDoc}
645
  */
@@ -720,6 +736,10 @@ class View implements View_Interface {
720
  public function get_url( $canonical = false, $force = false ) {
721
  $category = $this->context->get( 'event_category', false );
722
 
 
 
 
 
723
  $query_args = [
724
  'post_type' => TEC::POSTTYPE,
725
  'eventDisplay' => $this->slug,
@@ -1356,6 +1376,7 @@ class View implements View_Interface {
1356
  * Sets up the View template variables.
1357
  *
1358
  * @since 4.9.4
 
1359
  *
1360
  * @return array An array of Template variables for the View Template.
1361
  */
@@ -1405,6 +1426,9 @@ class View implements View_Interface {
1405
  }
1406
  );
1407
 
 
 
 
1408
  $template_vars = [
1409
  'title' => $this->get_title( $events ),
1410
  'events' => $events,
@@ -1419,7 +1443,8 @@ class View implements View_Interface {
1419
  'today' => $today,
1420
  'now' => $this->context->get( 'now', 'now' ),
1421
  'request_date' => Dates::build_date_object( $this->context->get( 'event_date', $today ) ),
1422
- 'rest_url' => tribe( Rest_Endpoint::class )->get_url(),
 
1423
  'rest_nonce' => $rest_nonce,
1424
  'should_manage_url' => $this->should_manage_url,
1425
  'today_url' => $today_url,
@@ -1516,6 +1541,15 @@ class View implements View_Interface {
1516
  '/'
1517
  );
1518
 
 
 
 
 
 
 
 
 
 
1519
  return $request_uri;
1520
  }
1521
 
78
  */
79
  protected $template_slug;
80
 
81
+ /**
82
+ * The template path will be used as a prefix for template slug when locating its template files.
83
+ *
84
+ * @since 5.2.1
85
+ *
86
+ * @var string
87
+ */
88
+ protected $template_path = '';
89
+
90
  /**
91
  * The Template instance the view will use to locate, manage and render its template.
92
  *
649
  return $this->slug;
650
  }
651
 
652
+ /**
653
+ * {@inheritDoc}
654
+ */
655
+ public function get_template_path() {
656
+ return $this->template_path;
657
+ }
658
+
659
  /**
660
  * {@inheritDoc}
661
  */
736
  public function get_url( $canonical = false, $force = false ) {
737
  $category = $this->context->get( 'event_category', false );
738
 
739
+ if ( is_array( $category ) ) {
740
+ $category = Arr::to_list( reset( $category ) );
741
+ }
742
+
743
  $query_args = [
744
  'post_type' => TEC::POSTTYPE,
745
  'eventDisplay' => $this->slug,
1376
  * Sets up the View template variables.
1377
  *
1378
  * @since 4.9.4
1379
+ * @since 5.2.1 Add the `rest_method` to the template variables.
1380
  *
1381
  * @return array An array of Template variables for the View Template.
1382
  */
1426
  }
1427
  );
1428
 
1429
+ /** @var Rest_Endpoint $endpoint */
1430
+ $endpoint = tribe( Rest_Endpoint::class );
1431
+
1432
  $template_vars = [
1433
  'title' => $this->get_title( $events ),
1434
  'events' => $events,
1443
  'today' => $today,
1444
  'now' => $this->context->get( 'now', 'now' ),
1445
  'request_date' => Dates::build_date_object( $this->context->get( 'event_date', $today ) ),
1446
+ 'rest_url' => $endpoint->get_url(),
1447
+ 'rest_method' => $endpoint->get_method(),
1448
  'rest_nonce' => $rest_nonce,
1449
  'should_manage_url' => $this->should_manage_url,
1450
  'today_url' => $today_url,
1541
  '/'
1542
  );
1543
 
1544
+ /**
1545
+ * Allows filtering the Views request URI that will be used to set up the loop.
1546
+ *
1547
+ * @since 5.2.1
1548
+ *
1549
+ * @param string $request_uri The parsed request URI.
1550
+ */
1551
+ $request_uri = apply_filters( 'tribe_events_views_v2_request_uri', $request_uri );
1552
+
1553
  return $request_uri;
1554
  }
1555
 
src/Tribe/Views/V2/View_Interface.php CHANGED
@@ -89,6 +89,15 @@ interface View_Interface extends View_Url_Provider_Interface, Repository_User_I
89
  */
90
  public function get_slug();
91
 
 
 
 
 
 
 
 
 
 
92
  /**
93
  * Returns all the parent views that the current class as an array of slugs.
94
  *
89
  */
90
  public function get_slug();
91
 
92
+ /**
93
+ * Returns a View template path, usually a prefix for the template slug.
94
+ *
95
+ * @since 5.2.1
96
+ *
97
+ * @return string The view template path, usually a prefix for the template slug.
98
+ */
99
+ public function get_template_path();
100
+
101
  /**
102
  * Returns all the parent views that the current class as an array of slugs.
103
  *
src/Tribe/Views/V2/Views/Latest_Past_View.php CHANGED
@@ -34,12 +34,13 @@ class Latest_Past_View extends View {
34
  protected static $publicly_visible = true;
35
 
36
  /**
37
- * Whitelist of Templates to display when Latest Past Events is Active.
38
  *
39
  * @since 5.1.0
40
  *
41
  * @var array
42
  */
 
43
  protected $safelist = [
44
  // Standard View Components.
45
  'components/loader',
@@ -152,7 +153,7 @@ class Latest_Past_View extends View {
152
  }
153
 
154
  /**
155
- * Add Filters for Whitelist and Adding View HTML.
156
  *
157
  * @since 5.1.0
158
  */
@@ -162,19 +163,19 @@ class Latest_Past_View extends View {
162
  }
163
 
164
  /**
165
- * Connect Whitelist Filter to Tribe Template Done to Prevent some of the current View's
166
  * Templates from Displaying when the Latest Past Events Displays.
167
  *
168
  * @since 5.1.0
169
  */
170
  public function filter_template_done( $html ) {
171
- add_filter( 'tribe_template_done', [ $this, 'filter_template_display_by_safelist' ], 10, 4 );
172
 
 
173
  return $html;
174
  }
175
 
176
  /**
177
- * Filter the Template Files and Only Return HTML if in Whitelist.
178
  *
179
  * @since 5.1.0
180
  *
34
  protected static $publicly_visible = true;
35
 
36
  /**
37
+ * Safe list of Templates to display when Latest Past Events is Active.
38
  *
39
  * @since 5.1.0
40
  *
41
  * @var array
42
  */
43
+
44
  protected $safelist = [
45
  // Standard View Components.
46
  'components/loader',
153
  }
154
 
155
  /**
156
+ * Add Filters for safe list and Adding View HTML.
157
  *
158
  * @since 5.1.0
159
  */
163
  }
164
 
165
  /**
166
+ * Connect safe list Filter to Tribe Template Done to Prevent some of the current View's
167
  * Templates from Displaying when the Latest Past Events Displays.
168
  *
169
  * @since 5.1.0
170
  */
171
  public function filter_template_done( $html ) {
 
172
 
173
+ add_filter( 'tribe_template_done', [ $this, 'filter_template_display_by_safelist' ], 10, 4 );
174
  return $html;
175
  }
176
 
177
  /**
178
+ * Filter the Template Files and Only Return HTML if in safe list.
179
  *
180
  * @since 5.1.0
181
  *
src/Tribe/Views/V2/Views/Traits/iCal_Data.php CHANGED
@@ -10,6 +10,7 @@
10
  namespace Tribe\Events\Views\V2\Views\Traits;
11
 
12
  use Tribe\Events\Views\V2\View;
 
13
 
14
  /**
15
  * Trait iCal_Data
@@ -107,10 +108,13 @@ trait iCal_Data {
107
  * @return string The iCAl URL for the month view.
108
  */
109
  public function get_month_view_url() {
110
- $event_date = $this->context->get( 'event_date', 'now' );
111
 
112
  // If we don't have a date for some reason, give them the default iCal link.
113
- $url = ! empty( $event_date ) ? tribe( 'tec.iCal' )->month_view_ical_link( $event_date ) : tribe( 'tec.iCal' )->get_ical_link();
 
 
 
114
  return $url;
115
  }
116
  }
10
  namespace Tribe\Events\Views\V2\Views\Traits;
11
 
12
  use Tribe\Events\Views\V2\View;
13
+ use Tribe__Date_Utils as Dates;
14
 
15
  /**
16
  * Trait iCal_Data
108
  * @return string The iCAl URL for the month view.
109
  */
110
  public function get_month_view_url() {
111
+ $event_date = $this->context->get( 'event_date', Dates::build_date_object()->format( Dates::DBYEARMONTHTIMEFORMAT ) );
112
 
113
  // If we don't have a date for some reason, give them the default iCal link.
114
+ $url = ! empty( $event_date )
115
+ ? tribe( 'tec.iCal' )->month_view_ical_link( $event_date )
116
+ : tribe( 'tec.iCal' )->get_ical_link();
117
+
118
  return $url;
119
  }
120
  }
src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The List Widget View.
4
+ *
5
+ * @package Tribe\Events\Views\V2\Views\Widgets
6
+ * @since 5.2.1
7
+ */
8
+
9
+ namespace Tribe\Events\Views\V2\Views\Widgets;
10
+
11
+ use Tribe\Events\Views\V2\View;
12
+ use Tribe__Context as Context;
13
+
14
+ /**
15
+ * Class List_Widget_View
16
+ *
17
+ * @since 5.2.1
18
+ *
19
+ * @package Tribe\Events\Views\V2\Views\Widgets
20
+ */
21
+ class Widget_List_View extends View {
22
+
23
+ /**
24
+ * The slug for this view.
25
+ *
26
+ * @since 5.2.1
27
+ *
28
+ * @var string
29
+ */
30
+ protected $slug = 'widget-list';
31
+
32
+ /**
33
+ * The slug for the template path.
34
+ *
35
+ * @since 5.2.1
36
+ *
37
+ * @var string
38
+ */
39
+ protected $template_path = 'widgets';
40
+
41
+ /**
42
+ * Visibility for this view.
43
+ *
44
+ * @since 5.2.1
45
+ *
46
+ * @var bool
47
+ */
48
+ protected static $publicly_visible = false;
49
+
50
+ /**
51
+ * Whether the View should display the events bar or not.
52
+ *
53
+ * @since 5.2.1
54
+ *
55
+ * @var bool
56
+ */
57
+ protected $display_events_bar = false;
58
+
59
+ /**
60
+ * Sets up the View repository arguments from the View context or a provided Context object.
61
+ *
62
+ * @since 5.2.1
63
+ *
64
+ * @param Context|null $context A context to use to setup the args, or `null` to use the View Context.
65
+ *
66
+ * @return array<string,mixed> The arguments, ready to be set on the View repository instance.
67
+ */
68
+ protected function setup_repository_args( Context $context = null ) {
69
+ $context = null !== $context ? $context : $this->context;
70
+
71
+ $args = parent::setup_repository_args( $context );
72
+
73
+ return $args;
74
+ }
75
+
76
+ /**
77
+ * Overrides the base View method to fix the order of the events in the `past` display mode.
78
+ *
79
+ * @since 5.2.1
80
+ *
81
+ * @return array<string,mixed> The List View template vars, modified if required.
82
+ */
83
+ protected function setup_template_vars() {
84
+ $template_vars = parent::setup_template_vars();
85
+
86
+ return $template_vars;
87
+ }
88
+ }
src/Tribe/Views/V2/Widgets/Service_Provider.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The main service provider for the version 2 of the Widgets.
4
+ *
5
+ * @since 5.2.1
6
+ *
7
+ * @package Tribe\Events\Views\V2\Widgets
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Widgets;
11
+
12
+ use Tribe\Events\Views\V2\Views\Widgets\Widget_List_View;
13
+
14
+ /**
15
+ * Class Service_Provider
16
+ *
17
+ * @since 5.2.1
18
+ *
19
+ * @package Tribe\Events\Views\V2\Widgets
20
+ */
21
+ class Service_Provider extends \tad_DI52_ServiceProvider {
22
+
23
+ /**
24
+ * Variable that holds the name of the widgets being created.
25
+ *
26
+ * @since 5.2.1
27
+ *
28
+ * @var array<string>
29
+ */
30
+ protected $widgets = [
31
+ 'tribe_events_list_widget',
32
+ ];
33
+
34
+ /**
35
+ * Binds and sets up implementations.
36
+ *
37
+ * @since 5.2.1
38
+ */
39
+ public function register() {
40
+ if ( ! tribe_events_views_v2_is_enabled() ) {
41
+ return;
42
+ }
43
+
44
+ // Determine if V2 widgets should load.
45
+ if ( ! tribe_events_widgets_v2_is_enabled() ) {
46
+ return;
47
+ }
48
+
49
+ $this->hook();
50
+ }
51
+
52
+ /**
53
+ * Function used to attach the hooks associated with this class.
54
+ *
55
+ * @since 5.2.1
56
+ */
57
+ public function hook() {
58
+ add_filter( 'tribe_widgets', [ $this, 'register_widget' ] );
59
+ add_filter( 'tribe_events_views', [ $this, 'add_views' ] );
60
+ }
61
+
62
+ /**
63
+ * Add the widgets to register with WordPress.
64
+ *
65
+ * @since 5.2.1
66
+ *
67
+ * @param array<string,string> $widgets An array of widget classes to register.
68
+ *
69
+ * @return array<string,string> An array of registered widget classes.
70
+ */
71
+ public function register_widget( $widgets ) {
72
+ $widgets['tribe_events_list_widget'] = Widget_List::class;
73
+
74
+ return $widgets;
75
+ }
76
+
77
+ /**
78
+ * Add the widget views to the view manager.
79
+ *
80
+ * @since 5.2.1
81
+ *
82
+ * @param array<string,string> $views An associative array of views in the shape `[ <slug> => <class> ]`.
83
+ *
84
+ * @return array<string,string> $views The modified array of views in the shape `[ <slug> => <class> ]`.
85
+ */
86
+ public function add_views( $views ) {
87
+ $views['widget-list'] = Widget_List_View::class;
88
+
89
+ return $views;
90
+ }
91
+ }
src/Tribe/Views/V2/Widgets/Widget_Abstract.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget Abstract
4
+ *
5
+ * @since 5.2.1
6
+ *
7
+ * @package Tribe\Events\Views\V2\Widgets
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Widgets;
11
+
12
+ use Tribe\Events\Views\V2\View;
13
+ use Tribe\Events\Views\V2\View_Interface;
14
+ use Tribe__Context as Context;
15
+
16
+ /**
17
+ * The abstract all widgets should implement.
18
+ *
19
+ * @since 5.2.1
20
+ *
21
+ * @package Tribe\Widget
22
+ */
23
+ abstract class Widget_Abstract extends \Tribe\Widget\Widget_Abstract {
24
+
25
+ /**
26
+ * The view interface for the widget.
27
+ *
28
+ * @since 5.2.1
29
+ *
30
+ * @var View_Interface;
31
+ */
32
+ protected $view;
33
+
34
+ /**
35
+ * The slug of the widget view.
36
+ *
37
+ * @since 5.2.1
38
+ *
39
+ * @var string
40
+ */
41
+ protected $view_slug;
42
+
43
+ /**
44
+ * Setup the view for the widget.
45
+ *
46
+ * @since 5.2.1
47
+ */
48
+ public function setup_view() {
49
+ $context = tribe_context();
50
+
51
+ // Modifies the Context for the widget params.
52
+ // @todo update per https://github.com/moderntribe/tribe-common/pull/1451#discussion_r501498990.
53
+ $context = $this->alter_context( $context );
54
+
55
+ // Setup the view instance.
56
+ $view = View::make( $this->get_view_slug(), $context );
57
+
58
+ $view->get_template()->set_values( $this->get_arguments(), false );
59
+
60
+ $this->set_view( $view );
61
+ }
62
+
63
+ /**
64
+ * Returns the rendered View HTML code.
65
+ *
66
+ * @since 5.2.1
67
+ *
68
+ * @return string
69
+ */
70
+ public function get_html() {
71
+ return $this->get_view()->get_html();
72
+ }
73
+
74
+ /**
75
+ * Sets the template view.
76
+ *
77
+ * @since 5.2.1
78
+ *
79
+ * @param View_Interface $view Which view we are using this template on.
80
+ */
81
+ public function set_view( View_Interface $view ) {
82
+ $this->view = $view;
83
+ }
84
+
85
+ /**
86
+ * Returns the current template view, either set in the constructor or using the `set_view` method.
87
+ *
88
+ * @since 5.2.1
89
+ *
90
+ * @return View_Interface The current template view.
91
+ */
92
+ public function get_view() {
93
+ return $this->view;
94
+ }
95
+
96
+ /**
97
+ * {@inheritDoc}
98
+ */
99
+ public function get_view_slug() {
100
+ return $this->view_slug;
101
+ }
102
+
103
+ /**
104
+ * Alters the widget context with its arguments.
105
+ *
106
+ * @todo update in TEC-3620 & TEC-3597
107
+ *
108
+ * @since 5.2.1
109
+ *
110
+ * @param \Tribe__Context $context Context we will use to build the view.
111
+ * @param array<string,mixed> $arguments Current set of arguments.
112
+ *
113
+ * @return \Tribe__Context Context after widget changes.
114
+ */
115
+ public function alter_context( Context $context, array $arguments = [] ) {
116
+ // @todo update per https://github.com/moderntribe/tribe-common/pull/1451#discussion_r501498990.
117
+ $alter_context = $this->args_to_context( $arguments, $context );
118
+
119
+ $context = $context->alter( $alter_context );
120
+
121
+ return $context;
122
+ }
123
+
124
+ /**
125
+ * Translates widget arguments to their Context argument counterpart.
126
+ *
127
+ * @todo update in TEC-3620 & TEC-3597
128
+ *
129
+ * @since 5.2.1
130
+ *
131
+ * @param array<string,mixed> $arguments Current set of arguments.
132
+ * @param Context $context The request context.
133
+ *
134
+ * @return array<string,mixed> The translated widget arguments.
135
+ */
136
+ protected function args_to_context( array $arguments, Context $context ) {
137
+ $context_args = [ 'widget' => true ];
138
+
139
+ return $context_args;
140
+ }
141
+ }
src/Tribe/Views/V2/Widgets/Widget_List.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * List Widget
4
+ *
5
+ * @since 5.2.1
6
+ *
7
+ * @package Tribe\Events\Views\V2\Widgets
8
+ */
9
+
10
+ namespace Tribe\Events\Views\V2\Widgets;
11
+
12
+ /**
13
+ * Class for the List Widget.
14
+ *
15
+ * @since 5.2.1
16
+ *
17
+ * @package Tribe\Events\Views\V2\Widgets
18
+ */
19
+ class Widget_List extends Widget_Abstract {
20
+
21
+ /**
22
+ * {@inheritDoc}
23
+ *
24
+ * @var string
25
+ */
26
+ protected $slug = 'tribe_events_list_widget';
27
+
28
+ /**
29
+ * {@inheritDoc}
30
+ *
31
+ * @var string
32
+ */
33
+ protected $view_slug = 'widget-list';
34
+
35
+ /**
36
+ * {@inheritDoc}
37
+ *
38
+ * @var array<string,mixed>
39
+ */
40
+ protected $default_arguments = [
41
+ // View options.
42
+ 'view' => null,
43
+ 'should_manage_url' => false,
44
+
45
+ // Event widget options.
46
+ 'id' => null,
47
+ 'alias-slugs' => null,
48
+ 'title' => '',
49
+ 'limit' => 5,
50
+ 'no_upcoming_events' => '',
51
+ 'featured_events_only' => false,
52
+ 'tribe_is_list_widget' => true,
53
+ 'jsonld_enable' => true,
54
+
55
+ // WP_Widget properties.
56
+ 'id_base' => 'tribe-events-list-widget',
57
+ 'name' => null,
58
+ 'widget_options' => [
59
+ 'classname' => 'tribe-events-list-widget',
60
+ 'description' => null,
61
+ ],
62
+ 'control_options' => [
63
+ 'id_base' => 'tribe-events-list-widget',
64
+ ],
65
+ ];
66
+
67
+ /**
68
+ * @todo update in TEC-3612 & TEC-3613
69
+ *
70
+ * {@inheritDoc}
71
+ *
72
+ * @var array<string,mixed>
73
+ */
74
+ protected $validate_arguments_map = [
75
+ 'should_manage_url' => 'tribe_is_truthy',
76
+ 'no_upcoming_events' => 'tribe_is_truthy',
77
+ 'featured_events_only' => 'tribe_is_truthy',
78
+ 'jsonld_enable' => 'tribe_is_truthy',
79
+ ];
80
+
81
+ /**
82
+ * @todo update in TEC-3612 & TEC-3613
83
+ *
84
+ * {@inheritDoc}
85
+ */
86
+ public function setup() {
87
+ $this->setup_view();
88
+ }
89
+
90
+ /**
91
+ * {@inheritDoc}
92
+ */
93
+ public function get_arguments() {
94
+ $arguments = $this->arguments;
95
+
96
+ $arguments['description'] = esc_html__( 'A widget that displays upcoming events.', 'the-events-calendar' );
97
+ // @todo update name once this widget is ready to replace the existing list widget.
98
+ $arguments['name'] = esc_html__( 'Events List V2', 'the-events-calendar' );
99
+ $arguments['widget_options']['description'] = esc_html__( 'A widget that displays upcoming events.', 'the-events-calendar' );
100
+
101
+ $arguments = wp_parse_args( $arguments, $this->get_default_arguments() );
102
+
103
+ return $this->filter_arguments( $arguments );
104
+ }
105
+ }
src/Tribe/iCal.php CHANGED
@@ -1,5 +1,7 @@
1
  <?php
2
 
 
 
3
  /**
4
  * Class that implements the export to iCal functionality
5
  * both for list and single events
@@ -85,7 +87,14 @@ class Tribe__Events__iCal {
85
  public function month_view_ical_link( $event_date = null ) {
86
  $tec = Tribe__Events__Main::instance();
87
 
88
- return add_query_arg( [ 'ical' => 1 ], $tec->getLink( 'month', $event_date ) );
 
 
 
 
 
 
 
89
  }
90
 
91
  /**
1
  <?php
2
 
3
+ use Tribe__Date_Utils as Dates;
4
+
5
  /**
6
  * Class that implements the export to iCal functionality
7
  * both for list and single events
87
  public function month_view_ical_link( $event_date = null ) {
88
  $tec = Tribe__Events__Main::instance();
89
 
90
+ // Default to current month if not set.
91
+ if ( empty( $event_date ) ) {
92
+ $event_date = Dates::build_date_object()->format( Dates::DBYEARMONTHTIMEFORMAT );
93
+ }
94
+
95
+ $url = $tec->getLink( 'month', $event_date );
96
+
97
+ return add_query_arg( [ 'ical' => 1 ], $url );
98
  }
99
 
100
  /**
src/functions/views/provider.php CHANGED
@@ -111,3 +111,18 @@ function tribe_events_view_v2_use_period_repository() {
111
  */
112
  return (bool) apply_filters( 'tribe_events_views_v2_use_period_repository', $enabled );
113
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  */
112
  return (bool) apply_filters( 'tribe_events_views_v2_use_period_repository', $enabled );
113
  }
114
+
115
+ /**
116
+ * Checks whether V2 widgets should load.
117
+ *
118
+ * In order the function will check the `TRIBE_EVENTS_WIDGETS_V2_ENABLED` constant,
119
+ * the `TRIBE_EVENTS_WIDGETS_V2_ENABLED` environment variable.
120
+ *
121
+ * @since 5.2.1
122
+ *
123
+ * @return bool Whether Widgets v2 should load.
124
+ */
125
+ function tribe_events_widgets_v2_is_enabled() {
126
+
127
+ return (bool) defined( 'TRIBE_EVENTS_WIDGETS_V2_ENABLED' ) && TRIBE_EVENTS_WIDGETS_V2_ENABLED;
128
+ }
src/resources/css/widgets-full.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .tribe-events .tribe-events-widget-events-list__header{margin-bottom:24px}.tribe-events .tribe-events-widget-events-list__event-row--featured .tribe-events-widget-events-list__event-date-tag-datetime:after{background-color:#334aff;content:"";height:100%;left:0;position:absolute;width:3px}.tribe-events .tribe-events-widget-events-list__event-date-tag-month{color:#141827;font-family:Helvetica Neue,Helvetica,-apple-system,BlinkMacSystemFont,Roboto,Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.5;color:#5d5d5d;text-transform:uppercase}.tribe-common--breakpoint-xsmall.tribe-events .tribe-events-widget-events-list__event-title{font-size:18px;line-height:1.5}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-title{font-size:24px;line-height:1.42}.tribe-events .tribe-events-widget-events-list__view-more-link{color:#334aff;text-transform:capitalize}.tribe-events .tribe-events-widget-events-list__view-more-link:active,.tribe-events .tribe-events-widget-events-list__view-more-link:focus,.tribe-events .tribe-events-widget-events-list__view-more-link:hover{color:#334aff;border-bottom-color:#334aff}.tribe-theme-twentyseventeen .tribe-events .tribe-events-widget-events-list__view-more-link:focus,.tribe-theme-twentyseventeen .tribe-events .tribe-events-widget-events-list__view-more-link:hover{color:#334aff}
src/resources/css/widgets-skeleton.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .tribe-events-view{position:relative}.tribe-events .tribe-events-l-container{padding-bottom:80px;padding-top:64px;min-height:600px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-l-container{padding-bottom:160px;padding-top:96px;min-height:700px}.tribe-events .tribe-events-widget-events-list__header{margin-bottom:24px}.tribe-events .tribe-events-widget-events-list__event-row{flex-wrap:nowrap;margin-bottom:16px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-row{margin-bottom:20px}.tribe-events .tribe-events-widget-events-list__event-row:last-child{margin-bottom:0}.tribe-events .tribe-events-widget-events-list__event-date-tag{flex:none;position:relative;width:64px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-date-tag{width:72px}.tribe-events .tribe-events-widget-events-list__event-date-tag-datetime{display:flex;flex-direction:column;height:100%;text-align:center}.tribe-events .tribe-events-widget-events-list__event-date-tag-daynum,.tribe-events .tribe-events-widget-events-list__event-date-tag-month{margin-bottom:-4px}.tribe-events .tribe-events-widget-events-list__event-datetime-wrapper{margin-bottom:4px}.tribe-common--breakpoint-medium.tribe-events .tribe-events-widget-events-list__event-datetime-wrapper{margin-bottom:0}.tribe-events .tribe-events-widget-events-list__view-more{margin-top:20px}
src/resources/js/views/manager.js CHANGED
@@ -471,7 +471,7 @@ tribe.events.views.manager = {};
471
  url: $container.data( 'view-rest-url' ),
472
  accepts: 'html',
473
  dataType: 'html',
474
- method: 'GET',
475
  'async': true, // async is keyword
476
  beforeSend: obj.ajaxBeforeSend,
477
  complete: obj.ajaxComplete,
471
  url: $container.data( 'view-rest-url' ),
472
  accepts: 'html',
473
  dataType: 'html',
474
+ method: $container.data( 'view-rest-method' ) || 'POST',
475
  'async': true, // async is keyword
476
  beforeSend: obj.ajaxBeforeSend,
477
  complete: obj.ajaxComplete,
src/views/v2/day.php CHANGED
@@ -9,10 +9,11 @@
9
  *
10
  * @link http://m.tri.be/1aiy
11
  *
12
- * @version 5.0.2
13
  *
14
  * @var array $events The array containing the events.
15
  * @var string $rest_url The REST URL.
 
16
  * @var string $rest_nonce The REST nonce.
17
  * @var bool $disable_event_search Boolean on whether to disable the event search.
18
  * @var string[] $container_classes Classes used for the container of the view.
@@ -32,6 +33,7 @@ if ( empty( $disable_event_search ) ) {
32
  data-js="tribe-events-view"
33
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
34
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
 
35
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
36
  <?php foreach ( $container_data as $key => $value ) : ?>
37
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
9
  *
10
  * @link http://m.tri.be/1aiy
11
  *
12
+ * @version 5.2.1
13
  *
14
  * @var array $events The array containing the events.
15
  * @var string $rest_url The REST URL.
16
+ * @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
17
  * @var string $rest_nonce The REST nonce.
18
  * @var bool $disable_event_search Boolean on whether to disable the event search.
19
  * @var string[] $container_classes Classes used for the container of the view.
33
  data-js="tribe-events-view"
34
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
35
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
36
+ data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
37
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
38
  <?php foreach ( $container_data as $key => $value ) : ?>
39
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
src/views/v2/list.php CHANGED
@@ -9,10 +9,11 @@
9
  *
10
  * @link http://m.tri.be/1aiy
11
  *
12
- * @version 5.0.2
13
  *
14
  * @var array $events The array containing the events.
15
  * @var string $rest_url The REST URL.
 
16
  * @var string $rest_nonce The REST nonce.
17
  * @var int $should_manage_url int containing if it should manage the URL.
18
  * @var bool $disable_event_search Boolean on whether to disable the event search.
@@ -31,6 +32,7 @@ if ( empty( $disable_event_search ) ) {
31
  data-js="tribe-events-view"
32
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
33
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
 
34
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
35
  <?php foreach ( $container_data as $key => $value ) : ?>
36
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
9
  *
10
  * @link http://m.tri.be/1aiy
11
  *
12
+ * @version 5.2.1
13
  *
14
  * @var array $events The array containing the events.
15
  * @var string $rest_url The REST URL.
16
+ * @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
17
  * @var string $rest_nonce The REST nonce.
18
  * @var int $should_manage_url int containing if it should manage the URL.
19
  * @var bool $disable_event_search Boolean on whether to disable the event search.
32
  data-js="tribe-events-view"
33
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
34
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
35
+ data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
36
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
37
  <?php foreach ( $container_data as $key => $value ) : ?>
38
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
src/views/v2/month.php CHANGED
@@ -12,6 +12,7 @@
12
  * @version 5.0.2
13
  *
14
  * @var string $rest_url The REST URL.
 
15
  * @var string $rest_nonce The REST nonce.
16
  * @var int $should_manage_url int containing if it should manage the URL.
17
  * @var bool $disable_event_search Boolean on whether to disable the event search.
@@ -30,6 +31,7 @@ if ( empty( $disable_event_search ) ) {
30
  data-js="tribe-events-view"
31
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
32
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
 
33
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
34
  <?php foreach ( $container_data as $key => $value ) : ?>
35
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
12
  * @version 5.0.2
13
  *
14
  * @var string $rest_url The REST URL.
15
+ * @var string $rest_method The HTTP method, either `POST` or `GET`, the View will use to make requests.
16
  * @var string $rest_nonce The REST nonce.
17
  * @var int $should_manage_url int containing if it should manage the URL.
18
  * @var bool $disable_event_search Boolean on whether to disable the event search.
31
  data-js="tribe-events-view"
32
  data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
33
  data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
34
+ data-view-rest-method="<?php echo esc_attr( $rest_method ); ?>"
35
  data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
36
  <?php foreach ( $container_data as $key => $value ) : ?>
37
  data-view-<?php echo esc_attr( $key ) ?>="<?php echo esc_attr( $value ) ?>"
src/views/v2/widgets/events-list.php ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var array<\WP_Post> $events The array containing the events.
15
+ * @var string $rest_url The REST URL.
16
+ * @var string $rest_nonce The REST nonce.
17
+ * @var int $should_manage_url int containing if it should manage the URL.
18
+ * @var array<string> $container_classes Classes used for the container of the view.
19
+ * @var array<string,mixed> $container_data An additional set of container `data` attributes.
20
+ * @var string $breakpoint_pointer String we use as pointer to the current view we are setting up with breakpoints.
21
+ * @var array<string,string> $messages An array of user-facing messages, managed by the View.
22
+ * @var array<string,bool> $display An array of whether to display specific event meta or not.
23
+ * @var string $view_more_link The URL to view all events.
24
+ */
25
+
26
+ $event = (object) [
27
+ 'ID' => 1234,
28
+ 'permalink' => 'https://tri.be/',
29
+ 'title' => 'Puppy time',
30
+ 'cost' => '$12 - $15',
31
+ 'venues' => [
32
+ (object) [
33
+ 'post_title' => 'BC Place',
34
+ 'address' => '777 Pacific Blvd',
35
+ 'city' => 'Vancouver',
36
+ 'state_province' => 'BC',
37
+ 'zip' => 'V6B 4Y8',
38
+ 'country' => 'Canada',
39
+ ],
40
+ ],
41
+ 'featured' => false,
42
+ ];
43
+ $events = [
44
+ $event,
45
+ ];
46
+ $rest_url = 'https://tri.be/';
47
+ $rest_nonce = 'a3ghv98awe98';
48
+ $should_manage_url = '0';
49
+ $container_classes = [ 'tribe-common', 'tribe-events', 'tribe-events-view', 'tribe-events-widget', 'tribe-events-widget--events-list' ];
50
+ $container_data = [];
51
+ $breakpoint_pointer = 'e1a5c9c2-2781-4fcb-b4fa-0ab738292e04';
52
+ $messages = [];
53
+ $display = [
54
+ 'cost' => true,
55
+ 'venue' => true,
56
+ 'street' => true,
57
+ 'city' => true,
58
+ 'region' => true,
59
+ 'zip' => true,
60
+ 'country' => true,
61
+ 'phone' => true,
62
+ 'organizer' => true,
63
+ ];
64
+ $view_more_link = '#';
65
+ ?>
66
+ <div
67
+ <?php tribe_classes( $container_classes ); ?>
68
+ data-js="tribe-events-view"
69
+ data-view-rest-nonce="<?php echo esc_attr( $rest_nonce ); ?>"
70
+ data-view-rest-url="<?php echo esc_url( $rest_url ); ?>"
71
+ data-view-manage-url="<?php echo esc_attr( $should_manage_url ); ?>"
72
+ <?php foreach ( $container_data as $key => $value ) : ?>
73
+ data-view-<?php echo esc_attr( $key ); ?>="<?php echo esc_attr( $value ); ?>"
74
+ <?php endforeach; ?>
75
+ <?php if ( ! empty( $breakpoint_pointer ) ) : ?>
76
+ data-view-breakpoint-pointer="<?php echo esc_attr( $breakpoint_pointer ); ?>"
77
+ <?php endif; ?>
78
+ >
79
+ <div class="tribe-common-l-container">
80
+ <div class="tribe-events-widget-events-list">
81
+ <header class="tribe-events-widget-events-list__header">
82
+ <h3 class="tribe-events-widget-events-list__header-title tribe-common-h6 tribe-common-h--alt">
83
+ <?php
84
+ echo esc_html(
85
+ sprintf(
86
+ /* translators: %1$s: Event (plural). */
87
+ _x( 'Upcoming %1$s', 'Title for events list widget.', 'the-events-calendar' ),
88
+ tribe_get_event_label_plural()
89
+ )
90
+ );
91
+ ?>
92
+ </h3>
93
+ </header>
94
+
95
+ <?php if ( ! empty( $events ) ) : ?>
96
+
97
+ <div class="tribe-events-widget-events-list__events">
98
+ <?php foreach ( $events as $event ) : ?>
99
+ <?php
100
+ $this->template(
101
+ 'widgets/events-list/event',
102
+ [
103
+ 'event' => $event,
104
+ 'display' => $display,
105
+ ]
106
+ );
107
+ ?>
108
+ <?php endforeach; ?>
109
+ </div>
110
+
111
+ <?php $this->template( 'widgets/events-list/view-more', [ 'view_more_link' => $view_more_link ] ); ?>
112
+
113
+ <?php else : ?>
114
+
115
+ <?php // get messages component ?>
116
+
117
+ <?php endif; ?>
118
+ </div>
119
+ </div>
120
+ </div>
src/views/v2/widgets/events-list/event.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var array<string,bool> $display Associative array of display settings for event meta.
16
+ *
17
+ * @see tribe_get_event() For the format of the event object.
18
+ */
19
+
20
+ $container_classes = [ 'tribe-common-g-row', 'tribe-events-widget-events-list__event-row' ];
21
+ $container_classes['tribe-events-widget-events-list__event-row--featured'] = $event->featured;
22
+
23
+ $event_classes = tribe_get_post_class( [ 'tribe-events-widget-events-list__event' ], $event->ID );
24
+ ?>
25
+ <div <?php tribe_classes( $container_classes ); ?>>
26
+
27
+ <?php $this->template( 'widgets/events-list/event/date-tag', [ 'event' => $event ] ); ?>
28
+
29
+ <div class="tribe-events-widget-events-list__event-wrapper tribe-common-g-col">
30
+ <article <?php tribe_classes( $event_classes ) ?>>
31
+ <div class="tribe-events-widget-events-list__event-details">
32
+
33
+ <header class="tribe-events-widget-events-list__event-header">
34
+ <?php $this->template( 'widgets/events-list/event/date', [ 'event' => $event ] ); ?>
35
+ <?php $this->template( 'widgets/events-list/event/title', [ 'event' => $event ] ); ?>
36
+ </header>
37
+
38
+ <?php // $this->template( 'widgets/events-list/event/cost', [ 'event' => $event, 'display' => $display ] ); ?>
39
+ <?php // $this->template( 'widgets/events-list/event/venue', [ 'event' => $event, 'display' => $display ] ); ?>
40
+ <?php // $this->template( 'widgets/events-list/event/organizer', [ 'event' => $event, 'display' => $display ] ); ?>
41
+
42
+ </div>
43
+ </article>
44
+ </div>
45
+
46
+ </div>
src/views/v2/widgets/events-list/event/cost.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Cost
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/cost.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var array<string,bool> $display Associative array of display settings for event meta.
16
+ *
17
+ * @see tribe_get_event() For the format of the event object.
18
+ */
19
+
20
+ if ( empty( $event->cost ) || empty( $display['cost'] ) ) {
21
+ return;
22
+ }
23
+ ?>
24
+ <div class="tribe-events-widget-events-list__event-cost tribe-common-b2">
25
+ <span class="tribe-events-widget-events-list__event-cost-price">
26
+ <?php echo esc_html( $event->cost ); ?>
27
+ </span>
28
+ </div>
src/views/v2/widgets/events-list/event/date-tag.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Venue
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/venue.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+
19
+ use Tribe__Date_Utils as Dates;
20
+
21
+ /*
22
+ * If the request date is after the event start date, show the request date to avoid users from seeing dates "in the
23
+ * past" in relation to the date they requested (or today's date).
24
+ */
25
+ $display_date = empty( $is_past ) && ! empty( $request_date )
26
+ ? max( $event->dates->start_display, $request_date )
27
+ : $event->dates->start_display;
28
+
29
+ $event_month = $display_date->format_i18n( 'M' );
30
+ $event_day_num = $display_date->format_i18n( 'j' );
31
+ $event_date_attr = $display_date->format( Dates::DBDATEFORMAT );
32
+ ?>
33
+ <div class="tribe-events-widget-events-list__event-date-tag tribe-common-g-col">
34
+ <time class="tribe-events-widget-events-list__event-date-tag-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
35
+ <span class="tribe-events-widget-events-list__event-date-tag-month">
36
+ <?php echo esc_html( $event_month ); ?>
37
+ </span>
38
+ <span class="tribe-events-widget-events-list__event-date-tag-daynum tribe-common-h2 tribe-common-h4--min-medium">
39
+ <?php echo esc_html( $event_day_num ); ?>
40
+ </span>
41
+ </time>
42
+ </div>
src/views/v2/widgets/events-list/event/date.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Date
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/date.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+ use Tribe__Date_Utils as Dates;
19
+
20
+ $event_date_attr = $event->dates->start->format( Dates::DBDATEFORMAT );
21
+
22
+ ?>
23
+ <div class="tribe-events-widget-events-list__event-datetime-wrapper tribe-common-b2 tribe-common-b3--min-medium">
24
+ <?php $this->template( 'widgets/events-list/event/date/featured', [ 'event' => $event ] ); ?>
25
+ <time class="tribe-events-widget-events-list__event-datetime" datetime="<?php echo esc_attr( $event_date_attr ); ?>">
26
+ <?php
27
+ // The date returned back contains HTML and is already escaped.
28
+ echo $event->schedule_details->value();
29
+ ?>
30
+ </time>
31
+ <?php $this->do_entry_point( 'after_event_datetime' ); ?>
32
+ </div>
src/views/v2/widgets/events-list/event/date/featured.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Featured Icon
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/date/featured.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+
19
+ if ( empty( $event->featured ) ) {
20
+ return;
21
+ }
22
+ ?>
23
+ <em
24
+ class="tribe-events-widget-events-list__event-datetime-featured-icon"
25
+ aria-label="<?php esc_attr_e( 'Featured', 'the-events-calendar' ); ?>"
26
+ title="<?php esc_attr_e( 'Featured', 'the-events-calendar' ); ?>"
27
+ >
28
+ </em>
29
+ <span class="tribe-events-widget-events-list__event-datetime-featured-text tribe-common-a11y-visual-hide">
30
+ <?php esc_html_e( 'Featured', 'the-events-calendar' ); ?>
31
+ </span>
src/views/v2/widgets/events-list/event/organizer.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Organizer
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/organizer.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var array<string,bool> $display Associative array of display settings for event meta.
16
+ *
17
+ * @see tribe_get_event() For the format of the event object.
18
+ */
19
+ ?>
src/views/v2/widgets/events-list/event/title.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Title
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/title.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+ ?>
19
+ <h3 class="tribe-events-widget-events-list__event-title tribe-common-h7">
20
+ <a
21
+ href="<?php echo esc_url( $event->permalink ); ?>"
22
+ title="<?php echo esc_attr( $event->title ); ?>"
23
+ rel="bookmark"
24
+ class="tribe-events-widget-events-list__event-title-link tribe-common-anchor-thin"
25
+ >
26
+ <?php
27
+ // phpcs:ignore
28
+ echo $event->title;
29
+ ?>
30
+ </a>
31
+ </h3>
src/views/v2/widgets/events-list/event/venue.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event Venue
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event/venue.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var WP_Post $event The event post object with properties added by the `tribe_get_event` function.
15
+ * @var array<string,bool> $display Associative array of display settings for event meta.
16
+ *
17
+ * @see tribe_get_event() For the format of the event object.
18
+ */
19
+
20
+ if ( ! $event->venues->count() ) {
21
+ return;
22
+ }
23
+
24
+ if (
25
+ empty( $display['venue'] )
26
+ && empty( $display['street'] )
27
+ && empty( $display['city'] )
28
+ && empty( $display['region'] )
29
+ && empty( $display['zip'] )
30
+ && empty( $display['country'] )
31
+ ) {
32
+ return;
33
+ }
34
+
35
+ $venue = $event->venues[0];
36
+ ?>
37
+ <div class="tribe-events-widget-events-list__event-venue tribe-common-b2">
38
+
39
+ <?php if ( ! empty( $display['venue'] ) ) : ?>
40
+ <span class="tribe-events-widget-events-list__event-venue-name tribe-common-b2--bold">
41
+ <?php echo wp_kses_post( $venue->post_title ); ?>
42
+ </span>
43
+ <?php endif; ?>
44
+
45
+ <?php
46
+ if (
47
+ ! empty( $display['street'] )
48
+ || ! empty( $display['city'] )
49
+ || ! empty( $display['region'] )
50
+ || ! empty( $display['zip'] )
51
+ || ! empty( $display['country'] )
52
+ ) :
53
+ ?>
54
+ <address class="tribe-events-widget-events-list__event-venue-address">
55
+
56
+ <?php if ( ! empty( $display['street'] ) ) : ?>
57
+ <div class="tribe-events-widget-events-list__event-venue-address-street">
58
+ <?php echo esc_html( $venue->address ); ?>
59
+ </div>
60
+ <?php endif; ?>
61
+
62
+ <?php if ( ! empty( $display['city'] ) || ! empty( $display['region'] ) || ! empty( $display['zip'] ) ) : ?>
63
+ <div class="tribe-events-widget-events-list__event-venue-address-">
64
+ <?php if ( ! empty( $display['city'] ) ) : ?>
65
+ <span class="tribe-events-widget-events-list__event-venue-address-city">
66
+ <?php echo esc_html( $venue->city ); ?>
67
+ </span>
68
+ <?php endif; ?>
69
+ <?php if ( ! empty( $display['region'] ) ) : ?>
70
+ <span class="tribe-events-widget-events-list__event-venue-address-region">
71
+ <?php echo esc_html( $venue->state_province ); ?>
72
+ </span>
73
+ <?php endif; ?>
74
+ <?php if ( ! empty( $display['zip'] ) ) : ?>
75
+ <span class="tribe-events-widget-events-list__event-venue-address-zip">
76
+ <?php echo esc_html( $venue->zip ); ?>
77
+ </span>
78
+ <?php endif; ?>
79
+ </div>
80
+ <?php endif; ?>
81
+
82
+ <?php if ( ! empty( $display['country'] ) ) : ?>
83
+ <div class="tribe-events-widget-events-list__event-venue-address-country">
84
+ <?php echo esc_html( $venue->country ); ?>
85
+ </div>
86
+ <?php endif; ?>
87
+
88
+ </address>
89
+ <?php endif; ?>
90
+
91
+ </div>
src/views/v2/widgets/events-list/view-more.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Widget: Events List Event
4
+ *
5
+ * Override this template in your own theme by creating a file at:
6
+ * [your-theme]/tribe/events/v2/widgets/events-list/event.php
7
+ *
8
+ * See more documentation about our views templating system.
9
+ *
10
+ * @link http://m.tri.be/1aiy
11
+ *
12
+ * @version 5.2.1
13
+ *
14
+ * @var string $view_more_link The URL to view all events.
15
+ *
16
+ * @see tribe_get_event() For the format of the event object.
17
+ */
18
+
19
+ if ( empty( $view_more_link ) ) {
20
+ return;
21
+ }
22
+ ?>
23
+ <div class="tribe-events-widget-events-list__view-more tribe-common-b1 tribe-common-b2--min-medium">
24
+ <a
25
+ href="<?php echo esc_url( $view_more_link ); ?>"
26
+ class="tribe-events-widget-events-list__view-more-link tribe-common-anchor-thin"
27
+ >
28
+ <?php esc_html_e( 'View more', 'the-events-calendar' ); ?>
29
+ </a>
30
+ </div>
src/views/v2/widgets/widget-list.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Temporary Display of V2 List Widget
4
+ */
5
+
6
+ ?>
7
+ <div>
8
+ <?php echo esc_html( "Widget Name: {$name}" ); ?>
9
+ </div>
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: 5.2.0
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
2
  /**
3
  * Plugin Name: The Events Calendar
4
  * Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
5
+ * Version: 5.2.1
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit48aa4da3de96bd003fd2e73c73bc4079::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit77929debb6c64d04640ddb169ec7e474::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -11,6 +11,7 @@ return array(
11
  'Tribe\\Events\\Editor\\Objects\\Event' => $baseDir . '/src/Tribe/Editor/Objects/Event.php',
12
  'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
13
  'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
 
14
  'Tribe\\Events\\Integrations\\WP_Rocket' => $baseDir . '/src/Tribe/Integrations/WP_Rocket.php',
15
  'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
16
  'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
@@ -64,4 +65,8 @@ return array(
64
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
65
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
66
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
 
 
 
 
67
  );
11
  'Tribe\\Events\\Editor\\Objects\\Event' => $baseDir . '/src/Tribe/Editor/Objects/Event.php',
12
  'Tribe\\Events\\I18n' => $baseDir . '/src/Tribe/I18n.php',
13
  'Tribe\\Events\\Integrations\\Beaver_Builder' => $baseDir . '/src/Tribe/Integrations/Beaver_Builder.php',
14
+ 'Tribe\\Events\\Integrations\\WPML\\Views\\V2\\Filters' => $baseDir . '/src/Tribe/Integrations/WPML/Views/V2/Filters.php',
15
  'Tribe\\Events\\Integrations\\WP_Rocket' => $baseDir . '/src/Tribe/Integrations/WP_Rocket.php',
16
  'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
17
  'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
65
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
66
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
67
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => $baseDir . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
68
+ 'Tribe\\Events\\Views\\V2\\Views\\Widgets\\Widget_List_View' => $baseDir . '/src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php',
69
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Service_Provider' => $baseDir . '/src/Tribe/Views/V2/Widgets/Service_Provider.php',
70
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Widget_Abstract' => $baseDir . '/src/Tribe/Views/V2/Widgets/Widget_Abstract.php',
71
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Widget_List' => $baseDir . '/src/Tribe/Views/V2/Widgets/Widget_List.php',
72
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit48aa4da3de96bd003fd2e73c73bc4079
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit48aa4da3de96bd003fd2e73c73bc4079
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit48aa4da3de96bd003fd2e73c73bc4079', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit48aa4da3de96bd003fd2e73c73bc4079', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit77929debb6c64d04640ddb169ec7e474
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit77929debb6c64d04640ddb169ec7e474', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit77929debb6c64d04640ddb169ec7e474', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit77929debb6c64d04640ddb169ec7e474::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -26,6 +26,7 @@ class ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079
26
  'Tribe\\Events\\Editor\\Objects\\Event' => __DIR__ . '/../..' . '/src/Tribe/Editor/Objects/Event.php',
27
  'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
28
  'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
 
29
  'Tribe\\Events\\Integrations\\WP_Rocket' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WP_Rocket.php',
30
  'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
31
  'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
@@ -79,14 +80,18 @@ class ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079
79
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
80
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
81
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
 
 
 
 
82
  );
83
 
84
  public static function getInitializer(ClassLoader $loader)
85
  {
86
  return \Closure::bind(function () use ($loader) {
87
- $loader->prefixLengthsPsr4 = ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079::$prefixLengthsPsr4;
88
- $loader->prefixDirsPsr4 = ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079::$prefixDirsPsr4;
89
- $loader->classMap = ComposerStaticInit48aa4da3de96bd003fd2e73c73bc4079::$classMap;
90
 
91
  }, null, ClassLoader::class);
92
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit77929debb6c64d04640ddb169ec7e474
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
26
  'Tribe\\Events\\Editor\\Objects\\Event' => __DIR__ . '/../..' . '/src/Tribe/Editor/Objects/Event.php',
27
  'Tribe\\Events\\I18n' => __DIR__ . '/../..' . '/src/Tribe/I18n.php',
28
  'Tribe\\Events\\Integrations\\Beaver_Builder' => __DIR__ . '/../..' . '/src/Tribe/Integrations/Beaver_Builder.php',
29
+ 'Tribe\\Events\\Integrations\\WPML\\Views\\V2\\Filters' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WPML/Views/V2/Filters.php',
30
  'Tribe\\Events\\Integrations\\WP_Rocket' => __DIR__ . '/../..' . '/src/Tribe/Integrations/WP_Rocket.php',
31
  'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
32
  'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
80
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\List_Behavior' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/List_Behavior.php',
81
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\With_Fast_Forward_Link' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/With_Fast_Forward_Link.php',
82
  'Tribe\\Events\\Views\\V2\\Views\\Traits\\iCal_Data' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Traits/iCal_Data.php',
83
+ 'Tribe\\Events\\Views\\V2\\Views\\Widgets\\Widget_List_View' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Views/Widgets/Widget_List_View.php',
84
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Service_Provider.php',
85
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Widget_Abstract' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Widget_Abstract.php',
86
+ 'Tribe\\Events\\Views\\V2\\Widgets\\Widget_List' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Widgets/Widget_List.php',
87
  );
88
 
89
  public static function getInitializer(ClassLoader $loader)
90
  {
91
  return \Closure::bind(function () use ($loader) {
92
+ $loader->prefixLengthsPsr4 = ComposerStaticInit77929debb6c64d04640ddb169ec7e474::$prefixLengthsPsr4;
93
+ $loader->prefixDirsPsr4 = ComposerStaticInit77929debb6c64d04640ddb169ec7e474::$prefixDirsPsr4;
94
+ $loader->classMap = ComposerStaticInit77929debb6c64d04640ddb169ec7e474::$classMap;
95
 
96
  }, null, ClassLoader::class);
97
  }