The Events Calendar - Version 5.1.1.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 borkweb
Plugin Icon The Events Calendar
Version 5.1.1.1
Comparing to
See all releases

Code changes from version 5.1.2 to 5.1.1.1

Files changed (143) hide show
  1. common/lang/tribe-common-cs_CZ.mo +0 -0
  2. common/lang/tribe-common-de_DE.mo +0 -0
  3. common/lang/tribe-common-es_ES.mo +0 -0
  4. common/lang/tribe-common-fr_CA.mo +0 -0
  5. common/lang/tribe-common-fr_FR.mo +0 -0
  6. common/lang/tribe-common-hu_HU.mo +0 -0
  7. common/lang/tribe-common-it_IT.mo +0 -0
  8. common/lang/tribe-common-ja.mo +0 -0
  9. common/lang/tribe-common-nl_NL.mo +0 -0
  10. common/lang/tribe-common-pl_PL.mo +0 -0
  11. common/lang/tribe-common-pt_BR.mo +0 -0
  12. common/lang/tribe-common-pt_PT.mo +0 -0
  13. common/lang/tribe-common-ru_RU.mo +0 -0
  14. common/lang/tribe-common.pot +99 -414
  15. common/src/Tribe/App_Shop.php +12 -149
  16. common/src/Tribe/Context/locations.php +0 -16
  17. common/src/Tribe/Credits.php +2 -2
  18. common/src/Tribe/Extension.php +9 -57
  19. common/src/Tribe/Main.php +1 -1
  20. common/src/Tribe/Plugins_API.php +56 -141
  21. common/src/Tribe/Shortcode/Shortcode_Abstract.php +53 -76
  22. common/src/Tribe/Shortcode/Shortcode_Interface.php +31 -44
  23. common/src/Tribe/Support.php +1 -1
  24. common/src/Tribe/Template.php +16 -0
  25. common/src/Tribe/Tracker.php +1 -18
  26. common/src/Tribe/Utils/Array.php +0 -79
  27. common/src/Tribe/Utils/Element_Attributes.php +0 -241
  28. common/src/admin-views/app-shop.php +80 -174
  29. common/src/functions/template-tags/html.php +1 -30
  30. common/src/functions/template-tags/post.php +2 -5
  31. common/src/resources/css/app-shop.min.css +1 -1
  32. common/src/resources/css/tribe-common-admin.min.css +1 -1
  33. common/src/resources/images/app-shop-banner.jpg +0 -0
  34. common/src/resources/images/app-shop-community-tickets.jpg +0 -0
  35. common/src/resources/images/app-shop-community.jpg +0 -0
  36. common/src/resources/images/app-shop-eventbrite.jpg +0 -0
  37. common/src/resources/images/app-shop-filter-bar.jpg +0 -0
  38. common/src/resources/images/app-shop-ical.jpg +0 -0
  39. common/src/resources/images/app-shop-image-widget-plus.jpg +0 -0
  40. common/src/resources/images/app-shop-pro.jpg +0 -0
  41. common/src/resources/images/app-shop-promoter.jpg +0 -0
  42. common/src/resources/images/app-shop-tickets-plus.jpg +0 -0
  43. common/src/resources/images/donate-link-screenshot.png +0 -0
  44. common/src/resources/images/gutenberg-admin-notice-TEC.png +0 -0
  45. common/src/resources/images/gutenberg-admin-notice-tickets.png +0 -0
  46. common/src/resources/images/icons/caret-down.svg +1 -1
  47. common/src/resources/images/icons/caret-up.svg +1 -1
  48. common/src/resources/images/icons/horns.svg +0 -1
  49. common/src/resources/images/icons/list.svg +1 -1
  50. common/src/resources/images/icons/map.svg +1 -1
  51. common/src/resources/images/icons/photo.svg +1 -1
  52. common/src/resources/images/logo/bundle-community-manager.svg +0 -1
  53. common/src/resources/images/logo/bundle-event-importer.svg +0 -1
  54. common/src/resources/images/logo/bundle-event-marketing.svg +0 -1
  55. common/src/resources/images/logo/bundle-ultimate.svg +0 -1
  56. common/src/resources/images/logo/bundle-virtual-events.svg +0 -1
  57. common/src/resources/images/logo/community-events.svg +0 -1
  58. common/src/resources/images/logo/community-tickets.svg +0 -1
  59. common/src/resources/images/logo/event-aggregator.svg +0 -1
  60. common/src/resources/images/logo/event-tickets-plus.svg +0 -1
  61. common/src/resources/images/logo/event-tickets.svg +0 -1
  62. common/src/resources/images/logo/eventbrite-tickets.svg +0 -1
  63. common/src/resources/images/logo/events-calendar-pro.svg +0 -1
  64. common/src/resources/images/logo/filterbar.svg +0 -1
  65. common/src/resources/images/logo/image-widget-plus.svg +0 -1
  66. common/src/resources/images/logo/promoter.svg +0 -1
  67. common/src/resources/images/logo/the-events-calendar.svg +0 -1
  68. common/src/resources/images/logo/virtual-events.svg +0 -1
  69. common/src/resources/images/mascot.png +0 -0
  70. common/src/resources/images/shop/aggregator.jpg +0 -0
  71. common/src/resources/images/shop/calendar.jpg +0 -0
  72. common/src/resources/images/shop/community-tickets.jpg +0 -0
  73. common/src/resources/images/shop/community.jpg +0 -0
  74. common/src/resources/images/shop/eventbrite.jpg +0 -0
  75. common/src/resources/images/shop/extension-advanced-options.jpg +0 -0
  76. common/src/resources/images/shop/extension-change-label.jpg +0 -0
  77. common/src/resources/images/shop/extension-custom-venue-links.jpg +0 -0
  78. common/src/resources/images/shop/extension-events-happening-now.jpg +0 -0
  79. common/src/resources/images/shop/extension-link-to-webinar.jpg +0 -0
  80. common/src/resources/images/shop/extension-web-url-cta.jpg +0 -0
  81. common/src/resources/images/shop/filter-bar.jpg +0 -0
  82. common/src/resources/images/shop/image-widget-plus.jpg +0 -0
  83. common/src/resources/images/shop/pro.jpg +0 -0
  84. common/src/resources/images/shop/promoter.jpg +0 -0
  85. common/src/resources/images/shop/tickets-plus.jpg +0 -0
  86. common/src/resources/images/shop/tickets.jpg +0 -0
  87. common/src/resources/images/shop/virtual-events.jpg +0 -0
  88. common/src/resources/js/dropdowns.js +2 -5
  89. common/src/resources/js/dropdowns.min.js +509 -1
  90. common/vendor/autoload.php +1 -1
  91. common/vendor/autoload_52.php +1 -1
  92. common/vendor/composer/autoload_classmap.php +0 -1
  93. common/vendor/composer/autoload_real.php +4 -4
  94. common/vendor/composer/autoload_real_52.php +3 -3
  95. common/vendor/composer/autoload_static.php +5 -6
  96. lang/the-events-calendar-bg_BG.mo +0 -0
  97. lang/the-events-calendar-cs_CZ.mo +0 -0
  98. lang/the-events-calendar-de_CH.mo +0 -0
  99. lang/the-events-calendar-de_DE.mo +0 -0
  100. lang/the-events-calendar-en_AU.mo +0 -0
  101. lang/the-events-calendar-en_CA.mo +0 -0
  102. lang/the-events-calendar-en_GB.mo +0 -0
  103. lang/the-events-calendar-en_NZ.mo +0 -0
  104. lang/the-events-calendar-en_ZA.mo +0 -0
  105. lang/the-events-calendar-es_ES.mo +0 -0
  106. lang/the-events-calendar-es_MX.mo +0 -0
  107. lang/the-events-calendar-es_VE.mo +0 -0
  108. lang/the-events-calendar-eu.mo +0 -0
  109. lang/the-events-calendar-fi.mo +0 -0
  110. lang/the-events-calendar-fr_CA.mo +0 -0
  111. lang/the-events-calendar-fr_FR.mo +0 -0
  112. lang/the-events-calendar-gl_ES.mo +0 -0
  113. lang/the-events-calendar-hr.mo +0 -0
  114. lang/the-events-calendar-hu_HU.mo +0 -0
  115. lang/the-events-calendar-is_IS.mo +0 -0
  116. lang/the-events-calendar-it_IT.mo +0 -0
  117. lang/the-events-calendar-ja.mo +0 -0
  118. lang/the-events-calendar-lt_LT.mo +0 -0
  119. lang/the-events-calendar-nb_NO.mo +0 -0
  120. lang/the-events-calendar-nl_NL.mo +0 -0
  121. lang/the-events-calendar-nn_NO.mo +0 -0
  122. lang/the-events-calendar-pl_PL.mo +0 -0
  123. lang/the-events-calendar-pt_BR.mo +0 -0
  124. lang/the-events-calendar-pt_PT.mo +0 -0
  125. lang/the-events-calendar-ro_RO.mo +0 -0
  126. lang/the-events-calendar-ru_RU.mo +0 -0
  127. lang/the-events-calendar-sk_SK.mo +0 -0
  128. lang/the-events-calendar-sl_SI.mo +0 -0
  129. lang/the-events-calendar-sr_RS.mo +0 -0
  130. lang/the-events-calendar-sv_SE.mo +0 -0
  131. lang/the-events-calendar-tr_TR.mo +0 -0
  132. lang/the-events-calendar-uk.mo +0 -0
  133. lang/the-events-calendar.pot +51 -51
  134. readme.txt +142 -145
  135. src/Tribe/Cost_Utils.php +0 -7
  136. src/Tribe/Main.php +1 -6
  137. src/functions/template-tags/event.php +21 -31
  138. src/resources/js/aggregator-fields.js +1 -1
  139. src/resources/js/aggregator-fields.min.js +1225 -1
  140. the-events-calendar.php +2 -2
  141. vendor/autoload.php +1 -1
  142. vendor/composer/autoload_real.php +4 -4
  143. vendor/composer/autoload_static.php +4 -4
common/lang/tribe-common-cs_CZ.mo CHANGED
Binary file
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/lang/tribe-common-es_ES.mo CHANGED
Binary file
common/lang/tribe-common-fr_CA.mo CHANGED
Binary file
common/lang/tribe-common-fr_FR.mo CHANGED
Binary file
common/lang/tribe-common-hu_HU.mo CHANGED
Binary file
common/lang/tribe-common-it_IT.mo CHANGED
Binary file
common/lang/tribe-common-ja.mo CHANGED
Binary file
common/lang/tribe-common-nl_NL.mo CHANGED
Binary file
common/lang/tribe-common-pl_PL.mo ADDED
Binary file
common/lang/tribe-common-pt_BR.mo CHANGED
Binary file
common/lang/tribe-common-pt_PT.mo CHANGED
Binary file
common/lang/tribe-common-ru_RU.mo CHANGED
Binary file
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,13 @@
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.2\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2020-05-26 16:16:47+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-05-26 16:16\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -51,7 +51,7 @@ msgid ""
51
  "easily share your events."
52
  msgstr ""
53
 
54
- #: src/Tribe/Admin/Help_Page.php:95 src/Tribe/Plugins_API.php:76
55
  msgid "Event Tickets"
56
  msgstr ""
57
 
@@ -75,31 +75,31 @@ msgstr ""
75
  msgid " and "
76
  msgstr ""
77
 
78
- #: src/Tribe/Admin/Help_Page.php:214 src/Tribe/Plugins_API.php:59
79
  msgid "Events Calendar PRO"
80
  msgstr ""
81
 
82
- #: src/Tribe/Admin/Help_Page.php:223 src/Tribe/Plugins_API.php:179
83
  msgid "Eventbrite Tickets"
84
  msgstr ""
85
 
86
- #: src/Tribe/Admin/Help_Page.php:231 src/Tribe/Plugins_API.php:144
87
  msgid "Community Events"
88
  msgstr ""
89
 
90
- #: src/Tribe/Admin/Help_Page.php:239 src/Tribe/Plugins_API.php:42
91
  msgid "Event Aggregator"
92
  msgstr ""
93
 
94
- #: src/Tribe/Admin/Help_Page.php:247 src/Tribe/Plugins_API.php:127
95
  msgid "Filter Bar"
96
  msgstr ""
97
 
98
- #: src/Tribe/Admin/Help_Page.php:255 src/Tribe/Plugins_API.php:93
99
  msgid "Event Tickets Plus"
100
  msgstr ""
101
 
102
- #: src/Tribe/Admin/Help_Page.php:264 src/Tribe/Plugins_API.php:161
103
  msgid "Community Tickets"
104
  msgstr ""
105
 
@@ -140,7 +140,7 @@ msgstr ""
140
  msgid "Latest Version:"
141
  msgstr ""
142
 
143
- #: src/Tribe/Admin/Help_Page.php:842
144
  msgid "Requires:"
145
  msgstr ""
146
 
@@ -236,112 +236,6 @@ msgstr ""
236
  msgid "Event Add-Ons"
237
  msgstr ""
238
 
239
- #: src/Tribe/App_Shop.php:166
240
- msgid "Events Marketing Bundle"
241
- msgstr ""
242
-
243
- #: src/Tribe/App_Shop.php:169 src/Tribe/App_Shop.php:208
244
- #: src/Tribe/App_Shop.php:221
245
- msgid "Save over 20%"
246
- msgstr ""
247
-
248
- #: src/Tribe/App_Shop.php:170
249
- msgid "Ticket sales, attendee management, and email marketing for your events."
250
- msgstr ""
251
-
252
- #: src/Tribe/App_Shop.php:178
253
- msgid "Event Importer Bundle"
254
- msgstr ""
255
-
256
- #: src/Tribe/App_Shop.php:181
257
- msgid "Save over 25%"
258
- msgstr ""
259
-
260
- #: src/Tribe/App_Shop.php:182
261
- msgid ""
262
- "Fill your calendar with events from across the web, including Google "
263
- "Calendar, Meetup, and more."
264
- msgstr ""
265
-
266
- #: src/Tribe/App_Shop.php:205
267
- msgid "Community Manager Bundle"
268
- msgstr ""
269
-
270
- #: src/Tribe/App_Shop.php:209
271
- msgid ""
272
- "Handle event submissions with ticket sales and everything you need to build "
273
- "a robust community."
274
- msgstr ""
275
-
276
- #: src/Tribe/App_Shop.php:218
277
- msgid "Ultimate Bundle"
278
- msgstr ""
279
-
280
- #: src/Tribe/App_Shop.php:222
281
- msgid "All of our premium events management plugins at a deep discount."
282
- msgstr ""
283
-
284
- #: src/Tribe/App_Shop.php:249
285
- msgid "Website URL CTA"
286
- msgstr ""
287
-
288
- #: src/Tribe/App_Shop.php:252
289
- msgid ""
290
- "Create a strong call-to-action for attendees to \"Join Webinar\" instead of "
291
- "only sharing a website address."
292
- msgstr ""
293
-
294
- #: src/Tribe/App_Shop.php:255
295
- msgid "Link Directly to Webinar"
296
- msgstr ""
297
-
298
- #: src/Tribe/App_Shop.php:258
299
- msgid ""
300
- "When users click on the event title, they’ll be taken right to the source of "
301
- "your event, offering a direct route to join."
302
- msgstr ""
303
-
304
- #: src/Tribe/App_Shop.php:261
305
- msgid "Events Happening Now"
306
- msgstr ""
307
-
308
- #: src/Tribe/App_Shop.php:264
309
- msgid ""
310
- "Use this shortcode to display events that are currently in progress, like "
311
- "webinars and livestreams."
312
- msgstr ""
313
-
314
- #: src/Tribe/App_Shop.php:267
315
- msgid "Custom Venue Links"
316
- msgstr ""
317
-
318
- #: src/Tribe/App_Shop.php:270
319
- msgid ""
320
- "Turn the venue name for your event into a clickable URL — a great way to "
321
- "link directly to a venue’s website or a virtual meeting."
322
- msgstr ""
323
-
324
- #: src/Tribe/App_Shop.php:273
325
- msgid "Adjust Label"
326
- msgstr ""
327
-
328
- #: src/Tribe/App_Shop.php:276
329
- msgid ""
330
- "Change \"Events\" to \"Webinars,\" or \"Venues\" to \"Livestream,\" or "
331
- "\"Organizers\" to \"Hosts.\" Tailor your calendar for virtual events and "
332
- "meetings."
333
- msgstr ""
334
-
335
- #: src/Tribe/App_Shop.php:279
336
- msgid "Reach Attendees"
337
- msgstr ""
338
-
339
- #: src/Tribe/App_Shop.php:282
340
- msgid ""
341
- "From registration to attendance history, view every step of the event "
342
- "lifecycle with this HubSpot integration."
343
- msgstr ""
344
-
345
  #: src/Tribe/Cost_Utils.php:114
346
  msgid "Free"
347
  msgstr ""
@@ -584,7 +478,7 @@ msgstr ""
584
  msgid "Tutorial"
585
  msgstr ""
586
 
587
- #: src/Tribe/Extension.php:406
588
  msgid ""
589
  "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or "
590
  "older, and has likely disabled or misconfigured debug_backtrace(). You, or "
@@ -592,15 +486,6 @@ msgid ""
592
  "debug_backtrace() for Tribe Extensions to work."
593
  msgstr ""
594
 
595
- #: src/Tribe/Extension.php:421
596
- msgctxt "extension disallowed"
597
- msgid ""
598
- "This extension has been programmatically disallowed. The most common reason "
599
- "is due to another Modern Tribe plugin having absorbed or replaced this "
600
- "extension's functionality. This extension plugin has been deactivated, and "
601
- "you should likely delete it."
602
- msgstr ""
603
-
604
  #: src/Tribe/Field.php:233
605
  msgid "Invalid field type specified"
606
  msgstr ""
@@ -2078,246 +1963,113 @@ msgid ""
2078
  msgstr ""
2079
 
2080
  #: src/Tribe/Plugins_API.php:28
2081
- msgid "Our flagship free calendar"
2082
- msgstr ""
2083
-
2084
- #: src/Tribe/Plugins_API.php:30 src/Tribe/Plugins_API.php:48
2085
- msgid "Customizable"
2086
- msgstr ""
2087
-
2088
- #: src/Tribe/Plugins_API.php:31
2089
- msgid "Import & export events"
2090
- msgstr ""
2091
-
2092
- #: src/Tribe/Plugins_API.php:32
2093
- msgid "Timezone support"
2094
- msgstr ""
2095
-
2096
- #: src/Tribe/Plugins_API.php:33
2097
- msgid "Multiple views"
2098
- msgstr ""
2099
-
2100
- #: src/Tribe/Plugins_API.php:45
2101
- msgid "Automated imports for your calendar"
2102
- msgstr ""
2103
-
2104
- #: src/Tribe/Plugins_API.php:47
2105
- msgid "Schedule automated imports"
2106
- msgstr ""
2107
-
2108
- #: src/Tribe/Plugins_API.php:49
2109
- msgid "Works with Google Calendar, Meetup, and more"
2110
- msgstr ""
2111
-
2112
- #: src/Tribe/Plugins_API.php:50
2113
- msgid "Refine by date, location, or keyword"
2114
- msgstr ""
2115
-
2116
- #: src/Tribe/Plugins_API.php:62
2117
- msgid "Power up your calendar with Pro"
2118
- msgstr ""
2119
-
2120
- #: src/Tribe/Plugins_API.php:64
2121
- msgid "Premium support"
2122
- msgstr ""
2123
-
2124
- #: src/Tribe/Plugins_API.php:65
2125
- msgid "Recurring events"
2126
- msgstr ""
2127
-
2128
- #: src/Tribe/Plugins_API.php:66
2129
- msgid "Additional views"
2130
- msgstr ""
2131
-
2132
- #: src/Tribe/Plugins_API.php:67
2133
- msgid "Shortcodes"
2134
- msgstr ""
2135
-
2136
- #: src/Tribe/Plugins_API.php:79
2137
- msgid "Manage ticketing and RSVPs"
2138
- msgstr ""
2139
-
2140
- #: src/Tribe/Plugins_API.php:81
2141
- msgid "Add tickets and RSVP to any post"
2142
- msgstr ""
2143
-
2144
- #: src/Tribe/Plugins_API.php:82
2145
- msgid "Paypal integration"
2146
- msgstr ""
2147
-
2148
- #: src/Tribe/Plugins_API.php:83
2149
- msgid "Attendee reports"
2150
- msgstr ""
2151
-
2152
- #: src/Tribe/Plugins_API.php:84
2153
- msgid "Customizable ticket template"
2154
- msgstr ""
2155
-
2156
- #: src/Tribe/Plugins_API.php:96
2157
- msgid "Monetize your events"
2158
  msgstr ""
2159
 
2160
- #: src/Tribe/Plugins_API.php:98
2161
- msgid "Custom registration fields"
 
 
 
 
 
 
2162
  msgstr ""
2163
 
2164
- #: src/Tribe/Plugins_API.php:99
2165
- msgid "WooCommerce compatibility"
 
 
 
 
2166
  msgstr ""
2167
 
2168
- #: src/Tribe/Plugins_API.php:100
2169
- msgid "Ticket scanning with mobile app"
 
 
 
 
2170
  msgstr ""
2171
 
2172
- #: src/Tribe/Plugins_API.php:101
2173
- msgid "Custom attendee registration fields"
 
 
 
 
 
 
2174
  msgstr ""
2175
 
2176
- #: src/Tribe/Plugins_API.php:110 src/Tribe/Promoter/PUE.php:28
2177
  #: src/views/promoter/auth.php:30 src/views/promoter/auth.php:74
2178
  msgid "Promoter"
2179
  msgstr ""
2180
 
2181
- #: src/Tribe/Plugins_API.php:113
2182
- msgid "An email marketing solution for events and the people running them"
2183
- msgstr ""
2184
-
2185
- #: src/Tribe/Plugins_API.php:115
2186
- msgid "Automate email touchpoints"
2187
- msgstr ""
2188
-
2189
- #: src/Tribe/Plugins_API.php:116
2190
- msgid "Customize email templates"
2191
- msgstr ""
2192
-
2193
- #: src/Tribe/Plugins_API.php:117
2194
- msgid "Streamline your email process"
2195
- msgstr ""
2196
-
2197
- #: src/Tribe/Plugins_API.php:118
2198
- msgid "Segment your attendee lists"
2199
- msgstr ""
2200
-
2201
- #: src/Tribe/Plugins_API.php:130
2202
- msgid "Help users find exactly the right event"
2203
- msgstr ""
2204
-
2205
- #: src/Tribe/Plugins_API.php:132
2206
- msgid "Configurable set of filters"
2207
- msgstr ""
2208
-
2209
- #: src/Tribe/Plugins_API.php:133
2210
- msgid "Horizontal or vertical"
2211
- msgstr ""
2212
-
2213
- #: src/Tribe/Plugins_API.php:134
2214
- msgid "Filter category, price, and more"
2215
- msgstr ""
2216
-
2217
- #: src/Tribe/Plugins_API.php:135
2218
- msgid "Filter distance (for Events Calendar Pro)"
2219
- msgstr ""
2220
-
2221
- #: src/Tribe/Plugins_API.php:147
2222
- msgid "Users submit events to your calendar"
2223
- msgstr ""
2224
-
2225
- #: src/Tribe/Plugins_API.php:149
2226
- msgid "Publishing Control"
2227
- msgstr ""
2228
-
2229
- #: src/Tribe/Plugins_API.php:150
2230
- msgid "Event Submission Form"
2231
- msgstr ""
2232
-
2233
- #: src/Tribe/Plugins_API.php:151
2234
- msgid "Registered User Settings"
2235
- msgstr ""
2236
-
2237
- #: src/Tribe/Plugins_API.php:152
2238
- msgid "Email notifications"
2239
- msgstr ""
2240
-
2241
- #: src/Tribe/Plugins_API.php:164
2242
- msgid "Run your own events marketplace"
2243
- msgstr ""
2244
-
2245
- #: src/Tribe/Plugins_API.php:166
2246
- msgid "Users submit events and sell tickets"
2247
  msgstr ""
2248
 
2249
- #: src/Tribe/Plugins_API.php:167
2250
- msgid "Split commission with users"
 
 
 
 
 
 
2251
  msgstr ""
2252
 
2253
- #: src/Tribe/Plugins_API.php:168
2254
- msgid "No admin access required"
 
 
 
 
 
 
2255
  msgstr ""
2256
 
2257
- #: src/Tribe/Plugins_API.php:169
2258
- msgid "Sales reporting"
 
 
 
 
2259
  msgstr ""
2260
 
2261
- #: src/Tribe/Plugins_API.php:171
2262
  msgctxt "Names of required plugins for Community Tickets"
2263
  msgid "Event Tickets Plus and Community Events"
2264
  msgstr ""
2265
 
2266
- #: src/Tribe/Plugins_API.php:182
2267
- msgid "Unite the power of TEC with the ticketing of Eventbrite"
2268
- msgstr ""
2269
-
2270
- #: src/Tribe/Plugins_API.php:184
2271
- msgid "Manage tickets from WordPress"
2272
- msgstr ""
2273
-
2274
- #: src/Tribe/Plugins_API.php:185
2275
- msgid "Ticket availability automatically updates"
2276
- msgstr ""
2277
-
2278
- #: src/Tribe/Plugins_API.php:186
2279
- msgid "Integrated with your events on Eventbrite"
2280
- msgstr ""
2281
-
2282
- #: src/Tribe/Plugins_API.php:187
2283
- msgid "Automatically import your events"
2284
  msgstr ""
2285
 
2286
- #: src/Tribe/Plugins_API.php:196
2287
  msgid "Image Widget Plus"
2288
  msgstr ""
2289
 
2290
- #: src/Tribe/Plugins_API.php:199
2291
- msgid "Beautiful display options for your favorite photos."
2292
- msgstr ""
2293
-
2294
- #: src/Tribe/Plugins_API.php:201
2295
- msgid "Multi-Image Support"
2296
- msgstr ""
2297
-
2298
- #: src/Tribe/Plugins_API.php:202
2299
- msgid "Lightbox"
2300
- msgstr ""
2301
-
2302
- #: src/Tribe/Plugins_API.php:203
2303
- msgid "Slideshow"
2304
- msgstr ""
2305
-
2306
- #: src/Tribe/Plugins_API.php:204
2307
- msgid "Random Images"
2308
- msgstr ""
2309
-
2310
- #: src/Tribe/Plugins_API.php:213
2311
- msgid "Virtual Events"
2312
- msgstr ""
2313
-
2314
- #: src/Tribe/Plugins_API.php:216
2315
- msgid "[ADD DESCRIPTION]"
2316
- msgstr ""
2317
-
2318
- #: src/Tribe/Plugins_API.php:218 src/Tribe/Plugins_API.php:219
2319
- #: src/Tribe/Plugins_API.php:220 src/Tribe/Plugins_API.php:221
2320
- msgid "Feature"
2321
  msgstr ""
2322
 
2323
  #: src/Tribe/Process/Queue.php:1024
@@ -2591,91 +2343,24 @@ msgstr ""
2591
  msgid "Select a Country:"
2592
  msgstr ""
2593
 
2594
- #: src/admin-views/app-shop.php:22 src/admin-views/app-shop.php:48
2595
- #: src/admin-views/app-shop.php:100 src/admin-views/app-shop.php:122
2596
- msgid "TEC Logo"
2597
  msgstr ""
2598
 
2599
- #: src/admin-views/app-shop.php:23
2600
- msgid "Add-Ons"
2601
  msgstr ""
2602
 
2603
- #: src/admin-views/app-shop.php:27
2604
- msgid "All Solutions"
2605
- msgstr ""
2606
-
2607
- #: src/admin-views/app-shop.php:28
2608
- msgid "Save with Bundles"
2609
  msgstr ""
2610
 
2611
  #: src/admin-views/app-shop.php:29
2612
- msgid "Extensions"
2613
- msgstr ""
2614
-
2615
- #: src/admin-views/app-shop.php:39
2616
- msgid "One calendar. Countless ways to make it your own."
2617
- msgstr ""
2618
-
2619
- #: src/admin-views/app-shop.php:40
2620
- msgid ""
2621
- "Calendars, ticketing, and powerful WordPress tools to manage your events "
2622
- "from start to finish."
2623
- msgstr ""
2624
-
2625
- #: src/admin-views/app-shop.php:42
2626
- msgid "Already Installed"
2627
- msgstr ""
2628
-
2629
- #: src/admin-views/app-shop.php:52
2630
- msgid "Active"
2631
- msgstr ""
2632
-
2633
- #: src/admin-views/app-shop.php:54 src/admin-views/app-shop.php:153
2634
- msgid "FREE"
2635
- msgstr ""
2636
-
2637
- #: src/admin-views/app-shop.php:79
2638
- msgid "Manage"
2639
- msgstr ""
2640
-
2641
- #: src/admin-views/app-shop.php:81
2642
- msgid "Learn More"
2643
- msgstr ""
2644
-
2645
- #: src/admin-views/app-shop.php:94
2646
- msgid "The plugins you need at one discounted price"
2647
- msgstr ""
2648
-
2649
- #: src/admin-views/app-shop.php:95
2650
- msgid ""
2651
- "We've packaged our most popular plugins into bundles jam-packed with value."
2652
- msgstr ""
2653
-
2654
- #: src/admin-views/app-shop.php:107 src/admin-views/app-shop.php:134
2655
- msgid "Save With A Bundle"
2656
- msgstr ""
2657
-
2658
- #: src/admin-views/app-shop.php:113
2659
- msgid "Includes"
2660
- msgstr ""
2661
-
2662
- #: src/admin-views/app-shop.php:147
2663
- msgid "Free extensions to power up your plugins"
2664
- msgstr ""
2665
-
2666
- #: src/admin-views/app-shop.php:148
2667
- msgid ""
2668
- "Extensions are quick solutions our team came up with to solve specific "
2669
- "issues you may need. (Just a note - extensions are not covered by our "
2670
- "support team.)"
2671
- msgstr ""
2672
-
2673
- #: src/admin-views/app-shop.php:162
2674
- msgid "Download"
2675
  msgstr ""
2676
 
2677
- #: src/admin-views/app-shop.php:166
2678
- msgid "Browse Extensions"
2679
  msgstr ""
2680
 
2681
  #: src/admin-views/event-log.php:21
@@ -2957,7 +2642,7 @@ msgstr ""
2957
  msgid "Hide the following settings tabs on every site:"
2958
  msgstr ""
2959
 
2960
- #: src/functions/template-tags/html.php:99
2961
  msgctxt "The associated field is required."
2962
  msgid "(required)"
2963
  msgstr ""
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.1\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2020-05-08 02:41:17+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-05-08 02:41\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
51
  "easily share your events."
52
  msgstr ""
53
 
54
+ #: src/Tribe/Admin/Help_Page.php:95 src/Tribe/Plugins_API.php:57
55
  msgid "Event Tickets"
56
  msgstr ""
57
 
75
  msgid " and "
76
  msgstr ""
77
 
78
+ #: src/Tribe/Admin/Help_Page.php:214 src/Tribe/Plugins_API.php:43
79
  msgid "Events Calendar PRO"
80
  msgstr ""
81
 
82
+ #: src/Tribe/Admin/Help_Page.php:223 src/Tribe/Plugins_API.php:121
83
  msgid "Eventbrite Tickets"
84
  msgstr ""
85
 
86
+ #: src/Tribe/Admin/Help_Page.php:231 src/Tribe/Plugins_API.php:100
87
  msgid "Community Events"
88
  msgstr ""
89
 
90
+ #: src/Tribe/Admin/Help_Page.php:239 src/Tribe/Plugins_API.php:34
91
  msgid "Event Aggregator"
92
  msgstr ""
93
 
94
+ #: src/Tribe/Admin/Help_Page.php:247 src/Tribe/Plugins_API.php:90
95
  msgid "Filter Bar"
96
  msgstr ""
97
 
98
+ #: src/Tribe/Admin/Help_Page.php:255 src/Tribe/Plugins_API.php:66
99
  msgid "Event Tickets Plus"
100
  msgstr ""
101
 
102
+ #: src/Tribe/Admin/Help_Page.php:264 src/Tribe/Plugins_API.php:110
103
  msgid "Community Tickets"
104
  msgstr ""
105
 
140
  msgid "Latest Version:"
141
  msgstr ""
142
 
143
+ #: src/Tribe/Admin/Help_Page.php:842 src/admin-views/app-shop.php:77
144
  msgid "Requires:"
145
  msgstr ""
146
 
236
  msgid "Event Add-Ons"
237
  msgstr ""
238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
239
  #: src/Tribe/Cost_Utils.php:114
240
  msgid "Free"
241
  msgstr ""
478
  msgid "Tutorial"
479
  msgstr ""
480
 
481
+ #: src/Tribe/Extension.php:377
482
  msgid ""
483
  "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or "
484
  "older, and has likely disabled or misconfigured debug_backtrace(). You, or "
486
  "debug_backtrace() for Tribe Extensions to work."
487
  msgstr ""
488
 
 
 
 
 
 
 
 
 
 
489
  #: src/Tribe/Field.php:233
490
  msgid "Invalid field type specified"
491
  msgstr ""
1963
  msgstr ""
1964
 
1965
  #: src/Tribe/Plugins_API.php:28
1966
+ msgid ""
1967
+ "Create an events calendar and manage it with ease. The Events Calendar "
1968
+ "plugin provides professional-level quality and features backed by a team you "
1969
+ "can trust."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1970
  msgstr ""
1971
 
1972
+ #: src/Tribe/Plugins_API.php:37
1973
+ msgid ""
1974
+ "Event Aggregator adds massive import functionality to your calendar. Before "
1975
+ "you know it, you’ll be importing events from Meetup, Eventbrite, Google "
1976
+ "Calendar, iCalendar, and other URLs with ease. Schedule imports to run "
1977
+ "automatically behind-the-scenes or run them manually when you’re ready. Go "
1978
+ "ahead and import to your heart’s content—Event Aggregator hooks you up with "
1979
+ "a central dashboard in the admin to make managing your imports a breeze."
1980
  msgstr ""
1981
 
1982
+ #: src/Tribe/Plugins_API.php:48
1983
+ msgid ""
1984
+ "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin "
1985
+ "%1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features "
1986
+ "including recurring events, custom event attributes, saved venues and "
1987
+ "organizers, venue pages, advanced event admin and lots more."
1988
  msgstr ""
1989
 
1990
+ #: src/Tribe/Plugins_API.php:60
1991
+ msgid ""
1992
+ "Event Tickets provides a simple way for visitors to RSVP to your events. As "
1993
+ "a standalone plugin, it enables you to add RSVP functionality to posts or "
1994
+ "pages. When paired with The Events Calendar, you can add that same RSVP "
1995
+ "functionality directly to your event listings."
1996
  msgstr ""
1997
 
1998
+ #: src/Tribe/Plugins_API.php:71
1999
+ msgid ""
2000
+ "Event Tickets Plus allows you to sell tickets to your events using "
2001
+ "WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. "
2002
+ "Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and "
2003
+ "sell tickets from your event listings. Create custom registration forms, "
2004
+ "manage attendees, use custom capacity options, and more. Guest check in is "
2005
+ "easy with QR codes and our custom scanning app."
2006
  msgstr ""
2007
 
2008
+ #: src/Tribe/Plugins_API.php:80 src/Tribe/Promoter/PUE.php:28
2009
  #: src/views/promoter/auth.php:30 src/views/promoter/auth.php:74
2010
  msgid "Promoter"
2011
  msgstr ""
2012
 
2013
+ #: src/Tribe/Plugins_API.php:84
2014
+ msgid ""
2015
+ "With Promoter, you’ll connect with your community via email through every "
2016
+ "stage of your event, bolster event attendance, and manage notifications more "
2017
+ "efficiently than ever. Increase event attendance and engagement by "
2018
+ "automatically sending reminders for on-sale dates, event times and more."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2019
  msgstr ""
2020
 
2021
+ #: src/Tribe/Plugins_API.php:94
2022
+ msgid ""
2023
+ "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with "
2024
+ "prime choice ways to spend time. You have more events than Jabba the Hutt "
2025
+ "has rolls. Too bad visitors are hiring a personal assistant to go through "
2026
+ "all the choices. Ever wish you could just filter the calendar to only show "
2027
+ "events in walking distance, on a weekend, that are free? BOOM. Now you can. "
2028
+ "Introducing… the Filter Bar."
2029
  msgstr ""
2030
 
2031
+ #: src/Tribe/Plugins_API.php:104
2032
+ msgid ""
2033
+ "Accept user-submitted events on your site! With Community Events, you can "
2034
+ "accept public submissions or require account sign-on. Settings give you the "
2035
+ "options to save as a draft or publish automatically, enable categories and "
2036
+ "tags, and choose whether users can edit/manage their own events or simply "
2037
+ "submit. Best of all - setup is easy! Just activate, configure the options, "
2038
+ "and off you go."
2039
  msgstr ""
2040
 
2041
+ #: src/Tribe/Plugins_API.php:114
2042
+ msgid ""
2043
+ "Enable Community Events organizers to offer tickets to their events. You can "
2044
+ "set flexible payment and fee options. They can even check-in attendees to "
2045
+ "their events! All of this managed from the front-end of your site without "
2046
+ "ever needing to grant access to your admin"
2047
  msgstr ""
2048
 
2049
+ #: src/Tribe/Plugins_API.php:115
2050
  msgctxt "Names of required plugins for Community Tickets"
2051
  msgid "Event Tickets Plus and Community Events"
2052
  msgstr ""
2053
 
2054
+ #: src/Tribe/Plugins_API.php:126
2055
+ msgid ""
2056
+ "The Eventbrite Tickets add-on allows you to create & sell tickets through "
2057
+ "The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re "
2058
+ "creating your ticket on the WordPress dashboard or importing the details of "
2059
+ "an already-existing event from %1$sEventbrite.com%2$s, this add-on brings "
2060
+ "the power of the Eventbrite API to your calendar."
 
 
 
 
 
 
 
 
 
 
 
2061
  msgstr ""
2062
 
2063
+ #: src/Tribe/Plugins_API.php:135
2064
  msgid "Image Widget Plus"
2065
  msgstr ""
2066
 
2067
+ #: src/Tribe/Plugins_API.php:139
2068
+ msgid ""
2069
+ "Take your image widgets to the next level with Image Widget Plus! We've "
2070
+ "taken the simple functionality of our basic Image Widget and amped it up "
2071
+ "with several popular feature requests - multiple image support, slideshow, "
2072
+ "lightbox, and random image - all backed by a full year of premium support."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2073
  msgstr ""
2074
 
2075
  #: src/Tribe/Process/Queue.php:1024
2343
  msgid "Select a Country:"
2344
  msgstr ""
2345
 
2346
+ #: src/admin-views/app-shop.php:4
2347
+ msgid "Events Add-Ons"
 
2348
  msgstr ""
2349
 
2350
+ #: src/admin-views/app-shop.php:5
2351
+ msgid "Browse All Add-Ons"
2352
  msgstr ""
2353
 
2354
+ #: src/admin-views/app-shop.php:26
2355
+ msgid "Buy This Add-On"
 
 
 
 
2356
  msgstr ""
2357
 
2358
  #: src/admin-views/app-shop.php:29
2359
+ msgid "Installed Add-Ons"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2360
  msgstr ""
2361
 
2362
+ #: src/admin-views/app-shop.php:31
2363
+ msgid "Installed"
2364
  msgstr ""
2365
 
2366
  #: src/admin-views/event-log.php:21
2642
  msgid "Hide the following settings tabs on every site:"
2643
  msgstr ""
2644
 
2645
+ #: src/functions/template-tags/html.php:70
2646
  msgctxt "The associated field is required."
2647
  msgid "(required)"
2648
  msgstr ""
common/src/Tribe/App_Shop.php CHANGED
@@ -123,169 +123,32 @@ if ( ! class_exists( 'Tribe__App_Shop' ) ) {
123
  public function do_menu_page() {
124
  $main = Tribe__Main::instance();
125
  $products = $this->get_all_products();
126
- $bundles = $this->get_bundles();
127
- $extensions = $this->get_extensions();
128
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/app-shop.php';
129
  }
130
 
131
  /**
132
- * Gets all products from the API
133
  *
134
  * @return array|WP_Error
135
  */
136
  private function get_all_products() {
137
  $all_products = tribe( 'plugins.api' )->get_products();
138
 
139
- $products = [
140
- 'the-events-calendar' => (object) $all_products['the-events-calendar'],
141
- 'events-calendar-pro' => (object) $all_products['events-calendar-pro'],
142
- /// this is coming soon, but not yet finalized
143
- // 'events-virtual' => (object) $all_products['events-virtual'],
144
- 'event-aggregator' => (object) $all_products['event-aggregator'],
145
- 'event-tickets' => (object) $all_products['event-tickets'],
146
- 'event-tickets-plus' => (object) $all_products['event-tickets-plus'],
147
- 'promoter' => (object) $all_products['promoter'],
148
- 'tribe-filterbar' => (object) $all_products['tribe-filterbar'],
149
- 'events-community' => (object) $all_products['events-community'],
150
- 'events-community-tickets' => (object) $all_products['events-community-tickets'],
151
- 'tribe-eventbrite' => (object) $all_products['tribe-eventbrite'],
152
- 'image-widget-plus' => (object) $all_products['image-widget-plus'],
153
- ];
154
 
155
  return $products;
156
  }
157
 
158
- /**
159
- * Gets product bundles
160
- *
161
- * @return array|WP_Error
162
- */
163
- private function get_bundles() {
164
- $bundles = [
165
- (object) [
166
- 'title' => __( 'Events Marketing Bundle', 'tribe-common' ),
167
- 'logo' => 'images/logo/bundle-event-marketing.svg',
168
- 'link' => 'https://m.tri.be/1aj3',
169
- 'discount' => __( 'Save over 20%', 'tribe-common' ),
170
- 'description' => __( 'Ticket sales, attendee management, and email marketing for your events.', 'tribe-common' ),
171
- 'includes' => [
172
- 'events-calendar-pro',
173
- 'event-tickets-plus',
174
- 'promoter',
175
- ],
176
- ],
177
- (object) [
178
- 'title' => __( 'Event Importer Bundle', 'tribe-common' ),
179
- 'logo' => 'images/logo/bundle-event-importer.svg',
180
- 'link' => 'https://m.tri.be/1aj2',
181
- 'discount' => __( 'Save over 25%', 'tribe-common' ),
182
- 'description' => __( 'Fill your calendar with events from across the web, including Google Calendar, Meetup, and more.', 'tribe-common' ),
183
- 'includes' => [
184
- 'events-calendar-pro',
185
- 'tribe-filterbar',
186
- 'event-aggregator'
187
- ],
188
- ],
189
- /* this is coming soon, but not yet finalized
190
- (object) [
191
- 'title' => __( 'Virtual Event Marketing Bundle', 'tribe-common' ),
192
- 'logo' => 'images/logo/bundle-virtual-events.svg',
193
- 'link' => 'https://m.tri.be/somewhere', // code review: fix this
194
- 'discount' => __( 'Save over 20%', 'tribe-common' ), // code review: fix this
195
- 'description' => __( '[description]', 'tribe-common' ), // code review: fix this
196
- 'includes' => [
197
- 'events-calendar-pro',
198
- 'event-tickets-plus',
199
- 'events-virtual',
200
- 'promoter',
201
- ],
202
- ],
203
- */
204
- (object) [
205
- 'title' => __( 'Community Manager Bundle', 'tribe-common' ),
206
- 'logo' => 'images/logo/bundle-community-manager.svg',
207
- 'link' => 'https://m.tri.be/1aj4',
208
- 'discount' => __( 'Save over 20%', 'tribe-common' ), /* code review: fix this */
209
- 'description' => __( 'Handle event submissions with ticket sales and everything you need to build a robust community.', 'tribe-common' ),
210
- 'includes' => [
211
- 'event-tickets-plus',
212
- 'events-community',
213
- 'events-community-tickets',
214
- 'tribe-filterbar',
215
- ],
216
- ],
217
- (object) [
218
- 'title' => __( 'Ultimate Bundle', 'tribe-common' ),
219
- 'logo' => 'images/logo/bundle-ultimate.svg',
220
- 'link' => 'https://m.tri.be/1aj5',
221
- 'discount' => __( 'Save over 20%', 'tribe-common' ), /* code review: fix this */
222
- 'description' => __( 'All of our premium events management plugins at a deep discount.', 'tribe-common' ),
223
- 'includes' => [
224
- 'events-calendar-pro',
225
- 'event-tickets-plus',
226
- //'events-virtual', // not yet added to the bundle
227
- 'events-community',
228
- 'events-community-tickets',
229
- 'tribe-filterbar',
230
- 'event-aggregator',
231
- 'tribe-eventbrite',
232
- //'promoter', // not yet added to the bundle
233
- ],
234
- ],
235
-
236
- ];
237
-
238
- return $bundles;
239
- }
240
-
241
- /**
242
- * Gets product extensions
243
- *
244
- * @return array|WP_Error
245
- */
246
- private function get_extensions() {
247
- $extensions = [
248
- (object) [
249
- 'title' => __( 'Website URL CTA', 'tribe-common' ),
250
- 'link' => 'https://m.tri.be/1aj6',
251
- 'image' => 'images/shop/extension-web-url-cta.jpg',
252
- 'description' => __( 'Create a strong call-to-action for attendees to "Join Webinar" instead of only sharing a website address.', 'tribe-common' ),
253
- ],
254
- (object) [
255
- 'title' => __( 'Link Directly to Webinar', 'tribe-common' ),
256
- 'link' => 'https://m.tri.be/1aj7',
257
- 'image' => 'images/shop/extension-link-to-webinar.jpg',
258
- 'description' => __( 'When users click on the event title, they’ll be taken right to the source of your event, offering a direct route to join.', 'tribe-common' ),
259
- ],
260
- (object) [
261
- 'title' => __( 'Events Happening Now', 'tribe-common' ),
262
- 'link' => 'https://m.tri.be/1aj8',
263
- 'image' => 'images/shop/extension-events-happening-now.jpg',
264
- 'description' => __( 'Use this shortcode to display events that are currently in progress, like webinars and livestreams.', 'tribe-common' ),
265
- ],
266
- (object) [
267
- 'title' => __( 'Custom Venue Links', 'tribe-common' ),
268
- 'link' => 'https://m.tri.be/1aj9',
269
- 'image' => 'images/shop/extension-custom-venue-links.jpg',
270
- 'description' => __( 'Turn the venue name for your event into a clickable URL — a great way to link directly to a venue’s website or a virtual meeting.', 'tribe-common' ),
271
- ],
272
- (object) [
273
- 'title' => __( 'Adjust Label', 'tribe-common' ),
274
- 'link' => 'https://m.tri.be/1aja',
275
- 'image' => 'images/shop/extension-change-label.jpg',
276
- 'description' => __( 'Change "Events" to "Webinars," or "Venues" to "Livestream," or "Organizers" to "Hosts." Tailor your calendar for virtual events and meetings.', 'tribe-common' ),
277
- ],
278
- (object) [
279
- 'title' => __( 'Reach Attendees', 'tribe-common' ),
280
- 'link' => 'https://m.tri.be/1ajc',
281
- 'image' => 'images/shop/extension-advanced-options.jpg',
282
- 'description' => __( 'From registration to attendance history, view every step of the event lifecycle with this HubSpot integration.', 'tribe-common' ),
283
- ],
284
- ];
285
-
286
- return $extensions;
287
- }
288
-
289
  /**
290
  * Static Singleton Factory Method
291
  *
123
  public function do_menu_page() {
124
  $main = Tribe__Main::instance();
125
  $products = $this->get_all_products();
 
 
126
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/app-shop.php';
127
  }
128
 
129
  /**
130
+ * Get's all products from the API
131
  *
132
  * @return array|WP_Error
133
  */
134
  private function get_all_products() {
135
  $all_products = tribe( 'plugins.api' )->get_products();
136
 
137
+ $products = array(
138
+ (object) $all_products['event-aggregator'],
139
+ (object) $all_products['events-calendar-pro'],
140
+ (object) $all_products['event-tickets-plus'],
141
+ (object) $all_products['promoter'],
142
+ (object) $all_products['tribe-filterbar'],
143
+ (object) $all_products['events-community'],
144
+ (object) $all_products['events-community-tickets'],
145
+ (object) $all_products['tribe-eventbrite'],
146
+ (object) $all_products['image-widget-plus'],
147
+ );
 
 
 
 
148
 
149
  return $products;
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  /**
153
  * Static Singleton Factory Method
154
  *
common/src/Tribe/Context/locations.php CHANGED
@@ -136,20 +136,4 @@ return [
136
  Tribe__Context::REQUEST_VAR => [ 'post_tag', 'tag' ],
137
  ],
138
  ],
139
- 'bulk_edit' => [
140
- 'read' => [
141
- Tribe__Context::REQUEST_VAR => [ 'bulk_edit' ],
142
- ],
143
- ],
144
- 'inline_save' => [
145
- 'read' => [
146
- Tribe__Context::FUNC => [
147
- static function () {
148
- return tribe_get_request_var( 'action', false ) === 'inline-save'
149
- ? true
150
- : Tribe__Context::NOT_FOUND;
151
- }
152
- ],
153
- ],
154
- ],
155
  ];
136
  Tribe__Context::REQUEST_VAR => [ 'post_tag', 'tag' ],
137
  ],
138
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  ];
common/src/Tribe/Credits.php CHANGED
@@ -55,7 +55,7 @@ class Tribe__Credits {
55
  esc_html__( 'Rate %1$sThe Events Calendar%2$s %3$s', 'tribe-common' ),
56
  '<strong>',
57
  '</strong>',
58
- '<a href="' . $review_url . '" target="_blank" class="tribe-rating">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
59
  );
60
  } else {
61
  $review_url = 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5';
@@ -64,7 +64,7 @@ class Tribe__Credits {
64
  esc_html__( 'Rate %1$sEvent Tickets%2$s %3$s', 'tribe-common' ),
65
  '<strong>',
66
  '</strong>',
67
- '<a href="' . $review_url . '" target="_blank" class="tribe-rating">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
68
  );
69
  }
70
  }
55
  esc_html__( 'Rate %1$sThe Events Calendar%2$s %3$s', 'tribe-common' ),
56
  '<strong>',
57
  '</strong>',
58
+ '<a href="' . $review_url . '" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
59
  );
60
  } else {
61
  $review_url = 'https://wordpress.org/support/plugin/event-tickets/reviews/?filter=5';
64
  esc_html__( 'Rate %1$sEvent Tickets%2$s %3$s', 'tribe-common' ),
65
  '<strong>',
66
  '</strong>',
67
+ '<a href="' . $review_url . '" target="_blank">&#9733;&#9733;&#9733;&#9733;&#9733;</a>'
68
  );
69
  }
70
  }
common/src/Tribe/Extension.php CHANGED
@@ -160,54 +160,25 @@ abstract class Tribe__Extension {
160
  * Checks if the extension has permission to run, if so runs init() in child class
161
  */
162
  final public function register() {
163
- $extension_file = $this->get_plugin_file();
164
- $extension_class_name = $this->get( 'class' );
165
- $extension_version = $this->get_version();
166
- $plugins_required = $this->get( 'requires', [] );
167
-
168
  tribe_register_plugin(
169
- $extension_file,
170
- $extension_class_name,
171
- $extension_version,
172
- $plugins_required
173
  );
174
 
175
  $dependency = Tribe__Dependency::instance();
176
 
177
  // check requisite plugins are active for this extension
178
- $is_plugin_authorized = $dependency->has_requisite_plugins( $plugins_required );
179
-
180
- /**
181
- * Explicitly disallow an extension, such as a core plugin having absorbed/replaced its functionality.
182
- *
183
- * @since 4.12.2
184
- *
185
- * @param bool $is_disallowed    False by default.
186
- * @param string $extension_class_name This extension's class name string
187
- * (without initial forward slash for namespaced classes).
188
- * @param Tribe__Extension $this_instance This extension class' instance.
189
- */
190
- $is_disallowed = (bool) apply_filters( 'tribe_extension_is_disallowed', false, $extension_class_name, $this );
191
-
192
- if ( $is_disallowed ) {
193
- if (
194
- is_admin()
195
- && current_user_can( 'activate_plugins' )
196
- ) {
197
- tribe_notice( 'tribe_extension_is_disallowed', [ $this, 'notice_disallowed' ], [ 'type' => 'error' ] );
198
- }
199
-
200
- deactivate_plugins( $extension_file, true );
201
-
202
- return;
203
- }
204
 
205
  if ( $is_plugin_authorized ) {
206
  $this->init();
207
 
208
- // Add extension as active to dependency checker.
209
- $dependency->add_active_plugin( $extension_class_name, $extension_version, $extension_file );
210
  }
 
211
  }
212
 
213
  /**
@@ -258,7 +229,7 @@ abstract class Tribe__Extension {
258
  }
259
 
260
  /**
261
- * Gets the action/hook for the extensions' init().
262
  *
263
  * @return string Action/hook
264
  */
@@ -407,25 +378,6 @@ abstract class Tribe__Extension {
407
  );
408
  }
409
 
410
- /**
411
- * Gets the error message about being explicitly disallowed.
412
- *
413
- * @since 4.12.2
414
- *
415
- * @return string Notice text.
416
- */
417
- public function notice_disallowed() {
418
- return sprintf(
419
- '<p><strong>%1$s:</strong> %2$s</p>',
420
- $this->get_name(),
421
- esc_html_x(
422
- "This extension has been programmatically disallowed. The most common reason is due to another Modern Tribe plugin having absorbed or replaced this extension's functionality. This extension plugin has been deactivated, and you should likely delete it.",
423
- 'extension disallowed',
424
- 'tribe-common'
425
- )
426
- );
427
- }
428
-
429
  /**
430
  * Prevent cloning the singleton with 'clone' operator
431
  *
160
  * Checks if the extension has permission to run, if so runs init() in child class
161
  */
162
  final public function register() {
 
 
 
 
 
163
  tribe_register_plugin(
164
+ $this->get_plugin_file(),
165
+ $this->get( 'class' ),
166
+ $this->get_version(),
167
+ $this->get( 'requires', array() )
168
  );
169
 
170
  $dependency = Tribe__Dependency::instance();
171
 
172
  // check requisite plugins are active for this extension
173
+ $is_plugin_authorized = $dependency->has_requisite_plugins( $this->get( 'requires', array() ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
  if ( $is_plugin_authorized ) {
176
  $this->init();
177
 
178
+ //add extension as active to dependency checker
179
+ $dependency->add_active_plugin( $this->get( 'class' ), $this->get_version(), $this->get_plugin_file() );
180
  }
181
+
182
  }
183
 
184
  /**
229
  }
230
 
231
  /**
232
+ * Get's the action/hook for the extensions init()
233
  *
234
  * @return string Action/hook
235
  */
378
  );
379
  }
380
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  /**
382
  * Prevent cloning the singleton with 'clone' operator
383
  *
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.12.3';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.12.1';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
common/src/Tribe/Plugins_API.php CHANGED
@@ -24,206 +24,121 @@ class Tribe__Plugins_API {
24
  'the-events-calendar' => array(
25
  'title' => __( 'The Events Calendar', 'tribe-common' ),
26
  'slug' => 'the-events-calendar',
27
- 'link' => 'https://m.tri.be/1ai-',
28
- 'description' => __( 'Our flagship free calendar', 'tribe-common' ),
29
- 'features' => [
30
- __( 'Customizable', 'tribe-common' ),
31
- __( 'Import & export events', 'tribe-common' ),
32
- __( 'Timezone support', 'tribe-common' ),
33
- __( 'Multiple views', 'tribe-common' ),
34
- ],
35
- 'image' => 'images/shop/calendar.jpg',
36
- 'logo' => 'images/logo/the-events-calendar.svg',
37
  'is_installed' => class_exists( 'Tribe__Events__Main' ),
38
- 'free' => true,
39
- 'active_installs' => 800000,
40
  ),
41
  'event-aggregator' => array(
42
  'title' => __( 'Event Aggregator', 'tribe-common' ),
43
  'slug' => 'event-aggregator',
44
- 'link' => 'https://m.tri.be/1aj0',
45
- 'description' => __( 'Automated imports for your calendar', 'tribe-common' ),
46
- 'features' => [
47
- __( 'Schedule automated imports', 'tribe-common' ),
48
- __( 'Customizable', 'tribe-common' ),
49
- __( 'Works with Google Calendar, Meetup, and more', 'tribe-common' ),
50
- __( 'Refine by date, location, or keyword', 'tribe-common' ),
51
- ],
52
- 'image' => 'images/shop/aggregator.jpg',
53
- 'logo' => 'images/logo/event-aggregator.svg',
54
  'is_installed' => class_exists( 'Tribe__Events__Aggregator' ) && Tribe__Events__Aggregator::is_service_active(),
55
- 'free' => false,
56
  'active_installs' => 20000,
57
  ),
58
  'events-calendar-pro' => array(
59
  'title' => __( 'Events Calendar PRO', 'tribe-common' ),
60
  'slug' => 'events-calendar-pro',
61
- 'link' => 'https://m.tri.be/1ai-',
62
- 'description' => __( 'Power up your calendar with Pro', 'tribe-common' ),
63
- 'features' => [
64
- __( 'Premium support', 'tribe-common' ),
65
- __( 'Recurring events', 'tribe-common' ),
66
- __( 'Additional views', 'tribe-common' ),
67
- __( 'Shortcodes', 'tribe-common' ),
68
- ],
69
- 'image' => 'images/shop/pro.jpg',
70
- 'logo' => 'images/logo/events-calendar-pro.svg',
71
  'is_installed' => class_exists( 'Tribe__Events__Pro__Main' ),
72
- 'free' => false,
73
  'active_installs' => 100000,
74
  ),
75
  'event-tickets' => array(
76
  'title' => __( 'Event Tickets', 'tribe-common' ),
77
  'slug' => 'event-tickets',
78
- 'link' => 'https://m.tri.be/1aj1',
79
- 'description' => __( 'Manage ticketing and RSVPs', 'tribe-common' ),
80
- 'features' => [
81
- __( 'Add tickets and RSVP to any post', 'tribe-common' ),
82
- __( 'Paypal integration', 'tribe-common' ),
83
- __( 'Attendee reports', 'tribe-common' ),
84
- __( 'Customizable ticket template', 'tribe-common' ),
85
- ],
86
- 'image' => 'images/shop/tickets.jpg',
87
- 'logo' => 'images/logo/event-tickets.svg',
88
  'is_installed' => class_exists( 'Tribe__Tickets__Main' ),
89
- 'free' => true,
90
  'active_installs' => 20000,
91
  ),
92
  'event-tickets-plus' => array(
93
  'title' => __( 'Event Tickets Plus', 'tribe-common' ),
94
  'slug' => 'event-tickets-plus',
95
- 'link' => 'http://m.tri.be/1aj1',
96
- 'description' => __( 'Monetize your events', 'tribe-common' ),
97
- 'features' => [
98
- __( 'Custom registration fields', 'tribe-common' ),
99
- __( 'WooCommerce compatibility', 'tribe-common' ),
100
- __( 'Ticket scanning with mobile app', 'tribe-common' ),
101
- __( 'Custom attendee registration fields', 'tribe-common' ),
102
- ],
103
- 'image' => 'images/shop/tickets-plus.jpg',
104
- 'logo' => 'images/logo/event-tickets-plus.svg',
105
  'is_installed' => class_exists( 'Tribe__Tickets_Plus__Main' ),
106
- 'free' => false,
107
  'active_installs' => 10000,
108
  ),
109
  'promoter' => array(
110
  'title' => __( 'Promoter', 'tribe-common' ),
111
  'slug' => 'promoter',
112
- 'link' => 'https://m.tri.be/1acy',
113
- 'description' => __( 'An email marketing solution for events and the people running them', 'tribe-common' ),
114
- 'features' => [
115
- __( 'Automate email touchpoints', 'tribe-common' ),
116
- __( 'Customize email templates', 'tribe-common' ),
117
- __( 'Streamline your email process', 'tribe-common' ),
118
- __( 'Segment your attendee lists', 'tribe-common' ),
119
- ],
120
- 'image' => 'images/shop/promoter.jpg',
121
- 'logo' => 'images/logo/promoter.svg',
122
- 'is_installed' => tribe( 'promoter.pue' )->has_license_key(),
123
- 'free' => false,
124
  'active_installs' => 1000,
125
  ),
126
  'tribe-filterbar' => array(
127
  'title' => __( 'Filter Bar', 'tribe-common' ),
128
  'slug' => 'tribe-filterbar',
129
- 'link' => 'https://m.tri.be/19o6',
130
- 'description' => __( 'Help users find exactly the right event', 'tribe-common' ),
131
- 'features' => [
132
- __( 'Configurable set of filters', 'tribe-common' ),
133
- __( 'Horizontal or vertical', 'tribe-common' ),
134
- __( 'Filter category, price, and more', 'tribe-common' ),
135
- __( 'Filter distance (for Events Calendar Pro)', 'tribe-common' ),
136
- ],
137
- 'image' => 'images/shop/filter-bar.jpg',
138
- 'logo' => 'images/logo/filterbar.svg',
139
  'is_installed' => class_exists( 'Tribe__Events__Filterbar__View' ),
140
- 'free' => false,
141
  'active_installs' => 20000,
142
  ),
143
  'events-community' => array(
144
  'title' => __( 'Community Events', 'tribe-common' ),
145
  'slug' => 'events-community',
146
- 'link' => 'https://m.tri.be/19o7',
147
- 'description' => __( 'Users submit events to your calendar', 'tribe-common' ),
148
- 'features' => [
149
- __( 'Publishing Control', 'tribe-common' ),
150
- __( 'Event Submission Form', 'tribe-common' ),
151
- __( 'Registered User Settings', 'tribe-common' ),
152
- __( 'Email notifications', 'tribe-common' ),
153
- ],
154
- 'image' => 'images/shop/community.jpg',
155
- 'logo' => 'images/logo/community-events.svg',
156
  'is_installed' => class_exists( 'Tribe__Events__Community__Main' ),
157
- 'free' => false,
158
  'active_installs' => 20000,
159
  ),
160
  'events-community-tickets' => array(
161
  'title' => __( 'Community Tickets', 'tribe-common' ),
162
  'slug' => 'events-community-tickets',
163
- 'link' => 'https://m.tri.be/19o8',
164
- 'description' => __( 'Run your own events marketplace', 'tribe-common' ),
165
- 'features' => [
166
- __( 'Users submit events and sell tickets', 'tribe-common' ),
167
- __( 'Split commission with users', 'tribe-common' ),
168
- __( 'No admin access required', 'tribe-common' ), /* code review: fail this */
169
- __( 'Sales reporting', 'tribe-common' ),
170
- ],
171
- 'requires' => _x( 'Event Tickets Plus and Community Events', 'Names of required plugins for Community Tickets', 'tribe-common' ),
172
- 'image' => 'images/shop/community-tickets.jpg',
173
- 'logo' => 'images/logo/community-tickets.svg',
174
  'is_installed' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
175
- 'free' => false,
176
  'active_installs' => 10000,
177
  ),
178
  'tribe-eventbrite' => array(
179
  'title' => __( 'Eventbrite Tickets', 'tribe-common' ),
180
  'slug' => 'tribe-eventbrite',
181
- 'link' => 'https://m.tri.be/19o9',
182
- 'description' => __( 'Unite the power of TEC with the ticketing of Eventbrite', 'tribe-common' ),
183
- 'features' => [
184
- __( 'Manage tickets from WordPress', 'tribe-common' ),
185
- __( 'Ticket availability automatically updates', 'tribe-common' ),
186
- __( 'Integrated with your events on Eventbrite', 'tribe-common' ),
187
- __( 'Automatically import your events', 'tribe-common' ),
188
- ],
189
- 'image' => 'images/shop/eventbrite.jpg',
190
- 'logo' => 'images/logo/eventbrite-tickets.svg',
191
  'is_installed' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
192
- 'free' => false,
193
  'active_installs' => 20000,
194
  ),
195
  'image-widget-plus' => array(
196
  'title' => __( 'Image Widget Plus', 'tribe-common' ),
197
  'slug' => 'image-widget-plus',
198
- 'link' => 'https://m.tri.be/19nv',
199
- 'description' => __( 'Beautiful display options for your favorite photos.', 'tribe-common' ),
200
- 'features' => [
201
- __( 'Multi-Image Support', 'tribe-common' ),
202
- __( 'Lightbox', 'tribe-common' ),
203
- __( 'Slideshow', 'tribe-common' ),
204
- __( 'Random Images', 'tribe-common' ),
205
- ],
206
- 'image' => 'images/shop/image-widget-plus.jpg',
207
- 'logo' => 'images/logo/image-widget-plus.svg',
208
  'is_installed' => class_exists( 'Tribe__Image__Plus__Main' ),
209
- 'free' => false,
210
- 'active_installs' => 2500,
211
- ),
212
- 'events-virtual' => array(
213
- 'title' => __( 'Virtual Events', 'tribe-common' ),
214
- 'slug' => 'events-virtual',
215
- 'link' => 'http://m.tri.be/19nv', /* CODE REVIEW: this link needs updating */
216
- 'description' => __( '[ADD DESCRIPTION]', 'tribe-common' ), /* CODE REVIEW: this desciption needs updating */
217
- 'features' => [
218
- __( 'Feature', 'tribe-common' ),
219
- __( 'Feature', 'tribe-common' ),
220
- __( 'Feature', 'tribe-common' ),
221
- __( 'Feature', 'tribe-common' ),
222
- ],
223
- 'image' => 'images/shop/virtual-events.jpg',
224
- 'logo' => 'images/logo/virtual-events.svg',
225
- 'is_installed' => defined( 'EVENTS_VIRTUAL_FILE' ),
226
- 'free' => false,
227
  'active_installs' => 2500,
228
  ),
229
  );
24
  'the-events-calendar' => array(
25
  'title' => __( 'The Events Calendar', 'tribe-common' ),
26
  'slug' => 'the-events-calendar',
27
+ 'link' => null,
28
+ 'description' => __( 'Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust.', 'tribe-common' ),
29
+ 'image' => 'https://ps.w.org/the-events-calendar/assets/icon-128x128.png?rev=1342379',
 
 
 
 
 
 
 
30
  'is_installed' => class_exists( 'Tribe__Events__Main' ),
31
+ 'active_installs' => 500000,
 
32
  ),
33
  'event-aggregator' => array(
34
  'title' => __( 'Event Aggregator', 'tribe-common' ),
35
  'slug' => 'event-aggregator',
36
+ 'link' => 'https://theeventscalendar.com/product/event-aggregator/?utm_campaign=in-app&utm_source=addonspage&utm_medium=event-aggregator&utm_content=appstoreembedded-1',
37
+ 'description' => __( 'Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze.', 'tribe-common' ),
38
+ 'image' => 'images/app-shop-ical.jpg',
 
 
 
 
 
 
 
39
  'is_installed' => class_exists( 'Tribe__Events__Aggregator' ) && Tribe__Events__Aggregator::is_service_active(),
 
40
  'active_installs' => 20000,
41
  ),
42
  'events-calendar-pro' => array(
43
  'title' => __( 'Events Calendar PRO', 'tribe-common' ),
44
  'slug' => 'events-calendar-pro',
45
+ 'link' => 'https://theeventscalendar.com/product/wordpress-events-calendar-pro/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-events-calendar-pro&utm_content=appstoreembedded-1',
46
+ 'buy-now' => 'http://m.tri.be/19o4',
47
+ 'description' => sprintf(
48
+ __( 'The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more.', 'tribe-common' ),
49
+ '<a href="http://m.tri.be/18vc">',
50
+ '</a>'
51
+ ),
52
+ 'image' => 'images/app-shop-pro.jpg',
 
 
53
  'is_installed' => class_exists( 'Tribe__Events__Pro__Main' ),
 
54
  'active_installs' => 100000,
55
  ),
56
  'event-tickets' => array(
57
  'title' => __( 'Event Tickets', 'tribe-common' ),
58
  'slug' => 'event-tickets',
59
+ 'link' => null,
60
+ 'description' => __( 'Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings.', 'tribe-common' ),
61
+ 'image' => 'https://ps.w.org/event-tickets/assets/icon-128x128.png?rev=1299138',
 
 
 
 
 
 
 
62
  'is_installed' => class_exists( 'Tribe__Tickets__Main' ),
 
63
  'active_installs' => 20000,
64
  ),
65
  'event-tickets-plus' => array(
66
  'title' => __( 'Event Tickets Plus', 'tribe-common' ),
67
  'slug' => 'event-tickets-plus',
68
+ 'link' => 'https://theeventscalendar.com/product/wordpress-event-tickets-plus/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-event-tickets-plus&utm_content=appstoreembedded-1',
69
+ 'buy-now' => 'http://m.tri.be/19o5',
70
+ 'description' => sprintf(
71
+ __( 'Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app.', 'tribe-common' ),
72
+ '<a href="http://m.tri.be/18vc">',
73
+ '</a>'
74
+ ),
75
+ 'image' => 'images/app-shop-tickets-plus.jpg',
 
 
76
  'is_installed' => class_exists( 'Tribe__Tickets_Plus__Main' ),
 
77
  'active_installs' => 10000,
78
  ),
79
  'promoter' => array(
80
  'title' => __( 'Promoter', 'tribe-common' ),
81
  'slug' => 'promoter',
82
+ 'link' => 'https://theeventscalendar.com/product/promoter/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-events-promoter&utm_content=appstoreembedded-1',
83
+ 'buy-now' => 'http://m.tri.be/1acy',
84
+ 'description' => __( 'With Promoter, you’ll connect with your community via email through every stage of your event, bolster event attendance, and manage notifications more efficiently than ever. Increase event attendance and engagement by automatically sending reminders for on-sale dates, event times and more.', 'tribe-common' ),
85
+ 'image' => 'images/app-shop-promoter.jpg',
86
+ 'is_installed' => false,
 
 
 
 
 
 
 
87
  'active_installs' => 1000,
88
  ),
89
  'tribe-filterbar' => array(
90
  'title' => __( 'Filter Bar', 'tribe-common' ),
91
  'slug' => 'tribe-filterbar',
92
+ 'link' => 'https://theeventscalendar.com/product/wordpress-events-filterbar/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-events-filterbar&utm_content=appstoreembedded-1',
93
+ 'buy-now' => 'http://m.tri.be/19o6',
94
+ 'description' => __( 'It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar.', 'tribe-common' ),
95
+ 'image' => 'images/app-shop-filter-bar.jpg',
 
 
 
 
 
 
96
  'is_installed' => class_exists( 'Tribe__Events__Filterbar__View' ),
 
97
  'active_installs' => 20000,
98
  ),
99
  'events-community' => array(
100
  'title' => __( 'Community Events', 'tribe-common' ),
101
  'slug' => 'events-community',
102
+ 'link' => 'https://theeventscalendar.com/product/wordpress-community-events/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-community-events&utm_content=appstoreembedded-1',
103
+ 'buy-now' => 'http://m.tri.be/19o7',
104
+ 'description' => __( 'Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go.', 'tribe-common' ),
105
+ 'image' => 'images/app-shop-community.jpg',
 
 
 
 
 
 
106
  'is_installed' => class_exists( 'Tribe__Events__Community__Main' ),
 
107
  'active_installs' => 20000,
108
  ),
109
  'events-community-tickets' => array(
110
  'title' => __( 'Community Tickets', 'tribe-common' ),
111
  'slug' => 'events-community-tickets',
112
+ 'link' => 'https://theeventscalendar.com/product/community-tickets/?utm_campaign=in-app&utm_source=addonspage&utm_medium=community-tickets&utm_content=appstoreembedded-1',
113
+ 'buy-now' => 'http://m.tri.be/19o8',
114
+ 'description' => __( 'Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin', 'tribe-common' ),
115
+ 'requires' => _x( 'Event Tickets Plus and Community Events', 'Names of required plugins for Community Tickets', 'tribe-common' ),
116
+ 'image' => 'images/app-shop-community-tickets.jpg',
 
 
 
 
 
 
117
  'is_installed' => class_exists( 'Tribe__Events__Community__Tickets__Main' ),
 
118
  'active_installs' => 10000,
119
  ),
120
  'tribe-eventbrite' => array(
121
  'title' => __( 'Eventbrite Tickets', 'tribe-common' ),
122
  'slug' => 'tribe-eventbrite',
123
+ 'link' => 'https://theeventscalendar.com/product/wordpress-eventbrite-tickets/?utm_campaign=in-app&utm_source=addonspage&utm_medium=wordpress-eventbrite-tickets&utm_content=appstoreembedded-1',
124
+ 'buy-now' => 'http://m.tri.be/19o9',
125
+ 'description' => sprintf(
126
+ __( 'The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar.', 'tribe-common' ),
127
+ '<a href="http://www.eventbrite.com/r/etp">',
128
+ '</a>'
129
+ ),
130
+ 'image' => 'images/app-shop-eventbrite.jpg',
 
 
131
  'is_installed' => class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ),
 
132
  'active_installs' => 20000,
133
  ),
134
  'image-widget-plus' => array(
135
  'title' => __( 'Image Widget Plus', 'tribe-common' ),
136
  'slug' => 'image-widget-plus',
137
+ 'link' => 'http://m.tri.be/19nv',
138
+ 'buy-now' => 'http://m.tri.be/19oa',
139
+ 'description' => __( 'Take your image widgets to the next level with Image Widget Plus! We\'ve taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support.', 'tribe-common' ),
140
+ 'image' => 'images/app-shop-image-widget-plus.jpg',
 
 
 
 
 
 
141
  'is_installed' => class_exists( 'Tribe__Image__Plus__Main' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  'active_installs' => 2500,
143
  ),
144
  );
common/src/Tribe/Shortcode/Shortcode_Abstract.php CHANGED
@@ -1,72 +1,65 @@
1
  <?php
2
-
 
 
 
 
 
 
3
  namespace Tribe\Shortcode;
4
 
5
  use Tribe__Utils__Array as Arr;
6
 
7
  /**
8
- * The abstract all shortcodes should implement.
9
- *
10
- * @package Tribe\Shortcode
11
  *
12
  * @since 4.12.0
 
 
13
  */
14
  abstract class Shortcode_Abstract implements Shortcode_Interface {
15
  /**
16
  * Slug of the current shortcode.
17
  *
18
- * @since 4.12.0
19
  *
20
- * @var string
21
  */
22
  protected $slug;
23
 
24
  /**
25
  * Default arguments to be merged into final arguments of the shortcode.
26
  *
27
- * @since 4.12.0
28
  *
29
- * @var array
30
  */
31
  protected $default_arguments = [];
32
 
33
  /**
34
- * Array map allowing aliased shortcode arguments.
35
  *
36
- * The array keys are aliases of the array values (i.e. the "real" shortcode attributes to parse).
37
- * Example array: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
38
- * Example shortcode usage: [some_tag alias=17 to='Fred'] will be parsed as [some_tag canonical=17 to='Fred']
39
  *
40
- * @since 4.12.2
41
- *
42
- * @var array<string,string>
43
- */
44
- protected $aliased_arguments = [];
45
-
46
- /**
47
- * Array of callbacks for arguments validation.
48
- *
49
- * @since 4.12.0
50
- *
51
- * @var array
52
  */
53
  protected $validate_arguments_map = [];
54
 
55
  /**
56
  * Arguments of the current shortcode.
57
  *
58
- * @since 4.12.0
59
  *
60
- * @var array
61
  */
62
  protected $arguments;
63
 
64
  /**
65
  * Content of the current shortcode.
66
  *
67
- * @since 4.12.0
68
  *
69
- * @var string
70
  */
71
  protected $content;
72
 
@@ -74,38 +67,22 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
74
  * {@inheritDoc}
75
  */
76
  public function setup( $arguments, $content ) {
77
- $this->arguments = $this->parse_arguments( (array) $arguments );
78
  $this->content = $content;
79
  }
80
 
81
  /**
82
  * {@inheritDoc}
83
  */
84
- public function set_aliased_arguments( array $alias_map ) {
85
- $this->aliased_arguments = Arr::filter_to_flat_scalar_associative_array( (array) $alias_map );
86
- }
87
-
88
- /**
89
- * {@inheritDoc}
90
- */
91
- public function get_aliased_arguments() {
92
- return $this->aliased_arguments;
93
- }
94
-
95
- /**
96
- * {@inheritDoc}
97
- */
98
- public function parse_arguments( array $arguments ) {
99
- $arguments = Arr::parse_associative_array_alias( (array) $arguments, (array) $this->get_aliased_arguments() );
100
  $arguments = shortcode_atts( $this->get_default_arguments(), $arguments, $this->slug );
101
-
102
  return $this->validate_arguments( $arguments );
103
  }
104
 
105
  /**
106
  * {@inheritDoc}
107
  */
108
- public function validate_arguments( array $arguments ) {
109
  $validate_arguments_map = $this->get_validated_arguments_map();
110
  foreach ( $validate_arguments_map as $key => $callback ) {
111
  $arguments[ $key ] = $callback( isset( $arguments[ $key ] ) ? $arguments[ $key ] : null );
@@ -128,10 +105,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
128
  /**
129
  * Applies a filter to instance arguments validation callbacks.
130
  *
131
- * @since 4.12.0
132
  *
133
- * @param array $validate_arguments_map Current set of callbacks for arguments.
134
- * @param static $instance Which instance of shortcode we are dealing with.
135
  */
136
  $validate_arguments_map = apply_filters( 'tribe_shortcode_validate_arguments_map', $this->validate_arguments_map, $this );
137
 
@@ -140,10 +117,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
140
  /**
141
  * Applies a filter to instance arguments validation callbacks based on the registration slug of the shortcode.
142
  *
143
- * @since 4.12.0
144
  *
145
- * @param array $validate_arguments_map Current set of callbacks for arguments.
146
- * @param static $instance Which instance of shortcode we are dealing with.
147
  */
148
  $validate_arguments_map = apply_filters( "tribe__shortcode_{$registration_slug}_validate_arguments_map", $validate_arguments_map, $this );
149
 
@@ -157,10 +134,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
157
  /**
158
  * Applies a filter to instance arguments.
159
  *
160
- * @since 4.12.0
161
  *
162
- * @param array $arguments Current set of arguments.
163
- * @param static $instance Which instance of shortcode we are dealing with.
164
  */
165
  $arguments = apply_filters( 'tribe_shortcode_arguments', $this->arguments, $this );
166
 
@@ -169,10 +146,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
169
  /**
170
  * Applies a filter to instance arguments based on the registration slug of the shortcode.
171
  *
172
- * @since 4.12.0
173
  *
174
- * @param array $arguments Current set of arguments.
175
- * @param static $instance Which instance of shortcode we are dealing with.
176
  */
177
  $arguments = apply_filters( "tribe_shortcode_{$registration_slug}_arguments", $arguments, $this );
178
 
@@ -187,14 +164,14 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
187
  $argument = Arr::get( $arguments, $index, $default );
188
 
189
  /**
190
- * Applies a filter to a specific shortcode argument, catch all for all shortcodes.
191
  *
192
- * @since 4.12.0
193
  *
194
- * @param mixed $argument The argument.
195
- * @param array $index Which index we indent to fetch from the arguments.
196
- * @param array $default Default value if it doesn't exist.
197
- * @param static $instance Which instance of shortcode we are dealing with.
198
  */
199
  $argument = apply_filters( 'tribe_shortcode_argument', $argument, $index, $default, $this );
200
 
@@ -203,12 +180,12 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
203
  /**
204
  * Applies a filter to a specific shortcode argument, to a particular registration slug.
205
  *
206
- * @since 4.12.0
207
  *
208
- * @param mixed $argument The argument value.
209
- * @param array $index Which index we indent to fetch from the arguments.
210
- * @param array $default Default value if it doesn't exist.
211
- * @param static $instance Which instance of shortcode we are dealing with.
212
  */
213
  $argument = apply_filters( "tribe_shortcode_{$registration_slug}_argument", $argument, $index, $default, $this );
214
 
@@ -222,10 +199,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
222
  /**
223
  * Applies a filter to instance default arguments.
224
  *
225
- * @since 4.12.0
226
  *
227
- * @param array $default_arguments Current set of default arguments.
228
- * @param static $instance Which instance of shortcode we are dealing with.
229
  */
230
  $default_arguments = apply_filters( 'tribe_shortcode_default_arguments', $this->default_arguments, $this );
231
 
@@ -234,10 +211,10 @@ abstract class Shortcode_Abstract implements Shortcode_Interface {
234
  /**
235
  * Applies a filter to instance default arguments based on the registration slug of the shortcode.
236
  *
237
- * @since 4.12.0
238
  *
239
- * @param array $default_arguments Current set of default arguments.
240
- * @param static $instance Which instance of shortcode we are dealing with.
241
  */
242
  $default_arguments = apply_filters( "tribe_shortcode_{$registration_slug}_default_arguments", $default_arguments, $this );
243
 
1
  <?php
2
+ /**
3
+ * The abstract all shortcodes should implement.
4
+ *
5
+ * @since 4.12.0
6
+ *
7
+ * @package Tribe\Shortcode
8
+ */
9
  namespace Tribe\Shortcode;
10
 
11
  use Tribe__Utils__Array as Arr;
12
 
13
  /**
14
+ * Interface Shortcode_Interface
 
 
15
  *
16
  * @since 4.12.0
17
+ *
18
+ * @package Tribe\Shortcode
19
  */
20
  abstract class Shortcode_Abstract implements Shortcode_Interface {
21
  /**
22
  * Slug of the current shortcode.
23
  *
24
+ * @since 4.12.0
25
  *
26
+ * @var string
27
  */
28
  protected $slug;
29
 
30
  /**
31
  * Default arguments to be merged into final arguments of the shortcode.
32
  *
33
+ * @since 4.12.0
34
  *
35
+ * @var array
36
  */
37
  protected $default_arguments = [];
38
 
39
  /**
40
+ * Array of callbacks for arguments validation
41
  *
42
+ * @since 4.12.0
 
 
43
  *
44
+ * @var array
 
 
 
 
 
 
 
 
 
 
 
45
  */
46
  protected $validate_arguments_map = [];
47
 
48
  /**
49
  * Arguments of the current shortcode.
50
  *
51
+ * @since 4.12.0
52
  *
53
+ * @var array
54
  */
55
  protected $arguments;
56
 
57
  /**
58
  * Content of the current shortcode.
59
  *
60
+ * @since 4.12.0
61
  *
62
+ * @var string
63
  */
64
  protected $content;
65
 
67
  * {@inheritDoc}
68
  */
69
  public function setup( $arguments, $content ) {
70
+ $this->arguments = $this->parse_arguments( $arguments );
71
  $this->content = $content;
72
  }
73
 
74
  /**
75
  * {@inheritDoc}
76
  */
77
+ public function parse_arguments( $arguments ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  $arguments = shortcode_atts( $this->get_default_arguments(), $arguments, $this->slug );
 
79
  return $this->validate_arguments( $arguments );
80
  }
81
 
82
  /**
83
  * {@inheritDoc}
84
  */
85
+ public function validate_arguments( $arguments ) {
86
  $validate_arguments_map = $this->get_validated_arguments_map();
87
  foreach ( $validate_arguments_map as $key => $callback ) {
88
  $arguments[ $key ] = $callback( isset( $arguments[ $key ] ) ? $arguments[ $key ] : null );
105
  /**
106
  * Applies a filter to instance arguments validation callbacks.
107
  *
108
+ * @since 4.12.0
109
  *
110
+ * @param array $validate_arguments_map Current set of callbacks for arguments.
111
+ * @param static $instance Which instance of shortcode we are dealing with.
112
  */
113
  $validate_arguments_map = apply_filters( 'tribe_shortcode_validate_arguments_map', $this->validate_arguments_map, $this );
114
 
117
  /**
118
  * Applies a filter to instance arguments validation callbacks based on the registration slug of the shortcode.
119
  *
120
+ * @since 4.12.0
121
  *
122
+ * @param array $validate_arguments_map Current set of callbacks for arguments.
123
+ * @param static $instance Which instance of shortcode we are dealing with.
124
  */
125
  $validate_arguments_map = apply_filters( "tribe__shortcode_{$registration_slug}_validate_arguments_map", $validate_arguments_map, $this );
126
 
134
  /**
135
  * Applies a filter to instance arguments.
136
  *
137
+ * @since 4.12.0
138
  *
139
+ * @param array $arguments Current set of arguments.
140
+ * @param static $instance Which instance of shortcode we are dealing with.
141
  */
142
  $arguments = apply_filters( 'tribe_shortcode_arguments', $this->arguments, $this );
143
 
146
  /**
147
  * Applies a filter to instance arguments based on the registration slug of the shortcode.
148
  *
149
+ * @since 4.12.0
150
  *
151
+ * @param array $arguments Current set of arguments.
152
+ * @param static $instance Which instance of shortcode we are dealing with.
153
  */
154
  $arguments = apply_filters( "tribe_shortcode_{$registration_slug}_arguments", $arguments, $this );
155
 
164
  $argument = Arr::get( $arguments, $index, $default );
165
 
166
  /**
167
+ * Applies a filter to a specific shortcode argument, catch all for all shortcodes..
168
  *
169
+ * @since 4.12.0
170
  *
171
+ * @param mixed $argument The argument.
172
+ * @param array $index Which index we indent to fetch from the arguments.
173
+ * @param array $default Default value if it doesnt exist.
174
+ * @param static $instance Which instance of shortcode we are dealing with.
175
  */
176
  $argument = apply_filters( 'tribe_shortcode_argument', $argument, $index, $default, $this );
177
 
180
  /**
181
  * Applies a filter to a specific shortcode argument, to a particular registration slug.
182
  *
183
+ * @since 4.12.0
184
  *
185
+ * @param mixed $argument The argument value.
186
+ * @param array $index Which index we indent to fetch from the arguments.
187
+ * @param array $default Default value if it doesnt exist.
188
+ * @param static $instance Which instance of shortcode we are dealing with.
189
  */
190
  $argument = apply_filters( "tribe_shortcode_{$registration_slug}_argument", $argument, $index, $default, $this );
191
 
199
  /**
200
  * Applies a filter to instance default arguments.
201
  *
202
+ * @since 4.12.0
203
  *
204
+ * @param array $default_arguments Current set of default arguments.
205
+ * @param static $instance Which instance of shortcode we are dealing with.
206
  */
207
  $default_arguments = apply_filters( 'tribe_shortcode_default_arguments', $this->default_arguments, $this );
208
 
211
  /**
212
  * Applies a filter to instance default arguments based on the registration slug of the shortcode.
213
  *
214
+ * @since 4.12.0
215
  *
216
+ * @param array $default_arguments Current set of default arguments.
217
+ * @param static $instance Which instance of shortcode we are dealing with.
218
  */
219
  $default_arguments = apply_filters( "tribe_shortcode_{$registration_slug}_default_arguments", $default_arguments, $this );
220
 
common/src/Tribe/Shortcode/Shortcode_Interface.php CHANGED
@@ -1,20 +1,28 @@
1
  <?php
2
-
 
 
 
 
 
 
3
  namespace Tribe\Shortcode;
4
 
5
  /**
6
  * Interface Shortcode_Interface
7
  *
8
- * @package Tribe\Shortcode
9
- *
10
  * @since 4.12.0
 
 
11
  */
12
  interface Shortcode_Interface {
13
 
14
  /**
15
- * Returns the shortcode slug that allows the shortcode to be built via the shortcode class by slug.
 
 
16
  *
17
- * @since 4.12.0
18
  *
19
  * @return string The shortcode slug.
20
  */
@@ -23,60 +31,39 @@ interface Shortcode_Interface {
23
  /**
24
  * Configures the base variables for an instance of shortcode.
25
  *
26
- * @since 4.12.0
27
  *
28
- * @param array|string $arguments Set of arguments passed to the Shortcode at hand. Empty string if no args.
29
  * @param string $content Contents passed to the shortcode, inside of the open and close brackets.
30
  */
31
  public function setup( $arguments, $content );
32
 
33
- /**
34
- * Sets the aliased arguments array.
35
- *
36
- * @see Tribe__Utils__Array::parse_associative_array_alias() The expected format.
37
- *
38
- * @since 4.12.2
39
- *
40
- * @param array $alias_map An associative array of aliases: key as alias, value as mapped canonical.
41
- * Example: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
42
- */
43
- public function set_aliased_arguments( array $alias_map );
44
-
45
- /**
46
- * Gets the aliased arguments array.
47
- *
48
- * @since 4.12.2
49
- *
50
- * @return array<string,string> The associative array map of aliases and their canonical arguments.
51
- */
52
- public function get_aliased_arguments();
53
-
54
  /**
55
  * Returns the arguments for the shortcode parsed correctly with defaults applied.
56
  *
57
- * @since 4.12.0
58
  *
59
- * @param array $arguments Set of arguments passed to the Shortcode at hand.
60
  *
61
  * @return array<string,mixed> The parsed shortcode arguments map.
62
  */
63
- public function parse_arguments( array $arguments );
64
 
65
  /**
66
  * Returns the array of arguments for this shortcode after applying the validation callbacks.
67
  *
68
- * @since 4.12.0
69
  *
70
- * @param array $arguments Set of arguments passed to the Shortcode at hand.
71
  *
72
  * @return array<string,mixed> The validated shortcode arguments map.
73
  */
74
- public function validate_arguments( array $arguments );
75
 
76
  /**
77
  * Returns the array of callbacks for this shortcode's arguments.
78
  *
79
- * @since 4.12.0
80
  *
81
  * @return array<string,mixed> A map of the shortcode arguments that have survived validation.
82
  */
@@ -85,7 +72,7 @@ interface Shortcode_Interface {
85
  /**
86
  * Returns a shortcode default arguments.
87
  *
88
- * @since 4.12.0
89
  *
90
  * @return array<string,mixed> The shortcode default arguments map.
91
  */
@@ -94,7 +81,7 @@ interface Shortcode_Interface {
94
  /**
95
  * Returns a shortcode arguments after been parsed.
96
  *
97
- * @since 4.12.0
98
  *
99
  * @return array<string,mixed> The shortcode arguments, as set by the user in the shortcode string.
100
  */
@@ -103,21 +90,21 @@ interface Shortcode_Interface {
103
  /**
104
  * Returns a shortcode argument after it has been parsed.
105
  *
106
- * @since 4.12.0
107
  *
108
- * @param array|string $index Which index we indent to fetch from the arguments.
109
- * @param array $default Default value if it doesn't exist.
110
  *
111
- * @uses Tribe__Utils__Array::get For index fetching and Default.
 
112
  *
113
- * @return mixed Value for the Index passed as the first argument.
114
  */
115
  public function get_argument( $index, $default = null );
116
 
117
  /**
118
- * Returns a shortcode's HTML.
119
  *
120
- * @since 4.12.0
121
  *
122
  * @return string The shortcode rendered HTML code.
123
  */
1
  <?php
2
+ /**
3
+ * The interface all shortcodes should implement.
4
+ *
5
+ * @since 4.12.0
6
+ *
7
+ * @package Tribe\Shortcode
8
+ */
9
  namespace Tribe\Shortcode;
10
 
11
  /**
12
  * Interface Shortcode_Interface
13
  *
 
 
14
  * @since 4.12.0
15
+ *
16
+ * @package Tribe\Shortcode
17
  */
18
  interface Shortcode_Interface {
19
 
20
  /**
21
+ * Returns the shortcode slug.
22
+ *
23
+ * The slug should be the one that will allow the shortcode to be built by the shortcode class by slug.
24
  *
25
+ * @since 4.12.0
26
  *
27
  * @return string The shortcode slug.
28
  */
31
  /**
32
  * Configures the base variables for an instance of shortcode.
33
  *
34
+ * @since 4.12.0
35
  *
36
+ * @param array $arguments Set of arguments passed to the Shortcode at hand.
37
  * @param string $content Contents passed to the shortcode, inside of the open and close brackets.
38
  */
39
  public function setup( $arguments, $content );
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  /**
42
  * Returns the arguments for the shortcode parsed correctly with defaults applied.
43
  *
44
+ * @since 4.12.0
45
  *
46
+ * @param array $arguments Set of arguments passed to the Shortcode at hand.
47
  *
48
  * @return array<string,mixed> The parsed shortcode arguments map.
49
  */
50
+ public function parse_arguments( $arguments );
51
 
52
  /**
53
  * Returns the array of arguments for this shortcode after applying the validation callbacks.
54
  *
55
+ * @since 4.12.0
56
  *
57
+ * @param array $arguments Set of arguments passed to the Shortcode at hand.
58
  *
59
  * @return array<string,mixed> The validated shortcode arguments map.
60
  */
61
+ public function validate_arguments( $arguments );
62
 
63
  /**
64
  * Returns the array of callbacks for this shortcode's arguments.
65
  *
66
+ * @since 4.12.0
67
  *
68
  * @return array<string,mixed> A map of the shortcode arguments that have survived validation.
69
  */
72
  /**
73
  * Returns a shortcode default arguments.
74
  *
75
+ * @since 4.12.0
76
  *
77
  * @return array<string,mixed> The shortcode default arguments map.
78
  */
81
  /**
82
  * Returns a shortcode arguments after been parsed.
83
  *
84
+ * @since 4.12.0
85
  *
86
  * @return array<string,mixed> The shortcode arguments, as set by the user in the shortcode string.
87
  */
90
  /**
91
  * Returns a shortcode argument after it has been parsed.
92
  *
93
+ * @uses Tribe__Utils__Array::get For index fetching and Default.
94
  *
95
+ * @since 4.12.0
 
96
  *
97
+ * @param array $index Which index we indent to fetch from the arguments.
98
+ * @param array $default Default value if it doesnt exist.
99
  *
100
+ * @return mixed Value for the Index passed as the first argument.
101
  */
102
  public function get_argument( $index, $default = null );
103
 
104
  /**
105
+ * Returns a shortcode HTML code.
106
  *
107
+ * @since 4.12.0
108
  *
109
  * @return string The shortcode rendered HTML code.
110
  */
common/src/Tribe/Support.php CHANGED
@@ -287,7 +287,7 @@ if ( ! class_exists( 'Tribe__Support' ) ) {
287
  }
288
 
289
  /**
290
- * Logs the occurrence of rewrite rule purging
291
  */
292
  public function log_rewrite_rule_purge() {
293
  $this->rewrite_rules_purged = true;
287
  }
288
 
289
  /**
290
+ * Logs the occurence of rewrite rule purging
291
  */
292
  public function log_rewrite_rule_purge() {
293
  $this->rewrite_rules_purged = true;
common/src/Tribe/Template.php CHANGED
@@ -1204,10 +1204,26 @@ class Tribe__Template {
1204
  * @return array An array of matches from the regular expression.
1205
  */
1206
  private function get_entry_point_matches( $html ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1207
  $regexp = '/<(?<is_end>\/)*(?<tag>[A-Z0-9]*)(?:\b)*[^>]*>/mi';
1208
 
1209
  preg_match_all( $regexp, $html, $matches );
1210
 
 
 
1211
  return $matches;
1212
  }
1213
 
1204
  * @return array An array of matches from the regular expression.
1205
  */
1206
  private function get_entry_point_matches( $html ) {
1207
+ // Set up cache key using current hook name.
1208
+ $hook_name = $this->get_template_current_hook_name();
1209
+ $key = "tribe_template_entry_point_cache:{$hook_name}";
1210
+
1211
+ // Get cache instance.
1212
+ $cache = tribe_cache();
1213
+
1214
+ // Get cached value (if set).
1215
+ $cached = $cache[ $key ];
1216
+
1217
+ if ( false !== $cached ) {
1218
+ return $cached;
1219
+ }
1220
+
1221
  $regexp = '/<(?<is_end>\/)*(?<tag>[A-Z0-9]*)(?:\b)*[^>]*>/mi';
1222
 
1223
  preg_match_all( $regexp, $html, $matches );
1224
 
1225
+ $cache[ $key ] = $matches;
1226
+
1227
  return $matches;
1228
  }
1229
 
common/src/Tribe/Tracker.php CHANGED
@@ -83,24 +83,7 @@ class Tribe__Tracker {
83
  }
84
 
85
  /**
86
- * Get the date(timestamp) of last modification for a tracked field.
87
- *
88
- * @since 4.12.3
89
- *
90
- * @param string $meta_key The key for the meta field we're interested in.
91
- * @param int $post_id The ID of the post to check.
92
- *
93
- * @return boolean|string The change timestamp or false if the field is not found/empty.
94
- */
95
- public function get_modified_date( $meta_key, $post_id ) {
96
- $modified = get_post_meta( $post_id, self::$field_key, true );
97
-
98
- // If the key is missing or empty/null return false - no recorded change.
99
- return Tribe__Utils__Array::get( $modified, $meta_key, false );
100
- }
101
-
102
- /**
103
- * Easy way to see currently which post types are being tracked by our code.
104
  *
105
  * @return array
106
  */
83
  }
84
 
85
  /**
86
+ * Easy way to see currently which post types are been tracked by our code.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  *
88
  * @return array
89
  */
common/src/Tribe/Utils/Array.php CHANGED
@@ -442,84 +442,5 @@ if ( ! class_exists( 'Tribe__Utils__Array' ) ) {
442
 
443
  return $default;
444
  }
445
-
446
- /**
447
- * Discards everything other than array values having string keys and scalar values, ensuring a
448
- * one-dimensional, associative array result.
449
- *
450
- * @link https://www.php.net/manual/language.types.array.php Keys cast to non-strings will be discarded.
451
- *
452
- * @since 4.12.2
453
- *
454
- * @param array $array
455
- *
456
- * @return array Associative or empty array.
457
- */
458
- public static function filter_to_flat_scalar_associative_array( array $array ) {
459
- $result = [];
460
-
461
- if ( ! is_array( $array ) ) {
462
- return $result;
463
- }
464
-
465
- foreach ( $array as $k => $v ) {
466
- if ( ! is_string( $k ) ) {
467
- continue;
468
- }
469
-
470
- if ( ! is_scalar( $v ) ) {
471
- continue;
472
- }
473
-
474
- $result[ $k ] = $v;
475
- }
476
-
477
- return $result;
478
- }
479
-
480
- /**
481
- * Build an array from migrating aliased key values to their canonical key values, removing all alias keys.
482
- *
483
- * If the original array has values for both the alias and its canonical, keep the canonical's value and
484
- * discard the alias' value.
485
- *
486
- * @since 4.12.2
487
- *
488
- * @param array $original An associative array of values, such as passed shortcode arguments.
489
- * @param array $alias_map An associative array of aliases: key as alias, value as mapped canonical.
490
- * Example: [ 'alias' => 'canonical', 'from' => 'to', 'that' => 'becomes_this' ]
491
- *
492
- * @return array
493
- */
494
- public static function parse_associative_array_alias( array $original, array $alias_map ) {
495
- // Ensure array values.
496
- $original = (array) $original;
497
- $alias_map = static::filter_to_flat_scalar_associative_array( (array) $alias_map );
498
-
499
- // Fail gracefully if alias array wasn't setup as [ 'from' => 'to' ].
500
- if ( empty( $alias_map ) ) {
501
- return $original;
502
- }
503
-
504
- $result = $original;
505
-
506
- // Parse aliases.
507
- foreach ( $alias_map as $from => $to ) {
508
- // If this alias isn't in use, go onto the next.
509
- if ( ! isset( $result[ $from ] ) ) {
510
- continue;
511
- }
512
-
513
- // Only allow setting alias value if canonical value is not already present.
514
- if ( ! isset( $result[ $to ] ) ) {
515
- $result[ $to ] = $result[ $from ];
516
- }
517
-
518
- // Always remove the alias key.
519
- unset( $result[ $from ] );
520
- }
521
-
522
- return $result;
523
- }
524
  }
525
  }
442
 
443
  return $default;
444
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
445
  }
446
  }
common/src/Tribe/Utils/Element_Attributes.php DELETED
@@ -1,241 +0,0 @@
1
- <?php
2
- namespace Tribe\Utils;
3
-
4
- /**
5
- * Class Element_Attributes to handle HTML attributes for elements.
6
- *
7
- * @since 4.12.3
8
- *
9
- * @package Tribe\Utils
10
- */
11
- class Element_Attributes {
12
- /**
13
- * Store the results of parsing the attributes.
14
- *
15
- * @since 4.12.3
16
- *
17
- * @var array<string,string>
18
- */
19
- protected $results = [];
20
-
21
- /**
22
- * Stores the arguments passed.
23
- *
24
- * @since 4.12.3
25
- *
26
- * @var array
27
- */
28
- protected $arguments = [];
29
-
30
- /**
31
- * Setups an instance of Element Attributes.
32
- *
33
- * @since 4.12.3
34
- *
35
- * @return void
36
- */
37
- public function __construct() {
38
- $this->arguments = func_get_args();
39
- }
40
-
41
- /**
42
- * When invoked this class will return the full HTML attributes.
43
- *
44
- * @since 4.12.3
45
- *
46
- * @return string In the format ` attribute1="value1" attribute2="value2" `
47
- */
48
- public function __invoke() {
49
- $this->arguments = func_get_args();
50
- return $this->get_attributes();
51
- }
52
-
53
-
54
- /**
55
- * When cast to string an instance will return the full HTML attributes.
56
- *
57
- * @since 4.12.3
58
- *
59
- * @return string In the format ` attribute1="value1" attribute2="value2" `
60
- */
61
- public function __toString() {
62
- return $this->get_attributes();
63
- }
64
-
65
- /**
66
- * Gets the full HTML attributes for this instance of Element Attributes.
67
- * It will contain a space on each end of the attribute.
68
- *
69
- * @since 4.12.3
70
- *
71
- * @return string In the format ` attribute1="value1" attribute2="value2" `
72
- */
73
- public function get_attributes() {
74
- $attributes = $this->get_attributes_as_string();
75
-
76
- // Bail with empty string when no attributes are present
77
- if ( ! $attributes ) {
78
- return '';
79
- }
80
-
81
- return " {$attributes} ";
82
- }
83
-
84
- /**
85
- * Gets a space separated string of all attributes to be printed.
86
- *
87
- * @since 4.12.3
88
- *
89
- * @return string
90
- */
91
- public function get_attributes_as_string() {
92
- return implode( ' ', $this->get_attributes_array() );
93
- }
94
-
95
- /**
96
- * Get the array of attributes to be printed.
97
- *
98
- * @since 4.12.3
99
- *
100
- * @return array
101
- */
102
- public function get_attributes_array() {
103
- $this->results = [];
104
- $attributes = [];
105
-
106
- $this->parse_array( $this->arguments );
107
-
108
- foreach ( $this->results as $key => $val ) {
109
- if ( ! $val && '0' !== $val ) {
110
- continue;
111
- }
112
-
113
- if ( is_bool( $val ) ) {
114
- $attributes[] = esc_attr( $key );
115
- } else {
116
- // Remove double quotes that might be surrounding the value.
117
- trim( $val, '"' );
118
- $attributes[] = esc_attr( $key ) . '="' . esc_attr( $val ) . '"';
119
- }
120
- }
121
-
122
- return $attributes;
123
- }
124
-
125
- /**
126
- * Parse arguments or argument for this instance, and store values on results.
127
- *
128
- * @since 4.12.3
129
- *
130
- * @param mixed $arguments Any possible set of arguments that this class supports.
131
- *
132
- * @return void
133
- */
134
- protected function parse( $arguments ) {
135
- if ( ! $arguments ) {
136
- return;
137
- }
138
-
139
- if ( is_numeric( $arguments ) ) { // phpcs:ignore
140
- // Bail on any numeric values.
141
- } elseif ( is_array( $arguments ) ) {
142
- // ['foo', 'bar', ...] || ['foo' => TRUE, 'bar' => FALSE, 'baz' => 'foo', ...]
143
- $this->parse_array( $arguments );
144
- } elseif ( is_string( $arguments ) ) {
145
- // 'foo bar'
146
- $this->parse_string( $arguments );
147
- } elseif ( $arguments instanceof \Closure || is_callable( $arguments ) ) {
148
- // function() {}
149
- $this->parse_callable( $arguments );
150
- } elseif ( is_object( $arguments ) ) {
151
- // stdClass
152
- $this->parse_object( $arguments );
153
- }
154
- }
155
-
156
- /**
157
- * Parse an array into an array of acceptable values for the instance.
158
- *
159
- * @since 4.12.3
160
- *
161
- * @param array $values Array of values to be parsed.
162
- *
163
- * @return void
164
- */
165
- protected function parse_array( array $values ) {
166
- foreach ( $values as $key => $value ) {
167
- if ( is_int( $key ) ) {
168
- $this->parse( $value );
169
- } elseif ( is_string( $key ) ) {
170
- if ( ! is_bool( $value ) && ! is_string( $value ) ) {
171
- throw new \UnexpectedValueException( 'Value for key ' . $key . ' must be of type boolean or string' );
172
- }
173
-
174
- $this->results[ $key ] = $value;
175
- }
176
- }
177
- }
178
-
179
- /**
180
- * Parse a string into an array of acceptable values for the instance.
181
- *
182
- * @since 4.12.3
183
- *
184
- * @param string $arguments Space separated string of attributes to be parsed.
185
- *
186
- * @return void
187
- */
188
- protected function parse_string( $arguments ) {
189
- $values = preg_split( '/\s+/', $arguments, -1, PREG_SPLIT_NO_EMPTY );
190
-
191
- // When it doesnt match, bail early.
192
- if ( ! $values ) {
193
- return;
194
- }
195
-
196
- $attrs = [];
197
-
198
- foreach ( $values as $key => $value ) {
199
- if ( preg_match( '/^(?<key>[^=]+)="*(?<value>.*?)"*$/', $value, $m ) ) {
200
- // Something like `f="boo"` or `foo=bar`.
201
- $attrs[ $m['key'] ] = $m['value'];
202
-
203
- continue;
204
- }
205
-
206
- $attrs[ $value ] = true;
207
- }
208
-
209
- $this->parse_array( $attrs );
210
- }
211
-
212
- /**
213
- * Parses an object into the array of considered attributes.
214
- *
215
- * @since 4.12.3
216
- *
217
- * @param mixed $object Object to be converted into array and parsed.
218
- *
219
- * @return void
220
- */
221
- protected function parse_object( $object ) {
222
- $this->parse_array( (array) $object );
223
- }
224
-
225
- /**
226
- * Parses a callable method or function into the array of considered attributes.
227
- *
228
- * The result of the callable will REPLACE the current attributes, callables will work like filters.
229
- *
230
- * @since 4.12.3
231
- *
232
- * @param callable $method_or_function Method or Function to be called.
233
- *
234
- * @return void
235
- */
236
- protected function parse_callable( callable $method_or_function ) {
237
- $filtered = $method_or_function( $this->results );
238
- $this->results = [];
239
- $this->parse( $filtered );
240
- }
241
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/src/admin-views/app-shop.php CHANGED
@@ -1,189 +1,95 @@
1
- <?php
2
- // $main, $products, $bundles, $extensions must be defined before loading this file
3
 
4
- $all_products = [
5
- 'for-sale' => [],
6
- 'installed' => [],
7
- ];
8
- foreach ( $products as $product ) {
9
- if ( $product->is_installed ) {
10
- $all_products['installed'][] = $product;
11
- } else {
12
- $all_products['for-sale'][] = $product;
13
- }
14
- }
15
- ?>
16
-
17
- <div id="tribe-app-shop">
18
-
19
- <div class="tribe-header">
20
- <div class="content-wrapper">
21
- <div class="logo-word-mark">
22
- <img src="<?php echo esc_url( tribe_resource_url( 'images/icons/horns.svg', false, null, $main ) ); ?>" alt="<?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?>" />
23
- <h1><span>TEC</span>&nbsp;<?php esc_html_e( 'Add-Ons', 'tribe-common' ); ?></h1>
24
- </div>
25
-
26
- <ul>
27
- <li class="selected" data-tab="tribe-all-solutions"><?php esc_html_e( 'All Solutions', 'tribe-common' ); ?></li>
28
- <li data-tab="tribe-bundles"><?php esc_html_e( 'Save with Bundles', 'tribe-common' ); ?></li>
29
- <li data-tab="tribe-extensions"><?php esc_html_e( 'Extensions', 'tribe-common' ); ?></li>
30
- </ul>
31
- </div>
32
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
- <div id="tribe-all-solutions" class="tribe-content">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  <div class="content-wrapper">
36
  <div class="addon-grid">
37
- <?php foreach ( $all_products as $status => $some_products ) : ?>
38
- <?php if ( 'for-sale' == $status ) :?>
39
- <h2><?php esc_html_e( 'One calendar. Countless ways to make it your own.', 'tribe-common' ); ?></h2>
40
- <p><?php esc_html_e( 'Calendars, ticketing, and powerful WordPress tools to manage your events from start to finish.', 'tribe-common' ); ?></p>
41
- <?php else: ?>
42
- <h2 class="already-installed"><?php esc_html_e( 'Already Installed', 'tribe-common' ); ?></h2>
43
- <?php endif; ?>
44
-
45
- <?php foreach ( $some_products as $product ) : ?>
46
- <div class="tribe-addon">
47
- <div class="headline">
48
- <img src="<?php echo esc_url( tribe_resource_url( $product->logo, false, null, $main ) ); ?>" alt="<?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?>" />
49
- <h3 <?php echo ( 'installed' == $status || $product->free ) ? 'class="has-pill"' : ''; ?>><a href="<?php echo esc_url( $product->link ); ?>" target="_blank"><?php echo esc_html( $product->title ); ?></a></h3>
50
-
51
- <?php if ( 'installed' == $status ) : ?>
52
- <span class="pill active"><?php esc_html_e( 'Active', 'tribe-common' ); ?></span>
53
- <?php elseif ( $product->free ) : ?>
54
- <span class="pill free"><?php esc_html_e( 'FREE', 'tribe-common' ); ?></span>
55
- <?php endif; ?>
56
-
57
- </div>
58
- <div class="promo-image">
59
- <a href="<?php echo esc_url( $product->link ); ?>" target="_blank"><img src="<?php echo esc_url( tribe_resource_url( $product->image, false, null, $main ) ); ?>" /></a>
60
- </div>
61
-
62
- <div class="description">
63
- <p><?php echo esc_html( $product->description ); ?></p>
64
- </div>
65
-
66
- <ul class="features">
67
- <?php foreach( $product->features as $feature ) : ?>
68
- <li>
69
- <span class="check">
70
- <svg fill="none" height="12" viewBox="0 0 16 12" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m13.7357.374803-8.40784 8.402337-3.06361-3.06158c-.52424-.506-1.357557-.49877-1.872924.01626s-.522608 1.34779-.016275 1.87169l4.008209 4.00559c.52173.5212 1.36747.5212 1.8892 0l9.35244-9.34634c.5064-.5239.4991-1.356665-.0162-1.871692-.5154-.515027-1.3487-.522264-1.873-.016265z" fill="#3d54ff" fill-rule="evenodd"/></svg>
71
- </span><span class="feature-text">
72
- <?php echo esc_html( $feature ); ?>
73
- </span>
74
- </li>
75
- <?php endforeach; ?>
76
- </ul>
77
-
78
- <?php if ( 'installed' == $status ) : ?>
79
- <a class="button" href="https://m.tri.be/1aiz"><?php esc_html_e( 'Manage', 'tribe-common' ); ?></a>
80
- <?php else : ?>
81
- <a class="button" href="<?php echo esc_url( $product->link ); ?>"><?php esc_html_e( 'Learn More', 'tribe-common' ); ?></a>
82
- <?php endif; ?>
83
-
84
  </div>
85
- <?php endforeach; ?>
86
- <?php endforeach; ?>
87
- </div>
88
- </div>
89
- </div>
90
 
91
- <div id="tribe-bundles" class="tribe-content">
92
- <div class="content-wrapper">
93
- <div class="addon-grid">
94
- <h2><?php esc_html_e( 'The plugins you need at one discounted price', 'tribe-common' ); ?></h2>
95
- <p><?php esc_html_e( 'We\'ve packaged our most popular plugins into bundles jam-packed with value.', 'tribe-common' ); ?></p>
96
- <?php foreach ( $bundles as $bundle ) : ?>
97
- <div class="tribe-bundle">
98
- <div class="details">
99
- <div class="headline">
100
- <img src="<?php echo esc_url( tribe_resource_url( $bundle->logo, false, null, $main ) ); ?>" alt="<?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?>" />
101
- <h3><a href="<?php echo esc_url( $bundle->link ); ?>" target="_blank"><?php echo esc_html( $bundle->title ); ?></a></h3>
102
- </div>
103
-
104
- <p><?php echo esc_html( $bundle->description ); ?></p>
105
-
106
- <div class="cta wide">
107
- <a class="button" href="<?php echo esc_url( $bundle->link ); ?>"><?php esc_html_e( 'Save With A Bundle', 'tribe-common' ); ?></a>
108
- <span class="discount"><?php echo esc_html( $bundle->discount ); ?></span>
109
- </div>
110
- </div>
111
-
112
- <div class="includes">
113
- <h4><?php esc_html_e( 'Includes', 'tribe-common' ); ?></h4>
114
- <ul>
115
- <?php foreach ( $bundle->includes as $i => $product_key ) : ?>
116
- <?php
117
- // get $product object
118
- $product = $products[ $product_key ];
119
  ?>
 
 
 
 
 
120
 
121
- <li>
122
- <img src="<?php echo esc_url( tribe_resource_url( $product->logo, false, null, $main ) ); ?>" alt="<?php esc_attr_e( 'TEC Logo', 'tribe-common' ); ?>" />
123
- <span><?php echo esc_html( $product->title ); ?></span>
124
- </li>
125
-
126
- <?php if ( $i == 4 ) : // if there are 5 products included, then we need 2 lists ?>
127
- </ul><ul class="second">
128
- <?php endif; ?>
129
- <?php endforeach; ?>
130
- </ul>
131
- </div>
132
-
133
- <div class="cta narrow">
134
- <a class="button" href="<?php echo esc_url( $bundle->link ); ?>"><?php esc_html_e( 'Save With A Bundle', 'tribe-common' ); ?></a>
135
- <span class="discount"><?php echo esc_html( $bundle->discount ); ?></span>
136
- </div>
137
-
138
- </div>
139
- <?php endforeach; ?>
140
- </div>
141
- </div>
142
- </div>
143
-
144
- <div id="tribe-extensions" class="tribe-content">
145
- <div class="content-wrapper">
146
- <div class="addon-grid">
147
- <h2><?php esc_html_e( 'Free extensions to power up your plugins', 'tribe-common' ); ?></h2>
148
- <p><?php esc_html_e( 'Extensions are quick solutions our team came up with to solve specific issues you may need. (Just a note - extensions are not covered by our support team.)', 'tribe-common' ); ?></p>
149
- <?php foreach ( $extensions as $extension ) : ?>
150
- <div class="tribe-addon">
151
- <div class="headline">
152
- <h3 class="has-pill"><a href="<?php echo esc_url( $extension->link ); ?>" target="_blank"><?php echo esc_html( $extension->title ); ?></a></h3>
153
- <span class="pill free"><?php esc_html_e( 'FREE', 'tribe-common' ); ?></span>
154
- </div>
155
-
156
- <div class="promo-image">
157
- <a href="<?php echo esc_url( $extension->link ); ?>" target="_blank"><img src="<?php echo esc_url( tribe_resource_url( $extension->image, false, null, $main ) ); ?>" /></a>
158
  </div>
159
-
160
- <p><?php echo esc_html( $extension->description ); ?></p>
161
-
162
- <a class="button" href="<?php echo esc_url( $extension->link ); ?>"><?php esc_html_e( 'Download', 'tribe-common' ); ?></a>
163
  </div>
164
- <?php endforeach; ?>
165
-
166
- <a class="button secondary" href="https://m.tri.be/1ajd"><?php esc_html_e( 'Browse Extensions', 'tribe-common' ); ?></a>
167
 
 
 
 
168
  </div>
169
-
170
  </div>
171
- </div>
172
-
 
173
  </div>
174
-
175
- <?php // this is inline jQuery / javascript for extra simiplicity */ ?>
176
- <script type="text/javascript">
177
- jQuery( document ).ready( function($) {
178
- var current_tab = "#tribe-all-solutions";
179
- $( 'body' ).on( "click", ".tribe-header li", function() {
180
- var tab = "#" + $( this ).data( "tab" );
181
- $( current_tab ).hide();
182
- $( '.tribe-header li' ).removeClass( "selected" );
183
- $( this ).addClass( "selected" );
184
-
185
- $( tab ).show();
186
- current_tab = tab;
187
- } );
188
- } );
189
- </script>
1
+ <div id="tribe-app-shop" class="wrap">
 
2
 
3
+ <div class="header">
4
+ <h1><?php esc_html_e( 'Events Add-Ons', 'tribe-common' ); ?></h1>
5
+ <a class="button" href="https://theeventscalendar.com/?utm_campaign=in-app&utm_source=addonspage&utm_medium=top-banner" target="_blank"><?php esc_html_e( 'Browse All Add-Ons', 'tribe-common' ); ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  </div>
7
+ <?php
8
+ $all_products = array(
9
+ 'for-sale' => array(),
10
+ 'installed' => array(),
11
+ );
12
+ foreach ( $products as $product ) {
13
+ if ( $product->is_installed ) {
14
+ $all_products['installed'][] = $product;
15
+ } else {
16
+ $all_products['for-sale'][] = $product;
17
+ }
18
+ }
19
 
20
+ $products = array();
21
+ foreach ( $all_products as $type => $products ) {
22
+ if ( empty( $products ) ) {
23
+ continue;
24
+ }
25
+
26
+ $button_label = esc_html__( 'Buy This Add-On', 'tribe-common' );
27
+ $button_class = 'button-primary';
28
+ if ( 'installed' === $type ) {
29
+ ?><h1 class="tribe-installed-headline"><?php esc_html_e( 'Installed Add-Ons', 'tribe-common' ); ?></h1><?php
30
+ $button_class = 'button-disabled';
31
+ $button_label = '<span class="dashicons dashicons-yes"></span>' . esc_html__( 'Installed', 'tribe-common' );
32
+ }
33
+
34
+ ?>
35
  <div class="content-wrapper">
36
  <div class="addon-grid">
37
+ <?php
38
+
39
+ $count = count( $products );
40
+
41
+ switch ( $count ) {
42
+ case 0:
43
+ case 3:
44
+ case 6:
45
+ $wide_indexes = array();
46
+ break;
47
+
48
+ case 2:
49
+ $wide_indexes = array( 0, 1 );
50
+ break;
51
+
52
+ case 5:
53
+ $wide_indexes = array( 0, 4 );
54
+ break;
55
+
56
+ case 1:
57
+ case 4:
58
+ case 7:
59
+ default:
60
+ $wide_indexes = array( 0 );
61
+ }
62
+
63
+ foreach ( $products as $i => $product ) {
64
+ ?>
65
+ <div class="tribe-addon<?php echo in_array( $i, $wide_indexes ) ? ' first' : ''; ?>">
66
+ <div class="thumb">
67
+ <a href="<?php echo esc_url( $product->link ); ?>" target="_blank"><img src="<?php echo esc_url( tribe_resource_url( $product->image, false, null, $main ) ); ?>" /></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  </div>
69
+ <div class="caption">
70
+ <h4><a href="<?php echo esc_url( $product->link ); ?>" target="_blank"><?php echo esc_html( $product->title ); ?></a></h4>
 
 
 
71
 
72
+ <div class="description">
73
+ <p><?php echo $product->description; ?></p>
74
+ <?php
75
+ if ( isset( $product->requires ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  ?>
77
+ <p><strong><?php esc_html_e( 'Requires:', 'tribe-common' );?></strong> <?php echo esc_html( $product->requires ); ?></p>
78
+ <?php
79
+ }
80
+ ?>
81
+ </div>
82
 
83
+ <a class="button <?php esc_attr_e( $button_class ); ?>" href="<?php echo esc_url( $product->link ); ?>"><?php echo $button_label; // escaped above ?></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  </div>
 
 
 
 
85
  </div>
 
 
 
86
 
87
+ <?php
88
+ }
89
+ ?>
90
  </div>
 
91
  </div>
92
+ <?php
93
+ }
94
+ ?>
95
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
common/src/functions/template-tags/html.php CHANGED
@@ -2,7 +2,6 @@
2
  /**
3
  * HTML functions (template-tags) for use in WordPress templates.
4
  */
5
- use Tribe\Utils\Element_Attributes;
6
  use Tribe\Utils\Element_Classes;
7
 
8
  /**
@@ -26,41 +25,13 @@ function tribe_get_classes() {
26
  *
27
  * @param mixed $classes,... unlimited Any amount of params to be rendered as classes.
28
  *
29
- * @return void
30
  */
31
  function tribe_classes() {
32
  $element_classes = new Element_Classes( func_get_args() );
33
  echo $element_classes->get_attribute();
34
  }
35
 
36
- /**
37
- * Parse input values into a valid array of attributes to be used in the templates.
38
- *
39
- * @since 4.12.3
40
- *
41
- * @param mixed $attributes,... unlimited Any amount of params to be rendered as attributes.
42
- *
43
- * @return array<string> An array of the parsed string attributes.
44
- */
45
- function tribe_get_attributes() {
46
- $element_attributes = new Element_Attributes( func_get_args() );
47
- return $element_attributes->get_attributes_array();
48
- }
49
-
50
- /**
51
- * Parse input values into a valid html attributes to be used in the templates.
52
- *
53
- * @since 4.12.3
54
- *
55
- * @param mixed $attributes,... unlimited Any amount of params to be rendered as attributes.
56
- *
57
- * @return void
58
- */
59
- function tribe_attributes() {
60
- $element_attributes = new Element_Attributes( func_get_args() );
61
- echo $element_attributes->get_attributes();
62
- }
63
-
64
  /**
65
  * Get attributes for required fields.
66
  *
2
  /**
3
  * HTML functions (template-tags) for use in WordPress templates.
4
  */
 
5
  use Tribe\Utils\Element_Classes;
6
 
7
  /**
25
  *
26
  * @param mixed $classes,... unlimited Any amount of params to be rendered as classes.
27
  *
28
+ * @return string
29
  */
30
  function tribe_classes() {
31
  $element_classes = new Element_Classes( func_get_args() );
32
  echo $element_classes->get_attribute();
33
  }
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  /**
36
  * Get attributes for required fields.
37
  *
common/src/functions/template-tags/post.php CHANGED
@@ -30,10 +30,7 @@ function tribe_get_the_content( $more_link_text = null, $strip_teaser = false, $
30
  $content = get_the_content( $more_link_text, $strip_teaser );
31
  }
32
 
33
- $has_blocks = function_exists( 'has_blocks' ) && has_blocks( $content );
34
- // If blocks are present we need to run the content filter.
35
-
36
- if ( $has_blocks || ! doing_filter( 'the_content' ) ) {
37
  /**
38
  * Filters the post content.
39
  *
@@ -97,4 +94,4 @@ function tribe_get_post_class( $class, $post ) {
97
  }
98
 
99
  return array_merge( $class, $post_classes[ $post_id ] );
100
- }
30
  $content = get_the_content( $more_link_text, $strip_teaser );
31
  }
32
 
33
+ if ( ! doing_filter( 'the_content' ) ) {
 
 
 
34
  /**
35
  * Filters the post content.
36
  *
94
  }
95
 
96
  return array_merge( $class, $post_classes[ $post_id ] );
97
+ }
common/src/resources/css/app-shop.min.css CHANGED
@@ -1 +1 @@
1
- body.tribe_events_page_tribe-app-shop{background-color:#f7f7f4}body.tribe_events_page_tribe-app-shop .update-nag{display:none}body.tribe_events_page_tribe-app-shop #wpcontent{padding:0}#tribe-app-shop{color:#0f1031;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}#tribe-app-shop a{text-decoration:none}#tribe-app-shop .content-wrapper{margin:0 auto;width:360px;max-width:1060px}#tribe-app-shop .tribe-header{background-color:#fff;border-bottom:1px solid hsla(240,5%,89%,.5);height:72px;margin:0 auto;position:relative;text-align:center;width:100%}#tribe-app-shop .tribe-header .logo-word-mark{margin:auto}#tribe-app-shop .tribe-header h1{display:inline-block;font-size:18px;font-weight:400;line-height:22px;margin-right:12px;vertical-align:middle}#tribe-app-shop .tribe-header h1 span{font-weight:700}#tribe-app-shop .tribe-header img{display:inline-block;height:46px;margin:9px 11px 9px 22px;vertical-align:middle}#tribe-app-shop .tribe-header ul{display:none;margin:0 auto;padding:0 14px}#tribe-app-shop .tribe-header ul li{cursor:pointer;display:inline-block;font-size:16px;font-weight:500;line-height:20px;margin:0 6px;padding:24px 0 28px;position:relative;text-align:center}#tribe-app-shop .tribe-header ul li.selected,#tribe-app-shop .tribe-header ul li:hover{color:#334aff}#tribe-app-shop .tribe-header ul li.selected:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}#tribe-app-shop .tribe-content{padding-top:54px}#tribe-app-shop .addon-grid>p{font-size:18px;font-weight:400;line-height:28px;margin:0 0 40px;padding:0 20px;text-align:center}#tribe-app-shop .addon-grid h2{font-size:34px;font-weight:500;line-height:42px;margin:0 0 13px;text-align:center}#tribe-app-shop .addon-grid h2.already-installed{margin-bottom:40px}#tribe-app-shop .addon-grid .tribe-addon{padding:28px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-addon .headline{height:40px;margin-bottom:12px}#tribe-app-shop .addon-grid .tribe-addon .headline img{height:40px;margin-right:8px}#tribe-app-shop .addon-grid .tribe-addon .headline a{display:table-cell}#tribe-app-shop .addon-grid .tribe-addon .headline h3{display:table;float:left;font-size:15px;font-weight:700;height:36px;line-height:18px}#tribe-app-shop .addon-grid .tribe-addon .headline h3.has-pill{max-width:140px}#tribe-app-shop .addon-grid .tribe-addon .description{display:table;min-height:48px}#tribe-app-shop .addon-grid .tribe-addon .description p{display:table-cell;font-size:15px;font-weight:500;line-height:24px;margin:0;vertical-align:bottom}#tribe-app-shop .addon-grid .tribe-addon .features{min-height:142px;margin-bottom:16px}#tribe-app-shop .addon-grid .tribe-addon .features li{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;margin-bottom:4px}#tribe-app-shop .addon-grid .tribe-addon .features li .check{padding-right:12px}#tribe-app-shop .addon-grid .tribe-addon .features li .feature-text{max-width:224px;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-addon .features li span{display:inline-block}#tribe-app-shop .addon-grid .tribe-addon .features li svg{color:#3d54ff;height:12px;width:16px}#tribe-app-shop .addon-grid .tribe-bundle{padding:28px 32px 36px;width:calc(100% - 40px)}#tribe-app-shop .addon-grid .tribe-bundle .details{display:inline-block;width:100%}#tribe-app-shop .addon-grid .tribe-bundle .details .headline img{height:60px;margin-right:12px;width:60px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{display:table-cell;font-size:17px;font-weight:700;letter-spacing:1px;line-height:21px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline h3{display:table;height:60px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:14px;line-height:22px;margin:0;padding-top:4px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:none;margin:24px 0 0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .button{display:inline-block}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide .discount{display:table-cell;height:20px;padding-left:16px;text-align:left;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-bundle .cta .button{display:block;margin:auto}#tribe-app-shop .addon-grid .tribe-bundle .cta .discount{color:#007363;font-size:14px;font-weight:700;letter-spacing:1px;line-height:58px;margin-left:11px;width:100%;display:block;text-align:center}#tribe-app-shop .addon-grid .tribe-bundle .includes{display:inline-block;padding:0 0 28px;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{font-size:12px;font-weight:700;letter-spacing:1px;line-height:15px;margin:24px 0 8px;text-transform:uppercase}#tribe-app-shop .addon-grid .tribe-bundle .includes ul{display:inline-block;margin:0;vertical-align:top}#tribe-app-shop .addon-grid .tribe-bundle .includes ul.second{margin-left:30px}#tribe-app-shop .addon-grid .tribe-bundle .includes li{color:#0f1031;font-size:14px;font-weight:500;height:40px;margin-bottom:8px}#tribe-app-shop .addon-grid .tribe-bundle .includes li img{float:left;height:40px;width:40px;margin-right:16px}#tribe-app-shop .addon-grid .tribe-bundle .includes li span{float:left;line-height:40px}#tribe-app-shop .addon-grid .tribe-addon,#tribe-app-shop .addon-grid .tribe-bundle{background-color:#fff;border-radius:16px;border:1px solid #e1e1e4;box-sizing:border-box;display:inline-block;margin:0 20px 40px;position:relative;vertical-align:top}#tribe-app-shop .addon-grid .tribe-addon .headline img,#tribe-app-shop .addon-grid .tribe-bundle .headline img{float:left}#tribe-app-shop .addon-grid .tribe-addon .headline a,#tribe-app-shop .addon-grid .tribe-bundle .headline a{color:#0f1031;vertical-align:middle}#tribe-app-shop .addon-grid .tribe-addon .headline h3,#tribe-app-shop .addon-grid .tribe-bundle .headline h3{letter-spacing:1px;margin:0}#tribe-app-shop .addon-grid .tribe-addon .headline .pill,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill{border-radius:100px;display:inline-block;float:right;font-size:10px;font-weight:700;letter-spacing:1px;line-height:12px;margin-top:8px;padding:5px 0;text-align:center;text-transform:uppercase;width:62px}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.free,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.free{background:rgba(80,176,120,.28);color:#007363}#tribe-app-shop .addon-grid .tribe-addon .headline .pill.active,#tribe-app-shop .addon-grid .tribe-bundle .headline .pill.active{background:rgba(61,84,255,.16);color:#3d54ff}#tribe-app-shop .addon-grid .tribe-addon .promo-image img,#tribe-app-shop .addon-grid .tribe-bundle .promo-image img{width:255px}#tribe-app-shop .addon-grid .tribe-addon p,#tribe-app-shop .addon-grid .tribe-bundle p{color:#0f1031;text-align:left}#tribe-app-shop .addon-grid .button{background:#3d54ff;border-radius:100px;color:#fff;font-size:16px;font-weight:700;letter-spacing:1px;line-height:20px;margin-bottom:13px;padding:18px 0;text-align:center;width:255px}#tribe-app-shop .addon-grid .button:hover{background:#1c39bb}#tribe-app-shop .addon-grid .button.secondary{background:#f7f7f4;border:1px solid #0f1031;color:#0f1031;display:block;margin:auto}#tribe-app-shop .addon-grid .button.secondary:hover{color:#fff;background:#3d54ff}#tribe-app-shop #tribe-extensions p{color:#0f1031;font-size:15px;font-weight:400;line-height:24px;padding-bottom:16px}#tribe-bundles,#tribe-extensions{display:none}.branch-4-9 #tribe-app-shop .addon-grid .button{height:58px;box-shadow:none}@media screen and (min-width:710px){#tribe-app-shop .content-wrapper{width:710px}#tribe-app-shop .tribe-header .logo-word-mark{margin:0;position:absolute}#tribe-app-shop .tribe-header ul{display:block;float:right}#tribe-app-shop .addon-grid .tribe-addon{width:310px}#tribe-app-shop .addon-grid .tribe-bundle .details .headline a{font-size:20px;line-height:24px}#tribe-app-shop .addon-grid .tribe-bundle .details p{font-size:16px;line-height:26px}}@media screen and (min-width:1217px){#tribe-app-shop .content-wrapper{width:100%}#tribe-app-shop .tribe-header ul{float:none}#tribe-app-shop .tribe-header ul li{margin:0 12px}#tribe-app-shop .addon-grid .tribe-bundle .details{width:502px}#tribe-app-shop .addon-grid .tribe-bundle .cta{margin-top:0}#tribe-app-shop .addon-grid .tribe-bundle .cta.wide{display:table}#tribe-app-shop .addon-grid .tribe-bundle .cta.narrow{display:none}#tribe-app-shop .addon-grid .tribe-bundle .includes{padding:10px 0 0 50px}#tribe-app-shop .addon-grid .tribe-bundle .includes h4{margin:16px 0 19px}}
1
+ #tribe-app-shop{max-width:960px}#tribe-app-shop .addon-grid{width:100%}#tribe-app-shop .header h1{display:inline-block}#tribe-app-shop .header .button{margin-top:10px}#tribe-app-shop .tribe-addon{background-color:#fff;border-bottom:1px solid #dfdfdf;display:inline-block;margin:0 15px 15px 0;overflow:hidden;padding:0;position:relative;vertical-align:top;width:300px;border-radius:3px 3px 3px 3px;box-sizing:border-box}#tribe-app-shop .tribe-addon h4{font-size:1.17em;margin:15px 0}#tribe-app-shop .tribe-addon h4 a{text-decoration:none}#tribe-app-shop .tribe-addon .button{bottom:15px;display:block;position:absolute}#tribe-app-shop .tribe-addon .button-disabled{padding-left:3px}#tribe-app-shop .tribe-addon .button-disabled .dashicons{font-size:28px;padding-right:9px}#tribe-app-shop .tribe-addon .caption{padding:0 15px 45px}#tribe-app-shop .tribe-addon .thumb img{height:228px;max-width:100%;width:300px}#tribe-app-shop .tribe-addon.first{margin:20px 0;overflow:hidden;padding:0;width:937px}#tribe-app-shop .tribe-addon.first h4{font-size:20px;line-height:1.4;margin:15px 0 0}#tribe-app-shop .tribe-addon.first .caption{display:inline-block;padding-left:20px;width:600px}#tribe-app-shop .tribe-addon.first .thumb{float:left;height:228px;width:300px}#tribe-app-shop .tribe-installed-headline{margin-bottom:20px}
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{height:18px;margin:10px 0;width:250px}#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,.tribe_welcome_page{max-width:850px}.tribe_welcome_page.wrap h1{font-size:3em;line-height:1.2;margin-top:1em}.tribe_welcome_page.wrap h1:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:.9em;line-height:1;margin-right:5px;position:relative;top:4px}.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_welcome_page .tribe-half-column h4,.tribe_welcome_page h2{font-size:24px;line-height:1.2;margin-bottom:20px}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:15px}.tribe_welcome_page li{font-size:14px;margin-bottom:10px}p.tribe-welcome-message{font-size:18px;font-weight:400}.tribe_welcome_page .tribe-half-column h4{margin-top:1em}.tribe_welcome_page .tribe-half-column h4:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:21px;line-height:1;margin-right:10px;position:relative;top:2px}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-sos]:before{content:"\f468"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-welcome-learn-more]:before{content:"\f118"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-megaphone]:before{content:"\f488"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-heart]:before{content:"\f487"}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_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}@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}}
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-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{height:18px;margin:10px 0;width:250px}#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,.tribe_welcome_page{max-width:850px}.tribe_welcome_page.wrap h1{font-size:3em;line-height:1.2;margin-top:1em}.tribe_welcome_page.wrap h1:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:.9em;line-height:1;margin-right:5px;position:relative;top:4px}.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_welcome_page .tribe-half-column h4,.tribe_welcome_page h2{font-size:24px;line-height:1.2;margin-bottom:20px}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:15px}.tribe_welcome_page li{font-size:14px;margin-bottom:10px}p.tribe-welcome-message{font-size:18px;font-weight:400}.tribe_welcome_page .tribe-half-column h4{margin-top:1em}.tribe_welcome_page .tribe-half-column h4:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:21px;line-height:1;margin-right:10px;position:relative;top:2px}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-sos]:before{content:"\f468"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-welcome-learn-more]:before{content:"\f118"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-megaphone]:before{content:"\f488"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-heart]:before{content:"\f487"}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_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}@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}}
common/src/resources/images/app-shop-banner.jpg ADDED
Binary file
common/src/resources/images/app-shop-community-tickets.jpg ADDED
Binary file
common/src/resources/images/app-shop-community.jpg ADDED
Binary file
common/src/resources/images/app-shop-eventbrite.jpg ADDED
Binary file
common/src/resources/images/app-shop-filter-bar.jpg ADDED
Binary file
common/src/resources/images/app-shop-ical.jpg ADDED
Binary file
common/src/resources/images/app-shop-image-widget-plus.jpg ADDED
Binary file
common/src/resources/images/app-shop-pro.jpg ADDED
Binary file
common/src/resources/images/app-shop-promoter.jpg ADDED
Binary file
common/src/resources/images/app-shop-tickets-plus.jpg ADDED
Binary file
common/src/resources/images/donate-link-screenshot.png CHANGED
Binary file
common/src/resources/images/gutenberg-admin-notice-TEC.png CHANGED
Binary file
common/src/resources/images/gutenberg-admin-notice-tickets.png CHANGED
Binary file
common/src/resources/images/icons/caret-down.svg CHANGED
@@ -1 +1 @@
1
- <svg height="8" width="12" xmlns="http://www.w3.org/2000/svg"><path d="m1.21.85 4.79 4.79 4.79-4.79 1.15 1.15-5.94 5.94-5.94-5.94z" fill="#141827"/></svg>
1
+ <svg width="12" height="8" xmlns="http://www.w3.org/2000/svg"><path d="M1.21.85L6 5.64 10.79.85 11.94 2 6 7.94.06 2z" fill="#141827" fill-rule="nonzero"/></svg>
common/src/resources/images/icons/caret-up.svg CHANGED
@@ -1 +1 @@
1
- <svg height="8" width="12" xmlns="http://www.w3.org/2000/svg"><path d="m1.21 7.15 4.79-4.79 4.79 4.79 1.15-1.15-5.94-5.94-5.94 5.94z" fill="#141827"/></svg>
1
+ <svg width="12" height="8" xmlns="http://www.w3.org/2000/svg"><path d="M1.21 7.15L6 2.36l4.79 4.79L11.94 6 6 .06.06 6z" fill="#141827" fill-rule="nonzero"/></svg>
common/src/resources/images/icons/horns.svg DELETED
@@ -1 +0,0 @@
1
- <svg fill="none" height="46" viewBox="0 0 37 46" width="37" xmlns="http://www.w3.org/2000/svg"><g stroke="#0f1031" 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/icons/list.svg CHANGED
@@ -1 +1 @@
1
- <svg height="18" width="21" xmlns="http://www.w3.org/2000/svg"><g fill="#141827"><path d="m19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467h-12.756c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zm18.045 5.773c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467h-12.756c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466zm-18.045.936a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/><path d="m19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466h-12.756c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467zm-18.045.935a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/></g></svg>
1
+ <svg width="21" height="18" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.883 3.272c.342 0 .622-.21.622-.467v-.464c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.464c0 .257.28.467.622.467h12.756zM1.838 4.207a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5zM19.883 9.98c.342 0 .622-.21.622-.466v-.465c0-.257-.28-.467-.622-.467H7.127c-.342 0-.622.21-.622.467v.465c0 .256.28.466.622.466h12.756zM1.838 10.916a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/><g><path d="M19.883 16.689c.342 0 .622-.21.622-.467v-.465c0-.256-.28-.466-.622-.466H7.127c-.342 0-.622.21-.622.466v.465c0 .257.28.467.622.467h12.756zM1.838 17.624a1.75 1.75 0 1 0 0-3.5 1.75 1.75 0 0 0 0 3.5z"/></g></g></svg>
common/src/resources/images/icons/map.svg CHANGED
@@ -1 +1 @@
1
- <svg height="21" width="22" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m13.921 11.632h3.579l3.588 8.421h-20.088l3.488-8.421h4.016" stroke="#141827" stroke-linejoin="round"/><g fill-rule="nonzero"><path d="m11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468s-5.138 2.453-5.138 5.467c0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z" fill="#141827" stroke="#141827" stroke-width=".4"/><path d="m12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826s.78 1.826 1.74 1.826c.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z" fill="#000" stroke="#000" stroke-width=".7"/></g></g></svg>
1
+ <svg width="22" height="21" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path stroke="#141827" stroke-linejoin="round" d="M13.921 11.632H17.5l3.588 8.421H1l3.488-8.421h4.016"/><path d="M11.32 15.506c.2-.248 4.93-6.108 4.93-9.04 0-3.015-2.305-5.468-5.138-5.468-2.833 0-5.138 2.453-5.138 5.467 0 2.933 4.729 8.793 4.93 9.041a.268.268 0 0 0 .208.101c.08 0 .155-.037.207-.101zm-4.797-9.04c0-2.693 2.058-4.883 4.589-4.883 2.53 0 4.588 2.19 4.588 4.882 0 2.387-3.667 7.22-4.588 8.397-.922-1.177-4.589-6.009-4.589-8.397z" stroke="#141827" stroke-width=".4" fill="#141827" fill-rule="nonzero"/><path d="M12.85 6.477c0-1.007-.78-1.826-1.738-1.826-.96 0-1.74.819-1.74 1.826 0 1.007.78 1.826 1.74 1.826.959 0 1.739-.82 1.739-1.826zm-3.15 0c0-.817.633-1.482 1.412-1.482.778 0 1.41.665 1.41 1.482s-.632 1.482-1.41 1.482c-.779 0-1.412-.665-1.412-1.482z" stroke="#000" stroke-width=".7" fill="#000" fill-rule="nonzero"/></g></svg>
common/src/resources/images/icons/photo.svg CHANGED
@@ -1 +1 @@
1
- <svg height="17" width="20" xmlns="http://www.w3.org/2000/svg"><g fill="#141827"><path d="m19.348.11h-18.714a.509.509 0 0 0 -.52.508v15.017c0 .284.23.508.52.508h18.714c.29 0 .52-.224.52-.508v-15.017a.509.509 0 0 0 -.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0 -1.227-.528 1.6 1.6 0 0 0 -1.206.548l-4.657 5.175v-9.904h17.632zm-17.634 13.963v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603h-17.652v-.02z"/><path d="m14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934s-.414.933-.906.933-.906-.426-.906-.933.414-.934.906-.934z"/></g></svg>
1
+ <svg width="20" height="17" xmlns="http://www.w3.org/2000/svg"><g fill="#141827" fill-rule="nonzero"><path d="M19.348.11H.634a.509.509 0 0 0-.52.508v15.017c0 .284.23.508.52.508h18.714c.29 0 .52-.224.52-.508V.618a.509.509 0 0 0-.52-.508zm-.54 1.035v10.837l-2.87-3.084c-.583-.61-1.664-.61-2.246 0l-1.393 1.481-4.034-4.525a1.625 1.625 0 0 0-1.227-.528 1.6 1.6 0 0 0-1.206.548l-4.657 5.175V1.145h17.632zM1.174 15.108v-2.496l5.448-6.089a.529.529 0 0 1 .415-.182c.146 0 .333.06.437.182l4.429 4.972c.104.102.25.183.395.183.166.02.291-.06.395-.162l1.788-1.908c.167-.183.5-.183.686 0l3.66 3.917v1.603H1.175v-.02z"/><path d="M14.19 5.757c1.044 0 1.91-.872 1.91-1.968s-.846-1.969-1.91-1.969c-1.062 0-1.909.873-1.909 1.969s.866 1.968 1.91 1.968zm0-2.902c.493 0 .907.427.907.934 0 .507-.414.933-.906.933-.492 0-.906-.426-.906-.933 0-.507.414-.934.906-.934z"/></g></svg>
common/src/resources/images/logo/bundle-community-manager.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="90" viewBox="0 0 82 90" width="82" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.5)"><path d="m16.166104 79.284389c.3708501.4419619.3438096 1.0853796-.0430249 1.4948051l-.095639.0901309-13.24592059 11.1146471c-.47595899.399377-1.18555904.3372951-1.58493606-.1386639-.37085008-.441962-.34380952-1.0853797.04302492-1.4948052l.09563902-.0901309 13.24592061-11.1146471c.475959-.399377 1.185559-.337295 1.584936.138664zm4.0940823-78.409389c2.8978653 0 4.6500531.48498444 5.6203928 1.62734799.7317536.8614804.8805731 1.6126957.8393969 3.30264202l-.0375106 1.14254537c.0349442.10865188.0538162.22451136.0538162.34477863v61.09667779c0 .2318748-.0716488.4580855-.2051424.6476782l-5.3510953 7.5998332c-.4481142.6364291-1.3916011.6364291-1.8397152 0l-5.3510954-7.5998332c-.1334935-.1895927-.2051424-.4158034-.2051424-.6476782v-61.09667779c0-.12026727.018872-.23612675.0538162-.34477863-.0029085-.16099378-.0095182-.34706954-.0198508-.60635055-.0827705-2.07700073.0168082-2.8912084.8217371-3.83883684.9703397-1.14236355 2.7225275-1.62734799 5.6203929-1.62734799zm2.8238137 64.56-2.0482194 2.4341832c-.4199479.4990507-1.1652581.5318175-1.6279773.098727l-.0946072-.0999355-1.6741961-1.9949747-1.5956427 2.174 2.8114401 3.9926803c.1929588-.531028.6783178-.9217276 1.261425-.9774469l.1439639-.006843c.6458963 0 1.1961157.4096419 1.4050266.9832944l2.7771444-3.9466848zm1.402-57.018h-8.452l-.0006427 55.84.6396365-.8705335c.4315602-.5879618 1.2999064-.6161728 1.7687199-.0574626l1.7332863 2.0669961 2.2786653-2.7063178c.4892851-.5814486 1.3888968-.5143501 1.7959194.0984207l.0665304.1137795.1692422.3321176zm-4.2258137-5.292c-2.2984275 0-3.4733866.3252145-3.9055337.83397355-.2575894.30325536-.3317166.70903233-.3035709 1.8352911l.0122756.37273535h8.393l.0129335-.37273535c.0281457-1.12625877-.0459815-1.53203574-.3035709-1.8352911-.413358-.48663909-1.50634-.80534706-3.6120787-.83214088z" fill="#0f1031" fill-rule="nonzero" transform="matrix(.76604444 .64278761 -.64278761 .76604444 60.044424 .631355)"/><path d="m23.8582322 31.5772348-6.1519432-.1756295 13.9557856-12.8356873-6.1077287 11.4711817 6.1519431.1756294-13.0936047 13.9029739z" fill="#3d54ff"/></g></svg>
 
common/src/resources/images/logo/bundle-event-importer.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="58" viewBox="0 0 82 58" width="82" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(0 .621371)"><path d="m54.5499727 35.892875-6.1519431-.1756294 13.9557856-12.8356873-6.1077288 11.4711816 6.1519432.1756295-13.0936047 13.9029739z" fill="#3d54ff"/><path d="m80.806757 18.575839v-5.2197597c.0608-3.58079976-2.8287998-6.51439959-6.4095996-6.50886299l-38.0199978.0632634c-3.5095998.0048-6.3607996 2.83759983-6.3887996 6.34879959v5.3165597z" fill="#3d54ff"/><path d="m69.2570784.875c.579899 0 1.0573199.43876095 1.1183987 1.00241886l.0066013.12258114-.0000784 3.721 4.0137695.00009226c4.1295049-.00508862 7.4763557 3.31298198 7.536273 7.39406274v34.4822886c0 4.951091-3.9435308 8.9807941-8.8609743 9.1206633l-.2643494.003755-34.8154202-.0011827c-4.9506294-.0011503-8.9803381-3.9438619-9.1215169-8.8608608l-.0038263-.2643258-.0000344-.4550164c-.000047-.6213203.5035946-1.125038 1.1249149-1.125085.579899-.0000438 1.0573531.438681 1.1184745 1.0023343l.0066106.1225807.0000343.4547931c.0010186 3.717737 2.9521143 6.7461415 6.6393116 6.8715397l.2363314.0040403 34.8151587.0011826c3.7179936 0 6.7465789-2.9507499 6.8712773-6.6381407l.0039944-.2363445-.0001096-34.2603965c.048885-2.8790665-2.2166747-5.25123402-5.0696074-5.36185425l-.2150442-.0040287-4.0152675-.00009725.0000784 3.8969994c0 .6213204-.5036796 1.125-1.125 1.125-.579899 0-1.0573198-.4387609-1.1183986-1.0024188l-.0066014-.1225812-.0000784-3.8969994-24.856.002.00056 3.8949994c0 .6213204-.5036796 1.125-1.125 1.125-.579899 0-1.0573198-.4387609-1.1183986-1.0024188l-.0066014-.1225812-.00056-3.8939994-4.6473017.00081677c-2.8776329.00393567-5.2421775 2.38458263-5.2653383 5.28437753l.0015494 20.4982622c.000047.6213203-.5035946 1.125038-1.124915 1.125085-.6213203.0000469-1.125038-.5035946-1.125085-1.124915l-.0015136-20.5073182c.0323403-4.05546953 3.2628794-7.38688902 7.2721805-7.52128305l.2414732-.00420742 4.6489505-.00081783.00056-3.724c0-.62132034.5036797-1.125 1.125-1.125.579899 0 1.0573199.43876095 1.1183987 1.00241886l.0066013.12258114-.00056 3.723 24.856-.002.0000784-3.721c0-.62132034.5036797-1.125 1.125-1.125zm-32.7472495 33.9052027.0981235.0874196 5.6568542 5.6568543c.4079584.4079584.4370983 1.0512845.0874197 1.4928668l-.0874197.0981234-5.6568542 5.6568543c-.4393399.4393398-1.1516505.4393398-1.5909903 0-.4079584-.4079584-.4370983-1.0512845-.0874197-1.4928669l.0874197-.0981234 3.7360379-3.7373308-26.753.0009717c-.6213203 0-1.125-.5036797-1.125-1.125 0-.579899.4387609-1.0573199 1.0024189-1.1183987l.1225811-.0066013 26.751-.0009717-3.7340379-3.7353874c-.4079584-.4079584-.4370983-1.0512845-.0874197-1.4928669l.0874197-.0981234c.4079584-.4079584 1.0512845-.4370983 1.4928668-.0874196zm-17.2375755-14.7844889.0981234.0874196 5.6568543 5.6568543c.4079584.4079584.4370983 1.0512845.0874197 1.4928668l-.0874197.0981234-5.6568543 5.6568543c-.4393398.4393398-1.1516504.4393398-1.5909902 0-.4079584-.4079584-.4370983-1.0512845-.0874197-1.4928668l.0874197-.0981235 3.7346134-3.7368419-19.514.0004828c-.62132034 0-1.125-.5036796-1.125-1.125 0-.579899.43876095-1.0573198 1.00241886-1.1183986l.12258114-.0066014 19.514-.0004828-3.7346134-3.7358763c-.4079584-.4079584-.4370983-1.0512845-.0874197-1.4928668l.0874197-.0981235c.4079584-.4079584 1.0512845-.4370983 1.4928668-.0874196z" fill="#0f1031" fill-rule="nonzero"/></g></svg>
 
common/src/resources/images/logo/bundle-event-marketing.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="52" viewBox="0 0 92 52" width="92" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.541964)"><ellipse cx="55.312756" cy="26.233071" fill="#3d54ff" rx="6.78526" ry="24.233071"/><path d="m55.3127556.875c4.6468233 0 7.7721095 10.8009582 7.9057955 24.4443852l.0044643.9136855c0 14.0717361-3.1601737 25.3580707-7.9102598 25.3580707-.3387437 0-.6694017-.0573974-.9914047-.1691092-.0621771-.0018485-.1248904-.0097015-.1874528-.0230875l-.118476-.0321427-24.9680302-8.2383286c-.3307922.84953-.7681367 1.6531315-1.3008316 2.3926729-2.0199708 2.8043298-5.2605904 4.5014718-8.7834108 4.5014718-5.9747425 0-10.81822829-4.8434858-10.81822829-10.8182283 0-.9725824.12865869-1.9284968.37930192-2.8488153l-6.87674901-2.2689039c-.42261628-.139453-.71952888-.5130005-.76607948-.9482387l-.00639464-.1201014v-11.6318739c0-.4292027.24362438-.8168951.62099737-1.0058235l.11711448-.0505584 52.36794795-19.17918113c.0636163-.02329875.1279786-.04049318.1924449-.05188114.3684676-.14762954.7484792-.22401243 1.1392509-.22401243zm0 2.25c-.1469428 0-.2943753.02984478-.4418238.08828681-.0011879.00098924-.0022241.00150333-.0032614.00201597l-.0687942.02881504c-2.5825566 1.186272-5.1463804 11.08396368-5.1463804 22.98895288l.0011777.4419232c.0666028 12.4941993 2.9462923 22.6661475 5.6590821 22.6661475 2.6808745 0 5.524745-9.9340161 5.6555681-22.2261528l.0046917-.8819179c0-12.6953747-2.9155549-23.1080707-5.6602598-23.1080707zm-4.3289118 1.51920879-47.8588438 17.52679121v10.033l47.967457 15.8295467c-2.2328112-4.2667187-3.5981217-11.9696395-3.685497-20.8867905l-.0044642-.9136855c0-9.1562388 1.3379806-17.13317122 3.581348-21.58886191zm-40.5889226 34.56018101c0 4.7321018 3.8361265 8.5682283 8.5682283 8.5682283 2.7915395 0 5.3562106-1.3431417 6.957722-3.5665233.3990864-.5540525.7304033-1.1531115.9865702-1.7850796l-16.2428317-5.3588626c-.1782798.692864-.2696888 1.4108585-.2696888 2.1422372zm58.9409659-2.9328057c.3446466-.5169698 1.0431246-.6566654 1.5600943-.3120189l11.631874 7.7545827.0983319.0734884c.4351113.3634818.535357 1.0041008.2136869 1.4866059-.3446465.5169698-1.0431245.6566654-1.5600943.3120188l-11.6318739-7.7545826-.0983319-.0734884c-.4351113-.3634818-.535357-1.0041008-.213687-1.4866059zm19.5567103-11.1635134c.6213203 0 1.125.5036797 1.125 1.125 0 .579899-.438761 1.0573199-1.0024189 1.1183987l-.1225811.0066013h-17.2168395c-.6213203 0-1.125-.5036796-1.125-1.125 0-.579899.438761-1.0573198 1.0024189-1.1183986l.1225811-.0066014zm-4.5334232-17.91617145c.3216701.48250512.2214243 1.12312409-.213687 1.48660587l-.0983319.07348843-11.6318739 7.75458265c-.5169698.3446465-1.2154478.2049509-1.5600943-.3120189-.3216701-.4825051-.2214244-1.1231241.2136869-1.4866058l.0983319-.0734885 11.631874-7.75458261c.5169698-.34464652 1.2154478-.20495091 1.5600943.31201886z" fill="#0f1031" fill-rule="nonzero"/><path d="m34.8083209 24.7045451-6.1519431-.1756295 13.9557856-12.8356873-6.1077288 11.4711817 6.1519432.1756294-13.0936047 13.902974z" fill="#3d54ff"/></g></svg>
 
common/src/resources/images/logo/bundle-ultimate.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 81 67" width="81" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.333276 .621371)"><path d="m47.3924388 1.04445636c.307782-.27449544.7457226-.36091188 1.1394035-.21504976l30.3585616 11.2481066.120035.0523673c.6145741.3110445.8145343 1.1149037.3864763 1.6810475l-5.5433234 7.3303483.0005673 31.6959015c0 .4653648-.2865266.8826957-.7208205 1.0498876l-30.8441152 11.8741834c-.1163572.0447945-.2340936.0689555-.3498728.0747736h-.1757061c-.0771862-.0038787-.1552422-.0159099-.2331795-.0367721l-.1166933-.0380015-30.8441152-11.8741834c-.3948127-.1519926-.66750355-.5107117-.71382079-.9243127l-.00730374-.1255749v-14.8549478c0-.6213203.50398363-1.1249999 1.12530403-1.1249999.5798989 0 1.0573198.4387609 1.1183986 1.0024188l.0066013.1225811-.0008359 14.08177 28.594 11.008-.0004082-29.1417237-7.2138088 8.6294166c-.2789592.333672-.7220239.4737771-1.1366091.3697046l-.1233287-.0385977-30.50267225-11.4986712c-.74732682-.2817218-.9713011-1.2307209-.42879823-1.8168567l8.79547038-9.5035688c.0842052-.108375.1913363-.203446.3215624-.2780003.0076969-.0030233.0143821-.0068518.0211053-.0106113.0468355-.026763.0975103-.0501085.151181-.0704171l-.0995905.0432547c.0045879-.0022623.0091899-.0044926.0138055-.0066908.0198392-.009435.0401859-.0184141.0607891-.0267895.0096208-.0038897.0189978-.0075454.0284192-.0110737l30.5844747-11.57409878 6.1313129-6.99441622zm24.211153 21.27081994-28.594 9.331.0006113 31.4257237 28.594-11.007zm-60.2935918-.2572763-7.237 7.818 28.19 10.627 7.6245918-9.1197237zm29.4855918-11.3757237-26.4335918 10.0027237 27.522 8.961 27.454-8.958-26.2924082-9.9177237.0003789 13.9822282c0 .6213204-.5036796 1.125-1.1249999 1.125-.579899 0-1.0573199-.4387609-1.1183987-1.0024188l-.0066013-.1225812zm7.6809064-7.4742763-4.7479064 5.41627632 28.61 10.78999998 4.3509064-5.7532763z" fill="#0f1031" fill-rule="nonzero"/><path d="m57.2011536 42.4514426-5.7125187-.1781849 12.9589438-13.0224498-5.6714624 11.6380903 5.7125186.1781848-12.1583472 14.1052657z" fill="#3d54ff" transform="matrix(.9945219 -.10452846 .10452846 .9945219 -4.094644 6.292702)"/></g></svg>
 
common/src/resources/images/logo/bundle-virtual-events.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="49" viewBox="0 0 72 49" width="72" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(1.5 1)"><g fill-rule="nonzero" stroke="#0f1031" stroke-linecap="round" stroke-width="2.25"><path d="m68.340879.76204803c-12.1833605 12.53145647-12.1833605 32.98821247 0 45.51966897" stroke-linejoin="round" transform="matrix(-1 0 0 1 127.544238 0)"/><path d="m54.7200013 9.16151076c-7.7051523 7.92529954-7.7051523 20.79544404.065856 28.78848114" transform="matrix(-1 0 0 1 103.7352 0)"/><path d="m9.93651509.76204803c-12.1833605 12.53145647-12.1833605 32.98821247 0 45.51966897" stroke-linejoin="round"/><path d="m19.6674066 9.16151076c-7.7051523 7.92529954-7.7051523 20.79544404.065856 28.78848114"/></g><path d="m33.72188 22.9017711-6.1519432-.1756295 13.9557856-12.83568733-6.1077287 11.47118173 6.1519431.1756294-13.0936047 13.9029739z" fill="#3d54ff"/></g></svg>
 
common/src/resources/images/logo/community-events.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 77 67" width="77" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.711207 -.5)"><path d="m74.8415213 21.289469v-6.3639746c.0692026-4.0756679-3.2197412-7.41469247-7.295409-7.40836384l-43.2743778.07197956c-3.994628.00546336-7.2398649 3.22975738-7.2717345 7.22620648v6.4741524z" fill="#3d54ff"/><g fill-rule="nonzero"><path d="m61.6956722.875c.579899 0 1.0573199.43876095 1.1183987 1.00241886l.0066013.12258114-.0006364 4.391 4.7246775-.00013573c4.6198495-.00573816 8.3631847 3.71029753 8.4223303 8.27990323v40.3335803c0 5.0396027-4.0860433 9.1248847-9.1256432 9.1248847l-29.8162643-.0019166c-.6213203-.0001106-1.1249102-.50388-1.1247996-1.1252003.0001107-.6213204.5038801-1.1249103 1.1252004-1.1247996l29.8158933.0019165c3.7178559.0000517 6.7464776-2.9510376 6.8711016-6.6385471l.0039895-.2363518-.0001198-40.3267165c-.0636494-3.2652541-2.6757554-5.91789171-5.9413141-6.03286708l-.2288661-.00387998-4.7261855.00012996.0006364 4.5907612c0 .6213203-.5036796 1.125-1.125 1.125-.579899 0-1.0573199-.438761-1.1183986-1.0024189l-.0066014-.1225811-.0006364-4.5907612-28.601.003.0001237 4.5877612c0 .6213203-.5036797 1.125-1.125 1.125-.579899 0-1.0573199-.438761-1.1183986-1.0024189l-.0066014-.1225811-.0001237-4.5877612-5.4457627.00106368c-3.2864001.00449474-5.9982604 2.66139402-6.1424447 5.94492952l-.0058285.2248247.0036423 8.2162692c.0002754.6213203-.5031809 1.1252232-1.1245012 1.1254986-.5798989.0002571-1.0575143-.4382922-1.1188429-1.001923l-.0066557-.1225782-.0036066-8.2257389c.0361866-4.5378008 3.6550217-8.26463866 8.1417171-8.40706572l.2548725-.00421514 5.4474104-.00106474.0001237-4.394c0-.62132034.5036797-1.125 1.125-1.125.579899 0 1.0573199.43876095 1.1183987 1.00241886l.0066013.12258114-.0001237 4.394 28.601-.003.0006364-4.391c0-.62132034.5036797-1.125 1.125-1.125z" fill="#0f1031"/><path d="m40.8449849 50.9309813c4.3023976 0 6.8121296-2.0555899 6.8121296-5.0433661 0-2.1990032-1.027795-3.4658203-2.8204607-4.0155711 1.6970568-.5975552 2.5097319-1.8643723 2.5097319-3.776549 0-2.7726563-2.2707098-4.7565396-6.3340854-4.7565396-4.2545932 0-6.6209119 2.2229054-6.6209119 5.5692147v.3346309h2.3424165v-.2629243c0-2.0794922 1.5297414-3.5614291 4.2067888-3.5614291 2.6531452 0 3.9916689 1.2190126 3.9916689 2.9160695 0 1.7687634-1.0755994 2.748754-3.4419181 2.748754h-2.2707098v1.8643723h2.2707098c2.3902209 0 3.6809402.6453597 3.6809402 2.7009496 0 1.9121768-1.6731546 3.1789938-4.350202 3.1789938-2.9877762 0-4.3502021-1.1234038-4.3502021-3.6809402v-.3346309h-2.3902209v.454142c0 3.8721579 2.0316878 5.6648235 6.7643252 5.6648235zm18.7643723-.3346309v-2.2468076h-3.6092336v-14.747663h-1.9121767c-.3346309 1.8643723-1.1712082 2.7009496-3.1550916 2.7965584v1.8165679h2.748754v10.1345367h-3.6092335v2.2468076z" fill="#0f1031"/><path d="m15.5738029 44.9682963c8.276296 0 14.9855596 6.7092636 14.9855596 14.9855596 0 8.2762961-29.97111922 8.2762961-29.97111922 0 0-8.276296 6.70926357-14.9855596 14.98555962-14.9855596zm0-15.299452c4.138148 0 7.4927798 3.3546318 7.4927798 7.4927798s-3.3546318 7.4927798-7.4927798 7.4927798-7.49277982-3.3546318-7.49277982-7.4927798 3.35463182-7.4927798 7.49277982-7.4927798z" stroke="#0f1031" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25"/></g></g></svg>
 
common/src/resources/images/logo/community-tickets.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 102 67" width="102" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero" transform="translate(-.583333 -.5)"><path d="m78.250003 1.68749998h23.125v17.25167472c-6.4042793 0-11.4874238 4.3644744-11.4874238 9.7483253 0 5.2803174 4.885384 9.580086 11.1193198 9.743509l.368104.003991v17.2525h-23.125z" fill="#3d54ff"/><path d="m53.0625 35.5252579-7.5309985 5.5813985 2.9810188-8.8871522-7.6354319-5.4376582 9.3733695.0888363 2.8120421-8.9420561 2.8120421 8.9420561 9.3733695-.0888363-7.6354319 5.4376582 2.9810188 8.8871522z" fill="#3d54ff" stroke="#3d54ff" stroke-linecap="round" stroke-linejoin="round"/><path d="m17.5377923 27.1401612c4.8678117 0 8.8139528 3.9461411 8.8139528 8.8139528 0 3.0779232-1.5776862 5.787358-3.9684813 7.3637273 6.749305 2.0683245 11.6574341 8.3504554 11.6574341 15.7789413 0 9.9929828-33.00581123 9.9929828-33.00581123 0 0-7.4281204 4.90764622-13.7099987 11.65740943-15.7801056-2.3907705-1.575205-3.96845663-4.2846398-3.96845663-7.362563 0-4.8678117 3.94614113-8.8139528 8.81395283-8.8139528zm0 17.7037158c-7.87166243 0-14.25290563 6.3812432-14.25290563 14.2529056 0 6.9929828 28.50581123 6.9929828 28.50581123 0 0-7.8716624-6.3812432-14.2529056-14.2529056-14.2529056zm83.8372107-44.343877c.579899 0 1.05732.43876095 1.118399 1.00241886l.006601.12258114v17.2516747c0 .6213203-.50368 1.125-1.125 1.125-5.5599533 0-10.0113363 3.8965715-10.0113363 8.6233253 0 4.7267556 4.4513827 8.6233275 10.0113363 8.6233275.579899 0 1.05732.4387609 1.118399 1.0024188l.006601.1225812v17.2516725c0 .579899-.438761 1.0573199-1.002419 1.1183987l-.122581.0066013h-59.1769428c-.6213204 0-1.125-.5036797-1.125-1.125 0-.579899.4387609-1.0573199 1.0024188-1.1183987l.1225812-.0066013 58.0519398-.001v-15.047l-.104604-.0077284c-6.0686844-.5363362-10.8719712-5.0001862-11.0278251-10.5413299l-.0039042-.2779417c0-5.6691977 4.8619005-10.2739944 11.0317293-10.8192694l.104604-.0087306v-15.048l-56.1395437.00073624-.0559684.01043813-.0569038.00763849-.1225811.00660135-25.125003-.00041421.000003 18.4314452c0 .579899-.438761 1.0573199-1.0024189 1.1183987l-.1225811.0066013c-.579899 0-1.0573199-.4387609-1.1183987-1.0024188l-.0066013-.1225812v-19.55603099c0-.57989899.4387609-1.05731986 1.0024188-1.11839865l.1225812-.00660135 26.0145466.00026377.1128722-.01807663.1225812-.00660135zm-83.8372107 28.8901612c-3.6251711 0-6.5639528 2.9387818-6.5639528 6.5639528 0 3.6251711 2.9387817 6.5639528 6.5639528 6.5639528 3.625171 0 6.5639528-2.9387817 6.5639528-6.5639528 0-3.625171-2.9387818-6.5639528-6.5639528-6.5639528z" fill="#0f1031"/></g></svg>
 
common/src/resources/images/logo/event-aggregator.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="66" viewBox="0 0 61 66" width="61" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(-.416667 -.5)"><path d="m40.8675453 32.7054452c0 6.3505556-5.1485926 11.5-11.5 11.5s-11.5-5.1494444-11.5-11.5c0-6.3514074 5.1485926-11.5 11.5-11.5s11.5 5.1485926 11.5 11.5z" fill="#3d54ff"/><path d="m25.4572683 46.6690582c.5417718.2067997.8313352.7869677.6873903 1.3353477l-.0375468.1168758-3.6053197 9.4451814c.6114218.4460757 1.1178676 1.0533201 1.4477892 1.794239.9754446 2.1916322.0497319 4.7463892-2.067823 5.8173411l-.2019909.0959983c-2.2599403 1.0058468-4.9062357-.0100622-5.9129688-2.2694674-1.0060164-2.2603211.0103415-4.9075209 2.2695237-5.9135055.7726638-.3438947 1.5905744-.4514296 2.3726833-.3537496l3.5960391-9.4184173.0498814-.1121676c.2580709-.504817.8605704-.7444757 1.4023422-.5376759zm-6.5058688 12.4775234c-1.1239812.5004943-1.6297932 1.8179292-1.1291977 2.9426689.5009821 1.1243509 1.8177701 1.6298639 2.9426689 1.1291976 1.1243509-.5009821 1.6298639-1.8177701 1.1291976-2.9426688-.5004943-1.1239812-1.8179291-1.6297932-2.9426688-1.1291977zm23.9143274-17.7047718.1124491.0625458.1067333.0766707 3.5255349 2.8532991c.2661032-.2004134.5588805-.3740724.8761726-.5153584 2.2600746-1.0059066 4.9072744.0104512 5.913259 2.2696335 1.0059272 2.2601207-.0099818 4.9064161-2.2698139 5.9133393-2.2599403 1.0058469-4.9062357-.0100621-5.9129688-2.2694673-.535669-1.2035429-.4979555-2.5167734-.0045438-3.6335217l-3.5433915-2.8691685-.0911194-.0822616c-.3996568-.4021384-.4402686-1.0492802-.0753829-1.4999922.3350992-.4139191.903427-.5278186 1.3630714-.3057187zm5.5359671 4.5326702c-1.1239812.5004943-1.6297932 1.8179292-1.1291977 2.9426689.5009821 1.1243509 1.8177701 1.6298639 2.9426689 1.1291976 1.1243509-.5009821 1.6298639-1.8177701 1.1291976-2.9426688-.5004943-1.1239812-1.8179291-1.6297932-2.9426688-1.1291977zm-19.0341487-25.8940348c6.9727277 0 12.625 5.6522723 12.625 12.625 0 6.9721573-5.6525536 12.625-12.625 12.625-6.9724465 0-12.625-5.6528427-12.625-12.625 0-6.9727277 5.6522722-12.625 12.625-12.625zm0 2.25c-5.7300871 0-10.375 4.644913-10.375 10.375 0 5.7295423 4.64522 10.375 10.375 10.375s10.375-4.6454577 10.375-10.375c0-5.730087-4.644913-10.375-10.375-10.375zm-20.03375364 7.3223853c.1294572.2908649.22542824.5881257.28957122.887465l4.19648672.2453153.1219871.0137426c.5591337.0938637.96929.5960725.9354533 1.1749835-.0338366.578911-.4997072 1.0299171-1.0659686 1.0580028l-.1227575-.0005624-4.16436799-.2440202c-.36687077 1.1944044-1.2288906 2.2297647-2.46021815 2.7784127-2.25994032 1.0058469-4.90623569-.0100621-5.91296887-2.2694674-1.0060164-2.260321.01034148-4.9075208 2.26952373-5.9135054 2.26007461-1.0059067 4.90727442.0104512 5.91325904 2.2696335zm-4.99818188-.2141205c-1.12398116.5004943-1.62979311 1.8179291-1.12919764 2.9426689.47920027 1.075466 1.70480895 1.5847364 2.79493754 1.1888276l.1473045-.0594399c1.12477773-.5011722 1.63029074-1.8179602 1.12962447-2.942859-.50049428-1.1239811-1.81792915-1.6297931-2.94266887-1.1291976zm56.12806832-15.3831417c.9754445 2.1916322.0497319 4.7463892-2.067823 5.8173411l-.2019909.0959983c-1.7598415.7832644-3.7539654.3405532-5.0257254-.9606363l-.1035332.0693546-9.8360809 5.7953494-.1089637.0565387c-.5166383.2335075-1.1370176.0449039-1.4313935-.4547217-.2943758-.4996255-.1587056-1.1336882.2959214-1.4724434l.1022616-.0679138 9.8360809-5.7953494.1336737-.0673528c-.5856888-2.1014067.4409857-4.3714777 2.494314-5.2857982 2.2600746-1.0059066 4.9072744.0104513 5.913259 2.2696335zm-33.269029-10.45292895c.9754445 2.19163222.0497318 4.74638918-2.067823 5.81734107l-.0622371.02981376 2.1739678 7.80431992.027911.1284187c.087519.5564266-.254024 1.1023807-.8098092 1.2571805-.5586354.1555936-1.1362749-.1389814-1.34635-.6655831l-.0392492-.1163151-2.2171364-7.96070198c-1.6213732-.09168051-3.1355056-1.06489344-3.8420567-2.65060179-1.0060164-2.26032104.0103415-4.90752085 2.2695238-5.91350546 2.2600746-1.00590664 4.9072744.01045124 5.913259 2.26963348zm28.2708471 10.23880845c-1.1239811.5004943-1.6297931 1.8179292-1.1291976 2.9426689.5009821 1.1243509 1.8177701 1.6298639 2.9426689 1.1291976 1.1243509-.5009821 1.6298639-1.8177701 1.1291976-2.9426688-.5004943-1.1239812-1.8179291-1.6297932-2.9426689-1.1291977zm-33.269029-10.45292892c-1.1239811.50049428-1.6297931 1.81792915-1.1291976 2.94266886.5009821 1.12435091 1.8177701 1.62986391 2.9426688 1.12919765 1.124351-.50098211 1.629864-1.81777009 1.1291977-2.94266887-.5004943-1.12398116-1.8179292-1.62979312-2.9426689-1.12919764z" fill="#0f1031" fill-rule="nonzero"/></g></svg>
 
common/src/resources/images/logo/event-tickets-plus.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 76 67" width="76" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(-.25 -.5)"><path d="m55.4232228 54.6290323c5.5258264-2.2808563 15.9120306-9.7902273 20.0122611-15.9354839 0 0-2.7593983-2.4560374-8.2781947-7.3681122-1.4362714 1.8251315-3.6822418 3.0006262-6.20824 3.0006262-4.3367349 0-7.8530952-3.4641902-7.8530952-7.7365836 0-2.1366012 2.3001694-5.4713494 2.3001694-5.4713494l-7.0245087-6.7471617c-1.8842759 2.7470879-5.7718154 7.2560065-10.7362338 10.8903476-2.2856982 1.6733093-4.7996765 3.161223-7.4515194 4.2064266" fill="#3d54ff"/><path d="m13.3613573 1.0892253.1022508.08390325 7.8582716 7.24963971c.4559776.42066164.4853575 1.13105276.0656727 1.58792954-.910328.991-1.424321 2.286368-1.424321 3.6651578 0 2.9852928 2.4020202 5.4026907 5.3614752 5.4026907 1.5287566 0 2.9516941-.6462975 3.9614119-1.7622393.4197125-.463867 1.1372283-.4962526 1.5970231-.072083l4.0314611 3.7191016c.4566752.4212918.4853591 1.1330246.0640673 1.5896998-.4212917.4566751-1.1330246.4853591-1.5896998.0640673l-3.2589702-3.0070927-.0126383.0117496c-1.2619098 1.0300574-2.8302025 1.6368713-4.49745 1.7011159l-.2952051.0056808c-4.2053213 0-7.6114752-3.4279601-7.6114752-7.6526907 0-1.5148196.4409717-2.9627855 1.243144-4.19142417l.0756246-.11243143-6.252-5.768-.0507102.05898686c-6.19704059 7.12997144-9.73706645 14.65255774-10.05665616 21.21398004l-.0160203.4174958c-.1592231 5.6718615 2.12909135 8.2677919 6.17951953 8.8717275 8.72286193 1.2990644 17.62526753-2.2088685 27.36705703-9.4259677l.4863378-.3625488c5.0243311-3.9405374 8.425436-7.1914804 10.7128826-10.6298395.3602938-.5415732 1.095183-.6593421 1.6042454-.2825743l.0986236.0819683 7.2550676 6.7483797c.4771371.4438142.4785815 1.1989054.0031458 1.6445418l-.1895585.1829126c-1.2594567 1.2796322-1.979765 3.0088312-1.979765 4.8571816 0 3.7916451 3.0209663 6.8590103 6.7384935 6.8590103 2.1062854 0 4.0500404-.9898481 5.3208086-2.654282.3763367-.4929205 1.0727727-.5828034 1.5595119-.2246501l.1008986.0836213 7.2394458 6.7341866c.3996899.3717945.4747985.9768687.1781409 1.4351016-5.848702 9.0342139-21.0855424 18.0715836-29.43311 18.8938765-7.46882.7357302-12.5693608-.3149189-18.3679456-4.2136769l-.4029883-.2747061-.4260156-.2977198c-4.1531035-2.9353506-11.3263271-8.9208233-21.55414966-17.9798245-3.11510435-1.6244837-4.8853553-4.9234439-4.7397635-10.1097296.2105659-7.5310454 4.29433312-16.07185364 11.45926996-23.98646606.3897776-.43056042 1.036169-.48914899 1.4945915-.15575984zm35.1566427 14.9847747-.0393128.0560283c-2.314865 3.1347987-5.4846329 6.1236048-9.8686821 9.5986992l-.5502373.4334376c-9.8583677 7.410401-18.9952143 11.2655479-28.12070087 10.4039234l1.93687507 1.6930889c8.0436058 7.0064779 13.6881454 11.6008732 16.909901 13.7670648 5.3327096 3.5855203 9.9135694 4.5291214 16.8919426 3.8417036 7.3555009-.7245674 21.0878558-8.7179968 27.0345947-16.8205865l.2006197-.2803593-5.686-5.289-.1740108.1710426c-1.5664239 1.4792858-3.6183085 2.3612657-5.8192988 2.4351632l-.3010277.0050484c-4.9679092 0-8.9884935-4.0823364-8.9884935-9.1090103 0-2.1250345.7227329-4.1372324 2.0097166-5.7420408l.0501142-.0612031z" fill="#0f1031" fill-rule="nonzero"/><g fill="#fff"><path d="m56.5487652 43.6984442c-.9436647 1.022274-.8778888 2.6138383.146461 3.5556596 1.0252269.9418213 2.6222656.8753604 3.5659303-.1469136.9445418-1.022274.8787659-2.6138383-.1464609-3.5547851-1.0252269-.9409468-2.6213886-.8762349-3.5659304.1460391"/><path d="m48.9787884 36.9891838c-.9445526 1.022204-.8778989 2.6136593.1464626 3.5545417 1.0252386.9426313 2.6222954.8761749 3.5659709-.1460291.9445525-1.022204.8778988-2.6136594-.1473397-3.5554162-1.0252386-.9408824-2.6214183-.8753005-3.5650938.1469036"/><path d="m41.4081051 30.2796268c-.9436648 1.0223556-.8778889 2.6140471.146461 3.555069 1.0252269.9418965 2.6222655.8754303 3.5659303-.1469253.9445418-1.0214811.8787659-2.6140471-.146461-3.5550691s-2.6213885-.8754303-3.5659303.1469254"/></g><g fill-rule="nonzero" transform="translate(14.508153 41.717014)"><path d="m24.8571858 12.4286363c0 6.8638264-5.5641157 12.4279421-12.4288098 12.4279421-6.8638265 0-12.42794218-5.5641157-12.42794218-12.4279421 0-6.86382651 5.56411568-12.42880983 12.42794218-12.42880983 6.8646941 0 12.4288098 5.56498332 12.4288098 12.42880983" fill="#ffcf48"/><path d="m11.8486251 12.5235551-4.34596214-.1240712 9.85888764-9.06760848-4.3147275 8.10367078 4.3459622.1240712-9.24981088 9.8215795z" fill="#161b7d"/></g></g></svg>
 
common/src/resources/images/logo/event-tickets.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="68" viewBox="0 0 88 68" width="88" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(-.166667 -.5)"><path d="m64.6649022 63.5660377c6.4641742-2.6681714 18.6140735-11.4527187 23.4105695-18.6415094 0 0-3.2279753-2.8731004-9.6839258-8.6193011-1.6801666 2.1350595-4.3075282 3.5101665-7.2624695 3.5101665-5.0731616 0-9.1866396-4.0524489-9.1866396-9.050343 0-2.4994203 2.6907641-6.4004465 2.6907641-6.4004465l-8.2173497-7.8929061c-2.2042474 3.2135745-6.751935 8.4881585-12.5593679 12.7396519-2.6738357 1.9574561-5.6147159 3.6980344-8.7168717 4.9207255" fill="#3d54ff"/><path d="m15.348282 1.0892253.1022508.08390325 9.1926951 8.48071061c.4559776.42066164.4853575 1.13105274.0656726 1.58792954-1.0970094 1.1942249-1.7165355 2.7555581-1.7165355 4.4167794 0 3.5974646 2.8951671 6.5111664 6.4629522 6.5111664 1.8429507 0 3.5587617-.7793205 4.7757622-2.1243515.4197125-.463867 1.1372283-.4962526 1.5970231-.072083l4.7160488 4.3506471c.4566752.4212918.4853591 1.1330246.0640674 1.5896998-.4212918.4566752-1.1330246.4853591-1.5896998.0640674l-3.9365189-3.6306943-.0562788.0490947c-1.4657196 1.2274603-3.3042235 1.9490629-5.2605658 2.0181545l-.3098382.0054653c-4.8136514 0-8.7129522-3.924264-8.7129522-8.7611664 0-1.7840454.5340713-3.4868239 1.5029229-4.9187234l.1007121-.1438247-7.58-6.993-.105346.12083894c-7.34172891 8.41571886-11.5336549 17.31110346-11.89698278 25.07431636l-.01670869.44661c-.18903315 6.7337583 2.5597919 9.8521053 7.39169417 10.572562 10.2814553 1.5311801 20.7559781-2.6049464 32.2099273-11.101918l.5193244-.3874329c5.8923371-4.6213066 9.8832538-8.4360208 12.5732117-12.4794118.3602939-.5415732 1.095183-.6593422 1.6042454-.2825744l.0986236.0819684 8.4870602 7.894331c.4771371.4438142.4785815 1.1989053.0031458 1.6445417l-.2272554.2193483c-1.5082155 1.5323759-2.3708361 3.6032151-2.3708361 5.8159925 0 4.5403703 3.6188338 8.2147856 8.0738037 8.2147856 2.5243536 0 4.8539727-1.1863475 6.3761839-3.1801181.3763367-.4929204 1.0727728-.5828034 1.559512-.2246501l.1008985.0836213 8.4687858 7.8777278c.3996898.3717945.4747984.9768687.1781408 1.4351016-6.8098013 10.5187785-24.581548 21.0596676-34.2895482 22.0159725-8.5143128.8387184-14.3700386-.3134778-20.9412654-4.61854l-.4204443-.2790843c-4.4736588-3.0079258-12.6764804-9.7812113-24.64715891-20.3459864l-1.52977053-1.3525177c-3.59672521-1.8638994-5.63597739-5.6615045-5.46739593-11.6667304.24490965-8.7593749 5.0024832-18.7093846 13.35584547-27.93676876.3897776-.43056042 1.036169-.48914899 1.4945915-.15575984zm41.211718 17.0877747-.1111948.1555625c-2.7082981 3.6907788-6.4351558 7.2078569-11.6112495 11.3078604l-.5994071.4720449-1.0954571.8127036c-11.2935589 8.2666706-21.7845075 12.4501927-32.2619309 11.2585712l2.6481662 2.3167518c8.9378418 7.7875315 15.3533522 13.0383268 19.2256987 15.7386487l.6429751.4406562c6.2778195 4.220978 11.680685 5.3339022 19.8857066 4.5256511 8.713033-.8582937 24.9744624-10.3494585 31.8920653-19.9346036l.2026275-.2858468-6.91-6.428-.0547173.0581293c-1.8332265 1.8638339-4.3067442 2.9801038-6.969569 3.0664232l-.3338064.0054052c-5.7053519 0-10.3238037-4.6893864-10.3238037-10.4647856 0-2.4571896.8407531-4.7826815 2.3367599-6.6320772l.1451365-.1730949z" fill="#0f1031" fill-rule="nonzero"/><g fill="#fff"><path d="m65.9815744 50.7793121c-1.1039097 1.1958677-1.0269643 3.0576976.1713318 4.1594508 1.199322 1.1017532 3.0675559 1.0240065 4.1714656-.1718612 1.1049357-1.1958677 1.0279903-3.0576976-.1713317-4.1584278-1.199322-1.1007303-3.06653-1.0250295-4.1714657.1708382"/><path d="m57.1261298 42.9307433c-1.1049482 1.1957858-1.026976 3.0574883.1713337 4.1581432 1.1993356 1.1027007 3.0675907 1.0249593 4.171513-.1708266 1.1049483-1.1957858 1.0269761-3.0574883-.1723596-4.1591661-1.1993356-1.1006549-3.0665648-1.0239364-4.1704871.1718495"/><path d="m48.2698588 35.0818275c-1.1039098 1.1959633-1.0269644 3.0579419.1713317 4.1587601 1.199322 1.1018412 3.0675559 1.0240882 4.1714656-.171875 1.1049357-1.1949401 1.0279903-3.0579419-.1713317-4.15876-1.199322-1.1008182-3.0665299-1.0240883-4.1714656.1718749"/></g></g></svg>
 
common/src/resources/images/logo/eventbrite-tickets.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="66" viewBox="0 0 81 66" width="81" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(1.333333 1)"><path d="m54.5205941 1.74658203h17.5v13.80133977c-4.8628341 0-8.80494 3.4915795-8.80494 7.7986611 0 4.2242531 3.7919443 7.664068 8.5254349 7.7948063l.2795051.0031928v13.8020017h-17.5z" fill="#3d54ff" fill-rule="nonzero" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -4.169318 23.047789)"/><path d="m72.6465025 9.30087199c.579899 0 1.0573199.43876094 1.1183986 1.00241881l.0066014.1225812v13.8013397c0 .6213204-.5036797 1.125-1.125 1.125-3.6857613 0-6.6736611 2.9878999-6.6736611 6.6736611 0 3.6857613 2.9878998 6.6736612 6.6736611 6.6736612.579899 0 1.0573199.4387609 1.1183986 1.0024188l.0066014.1225812v13.8013397c0 .579899-.438761 1.0573199-1.0024189 1.1183987l-.1225811.0066013h-50.2773957c-.6213203 0-1.125-.5036797-1.125-1.125 0-.579899.438761-1.0573199 1.0024189-1.1183987l.1225811-.0066013 49.1518932-.0008737v-11.622l-.1701087-.0218364c-4.2297842-.6152037-7.4977173-4.1974481-7.6242454-8.5671793l-.0038045-.2631115c0-4.488366 3.31367-8.202783 7.6280499-8.8302907l.1701087-.0225821v-11.623l-15.3100763.000872c-.579899 0-1.0573199-.438761-1.1183987-1.0024189l-.0066013-.1225811c0-.579899.4387609-1.05731988 1.0024188-1.11839867l.1225812-.00660134zm-24.2266765 0c.6213204 0 1.125.50367965 1.125 1.12500001 0 .579899-.4387609 1.0573199-1.0024188 1.1183986l-.1225812.0066014-41.648826-.000872v11.623l.17111373.0225821c4.22978417.6152037 7.49771727 4.1974481 7.62424527 8.5671793l.0038046.2631114c0 4.4883661-3.31367 8.2027831-7.62804987 8.8302908l-.17111373.0218364v11.622l7.85006.0008737c.5798989 0 1.0573198.4387609 1.1183986 1.0024189l.0066014.1225811c0 .579899-.438761 1.0573199-1.0024189 1.1183987l-.1225811.0066013h-8.97455751c-.57989898 0-1.05731986-.4387609-1.11839865-1.0024189l-.00660135-.1225811v-13.8013397c0-.6213204.50367966-1.125 1.125-1.125 3.68576126 0 6.67366111-2.9878999 6.67366111-6.6736612 0-3.6857612-2.98789985-6.6736611-6.67366111-6.6736611-.57989898 0-1.05731986-.4387609-1.11839865-1.0024188l-.00660135-.1225812v-13.8013397c0-.579899.43876095-1.05731988 1.00241886-1.11839867l.12258114-.00660134z" fill="#0f1031" fill-rule="nonzero" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -8.592671 15.320289)"/><path d="m39.4227214 29.0818054c-.0138535-.027535-.0151129-.0362961-.0201506-.0425541-.0176317-.021277-.0365228-.0425541-.0566734-.0625795-1.6246378-1.6345771-3.5880567-2.3567447-5.8889972-2.1639998-.6221481.0513152-1.2228863.207764-1.8059927.4280439-2.6548346 1.0125366-4.4469738 3.4869309-4.5705172 6.3092672-.0011381.0300382.0076778.0600764.0139748.1026305 4.1144897-1.5244372 8.2163854-3.0463711 12.3283563-4.5708082m7.7327723 2.7272155c-6.0804275 2.2541143-12.1532985 4.5057255-18.2450606 6.7648461.0377823.0450573.0617111.0775986.0919369.1088884.7405326.782244 1.6183408 1.3679883 2.6271275 1.7572329.7909089.3066397 1.6145625.4643401 2.4634043.4781076.541546.0087611 1.0805731-.0362961 1.6082655-.1602036 2.135958-.5031393 3.7379264-1.7046661 4.7870142-3.6246058.0642299-.1176495.0629705-.1189011.2052837-.1051336 1.9898665.186487 3.9809924.3729739 5.9721183.5619641.0264476.0025032.0541546.0100127.0931963.0175222-.0138535.0500637-.0251882.0951209-.0390417.1389266-1.1737694 3.7322426-3.9507666 6.7247952-7.6068314 8.1979171-.5717717.2290411-1.157397.4180312-1.7568757.5669705-.5516213.1351718-1.1082801.2428085-1.6750142.3041365-.4244209.0463088-.8501012.0750954-1.2783003.0813533-1.0113056.0175223-2.0100171-.0813533-2.9973938-.2966269-1.8702226-.4067669-3.5754626-1.1777466-5.1056448-2.3217002-1.9394901-1.4518449-3.3638819-3.2991923-4.2794723-5.5332812-.2556601-.6245436-.4596844-1.2653579-.6158511-1.9211913-.1372756-.5819895-.2392877-1.1714886-.2921829-1.7672456-.1964679-2.1752641.1146062-4.2791876.9835985-6.285487 1.4067601-3.2428708 3.7530393-5.5620678 7.0174279-6.9600943.5553994-.2365506 1.1284306-.4242891 1.7140559-.5782348.6473363-.1702163 1.3034884-.3041364 1.9709753-.3667159 3.3966265-.3216588 6.4846978.5056425 9.2327286 2.5156967 2.1132885 1.5469657 3.5993914 3.572039 4.5023877 6.0176467.2266937.6082729.4042704 1.2328165.5264331 1.8723792.0289664.1414297.0541546.284111.0806021.4255407.0062971.033793.0088159.0700891.015113.1113916" fill="#3d54ff" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -9.5202 13.706105)"/></g></svg>
 
common/src/resources/images/logo/events-calendar-pro.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 65 67" width="65" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(-.083333 .5)"><path d="m57.719639 22.0140549.098758-5.1993865c.0608-3.5807998-2.8287999-6.5143996-6.4095996-6.5088942l-38.0199978.0632946c-3.50959977.0048-6.3607996 2.8375998-6.3887996 6.3487996l.00535317 4.9246862z" fill="#3d54ff" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -3.572474 12.059322)"/><path d="m41.8709796.79985313.0481285.1129308 1.3111163 3.60546649 4.1279014-1.50998336c3.8782903-1.41839592 8.1584347.55468219 9.616637 4.38629145l.0827741.22742014 6.0734585 17.60866845c4.6744103 12.7791106-1.8951829 26.9283747-14.6738058 31.6026067-.583509.213439-1.2295631-.0865621-1.443002-.6700711-.213439-.583509.086562-1.229563.670071-1.443002 7.4211035-2.7145302 12.5376777-8.9458645 14.1535005-16.1264745-2.3270203 1.7997797-5.9765636 2.7982696-10.4020816 2.6781539l-.276107-.009373-.0307752.0622619-.1034889.220136c-.1261403.2806233-.2734198.6497602-.4652347 1.162224l-1.1002072 3.0042827-.1059195.2813519c-.4660805 1.2319987-.9137948 2.3311881-1.3946775 3.3995043-2.2610539 5.0230972-4.9595444 8.6769799-8.5585351 10.7270504-.0985038.0561101-.2019039.0957121-.3070022.1196829-.0571177.0338609-.1187813.0631161-.1839852.0869694l-15.223439 5.5690151c-1.0578999.375541-2.2154057-.1372418-2.6576538-1.1504499l-.0557966-.1412301-13.82607143-38.9480742c-1.3533538-3.8126351.55073319-7.9962152 4.27544303-9.4954516l.230306-.08841 3.9036912-1.4280995-1.2843148-3.5297097c-.2125041-.5838502.0885314-1.22942281.6723815-1.44192688.5449268-.19833714 1.1436208.05067573 1.3937984.55945078l.0481285.1129308 1.2830064 3.526255 23.449-8.57899998-1.3134247-3.60892117c-.2125041-.58385014.0885314-1.22942278.6723815-1.44192686.5449268-.19833713 1.1436208.05067573 1.3937984.55945074zm6.4634105 4.25171422-.2033115.06978459-4.1308542 1.51089848 1.2939383 3.55341978c.212504.5838501-.0885314 1.2294227-.6723816 1.4419268-.5449268.1983372-1.1436207-.0506757-1.3937984-.5594507l-.0481284-.1129308-1.2926299-3.54996508-23.448 8.57899998 1.3220481 3.6326312c.2125041.5838501-.0885314 1.2294228-.6723815 1.4419268-.5449268.1983372-1.1436208-.0506757-1.3937984-.5594507l-.0481285-.1129308-1.3217397-3.6291765-3.8999427 1.4272393c-2.64705304.9675505-4.05305717 3.8383997-3.22792268 6.5077585l.06979557.2102819 13.78375191 38.8290254 15.0858328-5.5186506c.0447842-.0163832.0899369-.0297419.1352342-.04018.0046574-.0024847.0098658-.0055062.0151073-.0084919 3.0983222-1.7648778 5.5370009-5.0669632 7.6204642-9.6955298.4600522-1.0220397.8910022-2.080071 1.3419601-3.2720957l.4286631-1.1546435.6018315-1.6563671.3670011-.9898645c.8076951-2.13374 1.0996628-2.4593581 2.1515156-2.4017858 7.1725442.3942944 11.6769292-2.256562 11.558089-5.9063904-.0021749-.0667957.0015189-.1324207.0106168-.1963791-.076918-2.1824594-.4781874-4.389684-1.2316975-6.5579058l-.1245728-.3493103-6.0807328-17.62826323c-.9387889-2.72223528-3.8789619-4.1762194-6.595829-3.30413042z" fill="#0f1031" fill-rule="nonzero"/><path d="m28.3550086 43.5878639c1.4327742-.5240411 3.0176537.2118795 3.5414213 1.6439019.5247929 1.4325005-.2118795 3.0176537-1.6439019 3.5414212-1.4317488.5245193-3.0176537-.2118795-3.5414212-1.6439018-.5237676-1.4320224.2118795-3.0176537 1.6439018-3.5414213zm12.6184789-4.6169544c1.4327741-.5240411 3.0179273.2126313 3.5416948 1.6446536.5240412 1.4327742-.2118795 3.0176537-1.6439018 3.5414213-1.4320224.5237675-3.0176537-.2118795-3.5414213-1.6439019-.5245193-1.4317487.2118795-3.0176537 1.6436283-3.542173zm-16.7622262-6.1826679c1.4327754-.5240379 3.0179285.2126345 3.5421775 1.6436303.5240379 1.4327753-.2126345 3.0179285-1.6443821 3.5424511-1.4320236.5237642-3.0179285-.2126346-3.5416993-1.6446557-.5237643-1.4320236.2118828-3.0176549 1.6439039-3.5414257zm12.3700116-4.525554c1.4327742-.5240411 3.0179273.2126313 3.5416949 1.6446536.5240411 1.4327742-.2126313 3.0179273-1.6446537 3.5416949-1.4320223.5237675-3.0179272-.2126313-3.5416948-1.6446536-.5237675-1.4320224.2126312-3.0179273 1.6446536-3.5416949zm12.3693065-4.5253861c1.4327741-.5240412 3.0179273.2126312 3.5416948 1.6446536.5240412 1.4327741-.2126312 3.0179273-1.6446536 3.5416948-1.4320224.5237676-3.0176537-.2118795-3.5414212-1.6439018-.5237676-1.4320224.2126312-3.0179273 1.64438-3.5424466z" fill="#334aff"/><g fill-rule="nonzero" transform="translate(.841539 37.606341)"><path d="m23.709931 11.8550069c0 6.5470345-5.3073103 11.8543448-11.8551724 11.8543448-6.54703446 0-11.85434481-5.3073103-11.85434481-11.8543448 0-6.54703449 5.30731035-11.85517242 11.85434481-11.85517242 6.5478621 0 11.8551724 5.30813793 11.8551724 11.85517242" fill="#ffcf48"/><path d="m11.3017655 11.9455448-4.14537929-.1183448 9.40386209-8.64910345-4.1155862 7.72965515 4.1453793.1183449-8.82289657 9.3682758z" fill="#161b7d"/></g></g></svg>
 
common/src/resources/images/logo/filterbar.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="68" viewBox="0 0 68 68" width="68" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.25 .5)"><path d="m0 2.2037037 9.54577706 10.8333333h47.77430774l8.8836189-10.8333333z"/><path d="m0 2.2037037 9.54577706 10.8333333h47.77430774l8.8836189-10.8333333z"/><g transform="translate(.203704)"><path d="m43.1948338 43.5825617-18.8208527 15.5568205-.7102561 6.711698h20.5013253v-13.2104372z" fill="#3d54ff" transform="matrix(1 0 0 -1 0 109.433642)"/><path d="m65.0532859.22857154c1.5060415 0 2.3602503 1.69094636 1.5076349 2.91436363l-.0878749.11686326-22.1940459 26.12720157.000143 35.6586541c0 1.4854715-1.6382186 2.3248218-2.8288362 1.5671454l-.1174925-.0811263-.114045-.0919845-17.5813789-15.2951001c-.3597268-.3116105-.5828067-.7494026-.627939-1.218433l-.0085026-.1771653-.0009488-20.3629903-22.20828245-26.1458779c-.91679441-1.1303931-.22353585-2.78135563 1.14304687-2.98967799l.14373409-.01632393.14830738-.00554864zm-.8692859 2.24942846h-61.089l7.3045402 8.5978116.0363615-.0045395.1225812-.0066014h38.3762249c.6213204 0 1.125.5036797 1.125 1.125 0 .579899-.4387609 1.0573199-1.0024188 1.1183987l-.1225812.0066013-36.6343787-.0000992 12.5370751 14.7587418c.1911732.2352902.320234.5128597.378377.807015l.0263052.178278.0088624.1810253-.0009488 20.3253684 16.779 14.597.000143-34.9223684c0-.3198466.0827727-.6326301.2435943-.9145186l.0868931-.1382594.09977-.1324481z" fill="#0f1031" fill-rule="nonzero"/><path d="m25.009627 43.490743h17.847279" stroke="#0f1031" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.25"/></g></g></svg>
 
common/src/resources/images/logo/image-widget-plus.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 91 67" width="91" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.083333 -.5)"><path d="m55.7078071 53.8617021 15.0717717-11.540375c.7023576-.5377914 1.6745762-.550297 2.3905343-.0307493l15.9454856 11.5711243v6.8151261c-.4969459 2.2538176-1.0608695 3.6961769-1.6917706 4.327078-.6309011.6309012-1.944205 1.0657693-3.9399118 1.3046044h-14.8770184z" fill="#3d54ff"/><path d="m84.1155987.875c3.307572 0 6.0028057 2.62173207 6.1209605 5.90045566l.0040395.22454434v54.3085106c0 3.307572-2.6217321 6.0028057-5.9004556 6.1209605l-.2245444.0040395h-77.1155987c-3.307572 0-6.00280567-2.621732-6.12096046-5.9004556l-.00403954-.2245444v-54.3085106c0-3.307572 2.62173207-6.00280567 5.90045566-6.12096046l.22454434-.00403954zm-52.8120625 33.9700069-.1317052.097278-28.046831 22.6507151v3.7155106c0 2.0732252 1.62815979 3.7661733 3.67559301 3.8699579l.19940699.0050421 58.764-.0005106-32.1310826-30.1493436c-.6424102-.6028009-1.6106146-.6728028-2.3293812-.1886495zm52.8120625-31.7200069h-77.1155987c-2.07322517 0-3.76617325 1.62815979-3.86995787 3.67559301l-.00504213.19940699v47.701l26.6331306-21.5091297c1.5447682-1.2476127 3.7486049-1.2123979 5.2504736.0551141l.1639164.1459033 33.8784794 31.7906229h15.0645987c2.0732252 0 3.7661733-1.6281598 3.8699579-3.675593l.0050421-.199407v-54.3085106c0-2.07322517-1.6281598-3.76617325-3.675593-3.86995787zm-27.3117019 13.2835199c4.4182781 0 8 3.581722 8 8s-3.5817219 8-8 8c-4.4182779 0-8-3.581722-8-8s3.5817221-8 8-8zm.0000001 2.25c-3.1756374 0-5.7500001 2.5743627-5.7500001 5.75s2.5743627 5.75 5.7500001 5.75c3.1756373 0 5.7499999-2.5743627 5.7499999-5.75 0-3.1756374-2.5743626-5.75-5.7499999-5.75z" fill="#0f1031" fill-rule="nonzero"/></g></svg>
 
common/src/resources/images/logo/promoter.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="68" viewBox="0 0 69 68" width="69" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(-.333333 -.5)"><path d="m2 2h32.6483832c1.2146253 0 2.2756467.81031839 2.579303 1.96979125l7.5354717 28.81968245h-33.9766577" fill="#3d54ff"/><path d="m42.0995814 15.6842105h22.7228536l-6.8033246 15.2525374 8.9808896 15.5369363h-33.0635728l-2.8574798-11.8309985" fill="#3d54ff"/><path d="m34.6483832.875c1.6575134 0 3.1172732 1.06612992 3.6129129 2.62127715l.0547999.18892801 2.8756685 10.99873884 25.1716846.0002665-7.2234491 16.1937895 9.5930777 16.5956842h-35.5656575l-3.6036557-13.5597402h-17.155l9.4876598 32.7732407c.1727631.5968181-.1710014 1.220687-.7678195 1.3934501-.5570302.1612456-1.1376247-.1274618-1.3530244-.651908l-.0404257-.1159115-18.8263256-65.03791046-.02319694-.11955349-.01064504-.13093739.00094996-.07729456.01239462-.12140511.02327021-.11105203.02776887-.09066835.04386668-.10608478.05268117-.09803882.06231218-.0926188.06231824-.0764367.09244251-.09202274.1184835-.09217454.07436852-.04589153.08342874-.04279676.10840036-.0432734.1268599-.03478587.13865084-.0209112.09681658-.00395877zm28.6326168 15.808944h-21.5662355l4.1368031 15.8209436-7.1165805 12.9671124 26.5310129.001-8.3680241-14.4775905zm-28.6326168-13.559h-31.15261869l8.26199999 28.539056h31.5472355l-7.165611-27.40919272c-.1618922-.61816467-.7059243-1.06660963-1.3512693-1.12365489z" fill="#0f1031" fill-rule="nonzero"/><path d="m24.2190974 12.6825928h-3.7176953l1.1608071 3.8478527h3.7048788c1.2248896 0 1.9105714-.7440115 1.5681882-1.8985424-.3497069-1.1790395-1.4867119-1.9493103-2.7161788-1.9493103zm-9.4512403-3.71830709h8.9578057c4.0225446 0 6.9804056 2.59003549 7.8885449 5.69387659.9008156 3.0767066-.5355458 5.6159743-4.5196409 5.6159743h-4.3035917l1.7485344 5.7954123h-4.5461894z" fill="#fff"/></g></svg>
 
common/src/resources/images/logo/the-events-calendar.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="67" viewBox="0 0 59 67" width="59" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(0 .5)"><path d="m51.719639 22.0140549.098758-5.1993865c.0608-3.5807998-2.8287999-6.5143996-6.4095996-6.5088942l-38.01999778.0632946c-3.50959979.0048-6.36079962 2.8375998-6.38879962 6.3487996l.00535317 4.9246862z" fill="#3d54ff" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -3.934318 10.007201)"/><path d="m35.8709796.79985313.0481285.1129308 1.3111163 3.60546649 4.1279014-1.50998336c3.8782903-1.41839592 8.1584347.55468219 9.616637 4.38629145l.0827741.22742014 6.0734585 17.60866845c4.6744103 12.7791106-1.8951829 26.9283747-14.6738058 31.6026067-.583509.213439-1.2295631-.0865621-1.443002-.6700711-.213439-.583509.086562-1.229563.670071-1.443002 7.4211035-2.7145302 12.5376777-8.9458645 14.1535005-16.1264745-2.3270203 1.7997797-5.9765636 2.7982696-10.4020816 2.6781539l-.276107-.009373-.0307752.0622619-.1034889.220136c-.1261403.2806233-.2734198.6497602-.4652347 1.162224l-1.1002072 3.0042827-.1059195.2813519c-.4660805 1.2319987-.9137948 2.3311881-1.3946775 3.3995043-2.2610539 5.0230972-4.9595444 8.6769799-8.5585351 10.7270504-.0985038.0561101-.2019039.0957121-.3070022.1196829-.0571177.0338609-.1187813.0631161-.1839852.0869694l-15.223439 5.5690151c-1.0578999.375541-2.2154057-.1372418-2.6576538-1.1504499l-.0557966-.1412301-13.82607143-38.9480742c-1.3533538-3.8126351.55073319-7.9962152 4.27544298-9.4954516l.23030608-.08841 3.90369114-1.4280995-1.28431481-3.5297097c-.21250408-.5838502.08853139-1.22942281.67238153-1.44192688.5449268-.19833714 1.14362081.05067573 1.39379841.55945078l.0481285.1129308 1.2830064 3.526255 23.449-8.57899998-1.3134247-3.60892117c-.2125041-.58385014.0885314-1.22942278.6723815-1.44192686.5449268-.19833713 1.1436208.05067573 1.3937984.55945074zm6.4634105 4.25171422-.2033115.06978459-4.1308542 1.51089848 1.2939383 3.55341978c.212504.5838501-.0885314 1.2294227-.6723816 1.4419268-.5449268.1983372-1.1436207-.0506757-1.3937984-.5594507l-.0481284-.1129308-1.2926299-3.54996508-23.448 8.57899998 1.3220481 3.6326312c.2125041.5838501-.0885314 1.2294228-.6723815 1.4419268-.5449268.1983372-1.1436208-.0506757-1.3937984-.5594507l-.0481285-.1129308-1.3217397-3.6291765-3.89994273 1.4272393c-2.64705301.9675505-4.05305714 3.8383997-3.22792265 6.5077585l.06979557.2102819 13.78375191 38.8290254 15.0858328-5.5186506c.0447842-.0163832.0899369-.0297419.1352342-.04018.0046574-.0024847.0098658-.0055062.0151073-.0084919 3.0983222-1.7648778 5.5370009-5.0669632 7.6204642-9.6955298.4600522-1.0220397.8910022-2.080071 1.3419601-3.2720957l.4286631-1.1546435.6018315-1.6563671.3670011-.9898645c.8076951-2.13374 1.0996628-2.4593581 2.1515156-2.4017858 7.1725442.3942944 11.6769292-2.256562 11.558089-5.9063904-.0021749-.0667957.0015189-.1324207.0106168-.1963791-.076918-2.1824594-.4781874-4.389684-1.2316975-6.5579058l-.1245728-.3493103-6.0807328-17.62826323c-.9387889-2.72223528-3.8789619-4.1762194-6.595829-3.30413042z" fill="#0f1031" fill-rule="nonzero"/><g fill="#334aff"><path d="m41.3061994 27.2797481c.5237675 1.4320223 2.1093988 2.1676694 3.5414212 1.6439018 1.4320224-.5237675 2.1686948-2.1089207 1.6446536-3.5416948-.5237675-1.4320224-2.1089207-2.1686948-3.5416948-1.6446536-1.4317488.5245193-2.1681476 2.1104242-1.64438 3.5424466"/><path d="m28.9366193 31.8043825c.5237676 1.4320223 2.1096725 2.1684211 3.5416948 1.6446536 1.4320224-.5237676 2.1686948-2.1089207 1.6446537-3.5416949-.5237676-1.4320223-2.1089207-2.1686947-3.5416949-1.6446536-1.4320224.5237676-2.1684211 2.1096725-1.6446536 3.5416949"/><path d="m16.3993316 35.3855455c.0024035 1.5247999 1.2408034 2.7591998 2.7656033 2.7568033 1.5247999-.0032035 2.7591998-1.2408034 2.7568033-2.7664033-.0032035-1.524-1.2408034-2.7583999-2.7664033-2.7560034-1.5247999.0024035-2.7583998 1.2408034-2.7560033 2.7656034" transform="matrix(.93969262 -.34202014 .34202014 .93969262 -10.945543 8.687033)"/><path d="m33.3298592 42.5130825c.5237676 1.4320224 2.1093989 2.1676694 3.5414213 1.6439019 1.4320223-.5237676 2.167943-2.1086471 1.6439018-3.5414213-.5237675-1.4320223-2.1089207-2.1686947-3.5416948-1.6446536-1.4317488.5245193-2.1681476 2.1104243-1.6436283 3.542173"/><path d="m20.7111068 47.1292852c.5237675 1.4320223 2.1096724 2.1684211 3.5414212 1.6439018 1.4320224-.5237675 2.1686948-2.1089207 1.6439019-3.5414212-.5237676-1.4320224-2.1086471-2.167943-3.5414213-1.6439019-1.4320223.5237676-2.1676694 2.1093989-1.6439018 3.5414213"/></g></g></svg>
 
common/src/resources/images/logo/virtual-events.svg DELETED
@@ -1 +0,0 @@
1
- <svg height="68" viewBox="0 0 68 68" width="68" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(0 -.5)"><path d="m2.2799461 53.996154h39.6542462v9.6119403c0 1.6568543-1.3431457 3-3 3h-33.6542462c-1.65685425 0-3-1.3431457-3-3z" fill="#3d54ff"/><path d="m38.0740735.50990878c2.7578834 0 5.0069789 2.17838047 5.1205039 4.90835904l.0044961.21664095v11.85552403c0 .6213204-.5036797 1.125-1.125 1.125-.579899 0-1.0573199-.4387609-1.1183987-1.0024188l-.0066013-.1225812v-11.85552403c0-1.53111084-1.1968817-2.782675-2.706072-2.8701195l-.168928-.0048805h-32.21413846c-1.53111084 0-2.78267501 1.19688164-2.8701195 2.70607192l-.0048805.16892808v57.00000003c0 1.5311108 1.19688163 2.782675 2.70607191 2.8701195l.16892809.0048805h32.21413846c1.5311108 0 2.782675-1.1968817 2.8701195-2.7060719l.0048805-.1689281v-15.0676426c0-.6213203.5036796-1.125 1.125-1.125.5798989 0 1.0573198.438761 1.1183986 1.0024189l.0066014.1225811v15.0676426c0 2.7578834-2.1783805 5.0069789-4.9083591 5.1205039l-.2166409.0044961h-32.21413846c-2.75788346 0-5.0069789-2.1783805-5.12050392-4.9083591l-.00449608-.2166409v-57.00000003c0-2.75788346 2.17838048-5.0069789 4.90835905-5.12050392l.21664095-.00449607zm20.6667483 14.22630072c.4454836-.433109 1.1577235-.4230775 1.5908325.022406 9.1030659 9.3631536 9.1030659 24.6302431 0 33.9933966-.433109.4454836-1.1453489.4555151-1.5908325.0224061-.4454835-.433109-.455515-1.1453489-.022406-1.5908325 8.2540506-8.4898806 8.2540506-22.3666631 0-30.8565438-.433109-.4454835-.4230775-1.1577235.022406-1.5908324zm-33.5257647 0c.4454835.4331089.4555151 1.1453489.0224061 1.5908324-8.2540507 8.4898807-8.2540507 22.3666632 0 30.8565438.433109.4454836.4230774 1.1577235-.0224061 1.5908325s-1.1577235.4230775-1.5908325-.0224061c-9.1030659-9.3631535-9.1030659-24.630243 0-33.9933966.433109-.4454835 1.145349-.455515 1.5908325-.022406zm26.431304 5.983179c.4454835-.433109 1.1577235-.4230775 1.5908325.0224061 5.9208944 6.0900628 5.9053026 15.9530129-.0469112 22.0752899-.4331089.4454836-1.1453489.4555151-1.5908324.0224061-.4454836-.433109-.4555151-1.1453489-.0224061-1.5908324 5.1042954-5.2501325 5.1176894-13.7227795.0469111-18.9384372-.433109-.4454836-.4230774-1.1577235.0224061-1.5908325zm-19.3368473 0c.4454836.433109.4555151 1.1453489.0224061 1.5908325-5.0707783 5.2156577-5.0573843 13.6883047.0469112 18.9384372.4331089.4454835.4230774 1.1577234-.0224061 1.5908324-.4454836.433109-1.1577235.4230775-1.5908325-.0224061-5.9522138-6.122277-5.9678056-15.9852271-.0469111-22.0752899.4331089-.4454836 1.1453489-.4555151 1.5908324-.0224061zm9.6684254 4.9434014c3.3003135 0 5.9757462 2.6754327 5.9757462 5.9757463 0 3.3003135-2.6754327 5.9757462-5.9757462 5.9757462-3.3003136 0-5.9757463-2.6754327-5.9757463-5.9757462 0-3.3003136 2.6754327-5.9757463 5.9757463-5.9757463zm0 2.25c-2.0576729 0-3.7257463 1.6680734-3.7257463 3.7257463 0 2.0576728 1.6680734 3.7257462 3.7257463 3.7257462 2.0576728 0 3.7257462-1.6680734 3.7257462-3.7257462 0-2.0576729-1.6680734-3.7257463-3.7257462-3.7257463z" fill="#0f1031" transform="translate(.140065 .365091)"/></g></svg>
 
common/src/resources/images/mascot.png CHANGED
Binary file
common/src/resources/images/shop/aggregator.jpg DELETED
Binary file
common/src/resources/images/shop/calendar.jpg DELETED
Binary file
common/src/resources/images/shop/community-tickets.jpg DELETED
Binary file
common/src/resources/images/shop/community.jpg DELETED
Binary file
common/src/resources/images/shop/eventbrite.jpg DELETED
Binary file
common/src/resources/images/shop/extension-advanced-options.jpg DELETED
Binary file
common/src/resources/images/shop/extension-change-label.jpg DELETED
Binary file
common/src/resources/images/shop/extension-custom-venue-links.jpg DELETED
Binary file
common/src/resources/images/shop/extension-events-happening-now.jpg DELETED
Binary file
common/src/resources/images/shop/extension-link-to-webinar.jpg DELETED
Binary file
common/src/resources/images/shop/extension-web-url-cta.jpg DELETED
Binary file
common/src/resources/images/shop/filter-bar.jpg DELETED
Binary file
common/src/resources/images/shop/image-widget-plus.jpg DELETED
Binary file
common/src/resources/images/shop/pro.jpg DELETED
Binary file
common/src/resources/images/shop/promoter.jpg DELETED
Binary file
common/src/resources/images/shop/tickets-plus.jpg DELETED
Binary file
common/src/resources/images/shop/tickets.jpg DELETED
Binary file
common/src/resources/images/shop/virtual-events.jpg DELETED
Binary file
common/src/resources/js/dropdowns.js CHANGED
@@ -49,9 +49,6 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
49
  return null;
50
  };
51
 
52
- obj.allow_html_markup = function ( m ) {
53
- return m;
54
- };
55
 
56
  /**
57
  * Better Search ID for Select2, compatible with WordPress ID from WP_Query
@@ -266,7 +263,7 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
266
 
267
  // Don't Remove HTML elements or escape elements
268
  if ( $select.is( '[data-allow-html]' ) ) {
269
- args.escapeMarkup = obj.allow_html_markup;
270
  }
271
 
272
  // If we are dealing with a Input Hidden we need to set the Data for it to work.
@@ -356,7 +353,7 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
356
  args.data = { results: [] };
357
 
358
  // Allows HTML from Select2 AJAX calls
359
- args.escapeMarkup = obj.allow_html_markup;
360
 
361
  // Format for Parents breadcrumbs
362
  args.formatResult = function ( item, container, query ) {
49
  return null;
50
  };
51
 
 
 
 
52
 
53
  /**
54
  * Better Search ID for Select2, compatible with WordPress ID from WP_Query
263
 
264
  // Don't Remove HTML elements or escape elements
265
  if ( $select.is( '[data-allow-html]' ) ) {
266
+
267
  }
268
 
269
  // If we are dealing with a Input Hidden we need to set the Data for it to work.
353
  args.data = { results: [] };
354
 
355
  // Allows HTML from Select2 AJAX calls
356
+
357
 
358
  // Format for Parents breadcrumbs
359
  args.formatResult = function ( item, container, query ) {
common/src/resources/js/dropdowns.min.js CHANGED
@@ -1 +1,509 @@
1
- var tribe_dropdowns=window.tribe_dropdowns||{};!function(e,t,r){"use strict";t.selector={dropdown:".tribe-dropdown",created:".tribe-dropdown-created",searchField:".select2-search__field"},e.fn.tribe_dropdowns=function(){return t.dropdown(this,{}),this},t.freefrom_create_search_choice=function(t){var a=e.trim(t.term);if(""===a)return null;var o=this.options.options,s=o.$select;if(a.match(o.regexToken)&&(!s.is("[data-int]")||s.is("[data-int]")&&a.match(/\d+/))){var i={id:a,text:a,new:!0};return s.is("[data-create-choice-template]")&&(i.text=r.template(s.data("createChoiceTemplate"))({term:a})),i}return null},t.allow_html_markup=function(e){return e},t.search_id=function(e){var t=void 0;return void 0!==e.id?t=e.id:void 0!==e.ID?t=e.ID:void 0!==e.value&&(t=e.value),void 0===e?void 0:t},t.matcher=function(a,o){if(""===e.trim(a.term))return o;if(void 0===o.text)return null;var s=e.trim(a.term),i=o.text,n=e(o.element).closest("select").data("dropdown"),d=-1!==i.toUpperCase().indexOf(s.toUpperCase());if(!d&&void 0!==n.tags){var l=r.where(n.tags,{text:i});if(n.tags.length>0&&r.isObject(l))d=-1!==t.search_id(l[0]).toUpperCase().indexOf(s.toUpperCase())}return d},t.init_selection=function(t,r){var a=t.is("[multiple]"),o=t.data("dropdown"),s=(t.data("isEmpty"),t.val().split(o.regexSplit)),i=[];if(e(s).each(function(r,a){var s=function t(r,a){if(!e.isArray(a))return!1;for(var o in a){var s=a[o];if(s.hasOwnProperty("id")&&s.id==r.id)return s;if(s.hasOwnProperty("text")&&s.text==r.text)return s;if(s.hasOwnProperty("children")&&e.isArray(s.children)){var i=t(r,s.children);if(i)return i}}return!1}({id:this,text:this},o.ajax?t.data("options"):o.data);s&&s.selected&&i.push(s)}),i.length&&a)r(i);else{if(!i.length)return void r(!1);r(i[0])}},t.getSelectClasses=function(e){var t=e.attr("class").split(/\s+/);return r.difference(t,["select2-hidden-accessible","hide-before-select2-init"])},t.element=function(a,o){var s,i=e(a);o=e.extend({},o);if(i.addClass(t.selector.created.className()),o.$select=i,o.dropdownAutoWidth=!0,o.width="resolve",o.containerCss={},i.is(":visible")&&(o.containerCss.display="inline-block",o.containerCss.position="relative"),o.dropdownCss={},o.dropdownCss.width="auto",i.is("[data-dropdown-css-width]")&&(o.dropdownCss.width=i.data("dropdown-css-width"),o.dropdownCss.width&&"false"!==o.dropdownCss.width||(delete o.dropdownCss.width,delete o.containerCss)),o.allowClear=!0,i.is("[data-prevent-clear]")&&(o.allowClear=!1),i.is("[data-searching-placeholder]")&&(o.formatSearching=i.data("searching-placeholder")),!i.is("[data-placeholder]")&&i.is("[placeholder]")&&(o.placeholder=i.attr("placeholder")),i.is("[data-allow-html]")&&(o.escapeMarkup=t.allow_html_markup),i.is("[data-options]")&&(o.data=i.data("options")),o.minimumResultsForSearch=10,i.is("[data-hide-search]")&&(o.minimumResultsForSearch=1/0),i.is("[data-force-search]")&&delete o.minimumResultsForSearch,i.is("[data-freeform]")&&(o.createTag=t.freefrom_create_search_choice,o.tags=!0,i.data("tags",!0)),i.is("[multiple]")&&(o.multiple=!0,i.is("[data-maximum-selection-size]")&&(o.maximumSelectionSize=i.data("maximum-selection-size")),i.is("data-separator")||i.data("separator",","),r.isArray(i.data("separator"))?o.tokenSeparators=i.data("separator"):o.tokenSeparators=[i.data("separator")],o.separator=i.data("separator"),o.regexSeparatorElements=["^("],o.regexSplitElements=["(?:"],e.each(o.tokenSeparators,function(e,t){o.regexSeparatorElements.push("[^"+t+"]+"),o.regexSplitElements.push("["+t+"]")}),o.regexSeparatorElements.push(")$"),o.regexSplitElements.push(")"),o.regexSeparatorString=o.regexSeparatorElements.join(""),o.regexSplitString=o.regexSplitElements.join(""),o.regexToken=new RegExp(o.regexSeparatorString,"ig"),o.regexSplit=new RegExp(o.regexSplitString,"ig")),i.is("[data-tags]")&&(o.tags=i.data("tags"),o.createSearchChoice=function(e,t){if(e.match(o.regexToken))return{id:e,text:e}},0===o.tags.length&&(o.formatNoMatches=function(){return i.attr("placeholder")})),i.is("[data-source]")){var n=i.data("source");o.data={results:[]},o.escapeMarkup=t.allow_html_markup,o.formatResult=function(t,r,a){return void 0!==t.breadcrumbs?e.merge(t.breadcrumbs,[t.text]).join(" &#187; "):t.text},o.ajax={dataType:"json",type:"POST",url:t.ajaxurl(),processResults:function(t,r,a){return e.isPlainObject(t)&&void 0!==t.success?e.isPlainObject(t.data)&&void 0!==t.data.results?t.success?t.data:("string"===e.type(t.data.message)?console.error(t.data.message):console.error("The Select2 search failed in some way... Verify the source."),{results:[]}):(console.error("We received a malformed results array, could not complete the Select2 Search."),{results:[]}):(console.error("We received a malformed Object, could not complete the Select2 Search."),{results:[]})}},o.ajax.data=function(e,t){return{action:"tribe_dropdown",source:n,search:e,page:t,args:i.data("source-args")}}}i.data("dropdown",o),(s=i.select2(o)).data("select2").$container.addClass(t.getSelectClasses(i).join(" ")),s.data("select2").$container.removeClass("hide-before-select2-init"),s.on("select2:open",t.action_select2_open)},t.ajaxurl=function(){return void 0!==window.ajaxurl?window.ajaxurl:"undefined"!=typeof TEC&&void 0!==TEC.ajaxurl?TEC.ajaxurl:void console.error("Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.")},t.action_select2_open=function(r){var a=e(this),o=(a.data("dropdown"),a.data("select2")),s=o.$dropdown.find(t.selector.searchField);o.$dropdown.addClass(t.selector.dropdown.className()),a.is("[data-search-placeholder]")&&s.attr("placeholder",a.data("searchPlaceholder"))},t.dropdown=function(e,r){var a=e.not(".select2-offscreen, .select2-container, "+t.selector.created.className());return 0===a.length?a:(r||(r={}),a.each(function(e,a){t.element(a,r)}),a)},e(function(){e(t.selector.dropdown).tribe_dropdowns()}),e(window).on("unload",function(){e(t.selector.dropdown).tribe_dropdowns()})}(jQuery,tribe_dropdowns,window.underscore||window._);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global console, jQuery */
2
+ var tribe_dropdowns = window.tribe_dropdowns || {};
3
+
4
+ ( function( $, obj, _ ) {
5
+ 'use strict';
6
+
7
+ obj.selector = {
8
+ dropdown: '.tribe-dropdown',
9
+ created: '.tribe-dropdown-created',
10
+ searchField: '.select2-search__field',
11
+ };
12
+
13
+ // Setup a Dependent
14
+ $.fn.tribe_dropdowns = function () {
15
+ obj.dropdown( this, {} );
16
+
17
+ return this;
18
+ };
19
+
20
+ obj.freefrom_create_search_choice = function( params ) {
21
+ var term = $.trim( params.term );
22
+
23
+ if ( '' === term ) {
24
+ return null;
25
+ }
26
+
27
+ var args = this.options.options;
28
+ var $select = args.$select;
29
+
30
+ if (
31
+ term.match( args.regexToken )
32
+ && (
33
+ ! $select.is( '[data-int]' )
34
+ || (
35
+ $select.is( '[data-int]' )
36
+ && term.match( /\d+/ )
37
+ )
38
+ )
39
+ ) {
40
+ var choice = { id: term, text: term, new: true };
41
+
42
+ if ( $select.is( '[data-create-choice-template]' ) ) {
43
+ choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } );
44
+ }
45
+
46
+ return choice;
47
+ }
48
+
49
+ return null;
50
+ };
51
+
52
+
53
+ /**
54
+ * Better Search ID for Select2, compatible with WordPress ID from WP_Query
55
+ *
56
+ * @param {object|string} e Searched object or the actual ID
57
+ * @return {string} ID of the object
58
+ */
59
+ obj.search_id = function ( e ) {
60
+ var id = undefined;
61
+
62
+ if ( 'undefined' !== typeof e.id ){
63
+ id = e.id;
64
+ } else if ( 'undefined' !== typeof e.ID ){
65
+ id = e.ID;
66
+ } else if ( 'undefined' !== typeof e.value ){
67
+ id = e.value;
68
+ }
69
+ return undefined === e ? undefined : id;
70
+ };
71
+
72
+ /**
73
+ * Better way of matching results
74
+ *
75
+ * @param {string} term Which term we are searching for
76
+ * @param {string} text Search here
77
+ * @return {boolean}
78
+ */
79
+ obj.matcher = function ( params, data ) {
80
+ // If there are no search terms, return all of the data
81
+ if ( $.trim( params.term ) === '') {
82
+ return data;
83
+ }
84
+
85
+ // Do not display the item if there is no 'text' property
86
+ if ( typeof data.text === 'undefined' ) {
87
+ return null;
88
+ }
89
+
90
+ var term = $.trim( params.term );
91
+ var text = data.text;
92
+ var $select = $( data.element ).closest( 'select' );
93
+ var args = $select.data( 'dropdown' );
94
+ var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1;
95
+
96
+ if ( ! result && 'undefined' !== typeof args.tags ){
97
+ var possible = _.where( args.tags, { text: text } );
98
+ if ( args.tags.length > 0 && _.isObject( possible ) ){
99
+ var test_value = obj.search_id( possible[0] );
100
+ result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1;
101
+ }
102
+ }
103
+
104
+ return result;
105
+ };
106
+
107
+ /**
108
+ * If the element used as the basis of a dropdown specifies one or more numeric/text
109
+ * identifiers in its val attribute, then use those to preselect the appropriate options.
110
+ *
111
+ * @param {object} $select
112
+ * @param {function} make_selection
113
+ */
114
+ obj.init_selection = function( $select, make_selection ) {
115
+ var isMultiple = $select.is( '[multiple]' );
116
+ var options = $select.data( 'dropdown' );
117
+ var isEmpty = $select.data( 'isEmpty' );
118
+ var currentValues = $select.val().split( options.regexSplit );
119
+ var selectedItems = [];
120
+
121
+ $( currentValues ).each( function( index, value ) {
122
+ var searchFor = { id: this, text: this };
123
+ var data = options.ajax ? $select.data( 'options' ) : options.data;
124
+ var locatedItem = find_item( searchFor, data );
125
+
126
+ if ( locatedItem && locatedItem.selected ) {
127
+ selectedItems.push( locatedItem );
128
+ }
129
+ } );
130
+
131
+ if ( selectedItems.length && isMultiple ) {
132
+ make_selection( selectedItems );
133
+ } else if ( selectedItems.length ) {
134
+ make_selection( selectedItems[ 0 ] );
135
+ } else {
136
+ make_selection( false );
137
+ return;
138
+ }
139
+ };
140
+
141
+ /**
142
+ * Searches array 'haystack' for objects that match 'description'.
143
+ *
144
+ * The 'description' object should take the form { id: number, text: string }. The first
145
+ * object within the haystack that matches one of those two properties will be returned.
146
+ *
147
+ * If objects contain an array named 'children', then that array will also be searched.
148
+ *
149
+ * @param {Object} description
150
+ * @param {Array} haystack
151
+ *
152
+ * @return {Object|boolean}
153
+ */
154
+ function find_item( description, haystack ) {
155
+ if ( ! $.isArray( haystack ) ) {
156
+ return false;
157
+ }
158
+
159
+ for ( var index in haystack ) {
160
+ var possible_match = haystack[ index ];
161
+
162
+ if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) {
163
+ return possible_match;
164
+ }
165
+
166
+ if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) {
167
+ return possible_match;
168
+ }
169
+
170
+ if ( possible_match.hasOwnProperty( 'children' ) && $.isArray( possible_match.children ) ) {
171
+ var subsearch = find_item( description, possible_match.children );
172
+
173
+ if ( subsearch ) {
174
+ return subsearch;
175
+ }
176
+ }
177
+ }
178
+
179
+ return false;
180
+ }
181
+
182
+ obj.getSelectClasses = function( $select ) {
183
+ var classesToRemove = [
184
+ 'select2-hidden-accessible',
185
+ 'hide-before-select2-init',
186
+ ];
187
+ var originalClasses = $select.attr( 'class' ).split( /\s+/ );
188
+ return _.difference( originalClasses, classesToRemove );
189
+ };
190
+
191
+ obj.element = function( field, args ) {
192
+ var $select = $( field );
193
+ var args = $.extend( {}, args );
194
+ var carryOverData = [
195
+ 'depends',
196
+ 'condition',
197
+ 'conditionNot',
198
+ 'condition-not',
199
+ 'conditionNotEmpty',
200
+ 'condition-not-empty',
201
+ 'conditionEmpty',
202
+ 'condition-empty',
203
+ 'conditionIsNumeric',
204
+ 'condition-is-numeric',
205
+ 'conditionIsNotNumeric',
206
+ 'condition-is-not-numeric',
207
+ 'conditionChecked',
208
+ 'condition-is-checked',
209
+ ];
210
+
211
+ var $container;
212
+
213
+ // Add a class for dropdown created
214
+ $select.addClass( obj.selector.created.className() );
215
+
216
+ // args.debug = true;
217
+
218
+ // For Reference we save the jQuery element as an Arg.
219
+ args.$select = $select;
220
+
221
+ // Auto define the Width of the Select2.
222
+ args.dropdownAutoWidth = true;
223
+ args.width = 'resolve';
224
+
225
+ // CSS for the container
226
+ args.containerCss = {};
227
+
228
+ // Only apply visibility when it's a Visible Select2.
229
+ if ( $select.is( ':visible' ) ) {
230
+ args.containerCss.display = 'inline-block';
231
+ args.containerCss.position = 'relative';
232
+ }
233
+
234
+ // CSS for the dropdown
235
+ args.dropdownCss = {};
236
+ args.dropdownCss.width = 'auto';
237
+
238
+ // When we have this we replace the default with what's in the param.
239
+ if ( $select.is( '[data-dropdown-css-width]' ) ) {
240
+ args.dropdownCss.width = $select.data( 'dropdown-css-width' );
241
+
242
+ if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) {
243
+ delete args.dropdownCss.width;
244
+ delete args.containerCss;
245
+ }
246
+ }
247
+
248
+ // By default we allow The field to be cleared
249
+ args.allowClear = true;
250
+ if ( $select.is( '[data-prevent-clear]' ) ) {
251
+ args.allowClear = false;
252
+ }
253
+
254
+ // Pass the "Searching..." placeholder if specified
255
+ if ( $select.is( '[data-searching-placeholder]' ) ) {
256
+ args.formatSearching = $select.data( 'searching-placeholder' );
257
+ }
258
+
259
+ // If we are dealing with a Input Hidden we need to set the Data for it to work
260
+ if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) {
261
+ args.placeholder = $select.attr( 'placeholder' );
262
+ }
263
+
264
+ // Don't Remove HTML elements or escape elements
265
+ if ( $select.is( '[data-allow-html]' ) ) {
266
+
267
+ }
268
+
269
+ // If we are dealing with a Input Hidden we need to set the Data for it to work.
270
+ if ( $select.is( '[data-options]' ) ) {
271
+ args.data = $select.data( 'options' );
272
+ }
273
+
274
+ // With less then 10 args we wouldn't show the search.
275
+ args.minimumResultsForSearch = 10;
276
+
277
+ // Prevents the Search box to show
278
+ if ( $select.is( '[data-hide-search]' ) ) {
279
+ args.minimumResultsForSearch = Infinity;
280
+ }
281
+
282
+ // Makes sure search shows up.
283
+ if ( $select.is( '[data-force-search]' ) ) {
284
+ delete args.minimumResultsForSearch;
285
+ }
286
+
287
+ // Allows freeform entry
288
+ if ( $select.is( '[data-freeform]' ) ) {
289
+ args.createTag = obj.freefrom_create_search_choice;
290
+ args.tags = true;
291
+ $select.data( 'tags', true );
292
+ }
293
+
294
+ if ( $select.is( '[multiple]' ) ) {
295
+ args.multiple = true;
296
+
297
+ // Set the max select items, if defined
298
+ if ( $select.is( '[data-maximum-selection-size]' ) ) {
299
+ args.maximumSelectionSize = $select.data( 'maximum-selection-size' );
300
+ }
301
+
302
+ // If you don't have separator, add one (comma)
303
+ if ( ! $select.is( 'data-separator' ) ) {
304
+ $select.data( 'separator', ',' );
305
+ }
306
+
307
+ if ( ! _.isArray( $select.data( 'separator' ) ) ) {
308
+ args.tokenSeparators = [ $select.data( 'separator' ) ];
309
+ } else {
310
+ args.tokenSeparators = $select.data( 'separator' );
311
+ }
312
+ args.separator = $select.data( 'separator' );
313
+
314
+ // Define the regular Exp based on
315
+ args.regexSeparatorElements = [ '^(' ];
316
+ args.regexSplitElements = [ '(?:' ];
317
+ $.each( args.tokenSeparators, function ( i, token ) {
318
+ args.regexSeparatorElements.push( '[^' + token + ']+' );
319
+ args.regexSplitElements.push( '[' + token + ']' );
320
+ } );
321
+ args.regexSeparatorElements.push( ')$' );
322
+ args.regexSplitElements.push( ')' );
323
+
324
+ args.regexSeparatorString = args.regexSeparatorElements.join( '' );
325
+ args.regexSplitString = args.regexSplitElements.join( '' );
326
+
327
+ args.regexToken = new RegExp( args.regexSeparatorString, 'ig' );
328
+ args.regexSplit = new RegExp( args.regexSplitString, 'ig' );
329
+ }
330
+
331
+ // Select also allows Tags, so we go with that too
332
+ if ( $select.is( '[data-tags]' ) ) {
333
+ args.tags = $select.data( 'tags' );
334
+
335
+ args.createSearchChoice = function( term, data ) {
336
+ if ( term.match( args.regexToken ) ) {
337
+ return { id: term, text: term };
338
+ }
339
+ };
340
+
341
+ if ( 0 === args.tags.length ) {
342
+ args.formatNoMatches = function() {
343
+ return $select.attr( 'placeholder' );
344
+ };
345
+ }
346
+ }
347
+
348
+ // When we have a source, we do an AJAX call
349
+ if ( $select.is( '[data-source]' ) ) {
350
+ var source = $select.data( 'source' );
351
+
352
+ // For AJAX we reset the data
353
+ args.data = { results: [] };
354
+
355
+ // Allows HTML from Select2 AJAX calls
356
+
357
+
358
+ // Format for Parents breadcrumbs
359
+ args.formatResult = function ( item, container, query ) {
360
+ if ( 'undefined' !== typeof item.breadcrumbs ) {
361
+ return $.merge( item.breadcrumbs, [ item.text ] ).join( ' &#187; ' );
362
+ }
363
+
364
+ return item.text;
365
+ };
366
+
367
+ // instead of writing the function to execute the request we use Select2's convenient helper.
368
+ args.ajax = {
369
+ dataType: 'json',
370
+ type: 'POST',
371
+ url: obj.ajaxurl(),
372
+
373
+ // parse the results into the format expected by Select2.
374
+ processResults: function ( response, page, query ) {
375
+ if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) {
376
+ console.error( 'We received a malformed Object, could not complete the Select2 Search.' );
377
+ return { results: [] };
378
+ }
379
+
380
+ if (
381
+ ! $.isPlainObject( response.data )
382
+ || 'undefined' === typeof response.data.results
383
+ ) {
384
+ console.error( 'We received a malformed results array, could not complete the Select2 Search.' );
385
+ return { results: [] };
386
+ }
387
+
388
+ if ( ! response.success ) {
389
+ if ( 'string' === $.type( response.data.message ) ) {
390
+ console.error( response.data.message );
391
+ } else {
392
+ console.error( 'The Select2 search failed in some way... Verify the source.' );
393
+ }
394
+ return { results: [] };
395
+ }
396
+
397
+ return response.data;
398
+ },
399
+ };
400
+
401
+ // By default only send the source
402
+ args.ajax.data = function( search, page ) {
403
+ return {
404
+ action: 'tribe_dropdown',
405
+ source: source,
406
+ search: search,
407
+ page: page,
408
+ args: $select.data( 'source-args' ),
409
+ };
410
+ };
411
+ }
412
+
413
+ // Save data on Dropdown
414
+ $select.data( 'dropdown', args );
415
+
416
+ $container = $select.select2( args );
417
+
418
+ // Propagating original input classes to the select2 container.
419
+ $container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) );
420
+
421
+ // Propagating original input classes to the select2 container.
422
+ $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' );
423
+
424
+ $container.on( 'select2:open', obj.action_select2_open );
425
+
426
+ /**
427
+ * @todo @bordoni Investigate how and if we should be doing this.
428
+ *
429
+ if ( carryOverData.length > 0 ) {
430
+ carryOverData.map( function( dataKey ) {
431
+ var attr = 'data-' + dataKey;
432
+ var val = $select.attr( attr );
433
+
434
+ if ( ! val ) {
435
+ return;
436
+ }
437
+
438
+ this.attr( attr, val );
439
+ }, $container );
440
+ }
441
+ */
442
+ };
443
+
444
+ obj.ajaxurl = function() {
445
+ if ( 'undefined' !== typeof window.ajaxurl ) {
446
+ return window.ajaxurl;
447
+ }
448
+
449
+ if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) {
450
+ return TEC.ajaxurl;
451
+ }
452
+
453
+ console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' );
454
+ };
455
+
456
+ obj.action_select2_open = function( event ) {
457
+ var $select = $( this );
458
+ var args = $select.data( 'dropdown' );
459
+ var select2Data = $select.data( 'select2' );
460
+ var $search = select2Data.$dropdown.find( obj.selector.searchField );
461
+
462
+ select2Data.$dropdown.addClass( obj.selector.dropdown.className() );
463
+
464
+ // If we have a placeholder for search, apply it!
465
+ if ( $select.is( '[data-search-placeholder]' ) ) {
466
+ $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) );
467
+ }
468
+ };
469
+
470
+ /**
471
+ * Configure the Drop Down Fields
472
+ *
473
+ * @param {jQuery} $fields All the fields from the page
474
+ * @param {array} args Allow extending the arguments
475
+ *
476
+ * @return {jQuery} Affected fields
477
+ */
478
+ obj.dropdown = function( $fields, args ) {
479
+ var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() );
480
+
481
+ if ( 0 === $elements.length ) {
482
+ return $elements;
483
+ }
484
+
485
+ // Default args to avoid Undefined
486
+ if ( ! args ) {
487
+ args = {};
488
+ }
489
+
490
+ $elements
491
+ .each( function( index, element ) {
492
+ // Apply element to all given items and pass args
493
+ obj.element( element, args );
494
+ } );
495
+
496
+ // return to be able to chain jQuery calls
497
+ return $elements;
498
+ };
499
+
500
+ $( function() {
501
+ $( obj.selector.dropdown ).tribe_dropdowns();
502
+ } );
503
+
504
+ // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button.
505
+ $( window ).on( 'unload', function() {
506
+ $( obj.selector.dropdown ).tribe_dropdowns();
507
+ });
508
+
509
+ } )( jQuery, tribe_dropdowns, window.underscore || window._ );
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit6107a73919450822ae4345b56c4c86ce::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitec1ed31b7e2212d2d6a7fe51f40aef41::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 ComposerAutoloaderInit86cf64cc2f7f0973061caa403c6110ef::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitc014d04d96d428f7452d8399bf2e9826::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -137,7 +137,6 @@ return array(
137
  'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
138
  'Tribe\\Utils\\Date_I18n' => $baseDir . '/src/Tribe/Utils/Date_I18n.php',
139
  'Tribe\\Utils\\Date_I18n_Immutable' => $baseDir . '/src/Tribe/Utils/Date_I18n_Immutable.php',
140
- 'Tribe\\Utils\\Element_Attributes' => $baseDir . '/src/Tribe/Utils/Element_Attributes.php',
141
  'Tribe\\Utils\\Element_Classes' => $baseDir . '/src/Tribe/Utils/Element_Classes.php',
142
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
143
  'Tribe\\Utils\\Lazy_Events' => $baseDir . '/src/Tribe/Utils/Lazy_Events.php',
137
  'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
138
  'Tribe\\Utils\\Date_I18n' => $baseDir . '/src/Tribe/Utils/Date_I18n.php',
139
  'Tribe\\Utils\\Date_I18n_Immutable' => $baseDir . '/src/Tribe/Utils/Date_I18n_Immutable.php',
 
140
  'Tribe\\Utils\\Element_Classes' => $baseDir . '/src/Tribe/Utils/Element_Classes.php',
141
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
142
  'Tribe\\Utils\\Lazy_Events' => $baseDir . '/src/Tribe/Utils/Lazy_Events.php',
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6107a73919450822ae4345b56c4c86ce
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit6107a73919450822ae4345b56c4c86ce
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6107a73919450822ae4345b56c4c86ce', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6107a73919450822ae4345b56c4c86ce', '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\ComposerStaticInit6107a73919450822ae4345b56c4c86ce::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 ComposerAutoloaderInitec1ed31b7e2212d2d6a7fe51f40aef41
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitec1ed31b7e2212d2d6a7fe51f40aef41', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitec1ed31b7e2212d2d6a7fe51f40aef41', '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\ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41::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 ComposerAutoloaderInit86cf64cc2f7f0973061caa403c6110ef {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit86cf64cc2f7f0973061caa403c6110ef {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit86cf64cc2f7f0973061caa403c6110ef', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit86cf64cc2f7f0973061caa403c6110ef', '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 ComposerAutoloaderInitc014d04d96d428f7452d8399bf2e9826 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitc014d04d96d428f7452d8399bf2e9826', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitc014d04d96d428f7452d8399bf2e9826', '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 ComposerStaticInit6107a73919450822ae4345b56c4c86ce
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -193,7 +193,6 @@ class ComposerStaticInit6107a73919450822ae4345b56c4c86ce
193
  'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
194
  'Tribe\\Utils\\Date_I18n' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n.php',
195
  'Tribe\\Utils\\Date_I18n_Immutable' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n_Immutable.php',
196
- 'Tribe\\Utils\\Element_Attributes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Element_Attributes.php',
197
  'Tribe\\Utils\\Element_Classes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Element_Classes.php',
198
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
199
  'Tribe\\Utils\\Lazy_Events' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Events.php',
@@ -213,10 +212,10 @@ class ComposerStaticInit6107a73919450822ae4345b56c4c86ce
213
  public static function getInitializer(ClassLoader $loader)
214
  {
215
  return \Closure::bind(function () use ($loader) {
216
- $loader->prefixLengthsPsr4 = ComposerStaticInit6107a73919450822ae4345b56c4c86ce::$prefixLengthsPsr4;
217
- $loader->prefixDirsPsr4 = ComposerStaticInit6107a73919450822ae4345b56c4c86ce::$prefixDirsPsr4;
218
- $loader->prefixesPsr0 = ComposerStaticInit6107a73919450822ae4345b56c4c86ce::$prefixesPsr0;
219
- $loader->classMap = ComposerStaticInit6107a73919450822ae4345b56c4c86ce::$classMap;
220
 
221
  }, null, ClassLoader::class);
222
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
193
  'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
194
  'Tribe\\Utils\\Date_I18n' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n.php',
195
  'Tribe\\Utils\\Date_I18n_Immutable' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n_Immutable.php',
 
196
  'Tribe\\Utils\\Element_Classes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Element_Classes.php',
197
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
198
  'Tribe\\Utils\\Lazy_Events' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Events.php',
212
  public static function getInitializer(ClassLoader $loader)
213
  {
214
  return \Closure::bind(function () use ($loader) {
215
+ $loader->prefixLengthsPsr4 = ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41::$prefixLengthsPsr4;
216
+ $loader->prefixDirsPsr4 = ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41::$prefixDirsPsr4;
217
+ $loader->prefixesPsr0 = ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41::$prefixesPsr0;
218
+ $loader->classMap = ComposerStaticInitec1ed31b7e2212d2d6a7fe51f40aef41::$classMap;
219
 
220
  }, null, ClassLoader::class);
221
  }
lang/the-events-calendar-bg_BG.mo CHANGED
Binary file
lang/the-events-calendar-cs_CZ.mo CHANGED
Binary file
lang/the-events-calendar-de_CH.mo CHANGED
Binary file
lang/the-events-calendar-de_DE.mo CHANGED
Binary file
lang/the-events-calendar-en_AU.mo CHANGED
Binary file
lang/the-events-calendar-en_CA.mo CHANGED
Binary file
lang/the-events-calendar-en_GB.mo CHANGED
Binary file
lang/the-events-calendar-en_NZ.mo CHANGED
Binary file
lang/the-events-calendar-en_ZA.mo CHANGED
Binary file
lang/the-events-calendar-es_ES.mo CHANGED
Binary file
lang/the-events-calendar-es_MX.mo CHANGED
Binary file
lang/the-events-calendar-es_VE.mo CHANGED
Binary file
lang/the-events-calendar-eu.mo CHANGED
Binary file
lang/the-events-calendar-fi.mo CHANGED
Binary file
lang/the-events-calendar-fr_CA.mo CHANGED
Binary file
lang/the-events-calendar-fr_FR.mo CHANGED
Binary file
lang/the-events-calendar-gl_ES.mo CHANGED
Binary file
lang/the-events-calendar-hr.mo CHANGED
Binary file
lang/the-events-calendar-hu_HU.mo CHANGED
Binary file
lang/the-events-calendar-is_IS.mo CHANGED
Binary file
lang/the-events-calendar-it_IT.mo CHANGED
Binary file
lang/the-events-calendar-ja.mo CHANGED
Binary file
lang/the-events-calendar-lt_LT.mo CHANGED
Binary file
lang/the-events-calendar-nb_NO.mo CHANGED
Binary file
lang/the-events-calendar-nl_NL.mo CHANGED
Binary file
lang/the-events-calendar-nn_NO.mo CHANGED
Binary file
lang/the-events-calendar-pl_PL.mo CHANGED
Binary file
lang/the-events-calendar-pt_BR.mo CHANGED
Binary file
lang/the-events-calendar-pt_PT.mo CHANGED
Binary file
lang/the-events-calendar-ro_RO.mo CHANGED
Binary file
lang/the-events-calendar-ru_RU.mo CHANGED
Binary file
lang/the-events-calendar-sk_SK.mo CHANGED
Binary file
lang/the-events-calendar-sl_SI.mo CHANGED
Binary file
lang/the-events-calendar-sr_RS.mo CHANGED
Binary file
lang/the-events-calendar-sv_SE.mo CHANGED
Binary file
lang/the-events-calendar-tr_TR.mo CHANGED
Binary file
lang/the-events-calendar-uk.mo CHANGED
Binary file
lang/the-events-calendar.pot CHANGED
@@ -5,11 +5,11 @@ msgstr ""
5
  "Project-Id-Version: The Events Calendar 5.1.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
- "POT-Creation-Date: 2020-05-26 16:17:09+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-05-27 16:17\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:4166
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  msgstr ""
@@ -58,7 +58,7 @@ 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:2037
61
- #: src/Tribe/Main.php:5262 src/Tribe/Main.php:5309 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:4214
73
  msgid "Settings"
74
  msgstr ""
75
 
@@ -1851,7 +1851,7 @@ msgid ""
1851
  "%enddatewithyear%%."
1852
  msgstr ""
1853
 
1854
- #: src/Tribe/Cost_Utils.php:137
1855
  msgctxt "Cost range separator"
1856
  msgid " – "
1857
  msgstr ""
@@ -3079,195 +3079,195 @@ msgstr ""
3079
  msgid " (View Full %1$s Description Here: %2$s)"
3080
  msgstr ""
3081
 
3082
- #: src/Tribe/Main.php:3612 src/Tribe/Main.php:3647
3083
  #: src/functions/template-tags/day.php:157
3084
  #: src/functions/template-tags/day.php:178
3085
  msgid "Date out of range."
3086
  msgstr ""
3087
 
3088
- #: src/Tribe/Main.php:3689
3089
  msgid "%s Options"
3090
  msgstr ""
3091
 
3092
- #: src/Tribe/Main.php:3698 src/Tribe/Main.php:3711
3093
  msgid "%s Information"
3094
  msgstr ""
3095
 
3096
- #: src/Tribe/Main.php:4040
3097
  msgid "Support"
3098
  msgstr ""
3099
 
3100
- #: src/Tribe/Main.php:4043
3101
  msgid "View All Add-Ons"
3102
  msgstr ""
3103
 
3104
- #: src/Tribe/Main.php:4063
3105
  msgid "News from Modern Tribe"
3106
  msgstr ""
3107
 
3108
- #: src/Tribe/Main.php:4108
3109
  msgid "Additional Functionality"
3110
  msgstr ""
3111
 
3112
- #: src/Tribe/Main.php:4113
3113
  msgid ""
3114
  "Looking for additional functionality including recurring events, ticket "
3115
  "sales, publicly submitted events, new views and more?"
3116
  msgstr ""
3117
 
3118
- #: src/Tribe/Main.php:4114
3119
  msgid "Check out the %savailable add-ons%s."
3120
  msgstr ""
3121
 
3122
- #: src/Tribe/Main.php:4215
3123
  msgid "Calendar"
3124
  msgstr ""
3125
 
3126
- #: src/Tribe/Main.php:4231
3127
  msgid "List"
3128
  msgstr ""
3129
 
3130
- #: src/Tribe/Main.php:4249
3131
  msgid "Month"
3132
  msgstr ""
3133
 
3134
- #: src/Tribe/Main.php:4266 src/admin-views/aggregator/fields/schedule.php:43
3135
  #: src/admin-views/aggregator/fields/schedule.php:61
3136
  msgid "Day"
3137
  msgstr ""
3138
 
3139
- #: src/Tribe/Main.php:4289
3140
  msgid "Search for %s by Keyword."
3141
  msgstr ""
3142
 
3143
- #: src/Tribe/Main.php:4292
3144
  #: src/views/v2/components/events-bar/search-button.php:25
3145
  msgid "Search"
3146
  msgstr ""
3147
 
3148
- #: src/Tribe/Main.php:4293
3149
  msgid "Keyword"
3150
  msgstr ""
3151
 
3152
- #: src/Tribe/Main.php:4310
3153
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3154
  msgstr ""
3155
 
3156
- #: src/Tribe/Main.php:4311
3157
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3158
  msgstr ""
3159
 
3160
- #: src/Tribe/Main.php:4312
3161
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3162
  msgstr ""
3163
 
3164
- #: src/Tribe/Main.php:4313
3165
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3166
  msgstr ""
3167
 
3168
- #: src/Tribe/Main.php:4314
3169
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3170
  msgstr ""
3171
 
3172
- #: src/Tribe/Main.php:4315
3173
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3174
  msgstr ""
3175
 
3176
- #: src/Tribe/Main.php:4316
3177
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3178
  msgstr ""
3179
 
3180
- #: src/Tribe/Main.php:4317
3181
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3182
  msgstr ""
3183
 
3184
- #: src/Tribe/Main.php:4318
3185
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3186
  msgstr ""
3187
 
3188
- #: src/Tribe/Main.php:4319
3189
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3190
  msgstr ""
3191
 
3192
- #: src/Tribe/Main.php:4320
3193
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3194
  msgstr ""
3195
 
3196
- #: src/Tribe/Main.php:4321
3197
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3198
  msgstr ""
3199
 
3200
- #: src/Tribe/Main.php:4325
3201
  msgid "4 digit year hyphen 2 digit month"
3202
  msgstr ""
3203
 
3204
- #: src/Tribe/Main.php:4326 src/Tribe/Main.php:4328
3205
  msgid "1 digit month slash 4 digit year"
3206
  msgstr ""
3207
 
3208
- #: src/Tribe/Main.php:4327 src/Tribe/Main.php:4329
3209
  msgid "2 digit month slash 4 digit year"
3210
  msgstr ""
3211
 
3212
- #: src/Tribe/Main.php:4330 src/Tribe/Main.php:4331 src/Tribe/Main.php:4332
3213
  msgid "1 digit month hyphen 4 digit year"
3214
  msgstr ""
3215
 
3216
- #: src/Tribe/Main.php:4333
3217
  msgid "2 digit month hyphen 4 digit year"
3218
  msgstr ""
3219
 
3220
- #: src/Tribe/Main.php:4334
3221
  msgid "4 digit year dot 2 digit month"
3222
  msgstr ""
3223
 
3224
- #: src/Tribe/Main.php:4335 src/Tribe/Main.php:4336
3225
  msgid "2 digit month dot 4 digit year"
3226
  msgstr ""
3227
 
3228
- #: src/Tribe/Main.php:4365 src/Tribe/Main.php:4402
3229
  #: src/admin-views/aggregator/origins/refine.php:7
3230
  msgid "Date"
3231
  msgstr ""
3232
 
3233
- #: src/Tribe/Main.php:4367
3234
  msgid "Search for %s by Date. Please use the format %s."
3235
  msgstr ""
3236
 
3237
- #: src/Tribe/Main.php:4380
3238
  msgid "%s In"
3239
  msgstr ""
3240
 
3241
- #: src/Tribe/Main.php:4382
3242
  msgid "Search for %s by month. Please use the format %s."
3243
  msgstr ""
3244
 
3245
- #: src/Tribe/Main.php:4385
3246
  msgid "%s From"
3247
  msgstr ""
3248
 
3249
- #: src/Tribe/Main.php:4388
3250
  msgid "Day Of"
3251
  msgstr ""
3252
 
3253
- #: src/Tribe/Main.php:4468
3254
  msgid "Once Every 30 Mins"
3255
  msgstr ""
3256
 
3257
- #: src/Tribe/Main.php:5195
3258
  msgid ""
3259
  "Your version of The Events Calendar is not up-to-date with one of your The "
3260
  "Events Calendar add-ons. Please %supdate now.%s"
3261
  msgstr ""
3262
 
3263
- #: src/Tribe/Main.php:5207
3264
  msgid ""
3265
  "The following plugins are out of date: %1$s. All add-ons contain "
3266
  "dependencies on The Events Calendar and will not function properly unless "
3267
  "paired with the right version. %2$sLearn More%3$s."
3268
  msgstr ""
3269
 
3270
- #: src/Tribe/Main.php:5246 src/Tribe/Main.php:5303
3271
  msgid "Use Saved %s:"
3272
  msgstr ""
3273
 
5
  "Project-Id-Version: The Events Calendar 5.1.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
7
  "calendar\n"
8
+ "POT-Creation-Date: 2020-05-11 02:40:55+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-05-11 02:40\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:4161
51
  #: src/admin-views/tribe-options-upgrade.php:20
52
  msgid "View Calendar"
53
  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:2037
61
+ #: src/Tribe/Main.php:5257 src/Tribe/Main.php:5304 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:4209
73
  msgid "Settings"
74
  msgstr ""
75
 
1851
  "%enddatewithyear%%."
1852
  msgstr ""
1853
 
1854
+ #: src/Tribe/Cost_Utils.php:130
1855
  msgctxt "Cost range separator"
1856
  msgid " – "
1857
  msgstr ""
3079
  msgid " (View Full %1$s Description Here: %2$s)"
3080
  msgstr ""
3081
 
3082
+ #: src/Tribe/Main.php:3607 src/Tribe/Main.php:3642
3083
  #: src/functions/template-tags/day.php:157
3084
  #: src/functions/template-tags/day.php:178
3085
  msgid "Date out of range."
3086
  msgstr ""
3087
 
3088
+ #: src/Tribe/Main.php:3684
3089
  msgid "%s Options"
3090
  msgstr ""
3091
 
3092
+ #: src/Tribe/Main.php:3693 src/Tribe/Main.php:3706
3093
  msgid "%s Information"
3094
  msgstr ""
3095
 
3096
+ #: src/Tribe/Main.php:4035
3097
  msgid "Support"
3098
  msgstr ""
3099
 
3100
+ #: src/Tribe/Main.php:4038
3101
  msgid "View All Add-Ons"
3102
  msgstr ""
3103
 
3104
+ #: src/Tribe/Main.php:4058
3105
  msgid "News from Modern Tribe"
3106
  msgstr ""
3107
 
3108
+ #: src/Tribe/Main.php:4103
3109
  msgid "Additional Functionality"
3110
  msgstr ""
3111
 
3112
+ #: src/Tribe/Main.php:4108
3113
  msgid ""
3114
  "Looking for additional functionality including recurring events, ticket "
3115
  "sales, publicly submitted events, new views and more?"
3116
  msgstr ""
3117
 
3118
+ #: src/Tribe/Main.php:4109
3119
  msgid "Check out the %savailable add-ons%s."
3120
  msgstr ""
3121
 
3122
+ #: src/Tribe/Main.php:4210
3123
  msgid "Calendar"
3124
  msgstr ""
3125
 
3126
+ #: src/Tribe/Main.php:4226
3127
  msgid "List"
3128
  msgstr ""
3129
 
3130
+ #: src/Tribe/Main.php:4244
3131
  msgid "Month"
3132
  msgstr ""
3133
 
3134
+ #: src/Tribe/Main.php:4261 src/admin-views/aggregator/fields/schedule.php:43
3135
  #: src/admin-views/aggregator/fields/schedule.php:61
3136
  msgid "Day"
3137
  msgstr ""
3138
 
3139
+ #: src/Tribe/Main.php:4284
3140
  msgid "Search for %s by Keyword."
3141
  msgstr ""
3142
 
3143
+ #: src/Tribe/Main.php:4287
3144
  #: src/views/v2/components/events-bar/search-button.php:25
3145
  msgid "Search"
3146
  msgstr ""
3147
 
3148
+ #: src/Tribe/Main.php:4288
3149
  msgid "Keyword"
3150
  msgstr ""
3151
 
3152
+ #: src/Tribe/Main.php:4305
3153
  msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
3154
  msgstr ""
3155
 
3156
+ #: src/Tribe/Main.php:4306
3157
  msgid "1 digit month slash 1 digit day slash 4 digit year"
3158
  msgstr ""
3159
 
3160
+ #: src/Tribe/Main.php:4307
3161
  msgid "2 digit month slash 2 digit day slash 4 digit year"
3162
  msgstr ""
3163
 
3164
+ #: src/Tribe/Main.php:4308
3165
  msgid "1 digit day slash 1 digit month slash 4 digit year"
3166
  msgstr ""
3167
 
3168
+ #: src/Tribe/Main.php:4309
3169
  msgid "2 digit day slash 2 digit month slash 4 digit year"
3170
  msgstr ""
3171
 
3172
+ #: src/Tribe/Main.php:4310
3173
  msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
3174
  msgstr ""
3175
 
3176
+ #: src/Tribe/Main.php:4311
3177
  msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
3178
  msgstr ""
3179
 
3180
+ #: src/Tribe/Main.php:4312
3181
  msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
3182
  msgstr ""
3183
 
3184
+ #: src/Tribe/Main.php:4313
3185
  msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
3186
  msgstr ""
3187
 
3188
+ #: src/Tribe/Main.php:4314
3189
  msgid "4 digit year dot 2 digit month dot 2 digit day"
3190
  msgstr ""
3191
 
3192
+ #: src/Tribe/Main.php:4315
3193
  msgid "2 digit month dot 2 digit day dot 4 digit year"
3194
  msgstr ""
3195
 
3196
+ #: src/Tribe/Main.php:4316
3197
  msgid "2 digit day dot 2 digit month dot 4 digit year"
3198
  msgstr ""
3199
 
3200
+ #: src/Tribe/Main.php:4320
3201
  msgid "4 digit year hyphen 2 digit month"
3202
  msgstr ""
3203
 
3204
+ #: src/Tribe/Main.php:4321 src/Tribe/Main.php:4323
3205
  msgid "1 digit month slash 4 digit year"
3206
  msgstr ""
3207
 
3208
+ #: src/Tribe/Main.php:4322 src/Tribe/Main.php:4324
3209
  msgid "2 digit month slash 4 digit year"
3210
  msgstr ""
3211
 
3212
+ #: src/Tribe/Main.php:4325 src/Tribe/Main.php:4326 src/Tribe/Main.php:4327
3213
  msgid "1 digit month hyphen 4 digit year"
3214
  msgstr ""
3215
 
3216
+ #: src/Tribe/Main.php:4328
3217
  msgid "2 digit month hyphen 4 digit year"
3218
  msgstr ""
3219
 
3220
+ #: src/Tribe/Main.php:4329
3221
  msgid "4 digit year dot 2 digit month"
3222
  msgstr ""
3223
 
3224
+ #: src/Tribe/Main.php:4330 src/Tribe/Main.php:4331
3225
  msgid "2 digit month dot 4 digit year"
3226
  msgstr ""
3227
 
3228
+ #: src/Tribe/Main.php:4360 src/Tribe/Main.php:4397
3229
  #: src/admin-views/aggregator/origins/refine.php:7
3230
  msgid "Date"
3231
  msgstr ""
3232
 
3233
+ #: src/Tribe/Main.php:4362
3234
  msgid "Search for %s by Date. Please use the format %s."
3235
  msgstr ""
3236
 
3237
+ #: src/Tribe/Main.php:4375
3238
  msgid "%s In"
3239
  msgstr ""
3240
 
3241
+ #: src/Tribe/Main.php:4377
3242
  msgid "Search for %s by month. Please use the format %s."
3243
  msgstr ""
3244
 
3245
+ #: src/Tribe/Main.php:4380
3246
  msgid "%s From"
3247
  msgstr ""
3248
 
3249
+ #: src/Tribe/Main.php:4383
3250
  msgid "Day Of"
3251
  msgstr ""
3252
 
3253
+ #: src/Tribe/Main.php:4463
3254
  msgid "Once Every 30 Mins"
3255
  msgstr ""
3256
 
3257
+ #: src/Tribe/Main.php:5190
3258
  msgid ""
3259
  "Your version of The Events Calendar is not up-to-date with one of your The "
3260
  "Events Calendar add-ons. Please %supdate now.%s"
3261
  msgstr ""
3262
 
3263
+ #: src/Tribe/Main.php:5202
3264
  msgid ""
3265
  "The following plugins are out of date: %1$s. All add-ons contain "
3266
  "dependencies on The Events Calendar and will not function properly unless "
3267
  "paired with the right version. %2$sLearn More%3$s."
3268
  msgstr ""
3269
 
3270
+ #: src/Tribe/Main.php:5241 src/Tribe/Main.php:5298
3271
  msgid "Use Saved %s:"
3272
  msgstr ""
3273
 
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
7
- Stable tag: 5.1.2
8
  Tested up to: 5.4.1
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
@@ -14,117 +14,74 @@ The Events Calendar is a carefully crafted, extensible plugin that lets you easi
14
 
15
  == Description ==
16
 
17
- Easily create and manage an events calendar on your website with [The Events Calendar](https://m.tri.be/mj). Whether your events are in-person or virtual events, this plugin boasts professional features backed by our world-class team of developers and designers.
18
 
19
- https://vimeo.com/425323974
20
 
21
- Packed with loads of features, The Events Calendar by Modern Tribe is ready to go out of the box. It’s also extensible, easy to use, and completely customizable.
22
 
23
- = 📅 The #1 Calendar for WordPress =
24
 
25
- See the calendar in action on our [demo experience](https://m.tri.be/1ajs). Just getting started? Read through the [New User Primer](https://m.tri.be/2d) to get set up.
26
 
27
- Looking for additional features like recurring events, ticket sales, user-submitted events, automatic imports, and more?
 
 
28
 
29
- <strong>Check out [Events Calendar Pro](https://m.tri.be/mj), [Event Aggregator](https://m.tri.be/197u), and [more add-ons](https://m.tri.be/2a)</strong>
30
 
31
- = 🔌🎨 Plug and Play or Customize =
32
 
33
- The Events Calendar is built to work out of the box. Simply install the plugin, configure your settings, and start creating events in minutes.
34
 
35
- Want to add your personal touch? Use The Events Calendar as the foundation for customization. Personalize to your heart's content with the help of a skeleton stylesheet, partial template overrides, template tags, hooks and filters, [careful documentation](https://m.tri.be/eu), and a [library of free extensions](https://m.tri.be/1a0r).
36
 
37
- Whether your vision is big or small, you're in good company. Hundreds of thousands of small businesses, musicians, venues, restaurants, and non-profits are publishing and promoting their in-person and virtual events with The Events Calendar. Our plugins have also been scaled to work on large networks for Fortune 100 companies, universities, and government institutions.
38
 
39
- = Features =
40
 
41
- Our feature-rich plugin comes with everything you need to create and manage your calendar.
42
 
43
- ✔️ Rapidly create events
44
- ✔️ Saved venues & organizers
45
- ✔️ Calendar month view with tooltips
46
- ✔️ Event List view
47
- ✔️ Day view
48
- ✔️ Block Editor support
49
- ✔️ Event search
50
- ✔️ Google maps
51
- ✔️ Widget: Upcoming events list
52
- ✔️ Events Taxonomies (Categories & Tags)
53
- ✔️ Google Calendar and iCal exporting
54
- ✔️ WP REST API endpoints
55
- ✔️ Completely ajaxified for super smooth browsing
56
- ✔️ Completely responsive from mobile to tablet to desktop
57
- ✔️ Tested on the major theme frameworks such as Avada, Divi, Enfold, Genesis, and many more.
58
- ✔️ Increase your SEO with JSON-LD Structured Data
59
- ✔️ Internationalized & translated
60
- ✔️ Multiple stylesheets to improve integration
61
- ✔️ Extensive template tags for customization
62
- ✔️ Hooks & filters galore
63
- ✔️ Caching support
64
- ✔️ Debug mode for developers
65
- ✔️ [Library of extensions](https://m.tri.be/1a0r)
66
 
67
- == 📃 Documentation ==
68
 
69
- All of our documentation can be found in [our Knowledgebase](https://m.tri.be/eu).
70
 
71
- Additional helpful links:
72
 
73
- * [The Events Calendar New User Primer](https://m.tri.be/2l)
74
- * [The Themer’s Guide to The Events Calendar](https://m.tri.be/2m)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
- If you have any questions about this plugin, you can post a thread in the [WordPress.org forum](https://wordpress.org/support/plugin/the-events-calendar). Please search existing threads before starting a new one.
77
 
78
- == Add-Ons ==
79
-
80
- Take your calendar to the next level by pairing it with our plugins for ticketing, crowdsourcing, email marketing, and more. Learn more about all our products on [our website](https://m.tri.be/18wn).
81
-
82
- Our Free Plugins:
83
-
84
- 🎟️ [Event Tickets](https://wordpress.org/plugins/event-tickets/)
85
- 📐 [Advanced Post Manager](https://wordpress.org/plugins/advanced-post-manager/)
86
-
87
- Our Premium Plugins and Services:
88
-
89
- ⚡ [Events Calendar PRO](https://m.tri.be/18wi)
90
- ↪️ [Event Aggregator](https://m.tri.be/197u) (service)
91
- 🎟️ [Event Tickets Plus](https://m.tri.be/18wk)
92
- ✉️ [Promoter](https://m.tri.be/1ajt)
93
- 👥 [Community Events](https://m.tri.be/2g)
94
- 🎟️ [Community Tickets](https://m.tri.be/18wl)
95
- ✏️ [Filter Bar](https://m.tri.be/fa)
96
- 🗓️ [Eventbrite Tickets](https://m.tri.be/2e)
97
-
98
- == Help ==
99
-
100
- If you aren’t familiar with The Events Calendar, check out our [New User Primer](https://m.tri.be/2p). It will have you creating events in no time.
101
-
102
- Ready to dig deeper? Check out these resources:
103
-
104
- * [Tutorials](https://m.tri.be/2u)
105
- * [Release Schedule](https://theeventscalendar.com/release-schedule/)
106
- * [Known Issues](https://theeventscalendar.com/known-issues/)
107
- * [Documentation](https://m.tri.be/eu)
108
- * [Help Videos](https://m.tri.be/2t)
109
- * [Release Notes](https://m.tri.be/2v)
110
-
111
- We check in on the [The Events Calendar forum here on WordPress.org](https://wordpress.org/support/plugin/the-events-calendar/) about once a week to help users with basic troubleshooting and identifying bugs. If you’re looking for premium, personalized support, consider upgrading to Events Calendar Pro.
112
-
113
- Still have a question? Shoot us an email at support@theeventscalendar.com.
114
 
115
  == Installation ==
116
 
117
- Installing the plugin is easy. Just follow one of the following methods:
118
 
119
- = Install The Events Calendar from within Wordpress =
120
-
121
- 1. Visit the plugins page within your dashboard and select ‘Add New’
122
- 2. Search for "Events Calendar"
123
- 3. Activate The Events Calendar from your Plugins page
124
- 4. You're done!
125
-
126
-
127
- = Install The Events Calendar Manually =
128
 
129
  1. From the dashboard of your site, navigate to Plugins --> Add New.
130
  2. Select the Upload option and hit "Choose File."
@@ -132,7 +89,7 @@ Installing the plugin is easy. Just follow one of the following methods:
132
  4. Follow the on-screen instructions and wait as the upload completes.
133
  5. When it's finished, activate the plugin via the prompt. A message will show confirming activation was successful. A link to access the calendar directly on the frontend will be presented here as well.
134
 
135
- That's it! Just configure your settings as you see fit, and you're on your way to creating events in style. Need help getting things started? Check out our [new user primer](https://m.tri.be/2l) for help with settings and features.
136
 
137
  == Screenshots ==
138
 
@@ -150,66 +107,108 @@ That's it! Just configure your settings as you see fit, and you're on your way t
150
 
151
  = Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread? =
152
 
153
- First, make sure that you're running the latest version of The Events Calendar. If youre running Events Calendar PRO or any other add-ons, make sure those are current / running the latest code as well.
154
 
155
- The most common issues we see are either plugin or theme conflicts. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just The Events Calendar is running on your site. If the issue persists from there, revert to the default [Twenty Twenty](https://wordpress.org/themes/twentytwenty/) theme. If the issue is resolved after deactivating a specific plugin or your theme, youll know that is the source of the conflict.
156
 
157
- Note that we arent going to say tough luck if you identify a plugin/theme conflict. While we cant guarantee 100% integration with any plugin or theme out there, we will do our best (and reach out the plugin/theme author as needed) to figure out a solution that benefits everyone.
158
 
159
  = I'm still stuck. Where do I go to file a bug or ask a question? =
160
 
161
- Users of the free The Events Calendar should post their questions in the plugin's [WordPress.org forum](https://wordpress.org/support/plugin/the-events-calendar/), which we visit about once a week. Please make sure to read [our sticky post](https://m.tri.be/19oc) providing an overview of the support we provide free users BEFORE posting. If you find you're not getting support in as timely a fashion as you wish, you might want to consider purchasing a license for Events Calendar Pro.
162
 
163
- If you're already an Events Calendar Pro user, you're entitled access to our actively-monitored [Premium Support](https://m.tri.be/1aju) on our website. We can provide a deeper level of support here and hit these forums on a daily basis during the work week. Generally, except in times of increased support loads, we reply to all tickets within 24-48 hours during the business week.
164
 
165
- = What's the difference between The Events Calendar and Events Calendar Pro? =
166
 
167
- The Events Calendar is our cornerstone plugin, and it’s required in order to run any of our premium calendar add-ons, including Events Calendar Pro, Community Events, Filter Bar, and others.
168
 
169
- In other words, Events Calendar Pro runs alongside The Events Calendar and enhances it with extra features, including recurring events, additional calendar views, calendar shortcodes, advanced widgets, custom event fields and more.
 
 
170
 
171
  = What add-ons are available for The Events Calendar, and where can I read more about them? =
172
 
173
  The following add-ons are available for The Events Calendar:
174
 
175
- * [Events Calendar Pro](https://m.tri.be/18wi), for adding premium calendar features like recurring events, advanced views, cool widgets, [shortcodes](http://m.tri.be/1ajw), additional fields, and more!
176
- * [Event Aggregator](https://m.tri.be/197u), a service that effortlessly fills your calendar with events from Meetup, Google Calendar, iCalendar, Eventbrite, CSV, and ICS.
177
- * Virtual Events, COMING SUMMER 2020 this add-on will optimize your calendar for virtual events including Zoom integration, video and livestream embeds, SEO optimization for online events and more.
178
- * [Event Tickets](https://wordpress.org/plugins/event-tickets/) (free), which allows you to sell tickets and collect RSVPs to events. It can run alongside The Events Calendar or as a standalone plugin that adds ticket and RSVP functionality to WordPress posts and pages.
179
- * [Event Tickets Plus](https://m.tri.be/18wk), which allows you to sell tickets for your events using your favorite e-commerce platform.
180
- * [Promoter](https://m.tri.be/1ajt), automated email communication made just for The Events Calendar and Event Tickets. Stay in touch with your attendees every step of the way.
181
- * [Community Events](https://m.tri.be/2g), for allowing frontend event submission from your readers.
182
- * [Community Tickets](https://m.tri.be/18wl), which allows event organizers to sell tickets to the events they submit via Community Events.
183
- * [Filter Bar](https://m.tri.be/fa), for adding advanced frontend filtering capabilities to your events calendar.
184
- * [Eventbrite Tickets](https://m.tri.be/2e), for selling tickets to your event directly through Eventbrite.
185
 
186
- = Can I import events to my calendar? =
187
 
188
- Yes! The Events Calendar has a built-in CSV import tool. If you want to step it up and automatically import events from Google Calendar, Meetup, Eventbrite and more, check out [Event Aggregator](https://m.tri.be/197u).
189
 
190
- = How do I sell tickets to events on my calendar? =
191
 
192
- You'll want to use our [Event Tickets](https://wordpress.org/plugins/event-tickets/) plugin for that. This free plugin works alongside The Events Calendar and lets you create RSVPs and tickets for events. Event Tickets integrates with PayPal so you can collect payments for tickets, while our premium solution, Event Tickets Plus fully integrates with WooCommerce or Easy Digital Downloads.
193
 
194
- = Can I have more than one calendar on my site? =
195
 
196
- Unfortunately, no. However, you can use event categories or tags to create calendar views that only display certain events. For example, you could create a direct link to a calendar view that only shows events categorized as "Fitness," [like this example from our demo site](http://m.tri.be/1ajv).
197
 
198
- With Events Calendar Pro, you can use [shortcodes](http://m.tri.be/1ajw) to embed your calendar on other WordPress pages and posts, then filter that calendar by category.
 
 
199
 
200
- = Can I allow people to submit events to my calendar? =
201
 
202
- This is available with the [Community Events](https://m.tri.be/2g) add-on to facilitate submissions. Install Community Events alongside The Events Calendar and a page will be added to your WordPress site with a form that visitors can use to submit events. As the calendar owner, you have full control over whether event submissions are published immediately or require moderation first.
203
 
204
- If you want to let users sell tickets for the events they submit, check out [Community Tickets](https://m.tri.be/18wl). It runs with The Events Calendar, Community Events, and Event Tickets and empowers visitors to create and sell tickets, splitting the profits with you.
205
 
206
- = I have a feature idea. What's the best way to tell you about it? =
207
 
208
- We've got a [UserVoice page](https://tribe.uservoice.com/forums/195723-feature-ideas) where we're actively watching for feature ideas from the community. Vote up existing feature requests or add your own, and help us shape the future of the products business in a way that best meets the community's needs.
209
 
210
- = I've still got questions. Where can I find answers? =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
 
212
- Check out our extensive [knowledgebase](https://m.tri.be/18wm) for articles on using, tweaking, and troubleshooting our plugins.
213
 
214
  == Upgrade Notice ==
215
 
@@ -221,11 +220,9 @@ Remember to always make a backup of your database and files before updating!
221
 
222
  == Changelog ==
223
 
224
- = [5.1.2] 2020-05-27 =
225
 
226
- * Tweak - Prevent undefined errors when using tribe_get_events and forcing a cache refresh.
227
- * Fix - Prevent `E_ERROR` for `Tribe__Events__Meta__Save` construct when dealing with revisions, which some WP Engine customers were seeing.
228
- * Language - 0 new strings added, 49 updated, 0 fuzzied, and 0 obsoleted
229
 
230
  = [5.1.1] 2020-05-11 =
231
 
@@ -293,7 +290,7 @@ Remember to always make a backup of your database and files before updating!
293
  * Fix - Update events, venues, and organizers to use dynamic labels. [TEC-3280]
294
  * Fix - Resolve an issue in Views v2 that would break URLs when the event single and archive slugs have the same value due to the "Events URL slug" and "Single event URL slug" settings or due to their translations [TEC-3254]
295
  * Fix - Restore correct handling of events RSS feeds; events will show in the RSS feed in ascending start date, starting from the current day and the event publish date will be set to the event start date [TEC-3252]
296
- * Hook - Add filters `tribe_events_liveupdate_automatic_label_text` and `tribe_events_liveupdate_manual_label_text` to allow Filter Bar to include itself in those labels. [TEC-3322]
297
  * Hook - Add the `tribe_views_v2_events_query_controller_active` filter; returning a falsy value from this filter will prevent Views v2 from altering the WordPress query. This filter allows handling situations where Views v2 might interfere with third party plugins (e.g. custom RSS feed implementations) [TEC-3252]
298
  * Tweak - Added filters: `tribe_events_option_convert_live_filters`, `tribe_events_views_v2_messages_need_events_label_keys`
299
  * Tweak - Removed filters: `tribe_events_ical_export_text`
@@ -367,19 +364,19 @@ Remember to always make a backup of your database and files before updating!
367
 
368
  * Feature - Created new Month, Day, and List views with all new HTML, CSS, and JavaScript.
369
  * Feature - Add upgrade path for new Month, Day, and List views making it opt-in for any existing users.
370
- * Feature - New templating engine to power the new Views. [See More](https://m.tri.be/1aid)
371
  * Feature - Views initialization and instance includes more filters and actions to allow improved extensibility and customization. (See all filters below)
372
- * Feature - Views manager and bootstrapping classes were created to allow more control over where and when views will be initialized. (See filters related to those below)
373
  * Feature - Reduced maintenance burden of customizations by leveraging atomic templates for the new views. (See list of files now available below)
374
- * Feature - CSS uses a Block Element Modifier (BEM) methodology to improve reusability of components. [See More](https://m.tri.be/1aib)
375
  * Feature - New Views share one JavaScript Manager, which contains multiple jQuery actions and customization points.
376
  * Feature - View navigation relies on the WP Rest API, improving reliability and caching opportunities.
377
  * Feature - Event permalinks are now more consistent across navigation using `WP_Rewrite` to map params to their matching URL, which improves SEO.
378
  * Feature - Event data filtering used across all new views: `tribe_get_event_before`, `tribe_get_event`, `tribe_get_event_after`, `tribe_events_organizers_fetch_callback`, `tribe_events_venues_fetch_callback`
379
  * Feature - Venue data filtering used across all new views: `tribe_get_venue_object_before`, `tribe_get_venue_object`
380
  * Tweak - Custom Before and After HTML on the Events > Settings page will now prefer event view styling over the Theme's CSS.
381
- * Tweak - Lowered the reliance on the global `$wp_query` to create more consistent output and faster maintenance. [See More](https://m.tri.be/1aic)
382
- * Tweak - View overrides for the new views will look within a new folder in your theme to avoid conflicting with old The Events Calendar theme customizations [See More](https://m.tri.be/1aia)
383
  * Tweak - Switch to a compact date while on day and month view in mobile [136789]
384
  * Tweak - Remove `tribe_events_getLink` in favor of `tribe_events_get_link` which was a deprecated filter since version 4.3
385
  * Hooks - View template include and render filters and actions: `tribe_template_before_include`, `tribe_template_before_include:{$template_path}`, `tribe_template_after_include`, `tribe_template_after_include:{$template_path}`, `tribe_template_html`, `tribe_template_html:{$template_path}`
@@ -394,10 +391,10 @@ Remember to always make a backup of your database and files before updating!
394
  = [4.9.14] 2020-01-15 =
395
 
396
  * Feature - Add Repository filter `where_meta_related_by_meta` for getting a post by the meta value an associated post. [133333]
397
- * Tweak - Modifications to the Freemius code initialization to allow better data around plugin uninstalls.
398
  * Tweak - Adjust tooltip title styles for Twenty Twenty theme. [TEC-2998]
399
  * Tweak - Changed views: `blocks/event-venue`
400
- * Fix - Cost field description no longer disappears when editing the block. [TEC-2992]
401
  * Fix - Organizer theme no longer getting overwritten by Blocks editor styles. [TEC-2974]
402
  * Fix - Venue block properly receives the correct HTML class. [TEC-3020]
403
  * Fix - Correct missing block when switching from blocks to classic editor. [131493]
@@ -463,7 +460,7 @@ Remember to always make a backup of your database and files before updating!
463
 
464
  = [4.9.6] 2019-08-07 =
465
 
466
- * Tweak - Update Event Aggregator to include compatibility with new Meetup API requirements - [See more](https://m.tri.be/1afb) [125635]
467
  * Language - 5 new strings added, 120 updated, 5 fuzzied, and 10 obsoleted
468
 
469
  = [4.9.5] 2019-07-25 =
@@ -522,19 +519,19 @@ Remember to always make a backup of your database and files before updating!
522
 
523
  = [4.9.2] 2019-05-16 =
524
 
525
- * Tweak - In the Event Repository class: filter the event creation meta before checking it for coherency
526
  * Tweak - Reduced file size by removing .po files and directing anyone creating or editing local translations to translate.wordpress.org
527
  * Fix - Fix event bar issue where it was required to pick the date in order to search events via keyword or location [126158]
528
  * Fix - Make back-compatibility handling more robust when dealing with classes non-existing in the older plugin versions [127173]
529
 
530
  = [4.9.1.1] 2019-05-06 =
531
 
532
- * Fix - Prevent Composer autoloader from throwing Fatal due to nonexistent `setClassMapAuthoritative()` method [126590]
533
 
534
  = [4.9.1] 2019-05-02 =
535
 
536
  * Fix - Prevent recurring events all page to throw 404 when events are in the past [126790]
537
- * Fix - Backwards compatibility for `eventDisplay` usage around `list` and `day` only showing upcoming events [126686]
538
  * Fix - List events Widget will display events until their end date has passed [126837]
539
  * Tweak - Add values for the JSON-LD object to avoid Google console errors. Fields added: `offers.availability`, `offers.category`, `offers.priceCurrency`, `offers.validFrom` and `performer` [120193]
540
  * Tweak - Add `tribe_events_cost_unformatted` filter to allow WPML support for WooCommerce Multilingual
@@ -542,7 +539,7 @@ Remember to always make a backup of your database and files before updating!
542
 
543
  = [4.9.0.3] 2019-04-26 =
544
 
545
- * Fix - Prevent Composer autoloader from throwing Fatal due to nonexistent `setClassMapAuthoritative()` method [126590]
546
 
547
  = [4.9.0.2] 2019-04-25 =
548
 
@@ -977,7 +974,7 @@ Remember to always make a backup of your database and files before updating!
977
  * Tweak - Added caching to reduce the number of HTTP requests being made in relation to Event Aggregator within the admin environment [99486]
978
  * Tweak - Improved performance by reducing the number of queries that run in single event pages (in relation to `tribe_get_prev_event_link()` and `tribe_get_next_event_link()` specifically) [94587]
979
  * Tweak - Added pagination to single organizer and venue pages [97772]
980
- * Tweak - Improved compatibility with the Twenty Seventeen theme (ensuring the calendar is full-width if set to be the site's homepage) [97977]
981
  * Language - 3 new strings added, 161 updated, 1 fuzzied, and 2 obsoleted
982
 
983
  = [4.6.11.1] 2018-02-16 =
@@ -1087,9 +1084,9 @@ Remember to always make a backup of your database and files before updating!
1087
  * Fix - Fixed the broken 'Learn more' URL received after an unsuccessful "Other URL" import preview [92890]
1088
  * Fix - Fixed issue in list view navigation with backwards previous/next classes (thanks @secondtoughest) [36230]
1089
  * Fix - Fixed an issue where venues and organizers would not be correctly assigned to events in CSV imports with import statuses other than "Publish" [79680]
1090
- * Tweak - Remove net import scheduled notes for on demand imports [79079]
1091
  * Tweak - Allow for non-Latin characters to be used as the Events URL slug and the Single Event URL slug (thanks @daviddweb for originally reporting this) [61880]
1092
- * Tweak - Remove net import scheduled notes for on demand imports [79079]
1093
  * Tweak - Fixed some layout issues that would emerge with "Events URL Slug" option when "Plain" permalinks were enabled [92314]
1094
  * Tweak - Tweaked some language in Event Aggregator's metabox on individual edit-event screens to reduce confusion around the impact of the Update Authority on CSV imports [77957]
1095
  * Tweak - Fix PHP 7.1 compatibility with Event Aggregator (props @BJP NEALE) [90002]
@@ -1138,7 +1135,7 @@ Remember to always make a backup of your database and files before updating!
1138
  = [4.6.1] 2017-10-04 =
1139
 
1140
  * Fix - Fixed "Next Events" and "Previous Events" navigation links in list views, which would sometimes make a category-filtered list view lose its category filter as a user navigated through pages of future or past events (props @forumhelpdesk and @atomicdust for reporting this!) [72013]
1141
- * Fix - Fixed some layout issues with the Tribe Bar datepicker that would arise when using a Twenty Sixteen or Twenty Fifteen child them (thanks to @stefanrueegger for reporting this) [46471]
1142
  * Fix - Prevented modification of event titles within the loop when using TRIBE_MODIFY_GLOBAL_TITLE [89273]
1143
  * Fix - Fixed issue when exporting all-day multi-day events via iCal where the end date was one day early (Thank you @fairmont for reporting this!) [87775]
1144
  * Fix - Fixed issues with the jQuery Timepicker vendor script conflicting with other plugins' similar scripts (props: @hcny et al.) [74644]
1
  === The Events Calendar ===
2
 
3
+ Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo, cliffpaulick, courane01, faction23, GeoffBel, geoffgraham, ggwicz, jbrinley, jentheo, leahkoerper, lucatume, mastromktg, MZAWeb, neillmcshea, nicosantos, patriciahillebrandt, peterchester, reid.peifer, roblagatta, ryancurban, shane.pearlman, tribecari, 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: http://m.tri.be/29
6
  Requires at least: 4.9
7
+ Stable tag: 5.1.1.1
8
  Tested up to: 5.4.1
9
  Requires PHP: 5.6
10
  License: GPLv2 or later
14
 
15
  == Description ==
16
 
17
+ Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust.
18
 
19
+ Packed with loads of useful features, The Events Calendar by Modern Tribe is ready to go right out of the box. It’s extensible, easy to use, and completely customizable.
20
 
21
+ Just getting started? Read through the [New User Primer](http://m.tri.be/2d) to get set up.
22
 
23
+ Looking for additional functionality including recurring events, ticket sales, publicly submitted events, automatic imports, and more?
24
 
25
+ <strong>Check out [Events Calendar PRO](http://m.tri.be/mj) and [other add-ons](http://m.tri.be/2a)</strong>
26
 
27
+ ><strong>New Import Tool!</strong>
28
+ >We’ve made bulk event imports easier to manage than ever. This add-on service for The Events Calendar allows you to import events from your favorite sources, including Meetup, Google Calendar, iCalendar, CSV, ICS and Other URLs (beta).
29
+ >[Check out Event Aggregator now](http://m.tri.be/197u).
30
 
31
+ = Built solid & supported =
32
 
33
+ The Events Calendar is crafted the WordPress way with hours of strategy, design, development, and testing going into each release. We stand behind our work and offer light support weekly for the community via the WordPress.org support forums.
34
 
35
+ If you need a deeper level of support or a faster response to your specific question, our Events Calendar PRO add-on includes access to our premium support forums with a 24-48 hour response time during the workweek.
36
 
37
+ Enjoy using The Events Calendar, know how to customize it, and want to make money helping people? We’re growing our community team and would love to hear from you. If you’re interested, [check this out!](http://m.tri.be/mk)
38
 
39
+ = Plug-n-play & highly customizable =
40
 
41
+ The Events Calendar is built to work out of the box. Just turn it on, configure the settings to match your needs and you'll be making events in less than 5 minutes.
42
 
43
+ By developers, for developers... it's ready to be the foundation for your wildest hack sessions. Complete with a skeleton stylesheet to theme fast and efficiently, loads of tools including partial template overrides, a host of template tags, hooks and filters, [careful documentation](http://m.tri.be/eu), as well as a [library of free extensions](http://m.tri.be/ext). The Events Calendar is built FOR people who build websites.
44
 
45
+ Whether your vision is big or small, you’re in good company. Hundreds of thousands of churches, eateries, small businesses, musicians, venues, and non-profits are publishing and promoting their events with The Events Calendar.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ The Events Calendar has been scaled to work on networks with over 25 million unique visitors per month and hundreds of thousands of events. Fortune 100 companies, major universities, government institutions, and some seriously epic startups showcase their events with our platform.
48
 
49
+ = Features =
50
 
51
+ Whether you’re operating a hyperlocal hub listing thousands of events, a university with many thousands of users, or you’re a sole business owner listing your classes, The Events Calendar has your back.
52
 
53
+ * Rapidly create events
54
+ * Saved venues & organizers
55
+ * Calendar month view with tooltips
56
+ * Event List view
57
+ * Day view
58
+ * Event search
59
+ * Google maps
60
+ * Widget: Upcoming events list
61
+ * Events Taxonomies (Categories & Tags)
62
+ * Google Calendar and iCal exporting
63
+ * WP REST API endpoints
64
+ * Completely ajaxified for super smooth browsing
65
+ * Completely responsive from mobile to tablet to desktop
66
+ * Tested on the major theme frameworks such as Avada, Genesis, Woo Themes, Thesis and many more.
67
+ * Increase your SEO with Microformats
68
+ * Internationalized & translated
69
+ * Multiple stylesheets to improve integration
70
+ * Extensive template tags for customization
71
+ * Hooks & filters galore
72
+ * Caching support
73
+ * Debug mode for developers
74
+ * [Library of extensions](http://m.tri.be/1a0r)
75
 
76
+ = Submitting Patches =
77
 
78
+ If you’ve identified a bug and have a fix, we’d welcome it at our [GitHub page for The Events Calendar](https://github.com/moderntribe/the-events-calendar). Simply submit a pull request so we can review as part of our [release cycle](http://m.tri.be/release-schedule) and merge into the codebase if appropriate from there. If a pull request is rejected, we'll do our best to tell you why. Users whose pull requests are accepted will receive credit in the plugin's changelog. For more information, check out the readme at our GitHub page. Happy coding!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
 
80
  == Installation ==
81
 
82
+ = Install & Activate =
83
 
84
+ Installing the plugin is easy. Just follow these steps:
 
 
 
 
 
 
 
 
85
 
86
  1. From the dashboard of your site, navigate to Plugins --> Add New.
87
  2. Select the Upload option and hit "Choose File."
89
  4. Follow the on-screen instructions and wait as the upload completes.
90
  5. When it's finished, activate the plugin via the prompt. A message will show confirming activation was successful. A link to access the calendar directly on the frontend will be presented here as well.
91
 
92
+ That's it! Just configure your settings as you see fit, and you're on your way to creating events in style. Need help getting things started? Check out our [new user primer](http://m.tri.be/2l) for help with settings and features.
93
 
94
  == Screenshots ==
95
 
107
 
108
  = Are there any troubleshooting steps you'd suggest I try that might resolve my issue before I post a new thread? =
109
 
110
+ First, make sure that you're running the latest version of The Events Calendar (4.6 as of this release). If you're running Events Calendar PRO it needs to match the version number of The Events Calendar. And if you've got any other add-ons, make sure those are current / running the latest code as well.
111
 
112
+ The most common issues we see are either plugin or theme conflicts. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just The Events Calendar is running on your site. If the issue persists from there, revert to the default Twenty Fourteen theme. If the issue is resolved after deactivating a specific plugin or your theme, you'll know that is the source of the conflict.
113
 
114
+ Note that we aren't going to say "tough luck" if you identify a plugin/theme conflict. While we can't guarantee 100% integration with any plugin or theme out there, we will do our best (and reach out the plugin/theme author as needed) to figure out a solution that benefits everyone.
115
 
116
  = I'm still stuck. Where do I go to file a bug or ask a question? =
117
 
118
+ Users of the free The Events Calendar should post their questions in the plugin's [WordPress.org forum](https://wordpress.org/support/plugin/the-events-calendar/), which we hit about once a week (usually on Wednesdays). Please make sure to read [our sticky post](http://m.tri.be/19oc) providing an overview of the support we provide free users BEFORE posting. If you find you're not getting support in as timely a fashion as you wish, you might want to consider purchasing a PRO license.
119
 
120
+ If you're already a PRO user, you're entitled access to our more actively-monitored [Events Calendar PRO forum](http://m.tri.be/2r) on our website. We can provide a deeper level of support here and hit these forums on a daily basis during the work week. Generally, except in times of increased support loads, we reply to all comments within 24-48 hours during the business week.
121
 
122
+ = Events Calendar PRO looks awesome! I'm sold! How can I get my hands on it? =
123
 
124
+ Events Calendar PRO can be purchased directly on [our website](http://m.tri.be/18wi). There are five (5) license types available, and all licenses include access to premium support, new feature releases, and regular maintenance updates.
125
 
126
+ = I'm interested in PRO or another add-on, but there are a few questions I've got before making the purchase. Can you help me get those addressed? =
127
+
128
+ Absolutely. If you're not finding your questions answered on the product pages, hit up our [pre-sales forum](http://m.tri.be/2w) on our site. You can save yourself some time by reviewing the threads first to verify if your question has already been asked. If it hasn't, post a new thread as a guest. We'll get you a reply as quickly as we can, so you can make an informed decision regarding purchase.
129
 
130
  = What add-ons are available for The Events Calendar, and where can I read more about them? =
131
 
132
  The following add-ons are available for The Events Calendar:
133
 
134
+ * [Events Calendar PRO](http://m.tri.be/18wi), for adding premium calendar features like recurring events, advanced views, cool widgets, shortcodes, additional fields, and more!
135
+ * [Event Aggregator](http://m.tri.be/197u), a service that effortlessly fills your calendar with events from Meetup, Google Calendar, iCalendar, Eventbrite, CSV, and ICS.
136
+ * [Event Tickets](http://m.tri.be/18wj) (free), which allows you to collect RSVPs to events. It can run alongside The Events Calendar or as a standalone plugin that adds RSVP functionality to WordPress posts and pages.
137
+ * [Event Tickets Plus](http://m.tri.be/18wk), which allows you to sell tickets for your events using your favorite e-commerce platform.
138
+ * [Community Events](http://m.tri.be/2g), for allowing frontend event submission from your readers.
139
+ * [Community Tickets](http://m.tri.be/18wl), which allows event organizers to sell tickets to the events they submit via Community Events.
140
+ * [Filter Bar](http://m.tri.be/fa), for adding advanced frontend filtering capabilities to your events calendar.
141
+ * [Eventbrite Tickets](http://m.tri.be/2e), for selling tickets to your event directly through Eventbrite.
142
+
143
+ = I have a feature idea. What's the best way to tell you about it? =
144
 
145
+ We've got a [UserVoice page](https://tribe.uservoice.com/forums/195723-feature-ideas) where we're actively watching for feature ideas from the community. Vote up existing feature requests or add your own, and help us shape the future of the products business in a way that best meets the community's needs.
146
 
147
+ = I've still got questions. Where can I find answers? =
148
 
149
+ Check out our extensive [knowledgebase](http://m.tri.be/18wm) for articles on using, tweaking, and troubleshooting our plugins.
150
 
151
+ == Documentation ==
152
 
153
+ All of our online documentation can be found on [our documentation site](http://m.tri.be/eu).
154
 
155
+ Some links you may find particularly useful are:
156
 
157
+ * [The Events Calendar New User Primer](http://m.tri.be/2l)
158
+ * [The Themer's Guide to The Events Calendar](http://m.tri.be/2m)
159
+ * [Knowledgebase](http://m.tri.be/18wm)
160
 
161
+ If you have any questions about this plugin, you can post a thread in our [WordPress.org forum](https://wordpress.org/support/plugin/the-events-calendar). Please search existing threads before opening a new one.
162
 
163
+ The [Modern Tribe premium support forums](http://m.tri.be/2r) are available for you to read. You won't, however, be able to post a message in any forums beyond Pre-Sale Questions unless you have purchased a premium license.
164
 
165
+ == Add-Ons ==
166
 
167
+ But wait: there's more! We've got a whole stable of plugins available to help you be awesome at what you do. Check out a full list of the products below, and over on [our website](http://m.tri.be/18wn).
168
 
169
+ Our Free Plugins:
170
 
171
+ * [Event Tickets](https://wordpress.org/plugins/event-tickets/)
172
+ * [Advanced Post Manager](https://wordpress.org/plugins/advanced-post-manager/)
173
+ * [GigPress](https://wordpress.org/plugins/gigpress/)
174
+ * [Image Widget](https://wordpress.org/plugins/image-widget/)
175
+
176
+ Our Premium Plugins and Services:
177
+
178
+ * [Events Calendar PRO](http://m.tri.be/18wi)
179
+ * [Event Aggregator](http://m.tri.be/197u) (service)
180
+ * [Event Tickets Plus](http://m.tri.be/18wk)
181
+ * [Community Events](http://m.tri.be/2g)
182
+ * [Community Tickets](http://m.tri.be/18wl)
183
+ * [Filter Bar](http://m.tri.be/fa)
184
+ * [Eventbrite Tickets](http://m.tri.be/2e)
185
+
186
+ == Help ==
187
+
188
+ Welcome to The Events Calendar, a full-featured events management system for WordPress. Thank you so much for using the labor of our love. We are Modern Tribe and we are here to help you be awesome.
189
+
190
+ If you aren't familiar with The Events Calendar, check out our [new user primer](http://m.tri.be/2p). It'll introduce you to the basics of what the plugin has to offer and will have you creating events in no time. From there, the resources below -- extensive template tag documentation, FAQs, video walkthroughs and more -- will give you a leg up as you dig deeper.
191
+
192
+ Additional resources available include:
193
+
194
+ * [Release Schedule](https://theeventscalendar.com/release-schedule/)
195
+ * [Known Issues](https://theeventscalendar.com/known-issues/)
196
+ * [Documentation](http://m.tri.be/eu)
197
+ * [FAQ](http://m.tri.be/2n)
198
+ * [Help Videos](http://m.tri.be/2t)
199
+ * [Tutorials](http://m.tri.be/2u)
200
+ * [Release Notes](http://m.tri.be/2v)
201
+ * [Forums](http://m.tri.be/2r)
202
+
203
+ We hit the [The Events Calendar forum here on WordPress.org](https://wordpress.org/support/plugin/the-events-calendar/) about once a week, assisting users with basic troubleshooting and identifying bugs that have been reported. (If you are looking for more active support, might we suggest buying a PRO license? Our team hits the [Premium Forums](http://m.tri.be/2r) daily.)
204
+
205
+ Some things to consider before posting on the forum:
206
+
207
+ * Look through existing threads before posting a new one and check that there isn't already a discussion going on for your issue.
208
+ * Your issue will be solved more quickly if you run a few checks before making a support request. Deactivate your plugins one by one - if the issue is fixed by deactivating a plugin you know you've got a plugin conflict. To test your Theme, revert to the default Twenty Twelve Theme to see if you are still experiencing the problem. If not, your Theme is the issue. Please provide this information when making your support request.
209
+ * Sometimes, just resetting your permalinks can fix the issue. Visit Events -> Settings -> Permalinks, save your permalinks with a different option and then save with your preferred choice again. This can solve events-related problems and is worth a shot before creating a new thread.
210
 
211
+ Still not happy? Shoot us an email to support@theeventscalendar.com or tweet to [@TheEventsCal](https://twitter.com/TheEventsCal) and tell us why. We'll do what we can to make it right.
212
 
213
  == Upgrade Notice ==
214
 
220
 
221
  == Changelog ==
222
 
223
+ = [5.1.1.1] 2020-06-09 =
224
 
225
+ * Security - Remove deprecated usage of escapeMarkup in Select2 (props to miha.jirov for reporting this).
 
 
226
 
227
  = [5.1.1] 2020-05-11 =
228
 
290
  * Fix - Update events, venues, and organizers to use dynamic labels. [TEC-3280]
291
  * Fix - Resolve an issue in Views v2 that would break URLs when the event single and archive slugs have the same value due to the "Events URL slug" and "Single event URL slug" settings or due to their translations [TEC-3254]
292
  * Fix - Restore correct handling of events RSS feeds; events will show in the RSS feed in ascending start date, starting from the current day and the event publish date will be set to the event start date [TEC-3252]
293
+ * Hook - Add filters `tribe_events_liveupdate_automatic_label_text` and `tribe_events_liveupdate_manual_label_text` to allow Filter Bar to include itself in those lables. [TEC-3322]
294
  * Hook - Add the `tribe_views_v2_events_query_controller_active` filter; returning a falsy value from this filter will prevent Views v2 from altering the WordPress query. This filter allows handling situations where Views v2 might interfere with third party plugins (e.g. custom RSS feed implementations) [TEC-3252]
295
  * Tweak - Added filters: `tribe_events_option_convert_live_filters`, `tribe_events_views_v2_messages_need_events_label_keys`
296
  * Tweak - Removed filters: `tribe_events_ical_export_text`
364
 
365
  * Feature - Created new Month, Day, and List views with all new HTML, CSS, and JavaScript.
366
  * Feature - Add upgrade path for new Month, Day, and List views making it opt-in for any existing users.
367
+ * Feature - New templating engine to power the new Views. [See More](http://m.tri.be/1aid)
368
  * Feature - Views initialization and instance includes more filters and actions to allow improved extensibility and customization. (See all filters below)
369
+ * Feature - Views manager and bootstraping classes were created to allow more control over where and when views will be initialized. (See filters related to those below)
370
  * Feature - Reduced maintenance burden of customizations by leveraging atomic templates for the new views. (See list of files now available below)
371
+ * Feature - CSS uses a Block Element Modifier (BEM) methodology to improve reusablility of components. [See More](http://m.tri.be/1aib)
372
  * Feature - New Views share one JavaScript Manager, which contains multiple jQuery actions and customization points.
373
  * Feature - View navigation relies on the WP Rest API, improving reliability and caching opportunities.
374
  * Feature - Event permalinks are now more consistent across navigation using `WP_Rewrite` to map params to their matching URL, which improves SEO.
375
  * Feature - Event data filtering used across all new views: `tribe_get_event_before`, `tribe_get_event`, `tribe_get_event_after`, `tribe_events_organizers_fetch_callback`, `tribe_events_venues_fetch_callback`
376
  * Feature - Venue data filtering used across all new views: `tribe_get_venue_object_before`, `tribe_get_venue_object`
377
  * Tweak - Custom Before and After HTML on the Events > Settings page will now prefer event view styling over the Theme's CSS.
378
+ * Tweak - Lowered the reliance on the global `$wp_query` to create more consistent output and faster maintenance. [See More](http://m.tri.be/1aic)
379
+ * Tweak - View overrides for the new views will look within a new folder in your theme to avoid conflicting with old The Events Calendar theme customizations [See More](http://m.tri.be/1aia)
380
  * Tweak - Switch to a compact date while on day and month view in mobile [136789]
381
  * Tweak - Remove `tribe_events_getLink` in favor of `tribe_events_get_link` which was a deprecated filter since version 4.3
382
  * Hooks - View template include and render filters and actions: `tribe_template_before_include`, `tribe_template_before_include:{$template_path}`, `tribe_template_after_include`, `tribe_template_after_include:{$template_path}`, `tribe_template_html`, `tribe_template_html:{$template_path}`
391
  = [4.9.14] 2020-01-15 =
392
 
393
  * Feature - Add Repository filter `where_meta_related_by_meta` for getting a post by the meta value an associated post. [133333]
394
+ * Tweak - Modifications to the Freemius code initalization to allow better data around plugin uninstalls.
395
  * Tweak - Adjust tooltip title styles for Twenty Twenty theme. [TEC-2998]
396
  * Tweak - Changed views: `blocks/event-venue`
397
+ * Fix - Cost field description no longer disapears when editing the block. [TEC-2992]
398
  * Fix - Organizer theme no longer getting overwritten by Blocks editor styles. [TEC-2974]
399
  * Fix - Venue block properly receives the correct HTML class. [TEC-3020]
400
  * Fix - Correct missing block when switching from blocks to classic editor. [131493]
460
 
461
  = [4.9.6] 2019-08-07 =
462
 
463
+ * Tweak - Update Event Aggregator to include compatibility with new Meetup API requirements - [See more](http://m.tri.be/1afb) [125635]
464
  * Language - 5 new strings added, 120 updated, 5 fuzzied, and 10 obsoleted
465
 
466
  = [4.9.5] 2019-07-25 =
519
 
520
  = [4.9.2] 2019-05-16 =
521
 
522
+ * Tweak - In the Event Repository class: filter the event cretion meta before checking it for coherency
523
  * Tweak - Reduced file size by removing .po files and directing anyone creating or editing local translations to translate.wordpress.org
524
  * Fix - Fix event bar issue where it was required to pick the date in order to search events via keyword or location [126158]
525
  * Fix - Make back-compatibility handling more robust when dealing with classes non-existing in the older plugin versions [127173]
526
 
527
  = [4.9.1.1] 2019-05-06 =
528
 
529
+ * Fix - Prevent Composer autoloader from throwing Fatal due to unexistent `setClassMapAuthoritative()` method [126590]
530
 
531
  = [4.9.1] 2019-05-02 =
532
 
533
  * Fix - Prevent recurring events all page to throw 404 when events are in the past [126790]
534
+ * Fix - Backwards compatibility for `eventDiplay` usage around `list` and `day` only showing upcoming events [126686]
535
  * Fix - List events Widget will display events until their end date has passed [126837]
536
  * Tweak - Add values for the JSON-LD object to avoid Google console errors. Fields added: `offers.availability`, `offers.category`, `offers.priceCurrency`, `offers.validFrom` and `performer` [120193]
537
  * Tweak - Add `tribe_events_cost_unformatted` filter to allow WPML support for WooCommerce Multilingual
539
 
540
  = [4.9.0.3] 2019-04-26 =
541
 
542
+ * Fix - Prevent Composer autoloader from throwing Fatal due to unexistent `setClassMapAuthoritative()` method [126590]
543
 
544
  = [4.9.0.2] 2019-04-25 =
545
 
974
  * Tweak - Added caching to reduce the number of HTTP requests being made in relation to Event Aggregator within the admin environment [99486]
975
  * Tweak - Improved performance by reducing the number of queries that run in single event pages (in relation to `tribe_get_prev_event_link()` and `tribe_get_next_event_link()` specifically) [94587]
976
  * Tweak - Added pagination to single organizer and venue pages [97772]
977
+ * Tweak - Improved compatibility with the Twety Seventeen theme (ensuring the calendar is full-width if set to be the site's homepage) [97977]
978
  * Language - 3 new strings added, 161 updated, 1 fuzzied, and 2 obsoleted
979
 
980
  = [4.6.11.1] 2018-02-16 =
1084
  * Fix - Fixed the broken 'Learn more' URL received after an unsuccessful "Other URL" import preview [92890]
1085
  * Fix - Fixed issue in list view navigation with backwards previous/next classes (thanks @secondtoughest) [36230]
1086
  * Fix - Fixed an issue where venues and organizers would not be correctly assigned to events in CSV imports with import statuses other than "Publish" [79680]
1087
+ * Tweak - Remove net import scheduled notes for on domand imports [79079]
1088
  * Tweak - Allow for non-Latin characters to be used as the Events URL slug and the Single Event URL slug (thanks @daviddweb for originally reporting this) [61880]
1089
+ * Tweak - Remove net import scheduled notes for on domand imports [79079]
1090
  * Tweak - Fixed some layout issues that would emerge with "Events URL Slug" option when "Plain" permalinks were enabled [92314]
1091
  * Tweak - Tweaked some language in Event Aggregator's metabox on individual edit-event screens to reduce confusion around the impact of the Update Authority on CSV imports [77957]
1092
  * Tweak - Fix PHP 7.1 compatibility with Event Aggregator (props @BJP NEALE) [90002]
1135
  = [4.6.1] 2017-10-04 =
1136
 
1137
  * Fix - Fixed "Next Events" and "Previous Events" navigation links in list views, which would sometimes make a category-filtered list view lose its category filter as a user navigated through pages of future or past events (props @forumhelpdesk and @atomicdust for reporting this!) [72013]
1138
+ * Fix - Fixed some layout issues with the Tribe Bar datepicker that would arise when using a Twentysixteen or Twentyfifteen child them (thanks to @stefanrueegger for reporting this) [46471]
1139
  * Fix - Prevented modification of event titles within the loop when using TRIBE_MODIFY_GLOBAL_TITLE [89273]
1140
  * Fix - Fixed issue when exporting all-day multi-day events via iCal where the end date was one day early (Thank you @fairmont for reporting this!) [87775]
1141
  * Fix - Fixed issues with the jQuery Timepicker vendor script conflicting with other plugins' similar scripts (props: @hcny et al.) [74644]
src/Tribe/Cost_Utils.php CHANGED
@@ -63,13 +63,6 @@ class Tribe__Events__Cost_Utils extends Tribe__Cost_Utils {
63
 
64
  $costs = tribe_get_event_meta( $event->ID, '_EventCost', false );
65
 
66
- $costs = array_filter(
67
- (array) $costs,
68
- static function ( $cost ) {
69
- return '' !== $cost;
70
- }
71
- );
72
-
73
  $parsed_costs = array();
74
 
75
  foreach ( $costs as $index => $value ) {
63
 
64
  $costs = tribe_get_event_meta( $event->ID, '_EventCost', false );
65
 
 
 
 
 
 
 
 
66
  $parsed_costs = array();
67
 
68
  foreach ( $costs as $index => $value ) {
src/Tribe/Main.php CHANGED
@@ -33,7 +33,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
33
  const VENUE_POST_TYPE = 'tribe_venue';
34
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
35
 
36
- const VERSION = '5.1.2';
37
 
38
  /**
39
  * Min Pro Addon
@@ -3146,11 +3146,6 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
3146
  return;
3147
  }
3148
 
3149
- // When not an instance of Post we bail to avoid revision problems.
3150
- if ( ! $post instanceof WP_Post ) {
3151
- return;
3152
- }
3153
-
3154
  $event_meta = new Tribe__Events__Meta__Save( $postId, $post );
3155
  $event_meta->maybe_save();
3156
 
33
  const VENUE_POST_TYPE = 'tribe_venue';
34
  const ORGANIZER_POST_TYPE = 'tribe_organizer';
35
 
36
+ const VERSION = '5.1.1.1';
37
 
38
  /**
39
  * Min Pro Addon
3146
  return;
3147
  }
3148
 
 
 
 
 
 
3149
  $event_meta = new Tribe__Events__Meta__Save( $postId, $post );
3150
  $event_meta->maybe_save();
3151
 
src/functions/template-tags/event.php CHANGED
@@ -100,34 +100,27 @@ if ( ! function_exists( 'tribe_get_event' ) ) {
100
 
101
  $post = false;
102
 
103
- /** @var Tribe__Cache $cache */
104
- $cache = tribe( 'cache' );
105
-
106
- $cache_post = get_post( $event );
107
-
108
- if ( empty( $cache_post ) ) {
109
- return null;
110
- }
111
-
112
- $key_fields = [
113
- $cache_post->ID,
114
- $cache_post->post_modified,
115
- // Use the `post_password` field as we show/hide some information depending on that.
116
- $cache_post->post_password,
117
- // We must include options on cache key, because options influence the hydrated data on the Event object.
118
- wp_json_encode( Tribe__Settings_Manager::get_options() ),
119
- wp_json_encode( [
120
- get_option( 'start_of_week' ),
121
- get_option( 'timezone_string' ),
122
- get_option( 'gmt_offset' )
123
- ] ),
124
- $output,
125
- $filter,
126
- ];
127
-
128
- $cache_key = 'tribe_get_event_' . md5( wp_json_encode( $key_fields ) );
129
-
130
  if ( ! $force ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  $post = $cache->get( $cache_key, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
132
  }
133
 
@@ -153,10 +146,7 @@ if ( ! function_exists( 'tribe_get_event' ) ) {
153
  */
154
  $post = apply_filters( 'tribe_get_event', $post, $output, $filter );
155
 
156
- // Dont try to reset cache when forcing.
157
- if ( ! $force ) {
158
- $cache->set( $cache_key, $post, WEEK_IN_SECONDS, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
159
- }
160
  }
161
 
162
  /**
100
 
101
  $post = false;
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  if ( ! $force ) {
104
+ $cache_post = get_post( $event );
105
+ if ( empty( $cache_post ) ) {
106
+ return null;
107
+ }
108
+
109
+ $key_fields = [
110
+ $cache_post->ID,
111
+ $cache_post->post_modified,
112
+ // Use the `post_password` field as we show/hide some information depending on that.
113
+ $cache_post->post_password,
114
+ // We must include options on cache key, because options influence the hydrated data on the Event object.
115
+ wp_json_encode( Tribe__Settings_Manager::get_options() ),
116
+ wp_json_encode( [ get_option( 'start_of_week' ), get_option( 'timezone_string' ), get_option( 'gmt_offset' ) ] ),
117
+ $output,
118
+ $filter
119
+ ];
120
+
121
+ $cache_key = 'tribe_get_event_' . md5( wp_json_encode( $key_fields ) );
122
+ /** @var Tribe__Cache $cache */
123
+ $cache = tribe( 'cache' );
124
  $post = $cache->get( $cache_key, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
125
  }
126
 
146
  */
147
  $post = apply_filters( 'tribe_get_event', $post, $output, $filter );
148
 
149
+ $cache->set( $cache_key, $post, WEEK_IN_SECONDS, Tribe__Cache_Listener::TRIGGER_SAVE_POST );
 
 
 
150
  }
151
 
152
  /**
src/resources/js/aggregator-fields.js CHANGED
@@ -909,7 +909,7 @@ tribe_aggregator.fields = {
909
  var args = {
910
  formatResult: upsellFormatter,
911
  formatSelection: upsellFormatter,
912
- escapeMarkup: function( m ) {return m; },
913
  };
914
 
915
  tribe_dropdowns.dropdown( $fields.filter( '.tribe-ea-dropdown' ), args );
909
  var args = {
910
  formatResult: upsellFormatter,
911
  formatSelection: upsellFormatter,
912
+
913
  };
914
 
915
  tribe_dropdowns.dropdown( $fields.filter( '.tribe-ea-dropdown' ), args );
src/resources/js/aggregator-fields.min.js CHANGED
@@ -1 +1,1225 @@
1
- var tribe_aggregator=tribe_aggregator||{};tribe_aggregator.fields={selector:{container:".tribe-ea",form:".tribe-ea-form",help:".tribe-ea-help",fields:".tribe-ea-field",dropdown:".tribe-ea-dropdown",origin_field:"#tribe-ea-field-origin",field_url_source:"#tribe-ea-field-url_source",eventbrite_url_source:"#tribe-ea-field-eventbrite_source",post_status:".tribe-ea-field-post_status",import_type_field:".tribe-import-type",media_button:".tribe-ea-media_button",datepicker:".tribe-datepicker",save_credentials_button:".enter-credentials .tribe-save",preview_container:".tribe-preview-container",preview_button:".tribe-preview:visible",refine_filters:".tribe-refine-filters",clear_filters_button:".tribe-clear-filters",finalize_button:".tribe-finalize",cancel_button:".tribe-cancel",schedule_delete_link:".tribe-ea-tab-scheduled a.submitdelete",tab_new:".tribe-ea-tab-new",action:"#tribe-action",view_filters:".tribe-view-filters"},media:{},$:{},construct:{},events:{},import_id:null,result_fetch_count:0,max_result_fetch_count:15,polling_frequency_index:0,polling_frequencies:[500,1e3,5e3,2e4],progress:{},eventbrite:{refineControls:".tribe-refine-filters.eventbrite, .tribe-refine-filters.eventbrite .tribe-refine",refineControlsHideMap:{event:"tr.tribe-refine-filters",organizer:""},detect_type:function(e){if(!tribe_aggregator.source_origin_regexp.eventbrite)return null;var t=tribe_aggregator.source_origin_regexp.eventbrite,r={event:t+"e/[A-z0-9_-]+",organizer:t+"o/[A-z0-9_-]+"},i=void 0;return _.each(r,function(t,r){null!==new RegExp(t,"g").exec(e)&&(i=r)}),i}}},function(e,t,r,i){"use strict";r.init=function(){r.$.container=e(r.selector.container),r.$.form=e(r.selector.form),r.$.action=e(r.selector.action),r.$.fields=r.$.container.find(r.selector.fields),r.$.preview_container=e(r.selector.preview_container),r.origin=e("#tribe-ea-field-origin"),r.importType=e("#tribe-ea-field-url_import_type"),r.urlImport={startDate:e("#tribe-ea-field-url_start"),originalMinDate:e("#tribe-ea-field-url_start").datepicker("option","minDate")||""},e.each(r.construct,function(e,t){t(r.$.fields)});var a=e(document.getElementById("eventDetails"));a.data("datepicker_format")&&(tribe_ev.state.datepicker_format=a.data("datepicker_format")),e(document).on("keypress",r.selector.fields,r.events.trigger_field_change).on("click",r.selector.save_credentials_button,r.events.trigger_save_credentials).on("click",r.selector.clear_filters_button,r.clear_filters).on("click",r.selector.finalize_button,r.finalize_manual_import).on("click",r.selector.preview_button,r.preview_import).on("click",r.selector.cancel_button,r.events.cancel_edit).on("click",r.selector.schedule_delete_link,r.events.verify_schedule_delete).on("click",r.selector.view_filters,r.events.toggle_view_filters).on("blur",r.selector.datepicker,r.date_helper).on("submit",r.selector.tab_new,r.events.suppress_submission).on("change",r.selector.import_type_field,function(){r.reset_preview();var t=e(this),i=e(this).next(r.selector.fields),a=t.val();i.val("schedule"===a?"daily":"").change(),r.$.form.attr("data-type",a),r.maybeLimitUrlStartDate()}).on("change",r.selector.origin_field,function(){var t=e(this),a=(e(this).data("select2"),t.val());r.$.form.attr("data-origin",a),r.reset_preview(),e(".tribe-bumpdown-active").removeClass("tribe-bumpdown-active"),e(".tribe-bumpdown:visible").hide(),"redirect"===e(this).val()&&(window.open("https://theeventscalendar.com/wordpress-event-aggregator/?utm_source=importoptions&utm_medium=plugin-tec&utm_campaign=in-app","_blank"),location.reload()),""!==a&&e(r.selector.post_status).val(i.default_settings[a].post_status).trigger("change"),r.maybeLimitUrlStartDate()}).on("change",r.selector.eventbrite_url_source,function(t){e(r.eventbrite.refineControls).show();var i=r.eventbrite.detect_type(e("#tribe-ea-field-eventbrite_source").val());if(i){var a=r.eventbrite.refineControlsHideMap[i];a&&e(a).hide()}}).on("change",r.selector.field_url_source,function(a){var n=e(this),s=(e(this).data("select2"),n.val()),o=null;if(s&&(t.each(i.source_origin_regexp,function(e,t){null!==new RegExp(e,"g").exec(s)&&(o=t)}),null!=o)){var l=e(r.selector.origin_field);if(l.find('option[value="'+o+'"]').length){var c=e("#tribe-ea-field-url_import_type"),d=c.val(),_=null;"schedule"===d&&(_=e("#tribe-ea-field-url_import_frequency").val()),c.val(""),l.val(o).trigger("change"),e("#tribe-ea-field-"+o+"_import_type").val(d).trigger("change"),"schedule"===d&&e("#tribe-ea-field-"+o+"_import_frequency").val(_).trigger("change"),"eventbrite"===o&&(e("#tribe-ea-field-"+o+"_source_type_url").trigger("click"),e("#tribe-ea-field-"+o+"_import_source").val("source_type_url").trigger("change")),e("#tribe-ea-field-"+o+"_source").val(s).trigger("change")}}}),e(".tribe-dependency").change(),tribe_timepickers.setup_timepickers(e(tribe_timepickers.selector.timepicker)),"edit"===r.$.action.val()&&(r.$.form.addClass("edit-form"),e(r.selector.finalize_button).html(i.l10n.edit_save)),"object"==typeof tribe_aggregator_save&&r.progress.init()},r.preview_import=function(t){t.preventDefault();var i=e(".tribe-ea-form.tribe-validation");if(r.reset_post_status(),i.trigger("validation.tribe"),!tribe.validation.hasErrors(i)){r.reset_polling_counter();e(".tribe-fetch-warning-message").html("");var a=e("#tribe-post_id");a.data("value",a.val()),a.val("");var n=e("#tribe-import_id");n.data("value",n.val()),n.val("");var s=e(r.selector.preview_button),o=(i=s.closest("form")).serialize();a.val(a.data("value")),n.val(a.data("value")),r.$.preview_container.addClass("tribe-fetching").removeClass("tribe-fetch-error"),r.$.form.removeClass("show-data"),s.prop("disabled",!0);var l=e(".dataTable").data("table");void 0!==l&&l.clear().draw(),"edit"===r.$.action.val()?r.preview_save_import(o):r.create_import(o)}},r.reset_post_status=function(){var t=e(r.selector.origin_field),a=0===t.length?"":t.val();""!==a&&e(r.selector.post_status).val(i.default_settings[a].post_status).trigger("change")},r.reset_polling_counter=function(){r.polling_frequency_index=0,r.result_fetch_count=0},r.reset_form=function(){r.$.fields.val("").trigger("change"),e('[id$="import_frequency"]').val("daily").trigger("change"),r.$.form.removeClass("show-data")},r.reset_preview=function(){r.$.form.removeClass("show-data"),e(".tribe-fetched, .tribe-fetching, .tribe-fetch-error").removeClass("tribe-fetched tribe-fetching tribe-fetch-error")},r.clear_filters=function(){e(r.selector.refine_filters).find("input, select").val("").trigger("change")},r.preview_save_import=function(t){e.ajax({type:"POST",url:ajaxurl+"?action=tribe_aggregator_preview_import",data:t,dataType:"json"}).done(r.handle_preview_create_results)},r.create_import=function(t){e.ajax({type:"POST",url:ajaxurl+"?action=tribe_aggregator_create_import",data:t,dataType:"json"}).done(r.handle_preview_create_results)},r.handle_preview_create_results=function(a){if(!a.success){var n=a.data;return t.isString(n)||(n=n.message),void r.display_fetch_error(["<b>",i.l10n.preview_fetch_error_prefix,"</b>"," "+n].join(" "))}if(r.import_id=a.data.data.import_id,e("#tribe-import_id").val(r.import_id),void 0!==a.data.data.items)return r.init_datatable(a.data.data),void r.$.preview_container.removeClass("tribe-fetching").addClass("tribe-fetched");r.$.container.find(".spinner-message").html(i.l10n.preview_polling[0]),setTimeout(r.poll_for_results,r.polling_frequencies[r.polling_frequency_index])},r.poll_for_results=function(){r.result_fetch_count++,e.ajax({type:"GET",url:ajaxurl+"?action=tribe_aggregator_fetch_import&import_id="+r.import_id,dataType:"json"}).done(function(t){if(void 0!==t.data.warning&&t.data.warning){var a=t.data.warning;r.display_fetch_warning(["<b>",i.l10n.preview_fetch_warning_prefix,"</b>"," "+a].join(" "))}var n;if(!t.success)return void 0!==t.data.message?n=t.data.message:void 0!==t.data[0].message&&(n=t.data[0].message),void r.display_fetch_error(["<b>",i.l10n.preview_fetch_error_prefix,"</b>"," "+n].join(" "));"error"===t.data.status?r.display_fetch_error(t.data.message):"success"!==t.data.status?(r.result_fetch_count>r.max_result_fetch_count&&(r.polling_frequency_index++,r.$.container.find(".spinner-message").html(i.l10n.preview_polling[r.polling_frequency_index]),r.result_fetch_count=0),void 0===r.polling_frequencies[r.polling_frequency_index]?r.display_fetch_error(i.l10n.preview_timeout):setTimeout(r.poll_for_results,r.polling_frequencies[r.polling_frequency_index])):(t.data.data.items=t.data.data.events,r.init_datatable(t.data.data),r.$.preview_container.removeClass("tribe-fetching").addClass("tribe-fetched"),e(r.selector.preview_button).prop("disabled",!1))})},r.init_datatable=function(t){var a=!1,n="csv"===(x=e(r.selector.origin_field).val()),s=e('[id$="import_type"]:visible'),o="manual";if(void 0!==i.default_settings[x])for(var l in i.default_settings[x]){if(i.default_settings[x].hasOwnProperty(l))e("#tribe-ea-field-"+l).val(i.default_settings[x][l]).trigger("change")}if(s.length&&(o=e("#"+s.first().attr("id").replace("s2id_","")).val()),"manual"!==o||t.items.length){s.length&&"manual"!==o||(a=!0);var c=r.$.preview_container.find(".data-container table"),d=[];for(var _ in t.items){var p=t.items[_];p.checkbox=a?'<input type="checkbox">':"",p.all_day?p.start_time=i.l10n.all_day:(void 0!==p.start_meridian&&p.start_meridian||(parseInt(p.start_hour,10)>11?p.start_meridian=i.l10n.pm:p.start_meridian=i.l10n.am),p.start_hour>12&&(p.start_hour=p.start_hour-12),p.start_time=(0===parseInt(p.start_hour,10)?12:p.start_hour)+":"+("00"+p.start_minute).slice(-2),p.start_time+=" "+p.start_meridian),d.push(p)}a&&!n?c.addClass("display-checkboxes"):c.removeClass("display-checkboxes"),r.$.form.addClass("show-data");var u,f={lengthMenu:[[5,10,25,50,-1],[5,10,25,50,tribe_l10n_datatables.pagination.all]],order:[[1,"asc"]],columnDefs:[{cellType:"th",className:"check-column",orderable:!1,targets:0}],data:d};if(void 0!==t.columns){f.columns=[{data:"checkbox"}];var g=c.find("thead tr"),v=c.find("tfoot tr"),m=e({}),b="",h="";if(g.find("th:first").nextAll().remove(),v.find("th:first").nextAll().remove(),n){var w=c.closest(".data-container");c.closest(".data-container").addClass("csv-data"),w.find(".tribe-preview-message .tribe-csv-filename").html(e("#tribe-ea-field-csv_file_name").text()),g.closest("thead").prepend('<tr class="tribe-column-map"><th scope="row" class="check-column column-cb"></th></tr>'),m=e(".tribe-column-map"),h=(h=e("#tribe-ea-field-csv_content_type").val()).replace("tribe_",""),b=e("#tribe-csv-column-map-"+h).html()}var y=0;for(_ in t.columns){if(f.columns.push({data:t.columns[_]}),g.append('<th scope="col">'+t.columns[_]+"</th>"),v.append('<th scope="col">'+t.columns[_]+"</th>"),n){var $=t.columns[_].toLowerCase().replace(/^\s+|\s+$/g,"").replace(/\s/g,"_").replace(/[^a-z0-9_]/,"");m.append('<th scope="col">'+b.replace('name="column_map[]"','name="aggregator[column_map]['+y+']" id="column-'+y+'"')+"</th>");var k=m.find("#column-"+y);void 0!==i.csv_column_mapping[h][y]&&($=i.csv_column_mapping[h][y]),k.find('option[value="'+$+'"]').prop("selected",!0)}y++}f.scrollX=!0}else f.columns=[{data:"checkbox"},{data:"start_date"},{data:"start_time"},{data:"end_date"},{data:"title"}],f.autoWidth=!1;c.tribeDataTable(f),r.wrap_cell_content(),c.on("select.dt",r.events.twiddle_finalize_button_text).on("deselect.dt",r.events.twiddle_finalize_button_text).on("draw.dt",r.wrap_cell_content),"new"===r.$.action.val()&&(u="manual"===o&&n?i.l10n.import_all_no_number:"manual"===o?i.l10n.import_all.replace("%d",d.length):i.l10n.create_schedule),e(r.selector.finalize_button).html(u)}else{var x=t.origin,C=void 0!==i.l10n[x]&&void 0!==i.l10n[x].no_results?i.l10n[x].no_results:i.l10n.no_results;r.display_fetch_error(C)}},r.wrap_cell_content=function(){e(".dataTable").find("tbody td").each(function(){var t=e(this);t.html('<div class="tribe-td-height-limit">'+t.html()+"</div>")})},r.display_fetch_error=function(t){var i=e(".tribe-fetch-error-message");r.$.preview_container.removeClass("tribe-fetching").addClass("tribe-fetch-error"),i.html(""),r.display_error(i,t),e(r.selector.preview_button).prop("disabled",!1)},r.display_fetch_warning=function(t){var i=e(".tribe-fetch-warning-message");r.$.preview_container.removeClass("tribe-fetching").addClass("tribe-fetch-warning"),i.html(""),r.display_warning(i,t)},r.display_error=function(e,t){e.prepend(['<div class="notice notice-error">',"<p>",t,"</p>","</div>"].join(""))},r.display_warning=function(e,t){e.prepend(['<div class="notice notice-warning">',"<p>",t,"</p>","</div>"].join(""))},r.display_success=function(e,t){e.prepend(['<div class="notice notice-success">',"<p>",t,"</p>","</div>"].join(""))},r.save_credentials=function(t){var r=t.find(".tribe-fieldset").find("input").serialize(),i=ajaxurl+"?action=tribe_aggregator_save_credentials";e.post(i,r).done(function(e){e.success&&(t.addClass("credentials-entered"),t.find('[name="has-credentials"]').val(1).change())})},r.finalize_manual_import=function(){var t=e("#tribe-ea-field-origin").val(),a=e(".dataTable"),n=window.tribe_data_table;if(a.hasClass("display-checkboxes")){var s=n.rows({selected:!0});if(s[0].length||(s=n.rows()),!s[0].length)return void r.display_error(e(".tribe-finalize-container"),i.l10n.events_required_for_manual_submit);var o=s.data(),l=[],c=null;if("meetup"===t?c="meetup_id":"eventbrite"===t?c="eventbrite_id":"ical"===t||"ics"===t||"gcal"===t?c="uid":"url"===t&&(c="id"),null!==c){for(var d in o)isNaN(d)||void 0!==o[d][c]&&l.push(o[d][c]);e("#tribe-selected-rows").text(JSON.stringify(l))}else e("#tribe-selected-rows").text("all")}else e("#tribe-selected-rows").text("all");e(".dataTables_scrollBody").find('[name^="aggregator[column_map]"]').remove(),r.$.form.submit()},r.search_id=function(e){var t=null;return void 0!==e.id?t=e.id:void 0!==e.ID?t=e.ID:void 0!==e.value&&(t=e.value),null==e?null:t},r.construct.dropdown=function(t){var r=function(t){var r=e(t.element);return"string"==typeof r.data("subtitle")&&(t.text=t.text+'<br><span class="tribe-dropdown-subtitle">'+r.data("subtitle")+"</span>"),t.text},i={formatResult:r,formatSelection:r,escapeMarkup:function(e){return e}};return tribe_dropdowns.dropdown(t.filter(".tribe-ea-dropdown"),i),t},r.construct.media_button=function(t){var i=t.filter(r.selector.media_button);return"undefined"!=typeof wp&&wp.media&&wp.media.editor?(i.each(function(){var t=e(this),i=t.data("input"),a=e("#"+i),n=e("#"+i+"_name"),s=r.media[i]=wp.media({title:t.data("mediaTitle"),library:{type:t.data("mimeType")},multiple:!1});s.on("select",function(){var e=s.state().get("selection");e&&e.each(function(e){a.data({id:e.attributes.id,text:e.attributes.title}),a.val(e.attributes.id),a.change(),n.html(e.attributes.filename),n.attr("title",e.attributes.filename)})})}),r.$.container.on("click",r.selector.media_button,function(t){if(t.preventDefault(),e(this).is(":visible")){var i=e(this).data("input");return r.media[i].open(i),!1}}),i):i},r.events.trigger_field_change=function(){e(this).change()},r.events.trigger_save_credentials=function(){r.save_credentials(e(this).closest(".enter-credentials"))},r.events.suppress_submission=function(t){e("#tribe-ea-field-origin").val();if(e("#tribe-selected-rows").val().length)return!0;t.preventDefault()},r.events.twiddle_finalize_button_text=function(t,a){if("new"===r.$.action.val()){var n=a.rows({selected:!0})[0].length,s=i.l10n.import_checked;n||(s=i.l10n.import_all,n=a.rows()[0].length),s=s.replace("%d",n),e(r.selector.finalize_button).html(s)}},r.events.cancel_edit=function(e){e.preventDefault();var t=window.location.href;t=(t=t.replace("tab=edit","tab=scheduled")).replace(/id=\d+/,""),window.location.href=t},r.events.verify_schedule_delete=function(){return confirm(i.l10n.verify_schedule_delete)},r.events.toggle_view_filters=function(t){t.preventDefault();var r=e(this);r.toggleClass("tribe-active"),r.is(".tribe-active")?r.html(i.l10n.hide_filters):r.html(i.l10n.view_filters)},r.progress.init=function(){r.progress.data={},r.progress.$={},r.progress.$.notice=e(".tribe-notice-aggregator-update-msg"),r.progress.$.spinner=r.progress.$.notice.find("img"),r.progress.$.progress=r.progress.$.notice.find(".progress"),r.progress.$.tracker=r.progress.$.notice.find(".tracker"),r.progress.$.created=r.progress.$.tracker.find(".track-created .value"),r.progress.$.updated=r.progress.$.tracker.find(".track-updated .value"),r.progress.$.skipped=r.progress.$.tracker.find(".track-skipped .value"),r.progress.$.remaining=r.progress.$.tracker.find(".track-remaining .value"),r.progress.$.bar=r.progress.$.notice.find(".bar"),r.progress.data.time=Date.now(),setTimeout(r.progress.start)},r.progress.start=function(){r.progress.send_request(),r.progress.update(tribe_aggregator_save.progress,tribe_aggregator_save.progressText)},r.progress.handle_response=function(e){var t=Date.now()-r.progress.data.time;e.html&&r.progress.data.notice.html(e.html),isNaN(parseInt(e.progress,10))||r.progress.update(e),e.continue&&(t<500?setTimeout(r.progress.send_request,500-t):r.progress.send_request()),e.error?(r.progress.$.notice.find(".tribe-message").html(e.error_text),r.progress.$.tracker.remove(),r.progress.$.notice.find(".progress-container").remove(),r.progress.$.notice.removeClass("warning").addClass("error")):e.complete&&(r.progress.$.notice.find(".tribe-message").html(e.complete_text),r.progress.$.tracker.remove(),r.progress.$.notice.find(".progress-container").remove(),r.progress.$.notice.removeClass("warning").addClass("completed"))},r.progress.send_request=function(){var t={record:tribe_aggregator_save.record_id,check:tribe_aggregator_save.check,action:"tribe_aggregator_realtime_update"};e.post(ajaxurl,t,r.progress.handle_response,"json")},r.progress.update=function(e){var t=parseInt(e.progress,10);if(!(t<0||t>100)&&void 0!==e.counts){var i=["created","updated","skipped"];for(var a in i)if(e.counts[i[a]]){var n=e.counts[i[a]],s=r.progress.$[i[a]];if("updated"===i[a]||"skipped"===i[a])n>(s?s.html():0)&&s.html(n);else s.html(n);r.progress.$.tracker.hasClass("has-"+i[a])||r.progress.$.tracker.addClass("has-"+i[a])}r.progress.$.bar.css("width",t+"%"),r.progress.$.progress.attr("title",e.progress_text)}},r.progress.remove_notice=function(){r.progress.$.notice.animate({opacity:0,height:"toggle"},1e3,function(){r.progress.$.notice.remove()})},r.date_helper=function(){var t;if((t=e(this)).hasClass("tribe-datepicker")){var r=t.val();if(""!==r&&null!==r){var i=t.attr("id").match("tribe-ea-field-(.*)_start")[1];""!==i&&null!==i&&jQuery("#tribe-date-helper-date-"+i).html(r)}}},r.maybeLimitUrlStartDate=function(){"url"===r.origin.val()&&("schedule"!==r.importType.val()?r.urlImport.startDate.data("datepicker-min-date",null):r.urlImport.startDate.data("datepicker-min-date","today"))},e(document).ready(r.init)}(jQuery,_,tribe_aggregator.fields,tribe_aggregator);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* eslint-disable */
2
+ var tribe_aggregator = tribe_aggregator || {};
3
+
4
+ // Setup the global Variable
5
+ tribe_aggregator.fields = {
6
+ // Store the Required Selectors
7
+ selector: {
8
+ container : '.tribe-ea',
9
+ form : '.tribe-ea-form',
10
+ help : '.tribe-ea-help',
11
+ fields : '.tribe-ea-field',
12
+ dropdown : '.tribe-ea-dropdown',
13
+ origin_field : '#tribe-ea-field-origin',
14
+ field_url_source : '#tribe-ea-field-url_source',
15
+ eventbrite_url_source : '#tribe-ea-field-eventbrite_source',
16
+ post_status : '.tribe-ea-field-post_status',
17
+ import_type_field : '.tribe-import-type',
18
+ media_button : '.tribe-ea-media_button',
19
+ datepicker : '.tribe-datepicker',
20
+ save_credentials_button : '.enter-credentials .tribe-save',
21
+ preview_container : '.tribe-preview-container',
22
+ preview_button : '.tribe-preview:visible',
23
+ refine_filters : '.tribe-refine-filters',
24
+ clear_filters_button : '.tribe-clear-filters',
25
+ finalize_button : '.tribe-finalize',
26
+ cancel_button : '.tribe-cancel',
27
+ schedule_delete_link : '.tribe-ea-tab-scheduled a.submitdelete',
28
+ tab_new : '.tribe-ea-tab-new',
29
+ action : '#tribe-action',
30
+ view_filters : '.tribe-view-filters'
31
+ },
32
+
33
+ media: {},
34
+
35
+ // Store the jQuery elements
36
+ $: {},
37
+
38
+ // Store the methods for creating the fields
39
+ construct: {},
40
+
41
+ // Store the methods that will act as event handlers
42
+ events: {},
43
+
44
+ // store the current import_id
45
+ import_id: null,
46
+
47
+ // track how many result fetches have been executed via polling
48
+ result_fetch_count: 0,
49
+
50
+ // the maximum number of result fetches that can be done per frequency before erroring out
51
+ max_result_fetch_count: 15,
52
+
53
+ // frequency at which we will poll for results
54
+ polling_frequency_index: 0,
55
+
56
+ polling_frequencies: [
57
+ 500,
58
+ 1000,
59
+ 5000,
60
+ 20000
61
+ ],
62
+
63
+ progress: {},
64
+
65
+ // A "module" of sorts related to Eventbrite only imports.
66
+ eventbrite: {
67
+ refineControls: '.tribe-refine-filters.eventbrite, .tribe-refine-filters.eventbrite .tribe-refine',
68
+ refineControlsHideMap: {
69
+ 'event': 'tr.tribe-refine-filters',
70
+ 'organizer': ''
71
+ },
72
+ detect_type: function ( url ) {
73
+ if ( ! tribe_aggregator.source_origin_regexp.eventbrite ) {
74
+ return null;
75
+ }
76
+
77
+ var baseRegex = tribe_aggregator.source_origin_regexp.eventbrite;
78
+ var type_regexps = {
79
+ // E.g. https://www.eventbrite.fr/e/some-event
80
+ 'event': baseRegex + 'e\/[A-z0-9_-]+',
81
+ // E.g. https://www.eventbrite.fr/o/some-organizer
82
+ 'organizer': baseRegex + 'o\/[A-z0-9_-]+'
83
+ };
84
+ var type = undefined;
85
+
86
+ _.each( type_regexps, function ( regularExpression, key ) {
87
+ var exp = new RegExp( regularExpression, 'g' );
88
+ var match = exp.exec( url );
89
+
90
+ if ( null === match ) {
91
+ return;
92
+ }
93
+
94
+ type = key;
95
+ } );
96
+
97
+ return type;
98
+ }
99
+ }
100
+ };
101
+
102
+ ( function( $, _, obj, ea ) {
103
+ 'use strict';
104
+ /**
105
+ * Sets up the fields for EA pages
106
+ *
107
+ * @return void
108
+ */
109
+ obj.init = function() {
110
+ obj.$.container = $( obj.selector.container );
111
+
112
+ obj.$.form = $( obj.selector.form );
113
+
114
+ obj.$.action = $( obj.selector.action );
115
+
116
+ // Update what fields we currently have to setup
117
+ obj.$.fields = obj.$.container.find( obj.selector.fields );
118
+
119
+ // Setup the preview container
120
+ obj.$.preview_container = $( obj.selector.preview_container );
121
+
122
+ // setup some variables we might reuse
123
+ obj.origin = $( '#tribe-ea-field-origin' );
124
+ obj.importType = $( '#tribe-ea-field-url_import_type' );
125
+ obj.urlImport = {
126
+ startDate: $( '#tribe-ea-field-url_start' ),
127
+ originalMinDate: $( '#tribe-ea-field-url_start' ).datepicker( 'option', 'minDate' ) || '',
128
+ };
129
+
130
+ // Setup each type of field
131
+ $.each( obj.construct, function( key, callback ){
132
+ callback( obj.$.fields );
133
+ } );
134
+
135
+ var $tribe_events = $( document.getElementById( 'eventDetails' ) );
136
+ if ( $tribe_events.data( 'datepicker_format' ) ) {
137
+ tribe_ev.state.datepicker_format = $tribe_events.data( 'datepicker_format' );
138
+ }
139
+
140
+ $( document )
141
+ .on( 'keypress' , obj.selector.fields , obj.events.trigger_field_change )
142
+ .on( 'click' , obj.selector.save_credentials_button , obj.events.trigger_save_credentials )
143
+ .on( 'click' , obj.selector.clear_filters_button , obj.clear_filters )
144
+ .on( 'click' , obj.selector.finalize_button , obj.finalize_manual_import )
145
+ .on( 'click' , obj.selector.preview_button , obj.preview_import )
146
+ .on( 'click' , obj.selector.cancel_button , obj.events.cancel_edit )
147
+ .on( 'click' , obj.selector.schedule_delete_link , obj.events.verify_schedule_delete )
148
+ .on( 'click' , obj.selector.view_filters , obj.events.toggle_view_filters )
149
+ .on( 'blur' , obj.selector.datepicker , obj.date_helper )
150
+ .on( 'submit' , obj.selector.tab_new , obj.events.suppress_submission )
151
+ .on( 'change' , obj.selector.import_type_field , function() {
152
+ // Resets the Preview
153
+ obj.reset_preview()
154
+
155
+ // Every time you change Type of import we reset the frequency field
156
+ var $this = $( this ),
157
+ $frequency = $( this ).next( obj.selector.fields );
158
+
159
+ var importType = $this.val();
160
+
161
+ $frequency.val( ( 'schedule' === importType ? 'daily' : '' ) ).change();
162
+
163
+ // set a data attribute on the form indicating the schedule type
164
+ obj.$.form.attr( 'data-type', importType );
165
+
166
+ obj.maybeLimitUrlStartDate()
167
+ } )
168
+ .on( 'change' , obj.selector.origin_field , function() {
169
+ var $field = $( this );
170
+ var selectData = $( this ).data( 'select2' );
171
+ var origin = $field.val();
172
+ obj.$.form.attr( 'data-origin', origin );
173
+ obj.reset_preview();
174
+
175
+ // reset all bumpdowns
176
+ $( '.tribe-bumpdown-active' ).removeClass( 'tribe-bumpdown-active' );
177
+ $( '.tribe-bumpdown:visible' ).hide();
178
+
179
+ if ( 'redirect' === $( this ).val() ) {
180
+ window.open( 'https://theeventscalendar.com/wordpress-event-aggregator/?utm_source=importoptions&utm_medium=plugin-tec&utm_campaign=in-app', '_blank' );
181
+ location.reload();
182
+ }
183
+
184
+ // A "reset" of the Post Status select2 selector when an origin is selected.
185
+ if ( '' !== origin ) {
186
+ $( obj.selector.post_status )
187
+ .val( ea.default_settings[ origin ][ 'post_status' ] )
188
+ .trigger( 'change' );
189
+ }
190
+
191
+ obj.maybeLimitUrlStartDate()
192
+ } )
193
+ .on( 'change', obj.selector.eventbrite_url_source, function ( e ) {
194
+ // Show all UI controls at first, even if we bail the user will have a full UI.
195
+ $( obj.eventbrite.refineControls ).show();
196
+
197
+ var type = obj.eventbrite.detect_type( $( '#tribe-ea-field-eventbrite_source' ).val() );
198
+
199
+ if ( ! type ) {
200
+ return;
201
+ }
202
+
203
+ // And then hide the ones that should be hidden for this import type if there are any.
204
+ var controlsToHide = obj.eventbrite.refineControlsHideMap[ type ];
205
+ if ( controlsToHide ) {
206
+ $( controlsToHide ).hide();
207
+ }
208
+ } )
209
+ .on( 'change', obj.selector.field_url_source, function( e ) {
210
+ var $field = $( this );
211
+ var selectData = $( this ).data( 'select2' );
212
+ var value = $field.val();
213
+ var origin = null;
214
+
215
+ if ( ! value ) {
216
+ return;
217
+ }
218
+
219
+ _.each( ea.source_origin_regexp, function( regularExpression, key ) {
220
+ var exp = new RegExp( regularExpression, 'g' );
221
+ var match = exp.exec( value );
222
+
223
+ if ( null === match ) {
224
+ return;
225
+ }
226
+
227
+ origin = key;
228
+ } );
229
+
230
+ if ( null == origin ) {
231
+ return;
232
+ }
233
+
234
+ var $origin = $( obj.selector.origin_field );
235
+
236
+ // Prevent Changing when dealing with Non-Existant Origin
237
+ if ( ! $origin.find( 'option[value="' + origin + '"]' ).length ) {
238
+ return;
239
+ }
240
+
241
+ var $type = $( '#tribe-ea-field-url_import_type' );
242
+ var typeValue = $type.val();
243
+ var frequencyValue = null;
244
+ if ( 'schedule' === typeValue ) {
245
+ frequencyValue = $( '#tribe-ea-field-url_import_frequency' ).val();
246
+ }
247
+
248
+ // Reset type value to avoid bugs
249
+ $type.val( '' );
250
+
251
+ // Change the Origin to what ever matched
252
+ $origin.val( origin ).trigger( 'change' );
253
+
254
+ // Change the frequency accordingly
255
+ $( '#tribe-ea-field-' + origin + '_import_type' ).val( typeValue ).trigger( 'change' );
256
+ if ( 'schedule' === typeValue ) {
257
+ $( '#tribe-ea-field-' + origin + '_import_frequency' ).val( frequencyValue ).trigger( 'change' );
258
+ }
259
+
260
+ if ( 'eventbrite' === origin ) {
261
+ $( '#tribe-ea-field-' + origin + '_source_type_url' ).trigger( 'click' );
262
+ $( '#tribe-ea-field-' + origin + '_import_source' ).val( 'source_type_url' ).trigger( 'change' );
263
+ }
264
+
265
+ // Change the Source URL accordingly
266
+ $( '#tribe-ea-field-' + origin + '_source' ).val( value ).trigger( 'change' );
267
+ } );
268
+
269
+ $( '.tribe-dependency' ).change();
270
+
271
+ // Configure TimePickers
272
+ tribe_timepickers.setup_timepickers( $( tribe_timepickers.selector.timepicker ) );
273
+
274
+ if ( 'edit' === obj.$.action.val() ) {
275
+ obj.$.form.addClass( 'edit-form' );
276
+ $( obj.selector.finalize_button ).html( ea.l10n.edit_save );
277
+ }
278
+
279
+ if ( 'object' === typeof tribe_aggregator_save ) {
280
+ obj.progress.init();
281
+ }
282
+ };
283
+
284
+ /**
285
+ * Send an Ajax request to preview the import
286
+ */
287
+ obj.preview_import = function( event ) {
288
+ event.preventDefault();
289
+
290
+ var $form = $( '.tribe-ea-form.tribe-validation' );
291
+
292
+ obj.reset_post_status();
293
+
294
+ // Makes sure we have validation
295
+ $form.trigger( 'validation.tribe' );
296
+
297
+ // Prevent anything from happening when there are errors
298
+ if ( tribe.validation.hasErrors( $form ) ) {
299
+ return;
300
+ }
301
+
302
+ obj.reset_polling_counter();
303
+
304
+ // clear the warning area
305
+ var $message_container = $( '.tribe-fetch-warning-message' ).html( '' );
306
+
307
+ // when generating data for previews, temporarily remove the post ID and import ID values from their fields
308
+ var $post_id = $( '#tribe-post_id' );
309
+ $post_id.data( 'value', $post_id.val() );
310
+ $post_id.val( '' );
311
+
312
+ var $import_id = $( '#tribe-import_id' );
313
+ $import_id.data( 'value', $import_id.val() );
314
+ $import_id.val( '' );
315
+
316
+ var $preview = $( obj.selector.preview_button );
317
+ var $form = $preview.closest( 'form' );
318
+ var data = $form.serialize();
319
+
320
+ // add the post_id value back into the field now that we've generated the serialized form data
321
+ $post_id.val( $post_id.data( 'value' ) );
322
+ $import_id.val( $post_id.data( 'value' ) );
323
+
324
+ obj.$.preview_container
325
+ .addClass( 'tribe-fetching' )
326
+ .removeClass( 'tribe-fetch-error' );
327
+
328
+ obj.$.form.removeClass( 'show-data' );
329
+
330
+ $preview.prop( 'disabled', true );
331
+
332
+ var table = $( '.dataTable' ).data( 'table' );
333
+ if ( 'undefined' !== typeof table ) {
334
+ table.clear().draw();
335
+ }
336
+
337
+ if ( 'edit' === obj.$.action.val() ) {
338
+ // preview the import
339
+ obj.preview_save_import( data );
340
+ } else {
341
+ // create the import
342
+ obj.create_import( data );
343
+ }
344
+ };
345
+
346
+ /**
347
+ * Reset the post status to the default state when a new import is taking place
348
+ */
349
+ obj.reset_post_status = function() {
350
+ var $origin = $( obj.selector.origin_field ); // eslint-disable-line no-var
351
+ var origin = $origin.length === 0 ? '' : $origin.val(); // eslint-disable-line no-var
352
+
353
+ if ( origin === '' ) {
354
+ return;
355
+ }
356
+
357
+ // Set the default state of the post_status
358
+ $( obj.selector.post_status )
359
+ .val( ea.default_settings[ origin ].post_status )
360
+ .trigger( 'change' );
361
+ };
362
+
363
+ obj.reset_polling_counter = function() {
364
+ obj.polling_frequency_index = 0;
365
+ obj.result_fetch_count = 0;
366
+ };
367
+
368
+ /**
369
+ * Clears the refine filters
370
+ */
371
+ obj.reset_form = function() {
372
+ obj.$.fields.val( '' ).trigger( 'change' );
373
+ $( '[id$="import_frequency"]' ).val( 'daily' ).trigger( 'change' );
374
+ obj.$.form.removeClass( 'show-data' );
375
+ };
376
+
377
+ /**
378
+ * Resets the preview area of a form
379
+ */
380
+ obj.reset_preview = function() {
381
+ obj.$.form.removeClass( 'show-data' );
382
+ $( '.tribe-fetched, .tribe-fetching, .tribe-fetch-error' ).removeClass( 'tribe-fetched tribe-fetching tribe-fetch-error' );
383
+ };
384
+
385
+ /**
386
+ * Clears the refine filters
387
+ */
388
+ obj.clear_filters = function() {
389
+ $( obj.selector.refine_filters )
390
+ .find( 'input, select' )
391
+ .val( '' )
392
+ .trigger( 'change' );
393
+ };
394
+
395
+ /**
396
+ * Edits an import and polls for results
397
+ */
398
+ obj.preview_save_import = function( data ) {
399
+ var jqxhr = $.ajax( {
400
+ type: 'POST',
401
+ url: ajaxurl + '?action=tribe_aggregator_preview_import',
402
+ data: data,
403
+ dataType: 'json'
404
+ } );
405
+
406
+ jqxhr.done( obj.handle_preview_create_results );
407
+ };
408
+
409
+ /**
410
+ * Creates an import and polls for results
411
+ *
412
+ * @param object data Form data for the import
413
+ */
414
+ obj.create_import = function( data ) {
415
+ var jqxhr = $.ajax( {
416
+ type: 'POST',
417
+ url: ajaxurl + '?action=tribe_aggregator_create_import',
418
+ data: data,
419
+ dataType: 'json'
420
+ } );
421
+
422
+ jqxhr.done( obj.handle_preview_create_results );
423
+ };
424
+
425
+ /**
426
+ * Handles the create/edit results
427
+ */
428
+ obj.handle_preview_create_results = function( response ) {
429
+ if ( ! response.success ) {
430
+ var error = response.data;
431
+
432
+ if ( ! _.isString( error ) ) {
433
+ error = error.message;
434
+ }
435
+
436
+ obj.display_fetch_error( [
437
+ '<b>',
438
+ ea.l10n.preview_fetch_error_prefix,
439
+ '</b>',
440
+ ' ' + error
441
+ ].join( ' ' ) );
442
+ return;
443
+ }
444
+
445
+ // set the import id of the page
446
+ obj.import_id = response.data.data.import_id;
447
+ $( '#tribe-import_id' ).val( obj.import_id );
448
+
449
+ if ( 'undefined' !== typeof response.data.data.items ) {
450
+ obj.init_datatable( response.data.data );
451
+ obj.$.preview_container.removeClass( 'tribe-fetching' ).addClass( 'tribe-fetched' );
452
+ return;
453
+ }
454
+
455
+ obj.$.container.find( '.spinner-message' ).html( ea.l10n.preview_polling[0] );
456
+ setTimeout( obj.poll_for_results, obj.polling_frequencies[ obj.polling_frequency_index ] );
457
+ };
458
+
459
+ /**
460
+ * Poll for results from an import
461
+ */
462
+ obj.poll_for_results = function() {
463
+ obj.result_fetch_count++;
464
+
465
+ var jqxhr = $.ajax( {
466
+ type: 'GET',
467
+ url: ajaxurl + '?action=tribe_aggregator_fetch_import&import_id=' + obj.import_id,
468
+ dataType: 'json'
469
+ } );
470
+
471
+ jqxhr.done( function( response ) {
472
+ if ( 'undefined' !== typeof response.data.warning && response.data.warning ) {
473
+ var warning_message = response.data.warning;
474
+
475
+ obj.display_fetch_warning( [
476
+ '<b>',
477
+ ea.l10n.preview_fetch_warning_prefix,
478
+ '</b>',
479
+ ' ' + warning_message
480
+ ].join( ' ' ) );
481
+ }
482
+
483
+ if ( ! response.success ) {
484
+ var error_message;
485
+
486
+ if ( 'undefined' !== typeof response.data.message ) {
487
+ error_message = response.data.message;
488
+ } else if ( 'undefined' !== typeof response.data[0].message ) {
489
+ error_message = response.data[0].message;
490
+ }
491
+
492
+ obj.display_fetch_error( [
493
+ '<b>',
494
+ ea.l10n.preview_fetch_error_prefix,
495
+ '</b>',
496
+ ' ' + error_message
497
+ ].join( ' ' ) );
498
+ return;
499
+ }
500
+
501
+ if ( 'error' === response.data.status ) {
502
+ obj.display_fetch_error( response.data.message );
503
+ } else if ( 'success' !== response.data.status ) {
504
+ if ( obj.result_fetch_count > obj.max_result_fetch_count ) {
505
+ obj.polling_frequency_index++;
506
+ obj.$.container.find( '.spinner-message' ).html( ea.l10n.preview_polling[ obj.polling_frequency_index ] );
507
+ obj.result_fetch_count = 0;
508
+ }
509
+
510
+ if ( 'undefined' === typeof obj.polling_frequencies[ obj.polling_frequency_index ] ) {
511
+ obj.display_fetch_error( ea.l10n.preview_timeout );
512
+ } else {
513
+ setTimeout( obj.poll_for_results, obj.polling_frequencies[ obj.polling_frequency_index ] );
514
+ }
515
+ } else {
516
+ response.data.data.items = response.data.data.events;
517
+ obj.init_datatable( response.data.data );
518
+ obj.$.preview_container.removeClass( 'tribe-fetching' ).addClass( 'tribe-fetched' );
519
+ $( obj.selector.preview_button ).prop( 'disabled', false );
520
+ }
521
+ } );
522
+ };
523
+
524
+ /**
525
+ * Initializes the datatable
526
+ *
527
+ * @param array data Array of events to display in the table
528
+ */
529
+ obj.init_datatable = function( data ) {
530
+ var display_checkboxes = false;
531
+
532
+ var origin = $( obj.selector.origin_field ).val();
533
+ var is_csv = 'csv' === origin;
534
+ var is_eventbrite = 'eventbrite' === origin;
535
+
536
+ var $import_type = $( '[id$="import_type"]:visible' );
537
+ var import_type = 'manual';
538
+
539
+ // set the default settings
540
+ if ( 'undefined' !== typeof ea.default_settings[ origin ] ) {
541
+ for ( var settings_key in ea.default_settings[ origin ] ) {
542
+ if ( ! ea.default_settings[ origin ].hasOwnProperty( settings_key ) ) {
543
+ continue;
544
+ }
545
+
546
+ var $setting_field = $( '#tribe-ea-field-' + settings_key );
547
+
548
+ $setting_field
549
+ .val( ea.default_settings[ origin ][ settings_key ] )
550
+ .trigger( 'change' );
551
+ }
552
+ }
553
+
554
+ if ( $import_type.length ) {
555
+ import_type = $( '#' + $import_type.first().attr( 'id' ).replace( 's2id_', '' ) ).val();
556
+ }
557
+
558
+ if ( 'manual' === import_type && !data.items.length ) {
559
+ var origin = data.origin;
560
+ var origin_specific_no_results_msg = (
561
+ 'undefined' !== typeof ea.l10n[ origin ]
562
+ && 'undefined' !== typeof ea.l10n[ origin ].no_results
563
+ );
564
+
565
+ var message = origin_specific_no_results_msg ?
566
+ ea.l10n[ origin ].no_results
567
+ : ea.l10n.no_results;
568
+
569
+ obj.display_fetch_error(message);
570
+ return;
571
+ }
572
+
573
+ if ( ! $import_type.length || 'manual' === import_type ) {
574
+ display_checkboxes = true;
575
+ }
576
+
577
+ var $table = obj.$.preview_container.find( '.data-container table' );
578
+
579
+ var rows = [];
580
+ for ( var i in data.items ) {
581
+ var row = data.items[ i ];
582
+ row.checkbox = display_checkboxes ? '<input type="checkbox">' : '';
583
+ if ( row.all_day ) {
584
+ row.start_time = ea.l10n.all_day;
585
+ } else {
586
+ if ( 'undefined' === typeof row.start_meridian || ! row.start_meridian ) {
587
+ if ( parseInt( row.start_hour, 10 ) > 11 ) {
588
+ row.start_meridian = ea.l10n.pm;
589
+ } else {
590
+ row.start_meridian = ea.l10n.am;
591
+ }
592
+ }
593
+
594
+ if ( row.start_hour > 12 ) {
595
+ row.start_hour = row.start_hour - 12;
596
+ }
597
+
598
+ row.start_time = ( 0 === parseInt( row.start_hour, 10 ) ? 12 : row.start_hour ) + ':' + ( '00' + row.start_minute ).slice( -2 );
599
+ row.start_time += ' ' + row.start_meridian;
600
+ }
601
+ rows.push( row );
602
+ }
603
+
604
+ if ( display_checkboxes && ! is_csv ) {
605
+ $table.addClass( 'display-checkboxes' );
606
+ } else {
607
+ $table.removeClass( 'display-checkboxes' );
608
+ }
609
+
610
+ obj.$.form.addClass( 'show-data' );
611
+
612
+ var args = {
613
+ lengthMenu: [
614
+ [ 5, 10, 25, 50, -1 ],
615
+ [ 5, 10, 25, 50, tribe_l10n_datatables.pagination.all ]
616
+ ],
617
+ order: [
618
+ [ 1, 'asc' ]
619
+ ],
620
+ columnDefs: [
621
+ {
622
+ cellType: 'th',
623
+ className: 'check-column',
624
+ orderable: false,
625
+ targets: 0
626
+ }
627
+ ],
628
+ data: rows
629
+ };
630
+
631
+ if ( 'undefined' !== typeof data.columns ) {
632
+ args.columns = [
633
+ { data: 'checkbox' }
634
+ ];
635
+
636
+ var $head = $table.find( 'thead tr' );
637
+ var $foot = $table.find( 'tfoot tr' );
638
+ var $map_row = $({});
639
+ var column_map = '';
640
+ var content_type = '';
641
+ $head.find( 'th:first' ).nextAll().remove();
642
+ $foot.find( 'th:first' ).nextAll().remove();
643
+
644
+ if ( is_csv ) {
645
+ var $data_container = $table.closest( '.data-container' );
646
+ $table.closest( '.data-container' ).addClass( 'csv-data' );
647
+
648
+ $data_container.find( '.tribe-preview-message .tribe-csv-filename' ).html( $( '#tribe-ea-field-csv_file_name' ).text() );
649
+ $head.closest( 'thead' ).prepend( '<tr class="tribe-column-map"><th scope="row" class="check-column column-cb"></th></tr>' );
650
+ $map_row = $( '.tribe-column-map' );
651
+ content_type = $( '#tribe-ea-field-csv_content_type' ).val();
652
+ content_type = content_type.replace( 'tribe_', '' );
653
+
654
+ var $mapper_template = $( '#tribe-csv-column-map-' + content_type );
655
+ column_map = $mapper_template.html();
656
+ }
657
+
658
+ var column = 0;
659
+ for ( i in data.columns ) {
660
+ args.columns.push( { data: data.columns[ i ] } );
661
+ $head.append( '<th scope="col">' + data.columns[ i ] + '</th>' );
662
+ $foot.append( '<th scope="col">' + data.columns[ i ] + '</th>' );
663
+
664
+ // if this is a CSV import, add the column map headers and default-select where possible
665
+ if ( is_csv ) {
666
+ var column_slug = data.columns[ i ].toLowerCase()
667
+ .replace( /^\s+|\s+$/g, '' ) // Remove left / right spaces before the word starts
668
+ .replace( /\s/g, '_' ) // change all spaces inside of words to underscores
669
+ .replace( /[^a-z0-9_]/, '' );
670
+ $map_row.append( '<th scope="col">' + column_map.replace( 'name="column_map[]"', 'name="aggregator[column_map][' + column + ']" id="column-' + column + '"' ) + '</th>' );
671
+
672
+ var $map_select = $map_row.find( '#column-' + column );
673
+
674
+ if ( 'undefined' !== typeof ea.csv_column_mapping[ content_type ][ column ] ) {
675
+ column_slug = ea.csv_column_mapping[ content_type ][ column ];
676
+ }
677
+ $map_select.find( 'option[value="' + column_slug + '"]' ).prop( 'selected', true );
678
+ }
679
+
680
+ column++;
681
+ }
682
+
683
+ args.scrollX = true;
684
+ } else {
685
+ args.columns = [
686
+ { data: 'checkbox' },
687
+ { data: 'start_date' },
688
+ { data: 'start_time' },
689
+ { data: 'end_date' },
690
+ { data: 'title' }
691
+ ];
692
+ args.autoWidth = false;
693
+ }
694
+
695
+ $table.tribeDataTable( args );
696
+ obj.wrap_cell_content();
697
+
698
+ $table
699
+ .on( 'select.dt' , obj.events.twiddle_finalize_button_text )
700
+ .on( 'deselect.dt', obj.events.twiddle_finalize_button_text )
701
+ .on( 'draw.dt', obj.wrap_cell_content );
702
+
703
+ var text;
704
+
705
+ if ( 'new' === obj.$.action.val() ) {
706
+ if ( 'manual' === import_type && is_csv ) {
707
+ text = ea.l10n.import_all_no_number;
708
+ } else if ( 'manual' === import_type ) {
709
+ text = ea.l10n.import_all.replace( '%d', rows.length );
710
+ } else {
711
+ text = ea.l10n.create_schedule;
712
+ }
713
+ }
714
+
715
+ $( obj.selector.finalize_button ).html( text );
716
+ };
717
+
718
+ obj.wrap_cell_content = function() {
719
+ $( '.dataTable' ).find( 'tbody td' ).each( function() {
720
+ var $cell = $( this );
721
+ $cell.html( '<div class="tribe-td-height-limit">' + $cell.html() + '</div>' );
722
+ } );
723
+ };
724
+
725
+ /**
726
+ * Displays a fetch error
727
+ */
728
+ obj.display_fetch_error = function( message ) {
729
+ var $message_container = $( '.tribe-fetch-error-message' );
730
+ obj.$.preview_container.removeClass( 'tribe-fetching' ).addClass( 'tribe-fetch-error' );
731
+
732
+ // clear out the error message area
733
+ $message_container.html('');
734
+
735
+ obj.display_error( $message_container, message );
736
+ $( obj.selector.preview_button ).prop( 'disabled', false );
737
+ };
738
+
739
+ /**
740
+ * Displays a fetch warning
741
+ */
742
+ obj.display_fetch_warning = function( message ) {
743
+ var $message_container = $( '.tribe-fetch-warning-message' );
744
+ obj.$.preview_container.removeClass( 'tribe-fetching' ).addClass( 'tribe-fetch-warning' );
745
+
746
+ // clear out the error message area
747
+ $message_container.html('');
748
+
749
+ obj.display_warning( $message_container, message );
750
+ };
751
+
752
+ /**
753
+ * Displays an error to a container on the page
754
+ */
755
+ obj.display_error = function( $container, message ) {
756
+ $container.prepend(
757
+ [
758
+ '<div class="notice notice-error">',
759
+ '<p>',
760
+ message,
761
+ '</p>',
762
+ '</div>'
763
+ ].join( '' )
764
+ );
765
+ };
766
+
767
+ /**
768
+ * Displays a warning to a container on the page
769
+ */
770
+ obj.display_warning = function( $container, message ) {
771
+ $container.prepend(
772
+ [
773
+ '<div class="notice notice-warning">',
774
+ '<p>',
775
+ message,
776
+ '</p>',
777
+ '</div>'
778
+ ].join( '' )
779
+ );
780
+ };
781
+
782
+ /**
783
+ * displays a success message to a container on the page
784
+ */
785
+ obj.display_success = function( $container, message ) {
786
+ $container.prepend(
787
+ [
788
+ '<div class="notice notice-success">',
789
+ '<p>',
790
+ message,
791
+ '</p>',
792
+ '</div>'
793
+ ].join( '' )
794
+ );
795
+ };
796
+
797
+ /**
798
+ * Saves credential form
799
+ */
800
+ obj.save_credentials = function( $credentials_form ) {
801
+ var data = $credentials_form.find( '.tribe-fieldset' ).find( 'input' ).serialize();
802
+
803
+ var url = ajaxurl + '?action=tribe_aggregator_save_credentials';
804
+
805
+ var jqxhr = $.post( url, data );
806
+ jqxhr.done( function( response ) {
807
+ if ( response.success ) {
808
+ $credentials_form.addClass( 'credentials-entered' );
809
+ $credentials_form.find( '[name="has-credentials"]' ).val( 1 ).change();
810
+ }
811
+ } );
812
+ };
813
+
814
+ /**
815
+ * Submits the final version of the import for saving events
816
+ */
817
+ obj.finalize_manual_import = function() {
818
+ var origin = $( '#tribe-ea-field-origin' ).val();
819
+ var $table = $( '.dataTable' );
820
+ var table = window.tribe_data_table;
821
+
822
+ if ( $table.hasClass( 'display-checkboxes' ) ) {
823
+ var row_selection = table.rows( { selected: true } );
824
+ if ( ! row_selection[0].length ) {
825
+ row_selection = table.rows();
826
+ }
827
+
828
+ if ( ! row_selection[0].length ) {
829
+ obj.display_error( $( '.tribe-finalize-container' ), ea.l10n.events_required_for_manual_submit );
830
+ return;
831
+ }
832
+
833
+ var data = row_selection.data();
834
+ var items = [];
835
+ var unique_id_field = null;
836
+
837
+ if ( 'meetup' === origin ) {
838
+ unique_id_field = 'meetup_id';
839
+ } else if ( 'eventbrite' === origin ) {
840
+ unique_id_field = 'eventbrite_id';
841
+ } else if ( 'ical' === origin || 'ics' === origin || 'gcal' === origin ) {
842
+ unique_id_field = 'uid';
843
+ } else if ( 'url' === origin ) {
844
+ unique_id_field = 'id';
845
+ }
846
+
847
+ if ( null !== unique_id_field ) {
848
+ for ( var i in data ) {
849
+ if ( isNaN( i ) ) {
850
+ continue;
851
+ }
852
+
853
+ if ( 'undefined' === typeof data[ i ][ unique_id_field ] ) {
854
+ continue;
855
+ }
856
+
857
+ items.push( data[ i ][ unique_id_field ] );
858
+ }
859
+
860
+ $( '#tribe-selected-rows' ).text( JSON.stringify( items ) );
861
+ } else {
862
+ $( '#tribe-selected-rows' ).text( 'all' );
863
+ }
864
+ } else {
865
+ $( '#tribe-selected-rows' ).text( 'all' );
866
+ }
867
+
868
+ $( '.dataTables_scrollBody' ).find( '[name^="aggregator[column_map]"]' ).remove();
869
+
870
+ obj.$.form.submit();
871
+ };
872
+
873
+ /**
874
+ * Better Search ID for Select2, compatible with WordPress ID from WP_Query
875
+ *
876
+ * @param {object|string} e Searched object or the actual ID
877
+ * @return {string} ID of the object
878
+ */
879
+ obj.search_id = function ( e ) {
880
+ var id = null;
881
+
882
+ if ( 'undefined' !== typeof e.id ){
883
+ id = e.id;
884
+ } else if ( 'undefined' !== typeof e.ID ){
885
+ id = e.ID;
886
+ } else if ( 'undefined' !== typeof e.value ){
887
+ id = e.value;
888
+ }
889
+ return e == undefined ? null : id;
890
+ };
891
+
892
+ /**
893
+ * Configure the Drop Down Fields
894
+ *
895
+ * @param {jQuery} $fields All the fields from the page
896
+ *
897
+ * @return {jQuery} Affected fields
898
+ */
899
+ obj.construct.dropdown = function( $fields ) {
900
+ var upsellFormatter = function( option ) {
901
+ var $option = $( option.element );
902
+
903
+ if ( 'string' === typeof $option.data( 'subtitle' ) ) {
904
+ option.text = option.text + '<br><span class="tribe-dropdown-subtitle">' + $option.data( 'subtitle' ) + '</span>';
905
+ }
906
+
907
+ return option.text;
908
+ };
909
+ var args = {
910
+ formatResult: upsellFormatter,
911
+ formatSelection: upsellFormatter,
912
+
913
+ };
914
+
915
+ tribe_dropdowns.dropdown( $fields.filter( '.tribe-ea-dropdown' ), args );
916
+
917
+ // return to be able to chain jQuery calls
918
+ return $fields;
919
+ };
920
+
921
+ /**
922
+ * Configures the Media Button
923
+ *
924
+ * @param {jQuery} $fields All the fields from the page
925
+ *
926
+ * @return {jQuery} Affected fields
927
+ */
928
+ obj.construct.media_button = function( $fields ) {
929
+ var $elements = $fields.filter( obj.selector.media_button );
930
+
931
+ if ( typeof wp === 'undefined' || ! wp.media || ! wp.media.editor ) {
932
+ return $elements;
933
+ }
934
+
935
+ $elements.each( function(){
936
+ var $button = $( this ),
937
+ input = $button.data( 'input' ),
938
+ $field = $( '#' + input ),
939
+ $name = $( '#' + input + '_name' );
940
+
941
+ // Setup the WP Media for this slug
942
+ var media = obj.media[ input ] = wp.media( {
943
+ title: $button.data( 'mediaTitle' ),
944
+ library: {
945
+ type: $button.data( 'mimeType' )
946
+ },
947
+ multiple: false
948
+ } );
949
+
950
+ // On select send to Select2
951
+ media.on( 'select', function (){
952
+ var state = media.state(),
953
+ selection = state.get('selection');
954
+
955
+ if ( ! selection ) {
956
+ return;
957
+ }
958
+
959
+ selection.each( function( attachment ) {
960
+ $field.data( { id: attachment.attributes.id, text: attachment.attributes.title } );
961
+ $field.val( attachment.attributes.id );
962
+ $field.change();
963
+ $name.html( attachment.attributes.filename );
964
+ $name.attr( 'title', attachment.attributes.filename );
965
+ } );
966
+ } );
967
+
968
+ // We don't need the Media Library button
969
+ /*
970
+ media.on( 'open', function () {
971
+ $( '.media-router .media-menu-item' ).first().trigger( 'click' );
972
+ } );
973
+ */
974
+ } );
975
+
976
+ obj.$.container.on( 'click', obj.selector.media_button, function( e ) {
977
+ e.preventDefault();
978
+
979
+ if ( ! $( this ).is( ':visible' ) ) {
980
+ return;
981
+ }
982
+
983
+ var input = $( this ).data( 'input' );
984
+ obj.media[ input ].open( input );
985
+ return false;
986
+ } );
987
+
988
+ return $elements;
989
+ };
990
+
991
+ /**
992
+ * Triggers a change event on the given field
993
+ */
994
+ obj.events.trigger_field_change = function() {
995
+ $( this ).change();
996
+ };
997
+
998
+ /**
999
+ * Triggers the saving of credentials
1000
+ */
1001
+ obj.events.trigger_save_credentials = function() {
1002
+ obj.save_credentials( $( this ).closest( '.enter-credentials' ) );
1003
+ };
1004
+
1005
+ /**
1006
+ * Suppress form submissions
1007
+ */
1008
+ obj.events.suppress_submission = function( e ) {
1009
+ var origin = $( '#tribe-ea-field-origin' ).val();
1010
+
1011
+ if ( $( '#tribe-selected-rows' ).val().length ) {
1012
+ return true;
1013
+ }
1014
+
1015
+ e.preventDefault();
1016
+ };
1017
+
1018
+ /**
1019
+ * Adjusts the "Import" button to have contextual text based on selected records to import
1020
+ */
1021
+ obj.events.twiddle_finalize_button_text = function( e, dt ) {
1022
+ if ( 'new' !== obj.$.action.val() ) {
1023
+ return;
1024
+ }
1025
+
1026
+ var selected_rows = dt.rows({ selected: true })[0].length;
1027
+ var text = ea.l10n.import_checked;
1028
+
1029
+ if ( ! selected_rows ) {
1030
+ text = ea.l10n.import_all;
1031
+ selected_rows = dt.rows()[0].length;
1032
+ }
1033
+
1034
+ text = text.replace( '%d', selected_rows );
1035
+ $( obj.selector.finalize_button ).html( text );
1036
+ };
1037
+
1038
+ obj.events.cancel_edit = function( e ) {
1039
+ e.preventDefault();
1040
+ var url = window.location.href;
1041
+ url = url.replace( 'tab=edit', 'tab=scheduled' );
1042
+ url = url.replace( /id=\d+/, '' );
1043
+ window.location.href = url;
1044
+ };
1045
+
1046
+ obj.events.verify_schedule_delete = function() {
1047
+ return confirm( ea.l10n.verify_schedule_delete );
1048
+ };
1049
+
1050
+ /**
1051
+ * Toggles the View Filters link on the Scheduled Imports/History page
1052
+ */
1053
+ obj.events.toggle_view_filters = function( e ) {
1054
+ e.preventDefault();
1055
+ var $el = $( this );
1056
+
1057
+ $el.toggleClass( 'tribe-active' );
1058
+ if ( $el.is( '.tribe-active' ) ) {
1059
+ $el.html( ea.l10n.hide_filters );
1060
+ } else {
1061
+ $el.html( ea.l10n.view_filters );
1062
+ }
1063
+ };
1064
+
1065
+ obj.progress.init = function() {
1066
+ obj.progress.data = {};
1067
+ obj.progress.$ = {};
1068
+ obj.progress.$.notice = $( '.tribe-notice-aggregator-update-msg' );
1069
+ obj.progress.$.spinner = obj.progress.$.notice.find( 'img' );
1070
+ obj.progress.$.progress = obj.progress.$.notice.find( '.progress' );
1071
+ obj.progress.$.tracker = obj.progress.$.notice.find( '.tracker' );
1072
+ obj.progress.$.created = obj.progress.$.tracker.find( '.track-created .value' );
1073
+ obj.progress.$.updated = obj.progress.$.tracker.find( '.track-updated .value' );
1074
+ obj.progress.$.skipped = obj.progress.$.tracker.find( '.track-skipped .value' );
1075
+ obj.progress.$.remaining = obj.progress.$.tracker.find( '.track-remaining .value' );
1076
+ obj.progress.$.bar = obj.progress.$.notice.find( '.bar' );
1077
+ obj.progress.data.time = Date.now();
1078
+
1079
+ setTimeout( obj.progress.start );
1080
+ };
1081
+
1082
+ obj.progress.start = function() {
1083
+ obj.progress.send_request();
1084
+ obj.progress.update( tribe_aggregator_save.progress, tribe_aggregator_save.progressText );
1085
+ };
1086
+
1087
+ obj.progress.handle_response = function( data ) {
1088
+ var now = Date.now();
1089
+ var elapsed = now - obj.progress.data.time;
1090
+
1091
+ if ( data.html ) {
1092
+ obj.progress.data.notice.html( data.html );
1093
+ }
1094
+
1095
+ if ( ! isNaN( parseInt( data.progress, 10 ) ) ) {
1096
+ obj.progress.update( data );
1097
+ }
1098
+
1099
+ if ( data.continue ) {
1100
+ // If multiple editors are open for the same event we don't want to hammer the server
1101
+ // and so a min delay of 1/2 sec is introduced between update requests
1102
+ if ( elapsed < 500 ) {
1103
+ setTimeout( obj.progress.send_request, 500 - elapsed );
1104
+ } else {
1105
+ obj.progress.send_request();
1106
+ }
1107
+ }
1108
+
1109
+ if ( data.error ) {
1110
+ obj.progress.$.notice.find( '.tribe-message' ).html( data.error_text );
1111
+ obj.progress.$.tracker.remove();
1112
+ obj.progress.$.notice.find( '.progress-container' ).remove();
1113
+ obj.progress.$.notice.removeClass( 'warning' ).addClass( 'error' );
1114
+ } else if ( data.complete ) {
1115
+ obj.progress.$.notice.find( '.tribe-message' ).html( data.complete_text );
1116
+ obj.progress.$.tracker.remove();
1117
+ obj.progress.$.notice.find( '.progress-container' ).remove();
1118
+ obj.progress.$.notice.removeClass( 'warning' ).addClass( 'completed' );
1119
+ }
1120
+ };
1121
+
1122
+ obj.progress.send_request = function() {
1123
+ var payload = {
1124
+ record: tribe_aggregator_save.record_id,
1125
+ check: tribe_aggregator_save.check,
1126
+ action: 'tribe_aggregator_realtime_update'
1127
+ };
1128
+ $.post( ajaxurl, payload, obj.progress.handle_response, 'json' );
1129
+ };
1130
+
1131
+ obj.progress.update = function( data ) {
1132
+ var percentage = parseInt( data.progress, 10 );
1133
+
1134
+ // The percentage should never be out of bounds, but let's handle such a thing gracefully if it arises
1135
+ if ( percentage < 0 || percentage > 100 ) {
1136
+ return;
1137
+ }
1138
+
1139
+ if ( 'undefined' === typeof data.counts ) {
1140
+ return;
1141
+ }
1142
+
1143
+ var types = [ 'created', 'updated', 'skipped' ];
1144
+ for ( var i in types ) {
1145
+ if ( ! data.counts[ types[ i ] ] ) {
1146
+ continue;
1147
+ }
1148
+
1149
+ var count = data.counts[ types[ i ] ];
1150
+ var $target = obj.progress.$[ types[ i ] ];
1151
+
1152
+ // update updated and skipped count only if higher
1153
+ if ( 'updated' === types[ i ] || 'skipped' === types[ i ] ) {
1154
+ var current = $target ? $target.html() : 0;
1155
+
1156
+ if ( count > current ) {
1157
+ $target.html( count );
1158
+ }
1159
+ } else {
1160
+ $target.html( count );
1161
+ }
1162
+
1163
+ if ( ! obj.progress.$.tracker.hasClass( 'has-' + types[ i ] ) ) {
1164
+ obj.progress.$.tracker.addClass( 'has-' + types[ i ] );
1165
+ }
1166
+ }
1167
+
1168
+ obj.progress.$.bar.css( 'width', percentage + '%' );
1169
+ obj.progress.$.progress.attr( 'title', data.progress_text );
1170
+ };
1171
+
1172
+ obj.progress.remove_notice = function() {
1173
+ var effect = {
1174
+ opacity: 0,
1175
+ height: 'toggle'
1176
+ };
1177
+
1178
+ obj.progress.$.notice.animate( effect, 1000, function() {
1179
+ obj.progress.$.notice.remove();
1180
+ } );
1181
+ };
1182
+
1183
+ /**
1184
+ * helper text for date select
1185
+ */
1186
+ obj.date_helper = function() {
1187
+ var $picker;
1188
+
1189
+ $picker = $( this );
1190
+
1191
+ if ( ! $picker.hasClass( 'tribe-datepicker' ) ) {
1192
+ return;
1193
+ }
1194
+
1195
+ var selected_date = $picker.val();
1196
+ if ( '' === selected_date || null === selected_date ) {
1197
+ return;
1198
+ }
1199
+
1200
+ var tmp = $picker.attr( 'id' ).match( 'tribe-ea-field-(.*)_start' );
1201
+ var origin = tmp[1];
1202
+ if ( '' === origin || null === origin ) {
1203
+ return;
1204
+ }
1205
+
1206
+ jQuery( '#tribe-date-helper-date-' + origin ).html( selected_date );
1207
+ };
1208
+
1209
+ obj.maybeLimitUrlStartDate = function() {
1210
+ if( 'url' !== obj.origin.val() ){
1211
+ return;
1212
+ }
1213
+
1214
+ if( 'schedule' === obj.importType.val() ){
1215
+ obj.urlImport.startDate.data( 'datepicker-min-date', 'today' );
1216
+
1217
+ return;
1218
+ }
1219
+
1220
+ obj.urlImport.startDate.data( 'datepicker-min-date', null );
1221
+ };
1222
+
1223
+ // Run Init on Document Ready
1224
+ $( document ).ready( obj.init );
1225
+ } )( jQuery, _, tribe_aggregator.fields, tribe_aggregator );
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.1.2
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
@@ -71,4 +71,4 @@ require_once dirname( TRIBE_EVENTS_FILE ) . '/src/Tribe/Main.php';
71
  Tribe__Events__Main::instance();
72
 
73
  register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
74
- register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
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.1.1.1
6
  * Author: Modern Tribe, Inc.
7
  * Author URI: http://m.tri.be/1x
8
  * Text Domain: the-events-calendar
71
  Tribe__Events__Main::instance();
72
 
73
  register_activation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'activate' ) );
74
+ register_deactivation_hook( TRIBE_EVENTS_FILE, array( 'Tribe__Events__Main', 'deactivate' ) );
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitbbfbf1eeab6edac4f104ebea9177107a::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit493061e80e53a7ec17a4b6a700cb5c32::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitbbfbf1eeab6edac4f104ebea9177107a
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitbbfbf1eeab6edac4f104ebea9177107a
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitbbfbf1eeab6edac4f104ebea9177107a', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitbbfbf1eeab6edac4f104ebea9177107a', '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\ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a::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 ComposerAutoloaderInit493061e80e53a7ec17a4b6a700cb5c32
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit493061e80e53a7ec17a4b6a700cb5c32', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit493061e80e53a7ec17a4b6a700cb5c32', '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\ComposerStaticInit493061e80e53a7ec17a4b6a700cb5c32::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 ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -274,9 +274,9 @@ class ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a
274
  public static function getInitializer(ClassLoader $loader)
275
  {
276
  return \Closure::bind(function () use ($loader) {
277
- $loader->prefixLengthsPsr4 = ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a::$prefixLengthsPsr4;
278
- $loader->prefixDirsPsr4 = ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a::$prefixDirsPsr4;
279
- $loader->classMap = ComposerStaticInitbbfbf1eeab6edac4f104ebea9177107a::$classMap;
280
 
281
  }, null, ClassLoader::class);
282
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit493061e80e53a7ec17a4b6a700cb5c32
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
274
  public static function getInitializer(ClassLoader $loader)
275
  {
276
  return \Closure::bind(function () use ($loader) {
277
+ $loader->prefixLengthsPsr4 = ComposerStaticInit493061e80e53a7ec17a4b6a700cb5c32::$prefixLengthsPsr4;
278
+ $loader->prefixDirsPsr4 = ComposerStaticInit493061e80e53a7ec17a4b6a700cb5c32::$prefixDirsPsr4;
279
+ $loader->classMap = ComposerStaticInit493061e80e53a7ec17a4b6a700cb5c32::$classMap;
280
 
281
  }, null, ClassLoader::class);
282
  }