Event Tickets - Version 5.3.2

Version Description

Download this release

Release Info

Developer borkweb
Plugin Icon 128x128 Event Tickets
Version 5.3.2
Comparing to
See all releases

Code changes from version 5.3.1 to 5.3.2

Files changed (62) 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.pot +9 -5
  4. common/src/Tribe/Admin/Notice/Plugin_Download.php +1 -1
  5. common/src/Tribe/Admin/Upsell_Notice/Main.php +97 -0
  6. common/src/Tribe/Admin/Upsell_Notice/README.md +65 -0
  7. common/src/Tribe/Ajax/Dropdown.php +1 -1
  8. common/src/Tribe/Main.php +1 -1
  9. common/src/admin-views/notices/upsell/icon.php +21 -0
  10. common/src/admin-views/notices/upsell/main.php +50 -0
  11. common/src/resources/css/tribe-common-admin.min.css +1 -1
  12. common/src/resources/images/icons/circle-bolt.svg +1 -0
  13. common/vendor/autoload.php +1 -1
  14. common/vendor/autoload_52.php +1 -1
  15. common/vendor/composer/autoload_classmap.php +1 -0
  16. common/vendor/composer/autoload_real.php +4 -4
  17. common/vendor/composer/autoload_real_52.php +3 -3
  18. common/vendor/composer/autoload_static.php +6 -5
  19. event-tickets.php +2 -2
  20. lang/event-tickets-da_DK.mo +0 -0
  21. lang/event-tickets-de_DE.mo +0 -0
  22. lang/event-tickets-es_ES.mo +0 -0
  23. lang/event-tickets-fr_CA.mo +0 -0
  24. lang/event-tickets-fr_FR.mo +0 -0
  25. lang/event-tickets-it_IT.mo +0 -0
  26. lang/event-tickets-nl_NL.mo +0 -0
  27. lang/event-tickets-ro_RO.mo +0 -0
  28. lang/event-tickets.pot +171 -85
  29. readme.txt +37 -20
  30. src/Tickets/Commerce/Admin/Notices.php +27 -13
  31. src/Tickets/Commerce/Flag_Actions/Generate_Attendees.php +7 -0
  32. src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php +50 -0
  33. src/Tickets/Commerce/Gateways/PayPal/Assets.php +2 -3
  34. src/Tickets/Commerce/Gateways/PayPal/Gateway.php +69 -0
  35. src/Tickets/Commerce/Gateways/PayPal/Hooks.php +14 -0
  36. src/Tickets/Commerce/Gateways/Stripe/Assets.php +2 -3
  37. src/Tickets/Commerce/Gateways/Stripe/Gateway.php +77 -0
  38. src/Tickets/Commerce/Gateways/Stripe/Hooks.php +14 -0
  39. src/Tickets/Commerce/Gateways/Stripe/Merchant.php +1 -0
  40. src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php +17 -2
  41. src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php +24 -0
  42. src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php +14 -1
  43. src/Tickets/Commerce/Promoter_Observer.php +86 -0
  44. src/Tickets/Commerce/Provider.php +1 -0
  45. src/Tickets/Commerce/Settings.php +2 -4
  46. src/Tickets/Commerce/Shortcodes/Checkout_Shortcode.php +1 -0
  47. src/Tickets/Commerce/Utils/Currency.php +32 -0
  48. src/Tribe/Commerce/Currency.php +9 -9
  49. src/Tribe/Main.php +1 -1
  50. src/Tribe/REST/V1/Endpoints/Single_Attendee.php +270 -0
  51. src/Tribe/REST/V1/Service_Provider.php +15 -1
  52. src/Tribe/Repositories/Post_Repository.php +7 -4
  53. src/Tribe/Service_Providers/Customizer.php +1 -5
  54. src/Tribe/Shortcodes/Tribe_Tickets_Checkout.php +1 -0
  55. src/Tribe/Status/Manager.php +30 -12
  56. src/Tribe/Ticket_Repository.php +1 -0
  57. src/views/blocks/attendees/view-link.php +6 -1
  58. src/views/tickets/view-link.php +18 -1
  59. vendor/autoload.php +1 -1
  60. vendor/composer/autoload_classmap.php +1 -0
  61. vendor/composer/autoload_real.php +4 -4
  62. vendor/composer/autoload_static.php +5 -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.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.14.16\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2022-03-15 18:48:04+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: 2022-03-15 18:48\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -58,7 +58,7 @@ msgctxt "Error status label for system info optin"
58
  msgid "Status:"
59
  msgstr ""
60
 
61
- #. #-#-#-#-# tribe-common.pot (Tribe Common 4.14.16) #-#-#-#-#
62
  #. Author of the plugin/theme
63
  #: src/Tribe/Admin/Help_Page.php:82 src/Tribe/Customizer.php:666
64
  #: src/Tribe/Plugins_API.php:25 src/admin-views/help-calendar.php:97
@@ -427,7 +427,7 @@ msgid ""
427
  msgstr ""
428
 
429
  #: src/Tribe/Admin/Notice/Plugin_Download.php:122
430
- msgid "To begin using %2$s, please install and activate %3$s."
431
  msgstr ""
432
 
433
  #: src/Tribe/Admin/Notice/Plugin_Download.php:124
@@ -3441,6 +3441,10 @@ msgstr ""
3441
  msgid "Black Friday Sale now through %s."
3442
  msgstr ""
3443
 
 
 
 
 
3444
  #: src/admin-views/tribe-options-display.php:23
3445
  msgid "Date Format Settings"
3446
  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.14.17\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2022-03-30 13:24: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: 2022-03-30 13:24\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
58
  msgid "Status:"
59
  msgstr ""
60
 
61
+ #. #-#-#-#-# tribe-common.pot (Tribe Common 4.14.17) #-#-#-#-#
62
  #. Author of the plugin/theme
63
  #: src/Tribe/Admin/Help_Page.php:82 src/Tribe/Customizer.php:666
64
  #: src/Tribe/Plugins_API.php:25 src/admin-views/help-calendar.php:97
427
  msgstr ""
428
 
429
  #: src/Tribe/Admin/Notice/Plugin_Download.php:122
430
+ msgid "To begin using %2$s, please install (or upgrade) and activate %3$s."
431
  msgstr ""
432
 
433
  #: src/Tribe/Admin/Notice/Plugin_Download.php:124
3441
  msgid "Black Friday Sale now through %s."
3442
  msgstr ""
3443
 
3444
+ #: src/admin-views/notices/upsell/icon.php:19
3445
+ msgid "The Events Calendar important notice icon"
3446
+ msgstr ""
3447
+
3448
  #: src/admin-views/tribe-options-display.php:23
3449
  msgid "Date Format Settings"
3450
  msgstr ""
common/src/Tribe/Admin/Notice/Plugin_Download.php CHANGED
@@ -119,7 +119,7 @@ class Tribe__Admin__Notice__Plugin_Download {
119
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
120
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
121
 
122
- $notice_html_content = '<p>' . esc_html__( 'To begin using %2$s, please install and activate %3$s.', 'tribe-common' ) . '</p>';
123
 
124
  $read_more_link = '<a href="http://evnt.is/1aev" target="_blank">' . esc_html__( 'Read more', 'tribe-common' ) . '.</a>';
125
  $pue_notice_text = esc_html__( 'There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s', 'tribe-common' );
119
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
120
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
121
 
122
+ $notice_html_content = '<p>' . esc_html__( 'To begin using %2$s, please install (or upgrade) and activate %3$s.', 'tribe-common' ) . '</p>';
123
 
124
  $read_more_link = '<a href="http://evnt.is/1aev" target="_blank">' . esc_html__( 'Read more', 'tribe-common' ) . '.</a>';
125
  $pue_notice_text = esc_html__( 'There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s', 'tribe-common' );
common/src/Tribe/Admin/Upsell_Notice/Main.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Upsell notice class.
5
+ *
6
+ * @since 4.14.17
7
+ *
8
+ * @package Tribe\Admin\Upsell_Notice
9
+ */
10
+
11
+ namespace Tribe\Admin\Upsell_Notice;
12
+
13
+ class Main {
14
+
15
+ /**
16
+ * Stores the instance of the template engine that we will use for rendering the page.
17
+ *
18
+ * @since 4.14.17
19
+ *
20
+ * @var Tribe__Template
21
+ */
22
+ protected $template;
23
+
24
+ /**
25
+ * Get template object.
26
+ *
27
+ * @since 4.14.17
28
+ *
29
+ * @return \Tribe__Template
30
+ */
31
+ private function get_template() {
32
+ if ( empty( self::$template ) ) {
33
+ $this->template = new \Tribe__Template();
34
+ $this->template->set_template_origin( \Tribe__Main::instance() );
35
+ $this->template->set_template_folder( 'src/admin-views/notices/upsell' );
36
+ $this->template->set_template_context_extract( true );
37
+ $this->template->set_template_folder_lookup( false );
38
+ }
39
+
40
+ return $this->template;
41
+ }
42
+
43
+ /**
44
+ * Checks if upsell should be rendered.
45
+ *
46
+ * @since 4.14.17
47
+ *
48
+ * @return boolean
49
+ */
50
+ private function should_render() {
51
+ if ( function_exists( 'tec_should_hide_upsell' ) ) {
52
+ return ! tec_should_hide_upsell();
53
+ }
54
+ if ( defined( 'TRIBE_HIDE_UPSELL' ) ) {
55
+ return ! tribe_is_truthy( TRIBE_HIDE_UPSELL );
56
+ }
57
+ return true;
58
+ }
59
+
60
+ /**
61
+ * Render upsell notice.
62
+ *
63
+ * @since 4.14.17
64
+ *
65
+ * @param array $args Array of arguments that will ultimately be sent to the template.
66
+ * @param bool $echo Whether or not to echo the HTML. Defaults to true.
67
+ *
68
+ * @return string HTML of upsell notice.
69
+ */
70
+ public function render( $args, $echo = true ) {
71
+ // Check if upsell should be rendered.
72
+ if ( ! $this->should_render() ) {
73
+ return;
74
+ }
75
+
76
+ // Default args for the container.
77
+ $args = wp_parse_args( $args, [
78
+ 'classes' => [],
79
+ 'text' => '',
80
+ 'link_target' => '_blank',
81
+ 'icon_url' => tribe_resource_url( 'images/icons/circle-bolt.svg', false, null, \Tribe__Main::instance() ),
82
+ 'link' => [],
83
+ ] );
84
+
85
+ // Default args for the link.
86
+ $args['link'] = wp_parse_args( $args['link'], [
87
+ 'classes' => [],
88
+ 'text' => '',
89
+ 'url' => '',
90
+ 'target' => '_blank',
91
+ 'rel' => 'noopener noreferrer',
92
+ ] );
93
+
94
+ $template = $this->get_template();
95
+ return $template->template( 'main', $args, $echo );
96
+ }
97
+ }
common/src/Tribe/Admin/Upsell_Notice/README.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Upsell Notices
2
+
3
+ To add an upsell notice, use the following code:
4
+
5
+ ```
6
+ tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [
7
+ 'text' => 'Text to explain what you are promoting.',
8
+ 'link' => [
9
+ 'text' => 'Text for the link.',
10
+ 'url' => 'https://url.com/to/more/info',
11
+ ],
12
+ ] );
13
+ ```
14
+
15
+ ## Customizing the notice container
16
+
17
+ There are a couple of classes you can add that will display the upsell notice with different styles.
18
+
19
+ - `.tec-admin__upsell--rounded-corners` - Adds a rounded-corner, light gray background around the entire notice.
20
+ - `.tec-admin__upsell--rounded-corners-text` - Adds a rounded-corner, light gray background around the notice text, only.
21
+
22
+ Example:
23
+ ```
24
+ tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [
25
+ 'classes' => [
26
+ 'tec-admin__upsell--rounded-corners'
27
+ ],
28
+ 'text' => 'Text to explain what you are promoting.',
29
+ 'link' => [
30
+ 'text' => 'Text for the link.',
31
+ 'url' => 'https://url.com/to/more/info',
32
+ ],
33
+ ] );
34
+ ```
35
+
36
+ ## Customizing the notice link
37
+
38
+ Likewise, you can also add these classes to the link array to change the appearance.
39
+
40
+ - `.tec-admin__upsell-link--dark` - Changes the color to a dark color, instead of the default blue.
41
+ - `.tec-admin__upsell-link--underlined` - Adds an underline to the link text.
42
+
43
+ You can also change the following attributes of the link:
44
+
45
+ - `target` - Default is '_blank'.
46
+ - `rel` - Default is 'nofollow noreferrer'.
47
+
48
+ Example:
49
+ ```
50
+ tribe( \Tribe\Admin\Upsell_Notice\Main::class )->render( [
51
+ 'classes' => [
52
+ 'tec-admin__upsell--rounded-corners-text'
53
+ ],
54
+ 'text' => 'Text to explain what you are promoting.',
55
+ 'link' => [
56
+ 'classes' => [
57
+ 'tec-admin__upsell-link--dark',
58
+ 'tec-admin__upsell-link--underlined',
59
+ ],
60
+ 'text' => 'Text for the link.',
61
+ 'url' => 'https://url.com/to/more/info',
62
+ 'target' => '_parent'
63
+ ],
64
+ ] );
65
+ ```
common/src/Tribe/Ajax/Dropdown.php CHANGED
@@ -275,7 +275,7 @@ class Tribe__Ajax__Dropdown {
275
  if ( has_filter( $filter ) ) {
276
  $data = apply_filters( $filter, [], $args->search, $args->page, $args->args, $args->source );
277
  } else {
278
- $data = call_user_func_array( [ $this, $args->source ], (array) $args );
279
  }
280
 
281
  // If we've got a empty dataset we return an error.
275
  if ( has_filter( $filter ) ) {
276
  $data = apply_filters( $filter, [], $args->search, $args->page, $args->args, $args->source );
277
  } else {
278
+ $data = call_user_func_array( [ $this, $args->source ], array_values( (array) $args ) );
279
  }
280
 
281
  // If we've got a empty dataset we return an error.
common/src/Tribe/Main.php CHANGED
@@ -20,7 +20,7 @@ class Tribe__Main {
20
  const OPTIONNAME = 'tribe_events_calendar_options';
21
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
22
 
23
- const VERSION = '4.14.16';
24
 
25
  const FEED_URL = 'https://theeventscalendar.com/feed/';
26
 
20
  const OPTIONNAME = 'tribe_events_calendar_options';
21
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
22
 
23
+ const VERSION = '4.14.17';
24
 
25
  const FEED_URL = 'https://theeventscalendar.com/feed/';
26
 
common/src/admin-views/notices/upsell/icon.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Upsell Icon Template
4
+ * The icon template for TEC Upsell notices.
5
+ *
6
+ * @since 4.14.17
7
+ *
8
+ * @version 4.14.17
9
+ *
10
+ * @var string $icon_url URL to icon.
11
+ *
12
+ */
13
+
14
+ ?>
15
+ <div class="tec-admin__upsell-icon">
16
+ <img
17
+ class="tec-admin__upsell-icon-image"
18
+ src="<?php echo esc_url( $icon_url ); ?>"
19
+ alt="<?php esc_attr_e( 'The Events Calendar important notice icon', 'tribe-common' ); ?>"
20
+ />
21
+ </div>
common/src/admin-views/notices/upsell/main.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Upsell Template
4
+ * The base template for TEC Upsell notices.
5
+ *
6
+ *
7
+ * @since 4.14.17
8
+ *
9
+ * @version 4.14.17
10
+ *
11
+ * @var string $text Text of upsell content (excluding link text).
12
+ * @var string $link_text Link text.
13
+ * @var string $link_url Link URL.
14
+ * @var string $icon_url URL to icon.
15
+ * @var array<string> $classes Additional classes to add to the upsell div.
16
+ * @var array<string> $link Array of link properties, including 'text', 'url', 'rel', 'target' and 'classes'.
17
+ *
18
+ */
19
+
20
+ $upsell_classes = [ 'tec-admin__upsell' ];
21
+ if ( ! empty( $classes ) ) {
22
+ $upsell_classes = array_merge( $upsell_classes, $classes );
23
+ }
24
+
25
+ $link_classes = [ 'tec-admin__upsell-link '];
26
+ if ( ! empty( $link ) && ! empty( $link['classes'] ) ) {
27
+ $link_classes = array_merge( $link_classes, $link['classes'] );
28
+ }
29
+
30
+ ?>
31
+ <div class="tribe-common">
32
+ <div <?php tribe_classes( $upsell_classes ); ?>>
33
+ <div class="tec-admin__upsell-content">
34
+ <?php $this->template( 'icon' ); ?>
35
+ <div class="tec-admin__upsell-text-wrap">
36
+ <span class="tec-admin__upsell-text">
37
+ <?php echo wp_kses_post( $text ); ?>
38
+ </span>
39
+ <a
40
+ <?php tribe_classes( $link_classes ); ?>
41
+ href="<?php echo esc_url( $link['url'] ); ?>"
42
+ rel="<?php echo esc_attr( $link['rel'] ); ?>"
43
+ target="<?php echo esc_attr( $link['target'] ); ?>"
44
+ >
45
+ <?php echo esc_html( $link['text'] ); ?>
46
+ </a>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
common/src/resources/css/tribe-common-admin.min.css CHANGED
@@ -1 +1 @@
1
- .invalid input,input:out-of-range{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}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{margin-left:1px;text-indent:0}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:alpha(opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:alpha(opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-events-widget-admin-form__input-section p{margin:0}.tribe-events-widget-admin-form__input-section h4{margin:.5em 0}.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:#7ad03a;height:1rem;width:1%}#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;height:300px;overflow-y:scroll}#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{min-height:100px;padding:1em}.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;height:100%;max-height:150px;max-width:150px;vertical-align:middle;width:auto}.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-marketing-notice__icon{display:none;flex-shrink:0;padding:0;position:static}.tribe-marketing-notice .tribe-marketing-notice__icon img{display:inline-block;max-height:100%;max-width:none;vertical-align:middle;width:100%}.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}#wpcontent .notice-tribe-banner{align-items:center;background:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}.notice-tribe-banner .tribe-marketing-notice__icon{width:47px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:0;padding:1em 0}.notice-tribe-banner h3{color:#fff;display:block;font-size:.875rem;line-height:1.25;margin:0 0 .25rem}.notice-tribe-banner a{border-bottom:1px solid #fff;line-height:1.25;margin:0;text-decoration:none}.notice-tribe-banner a:hover{text-decoration:none}.notice-tribe-banner a,.notice-tribe-banner p{color:#fff;display:inline-block;font-size:.875rem;line-height:1.25}.notice-tribe-banner p{display:inline-block;margin:0;padding:0}.notice-tribe-banner .tribe-marketing-notice{align-items:center;display:flex;justify-content:flex-start;margin:0 auto;min-height:65px;padding:0 .75rem;width:100%}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:100%}.notice-tribe-banner .notice-dismiss{position:static}.notice-tribe-banner .notice-dismiss:before{color:#eaf1ff}.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{border-top:1px solid #aaa;margin-top:-1px}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{border-bottom:1px solid #aaa;margin-bottom:-16px}.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:1px solid #ccc;border-radius:3px;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:transparent;background-image:none;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;bottom:0;display:block;height:auto;left:0;margin:0;padding:0;right:0;top:0;width:auto}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border:1px solid #ccc;border-radius:3px;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-bottom:0;padding-top:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:19px;margin-top:2px;padding-bottom:0;padding-top:0}.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{left:4px;top:3px;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-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]{background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;color:#e79496!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.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{border:solid #0ab152;border-width:0 3px 3px 0;content:"";display:block;height:15px;transform:rotate(45deg);width:8px}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome,body.tribe_events_page_tribe-help{background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.tribe-welcome .update-nag,body.tribe_events_page_tribe-help .update-nag{display:none}body.tribe-welcome #wpcontent,body.tribe_events_page_tribe-help #wpcontent{padding:0}body.tribe-welcome .tribe_settings,body.tribe_events_page_tribe-help .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1,body.tribe_events_page_tribe-help #wpfooter,body.tribe_events_page_tribe-help .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content,body.tribe_events_page_tribe-help #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error,body.tribe_events_page_tribe-help .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:0 0 30px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;height:100px;margin:0 auto}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}input[type=checkbox].tribe-common-switch__input{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label{background:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;cursor:pointer;display:block;height:18px;outline:0;padding:3px;position:relative;transition:all .2s ease;-webkit-user-select:none;user-select:none;width:27px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after,input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{content:"";display:block;height:10px;position:relative;width:10px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after{background:#878787;border-radius:2px;content:"";left:0;transition:all .2s ease}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label::selection{background:none}input[type=checkbox].tribe-common-switch__input:checked+.tribe-common-switch__label:after{background:#2e709d;left:50%}.tribe-events-admin-header__logo-word-mark{display:inline-block;height:auto;margin:0 0 26px;vertical-align:middle;width:312px}.tribe-events-admin-header{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:45px 0 0}.tribe-events-admin-header__right-image{height:280px;position:absolute;right:0;top:0;width:auto;z-index:-1}.tribe-events-admin-header__title{font-size:48px;line-height:48px;margin:0 0 18px}.tribe-events-admin-header__description{font-size:18px;line-height:28px;margin-bottom:44px;max-width:60%}.tribe-events-admin-tab-nav{display:flex;margin:0}.tribe-events-admin-tab-nav li{cursor:pointer;font-size:16px;font-weight:500;margin-bottom:0;margin-right:30px}.tribe-events-admin-tab-nav li:hover{color:#334aff}.tribe-events-admin-tab-nav .selected{border-bottom:3px solid #334aff;color:#334aff;padding-bottom:17px}.tribe-events-admin-tab-nav li:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}.tribe-events-admin__line{border-top:1px solid #e1e1e4}.tribe-events-admin-products-description{color:#0f1031;font-size:14px;line-height:2}.tribe-events-admin-products-card{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;padding:10px 15px}.tribe-events-admin-products-card__icon{height:40px;object-fit:contain;width:40px}.tribe-events-admin-products-card__group{margin:0 20px;max-width:55%}.tribe-events-admin-products-card__group-title{color:#0f1031;font-size:16px;font-weight:700;line-height:1;margin:0}.tribe-events-admin-products-card__group-description{font-size:12px;margin-top:5px}.tribe-events-admin-products-card__button{background-color:#fff;border:1px solid #e1e1e4;border-radius:20px;color:#0f1031;font-size:12px;font-weight:700;letter-spacing:1px;line-height:16px;margin-left:auto;padding:10px 15px;text-decoration:none;text-transform:uppercase}.tribe-events-admin-products-card__button:hover{background-color:#334aff;color:#fff}.tribe-events-admin-products-card__button:active,.tribe-events-admin-products-card__button:focus{box-shadow:none;outline:none}.tribe-events-admin-products-card__button--active,.tribe-events-admin-products-card__button--active:active,.tribe-events-admin-products-card__button--active:focus,.tribe-events-admin-products-card__button--active:hover{background:rgba(61,84,255,.16);color:#334aff;cursor:not-allowed;text-transform:uppercase}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{display:block;height:152px;margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{font-size:28px;line-height:34px;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin:0;padding:0;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__link{margin:0;padding:0}.tribe-events-admin-card--faq{display:inline-block;font-size:0;height:147px;margin:0 0 0 30px;padding:24px 16px 22px 20px;width:230px}.tribe-events-admin-card--faq:first-child{margin-left:0}.tribe-events-admin-card--faq img{float:left;height:22px;width:16px}.tribe-events-admin-card--faq .tribe-events-admin-faq__question{color:#334aff;font-size:16px;line-height:19px;margin:0 0 12px 26px;text-align:left}.tribe-events-admin-card--faq .tribe-events-admin-faq__answer{font-size:13px;line-height:16px;margin-left:26px;text-align:left}.tribe-events-admin-video{border-radius:16px;height:200px;margin-bottom:72px;-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);overflow:hidden;-webkit-transform:rotate(.000001deg)}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;margin-bottom:16px;text-align:left}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{color:#fff;text-align:left}.tribe-events-admin-graphic{position:absolute;right:0;top:106px;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{margin:0 auto;max-width:1024px;width:90%}.tribe-events-admin-2col-grid{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-3col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . .";grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-4col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . . .";grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-products{margin:10px 0 0}.tribe-events-admin-quick-nav{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-bottom:0;padding-top:8px}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica,sans-serif;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{top:230px;width:300px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}.tribe-events-admin-kb{margin:10px 0 0}.tribe-events-admin-kb-card{border:1px solid #e1e1e4;border-radius:20px}.tribe-events-admin-kb-card__image{height:auto;width:100%}.tribe-events-admin-kb-card__title{color:#0f1031;flex-grow:0;font-size:20px;font-weight:700;line-height:1.2;margin:0;padding:20px 28px 10px}.tribe-events-admin-kb-card__links{margin:0;padding:0 28px 25px}.tribe-events-admin-kb-card__links li{margin:0 0 10px}.tribe-events-admin-kb-card__links li a{color:#334aff;font-size:14px;line-height:1.2;text-decoration:none}.tribe-events-admin-kb-card__links li a:focus{box-shadow:none;outline:none}.tribe-events-admin-kb-card__links li a:hover{color:#1c39bb}.tribe-events-admin-section-header{align-items:center;color:#000;display:flex;font-weight:700;justify-content:space-between;margin:0}.tribe-events-admin-section-header h3{color:#0f1031;font-size:28px;font-weight:700;line-height:1}.tribe-events-admin-section-header a{border-bottom:2px solid #334aff;color:#334aff;font-size:14px;padding-bottom:2px;text-decoration:none}.tribe-events-admin-section-header a:focus{box-shadow:none;outline:none}.tribe-events-admin-section-header a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-faq{margin:10px 0 0}.tribe-events-admin-faq-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-faq-card a{color:#0f1031}.tribe-events-admin-faq-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq-card a:hover{color:#1c39bb}.tribe-events-admin-faq-card__icon img{height:22px;width:16px}.tribe-events-admin-faq-card__content{margin-left:10px}.tribe-events-admin-faq__question,.tribe-events-admin-faq__question a{color:#334aff;font-size:16px;text-decoration:none}.tribe-events-admin-faq__question a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq__question a:hover{color:#1c39bb}.tribe-events-admin-faq__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin-extensions-title{color:#0f1031;font-size:16px;line-height:1.5;margin:0 0 30px;max-width:70%}.tribe-events-admin-extensions{margin:10px 0 0}.tribe-events-admin-extensions-card{border:1px solid #e1e1e4;border-radius:20px;border-top:8px solid #334aff;padding:48px 35px 24px 25px}.tribe-events-admin-extensions-card__title{font-size:20px;margin:0}.tribe-events-admin-extensions-card__title a{color:#0f1031;font-family:Helvetica,sans-serif;font-size:20px;font-weight:700;line-height:1.2;text-decoration:none}.tribe-events-admin-extensions-card__title a:active,.tribe-events-admin-extensions-card__title a:focus,.tribe-events-admin-extensions-card__title a:hover{box-shadow:none;color:#334aff}.tribe-events-admin-extensions-card__description{color:#0f1031;font-family:Helvetica,sans-serif;font-size:14px;line-height:1.43;margin:20px 0}.tribe-events-admin-cta{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;margin:60px 0}.tribe-events-admin-cta__image{height:152px;object-fit:contain;width:auto}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:20px 0;width:100%}.tribe-events-admin-cta__content-title{color:#0f1031;font-size:28px;font-weight:700;line-height:normal;margin:0 0 10px;text-align:center}.tribe-events-admin-cta__content-subtitle{color:#0f1031;font-size:16px;line-height:1.5;margin-bottom:10px;text-align:center}.tribe-events-admin-cta__content-description a{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;font-weight:700;padding-bottom:2px;text-decoration:none}.tribe-events-admin-cta__content-description a:focus{box-shadow:none;outline:none}.tribe-events-admin-cta__content-description a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-footer-logo{display:inline-block;vertical-align:middle;width:228px}.tribe-events-admin-step{margin:10px 0 0}.tribe-events-admin-step-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-step-card a{border-bottom:2px solid #334aff;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin-step-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-step-card a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-step-card__icon img{height:43px;margin-right:5px;width:42px}.tribe-events-admin-step-card__content{margin-left:10px}.tribe-events-admin-step__title{color:#0f1031;font-size:20px;font-weight:700;line-height:1.2;margin-bottom:10px}.tribe-events-admin-step__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin__system-information{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr;margin:100px 0;position:relative}.tribe-events-admin__troubleshooting-title{color:#0f1031;font-size:28px;font-weight:700;line-height:1;margin:0}.tribe-events-admin__troubleshooting-description{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__system-information-select{display:flex;margin:30px 0 20px}.tribe-events-admin__system-information-select input[type=checkbox]{margin:0 10px 0 0}.tribe-events-admin__system-information-select label{color:#0f1031;font-size:16px;line-height:1.2}.tribe-events-admin__system-information-content small{color:#0f1031;font-size:12px;line-height:1.2}.tribe-events-admin__recent-template-changes .template-updates-wrapper,.tribe-events-admin__system-information-widget{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__recent-template-changes .template-updates-wrapper p{color:#fff;font-size:14px;line-height:1.14;margin:0}.tribe-events-admin__system-information-widget a{color:#334aff}.tribe-events-admin__system-information-widget a:hover{opacity:.8}.tribe-events-admin__recent-template-changes .template-updates-wrapper{padding:30px 0 30px 27px}.tribe-events-admin__recent-template-changes .template-updates-wrapper::-webkit-scrollbar,.tribe-events-admin__system-information-widget::-webkit-scrollbar{display:none}.tribe-events-admin__system-information-widget-copy{bottom:10px;position:absolute}.tribe-events-admin__system-information-widget-copy button{background-color:#334aff;border:none;border-radius:100px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;outline:none;padding:18px 25px;text-align:center}.tribe-events-admin__system-information-widget-copy button:hover{background-color:#1c39bb}.tribe-events-admin__system-information-widget-copy button .dashicons,.tribe-events-admin__system-information-widget-copy button .dashicons-before:before{display:none}.tribe-events-admin__system-information-widget-copy button .optin-success{color:#fff;font-size:16px;font-weight:700;text-align:center}.tribe-events-admin__recent-template-changes p{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__recent-log{margin-top:50px}.tribe-events-admin__troubleshooting-event-log-wrapper label{color:#0f1031;display:block;font-size:16px;line-height:1.63;margin-bottom:10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-controls{margin:20px 0 10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;min-height:60px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer::-webkit-scrollbar{display:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__troubleshooting-event-log-wrapper .tribe-events-admin__recent-log-filters-select-wrapper:after{display:none}.tribe-events-admin__recent-log-filters{display:flex;padding:20px 0 40px}.tribe-events-admin__recent-log-filters-field{margin-right:40px}.tribe-events-admin__recent-log-filters-select-wrapper:after{content:url(../images/help/polygon.svg);height:13px;pointer-events:none;position:absolute;right:22px;top:20px;width:14px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single{border:1px solid #e1e1e4!important;border-radius:16px;color:#0f1031;font-size:14px;line-height:1.14;padding:0 25px 0 15px!important}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls{margin-bottom:20px;padding:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:75px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-selection__clear{display:none}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single .select2-selection__arrow{right:5px}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container .select2-selection--single .select2-selection__rendered{width:100%}.tribe-events-admin__recent-log-filters-select-wrapper select.focus-visible,.tribe-events-admin__recent-log-filters-select-wrapper select:focus-visible{outline:none}.tribe-events-admin__recent-log-filters-select-wrapper select option{color:#0f1031;font-size:14px;line-height:1.14}.tribe-events-admin__ea-status{margin-top:50px}.tribe-events-admin__issues-found-card{background-color:#f3eee8;border-radius:8px;margin-bottom:20px}.tribe-events-admin__issues-found-card:last-of-type{margin-bottom:100px}.tribe-events-admin__issues-found-card-title{align-items:center;cursor:pointer;display:flex;padding:10px 20px 10px 17px;position:relative}.tribe-events-admin__issues-found-card-title img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe-events-admin__issues-found-card-title h3{margin:0}.tribe-events-admin__issues-found-card-title span{color:#0f1031;display:block}.tribe-events-admin__issues-found-card-title i{background-image:url(../images/help/arrow-down.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;height:15px;margin:12px 20px;position:absolute;right:0;top:0;transition:all .3s ease;width:15px}.tribe-events-admin__issues-found-card-title.active i{background-image:url(../images/help/arrow-up.svg);background-repeat:no-repeat;top:5px}.tribe-events-admin__issues-found-card-description{display:none;padding:0 20px 20px 55px}.tribe-events-admin__issues-found-card-description p{color:#0f1031;font-size:16px;margin:0}.tribe-events-admin__issues-found-card-description-actions{display:flex;padding:20px 0 10px}.tribe-events-admin__issues-found-card-description-actions a{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;margin-right:20px;padding-bottom:5px;text-decoration:none}.tribe-events-admin__issues-found-card-description-actions a:focus{box-shadow:none;outline:none}.tribe-events-admin__issues-found-card-description-actions a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__ea-status-table-wrapper{overflow-x:auto}.tribe-events-admin__ea-status-table{border:1px solid #e1e1e4;border-radius:16px;margin:30px 0 40px;overflow:hidden}.tribe-events-admin__ea-status-table a{border-bottom:2px solid #334aff;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin__ea-status-table a:focus{box-shadow:none;outline:none}.tribe-events-admin__ea-status-table a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__ea-status-table tr{align-items:center;display:flex}.tribe-events-admin__ea-status-table th{color:#0f1031;font-weight:700;line-height:1.17;margin-top:10px;padding:5px 25px}.tribe-events-admin__ea-status-table td{align-items:center;color:#0f1031;display:flex;font-size:16px;line-height:1.63;padding:10px 25px;width:25%}.tribe-events-admin__ea-status-table td:nth-child(2){width:45%}.tribe-events-admin__ea-status-table td:nth-child(3){display:flex;justify-content:flex-end;width:30%}.tribe-events-admin__ea-status-table-dark{background-color:#f9f7f4}.tribe-events-admin__ea-status-table td img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe_events_page_tec-troubleshooting{background-color:#fff}#tribe-community,#tribe-ticketing{display:none}.tribe-events-admin__troubleshooting-notice{background-color:#161b7d;color:#fff;font-size:16px;line-height:1;margin-left:-1.55vw;padding:24px 0}.tribe-events-admin__troubleshooting-notice_title{margin:0 auto;max-width:1024px;padding-left:25px;width:90%}.tribe-events-admin__troubleshooting-notice_title a{border-bottom:2px solid #fff;color:#fff;font-size:16px;line-height:1;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-notice_title a:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-notice_title a:hover{border-bottom:2px solid #f3eee8;color:#f3eee8}.tribe_events_page_tribe-help #tec-help-community,.tribe_events_page_tribe-help #tec-help-ticketing{display:none}.tribe_events_page_tribe-help .tribe-events-admin-title{padding-top:25px}.tribe_events_page_tribe-help .tribe-events-admin-title img{height:67px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;border-radius:16px;box-shadow:none;box-sizing:border-box;margin-left:22px}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{background:#fff;border-color:#3d54ff;color:#3d54ff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}.black-friday-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.black-friday-promo .black-friday-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.black-friday-promo .black-friday-promo__button:active,.black-friday-promo .black-friday-promo__button:focus,.black-friday-promo .black-friday-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.black-friday-promo__promo{background-position:50%;background-repeat:no-repeat;border-radius:10px;display:grid;grid-template-areas:"a b";grid-template-columns:auto 150px;height:150px;margin:10px 0;max-width:100%;width:450px}.black-friday-promo__content{grid-area:b;padding-top:8px;text-align:center}.black-friday-promo__text{color:#0f1031;font-family:monospace;font-size:16px;line-height:1;text-transform:uppercase}.black-friday-promo__branding-image{max-width:390px;width:100%}.end-of-year-sale-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.end-of-year-sale-promo .end-of-year-sale-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.end-of-year-sale-promo .end-of-year-sale-promo__button:active,.end-of-year-sale-promo .end-of-year-sale-promo__button:focus,.end-of-year-sale-promo .end-of-year-sale-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.end-of-year-sale-promo__promo{background-color:#fff;background-position:0 0;background-repeat:no-repeat;border-radius:10px;display:grid;flex-shrink:0;grid-template-areas:"a b";grid-template-columns:auto 160px;height:150px;margin:10px 0;max-width:100%;width:460px}.end-of-year-sale-promo__content{grid-area:b;padding-top:8px;text-align:center}.end-of-year-sale-promo__text{color:#0f1031;font-family:monospace;font-size:13px;line-height:1.2;margin-bottom:8px;text-transform:uppercase}.end-of-year-sale-promo__branding-image{max-width:390px;width:100%}@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%}.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:320px){.tribe-marketing-notice .tribe-marketing-notice__icon{display:block}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:145px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:130px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:642px}}@media screen and (min-width:400px){.notice-tribe-banner .tribe-marketing-notice__icon{width:67px}}@media screen and (min-width:800px){.notice-tribe-banner h3{display:inline-block;font-size:1rem;margin:0 .5rem 0 0}.notice-tribe-banner a{line-height:1.5}.notice-tribe-banner a,.notice-tribe-banner p{font-size:1rem}.notice-tribe-banner p{margin:0 .5rem 0 0}.notice-tribe-banner .tribe-marketing-notice__cta{display:inline-block;margin-left:.5rem}}@media screen and (min-width:1215px){.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:992px}.tribe-welcome .notice-tribe-banner .tribe-marketing-notice{max-width:1036px}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{margin-bottom:27px;max-width:340px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-card--1up{display:inline-block;margin-left:32px;width:calc(50% - 18px)}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--no-pad{height:154px;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{max-width:250px;top:0}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{max-width:1060px;width:100%}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{border-radius:100px;display:inline-block;height:54px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}@media screen and (max-width:768px){.tribe-events-admin-header__logo-word-mark{width:285px}.tribe-events-admin-header__right-image{height:160px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav li{margin-right:20px}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid #334aff;padding-bottom:10px}.tribe-events-admin-2col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-3col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta{align-items:flex-start;flex-direction:column;overflow:hidden}.tribe-events-admin-footer-logo{width:225px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}}@media screen and (max-width:480px){.tribe-events-admin-header__logo-word-mark{width:260px}.tribe-events-admin-header__right-image{height:120px}.tribe-events-admin-header__title{font-size:35px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav{border:1px solid #e1e1e4;border-radius:20px;flex-direction:column;padding:18px 22px}.tribe-events-admin-tab-nav li{margin-bottom:18px;margin-right:0}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid #334aff;padding-bottom:10px;width:fit-content}.tribe-events-admin__line{border:none}.tribe-events-admin-products-card,.tribe-events-admin-products-description{display:none}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{max-width:90%}.tribe-events-admin-2col-grid,.tribe-events-admin-3col-grid,.tribe-events-admin-4col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta__image{height:auto;width:90%}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:flex-start;padding:32px 23px 45px;width:auto}.tribe-events-admin-cta__content-title{font-size:22px;text-align:left}.tribe-events-admin-cta__content-subtitle{text-align:left}.tribe-events-admin-footer-logo{width:210px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}.tribe-events-admin__troubleshooting-notice{margin-left:-20px}.tribe-events-admin__troubleshooting-notice_title{max-width:90%}}@media screen and (min-width:1200px){.tribe-events-admin-products-card__group{max-width:47%}}@media screen and (min-width:500px) and (max-width:1080px){.tribe-events-admin-4col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}}@media screen and (min-width:768px){.tribe-events-admin-section-header{font-size:28px;line-height:1.143;margin:50px 0 21px}}@media screen and (max-width:1080px){.tribe-events-admin-cta__content-title{font-size:24px}}@media only screen and (max-width:1920px){.tribe-events-admin__system-information-widget-copy{right:20.5vw}}@media only screen and (max-width:1280px){.tribe-events-admin__system-information-widget-copy{right:22vw}}@media only screen and (max-width:768px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:30px}.tribe-events-admin__issues-found-card-title h3{max-width:90%}}@media only screen and (max-width:480px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper:after{right:25px}.tribe-events-admin__issues-found-card-title h3{max-width:80%}.tribe-events-admin__ea-status-table{overflow:scroll}.tribe-events-admin__ea-status-table td{min-width:150px}.tribe-events-admin__ea-status-table td:nth-child(2),.tribe-events-admin__ea-status-table td:nth-child(3){width:100%}}@media (min-width:1024px){.black-friday-promo{align-items:center;flex-direction:row}.black-friday-promo__branding{padding-right:10px;width:calc(100% - 450px)}.end-of-year-sale-promo{align-items:center;flex-direction:row}.end-of-year-sale-promo__branding{padding-right:10px;width:calc(100% - 460px)}}@media (max-width:525px){.end-of-year-sale-promo__promo{grid-template-areas:"a" "b";grid-template-columns:auto;margin:20px auto;padding-top:100px;width:300px}}
1
+ .invalid input,input:out-of-range{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}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{margin-left:1px;text-indent:0}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{margin:10px 0}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:alpha(opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:alpha(opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page{max-width:850px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p{font-size:15px}p.tribe-update-message{font-size:18px;font-weight:400}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}a.tribe-rating-link{text-decoration:none}.tribe-update-links{margin-top:30px}.tribe_update_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-events-widget-admin-form__input-section p{margin:0}.tribe-events-widget-admin-form__input-section h4{margin:.5em 0}.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:#7ad03a;height:1rem;width:1%}#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;height:300px;overflow-y:scroll}#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{min-height:100px;padding:1em}.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;height:100%;max-height:150px;max-width:150px;vertical-align:middle;width:auto}.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-marketing-notice__icon{display:none;flex-shrink:0;padding:0;position:static}.tribe-marketing-notice .tribe-marketing-notice__icon img{display:inline-block;max-height:100%;max-width:none;vertical-align:middle;width:100%}.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}#wpcontent .notice-tribe-banner{align-items:center;background:#161b7d;border:0;box-shadow:none;display:flex;justify-content:flex-start;margin:0 0 16px;padding-right:0}.notice-tribe-banner .tribe-marketing-notice__icon{width:47px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:0;padding:1em 0}.notice-tribe-banner h3{color:#fff;display:block;font-size:.875rem;line-height:1.25;margin:0 0 .25rem}.notice-tribe-banner a{border-bottom:1px solid #fff;line-height:1.25;margin:0;text-decoration:none}.notice-tribe-banner a:hover{text-decoration:none}.notice-tribe-banner a,.notice-tribe-banner p{color:#fff;display:inline-block;font-size:.875rem;line-height:1.25}.notice-tribe-banner p{display:inline-block;margin:0;padding:0}.notice-tribe-banner .tribe-marketing-notice{align-items:center;display:flex;justify-content:flex-start;margin:0 auto;min-height:65px;padding:0 .75rem;width:100%}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:100%}.notice-tribe-banner .notice-dismiss{position:static}.notice-tribe-banner .notice-dismiss:before{color:#eaf1ff}.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{border-top:1px solid #aaa;margin-top:-1px}.tribe-dropdown.select2-container--open .select2-dropdown--above,.tribe-ea-dropdown.select2-container--open .select2-dropdown--above{border-bottom:1px solid #aaa;margin-bottom:-16px}.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:1px solid #ccc;border-radius:3px;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:transparent;background-image:none;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;bottom:0;display:block;height:auto;left:0;margin:0;padding:0;right:0;top:0;width:auto}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered{background-image:none;border:1px solid #ccc;border-radius:3px;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-bottom:0;padding-top:0}.tribe-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice,.tribe-ea-dropdown .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{line-height:19px;margin-top:2px;padding-bottom:0;padding-top:0}.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{left:4px;top:3px;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-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]{background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;color:#e79496!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.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{border:solid #0ab152;border-width:0 3px 3px 0;content:"";display:block;height:15px;transform:rotate(45deg);width:8px}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}body.tribe-welcome,body.tribe_events_page_tribe-help{background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.tribe-welcome .update-nag,body.tribe_events_page_tribe-help .update-nag{display:none}body.tribe-welcome #wpcontent,body.tribe_events_page_tribe-help #wpcontent{padding:0}body.tribe-welcome .tribe_settings,body.tribe_events_page_tribe-help .tribe_settings{margin:0}body.tribe-welcome #wpfooter,body.tribe-welcome .tribe_settings>h1,body.tribe_events_page_tribe-help #wpfooter,body.tribe_events_page_tribe-help .tribe_settings>h1{display:none}body.tribe-welcome #wpbody-content,body.tribe_events_page_tribe-help #wpbody-content{padding-bottom:25px}body.tribe-welcome .tribe-dependency-error,body.tribe_events_page_tribe-help .tribe-dependency-error{display:none}.tribe-events-admin-content-wrapper{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;margin:0 auto;padding:0 0 30px;width:calc(100% - 40px)}.tribe-events-admin-card{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:0 auto 36px;padding:27px;text-align:center}.tribe-events-admin-card--2up .tribe-events-admin-card__title{max-width:260px}.tribe-events-admin-card--3up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--3up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card__button{background-color:#fff;border:none;color:#3d54ff;font-size:14px;font-weight:700;letter-spacing:1px;line-height:16px;position:absolute;right:20px;text-transform:uppercase;top:17px}.tribe-events-admin-card__button:hover{color:#161b7d}.tribe-events-admin-card__description{color:#000;font-size:14px;font-style:normal;font-weight:400;line-height:22px;margin-top:16px}.tribe-events-admin-card__image{display:block;height:100px;margin:0 auto}.tribe-events-admin-card__link{color:#3d54ff;display:inline-block;font-size:16px;font-style:normal;font-weight:700;line-height:18px;margin-top:24px;position:relative;text-decoration:none}.tribe-events-admin-card__link:hover{color:#161b7d}.tribe-events-admin-card__link:after{border-style:solid;border-width:0 0 1px;bottom:-4px;content:"";left:0;position:absolute;width:100%}.tribe-events-admin-card__title{color:#0f1031;font-size:20px;font-weight:700;line-height:23px;margin:auto}.tribe-events-admin-card-grid{max-width:1048px}input[type=checkbox].tribe-common-switch__input{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label{background:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;cursor:pointer;display:block;height:18px;outline:0;padding:3px;position:relative;transition:all .2s ease;-webkit-user-select:none;user-select:none;width:27px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after,input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{content:"";display:block;height:10px;position:relative;width:10px}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:after{background:#878787;border-radius:2px;content:"";left:0;transition:all .2s ease}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label:before{display:none}input[type=checkbox].tribe-common-switch__input+.tribe-common-switch__label::selection{background:none}input[type=checkbox].tribe-common-switch__input:checked+.tribe-common-switch__label:after{background:#2e709d;left:50%}.tribe-events-admin-header__logo-word-mark{display:inline-block;height:auto;margin:0 0 26px;vertical-align:middle;width:312px}.tribe-events-admin-header{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:45px 0 0}.tribe-events-admin-header__right-image{height:280px;position:absolute;right:0;top:0;width:auto;z-index:-1}.tribe-events-admin-header__title{font-size:48px;line-height:48px;margin:0 0 18px}.tribe-events-admin-header__description{font-size:18px;line-height:28px;margin-bottom:44px;max-width:60%}.tribe-events-admin-tab-nav{display:flex;margin:0}.tribe-events-admin-tab-nav li{cursor:pointer;font-size:16px;font-weight:500;margin-bottom:0;margin-right:30px}.tribe-events-admin-tab-nav li:hover{color:#334aff}.tribe-events-admin-tab-nav .selected{border-bottom:3px solid #334aff;color:#334aff;padding-bottom:17px}.tribe-events-admin-tab-nav li:after{background:#334aff;border-radius:100px;bottom:0;content:"";display:block;height:3px;left:0;position:absolute;right:0}.tribe-events-admin__line{border-top:1px solid #e1e1e4}.tribe-events-admin-products-description{color:#0f1031;font-size:14px;line-height:2}.tribe-events-admin-products-card{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;padding:10px 15px}.tribe-events-admin-products-card__icon{height:40px;object-fit:contain;width:40px}.tribe-events-admin-products-card__group{margin:0 20px;max-width:55%}.tribe-events-admin-products-card__group-title{color:#0f1031;font-size:16px;font-weight:700;line-height:1;margin:0}.tribe-events-admin-products-card__group-description{font-size:12px;margin-top:5px}.tribe-events-admin-products-card__button{background-color:#fff;border:1px solid #e1e1e4;border-radius:20px;color:#0f1031;font-size:12px;font-weight:700;letter-spacing:1px;line-height:16px;margin-left:auto;padding:10px 15px;text-decoration:none;text-transform:uppercase}.tribe-events-admin-products-card__button:hover{background-color:#334aff;color:#fff}.tribe-events-admin-products-card__button:active,.tribe-events-admin-products-card__button:focus{box-shadow:none;outline:none}.tribe-events-admin-products-card__button--active,.tribe-events-admin-products-card__button--active:active,.tribe-events-admin-products-card__button--active:focus,.tribe-events-admin-products-card__button--active:hover{background:rgba(61,84,255,.16);color:#334aff;cursor:not-allowed;text-transform:uppercase}.tribe-events-admin-card--1up{width:100%}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{display:block;height:152px;margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{font-size:28px;line-height:34px;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin:0;padding:0;text-align:left}.tribe-events-admin-card--no-pad .tribe-events-admin-card__link{margin:0;padding:0}.tribe-events-admin-card--faq{display:inline-block;font-size:0;height:147px;margin:0 0 0 30px;padding:24px 16px 22px 20px;width:230px}.tribe-events-admin-card--faq:first-child{margin-left:0}.tribe-events-admin-card--faq img{float:left;height:22px;width:16px}.tribe-events-admin-card--faq .tribe-events-admin-faq__question{color:#334aff;font-size:16px;line-height:19px;margin:0 0 12px 26px;text-align:left}.tribe-events-admin-card--faq .tribe-events-admin-faq__answer{font-size:13px;line-height:16px;margin-left:26px;text-align:left}.tribe-events-admin-video{border-radius:16px;height:200px;margin-bottom:72px;-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0);overflow:hidden;-webkit-transform:rotate(.000001deg)}.tribe-events-admin-video iframe{width:100%}.tribe-events-admin-card--promo-blue{background-color:#3d54ff;background-image:url(../images/welcome/promo.jpg)}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{color:#fff;font-size:16px;margin-bottom:16px;text-align:left}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__title{color:#fff;text-align:left}.tribe-events-admin-graphic{position:absolute;right:0;top:106px;z-index:-1}.tribe-events-admin-graphic--desktop-only{display:none}.tribe-events-admin-graphic--mobile-only{display:block}.tribe-events-admin-card__form{position:relative}input[type=email].tribe-events-admin-card__input{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;font-size:14px;height:54px}input[type=email].tribe-events-admin-card__input::placeholder{color:rgba(15,16,49,.72);letter-spacing:.5px;padding-left:10px}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{margin:0 auto;max-width:1024px;width:90%}.tribe-events-admin-2col-grid{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-3col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . .";grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-4col-grid{display:grid;grid-gap:30px;gap:30px;grid-template-areas:". . . .";grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr}.tribe-events-admin-products{margin:10px 0 0}.tribe-events-admin-quick-nav{background:#fff;border:1px solid #e1e1e4;border-radius:16px;box-sizing:border-box;display:block;margin:40px 0 78px;padding:18px 23px 2px}.tribe-events-admin-quick-nav__link{color:#3d54ff;font-size:16px;font-weight:700;line-height:18px;text-align:center;text-decoration:none}.tribe-events-admin-quick-nav__link:hover{color:#161b7d}.tribe-events-admin-quick-nav__link-item{display:block;padding-bottom:19px}.tribe-events-admin-quick-nav__links{display:inline}.tribe-events-admin-quick-nav__title{color:rgba(15,16,49,.72);display:inline-block;font-size:14px;font-weight:400;line-height:16px;padding-bottom:14px;text-transform:uppercase}.tribe-events-admin-title{padding-top:14px}.tribe-events-admin-title__description{color:#0f1031;font-size:16px;font-weight:400;line-height:24px;max-width:584px;padding-top:15px}.tribe-events-admin-title__heading{color:#0f1031;display:inline-block;font-size:24px;font-weight:700;line-height:28px;margin:5px 0 0}.tribe-events-admin-title__logo{margin-right:8px;vertical-align:top;width:34px}.tribe-events-admin-notice{background-color:#3d54ff;height:65px}.tribe-events-admin-notice .tribe-events-admin-content-wrapper{padding-bottom:0;padding-top:8px}.tribe-events-admin-notice p{color:#fff;display:inline-block;font-family:Helvetica,sans-serif;font-size:16px;line-height:18px;margin-top:0;padding-bottom:12px;padding-left:16px;vertical-align:middle;width:calc(100% - 60px)}.tribe-events-admin-notice__logo{display:inline-block}.tribe-events-admin-tickets .tribe-events-admin-section-header{font-size:28px;line-height:32px}.tribe-events-admin-tickets .tribe-events-admin-graphic--desktop-only{width:365px}.tribe-events-admin-tickets .tribe-events-admin-graphic--mobile-only{top:230px;width:300px}.tribe-events-admin-tickets .tribe-events-admin-title__heading{margin-top:0}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:4px;width:32px}.tribe-events-admin-kb{margin:10px 0 0}.tribe-events-admin-kb-card{border:1px solid #e1e1e4;border-radius:20px}.tribe-events-admin-kb-card__image{height:auto;width:100%}.tribe-events-admin-kb-card__title{color:#0f1031;flex-grow:0;font-size:20px;font-weight:700;line-height:1.2;margin:0;padding:20px 28px 10px}.tribe-events-admin-kb-card__links{margin:0;padding:0 28px 25px}.tribe-events-admin-kb-card__links li{margin:0 0 10px}.tribe-events-admin-kb-card__links li a{color:#334aff;font-size:14px;line-height:1.2;text-decoration:none}.tribe-events-admin-kb-card__links li a:focus{box-shadow:none;outline:none}.tribe-events-admin-kb-card__links li a:hover{color:#1c39bb}.tribe-events-admin-section-header{align-items:center;color:#000;display:flex;font-weight:700;justify-content:space-between;margin:0}.tribe-events-admin-section-header h3{color:#0f1031;font-size:28px;font-weight:700;line-height:1}.tribe-events-admin-section-header a{border-bottom:2px solid #334aff;color:#334aff;font-size:14px;padding-bottom:2px;text-decoration:none}.tribe-events-admin-section-header a:focus{box-shadow:none;outline:none}.tribe-events-admin-section-header a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-faq{margin:10px 0 0}.tribe-events-admin-faq-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-faq-card a{color:#0f1031}.tribe-events-admin-faq-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq-card a:hover{color:#1c39bb}.tribe-events-admin-faq-card__icon img{height:22px;width:16px}.tribe-events-admin-faq-card__content{margin-left:10px}.tribe-events-admin-faq__question,.tribe-events-admin-faq__question a{color:#334aff;font-size:16px;text-decoration:none}.tribe-events-admin-faq__question a:focus{box-shadow:none;outline:none}.tribe-events-admin-faq__question a:hover{color:#1c39bb}.tribe-events-admin-faq__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin-extensions-title{color:#0f1031;font-size:16px;line-height:1.5;margin:0 0 30px;max-width:70%}.tribe-events-admin-extensions{margin:10px 0 0}.tribe-events-admin-extensions-card{border:1px solid #e1e1e4;border-radius:20px;border-top:8px solid #334aff;padding:48px 35px 24px 25px}.tribe-events-admin-extensions-card__title{font-size:20px;margin:0}.tribe-events-admin-extensions-card__title a{color:#0f1031;font-family:Helvetica,sans-serif;font-size:20px;font-weight:700;line-height:1.2;text-decoration:none}.tribe-events-admin-extensions-card__title a:active,.tribe-events-admin-extensions-card__title a:focus,.tribe-events-admin-extensions-card__title a:hover{box-shadow:none;color:#334aff}.tribe-events-admin-extensions-card__description{color:#0f1031;font-family:Helvetica,sans-serif;font-size:14px;line-height:1.43;margin:20px 0}.tribe-events-admin-cta{align-items:center;border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;margin:60px 0}.tribe-events-admin-cta__image{height:152px;object-fit:contain;width:auto}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:20px 0;width:100%}.tribe-events-admin-cta__content-title{color:#0f1031;font-size:28px;font-weight:700;line-height:normal;margin:0 0 10px;text-align:center}.tribe-events-admin-cta__content-subtitle{color:#0f1031;font-size:16px;line-height:1.5;margin-bottom:10px;text-align:center}.tribe-events-admin-cta__content-description a{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;font-weight:700;padding-bottom:2px;text-decoration:none}.tribe-events-admin-cta__content-description a:focus{box-shadow:none;outline:none}.tribe-events-admin-cta__content-description a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-footer-logo{display:inline-block;vertical-align:middle;width:228px}.tribe-events-admin-step{margin:10px 0 0}.tribe-events-admin-step-card{border:1px solid #e1e1e4;border-radius:20px;display:flex;justify-content:space-between;padding:24px 15px 19px 19px}.tribe-events-admin-step-card a{border-bottom:2px solid #334aff;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin-step-card a:focus{box-shadow:none;outline:none}.tribe-events-admin-step-card a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin-step-card__icon img{height:43px;margin-right:5px;width:42px}.tribe-events-admin-step-card__content{margin-left:10px}.tribe-events-admin-step__title{color:#0f1031;font-size:20px;font-weight:700;line-height:1.2;margin-bottom:10px}.tribe-events-admin-step__answer{color:#0f1031;font-size:13px;margin-top:18px}.tribe-events-admin__system-information{display:grid;grid-gap:15px 30px;gap:15px 30px;grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr;margin:100px 0;position:relative}.tribe-events-admin__troubleshooting-title{color:#0f1031;font-size:28px;font-weight:700;line-height:1;margin:0}.tribe-events-admin__troubleshooting-description{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__system-information-select{display:flex;margin:30px 0 20px}.tribe-events-admin__system-information-select input[type=checkbox]{margin:0 10px 0 0}.tribe-events-admin__system-information-select label{color:#0f1031;font-size:16px;line-height:1.2}.tribe-events-admin__system-information-content small{color:#0f1031;font-size:12px;line-height:1.2}.tribe-events-admin__recent-template-changes .template-updates-wrapper,.tribe-events-admin__system-information-widget{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__recent-template-changes .template-updates-wrapper p{color:#fff;font-size:14px;line-height:1.14;margin:0}.tribe-events-admin__system-information-widget a{color:#334aff}.tribe-events-admin__system-information-widget a:hover{opacity:.8}.tribe-events-admin__recent-template-changes .template-updates-wrapper{padding:30px 0 30px 27px}.tribe-events-admin__recent-template-changes .template-updates-wrapper::-webkit-scrollbar,.tribe-events-admin__system-information-widget::-webkit-scrollbar{display:none}.tribe-events-admin__system-information-widget-copy{bottom:10px;position:absolute}.tribe-events-admin__system-information-widget-copy button{background-color:#334aff;border:none;border-radius:100px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;outline:none;padding:18px 25px;text-align:center}.tribe-events-admin__system-information-widget-copy button:hover{background-color:#1c39bb}.tribe-events-admin__system-information-widget-copy button .dashicons,.tribe-events-admin__system-information-widget-copy button .dashicons-before:before{display:none}.tribe-events-admin__system-information-widget-copy button .optin-success{color:#fff;font-size:16px;font-weight:700;text-align:center}.tribe-events-admin__recent-template-changes p{color:#0f1031;font-size:18px;line-height:1.2;line-height:1.44;margin:20px 0}.tribe-events-admin__recent-log{margin-top:50px}.tribe-events-admin__troubleshooting-event-log-wrapper label{color:#0f1031;display:block;font-size:16px;line-height:1.63;margin-bottom:10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-controls{margin:20px 0 10px}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer{background:#0f1031;border-radius:16px;color:#fff;font-size:14px;line-height:1.14;max-height:280px;min-height:60px;overflow:scroll;-ms-overflow-style:none;padding:12px 0 0 27px;scrollbar-width:none}.tribe-events-admin__troubleshooting-event-log-wrapper #tribe-log-viewer::-webkit-scrollbar{display:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-event-log-wrapper .download_log:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__troubleshooting-event-log-wrapper .tribe-events-admin__recent-log-filters-select-wrapper:after{display:none}.tribe-events-admin__recent-log-filters{display:flex;padding:20px 0 40px}.tribe-events-admin__recent-log-filters-field{margin-right:40px}.tribe-events-admin__recent-log-filters-select-wrapper:after{content:url(../images/help/polygon.svg);height:13px;pointer-events:none;position:absolute;right:22px;top:20px;width:14px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single{border:1px solid #e1e1e4!important;border-radius:16px;color:#0f1031;font-size:14px;line-height:1.14;padding:0 25px 0 15px!important}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls{margin-bottom:20px;padding:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:75px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-selection__clear{display:none}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default .select2-selection--single .select2-selection__arrow{right:5px}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.tribe-events-admin__recent-log-filters-select-wrapper .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:16px;border-bottom-right-radius:16px}.tribe-events-admin__recent-log-filters-select-wrapper .select2-container .select2-selection--single .select2-selection__rendered{width:100%}.tribe-events-admin__recent-log-filters-select-wrapper select.focus-visible,.tribe-events-admin__recent-log-filters-select-wrapper select:focus-visible{outline:none}.tribe-events-admin__recent-log-filters-select-wrapper select option{color:#0f1031;font-size:14px;line-height:1.14}.tribe-events-admin__ea-status{margin-top:50px}.tribe-events-admin__issues-found-card{background-color:#f3eee8;border-radius:8px;margin-bottom:20px}.tribe-events-admin__issues-found-card:last-of-type{margin-bottom:100px}.tribe-events-admin__issues-found-card-title{align-items:center;cursor:pointer;display:flex;padding:10px 20px 10px 17px;position:relative}.tribe-events-admin__issues-found-card-title img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe-events-admin__issues-found-card-title h3{margin:0}.tribe-events-admin__issues-found-card-title span{color:#0f1031;display:block}.tribe-events-admin__issues-found-card-title i{background-image:url(../images/help/arrow-down.svg);background-position:50%;background-repeat:no-repeat;background-size:contain;height:15px;margin:12px 20px;position:absolute;right:0;top:0;transition:all .3s ease;width:15px}.tribe-events-admin__issues-found-card-title.active i{background-image:url(../images/help/arrow-up.svg);background-repeat:no-repeat;top:5px}.tribe-events-admin__issues-found-card-description{display:none;padding:0 20px 20px 55px}.tribe-events-admin__issues-found-card-description p{color:#0f1031;font-size:16px;margin:0}.tribe-events-admin__issues-found-card-description-actions{display:flex;padding:20px 0 10px}.tribe-events-admin__issues-found-card-description-actions a{border-bottom:2px solid #334aff;color:#334aff;font-size:16px;margin-right:20px;padding-bottom:5px;text-decoration:none}.tribe-events-admin__issues-found-card-description-actions a:focus{box-shadow:none;outline:none}.tribe-events-admin__issues-found-card-description-actions a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__ea-status-table-wrapper{overflow-x:auto}.tribe-events-admin__ea-status-table{border:1px solid #e1e1e4;border-radius:16px;margin:30px 0 40px;overflow:hidden}.tribe-events-admin__ea-status-table a{border-bottom:2px solid #334aff;color:#334aff;padding-bottom:2px;text-decoration:none}.tribe-events-admin__ea-status-table a:focus{box-shadow:none;outline:none}.tribe-events-admin__ea-status-table a:hover{border-bottom:2px solid #1c39bb;color:#1c39bb}.tribe-events-admin__ea-status-table tr{align-items:center;display:flex}.tribe-events-admin__ea-status-table th{color:#0f1031;font-weight:700;line-height:1.17;margin-top:10px;padding:5px 25px}.tribe-events-admin__ea-status-table td{align-items:center;color:#0f1031;display:flex;font-size:16px;line-height:1.63;padding:10px 25px;width:25%}.tribe-events-admin__ea-status-table td:nth-child(2){width:45%}.tribe-events-admin__ea-status-table td:nth-child(3){display:flex;justify-content:flex-end;width:30%}.tribe-events-admin__ea-status-table-dark{background-color:#f9f7f4}.tribe-events-admin__ea-status-table td img{height:21px;margin-right:14px;object-fit:contain;width:21px}.tribe_events_page_tec-troubleshooting{background-color:#fff}#tribe-community,#tribe-ticketing{display:none}.tribe-events-admin__troubleshooting-notice{background-color:#161b7d;color:#fff;font-size:16px;line-height:1;margin-left:-1.55vw;padding:24px 0}.tribe-events-admin__troubleshooting-notice_title{margin:0 auto;max-width:1024px;padding-left:25px;width:90%}.tribe-events-admin__troubleshooting-notice_title a{border-bottom:2px solid #fff;color:#fff;font-size:16px;line-height:1;padding-bottom:2px;text-decoration:none}.tribe-events-admin__troubleshooting-notice_title a:focus{box-shadow:none;outline:none}.tribe-events-admin__troubleshooting-notice_title a:hover{border-bottom:2px solid #f3eee8;color:#f3eee8}.tribe_events_page_tribe-help #tec-help-community,.tribe_events_page_tribe-help #tec-help-ticketing{display:none}.tribe_events_page_tribe-help .tribe-events-admin-title{padding-top:25px}.tribe_events_page_tribe-help .tribe-events-admin-title img{height:67px}body.tribe-welcome #fs_connect{border:1px solid #e1e1e4;border-radius:16px;box-shadow:none;box-sizing:border-box;margin-left:22px}body.tribe-welcome #fs_connect .fs-actions{background-color:transparent}body.tribe-welcome #fs_connect .fs-permissions{border-top:1px solid #e1e1e4;margin:0 16px}body.tribe-welcome #fs_connect button{background-color:#3d54ff;border-color:#3d54ff}body.tribe-welcome #fs_connect .button-secondary{background:#fff;border-color:#3d54ff;color:#3d54ff}body.tribe-welcome #fs_connect a{color:#3d54ff}body.tribe-welcome #fs_connect a:focus{box-shadow:none;outline:none}body.tribe-welcome #fs_connect a:hover{color:#161b7d}.black-friday-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.black-friday-promo .black-friday-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.black-friday-promo .black-friday-promo__button:active,.black-friday-promo .black-friday-promo__button:focus,.black-friday-promo .black-friday-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.black-friday-promo__promo{background-position:50%;background-repeat:no-repeat;border-radius:10px;display:grid;grid-template-areas:"a b";grid-template-columns:auto 150px;height:150px;margin:10px 0;max-width:100%;width:450px}.black-friday-promo__content{grid-area:b;padding-top:8px;text-align:center}.black-friday-promo__text{color:#0f1031;font-family:monospace;font-size:16px;line-height:1;text-transform:uppercase}.black-friday-promo__branding-image{max-width:390px;width:100%}.end-of-year-sale-promo{align-items:flex-start;display:flex;flex-direction:column-reverse;justify-content:space-between}.end-of-year-sale-promo .end-of-year-sale-promo__button{background:#3d54ff;border-color:transparent;border-radius:20px;color:#fff;font-size:12px;height:34px;line-height:32px;min-height:unset;width:115px}.end-of-year-sale-promo .end-of-year-sale-promo__button:active,.end-of-year-sale-promo .end-of-year-sale-promo__button:focus,.end-of-year-sale-promo .end-of-year-sale-promo__button:hover{background:#1c39bb;border-color:transparent;color:#fff}.end-of-year-sale-promo__promo{background-color:#fff;background-position:0 0;background-repeat:no-repeat;border-radius:10px;display:grid;flex-shrink:0;grid-template-areas:"a b";grid-template-columns:auto 160px;height:150px;margin:10px 0;max-width:100%;width:460px}.end-of-year-sale-promo__content{grid-area:b;padding-top:8px;text-align:center}.end-of-year-sale-promo__text{color:#0f1031;font-family:monospace;font-size:13px;line-height:1.2;margin-bottom:8px;text-transform:uppercase}.end-of-year-sale-promo__branding-image{max-width:390px;width:100%}.tribe-common .tec-admin__upsell{display:inline-block;font-family:var(--tec-font-family-sans-serif);font-size:var(--tec-font-size-1);font-weight:var(--tec-font-weight-regular);line-height:var(--tec-line-height-1)}.tribe-common .tec-admin__upsell-content{align-items:center;display:flex;padding:var(--tec-spacer-1);padding-right:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-icon,.tribe-common .tec-admin__upsell-icon-image{height:24px;width:24px}.tribe-common .tec-admin__upsell-text-wrap{margin-left:var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link{color:var(--tec-color-accent-primary);font-weight:var(--tec-font-weight-bold);text-decoration:none}.tribe-common .tec-admin__upsell--rounded-corners .tec-admin__upsell-content{background:var(--tec-color-accent-primary-background);border-radius:24px}.tribe-common .tec-admin__upsell--rounded-corners-text .tec-admin__upsell-text-wrap{background:rgba(51,74,255,.1);border-radius:14px;padding:var(--tec-spacer-1) var(--tec-spacer-2)}.tribe-common .tec-admin__upsell-link--dark{color:var(--tec-color-text-primary)}.tribe-common .tec-admin__upsell-link--underlined{text-decoration:underline}@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%}.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:320px){.tribe-marketing-notice .tribe-marketing-notice__icon{display:block}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:145px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-marketing-notice__content{margin-left:130px}.notice-tribe-banner .tribe-marketing-notice__content{margin-left:22px;padding:0}.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe-welcome .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:642px}}@media screen and (min-width:400px){.notice-tribe-banner .tribe-marketing-notice__icon{width:67px}}@media screen and (min-width:800px){.notice-tribe-banner h3{display:inline-block;font-size:1rem;margin:0 .5rem 0 0}.notice-tribe-banner a{line-height:1.5}.notice-tribe-banner a,.notice-tribe-banner p{font-size:1rem}.notice-tribe-banner p{margin:0 .5rem 0 0}.notice-tribe-banner .tribe-marketing-notice__cta{display:inline-block;margin-left:.5rem}}@media screen and (min-width:1215px){.events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice,.tribe_events_page_tribe-app-shop .notice-tribe-banner .tribe-marketing-notice{max-width:992px}.tribe-welcome .notice-tribe-banner .tribe-marketing-notice{max-width:1036px}}@media screen and (min-width:710px){.tribe-events-admin-content-wrapper{width:670px}.tribe-events-admin-card--2up{display:inline-block;width:calc(50% - 20px)}.tribe-events-admin-card--2up.tribe-events-admin-card--first{margin-right:36px}.tribe-events-admin-card--2up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--2up .tribe-events-admin-card__image{height:100px;margin-bottom:12px}.tribe-events-admin-card--2up .tribe-events-admin-card__title{margin-bottom:27px;max-width:340px}.tribe-events-admin-card--3up{display:inline-block;margin-bottom:32px;width:calc(50% - 18px)}.tribe-events-admin-card--3up.tribe-events-admin-card--first{margin-right:32px}.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:0}.tribe-events-admin-card__title{font-size:20px;line-height:23px}.tribe-events-admin-card--1up{display:inline-block;margin-left:32px;width:calc(50% - 18px)}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:71px}.tribe-events-admin-card--1up .tribe-events-admin-card__image{margin-bottom:28px}.tribe-events-admin-card--no-pad{height:154px;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.tribe-events-admin-card--promo-blue{display:block;margin-left:0;min-height:170px;width:100%}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{float:left;max-width:300px}.tribe-events-admin-graphic{max-width:250px;top:0}.tribe-events-admin-graphic--desktop-only{display:block}.tribe-events-admin-graphic--mobile-only{display:none}.tribe-events-admin-card__form{float:right;width:300px}input[type=email].tribe-events-admin-card__input{width:300px}.tribe-events-admin-title{padding-top:50px}.tribe-events-admin-title__description{padding-top:15px}.tribe-events-admin-title__heading{font-size:48px;line-height:55px;margin:0}.tribe-events-admin-title__logo{margin-right:14px;padding-top:5px;width:40px}.tribe-events-admin-tickets .tribe-events-admin-card__title{font-size:18px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{font-size:18px;height:66px}.tribe-events-admin-tickets .tribe-events-admin-title__logo{margin-right:8px;padding-top:4px;width:60px}}@media screen and (min-width:1217px){.tribe-events-admin-content-wrapper{max-width:1060px;width:100%}.tribe-events-admin-card--2up{margin-right:36px;width:486px}.tribe-events-admin-card--3up{width:310px}.tribe-events-admin-card--3up.tribe-events-admin-card--first,.tribe-events-admin-card--3up.tribe-events-admin-card--middle{margin-right:36px}.tribe-events-admin-card--3up.tribe-events-admin-card--last{margin-right:0}.tribe-events-admin-card--1up{margin:0 0 36px;padding:33px 44px 30px;text-align:left;width:1012px}.tribe-events-admin-card--1up .tribe-events-admin-card__description{height:auto}.tribe-events-admin-card--1up .tribe-events-admin-card__image{float:left;margin:0 48px 10px 0}.tribe-events-admin-card--no-pad{padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__image{margin:0;padding:0}.tribe-events-admin-card--no-pad .tribe-events-admin-card__title{margin-left:50%;padding:42px 0 10px}.tribe-events-admin-card--no-pad .tribe-events-admin-card__description{margin-left:50%}.tribe-events-admin-card--promo-blue{min-height:150px}.tribe-events-admin-card--promo-blue .tribe-events-admin-card__description{max-width:450px}.tribe-events-admin-graphic{max-width:none}.tribe-events-admin-card__form,input[type=email].tribe-events-admin-card__input{width:365px}.tribe-events-admin-quick-nav{border-radius:100px;display:inline-block;height:54px;margin:24px 0 94px;max-width:1010px;padding:0 36px 0 0}.tribe-events-admin-quick-nav__link-item{display:inline-block;padding:18px 10px 0}.tribe-events-admin-quick-nav__title{padding:19px 6px 17px 32px}.tribe-events-admin-tickets .tribe-events-admin-card--2up .tribe-events-admin-card__title{height:auto}}@media screen and (max-width:768px){.tribe-events-admin-header__logo-word-mark{width:285px}.tribe-events-admin-header__right-image{height:160px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav li{margin-right:20px}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid #334aff;padding-bottom:10px}.tribe-events-admin-2col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-3col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta{align-items:flex-start;flex-direction:column;overflow:hidden}.tribe-events-admin-footer-logo{width:225px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}}@media screen and (max-width:480px){.tribe-events-admin-header__logo-word-mark{width:260px}.tribe-events-admin-header__right-image{height:120px}.tribe-events-admin-header__title{font-size:35px}.tribe-events-admin-header__description{max-width:100%}.tribe-events-admin-tab-nav{border:1px solid #e1e1e4;border-radius:20px;flex-direction:column;padding:18px 22px}.tribe-events-admin-tab-nav li{margin-bottom:18px;margin-right:0}.tribe-events-admin-tab-nav .selected{border-bottom:2px solid #334aff;padding-bottom:10px;width:fit-content}.tribe-events-admin__line{border:none}.tribe-events-admin-products-card,.tribe-events-admin-products-description{display:none}.tribe-events-admin-container,.tribe-events-admin-content-wrapper.tribe-events-admin-container{max-width:90%}.tribe-events-admin-2col-grid,.tribe-events-admin-3col-grid,.tribe-events-admin-4col-grid{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr))}.tribe-events-admin-extensions-title{max-width:100%}.tribe-events-admin-cta__image{height:auto;width:90%}.tribe-events-admin-cta__content,.tribe-events-admin__troubleshooting-cta{align-items:flex-start;padding:32px 23px 45px;width:auto}.tribe-events-admin-cta__content-title{font-size:22px;text-align:left}.tribe-events-admin-cta__content-subtitle{text-align:left}.tribe-events-admin-footer-logo{width:210px}.tribe-events-admin__system-information{grid-template-areas:".";grid-template-columns:repeat(1,minmax(0,1fr));margin:50px 0}.tribe-events-admin__troubleshooting-notice{margin-left:-20px}.tribe-events-admin__troubleshooting-notice_title{max-width:90%}}@media screen and (min-width:1200px){.tribe-events-admin-products-card__group{max-width:47%}}@media screen and (min-width:500px) and (max-width:1080px){.tribe-events-admin-4col-grid{grid-template-areas:". .";grid-template-columns:repeat(2,minmax(0,1fr))}}@media screen and (min-width:768px){.tribe-events-admin-section-header{font-size:28px;line-height:1.143;margin:50px 0 21px}}@media screen and (max-width:1080px){.tribe-events-admin-cta__content-title{font-size:24px}}@media only screen and (max-width:1920px){.tribe-events-admin__system-information-widget-copy{right:20.5vw}}@media only screen and (max-width:1280px){.tribe-events-admin__system-information-widget-copy{right:22vw}}@media only screen and (max-width:768px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:first-child,.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(2),.tribe-events-admin__recent-log-filters-select-wrapper #tribe-log-controls div:nth-child(3){padding-right:30px}.tribe-events-admin__issues-found-card-title h3{max-width:90%}}@media only screen and (max-width:480px){.tribe-events-admin__system-information-widget-copy{left:10px;right:auto}.tribe-events-admin__recent-log-filters{flex-direction:column}.tribe-events-admin__recent-log-filters-field{margin-bottom:30px;margin-right:0}.tribe-events-admin__recent-log-filters-select-wrapper:after{right:25px}.tribe-events-admin__issues-found-card-title h3{max-width:80%}.tribe-events-admin__ea-status-table{overflow:scroll}.tribe-events-admin__ea-status-table td{min-width:150px}.tribe-events-admin__ea-status-table td:nth-child(2),.tribe-events-admin__ea-status-table td:nth-child(3){width:100%}}@media (min-width:1024px){.black-friday-promo{align-items:center;flex-direction:row}.black-friday-promo__branding{padding-right:10px;width:calc(100% - 450px)}.end-of-year-sale-promo{align-items:center;flex-direction:row}.end-of-year-sale-promo__branding{padding-right:10px;width:calc(100% - 460px)}}@media (max-width:525px){.end-of-year-sale-promo__promo{grid-template-areas:"a" "b";grid-template-columns:auto;margin:20px auto;padding-top:100px;width:300px}}
common/src/resources/images/icons/circle-bolt.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M28 14c0 7.732-6.268 14-14 14S0 21.732 0 14C0 6.27 6.268 0 14 0s14 6.269 14 14Z" fill="#FFCF48"/><path d="m13.347 14.107-4.896-.14L19.557 3.754l-4.86 9.129 4.895.14-10.42 11.063 4.175-9.978Z" fill="#161B7D"/></svg>
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit8dc5a9fdbf62c620f4c568133db7c1b6::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit73105b855d01e1fed5f3c048fcd48a49::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 ComposerAutoloaderInitb188be7ffda6722adf0aa6f4673cd317::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit6aa20b0e950e334e4426d51311f82616::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -125,6 +125,7 @@ return array(
125
  'Tribe\\Admin\\Notice\\Service_Provider' => $baseDir . '/src/Tribe/Admin/Notice/Service_Provider.php',
126
  'Tribe\\Admin\\Notice\\WP_Version' => $baseDir . '/src/Tribe/Admin/Notice/WP_Version.php',
127
  'Tribe\\Admin\\Troubleshooting' => $baseDir . '/src/Tribe/Admin/Troubleshooting.php',
 
128
  'Tribe\\Customizer\\Control' => $baseDir . '/src/Tribe/Customizer/Control.php',
129
  'Tribe\\Customizer\\Controls\\Heading' => $baseDir . '/src/Tribe/Customizer/Controls/Heading.php',
130
  'Tribe\\Customizer\\Controls\\Number' => $baseDir . '/src/Tribe/Customizer/Controls/Number.php',
125
  'Tribe\\Admin\\Notice\\Service_Provider' => $baseDir . '/src/Tribe/Admin/Notice/Service_Provider.php',
126
  'Tribe\\Admin\\Notice\\WP_Version' => $baseDir . '/src/Tribe/Admin/Notice/WP_Version.php',
127
  'Tribe\\Admin\\Troubleshooting' => $baseDir . '/src/Tribe/Admin/Troubleshooting.php',
128
+ 'Tribe\\Admin\\Upsell_Notice\\Main' => $baseDir . '/src/Tribe/Admin/Upsell_Notice/Main.php',
129
  'Tribe\\Customizer\\Control' => $baseDir . '/src/Tribe/Customizer/Control.php',
130
  'Tribe\\Customizer\\Controls\\Heading' => $baseDir . '/src/Tribe/Customizer/Controls/Heading.php',
131
  'Tribe\\Customizer\\Controls\\Number' => $baseDir . '/src/Tribe/Customizer/Controls/Number.php',
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit8dc5a9fdbf62c620f4c568133db7c1b6
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit8dc5a9fdbf62c620f4c568133db7c1b6
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit8dc5a9fdbf62c620f4c568133db7c1b6', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit8dc5a9fdbf62c620f4c568133db7c1b6', '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\ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6::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 ComposerAutoloaderInit73105b855d01e1fed5f3c048fcd48a49
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit73105b855d01e1fed5f3c048fcd48a49', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit73105b855d01e1fed5f3c048fcd48a49', '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\ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49::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 ComposerAutoloaderInitb188be7ffda6722adf0aa6f4673cd317 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitb188be7ffda6722adf0aa6f4673cd317 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitb188be7ffda6722adf0aa6f4673cd317', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitb188be7ffda6722adf0aa6f4673cd317', '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 ComposerAutoloaderInit6aa20b0e950e334e4426d51311f82616 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit6aa20b0e950e334e4426d51311f82616', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit6aa20b0e950e334e4426d51311f82616', '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 ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -181,6 +181,7 @@ class ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6
181
  'Tribe\\Admin\\Notice\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/Service_Provider.php',
182
  'Tribe\\Admin\\Notice\\WP_Version' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/WP_Version.php',
183
  'Tribe\\Admin\\Troubleshooting' => __DIR__ . '/../..' . '/src/Tribe/Admin/Troubleshooting.php',
 
184
  'Tribe\\Customizer\\Control' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Control.php',
185
  'Tribe\\Customizer\\Controls\\Heading' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Controls/Heading.php',
186
  'Tribe\\Customizer\\Controls\\Number' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Controls/Number.php',
@@ -261,10 +262,10 @@ class ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6
261
  public static function getInitializer(ClassLoader $loader)
262
  {
263
  return \Closure::bind(function () use ($loader) {
264
- $loader->prefixLengthsPsr4 = ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6::$prefixLengthsPsr4;
265
- $loader->prefixDirsPsr4 = ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6::$prefixDirsPsr4;
266
- $loader->prefixesPsr0 = ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6::$prefixesPsr0;
267
- $loader->classMap = ComposerStaticInit8dc5a9fdbf62c620f4c568133db7c1b6::$classMap;
268
 
269
  }, null, ClassLoader::class);
270
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
181
  'Tribe\\Admin\\Notice\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/Service_Provider.php',
182
  'Tribe\\Admin\\Notice\\WP_Version' => __DIR__ . '/../..' . '/src/Tribe/Admin/Notice/WP_Version.php',
183
  'Tribe\\Admin\\Troubleshooting' => __DIR__ . '/../..' . '/src/Tribe/Admin/Troubleshooting.php',
184
+ 'Tribe\\Admin\\Upsell_Notice\\Main' => __DIR__ . '/../..' . '/src/Tribe/Admin/Upsell_Notice/Main.php',
185
  'Tribe\\Customizer\\Control' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Control.php',
186
  'Tribe\\Customizer\\Controls\\Heading' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Controls/Heading.php',
187
  'Tribe\\Customizer\\Controls\\Number' => __DIR__ . '/../..' . '/src/Tribe/Customizer/Controls/Number.php',
262
  public static function getInitializer(ClassLoader $loader)
263
  {
264
  return \Closure::bind(function () use ($loader) {
265
+ $loader->prefixLengthsPsr4 = ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49::$prefixLengthsPsr4;
266
+ $loader->prefixDirsPsr4 = ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49::$prefixDirsPsr4;
267
+ $loader->prefixesPsr0 = ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49::$prefixesPsr0;
268
+ $loader->classMap = ComposerStaticInit73105b855d01e1fed5f3c048fcd48a49::$classMap;
269
 
270
  }, null, ClassLoader::class);
271
  }
event-tickets.php CHANGED
@@ -3,14 +3,14 @@
3
  Plugin Name: Event Tickets
4
  Plugin URI: https://evnt.is/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
- Version: 5.3.1
7
  Author: The Events Calendar
8
  Author URI: https://evnt.is/1aor
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
  Text Domain: event-tickets
12
  Domain Path: /lang/
13
- */
14
  /*
15
  Copyright 2010-2012 by Modern Tribe Inc and the contributors
16
 
3
  Plugin Name: Event Tickets
4
  Plugin URI: https://evnt.is/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
+ Version: 5.3.2
7
  Author: The Events Calendar
8
  Author URI: https://evnt.is/1aor
9
  License: GPLv2 or later
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
11
  Text Domain: event-tickets
12
  Domain Path: /lang/
13
+ */
14
  /*
15
  Copyright 2010-2012 by Modern Tribe Inc and the contributors
16
 
lang/event-tickets-da_DK.mo CHANGED
Binary file
lang/event-tickets-de_DE.mo CHANGED
Binary file
lang/event-tickets-es_ES.mo CHANGED
Binary file
lang/event-tickets-fr_CA.mo CHANGED
Binary file
lang/event-tickets-fr_FR.mo CHANGED
Binary file
lang/event-tickets-it_IT.mo CHANGED
Binary file
lang/event-tickets-nl_NL.mo CHANGED
Binary file
lang/event-tickets-ro_RO.mo CHANGED
Binary file
lang/event-tickets.pot CHANGED
@@ -2,17 +2,17 @@
2
  # This file is distributed under the same license as the Event Tickets package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Event Tickets 5.3.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
7
- "POT-Creation-Date: 2022-03-15 18:47:00+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: 2022-03-15 18:47\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
- #. #-#-#-#-# event-tickets.pot (Event Tickets 5.3.1) #-#-#-#-#
16
  #. Plugin Name of the plugin/theme
17
  #: event-tickets.php:61 src/Tribe/Admin/Notices.php:92 src/Tribe/Main.php:692
18
  #: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:58
@@ -31,29 +31,29 @@ msgstr ""
31
  msgid "Please provide a valid purchaser email."
32
  msgstr ""
33
 
34
- #: src/Tickets/Commerce/Admin/Notices.php:70
35
- #: src/Tickets/Commerce/Admin/Notices.php:115
36
  msgid "Learn More"
37
  msgstr ""
38
 
39
- #: src/Tickets/Commerce/Admin/Notices.php:72
40
  msgid "Set up your checkout page"
41
  msgstr ""
42
 
43
  #. translators: %1$s: Link to knowledgebase article.
44
- #: src/Tickets/Commerce/Admin/Notices.php:75
45
  msgid ""
46
  "In order to start selling with Tickets Commerce, you'll need to set up your "
47
  "checkout page. Please configure the setting on Settings > Payments and "
48
  "confirm that the page you have selected has the proper shortcode. %1$s"
49
  msgstr ""
50
 
51
- #: src/Tickets/Commerce/Admin/Notices.php:117
52
  msgid "Set up your order success page"
53
  msgstr ""
54
 
55
  #. translators: %1$s: Link to knowledgebase article.
56
- #: src/Tickets/Commerce/Admin/Notices.php:120
57
  msgid ""
58
  "In order to start selling with Tickets Commerce, you'll need to set up your "
59
  "order success page. Please configure the setting on Settings > Payments and "
@@ -305,16 +305,16 @@ msgstr ""
305
  msgid "Tickets Commerce Checkout Page"
306
  msgstr ""
307
 
308
- #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:166
309
  #: src/views/v2/commerce/checkout.php:55
310
  msgid "Something went wrong!"
311
  msgstr ""
312
 
313
- #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:167
314
  msgid "Unexpected response recieved."
315
  msgstr ""
316
 
317
- #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:263
318
  msgid "Enabled for Checkout"
319
  msgstr ""
320
 
@@ -374,19 +374,19 @@ msgid ""
374
  "again once you are in live mode."
375
  msgstr ""
376
 
377
- #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:111
378
  msgid "E.g.: 123"
379
  msgstr ""
380
 
381
- #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:112
382
  msgid "E.g.: 03/26"
383
  msgstr ""
384
 
385
- #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:113
386
  msgid "E.g.: 4111 1111 1111 1111"
387
  msgstr ""
388
 
389
- #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:114
390
  msgid "E.g.: 01020"
391
  msgstr ""
392
 
@@ -412,56 +412,74 @@ msgstr ""
412
  msgid "Unexpected PayPal response when updating webhook"
413
  msgstr ""
414
 
415
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:55
416
  msgid "PayPal"
417
  msgstr ""
418
 
419
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:65
420
  msgid "PayPal is now connected."
421
  msgstr ""
422
 
423
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:70
424
  msgid "Failed to disconnect PayPal account."
425
  msgstr ""
426
 
427
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:75
428
  msgid "Disconnected PayPal account."
429
  msgstr ""
430
 
431
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:80
432
  msgid "Failed to refresh PayPal access token."
433
  msgstr ""
434
 
435
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:85
436
  msgid "PayPal access token was refreshed successfully."
437
  msgstr ""
438
 
439
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:90
440
  msgid "Failed to refresh PayPal user info."
441
  msgstr ""
442
 
443
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:95
444
  msgid "PayPal user info was refreshed successfully."
445
  msgstr ""
446
 
447
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:100
448
  msgid "Failed to refresh PayPal webhooks."
449
  msgstr ""
450
 
451
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:105
452
  msgid "PayPal webhooks refreshed successfully."
453
  msgstr ""
454
 
455
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:110
456
  msgid ""
457
  "A valid SSL certificate is required to set up your PayPal account and accept "
458
  "payments"
459
  msgstr ""
460
 
461
- #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:129
462
  msgid "Enable payments through PayPal, Venmo, and credit card."
463
  msgstr ""
464
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
465
  #: src/Tickets/Commerce/Gateways/PayPal/Location/Country.php:95
466
  msgid "United States"
467
  msgstr ""
@@ -4651,25 +4669,25 @@ msgstr ""
4651
  msgid "Change %1$s in PayPal from webhook: %2$s"
4652
  msgstr ""
4653
 
4654
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:50
4655
  msgid "Stripe"
4656
  msgstr ""
4657
 
4658
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:60
4659
  msgid "Stripe wasn't able to complete your connection request. Try again."
4660
  msgstr ""
4661
 
4662
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:65
4663
  msgid ""
4664
  "Stripe signup was successful but the authentication tokens could not be "
4665
  "retrieved. Try refreshing the tokens."
4666
  msgstr ""
4667
 
4668
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:70
4669
  msgid "Disconnecting from Stripe failed. Please try again."
4670
  msgstr ""
4671
 
4672
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:80
4673
  msgid ""
4674
  "Due to Regulatory Issues between Stripe and the country listed in your "
4675
  "Stripe account, the free version of Event Tickets cannot accept connections "
@@ -4679,21 +4697,34 @@ msgstr ""
4679
 
4680
  #. Translators: %1$s is the opening <a> tag for the Payments Tab page link.
4681
  #. %2$s is the closing <a> tag.
4682
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:87
4683
  msgid ""
4684
  "Your stripe account was disconnected from the Stripe dashboard. If you "
4685
  "believe this is an error, you can re-connect in the %1$sPayments Tab of the "
4686
  "Settings Page%2$s."
4687
  msgstr ""
4688
 
4689
- #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:109
4690
  msgid ""
4691
  "Enable credit card payments, Afterpay, AliPay, Giropay, Klarna and more."
4692
  msgstr ""
4693
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4694
  #. Translators: %s is the html-formatted response from Stripe servers
4695
  #. containing the error messages.
4696
- #: src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php:81
4697
  msgid ""
4698
  "Stripe reports that it is unable to process charges with the selected "
4699
  "Payment Methods. Usually this means that one of the methods selected is not "
@@ -4702,7 +4733,7 @@ msgid ""
4702
  "Stripe support, then try again: <div class=\"stripe-errors\">%s</div>"
4703
  msgstr ""
4704
 
4705
- #: src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php:278
4706
  msgid "Payment methods accepted cannot be empty"
4707
  msgstr ""
4708
 
@@ -4880,9 +4911,22 @@ msgstr ""
4880
  msgid "Account deauthorized is not the same as account connected."
4881
  msgstr ""
4882
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4883
  #. Translators: %s is the payment intent id.
4884
- #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php:30
4885
- #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:48
4886
  msgid "Payment Intent %s does not correspond to a known order."
4887
  msgstr ""
4888
 
@@ -4921,12 +4965,8 @@ msgstr ""
4921
  msgid "Event was received but events of type %1$s are not currently handled."
4922
  msgstr ""
4923
 
4924
- #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:40
4925
- msgid "Payment Intent Test Successful"
4926
- msgstr ""
4927
-
4928
  #. Translators: %s is the payment intent id
4929
- #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:58
4930
  msgid ""
4931
  "Payment Intent %s does not require an update or is a duplicate of a past "
4932
  "event."
@@ -5135,44 +5175,44 @@ msgctxt "Browser title"
5135
  msgid "%s - Tickets Commerce Orders"
5136
  msgstr ""
5137
 
5138
- #: src/Tickets/Commerce/Settings.php:181
5139
  msgid "Tickets Commerce Test Mode Active"
5140
  msgstr ""
5141
 
5142
- #: src/Tickets/Commerce/Settings.php:221
5143
  msgid "-- No page set --"
5144
  msgstr ""
5145
 
5146
- #: src/Tickets/Commerce/Settings.php:236
5147
  msgid "Tickets Commerce Settings"
5148
  msgstr ""
5149
 
5150
- #: src/Tickets/Commerce/Settings.php:240
5151
  msgid "Enable Test Mode"
5152
  msgstr ""
5153
 
5154
- #: src/Tickets/Commerce/Settings.php:241
5155
  msgid ""
5156
  "Enables Test mode for testing payments. Any payments made will be done on "
5157
  "\"sandbox\" accounts."
5158
  msgstr ""
5159
 
5160
- #: src/Tickets/Commerce/Settings.php:247
5161
  #: src/admin-views/tribe-commerce-settings.php:136
5162
  msgid "Currency Code"
5163
  msgstr ""
5164
 
5165
- #: src/Tickets/Commerce/Settings.php:248
5166
  msgid "The currency that will be used for Tickets Commerce transactions."
5167
  msgstr ""
5168
 
5169
- #: src/Tickets/Commerce/Settings.php:255
5170
  #: src/admin-views/tribe-commerce-settings.php:144
5171
  msgid "Stock Handling"
5172
  msgstr ""
5173
 
5174
  #. Translators: %s: The word "ticket" in lowercase.
5175
- #: src/Tickets/Commerce/Settings.php:259
5176
  msgctxt "tickets fields settings paypal stock handling"
5177
  msgid ""
5178
  "When a customer purchases a %s, the payment gateway might flag the order as "
@@ -5182,62 +5222,62 @@ msgstr ""
5182
 
5183
  #. Translators: %1$s: The word "ticket" in lowercase. %2$s: `<strong>` opening
5184
  #. tag. %3$s: `</strong>` closing tag.
5185
- #: src/Tickets/Commerce/Settings.php:268
5186
  msgid ""
5187
  "Decrease available %1$s stock as soon as a %2$sPending%3$s order is created."
5188
  msgstr ""
5189
 
5190
  #. Translators: %1$s: The word "ticket" in lowercase. %2$s: `<strong>` opening
5191
  #. tag. %3$s: `</strong>` closing tag.
5192
- #: src/Tickets/Commerce/Settings.php:275
5193
  msgid ""
5194
  "Only decrease available %1$s stock if an order is confirmed as %2$sCompleted"
5195
  "%3$s by the payment gateway."
5196
  msgstr ""
5197
 
5198
- #: src/Tickets/Commerce/Settings.php:285
5199
  msgid "Checkout page"
5200
  msgstr ""
5201
 
5202
  #. Translators: %s: The [shortcode] for the success page.
5203
- #: src/Tickets/Commerce/Settings.php:289
5204
  msgid ""
5205
  "This is the page where customers go to complete their purchase. Use the %s "
5206
  "shortcode to display the checkout experience in the page content."
5207
  msgstr ""
5208
 
5209
- #: src/Tickets/Commerce/Settings.php:300
5210
  #: src/admin-views/tribe-commerce-settings.php:162
5211
  msgid "Success page"
5212
  msgstr ""
5213
 
5214
  #. Translators: %s: The [shortcode] for the success page.
5215
- #: src/Tickets/Commerce/Settings.php:304
5216
  msgid ""
5217
  "After a successful order, users will be redirected to this page. Use the %s "
5218
  "shortcode to display the order confirmation to the user in the page content."
5219
  msgstr ""
5220
 
5221
- #: src/Tickets/Commerce/Settings.php:315
5222
  #: src/admin-views/tribe-commerce-settings.php:176
5223
  msgid "Confirmation email sender address"
5224
  msgstr ""
5225
 
5226
  #. Translators: %s: The word "tickets" in lowercase.
5227
- #: src/Tickets/Commerce/Settings.php:319
5228
  msgctxt "tickets fields settings confirmation email"
5229
  msgid ""
5230
  "Email address that %s customers will receive confirmation from. Leave empty "
5231
  "to use the default WordPress site email address."
5232
  msgstr ""
5233
 
5234
- #: src/Tickets/Commerce/Settings.php:330
5235
  #: src/admin-views/tribe-commerce-settings.php:185
5236
  msgid "Confirmation email sender name"
5237
  msgstr ""
5238
 
5239
  #. Translators: %s: The word "ticket" in lowercase.
5240
- #: src/Tickets/Commerce/Settings.php:334
5241
  #: src/admin-views/tribe-commerce-settings.php:186
5242
  msgctxt "tickets fields settings paypal email sender"
5243
  msgid ""
@@ -5245,13 +5285,13 @@ msgid ""
5245
  "purchase."
5246
  msgstr ""
5247
 
5248
- #: src/Tickets/Commerce/Settings.php:345
5249
  #: src/admin-views/tribe-commerce-settings.php:194
5250
  msgid "Confirmation email subject"
5251
  msgstr ""
5252
 
5253
  #. Translators: %s: The word "ticket" in lowercase.
5254
- #: src/Tickets/Commerce/Settings.php:349
5255
  #: src/admin-views/tribe-commerce-settings.php:195
5256
  msgctxt "tickets fields settings paypal email subject"
5257
  msgid ""
@@ -5260,17 +5300,17 @@ msgid ""
5260
  msgstr ""
5261
 
5262
  #. Translators: %s: The word "tickets" in lowercase.
5263
- #: src/Tickets/Commerce/Settings.php:357
5264
  #: src/admin-views/tribe-commerce-settings.php:197
5265
  msgctxt "tickets fields settings paypal email subject"
5266
  msgid "You have %s!"
5267
  msgstr ""
5268
 
5269
- #: src/Tickets/Commerce/Settings.php:372
5270
  msgid "Payment Gateways"
5271
  msgstr ""
5272
 
5273
- #: src/Tickets/Commerce/Settings.php:384
5274
  #: src/admin-views/settings/featured/link.php:33
5275
  msgid "Learn more about configuring payment options with Tickets Commerce"
5276
  msgstr ""
@@ -5496,6 +5536,10 @@ msgstr ""
5496
  msgid "U.S. Dollar (USD)"
5497
  msgstr ""
5498
 
 
 
 
 
5499
  #: src/Tribe/Abstract_Attendance_Totals.php:65
5500
  msgctxt "total sold tooltip"
5501
  msgid "Includes all ticketed attendees regardless of order status."
@@ -7048,9 +7092,51 @@ msgid "An attendee with the specified ID does not exist."
7048
  msgstr ""
7049
 
7050
  #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:71
 
7051
  msgid "The attendee post ID"
7052
  msgstr ""
7053
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7054
  #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:16
7055
  msgid "Returns a single ticket data"
7056
  msgstr ""
@@ -7462,8 +7548,8 @@ msgstr ""
7462
  msgid "Invalid ticket capacity data."
7463
  msgstr ""
7464
 
7465
- #: src/Tribe/Tickets_View.php:845 src/views/blocks/attendees/view-link.php:68
7466
- #: src/views/tickets/view-link.php:84
7467
  msgctxt "separator if there are both RSVPs and Tickets"
7468
  msgid " and "
7469
  msgstr ""
@@ -9123,39 +9209,39 @@ msgid_plural "%d people are attending %s"
9123
  msgstr[0] ""
9124
  msgstr[1] ""
9125
 
9126
- #: src/views/blocks/attendees/view-link.php:40
9127
  #: src/views/tickets/orders-pp-tickets.php:30
9128
  #: src/views/tickets/orders-rsvp.php:28
9129
  #: src/views/tickets/orders-tc-tickets.php:22 src/views/tickets/orders.php:95
9130
- #: src/views/tickets/view-link.php:56
9131
  msgctxt "fallback post type singular name"
9132
  msgid "Post"
9133
  msgstr ""
9134
 
9135
  #. Translators: 1: the number one, 2: singular RSVP label.
9136
- #: src/views/blocks/attendees/view-link.php:47
9137
- #: src/views/tickets/view-link.php:63
9138
  msgctxt "RSVP count singular"
9139
  msgid "%1$d %2$s"
9140
  msgstr ""
9141
 
9142
  #. Translators: 1: the plural number of RSVPs, 2: plural RSVP label.
9143
- #: src/views/blocks/attendees/view-link.php:50
9144
- #: src/views/tickets/view-link.php:66
9145
  msgctxt "RSVP count plural"
9146
  msgid "%1$d %2$s"
9147
  msgstr ""
9148
 
9149
  #. Translators: 1: the number one, 2: singular Ticket label.
9150
- #: src/views/blocks/attendees/view-link.php:55
9151
- #: src/views/tickets/view-link.php:71
9152
  msgctxt "Ticket count singular"
9153
  msgid "%1$d %2$s"
9154
  msgstr ""
9155
 
9156
  #. Translators: 1: the plural number of Tickets, 2: plural Ticket label.
9157
- #: src/views/blocks/attendees/view-link.php:58
9158
- #: src/views/tickets/view-link.php:74
9159
  msgctxt "Ticket count plural"
9160
  msgid "%1$d %2$s"
9161
  msgstr ""
@@ -9164,15 +9250,15 @@ msgstr ""
9164
  #. text, 2: post type label
9165
  #. Translators: 1: number of RSVPs and/or Tickets with accompanying ticket type
9166
  #. text, 2: post type label.
9167
- #: src/views/blocks/attendees/view-link.php:68
9168
- #: src/views/tickets/view-link.php:84
9169
  msgid "You have %1s for this %2s."
9170
  msgstr ""
9171
 
9172
  #. Translators: %s: The name(s) of the type(s) of ticket(s) the specified user
9173
  #. (optional) has for the specified event.
9174
- #: src/views/blocks/attendees/view-link.php:73
9175
- #: src/views/tickets/view-link.php:92
9176
  msgid "View your %s"
9177
  msgstr ""
9178
 
2
  # This file is distributed under the same license as the Event Tickets package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Event Tickets 5.3.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
7
+ "POT-Creation-Date: 2022-03-30 13:23:53+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2022-03-30 13:23\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
15
+ #. #-#-#-#-# event-tickets.pot (Event Tickets 5.3.2) #-#-#-#-#
16
  #. Plugin Name of the plugin/theme
17
  #: event-tickets.php:61 src/Tribe/Admin/Notices.php:92 src/Tribe/Main.php:692
18
  #: src/Tribe/Privacy.php:59 src/admin-views/admin-welcome-message.php:58
31
  msgid "Please provide a valid purchaser email."
32
  msgstr ""
33
 
34
+ #: src/Tickets/Commerce/Admin/Notices.php:84
35
+ #: src/Tickets/Commerce/Admin/Notices.php:129
36
  msgid "Learn More"
37
  msgstr ""
38
 
39
+ #: src/Tickets/Commerce/Admin/Notices.php:86
40
  msgid "Set up your checkout page"
41
  msgstr ""
42
 
43
  #. translators: %1$s: Link to knowledgebase article.
44
+ #: src/Tickets/Commerce/Admin/Notices.php:89
45
  msgid ""
46
  "In order to start selling with Tickets Commerce, you'll need to set up your "
47
  "checkout page. Please configure the setting on Settings > Payments and "
48
  "confirm that the page you have selected has the proper shortcode. %1$s"
49
  msgstr ""
50
 
51
+ #: src/Tickets/Commerce/Admin/Notices.php:131
52
  msgid "Set up your order success page"
53
  msgstr ""
54
 
55
  #. translators: %1$s: Link to knowledgebase article.
56
+ #: src/Tickets/Commerce/Admin/Notices.php:134
57
  msgid ""
58
  "In order to start selling with Tickets Commerce, you'll need to set up your "
59
  "order success page. Please configure the setting on Settings > Payments and "
305
  msgid "Tickets Commerce Checkout Page"
306
  msgstr ""
307
 
308
+ #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:175
309
  #: src/views/v2/commerce/checkout.php:55
310
  msgid "Something went wrong!"
311
  msgstr ""
312
 
313
+ #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:176
314
  msgid "Unexpected response recieved."
315
  msgstr ""
316
 
317
+ #: src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php:272
318
  msgid "Enabled for Checkout"
319
  msgstr ""
320
 
374
  "again once you are in live mode."
375
  msgstr ""
376
 
377
+ #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:110
378
  msgid "E.g.: 123"
379
  msgstr ""
380
 
381
+ #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:111
382
  msgid "E.g.: 03/26"
383
  msgstr ""
384
 
385
+ #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:112
386
  msgid "E.g.: 4111 1111 1111 1111"
387
  msgstr ""
388
 
389
+ #: src/Tickets/Commerce/Gateways/PayPal/Assets.php:113
390
  msgid "E.g.: 01020"
391
  msgstr ""
392
 
412
  msgid "Unexpected PayPal response when updating webhook"
413
  msgstr ""
414
 
415
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:66
416
  msgid "PayPal"
417
  msgstr ""
418
 
419
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:76
420
  msgid "PayPal is now connected."
421
  msgstr ""
422
 
423
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:81
424
  msgid "Failed to disconnect PayPal account."
425
  msgstr ""
426
 
427
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:86
428
  msgid "Disconnected PayPal account."
429
  msgstr ""
430
 
431
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:91
432
  msgid "Failed to refresh PayPal access token."
433
  msgstr ""
434
 
435
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:96
436
  msgid "PayPal access token was refreshed successfully."
437
  msgstr ""
438
 
439
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:101
440
  msgid "Failed to refresh PayPal user info."
441
  msgstr ""
442
 
443
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:106
444
  msgid "PayPal user info was refreshed successfully."
445
  msgstr ""
446
 
447
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:111
448
  msgid "Failed to refresh PayPal webhooks."
449
  msgstr ""
450
 
451
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:116
452
  msgid "PayPal webhooks refreshed successfully."
453
  msgstr ""
454
 
455
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:121
456
  msgid ""
457
  "A valid SSL certificate is required to set up your PayPal account and accept "
458
  "payments"
459
  msgstr ""
460
 
461
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:140
462
  msgid "Enable payments through PayPal, Venmo, and credit card."
463
  msgstr ""
464
 
465
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:211
466
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:189
467
+ msgid "here"
468
+ msgstr ""
469
+
470
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:213
471
+ msgid "PayPal doesn't support your selected currency"
472
+ msgstr ""
473
+
474
+ #. Translators: %1$s: Currency Name. %2$s: Link to gateway provider's currency
475
+ #. documentation.
476
+ #: src/Tickets/Commerce/Gateways/PayPal/Gateway.php:216
477
+ msgid ""
478
+ "Unfortunately PayPal doesn't support payments in %1$s. Please try using a "
479
+ "different gateway or adjusting your Tickets Commerce currency setting. You "
480
+ "can see a list of supported currencies %2$s."
481
+ msgstr ""
482
+
483
  #: src/Tickets/Commerce/Gateways/PayPal/Location/Country.php:95
484
  msgid "United States"
485
  msgstr ""
4669
  msgid "Change %1$s in PayPal from webhook: %2$s"
4670
  msgstr ""
4671
 
4672
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:69
4673
  msgid "Stripe"
4674
  msgstr ""
4675
 
4676
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:79
4677
  msgid "Stripe wasn't able to complete your connection request. Try again."
4678
  msgstr ""
4679
 
4680
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:84
4681
  msgid ""
4682
  "Stripe signup was successful but the authentication tokens could not be "
4683
  "retrieved. Try refreshing the tokens."
4684
  msgstr ""
4685
 
4686
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:89
4687
  msgid "Disconnecting from Stripe failed. Please try again."
4688
  msgstr ""
4689
 
4690
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:99
4691
  msgid ""
4692
  "Due to Regulatory Issues between Stripe and the country listed in your "
4693
  "Stripe account, the free version of Event Tickets cannot accept connections "
4697
 
4698
  #. Translators: %1$s is the opening <a> tag for the Payments Tab page link.
4699
  #. %2$s is the closing <a> tag.
4700
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:106
4701
  msgid ""
4702
  "Your stripe account was disconnected from the Stripe dashboard. If you "
4703
  "believe this is an error, you can re-connect in the %1$sPayments Tab of the "
4704
  "Settings Page%2$s."
4705
  msgstr ""
4706
 
4707
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:128
4708
  msgid ""
4709
  "Enable credit card payments, Afterpay, AliPay, Giropay, Klarna and more."
4710
  msgstr ""
4711
 
4712
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:191
4713
+ msgid "Stripe doesn't support your selected currency"
4714
+ msgstr ""
4715
+
4716
+ #. Translators: %1$s: Currency Name. %2$s: Link to gateway provider's currency
4717
+ #. documentation.
4718
+ #: src/Tickets/Commerce/Gateways/Stripe/Gateway.php:194
4719
+ msgid ""
4720
+ "Unfortunately, Stripe doesn't support payments in %1$s. Please try using a "
4721
+ "different gateway or adjusting your Tickets Commerce currency setting. You "
4722
+ "can see a list of supported currencies %2$s."
4723
+ msgstr ""
4724
+
4725
  #. Translators: %s is the html-formatted response from Stripe servers
4726
  #. containing the error messages.
4727
+ #: src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php:93
4728
  msgid ""
4729
  "Stripe reports that it is unable to process charges with the selected "
4730
  "Payment Methods. Usually this means that one of the methods selected is not "
4733
  "Stripe support, then try again: <div class=\"stripe-errors\">%s</div>"
4734
  msgstr ""
4735
 
4736
+ #: src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php:293
4737
  msgid "Payment methods accepted cannot be empty"
4738
  msgstr ""
4739
 
4911
  msgid "Account deauthorized is not the same as account connected."
4912
  msgstr ""
4913
 
4914
+ #. Translators: %1$s is the event id and %2$s is the event type name.
4915
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php:35
4916
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:42
4917
+ msgid ""
4918
+ "Event %1$s was received and will not be handled because the Payment Intent "
4919
+ "%2$s does not refer to an Event Tickets transaction."
4920
+ msgstr ""
4921
+
4922
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php:46
4923
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:53
4924
+ msgid "Payment Intent Test Successful"
4925
+ msgstr ""
4926
+
4927
  #. Translators: %s is the payment intent id.
4928
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php:54
4929
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:61
4930
  msgid "Payment Intent %s does not correspond to a known order."
4931
  msgstr ""
4932
 
4965
  msgid "Event was received but events of type %1$s are not currently handled."
4966
  msgstr ""
4967
 
 
 
 
 
4968
  #. Translators: %s is the payment intent id
4969
+ #: src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php:71
4970
  msgid ""
4971
  "Payment Intent %s does not require an update or is a duplicate of a past "
4972
  "event."
5175
  msgid "%s - Tickets Commerce Orders"
5176
  msgstr ""
5177
 
5178
+ #: src/Tickets/Commerce/Settings.php:182
5179
  msgid "Tickets Commerce Test Mode Active"
5180
  msgstr ""
5181
 
5182
+ #: src/Tickets/Commerce/Settings.php:222
5183
  msgid "-- No page set --"
5184
  msgstr ""
5185
 
5186
+ #: src/Tickets/Commerce/Settings.php:234
5187
  msgid "Tickets Commerce Settings"
5188
  msgstr ""
5189
 
5190
+ #: src/Tickets/Commerce/Settings.php:238
5191
  msgid "Enable Test Mode"
5192
  msgstr ""
5193
 
5194
+ #: src/Tickets/Commerce/Settings.php:239
5195
  msgid ""
5196
  "Enables Test mode for testing payments. Any payments made will be done on "
5197
  "\"sandbox\" accounts."
5198
  msgstr ""
5199
 
5200
+ #: src/Tickets/Commerce/Settings.php:245
5201
  #: src/admin-views/tribe-commerce-settings.php:136
5202
  msgid "Currency Code"
5203
  msgstr ""
5204
 
5205
+ #: src/Tickets/Commerce/Settings.php:246
5206
  msgid "The currency that will be used for Tickets Commerce transactions."
5207
  msgstr ""
5208
 
5209
+ #: src/Tickets/Commerce/Settings.php:253
5210
  #: src/admin-views/tribe-commerce-settings.php:144
5211
  msgid "Stock Handling"
5212
  msgstr ""
5213
 
5214
  #. Translators: %s: The word "ticket" in lowercase.
5215
+ #: src/Tickets/Commerce/Settings.php:257
5216
  msgctxt "tickets fields settings paypal stock handling"
5217
  msgid ""
5218
  "When a customer purchases a %s, the payment gateway might flag the order as "
5222
 
5223
  #. Translators: %1$s: The word "ticket" in lowercase. %2$s: `<strong>` opening
5224
  #. tag. %3$s: `</strong>` closing tag.
5225
+ #: src/Tickets/Commerce/Settings.php:266
5226
  msgid ""
5227
  "Decrease available %1$s stock as soon as a %2$sPending%3$s order is created."
5228
  msgstr ""
5229
 
5230
  #. Translators: %1$s: The word "ticket" in lowercase. %2$s: `<strong>` opening
5231
  #. tag. %3$s: `</strong>` closing tag.
5232
+ #: src/Tickets/Commerce/Settings.php:273
5233
  msgid ""
5234
  "Only decrease available %1$s stock if an order is confirmed as %2$sCompleted"
5235
  "%3$s by the payment gateway."
5236
  msgstr ""
5237
 
5238
+ #: src/Tickets/Commerce/Settings.php:283
5239
  msgid "Checkout page"
5240
  msgstr ""
5241
 
5242
  #. Translators: %s: The [shortcode] for the success page.
5243
+ #: src/Tickets/Commerce/Settings.php:287
5244
  msgid ""
5245
  "This is the page where customers go to complete their purchase. Use the %s "
5246
  "shortcode to display the checkout experience in the page content."
5247
  msgstr ""
5248
 
5249
+ #: src/Tickets/Commerce/Settings.php:298
5250
  #: src/admin-views/tribe-commerce-settings.php:162
5251
  msgid "Success page"
5252
  msgstr ""
5253
 
5254
  #. Translators: %s: The [shortcode] for the success page.
5255
+ #: src/Tickets/Commerce/Settings.php:302
5256
  msgid ""
5257
  "After a successful order, users will be redirected to this page. Use the %s "
5258
  "shortcode to display the order confirmation to the user in the page content."
5259
  msgstr ""
5260
 
5261
+ #: src/Tickets/Commerce/Settings.php:313
5262
  #: src/admin-views/tribe-commerce-settings.php:176
5263
  msgid "Confirmation email sender address"
5264
  msgstr ""
5265
 
5266
  #. Translators: %s: The word "tickets" in lowercase.
5267
+ #: src/Tickets/Commerce/Settings.php:317
5268
  msgctxt "tickets fields settings confirmation email"
5269
  msgid ""
5270
  "Email address that %s customers will receive confirmation from. Leave empty "
5271
  "to use the default WordPress site email address."
5272
  msgstr ""
5273
 
5274
+ #: src/Tickets/Commerce/Settings.php:328
5275
  #: src/admin-views/tribe-commerce-settings.php:185
5276
  msgid "Confirmation email sender name"
5277
  msgstr ""
5278
 
5279
  #. Translators: %s: The word "ticket" in lowercase.
5280
+ #: src/Tickets/Commerce/Settings.php:332
5281
  #: src/admin-views/tribe-commerce-settings.php:186
5282
  msgctxt "tickets fields settings paypal email sender"
5283
  msgid ""
5285
  "purchase."
5286
  msgstr ""
5287
 
5288
+ #: src/Tickets/Commerce/Settings.php:343
5289
  #: src/admin-views/tribe-commerce-settings.php:194
5290
  msgid "Confirmation email subject"
5291
  msgstr ""
5292
 
5293
  #. Translators: %s: The word "ticket" in lowercase.
5294
+ #: src/Tickets/Commerce/Settings.php:347
5295
  #: src/admin-views/tribe-commerce-settings.php:195
5296
  msgctxt "tickets fields settings paypal email subject"
5297
  msgid ""
5300
  msgstr ""
5301
 
5302
  #. Translators: %s: The word "tickets" in lowercase.
5303
+ #: src/Tickets/Commerce/Settings.php:355
5304
  #: src/admin-views/tribe-commerce-settings.php:197
5305
  msgctxt "tickets fields settings paypal email subject"
5306
  msgid "You have %s!"
5307
  msgstr ""
5308
 
5309
+ #: src/Tickets/Commerce/Settings.php:370
5310
  msgid "Payment Gateways"
5311
  msgstr ""
5312
 
5313
+ #: src/Tickets/Commerce/Settings.php:382
5314
  #: src/admin-views/settings/featured/link.php:33
5315
  msgid "Learn more about configuring payment options with Tickets Commerce"
5316
  msgstr ""
5536
  msgid "U.S. Dollar (USD)"
5537
  msgstr ""
5538
 
5539
+ #: src/Tickets/Commerce/Utils/Currency.php:545
5540
+ msgid "South African Rand (ZAR)"
5541
+ msgstr ""
5542
+
5543
  #: src/Tribe/Abstract_Attendance_Totals.php:65
5544
  msgctxt "total sold tooltip"
5545
  msgid "Includes all ticketed attendees regardless of order status."
7092
  msgstr ""
7093
 
7094
  #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:71
7095
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:217
7096
  msgid "The attendee post ID"
7097
  msgstr ""
7098
 
7099
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:117
7100
+ msgid "Something went wrong! Attendee creation failed."
7101
+ msgstr ""
7102
+
7103
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:141
7104
+ msgid "The Ticket ID, where the attendee is registered."
7105
+ msgstr ""
7106
+
7107
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:146
7108
+ msgid "Full name of the attendee."
7109
+ msgstr ""
7110
+
7111
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:152
7112
+ msgid "Email of the attendeee."
7113
+ msgstr ""
7114
+
7115
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:157
7116
+ msgid "Order Status for the attendee."
7117
+ msgstr ""
7118
+
7119
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:194
7120
+ msgid "Something went wrong! Attendee update failed."
7121
+ msgstr ""
7122
+
7123
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:245
7124
+ msgid "Ticket Provider not found."
7125
+ msgstr ""
7126
+
7127
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:290
7128
+ msgid "Attendee ID is not valid."
7129
+ msgstr ""
7130
+
7131
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:296
7132
+ msgid "Attendee provider not found."
7133
+ msgstr ""
7134
+
7135
+ #. Translators: %s - List of valid statuses.
7136
+ #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:345
7137
+ msgid "Supported statuses for this attendee are: %s"
7138
+ msgstr ""
7139
+
7140
  #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:16
7141
  msgid "Returns a single ticket data"
7142
  msgstr ""
7548
  msgid "Invalid ticket capacity data."
7549
  msgstr ""
7550
 
7551
+ #: src/Tribe/Tickets_View.php:845 src/views/blocks/attendees/view-link.php:73
7552
+ #: src/views/tickets/view-link.php:101
7553
  msgctxt "separator if there are both RSVPs and Tickets"
7554
  msgid " and "
7555
  msgstr ""
9209
  msgstr[0] ""
9210
  msgstr[1] ""
9211
 
9212
+ #: src/views/blocks/attendees/view-link.php:45
9213
  #: src/views/tickets/orders-pp-tickets.php:30
9214
  #: src/views/tickets/orders-rsvp.php:28
9215
  #: src/views/tickets/orders-tc-tickets.php:22 src/views/tickets/orders.php:95
9216
+ #: src/views/tickets/view-link.php:73
9217
  msgctxt "fallback post type singular name"
9218
  msgid "Post"
9219
  msgstr ""
9220
 
9221
  #. Translators: 1: the number one, 2: singular RSVP label.
9222
+ #: src/views/blocks/attendees/view-link.php:52
9223
+ #: src/views/tickets/view-link.php:80
9224
  msgctxt "RSVP count singular"
9225
  msgid "%1$d %2$s"
9226
  msgstr ""
9227
 
9228
  #. Translators: 1: the plural number of RSVPs, 2: plural RSVP label.
9229
+ #: src/views/blocks/attendees/view-link.php:55
9230
+ #: src/views/tickets/view-link.php:83
9231
  msgctxt "RSVP count plural"
9232
  msgid "%1$d %2$s"
9233
  msgstr ""
9234
 
9235
  #. Translators: 1: the number one, 2: singular Ticket label.
9236
+ #: src/views/blocks/attendees/view-link.php:60
9237
+ #: src/views/tickets/view-link.php:88
9238
  msgctxt "Ticket count singular"
9239
  msgid "%1$d %2$s"
9240
  msgstr ""
9241
 
9242
  #. Translators: 1: the plural number of Tickets, 2: plural Ticket label.
9243
+ #: src/views/blocks/attendees/view-link.php:63
9244
+ #: src/views/tickets/view-link.php:91
9245
  msgctxt "Ticket count plural"
9246
  msgid "%1$d %2$s"
9247
  msgstr ""
9250
  #. text, 2: post type label
9251
  #. Translators: 1: number of RSVPs and/or Tickets with accompanying ticket type
9252
  #. text, 2: post type label.
9253
+ #: src/views/blocks/attendees/view-link.php:73
9254
+ #: src/views/tickets/view-link.php:101
9255
  msgid "You have %1s for this %2s."
9256
  msgstr ""
9257
 
9258
  #. Translators: %s: The name(s) of the type(s) of ticket(s) the specified user
9259
  #. (optional) has for the specified event.
9260
+ #: src/views/blocks/attendees/view-link.php:78
9261
+ #: src/views/tickets/view-link.php:109
9262
  msgid "View your %s"
9263
  msgstr ""
9264
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Event Tickets and Registration ===
2
 
3
  Contributors: theeventscalendar, brianjessee, camwynsp, aguseo, bordoni, borkweb, GeoffBel, jentheo, leahkoerper, lucatume, neillmcshea, vicskf, zbtirrell, juanfra, moraleida.me
4
- Tags: tickets, registration, The Events Calendar, RSVP, ticket sales, attendee management
5
  Requires at least: 5.6
6
  Tested up to: 5.9.2
7
- Stable tag: 5.3.1
8
  Requires PHP: 7.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -23,11 +23,7 @@ https://vimeo.com/480516958
23
 
24
  Easily connect to PayPal without any complicated API keys or code through our quick connection wizard in your WordPress backend. With just a few clicks, you can begin selling tickets and enable payment through PayPal, Venmo, and credit cards.
25
 
26
- Even more, you can [upgrade to Event Tickets Plus](https://theeventscalendar.com/products/wordpress-event-tickets/?utm_source=wordpress&utm_medium=referral&utm_campaign=event-tickets-page&utm_content=) and unlock additional payment methods including digital wallets like ApplePay and Google Pay through Stripe, or use WooCommerce to take advantage of popular payment solutions including Braintree, Square, AmazonPay, and more.
27
-
28
- Easily connect to PayPal without any complicated API keys or code through our quick connection wizard in your WordPress backend. With just a few clicks, you can begin selling tickets and enable payment through PayPal, Venmo, and credit cards.
29
-
30
- Even more, you can [upgrade to Event Tickets Plus](https://theeventscalendar.com/products/wordpress-event-tickets/?utm_source=wordpress&utm_medium=referral&utm_campaign=event-tickets-page&utm_content=) and unlock additional payment methods including digital wallets like ApplePay and Google Pay through Stripe, or use WooCommerce to take advantage of popular payment solutions including Braintree, Square, AmazonPay, and more.
31
 
32
  = 🎟️ Ticketing and Registration for WordPress =
33
 
@@ -53,7 +49,7 @@ Whether your vision is big or small, you're in good company. Thousands of small
53
  ✔️ Generate sales and attendee reports
54
  ✔️ Ticket stock countdown
55
  ✔️ Automatic ticket confirmation emails
56
- ✔️ Works out of the box with [The Events Calendar](https://wordpress.org/plugins/the-events-calendar/)
57
  ✔️ Responsive design works on all devices
58
  ✔️ Tested on the major theme frameworks such as Avada, Genesis, Kadence, Thesis and many more.
59
  ✔️ Internationalized & translated
@@ -69,12 +65,12 @@ All of our documentation can be found in [our knowledgebase](https://evnt.is/eu)
69
 
70
  Additional helpful links:
71
 
72
- * [Guide: Getting Started with Event Tickets](https://theeventscalendar.com/knowledgebase/guide/event-tickets/)
73
  * [Installing Event Tickets Video](https://evnt.is/1ao9)
74
- * [Using Tickets Commerce Video](https://www.youtube.com/watch?v=2MZnZDMjpCk)
75
  * [Do I need Event Tickets or Event Tickets Plus?](https://evnt.is/1aoa)
76
  * [How to Make Money with Virtual Events](https://evnt.is/1aob)
77
- * [Implementing Stripe on Event Tickets and Event Tickets Plus](https://theeventscalendar.com/knowledgebase/k/implementing-stripe-on-event-tickets-and-event-tickets-plus/)
78
 
79
  If you have any questions about this plugin, you can post a thread in the WordPress.org forum. Please search existing threads before starting a new on
80
 
@@ -82,8 +78,8 @@ If you have any questions about this plugin, you can post a thread in the WordPr
82
 
83
  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.
84
  Our Free Plugins:
85
- 📅 [The Events Calendar](https://wordpress.org/plugins/the-events-calendar/)
86
- 📐 [Advanced Post Manager](https://wordpress.org/plugins/advanced-post-manager/)
87
 
88
  Our Premium Plugins and Services:
89
 
@@ -104,17 +100,17 @@ If you aren't familiar with Event Tickets, check out our [Getting Started Guide]
104
  Ready to dig deeper? Check out these resources:
105
 
106
  * [Tutorials](https://evnt.is/2u)
107
- * [Known Issues](https://theeventscalendar.com/known-issues/)
108
  * [Help Videos](https://evnt.is/youtube)
109
  * [Release Notes](https://evnt.is/2v)
110
 
111
- We check in on the [Event Tickets forum here on WordPress.org](https://wordpress.org/support/plugin/event-tickets/) about once a week to help users with basic troubleshooting and identifying bugs. If you're looking for premium, personalized support, consider upgrading to [Event Tickets Plus](https://evnt.is/18wk).
112
 
113
  Still have a question? Shoot us an email at support@theeventscalendar.com.
114
 
115
  == Translate ==
116
 
117
- Event Tickets is translated into multiple languages, including German, Danish, and Dutch. Help localize Event Tickets even further by adding your locale – visit [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/event-tickets/).
118
 
119
  == Installation ==
120
 
@@ -142,13 +138,13 @@ Event Tickets is translated into multiple languages, including German, Danish, a
142
 
143
  First, make sure that you're running the latest version of Event Tickets. If you've got any other add-ons, make sure those are current and running the latest code as well. Also be sure to check our [knowledgebase](https://evnt.is/1aoc).
144
 
145
- 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 Event Tickets is running on your site. If the issue persists, 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, you'll know that is the source of the conflict.
146
 
147
  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.
148
 
149
  = I'm still stuck. Where do I go to file a bug or ask a question? =
150
 
151
- Free plugin users can post in the [Event Tickets support forum on WordPress.org](https://wordpress.org/support/plugin/event-tickets/). Our team reviews that forum weekly to look for bug reports.
152
 
153
  If you're already an [Event Tickets Plus](https://evnt.is/18wk) subscriber, you're entitled to our actively-monitored [Premium Support](https://evnt.is/1aoe) on our website. Generally, except in times of increased support loads, we reply to all premium support tickets within 24 hours during the business week.
154
 
@@ -184,7 +180,7 @@ The following add-ons are available for The Events Calendar:
184
 
185
  = I have a feature idea. What's the best way to tell you about it? =
186
 
187
- We've got a [LoopedIn](https://app.loopedin.io/the-events-calendar-suite-roadmap#/ideas) page 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.
188
 
189
  = I've still got questions. Where can I find answers? =
190
 
@@ -192,6 +188,27 @@ Check out our extensive [knowledgebase](https://evnt.is/18wm) for articles on us
192
 
193
  == Changelog ==
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  = [5.3.1] 2022-03-15 =
196
 
197
  * Fix - Fixed a warning message when creating an event via Community Events. [CT-51]
@@ -248,4 +265,4 @@ Check out our extensive [knowledgebase](https://evnt.is/18wm) for articles on us
248
  * Fix - Fixed toggling of shared capacity data for tickets. [ETP-497]
249
  * Language - 7 new strings added, 99 updated, 0 fuzzied, and 0 obsoleted
250
 
251
- [See changelog for all versions](https://raw.githubusercontent.com/the-events-calendar/event-tickets/master/changelog.txt)
1
  === Event Tickets and Registration ===
2
 
3
  Contributors: theeventscalendar, brianjessee, camwynsp, aguseo, bordoni, borkweb, GeoffBel, jentheo, leahkoerper, lucatume, neillmcshea, vicskf, zbtirrell, juanfra, moraleida.me
4
+ Tags: tickets, registration, event registration, RSVP, ticket sales, attendee management
5
  Requires at least: 5.6
6
  Tested up to: 5.9.2
7
+ Stable tag: 5.3.2
8
  Requires PHP: 7.1
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
23
 
24
  Easily connect to PayPal without any complicated API keys or code through our quick connection wizard in your WordPress backend. With just a few clicks, you can begin selling tickets and enable payment through PayPal, Venmo, and credit cards.
25
 
26
+ Even more, you can [upgrade to Event Tickets Plus](https://evnt.is/1b54) and unlock additional payment methods including digital wallets like ApplePay and Google Pay through Stripe, or use WooCommerce to take advantage of popular payment solutions including Braintree, Square, AmazonPay, and more.
 
 
 
 
27
 
28
  = 🎟️ Ticketing and Registration for WordPress =
29
 
49
  ✔️ Generate sales and attendee reports
50
  ✔️ Ticket stock countdown
51
  ✔️ Automatic ticket confirmation emails
52
+ ✔️ Works out of the box with [The Events Calendar](https://evnt.is/18yi)
53
  ✔️ Responsive design works on all devices
54
  ✔️ Tested on the major theme frameworks such as Avada, Genesis, Kadence, Thesis and many more.
55
  ✔️ Internationalized & translated
65
 
66
  Additional helpful links:
67
 
68
+ * [Guide: Getting Started with Event Tickets](https://evnt.is/1aot)
69
  * [Installing Event Tickets Video](https://evnt.is/1ao9)
70
+ * [Using Tickets Commerce Video](https://evnt.is/1b5f)
71
  * [Do I need Event Tickets or Event Tickets Plus?](https://evnt.is/1aoa)
72
  * [How to Make Money with Virtual Events](https://evnt.is/1aob)
73
+ * [Implementing Stripe on Event Tickets and Event Tickets Plus](https://evnt.is/1b5g)
74
 
75
  If you have any questions about this plugin, you can post a thread in the WordPress.org forum. Please search existing threads before starting a new on
76
 
78
 
79
  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.
80
  Our Free Plugins:
81
+ 📅 [The Events Calendar](https://evnt.is/18yi)
82
+ 📐 [Advanced Post Manager](https://evnt.is/18e6)
83
 
84
  Our Premium Plugins and Services:
85
 
100
  Ready to dig deeper? Check out these resources:
101
 
102
  * [Tutorials](https://evnt.is/2u)
103
+ * [Known Issues](https://evnt.is/1b5h)
104
  * [Help Videos](https://evnt.is/youtube)
105
  * [Release Notes](https://evnt.is/2v)
106
 
107
+ We check in on the [Event Tickets forum here on WordPress.org](https://evnt.is/1ac3) about once a week to help users with basic troubleshooting and identifying bugs. If you're looking for premium, personalized support, consider upgrading to [Event Tickets Plus](https://evnt.is/18wk).
108
 
109
  Still have a question? Shoot us an email at support@theeventscalendar.com.
110
 
111
  == Translate ==
112
 
113
+ Event Tickets is translated into multiple languages, including German, Danish, and Dutch. Help localize Event Tickets even further by adding your locale – visit [translate.wordpress.org](https://evnt.is/1b5i).
114
 
115
  == Installation ==
116
 
138
 
139
  First, make sure that you're running the latest version of Event Tickets. If you've got any other add-ons, make sure those are current and running the latest code as well. Also be sure to check our [knowledgebase](https://evnt.is/1aoc).
140
 
141
+ 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 Event Tickets is running on your site. If the issue persists, revert to the default [Twenty Twenty](https://evnt.is/1b5j) theme. If the issue is resolved after deactivating a specific plugin or your theme, you'll know that is the source of the conflict.
142
 
143
  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.
144
 
145
  = I'm still stuck. Where do I go to file a bug or ask a question? =
146
 
147
+ Free plugin users can post in the [Event Tickets support forum on WordPress.org](https://evnt.is/1ac3). Our team reviews that forum weekly to look for bug reports.
148
 
149
  If you're already an [Event Tickets Plus](https://evnt.is/18wk) subscriber, you're entitled to our actively-monitored [Premium Support](https://evnt.is/1aoe) on our website. Generally, except in times of increased support loads, we reply to all premium support tickets within 24 hours during the business week.
150
 
180
 
181
  = I have a feature idea. What's the best way to tell you about it? =
182
 
183
+ We've got a [LoopedIn](https://evnt.is/ideas) page 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.
184
 
185
  = I've still got questions. Where can I find answers? =
186
 
188
 
189
  == Changelog ==
190
 
191
+ = [5.3.2] 2022-04-05 =
192
+
193
+ * Feature - REST API endpoints added for creating and updating attendees. [ET-1346]
194
+ * Enhancement - Added a notice when an enabled Tickets Commerce gateway doesn't support it's selected currency. [ET-1392]
195
+ * Enhancement - Adding the South African Rand to list of supported currencies in Tickets Commerce. [ET-1438]
196
+ * Enhancement - Hide 'View My Tickets' link when showing tickets within the `[tribe_tickets]` shortcode. [ETP-775]
197
+ * Fix - Fixed Events Tickets App check-in for Tickets Commerce tickets. [ET-1436]
198
+ * Fix - Improved validation of Stripe webhook events to avoid handling events created by other apps. [ET-1474]
199
+ * Fix - Fixed Issue with Tickets Commerce Tickets not displaying in REST API. [ET-1458]
200
+ * Fix - Fixed Issue with Tickets Commerce Attendees not displaying in shortcodes. [ET-1461]
201
+ * Fix - Fixed Issue with Tickets Commerce Attendees not being synced with Promoter. [ET-1476]
202
+ * Fix - Fixed JS assets loading and causing errors on checkout page for Tickets Commerce. [ET-1426]
203
+ * Fix - Fixed WooCommerce currency settings not getting reflected on Event Cost Field . [ETP-783]
204
+ * Fix - Correct a misapplied Customizer color that breaks the loading "dot" animation. [ET-1437]
205
+ * Fix - Add Mexico to the list of countries ET cannot process fees from. [ET-1479]
206
+ * Tweak - Updated links in readme.txt file. [ET-1459]
207
+ * Tweak - Added filters: `tec_tickets_commerce_admin_notices`, `tec_tickets_commerce_gateway_supported_currencies_`, `tec_tickets_commerce_currency_code_options`, `tribe_ticket_rest_api_post_attendee_args`, `tribe_ticket_rest_api_edit_attendee_args`, `tribe_tickets_rest_api_post_attendee_data`, `tribe_tickets_rest_api_update_attendee_data`, `tec_tickets_completed_status_by_provider_name`, `tec_tickets_hide_view_link`
208
+ * Tweak - Added actions: `tribe_tickets_promoter_trigger_attendee`, `tec-tickets-commerce-checkout-shortcode-assets`, `tec-tickets-commerce-checkout-shortcode-assets`
209
+ * Tweak - Changed views: `blocks/attendees/view-link`, `tickets/view-link`
210
+ * Language - 17 new strings added, 70 updated, 0 fuzzied, and 0 obsoleted
211
+
212
  = [5.3.1] 2022-03-15 =
213
 
214
  * Fix - Fixed a warning message when creating an event via Community Events. [CT-51]
265
  * Fix - Fixed toggling of shared capacity data for tickets. [ETP-497]
266
  * Language - 7 new strings added, 99 updated, 0 fuzzied, and 0 obsoleted
267
 
268
+ [See changelog for all versions](https://evnt.is/1b5k)
src/Tickets/Commerce/Admin/Notices.php CHANGED
@@ -21,19 +21,33 @@ class Notices extends tad_DI52_ServiceProvider {
21
  */
22
  public function register() {
23
 
24
- tribe_notice(
25
- 'event-tickets-tickets-commerce-checkout-not-set',
26
- [ $this, 'render_checkout_notice' ],
27
- [ 'dismiss' => false, 'type' => 'error' ],
28
- [ $this, 'should_render_checkout_notice' ]
29
- );
30
-
31
- tribe_notice(
32
- 'event-tickets-tickets-commerce-success-not-set',
33
- [ $this, 'render_success_notice' ],
34
- [ 'dismiss' => false, 'type' => 'error' ],
35
- [ $this, 'should_render_success_notice' ]
36
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
 
39
  /**
21
  */
22
  public function register() {
23
 
24
+ $notices = [
25
+ [
26
+ 'event-tickets-tickets-commerce-checkout-not-set',
27
+ [ $this, 'render_checkout_notice' ],
28
+ [ 'dismiss' => false, 'type' => 'error' ],
29
+ [ $this, 'should_render_checkout_notice' ],
30
+ ],
31
+ [
32
+ 'event-tickets-tickets-commerce-success-not-set',
33
+ [ $this, 'render_success_notice' ],
34
+ [ 'dismiss' => false, 'type' => 'error' ],
35
+ [ $this, 'should_render_success_notice' ],
36
+ ],
37
+ ];
38
+
39
+ /**
40
+ * Filters admin notices.
41
+ *
42
+ * @since 5.3.2
43
+ *
44
+ * @param array[] $notices Array of admin notice parameters.
45
+ */
46
+ $notices = apply_filters( 'tec_tickets_commerce_admin_notices', $notices );
47
+
48
+ foreach ( $notices as $notice ) {
49
+ call_user_func_array( 'tribe_notice', $notice );
50
+ }
51
  }
52
 
53
  /**
src/Tickets/Commerce/Flag_Actions/Generate_Attendees.php CHANGED
@@ -68,6 +68,13 @@ class Generate_Attendees extends Flag_Action_Abstract {
68
  * @return string[]
69
  */
70
  public function modify_status_with_attendee_generation_flag( $flags, $post, $status ) {
 
 
 
 
 
 
 
71
  $flags[] = 'generate_attendees';
72
 
73
  return $flags;
68
  * @return string[]
69
  */
70
  public function modify_status_with_attendee_generation_flag( $flags, $post, $status ) {
71
+ $found = array_search( 'send_email', $flags, true );
72
+
73
+ if ( false !== $found ) {
74
+ array_splice( $flags, $found, 0, 'generate_attendees' );
75
+ return $flags;
76
+ }
77
+
78
  $flags[] = 'generate_attendees';
79
 
80
  return $flags;
src/Tickets/Commerce/Gateways/Contracts/Abstract_Gateway.php CHANGED
@@ -48,6 +48,15 @@ abstract class Abstract_Gateway implements Gateway_Interface {
48
  */
49
  protected static $merchant;
50
 
 
 
 
 
 
 
 
 
 
51
  /**
52
  * The option name prefix that configured whether or not a gateway is enabled.
53
  * It is followed by the gateway 'key'
@@ -302,4 +311,45 @@ abstract class Abstract_Gateway implements Gateway_Interface {
302
 
303
  return tribe_remove_option( static::get_enabled_option_key() );
304
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  }
48
  */
49
  protected static $merchant;
50
 
51
+ /**
52
+ * Supported currencies.
53
+ *
54
+ * @since 5.3.2
55
+ *
56
+ * @var string[]
57
+ */
58
+ protected static $supported_currencies = [];
59
+
60
  /**
61
  * The option name prefix that configured whether or not a gateway is enabled.
62
  * It is followed by the gateway 'key'
311
 
312
  return tribe_remove_option( static::get_enabled_option_key() );
313
  }
314
+
315
+ /**
316
+ * Get supported currencies.
317
+ *
318
+ * @since 5.3.2
319
+ *
320
+ * @return string[]
321
+ */
322
+ public static function get_supported_currencies() {
323
+ /**
324
+ * Filter to modify supported currencies for this gateway.
325
+ *
326
+ * @since 5.3.2
327
+ *
328
+ * @param string[] $supported_currencies Array of three-letter, supported currency codes.
329
+ */
330
+ return apply_filters( 'tec_tickets_commerce_gateway_supported_currencies_' . static::$key, static::$supported_currencies );
331
+ }
332
+
333
+ /**
334
+ * Is currency supported.
335
+ *
336
+ * @since 5.3.2
337
+ *
338
+ * @param string $currency_code Currency code.
339
+ *
340
+ * @return bool
341
+ */
342
+ public static function is_currency_supported( $currency_code ) {
343
+ if ( empty( $currency_code ) ) {
344
+ return false;
345
+ }
346
+
347
+ $supported_currencies = static::get_supported_currencies();
348
+
349
+ // If supported currencies aren't set, assume it's supported.
350
+ if ( empty( $supported_currencies ) ) {
351
+ return true;
352
+ }
353
+ return in_array( $currency_code, $supported_currencies, true );
354
+ }
355
  }
src/Tickets/Commerce/Gateways/PayPal/Assets.php CHANGED
@@ -94,10 +94,9 @@ class Assets extends \tad_DI52_ServiceProvider {
94
  'tribe-tickets-commerce-notice-js',
95
  'tribe-tickets-commerce-base-gateway-checkout-toggler',
96
  ],
97
- null,
98
  [
99
  'groups' => [
100
- 'tribe-tickets-commerce-checkout',
101
  'tec-tickets-commerce-gateway-paypal',
102
  ],
103
  'conditionals' => [ $this, 'should_enqueue_assets' ],
@@ -190,7 +189,7 @@ class Assets extends \tad_DI52_ServiceProvider {
190
  * @return bool If the `PayPal` assets should be enqueued or not.
191
  */
192
  public function should_enqueue_assets() {
193
- return tribe( Checkout::class )->is_current_page() && tribe( Gateway::class )->is_active();
194
  }
195
 
196
  /**
94
  'tribe-tickets-commerce-notice-js',
95
  'tribe-tickets-commerce-base-gateway-checkout-toggler',
96
  ],
97
+ 'tec-tickets-commerce-checkout-shortcode-assets',
98
  [
99
  'groups' => [
 
100
  'tec-tickets-commerce-gateway-paypal',
101
  ],
102
  'conditionals' => [ $this, 'should_enqueue_assets' ],
189
  * @return bool If the `PayPal` assets should be enqueued or not.
190
  */
191
  public function should_enqueue_assets() {
192
+ return tribe( Checkout::class )->is_current_page() && tribe( Gateway::class )->is_enabled() && tribe( Gateway::class )->is_active();
193
  }
194
 
195
  /**
src/Tickets/Commerce/Gateways/PayPal/Gateway.php CHANGED
@@ -4,6 +4,8 @@ namespace TEC\Tickets\Commerce\Gateways\PayPal;
4
 
5
  use TEC\Tickets\Commerce\Gateways\Contracts\Abstract_Gateway;
6
  use TEC\Tickets\Commerce\Notice_Handler;
 
 
7
  use \Tribe__Tickets__Main;
8
 
9
  /**
@@ -28,6 +30,15 @@ class Gateway extends Abstract_Gateway {
28
  */
29
  protected static $merchant = Merchant::class;
30
 
 
 
 
 
 
 
 
 
 
31
  /**
32
  * PayPal's attribution ID for requests.
33
  *
@@ -155,4 +166,62 @@ class Gateway extends Abstract_Gateway {
155
 
156
  return $template->template( $template_path, tribe( Buttons::class )->get_checkout_template_vars() );
157
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
4
 
5
  use TEC\Tickets\Commerce\Gateways\Contracts\Abstract_Gateway;
6
  use TEC\Tickets\Commerce\Notice_Handler;
7
+ use TEC\Tickets\Commerce\Settings as TC_Settings;
8
+ use TEC\Tickets\Commerce\Utils\Currency;
9
  use \Tribe__Tickets__Main;
10
 
11
  /**
30
  */
31
  protected static $merchant = Merchant::class;
32
 
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ protected static $supported_currencies = [
37
+ 'AUD', 'BRL', 'CAD', 'CNY', 'CZK', 'DKK', 'EUR', 'HKD', 'HUF',
38
+ 'ILS', 'JPY', 'MYR', 'MXN', 'TWD', 'NZD', 'NOK', 'PHP', 'PLN',
39
+ 'GBP', 'RUB', 'SGD', 'SEK', 'CHF', 'THB', 'USD',
40
+ ];
41
+
42
  /**
43
  * PayPal's attribution ID for requests.
44
  *
166
 
167
  return $template->template( $template_path, tribe( Buttons::class )->get_checkout_template_vars() );
168
  }
169
+
170
+ /**
171
+ * Filter to add any admin notices that might be needed.
172
+ *
173
+ * @since 5.3.2
174
+ *
175
+ * @param array Array of admin notices.
176
+ *
177
+ * @return array
178
+ */
179
+ public function filter_admin_notices( $notices ) {
180
+
181
+ // Check for unsupported currency.
182
+ $selected_currency = tribe_get_option( TC_Settings::$option_currency_code );
183
+ if ( $this->is_enabled() && ! $this->is_currency_supported( $selected_currency ) ){
184
+ $notices[] = [
185
+ 'tc-paypal-currency-not-supported',
186
+ [ $this, 'render_unsupported_currency_notice' ],
187
+ [ 'dismiss' => false, 'type' => 'error' ],
188
+ ];
189
+ }
190
+
191
+ return $notices;
192
+ }
193
+
194
+ /**
195
+ * HTML for notice for unsupported currencies
196
+ *
197
+ * @since 5.3.2
198
+ *
199
+ * @return string
200
+ */
201
+ public function render_unsupported_currency_notice() {
202
+ $selected_currency = tribe_get_option( TC_Settings::$option_currency_code );
203
+ $currency_name = tribe( Currency::class )->get_currency_name( $selected_currency );
204
+ // If we don't have the currency name configured, use the currency code instead.
205
+ if ( empty( $currency_name ) ) {
206
+ $currency_name = $selected_currency;
207
+ }
208
+ $notice_link = sprintf(
209
+ '<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a>',
210
+ esc_url( 'https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies/' ),
211
+ esc_html__( 'here', 'event-tickets' )
212
+ );
213
+ $notice_header = esc_html__( 'PayPal doesn\'t support your selected currency', 'event-tickets' );
214
+ $notice_text = sprintf(
215
+ // Translators: %1$s: Currency Name. %2$s: Link to gateway provider's currency documentation.
216
+ esc_html__( 'Unfortunately PayPal doesn\'t support payments in %1$s. Please try using a different gateway or adjusting your Tickets Commerce currency setting. You can see a list of supported currencies %2$s.', 'event-tickets' ),
217
+ $currency_name,
218
+ $notice_link
219
+ );
220
+
221
+ return sprintf(
222
+ '<p><strong>%1$s</strong></p><p>%2$s</p>',
223
+ $notice_header,
224
+ $notice_text
225
+ );
226
+ }
227
  }
src/Tickets/Commerce/Gateways/PayPal/Hooks.php CHANGED
@@ -77,6 +77,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
77
  add_filter( 'tec_tickets_commerce_success_shortcode_success_page_paypal_template_vars', [ $this, 'include_success_page_vars' ], 10, 2 );
78
  add_filter( 'tec_tickets_commerce_notice_messages', [ $this, 'include_admin_notices' ] );
79
  add_filter( 'tribe-events-save-options', [ $this, 'flush_transients_when_toggling_sandbox_mode' ] );
 
80
  }
81
 
82
  /**
@@ -327,4 +328,17 @@ class Hooks extends \tad_DI52_ServiceProvider {
327
  public function flush_transients_when_toggling_sandbox_mode( $options ) {
328
  return $this->container->make( Signup::class )->maybe_delete_transient_data( $options );
329
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  }
77
  add_filter( 'tec_tickets_commerce_success_shortcode_success_page_paypal_template_vars', [ $this, 'include_success_page_vars' ], 10, 2 );
78
  add_filter( 'tec_tickets_commerce_notice_messages', [ $this, 'include_admin_notices' ] );
79
  add_filter( 'tribe-events-save-options', [ $this, 'flush_transients_when_toggling_sandbox_mode' ] );
80
+ add_filter( 'tec_tickets_commerce_admin_notices', [ $this, 'filter_admin_notices' ] );
81
  }
82
 
83
  /**
328
  public function flush_transients_when_toggling_sandbox_mode( $options ) {
329
  return $this->container->make( Signup::class )->maybe_delete_transient_data( $options );
330
  }
331
+
332
+ /**
333
+ * Filter admin notices.
334
+ *
335
+ * @since 5.3.2
336
+ *
337
+ * @param array $notices Array of admin notices.
338
+ *
339
+ * @return array
340
+ */
341
+ public function filter_admin_notices( $notices ) {
342
+ return $this->container->make( Gateway::class )->filter_admin_notices( $notices );
343
+ }
344
  }
src/Tickets/Commerce/Gateways/Stripe/Assets.php CHANGED
@@ -56,11 +56,10 @@ class Assets extends \tad_DI52_ServiceProvider {
56
  'tribe-tickets-commerce-notice-js',
57
  'tribe-tickets-commerce-base-gateway-checkout-toggler',
58
  ],
59
- null,
60
  [
61
  'module' => true,
62
  'groups' => [
63
- 'tribe-tickets-commerce-checkout',
64
  'tec-tickets-commerce-gateway-stripe',
65
  ],
66
  'conditionals' => [ $this, 'should_enqueue_assets' ],
@@ -180,6 +179,6 @@ class Assets extends \tad_DI52_ServiceProvider {
180
  * @return bool If the `Stripe` assets should be enqueued or not.
181
  */
182
  public function should_enqueue_assets() {
183
- return tribe( Gateway::class )->is_active() && tribe( Checkout::class )->is_current_page();
184
  }
185
  }
56
  'tribe-tickets-commerce-notice-js',
57
  'tribe-tickets-commerce-base-gateway-checkout-toggler',
58
  ],
59
+ 'tec-tickets-commerce-checkout-shortcode-assets',
60
  [
61
  'module' => true,
62
  'groups' => [
 
63
  'tec-tickets-commerce-gateway-stripe',
64
  ],
65
  'conditionals' => [ $this, 'should_enqueue_assets' ],
179
  * @return bool If the `Stripe` assets should be enqueued or not.
180
  */
181
  public function should_enqueue_assets() {
182
+ return tribe( Checkout::class )->is_current_page() && tribe( Gateway::class )->is_enabled() && tribe( Gateway::class )->is_active();
183
  }
184
  }
src/Tickets/Commerce/Gateways/Stripe/Gateway.php CHANGED
@@ -5,6 +5,8 @@ namespace TEC\Tickets\Commerce\Gateways\Stripe;
5
  use TEC\Tickets\Commerce\Gateways\Contracts\Abstract_Gateway;
6
  use TEC\Tickets\Commerce\Gateways\Stripe\REST\Return_Endpoint;
7
  use TEC\Tickets\Commerce\Payments_Tab;
 
 
8
  use \Tribe__Tickets__Main;
9
  use Tribe__Utils__Array as Arr;
10
 
@@ -32,6 +34,23 @@ class Gateway extends Abstract_Gateway {
32
  */
33
  protected static $merchant = Merchant::class;
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  /**
36
  * Stripe tracking ID version.
37
  *
@@ -125,4 +144,62 @@ class Gateway extends Abstract_Gateway {
125
 
126
  return $template->template( $template_path, tribe( Stripe_Elements::class )->get_checkout_template_vars() );
127
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
5
  use TEC\Tickets\Commerce\Gateways\Contracts\Abstract_Gateway;
6
  use TEC\Tickets\Commerce\Gateways\Stripe\REST\Return_Endpoint;
7
  use TEC\Tickets\Commerce\Payments_Tab;
8
+ use TEC\Tickets\Commerce\Settings as TC_Settings;
9
+ use TEC\Tickets\Commerce\Utils\Currency;
10
  use \Tribe__Tickets__Main;
11
  use Tribe__Utils__Array as Arr;
12
 
34
  */
35
  protected static $merchant = Merchant::class;
36
 
37
+ /**
38
+ * @inheritDoc
39
+ */
40
+ protected static $supported_currencies = [
41
+ 'USD', 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD',
42
+ 'BDT', 'BGN', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF',
43
+ 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ETB',
44
+ 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK',
45
+ 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'ISK', 'JMD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KRW',
46
+ 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT',
47
+ 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR',
48
+ 'NZD', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF',
49
+ 'SAR', 'SBD', 'SCR', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'STD', 'SZL', 'THB', 'TJS',
50
+ 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'UYU', 'UZS', 'VND', 'VUV', 'WST', 'XAF',
51
+ 'XCD', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW',
52
+ ];
53
+
54
  /**
55
  * Stripe tracking ID version.
56
  *
144
 
145
  return $template->template( $template_path, tribe( Stripe_Elements::class )->get_checkout_template_vars() );
146
  }
147
+
148
+ /**
149
+ * Filter to add any admin notices that might be needed.
150
+ *
151
+ * @since 5.3.2
152
+ *
153
+ * @param array Array of admin notices.
154
+ *
155
+ * @return array
156
+ */
157
+ public function filter_admin_notices( $notices ) {
158
+
159
+ // Check for unsupported currency.
160
+ $selected_currency = tribe_get_option( TC_Settings::$option_currency_code );
161
+ if ( $this->is_enabled() && ! $this->is_currency_supported( $selected_currency ) ){
162
+ $notices[] = [
163
+ 'tc-stripe-currency-not-supported',
164
+ [ $this, 'render_unsupported_currency_notice' ],
165
+ [ 'dismiss' => false, 'type' => 'error' ],
166
+ ];
167
+ }
168
+
169
+ return $notices;
170
+ }
171
+
172
+ /**
173
+ * HTML for notice for unsupported currencies
174
+ *
175
+ * @since 5.3.2
176
+ *
177
+ * @return string
178
+ */
179
+ public function render_unsupported_currency_notice() {
180
+ $selected_currency = tribe_get_option( TC_Settings::$option_currency_code );
181
+ $currency_name = tribe( Currency::class )->get_currency_name( $selected_currency );
182
+ // If we don't have the currency name configured, use the currency code instead.
183
+ if ( empty( $currency_name ) ) {
184
+ $currency_name = $selected_currency;
185
+ }
186
+ $notice_link = sprintf(
187
+ '<a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a>',
188
+ esc_url( 'https://stripe.com/docs/currencies' ),
189
+ esc_html__( 'here', 'event-tickets' )
190
+ );
191
+ $notice_header = esc_html__( 'Stripe doesn\'t support your selected currency', 'event-tickets' );
192
+ $notice_text = sprintf(
193
+ // Translators: %1$s: Currency Name. %2$s: Link to gateway provider's currency documentation.
194
+ esc_html__( 'Unfortunately, Stripe doesn\'t support payments in %1$s. Please try using a different gateway or adjusting your Tickets Commerce currency setting. You can see a list of supported currencies %2$s.', 'event-tickets' ),
195
+ $currency_name,
196
+ $notice_link
197
+ );
198
+
199
+ return sprintf(
200
+ '<p><strong>%1$s</strong></p><p>%2$s</p>',
201
+ $notice_header,
202
+ $notice_text
203
+ );
204
+ }
205
  }
src/Tickets/Commerce/Gateways/Stripe/Hooks.php CHANGED
@@ -48,6 +48,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
48
  add_filter( 'tribe_field_div_end', [ $this, 'filter_include_webhooks_copy' ], 10, 2 );
49
  add_filter( 'tribe_settings_save_field_value', [ $this, 'validate_payment_methods' ], 10, 2 );
50
  add_filter( 'tribe_settings_validate_field_value', [ $this, 'provide_defaults_for_hidden_fields'], 10, 3 );
 
51
  }
52
 
53
  /**
@@ -201,4 +202,17 @@ class Hooks extends \tad_DI52_ServiceProvider {
201
  public function provide_defaults_for_hidden_fields( $value, $field_id, $field ) {
202
  return tribe( Settings::class )->reset_hidden_field_values( $value, $field_id, $field );
203
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  }
48
  add_filter( 'tribe_field_div_end', [ $this, 'filter_include_webhooks_copy' ], 10, 2 );
49
  add_filter( 'tribe_settings_save_field_value', [ $this, 'validate_payment_methods' ], 10, 2 );
50
  add_filter( 'tribe_settings_validate_field_value', [ $this, 'provide_defaults_for_hidden_fields'], 10, 3 );
51
+ add_filter( 'tec_tickets_commerce_admin_notices', [ $this, 'filter_admin_notices' ] );
52
  }
53
 
54
  /**
202
  public function provide_defaults_for_hidden_fields( $value, $field_id, $field ) {
203
  return tribe( Settings::class )->reset_hidden_field_values( $value, $field_id, $field );
204
  }
205
+
206
+ /**
207
+ * Filter admin notices.
208
+ *
209
+ * @since 5.3.2
210
+ *
211
+ * @param array $notices Array of admin notices.
212
+ *
213
+ * @return array
214
+ */
215
+ public function filter_admin_notices( $notices ) {
216
+ return $this->container->make( Gateway::class )->filter_admin_notices( $notices );
217
+ }
218
  }
src/Tickets/Commerce/Gateways/Stripe/Merchant.php CHANGED
@@ -21,6 +21,7 @@ class Merchant extends Abstract_Merchant {
21
  */
22
  const UNAUTHORIZED_COUNTRIES = [
23
  'BR',
 
24
  ];
25
 
26
  /**
21
  */
22
  const UNAUTHORIZED_COUNTRIES = [
23
  'BR',
24
+ 'MX',
25
  ];
26
 
27
  /**
src/Tickets/Commerce/Gateways/Stripe/Payment_Intent.php CHANGED
@@ -34,6 +34,15 @@ class Payment_Intent {
34
  */
35
  public static $test_metadata_key = 'payment_intent_validation_test';
36
 
 
 
 
 
 
 
 
 
 
37
  /**
38
  * Create a simple payment intent with the designated payment methods to check for errors.
39
  *
@@ -56,12 +65,15 @@ class Payment_Intent {
56
  $fee = Application_Fee::calculate( $value );
57
 
58
  $query_args = [];
59
- $body = [
60
  'currency' => $value->get_currency_code(),
61
  'amount' => (string) $value->get_integer(),
62
  'payment_method_types' => $payment_methods,
63
  'application_fee_amount' => (string) $fee->get_integer(),
64
- 'metadata' => [ static::$test_metadata_key => true ],
 
 
 
65
  ];
66
 
67
  $args = [
@@ -107,6 +119,9 @@ class Payment_Intent {
107
  'amount' => (string) $value->get_integer(),
108
  'payment_method_types' => tribe( Merchant::class )->get_payment_method_types( $retry ),
109
  'application_fee_amount' => (string) $fee->get_integer(),
 
 
 
110
  ];
111
 
112
  $stripe_statement_descriptor = tribe_get_option( Settings::$option_statement_descriptor );
34
  */
35
  public static $test_metadata_key = 'payment_intent_validation_test';
36
 
37
+ /**
38
+ * The key used to identify payment intents created in Tickets Commerce.
39
+ *
40
+ * @since 5.3.2
41
+ *
42
+ * @var string
43
+ */
44
+ public static $tc_metadata_identifier = 'tec_tc_payment_intent';
45
+
46
  /**
47
  * Create a simple payment intent with the designated payment methods to check for errors.
48
  *
65
  $fee = Application_Fee::calculate( $value );
66
 
67
  $query_args = [];
68
+ $body = [
69
  'currency' => $value->get_currency_code(),
70
  'amount' => (string) $value->get_integer(),
71
  'payment_method_types' => $payment_methods,
72
  'application_fee_amount' => (string) $fee->get_integer(),
73
+ 'metadata' => [
74
+ static::$test_metadata_key => true,
75
+ static::$tc_metadata_identifier => true,
76
+ ],
77
  ];
78
 
79
  $args = [
119
  'amount' => (string) $value->get_integer(),
120
  'payment_method_types' => tribe( Merchant::class )->get_payment_method_types( $retry ),
121
  'application_fee_amount' => (string) $fee->get_integer(),
122
+ 'metadata' => [
123
+ static::$tc_metadata_identifier => true,
124
+ ],
125
  ];
126
 
127
  $stripe_statement_descriptor = tribe_get_option( Settings::$option_statement_descriptor );
src/Tickets/Commerce/Gateways/Stripe/Webhooks/Charge_Webhook.php CHANGED
@@ -5,6 +5,8 @@ namespace TEC\Tickets\Commerce\Gateways\Stripe\Webhooks;
5
  use TEC\Tickets\Commerce\Order;
6
  use TEC\Tickets\Commerce\Status\Status_Interface;
7
  use TEC\Tickets\Commerce\Gateways\Contracts\Webhook_Event_Interface;
 
 
8
 
9
  /**
10
  * Webhook for Charge operations.
@@ -25,6 +27,28 @@ class Charge_Webhook implements Webhook_Event_Interface {
25
  $order = tribe( Order::class )->get_from_gateway_order_id( $payment_intent_id );
26
 
27
  if ( empty( $order ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  return new \WP_Error( 200, sprintf(
29
  // Translators: %s is the payment intent id.
30
  __( 'Payment Intent %s does not correspond to a known order.', 'event-tickets' ),
5
  use TEC\Tickets\Commerce\Order;
6
  use TEC\Tickets\Commerce\Status\Status_Interface;
7
  use TEC\Tickets\Commerce\Gateways\Contracts\Webhook_Event_Interface;
8
+ use TEC\Tickets\Commerce\Gateways\Stripe\Payment_Intent;
9
+ use Tribe__Utils__Array as Arr;
10
 
11
  /**
12
  * Webhook for Charge operations.
27
  $order = tribe( Order::class )->get_from_gateway_order_id( $payment_intent_id );
28
 
29
  if ( empty( $order ) ) {
30
+
31
+ if ( empty( $charge_data['metadata'][ Payment_Intent::$tc_metadata_identifier ] ) ) {
32
+ $response->set_status( 200 );
33
+ $response->set_data( sprintf(
34
+ // Translators: %1$s is the event id and %2$s is the event type name.
35
+ __( 'Event %1$s was received and will not be handled because the Payment Intent %2$s does not refer to an Event Tickets transaction.', 'event-tickets' ),
36
+ esc_html( Arr::get( $event, 'id' ) ),
37
+ esc_html( $payment_intent_id )
38
+ ) );
39
+
40
+ return $response;
41
+ }
42
+
43
+ if ( ! empty( $charge_data['metadata'][ Payment_Intent::$test_metadata_key ] ) ) {
44
+ $response->set_status( 200 );
45
+ $response->set_data(
46
+ __( 'Payment Intent Test Successful', 'event-tickets' )
47
+ );
48
+
49
+ return $response;
50
+ }
51
+
52
  return new \WP_Error( 200, sprintf(
53
  // Translators: %s is the payment intent id.
54
  __( 'Payment Intent %s does not correspond to a known order.', 'event-tickets' ),
src/Tickets/Commerce/Gateways/Stripe/Webhooks/Payment_Intent_Webhook.php CHANGED
@@ -7,6 +7,7 @@ use TEC\Tickets\Commerce\Gateways\Stripe\Payment_Intent;
7
  use TEC\Tickets\Commerce\Gateways\Stripe\Status;
8
  use TEC\Tickets\Commerce\Order;
9
  use TEC\Tickets\Commerce\Status\Status_Interface;
 
10
 
11
  /**
12
  * Webhook for Payment_Intent operations
@@ -34,6 +35,18 @@ class Payment_Intent_Webhook implements Webhook_Event_Interface {
34
 
35
  if ( empty( $order ) ) {
36
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  if ( ! empty( $payment_intent['metadata'][ Payment_Intent::$test_metadata_key ] ) ) {
38
  $response->set_status( 200 );
39
  $response->set_data(
@@ -59,7 +72,7 @@ class Payment_Intent_Webhook implements Webhook_Event_Interface {
59
  esc_html( $payment_intent_id )
60
  )
61
  );
62
-
63
  return $response;
64
  }
65
 
7
  use TEC\Tickets\Commerce\Gateways\Stripe\Status;
8
  use TEC\Tickets\Commerce\Order;
9
  use TEC\Tickets\Commerce\Status\Status_Interface;
10
+ use Tribe__Utils__Array as Arr;
11
 
12
  /**
13
  * Webhook for Payment_Intent operations
35
 
36
  if ( empty( $order ) ) {
37
 
38
+ if ( empty( $payment_intent['metadata'][ Payment_Intent::$tc_metadata_identifier ] ) ) {
39
+ $response->set_status( 200 );
40
+ $response->set_data( sprintf(
41
+ // Translators: %1$s is the event id and %2$s is the event type name.
42
+ __( 'Event %1$s was received and will not be handled because the Payment Intent %2$s does not refer to an Event Tickets transaction.', 'event-tickets' ),
43
+ esc_html( Arr::get( $event, 'id' ) ),
44
+ esc_html( $payment_intent_id )
45
+ ) );
46
+
47
+ return $response;
48
+ }
49
+
50
  if ( ! empty( $payment_intent['metadata'][ Payment_Intent::$test_metadata_key ] ) ) {
51
  $response->set_status( 200 );
52
  $response->set_data(
72
  esc_html( $payment_intent_id )
73
  )
74
  );
75
+
76
  return $response;
77
  }
78
 
src/Tickets/Commerce/Promoter_Observer.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace TEC\Tickets\Commerce;
4
+
5
+ use Tribe\Tickets\Promoter\Triggers\Contracts\Attendee_Model;
6
+ use Tribe\Tickets\Promoter\Triggers\Models\Attendee;
7
+
8
+ class Promoter_Observer {
9
+
10
+ /**
11
+ * @since 4.12.0
12
+ *
13
+ * @var Tribe__Tickets__Promoter__Observer $observer ET Observer reference.
14
+ */
15
+ private $observer;
16
+
17
+ /**
18
+ * Constructor.
19
+ *
20
+ */
21
+ public function __construct() {
22
+ $this->observer = tribe( \Tribe__Tickets__Promoter__Observer::class );
23
+ $this->hook();
24
+ }
25
+
26
+ /**
27
+ * Attach hooks for trigger messages.
28
+ *
29
+ * @since 5.3.2
30
+ */
31
+ public function hook() {
32
+
33
+ add_action( 'tec_tickets_commerce_flag_action_generated_attendee', [ $this, 'attendee_created' ], 10, 5 );
34
+ add_action( 'tec_tickets_commerce_ticket_deleted', tribe_callback( 'tickets.promoter.observer', 'notify_event_id' ), 10, 2 );
35
+ add_action( 'event_tickets_checkin', [ $this, 'checkin' ], 10, 2 );
36
+ }
37
+
38
+ /**
39
+ * Action fired when a TC attendee is created.
40
+ *
41
+ * @since 5.3.2
42
+ *
43
+ * @param \WP_Post $attendee Attendee object.
44
+ */
45
+ public function attendee_created( \WP_Post $attendee ) {
46
+ $this->trigger( 'ticket_purchased', $attendee->ID );
47
+ }
48
+
49
+ /**
50
+ * Responds to a checkin action.
51
+ *
52
+ * @since 5.3.2
53
+ *
54
+ * @param int $attendee_id The ID of the attendee utilized.
55
+ * @param bool|null $qr Whether it's from a QR scan.
56
+ */
57
+ public function checkin( $attendee_id, $qr ) {
58
+ $this->trigger( 'checkin', $attendee_id );
59
+ }
60
+
61
+ /**
62
+ * Fire a trigger action using Tickets Commerce as main source of the ticket data.
63
+ *
64
+ * @since 5.3.2
65
+ *
66
+ * @param string $type The trigger type.
67
+ * @param int $attendee_id The ID of the attendee utilized.
68
+ */
69
+ private function trigger( $type, $attendee_id ) {
70
+
71
+ $attendee = tec_tc_get_attendee( $attendee_id );
72
+ $ticket = tribe( Module::class );
73
+ $attendee = new Attendee( (array) $attendee );
74
+
75
+ /**
76
+ * Create a new action to listen for a trigger associated with an attendee.
77
+ *
78
+ * @since 5.3.2
79
+ *
80
+ * @param string $type The type of trigger fired.
81
+ * @param Attendee_Model $attendee The attendee associated with the trigger.
82
+ * @param Tribe__Tickets__Tickets $ticket The ticket where the attendee was created.
83
+ */
84
+ do_action( 'tribe_tickets_promoter_trigger_attendee', $type, $attendee, $ticket );
85
+ }
86
+ }
src/Tickets/Commerce/Provider.php CHANGED
@@ -68,6 +68,7 @@ class Provider extends tad_DI52_ServiceProvider {
68
  $this->container->singleton( Checkout::class );
69
  $this->container->singleton( Settings::class );
70
  $this->container->singleton( Tickets_View::class );
 
71
 
72
  $this->container->register( Status\Status_Handler::class );
73
  $this->container->register( Flag_Actions\Flag_Action_Handler::class );
68
  $this->container->singleton( Checkout::class );
69
  $this->container->singleton( Settings::class );
70
  $this->container->singleton( Tickets_View::class );
71
+ $this->container->singleton( Promoter_Observer::class, new Promoter_Observer );
72
 
73
  $this->container->register( Status\Status_Handler::class );
74
  $this->container->register( Flag_Actions\Flag_Action_Handler::class );
src/Tickets/Commerce/Settings.php CHANGED
@@ -14,6 +14,7 @@ use TEC\Tickets\Commerce\Gateways\Manager;
14
  use TEC\Tickets\Commerce\Status\Completed;
15
  use TEC\Tickets\Commerce\Status\Pending;
16
  use TEC\Tickets\Commerce\Traits\Has_Mode;
 
17
  use TEC\Tickets\Settings as Tickets_Settings;
18
  use \Tribe__Template;
19
  use Tribe__Field_Conditional;
@@ -223,10 +224,7 @@ class Settings {
223
  $success_shortcode = Shortcodes\Success_Shortcode::get_wp_slug();
224
  $checkout_shortcode = Shortcodes\Checkout_Shortcode::get_wp_slug();
225
 
226
- /** @var \Tribe__Tickets__Commerce__Currency $commerce_currency */
227
- $commerce_currency = tribe( 'tickets.commerce.currency' );
228
-
229
- $paypal_currency_code_options = $commerce_currency->generate_currency_code_options();
230
 
231
  $current_user = get_user_by( 'id', get_current_user_id() );
232
 
14
  use TEC\Tickets\Commerce\Status\Completed;
15
  use TEC\Tickets\Commerce\Status\Pending;
16
  use TEC\Tickets\Commerce\Traits\Has_Mode;
17
+ use TEC\Tickets\Commerce\Utils\Currency;
18
  use TEC\Tickets\Settings as Tickets_Settings;
19
  use \Tribe__Template;
20
  use Tribe__Field_Conditional;
224
  $success_shortcode = Shortcodes\Success_Shortcode::get_wp_slug();
225
  $checkout_shortcode = Shortcodes\Checkout_Shortcode::get_wp_slug();
226
 
227
+ $paypal_currency_code_options = tribe( Currency::class )->get_currency_code_options();
 
 
 
228
 
229
  $current_user = get_user_by( 'id', get_current_user_id() );
230
 
src/Tickets/Commerce/Shortcodes/Checkout_Shortcode.php CHANGED
@@ -124,6 +124,7 @@ class Checkout_Shortcode extends Shortcode_Abstract {
124
  */
125
  public static function enqueue_assets() {
126
  // Enqueue assets.
 
127
  tribe_asset_enqueue_group( 'tribe-tickets-commerce-checkout' );
128
  tribe_asset_enqueue( 'tribe-tickets-forms-style' );
129
  }
124
  */
125
  public static function enqueue_assets() {
126
  // Enqueue assets.
127
+ do_action( 'tec-tickets-commerce-checkout-shortcode-assets' );
128
  tribe_asset_enqueue_group( 'tribe-tickets-commerce-checkout' );
129
  tribe_asset_enqueue( 'tribe-tickets-forms-style' );
130
  }
src/Tickets/Commerce/Utils/Currency.php CHANGED
@@ -541,6 +541,38 @@ class Currency {
541
  'decimal_precision' => 2,
542
  'stripe_minimum_charge' => 0.50,
543
  ],
 
 
 
 
 
 
 
 
544
  ] );
545
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
546
  }
541
  'decimal_precision' => 2,
542
  'stripe_minimum_charge' => 0.50,
543
  ],
544
+ 'ZAR' => [
545
+ 'name' => __( 'South African Rand (ZAR)', 'event-tickets' ),
546
+ 'symbol' => '&#082;',
547
+ 'decimal_point' => '.',
548
+ 'thousands_sep' => ' ',
549
+ 'decimal_precision' => 2,
550
+ 'stripe_minimum_charge' => 30,
551
+ ],
552
  ] );
553
  }
554
+
555
+ /**
556
+ * Creates the array for a currency drop-down using only code & name.
557
+ *
558
+ * @since 5.3.2
559
+ *
560
+ * @return array<string, string>
561
+ */
562
+ public function get_currency_code_options() {
563
+ $currency_map = $this->get_default_currency_map();
564
+ $options = array_combine(
565
+ array_keys( $currency_map ),
566
+ wp_list_pluck( $currency_map, 'name' )
567
+ );
568
+
569
+ /**
570
+ * Filters the currency code options shown to the user in the TC settings.
571
+ *
572
+ * @since 5.3.2
573
+ *
574
+ * @param array<string, string> $options
575
+ */
576
+ return apply_filters( 'tec_tickets_commerce_currency_code_options', $options );
577
+ }
578
  }
src/Tribe/Commerce/Currency.php CHANGED
@@ -467,21 +467,21 @@ class Tribe__Tickets__Commerce__Currency {
467
  *
468
  * @since 4.7
469
  *
470
- * @param string $provider
471
- * @param string $cost
 
 
472
  *
473
  * @return string
474
  */
475
  protected function get_provider_cost( $provider = '', $cost = '' ) {
476
- if ( ! class_exists( $provider ) ) {
477
- return $cost;
 
478
  }
479
 
480
- if (
481
- 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main' === $provider
482
- && function_exists( 'wc_format_localized_price' )
483
- ) {
484
- return wc_format_localized_price( $cost );
485
  }
486
 
487
  if (
467
  *
468
  * @since 4.7
469
  *
470
+ * @since 5.3.2 removed unused WooCommerce formatting.
471
+ *
472
+ * @param string | Tribe__Tickets__Tickets $provider Provider class name or object.
473
+ * @param string $cost Cost for the Event.
474
  *
475
  * @return string
476
  */
477
  protected function get_provider_cost( $provider = '', $cost = '' ) {
478
+ // Convert to class name if object is passed.
479
+ if ( is_object( $provider ) ) {
480
+ $provider = get_class( $provider );
481
  }
482
 
483
+ if ( ! class_exists( $provider ) ) {
484
+ return $cost;
 
 
 
485
  }
486
 
487
  if (
src/Tribe/Main.php CHANGED
@@ -7,7 +7,7 @@ class Tribe__Tickets__Main {
7
  /**
8
  * Current version of this plugin
9
  */
10
- const VERSION = '5.3.1';
11
 
12
  /**
13
  * Used to store the version history.
7
  /**
8
  * Current version of this plugin
9
  */
10
+ const VERSION = '5.3.2';
11
 
12
  /**
13
  * Used to store the version history.
src/Tribe/REST/V1/Endpoints/Single_Attendee.php CHANGED
@@ -92,4 +92,274 @@ class Tribe__Tickets__REST__V1__Endpoints__Single_Attendee
92
 
93
  return tribe_attendees( 'restv1' )->by_primary_key( $request['id'] );
94
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
92
 
93
  return tribe_attendees( 'restv1' )->by_primary_key( $request['id'] );
94
  }
95
+
96
+ /**
97
+ * Handles POST requests on the endpoint.
98
+ *
99
+ * @param WP_REST_Request $request
100
+ * @param bool $return_id Whether the created post ID should be returned or the full response object.
101
+ *
102
+ * @return WP_Error|WP_REST_Response|int An array containing the data on success or a WP_Error instance on failure.
103
+ */
104
+ public function create( WP_REST_Request $request, $return_id = false ) {
105
+
106
+ $post_data = $this->prepare_attendee_data( $request );
107
+
108
+ if ( is_wp_error( $post_data ) ) {
109
+ return $post_data;
110
+ }
111
+
112
+ /** @var Tribe__Tickets__Attendees $attendees */
113
+ $attendees = tribe( 'tickets.attendees' );
114
+ $attendee_object = $attendees->create_attendee( $post_data['ticket'], $post_data['data'] );
115
+
116
+ if ( ! $attendee_object ) {
117
+ return new WP_Error( 'attendee-creation-failed', __( 'Something went wrong! Attendee creation failed.', 'event-tickets' ) );
118
+ }
119
+
120
+ $attendee = $post_data['provider']->get_attendee( $attendee_object->ID );
121
+ $response = new WP_REST_Response( $attendee );
122
+ $response->set_status( 201 );
123
+
124
+ return $response;
125
+ }
126
+
127
+ /**
128
+ * Returns the content of the `args` array that should be used to register the endpoint
129
+ * with the `register_rest_route` function.
130
+ *
131
+ * @since 5.3.2
132
+ *
133
+ * @return array Array of supported arguments for the create endpoint.
134
+ */
135
+ public function CREATE_args() {
136
+ $args = [
137
+ 'ticket_id' => [
138
+ 'required' => true,
139
+ 'validate_callback' => 'tribe_events_product_is_ticket',
140
+ 'type' => 'integer',
141
+ 'description' => __( 'The Ticket ID, where the attendee is registered.', 'event-tickets' ),
142
+ ],
143
+ 'full_name' => [
144
+ 'required' => true,
145
+ 'type' => 'string',
146
+ 'description' => __( 'Full name of the attendee.', 'event-tickets' ),
147
+ ],
148
+ 'email' => [
149
+ 'required' => true,
150
+ 'validate_callback' => 'is_email',
151
+ 'type' => 'email',
152
+ 'description' => __( 'Email of the attendeee.', 'event-tickets' ),
153
+ ],
154
+ 'attendee_status' => [
155
+ 'required' => false,
156
+ 'type' => 'string',
157
+ 'description' => __( 'Order Status for the attendee.', 'event-tickets' ),
158
+ ],
159
+
160
+ ];
161
+
162
+ /**
163
+ * Filters the supported args for the create endpoint.
164
+ *
165
+ * @since 5.3.2
166
+ *
167
+ * @param array $args Supported list of arguments.
168
+ */
169
+ return apply_filters( 'tribe_ticket_rest_api_post_attendee_args', $args );
170
+ }
171
+
172
+ /**
173
+ * Handles Update requests on the endpoint.
174
+ *
175
+ * @param WP_REST_Request $request
176
+ *
177
+ * @return WP_Error|WP_REST_Response|int An array containing the data on success or a WP_Error instance on failure.
178
+ */
179
+ public function update( WP_REST_Request $request ) {
180
+
181
+ $post_data = $this->prepare_update_attendee_data( $request );
182
+
183
+ if ( is_wp_error( $post_data ) ) {
184
+ return $post_data;
185
+ }
186
+
187
+ $provider = tribe_tickets_get_ticket_provider( $post_data['attendee_id'] );
188
+
189
+ /** @var Tribe__Tickets__Attendees $attendees */
190
+ $attendees = tribe( 'tickets.attendees' );
191
+ $attendee_object = $attendees->update_attendee( $post_data['attendee'], $post_data['data'] );
192
+
193
+ if ( ! $attendee_object ) {
194
+ return new WP_Error( 'attendee-update-failed', __( 'Something went wrong! Attendee update failed.', 'event-tickets' ) );
195
+ }
196
+
197
+ $attendee = $provider->get_attendee( $post_data['attendee_id'] );
198
+ $response = new WP_REST_Response( $attendee );
199
+ $response->set_status( 201 );
200
+
201
+ return $response;
202
+ }
203
+
204
+ /**
205
+ * Returns the content of the `args` array that should be used to register the endpoint
206
+ * with the `register_rest_route` function.
207
+ *
208
+ * @since 5.3.2
209
+ *
210
+ * @return array Array of supported arguments for the edit endpoint.
211
+ */
212
+ public function EDIT_args() {
213
+ $args = [
214
+ 'id' => [
215
+ 'type' => 'integer',
216
+ 'in' => 'path',
217
+ 'description' => __( 'The attendee post ID', 'event-tickets' ),
218
+ 'required' => true,
219
+ ],
220
+ ];
221
+
222
+ /**
223
+ * Filters the supported args for the edit endpoint.
224
+ *
225
+ * @since 5.3.2
226
+ *
227
+ * @param array $args Supported list of arguments.
228
+ */
229
+ return apply_filters( 'tribe_ticket_rest_api_edit_attendee_args', $args );
230
+ }
231
+
232
+ /**
233
+ * Process Request data.
234
+ *
235
+ * @param WP_REST_Request $request
236
+ *
237
+ * @return array|WP_Error
238
+ */
239
+ public function prepare_attendee_data( WP_REST_Request $request ) {
240
+
241
+ $ticket_id = (int) $request->get_param( 'ticket_id' );
242
+ $provider = tribe_tickets_get_ticket_provider( $ticket_id );
243
+
244
+ if ( ! $provider ) {
245
+ return new WP_Error( 'invalid-provider', __( 'Ticket Provider not found.', 'event-tickets' ) );
246
+ }
247
+
248
+ $attendee_data = $request->get_params();
249
+ $attendee_data[ 'attendee_source' ] = 'rest-api';
250
+ $validate_status = $this->validate_attendee_status( $attendee_data, $provider );
251
+
252
+ if ( is_wp_error( $validate_status ) ) {
253
+ return $validate_status;
254
+ }
255
+
256
+ /**
257
+ * Filter REST API attendee data before creating an attendee.
258
+ *
259
+ * @since 5.3.2
260
+ *
261
+ * @param array $attendee_data Attendee data.
262
+ * @param WP_REST_Request $request Request object.
263
+ */
264
+ $attendee_data = apply_filters( 'tribe_tickets_rest_api_post_attendee_data', $attendee_data, $request );
265
+
266
+ if ( is_wp_error( $attendee_data ) ) {
267
+ return $attendee_data;
268
+ }
269
+
270
+ return [
271
+ 'ticket' => $ticket_id,
272
+ 'provider' => $provider,
273
+ 'data' => $attendee_data,
274
+ ];
275
+ }
276
+
277
+ /**
278
+ * Process Request data for updating an attendee.
279
+ *
280
+ * @param WP_REST_Request $request
281
+ *
282
+ * @return array|WP_Error
283
+ */
284
+ public function prepare_update_attendee_data( WP_REST_Request $request ) {
285
+
286
+ $attendee_id = (int) $request->get_param( 'id' );
287
+ $found = tribe_attendees()->by( 'id', $attendee_id )->found();
288
+
289
+ if ( ! $found ) {
290
+ return new WP_Error( 'invalid-attendee-id', __( 'Attendee ID is not valid.', 'event-tickets' ) );
291
+ }
292
+
293
+ $provider = tribe_tickets_get_ticket_provider( $attendee_id );
294
+
295
+ if ( ! $provider ) {
296
+ return new WP_Error( 'invalid-attendee-provider', __( 'Attendee provider not found.', 'event-tickets' ) );
297
+ }
298
+
299
+ $attendee = $provider->get_attendee( $attendee_id );
300
+ $updated_data = $request->get_params();
301
+ $validate_status = $this->validate_attendee_status( $updated_data, $provider );
302
+
303
+ if ( is_wp_error( $validate_status ) ) {
304
+ return $validate_status;
305
+ }
306
+
307
+ /**
308
+ * Filter REST API attendee data before creating an attendee.
309
+ *
310
+ * @since 5.3.2
311
+ *
312
+ * @param array $updated_data Data that needs to be updated.
313
+ * @param WP_REST_Request $request Request object.
314
+ * @param array $attendee_data Attendee data that will be updated.
315
+ */
316
+ $attendee_data = apply_filters( 'tribe_tickets_rest_api_update_attendee_data', $updated_data, $request, $attendee );
317
+
318
+ if ( is_wp_error( $attendee_data ) ) {
319
+ return $attendee_data;
320
+ }
321
+
322
+ return [
323
+ 'attendee_id' => $attendee_id,
324
+ 'attendee' => $attendee,
325
+ 'data' => $attendee_data,
326
+ ];
327
+ }
328
+
329
+ /**
330
+ * Validate Attendee status if available.
331
+ *
332
+ * @since 5.3.2
333
+ *
334
+ * @param array $data Attendee data.
335
+ * @param Tribe__Tickets__Tickets $provider Provider for the selected ticket.
336
+ *
337
+ * @return array | WP_Error
338
+ */
339
+ public function validate_attendee_status( $data, $provider ) {
340
+ if ( isset( $data['attendee_status'] ) ) {
341
+ $statuses = tribe( 'tickets.status' )->get_statuses_by_action( 'all', $provider );
342
+ if ( ! in_array( $data['attendee_status'], $statuses, true ) ) {
343
+ $error_message = sprintf(
344
+ // Translators: %s - List of valid statuses.
345
+ __( 'Supported statuses for this attendee are: %s', 'event-tickets' ),
346
+ implode( $statuses, ' | ' )
347
+ );
348
+ return new WP_Error( 'invalid-attendee-status', $error_message, [ 'status' => 400 ] );
349
+ }
350
+ }
351
+
352
+ return $data;
353
+ }
354
+
355
+ /**
356
+ * Validates the user permission.
357
+ *
358
+ * @since 5.3.2
359
+ *
360
+ * @return bool
361
+ */
362
+ public function validate_user_permission() {
363
+ return current_user_can( 'edit_users' ) || current_user_can( 'tribe_manage_attendees' );
364
+ }
365
  }
src/Tribe/REST/V1/Service_Provider.php CHANGED
@@ -228,7 +228,7 @@ class Tribe__Tickets__REST__V1__Service_Provider extends tad_DI52_ServiceProvide
228
  }
229
 
230
  protected function register_single_attendee_endpoint() {
231
- /** @var Tribe__Tickets__REST__V1__Endpoints__Single_Ticket $endpoint */
232
  $endpoint = tribe( 'tickets.rest-v1.endpoints.attendees-single' );
233
 
234
  register_rest_route( $this->namespace, '/attendees/(?P<id>\\d+)', array(
@@ -238,6 +238,20 @@ class Tribe__Tickets__REST__V1__Service_Provider extends tad_DI52_ServiceProvide
238
  'permission_callback' => '__return_true',
239
  ) );
240
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
  tribe( 'tickets.rest-v1.endpoints.documentation' )->register_documentation_provider( '/attendees/{id}', $endpoint );
242
 
243
  return $endpoint;
228
  }
229
 
230
  protected function register_single_attendee_endpoint() {
231
+ /** @var Tribe__Tickets__REST__V1__Endpoints__Single_Attendee $endpoint */
232
  $endpoint = tribe( 'tickets.rest-v1.endpoints.attendees-single' );
233
 
234
  register_rest_route( $this->namespace, '/attendees/(?P<id>\\d+)', array(
238
  'permission_callback' => '__return_true',
239
  ) );
240
 
241
+ register_rest_route( $this->namespace, '/attendees/', [
242
+ 'methods' => WP_REST_Server::CREATABLE,
243
+ 'args' => $endpoint->CREATE_args(),
244
+ 'callback' => [ $endpoint, 'create' ],
245
+ 'permission_callback' => [ $endpoint, 'validate_user_permission' ],
246
+ ] );
247
+
248
+ register_rest_route( $this->namespace, '/attendees/(?P<id>\\d+)', [
249
+ 'methods' => WP_REST_Server::EDITABLE,
250
+ 'args' => $endpoint->EDIT_args(),
251
+ 'callback' => [ $endpoint, 'update' ],
252
+ 'permission_callback' => [ $endpoint, 'validate_user_permission' ],
253
+ ] );
254
+
255
  tribe( 'tickets.rest-v1.endpoints.documentation' )->register_documentation_provider( '/attendees/{id}', $endpoint );
256
 
257
  return $endpoint;
src/Tribe/Repositories/Post_Repository.php CHANGED
@@ -9,6 +9,7 @@
9
 
10
  namespace Tribe\Tickets\Repositories;
11
 
 
12
  use Tribe\Tickets\Repositories\Traits\Event;
13
  use Tribe\Tickets\Repositories\Traits\Post_Attendees;
14
  use Tribe\Tickets\Repositories\Traits\Post_Tickets;
@@ -82,8 +83,9 @@ class Post_Repository extends Tribe__Repository {
82
  */
83
  public function attendee_types() {
84
  return [
85
- 'rsvp' => 'tribe_rsvp_attendees',
86
- 'tribe-commerce' => 'tribe_tpp_attendees',
 
87
  ];
88
  }
89
 
@@ -98,8 +100,9 @@ class Post_Repository extends Tribe__Repository {
98
  */
99
  public function attendee_to_event_keys() {
100
  return [
101
- 'rsvp' => '_tribe_rsvp_event',
102
- 'tribe-commerce' => '_tribe_tpp_event',
 
103
  ];
104
  }
105
 
9
 
10
  namespace Tribe\Tickets\Repositories;
11
 
12
+ use TEC\Tickets\Commerce;
13
  use Tribe\Tickets\Repositories\Traits\Event;
14
  use Tribe\Tickets\Repositories\Traits\Post_Attendees;
15
  use Tribe\Tickets\Repositories\Traits\Post_Tickets;
83
  */
84
  public function attendee_types() {
85
  return [
86
+ 'rsvp' => 'tribe_rsvp_attendees',
87
+ 'tribe-commerce' => 'tribe_tpp_attendees',
88
+ Commerce::PROVIDER => Commerce\Attendee::POSTTYPE,
89
  ];
90
  }
91
 
100
  */
101
  public function attendee_to_event_keys() {
102
  return [
103
+ 'rsvp' => '_tribe_rsvp_event',
104
+ 'tribe-commerce' => '_tribe_tpp_event',
105
+ Commerce::PROVIDER => Commerce\Attendee::$event_relation_meta_key,
106
  ];
107
  }
108
 
src/Tribe/Service_Providers/Customizer.php CHANGED
@@ -154,11 +154,7 @@ class Customizer extends \tad_DI52_ServiceProvider {
154
 
155
  // overrides for common components/full/_loader.pcss.
156
  $template .= '
157
- @keyframes tribe-common-c-loader-bounce {
158
- 0% {}
159
- 50% { background-color: <%= global_elements.accent_color %>; }
160
- 100% {}
161
- }
162
  ';
163
  }
164
 
154
 
155
  // overrides for common components/full/_loader.pcss.
156
  $template .= '
157
+ .tribe-common .tribe-common-c-svgicon--dot { color: <%= global_elements.accent_color %>; }
 
 
 
 
158
  ';
159
  }
160
 
src/Tribe/Shortcodes/Tribe_Tickets_Checkout.php CHANGED
@@ -65,6 +65,7 @@ class Tribe_Tickets_Checkout extends Shortcode_Abstract {
65
  $template->add_template_globals( $args );
66
 
67
  // Enqueue assets.
 
68
  tribe_asset_enqueue_group( 'tribe-tickets-commerce-checkout' );
69
 
70
  return $template->template( 'v2/tickets/commerce/checkout', $args, false );
65
  $template->add_template_globals( $args );
66
 
67
  // Enqueue assets.
68
+ do_action( 'tec-tickets-commerce-checkout-shortcode-assets' );
69
  tribe_asset_enqueue_group( 'tribe-tickets-commerce-checkout' );
70
 
71
  return $template->template( 'v2/tickets/commerce/checkout', $args, false );
src/Tribe/Status/Manager.php CHANGED
@@ -326,6 +326,8 @@ class Tribe__Tickets__Status__Manager {
326
  *
327
  * @since 4.10.5
328
  *
 
 
329
  * @param string|object $provider_name an object or string of a commerce main class name
330
  *
331
  * @return array
@@ -337,25 +339,41 @@ class Tribe__Tickets__Status__Manager {
337
  }
338
 
339
  $abbreviated_name = $this->get_provider_slug( $provider_name );
 
340
 
341
- $filtered_statuses = wp_list_filter(
342
- $this->statuses[ $abbreviated_name ]->statuses,
343
- [ 'count_completed' => true ]
344
- );
345
-
346
 
347
- foreach ( $filtered_statuses as $status ) {
348
- $trigger_statuses[] = $status->provider_name;
349
 
350
- if ( ! empty( $status->additional_names ) ) {
351
- $trigger_statuses = $this->add_additional_names_to_array( $trigger_statuses, $status->additional_names );
 
352
  }
353
-
354
  }
355
 
 
 
 
 
 
 
 
 
356
 
357
- return $trigger_statuses;
358
-
 
 
 
 
 
 
 
359
  }
360
 
361
  /**
326
  *
327
  * @since 4.10.5
328
  *
329
+ * @since 5.3.2 add support fot Tickets Commerce completed statuses directly, as we have changed the way statuses are handled for Tickets Commerce.
330
+ *
331
  * @param string|object $provider_name an object or string of a commerce main class name
332
  *
333
  * @return array
339
  }
340
 
341
  $abbreviated_name = $this->get_provider_slug( $provider_name );
342
+ $trigger_statuses = [];
343
 
344
+ if ( isset( $this->statuses[ $abbreviated_name ] ) ) {
345
+ $filtered_statuses = wp_list_filter(
346
+ $this->statuses[ $abbreviated_name ]->statuses,
347
+ [ 'count_completed' => true ]
348
+ );
349
 
350
+ foreach ( $filtered_statuses as $status ) {
351
+ $trigger_statuses[] = $status->provider_name;
352
 
353
+ if ( ! empty( $status->additional_names ) ) {
354
+ $trigger_statuses = $this->add_additional_names_to_array( $trigger_statuses, $status->additional_names );
355
+ }
356
  }
 
357
  }
358
 
359
+ // Add Completed statuses for Tickets Commerce providers.
360
+ if ( \TEC\Tickets\Commerce::ABBR === $abbreviated_name ) {
361
+ $completed_status = tribe( \TEC\Tickets\Commerce\Status\Completed::class );
362
+ $trigger_statuses = [
363
+ $completed_status::SLUG,
364
+ $completed_status->get_name(),
365
+ ];
366
+ }
367
 
368
+ /**
369
+ * Filters the array of completed status slugs for the providers.
370
+ *
371
+ * @since 5.3.2
372
+ *
373
+ * @param array $trigger_statuses Array of supported statuses.
374
+ * @param string|object $provider_name an object or string of a commerce main class name.
375
+ */
376
+ return apply_filters( 'tec_tickets_completed_status_by_provider_name', $trigger_statuses, $provider_name );
377
  }
378
 
379
  /**
src/Tribe/Ticket_Repository.php CHANGED
@@ -95,6 +95,7 @@ class Tribe__Tickets__Ticket_Repository extends Tribe__Repository {
95
  return [
96
  'rsvp' => '_tribe_rsvp_for_event',
97
  'tribe-commerce' => '_tribe_tpp_for_event',
 
98
  ];
99
  }
100
 
95
  return [
96
  'rsvp' => '_tribe_rsvp_for_event',
97
  'tribe-commerce' => '_tribe_tpp_for_event',
98
+ TEC\Tickets\Commerce::PROVIDER => TEC\Tickets\Commerce\Ticket::$event_relation_meta_key,
99
  ];
100
  }
101
 
src/views/blocks/attendees/view-link.php CHANGED
@@ -19,8 +19,9 @@
19
  * @since 4.10.9 Uses new functions to get singular and plural texts.
20
  * @since 4.12.1 Account for empty post type object, such as if post type got disabled. Fix typo in sprintf placeholders.
21
  * @since 5.0.2 Fix template path in documentation block.
 
22
  *
23
- * @version 5.0.2
24
  *
25
  * @var Tribe__Tickets__Editor__Template $this
26
  */
@@ -29,6 +30,10 @@ if ( ! defined( 'ABSPATH' ) ) {
29
  die( '-1' );
30
  }
31
 
 
 
 
 
32
  $view = Tribe__Tickets__Tickets_View::instance();
33
  $event_id = $this->get( 'post_id' );
34
  $event = get_post( $event_id );
19
  * @since 4.10.9 Uses new functions to get singular and plural texts.
20
  * @since 4.12.1 Account for empty post type object, such as if post type got disabled. Fix typo in sprintf placeholders.
21
  * @since 5.0.2 Fix template path in documentation block.
22
+ * @since 5.3.2 Added use of $hide_view_my_tickets_link variable to hide link as an option.
23
  *
24
+ * @version 5.3.2
25
  *
26
  * @var Tribe__Tickets__Editor__Template $this
27
  */
30
  die( '-1' );
31
  }
32
 
33
+ if ( isset( $hide_view_my_tickets_link ) && tribe_is_truthy( $hide_view_my_tickets_link ) ) {
34
+ return;
35
+ }
36
+
37
  $view = Tribe__Tickets__Tickets_View::instance();
38
  $event_id = $this->get( 'post_id' );
39
  $event = get_post( $event_id );
src/views/tickets/view-link.php CHANGED
@@ -20,8 +20,9 @@
20
  * @since 5.0.1 Add additional checks to prevent PHP errors when called from automated testing.
21
  * @since 5.0.2 Fix template path in documentation block.
22
  * @since 5.1.3 Use /tribe-events/ for the template path in documentation block.
 
23
  *
24
- * @version 5.1.3
25
  *
26
  * @var Tribe__Tickets__Tickets_View $this
27
  */
@@ -30,6 +31,10 @@ if ( ! defined( 'ABSPATH' ) ) {
30
  die( '-1' );
31
  }
32
 
 
 
 
 
33
  $view = Tribe__Tickets__Tickets_View::instance();
34
 
35
  $event_id = get_the_ID();
@@ -51,6 +56,18 @@ if ( empty( $post_type ) || ! is_user_logged_in() ) {
51
  return;
52
  }
53
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  $is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
55
 
56
  $post_type_singular = $post_type ? $post_type->labels->singular_name : _x( 'Post', 'fallback post type singular name', 'event-tickets' );
20
  * @since 5.0.1 Add additional checks to prevent PHP errors when called from automated testing.
21
  * @since 5.0.2 Fix template path in documentation block.
22
  * @since 5.1.3 Use /tribe-events/ for the template path in documentation block.
23
+ * @since 5.3.2 Added use of $hide_view_my_tickets_link variable to hide link as an option.
24
  *
25
+ * @version 5.3.2
26
  *
27
  * @var Tribe__Tickets__Tickets_View $this
28
  */
31
  die( '-1' );
32
  }
33
 
34
+ if ( isset( $hide_view_my_tickets_link ) && tribe_is_truthy( $hide_view_my_tickets_link ) ) {
35
+ return;
36
+ }
37
+
38
  $view = Tribe__Tickets__Tickets_View::instance();
39
 
40
  $event_id = get_the_ID();
56
  return;
57
  }
58
 
59
+ /**
60
+ * Filters the arg to determine whether or not to hide the view link.
61
+ *
62
+ * @since 5.3.2
63
+ *
64
+ * @param bool True/false to hide view link.
65
+ */
66
+ $hide_view_link = apply_filters( 'tec_tickets_hide_view_link', tribe_doing_shortcode( 'tribe_tickets' ) );
67
+ if ( $hide_view_link ) {
68
+ return;
69
+ }
70
+
71
  $is_event_page = class_exists( 'Tribe__Events__Main' ) && Tribe__Events__Main::POSTTYPE === $event->post_type;
72
 
73
  $post_type_singular = $post_type ? $post_type->labels->singular_name : _x( 'Post', 'fallback post type singular name', 'event-tickets' );
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit3984c88c5542fb513530dd03c098a3b4::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitad38379fa06ea34b7130e18f8a365a72::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -109,6 +109,7 @@ return array(
109
  'TEC\\Tickets\\Commerce\\Notice_Handler' => $baseDir . '/src/Tickets/Commerce/Notice_Handler.php',
110
  'TEC\\Tickets\\Commerce\\Order' => $baseDir . '/src/Tickets/Commerce/Order.php',
111
  'TEC\\Tickets\\Commerce\\Payments_Tab' => $baseDir . '/src/Tickets/Commerce/Payments_Tab.php',
 
112
  'TEC\\Tickets\\Commerce\\Provider' => $baseDir . '/src/Tickets/Commerce/Provider.php',
113
  'TEC\\Tickets\\Commerce\\Reports\\Attendance_Totals' => $baseDir . '/src/Tickets/Commerce/Reports/Attendance_Totals.php',
114
  'TEC\\Tickets\\Commerce\\Reports\\Attendees' => $baseDir . '/src/Tickets/Commerce/Reports/Attendees.php',
109
  'TEC\\Tickets\\Commerce\\Notice_Handler' => $baseDir . '/src/Tickets/Commerce/Notice_Handler.php',
110
  'TEC\\Tickets\\Commerce\\Order' => $baseDir . '/src/Tickets/Commerce/Order.php',
111
  'TEC\\Tickets\\Commerce\\Payments_Tab' => $baseDir . '/src/Tickets/Commerce/Payments_Tab.php',
112
+ 'TEC\\Tickets\\Commerce\\Promoter_Observer' => $baseDir . '/src/Tickets/Commerce/Promoter_Observer.php',
113
  'TEC\\Tickets\\Commerce\\Provider' => $baseDir . '/src/Tickets/Commerce/Provider.php',
114
  'TEC\\Tickets\\Commerce\\Reports\\Attendance_Totals' => $baseDir . '/src/Tickets/Commerce/Reports/Attendance_Totals.php',
115
  'TEC\\Tickets\\Commerce\\Reports\\Attendees' => $baseDir . '/src/Tickets/Commerce/Reports/Attendees.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit3984c88c5542fb513530dd03c098a3b4
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit3984c88c5542fb513530dd03c098a3b4
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit3984c88c5542fb513530dd03c098a3b4', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit3984c88c5542fb513530dd03c098a3b4', '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\ComposerStaticInit3984c88c5542fb513530dd03c098a3b4::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 ComposerAutoloaderInitad38379fa06ea34b7130e18f8a365a72
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitad38379fa06ea34b7130e18f8a365a72', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitad38379fa06ea34b7130e18f8a365a72', '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\ComposerStaticInitad38379fa06ea34b7130e18f8a365a72::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 ComposerStaticInit3984c88c5542fb513530dd03c098a3b4
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
@@ -129,6 +129,7 @@ class ComposerStaticInit3984c88c5542fb513530dd03c098a3b4
129
  'TEC\\Tickets\\Commerce\\Notice_Handler' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Notice_Handler.php',
130
  'TEC\\Tickets\\Commerce\\Order' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Order.php',
131
  'TEC\\Tickets\\Commerce\\Payments_Tab' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Payments_Tab.php',
 
132
  'TEC\\Tickets\\Commerce\\Provider' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Provider.php',
133
  'TEC\\Tickets\\Commerce\\Reports\\Attendance_Totals' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Reports/Attendance_Totals.php',
134
  'TEC\\Tickets\\Commerce\\Reports\\Attendees' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Reports/Attendees.php',
@@ -199,9 +200,9 @@ class ComposerStaticInit3984c88c5542fb513530dd03c098a3b4
199
  public static function getInitializer(ClassLoader $loader)
200
  {
201
  return \Closure::bind(function () use ($loader) {
202
- $loader->prefixLengthsPsr4 = ComposerStaticInit3984c88c5542fb513530dd03c098a3b4::$prefixLengthsPsr4;
203
- $loader->prefixDirsPsr4 = ComposerStaticInit3984c88c5542fb513530dd03c098a3b4::$prefixDirsPsr4;
204
- $loader->classMap = ComposerStaticInit3984c88c5542fb513530dd03c098a3b4::$classMap;
205
 
206
  }, null, ClassLoader::class);
207
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitad38379fa06ea34b7130e18f8a365a72
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
129
  'TEC\\Tickets\\Commerce\\Notice_Handler' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Notice_Handler.php',
130
  'TEC\\Tickets\\Commerce\\Order' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Order.php',
131
  'TEC\\Tickets\\Commerce\\Payments_Tab' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Payments_Tab.php',
132
+ 'TEC\\Tickets\\Commerce\\Promoter_Observer' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Promoter_Observer.php',
133
  'TEC\\Tickets\\Commerce\\Provider' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Provider.php',
134
  'TEC\\Tickets\\Commerce\\Reports\\Attendance_Totals' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Reports/Attendance_Totals.php',
135
  'TEC\\Tickets\\Commerce\\Reports\\Attendees' => __DIR__ . '/../..' . '/src/Tickets/Commerce/Reports/Attendees.php',
200
  public static function getInitializer(ClassLoader $loader)
201
  {
202
  return \Closure::bind(function () use ($loader) {
203
+ $loader->prefixLengthsPsr4 = ComposerStaticInitad38379fa06ea34b7130e18f8a365a72::$prefixLengthsPsr4;
204
+ $loader->prefixDirsPsr4 = ComposerStaticInitad38379fa06ea34b7130e18f8a365a72::$prefixDirsPsr4;
205
+ $loader->classMap = ComposerStaticInitad38379fa06ea34b7130e18f8a365a72::$classMap;
206
 
207
  }, null, ClassLoader::class);
208
  }