esc_html__( 'Default Events Template', 'the-events-calendar' ), 'default' => esc_html__( 'Default Page Template', 'the-events-calendar' ), ]; $templates = get_page_templates(); ksort( $templates ); foreach ( array_keys( $templates ) as $template ) { $template_options[ $templates[ $template ] ] = $template; } $stylesheet_choices = [ 'skeleton' => __( 'Skeleton Styles', 'the-events-calendar' ) . '

' . __( 'Only includes enough css to achieve complex layouts like calendar and week view.', 'the-events-calendar' ) .'

', 'full' => __( 'Full Styles', 'the-events-calendar' ) . '

' . __( 'More detailed styling, tries to grab styles from your theme.', 'the-events-calendar' ) . '

', 'tribe' => __( 'Tribe Events Styles', 'the-events-calendar' ) . '

' . __( 'A fully designed and styled theme for your events pages.', 'the-events-calendar' ) . '

', ]; // If V2 is enabled, we don't show the (redundant) 'full' option if ( tribe_events_views_v2_is_enabled() ) { unset( $stylesheet_choices[ 'full' ] ) ; } $stylesheet_option = [ 'type' => 'radio', 'label' => __( 'Default stylesheet used for events templates', 'the-events-calendar' ), 'default' => 'tribe', 'options' => $stylesheet_choices, 'validation_type' => 'options', ]; $stylesheet_mode = [ 'type' => 'html']; // If V2 is enabled, we swap the options so we don't overwrite. For backwards compatibility. if ( tribe_events_views_v2_is_enabled() ) { $stylesheet_mode = $stylesheet_option; $stylesheet_option = [ 'type' => 'html' ]; } /** * Filter the array of views that are registered for the tribe bar * @param array array() { * Array of views, where each view is itself represented by an associative array consisting of these keys: * * @type string $displaying slug for the view * @type string $anchor display text (i.e. "List" or "Month") * @type string $event_bar_hook not used * @type string $url url to the view * } * @param boolean */ $views = apply_filters( 'tribe-events-bar-views', [], false ); $enabled_views = tribe_get_option( 'tribeEnableViews', [] ); $views_options = []; $enabled_views_options = []; foreach ( $views as $view ) { // Only include the enabled views on the default views array if ( in_array( $view['displaying'], $enabled_views ) ) { $enabled_views_options[ $view['displaying'] ] = $view['anchor']; } $views_options[ $view['displaying'] ] = $view['anchor']; } $display_tab_fields = Tribe__Main::array_insert_before_key( 'tribe-form-content-start', $display_tab_fields, [ 'info-start' => [ 'type' => 'html', 'html' => '
', ], 'info-box-title' => [ 'type' => 'html', 'html' => '

' . __( 'Display Settings', 'the-events-calendar' ) . '

', ], 'info-box-description' => [ 'type' => 'html', 'html' => '

' . __( 'The settings below control the display of your calendar. If things don\'t look right, try switching between the three style sheet options or pick a page template from your theme.', 'the-events-calendar' ) . '

' . sprintf( /* translators: %s: URL to knowledgebase. Please also use % for % to avoid PHP warnings. */ __( 'There are going to be situations where no out-of-the-box template is 100% perfect. Check out our our themer\'s guide for instructions on custom modifications.', 'the-events-calendar' ), Tribe__Main::$tec_url . 'knowledgebase/themers-guide/?utm_medium=plugin-tec&utm_source=generaltab&utm_campaign=in-app' ) . '

', ], 'info-end' => [ 'type' => 'html', 'html' => '
', ], ] ); $display_tab_fields = Tribe__Main::array_insert_before_key( 'datepickerFormat', $display_tab_fields, [ 'dateWithYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Date with year', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the format to use for displaying dates with the year. Used when displaying a date in a future year.', 'the-events-calendar' ), 'default' => get_option( 'date_format' ), 'size' => 'medium', 'validation_type' => 'not_empty', ], 'dateTimeSeparator' => [ 'type' => 'text', 'label' => esc_html__( 'Date time separator', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the separator that will be placed between the date and time, when both are shown.', 'the-events-calendar' ), 'default' => ' @ ', 'size' => 'small', 'validation_type' => 'html', ], ] ); $display_tab_fields = Tribe__Main::array_insert_after_key( 'dateWithYearFormat', $display_tab_fields, [ 'dateWithoutYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Date without year', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the format to use for displaying dates without a year. Used when showing an event from the current year.', 'the-events-calendar' ), 'default' => 'F j', 'size' => 'medium', 'validation_type' => 'not_empty', ], 'monthAndYearFormat' => [ 'type' => 'text', 'label' => esc_html__( 'Month and year format', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the format to use for dates that show a month and year only. Used on month view.', 'the-events-calendar' ), 'default' => 'F Y', 'size' => 'medium', 'validation_type' => 'not_empty', ], ] ); $display_tab_fields = Tribe__Main::array_insert_after_key( 'dateTimeSeparator', $display_tab_fields, [ 'timeRangeSeparator' => [ 'type' => 'text', 'label' => esc_html__( 'Time range separator', 'the-events-calendar' ), 'tooltip' => esc_html__( 'Enter the separator that will be used between the start and end time of an event.', 'the-events-calendar' ), 'default' => ' - ', 'size' => 'small', 'validation_type' => 'html', ], ] ); $tribe_enable_views_tooltip = esc_html__( 'You must select at least one view.', 'the-events-calendar' ); if ( tribe_is_using_basic_gmaps_api() && class_exists( 'Tribe__Events__Pro__Main' ) ) { $tribe_enable_views_tooltip .= ' ' . sprintf( __( 'Please note that you are using The Events Calendar\'s default Google Maps API key, which will limit the Map View\'s functionality. Visit %sthe API Settings page%s to learn more and add your own Google Maps API key.', 'the-events-calendar' ), sprintf( '', Tribe__Events__Main::POSTTYPE ), '' ); } $display_tab_fields = Tribe__Main::array_insert_before_key( 'tribeEventsDateFormatSettingsTitle', $display_tab_fields, [ 'tribeEventsBasicSettingsTitle' => [ 'type' => 'html', 'html' => '

' . __( 'Basic Template Settings', 'the-events-calendar' ) . '

', ], 'stylesheetOption' => $stylesheet_option, 'stylesheet_mode' => $stylesheet_mode, 'tribeEventsTemplate' => [ 'type' => 'dropdown', 'label' => __( 'Events template', 'the-events-calendar' ), 'tooltip' => __( 'Choose a page template to control the appearance of your calendar and event content.', 'the-events-calendar' ), 'validation_type' => 'options', 'size' => 'small', 'default' => 'default', 'options' => $template_options, ], 'tribeEnableViews' => [ 'type' => 'checkbox_list', 'label' => __( 'Enable event views', 'the-events-calendar' ), 'tooltip' => $tribe_enable_views_tooltip, 'default' => array_keys( $views_options ), 'options' => $views_options, 'validation_type' => 'options_multi', ], ] ); if ( tribe( 'tec.main' )->show_upgrade() ) { $display_tab_fields = Tribe__Main::array_insert_before_key( 'tribeEventsDateFormatSettingsTitle', $display_tab_fields, [ 'views_v2_enabled' => [ 'type' => 'checkbox_bool', 'label' => __( 'Use updated calendar designs', 'the-events-calendar' ), 'tooltip' => __( 'Enable updated designs for all calendar views', 'the-events-calendar' ), 'validation_type' => 'boolean', 'default' => false, ], ] ); } $display_tab_fields = Tribe__Main::array_insert_before_key( 'tribeEventsDateFormatSettingsTitle', $display_tab_fields, [ 'viewOption' => [ 'type' => 'dropdown', 'label' => __( 'Default view', 'the-events-calendar' ), 'validation_type' => 'not_empty', 'size' => 'small', 'default' => 'month', 'options' => $enabled_views_options, ], 'tribeDisableTribeBar' => [ 'type' => 'checkbox_bool', 'label' => __( 'Disable the Event Search Bar', 'the-events-calendar' ), 'tooltip' => __( 'Check this to use the classic header.', 'the-events-calendar' ), 'default' => false, 'validation_type' => 'boolean', ], 'monthEventAmount' => [ 'type' => 'text', 'label' => __( 'Month view events per day', 'the-events-calendar' ), 'tooltip' => sprintf( __( 'Change the default 3 events per day in month view. To impose no limit, you may specify -1. Please note there may be performance issues if you allow too many events per day. Read more.', 'the-events-calendar' ), 'https://evnt.is/rh' ), 'validation_type' => 'int', 'size' => 'small', 'default' => '3', ], 'enable_month_view_cache' => [ 'type' => 'checkbox_bool', 'label' => __( 'Enable the Month View Cache', 'the-events-calendar' ), 'tooltip' => sprintf( __( 'Check this to cache your month view HTML in transients, which can help improve calendar speed on sites with many events. Read more.', 'the-events-calendar' ), 'https://evnt.is/18di' ), 'default' => true, 'validation_type' => 'boolean', ], ] ); $display_tab_fields = Tribe__Main::array_insert_after_key( 'datepickerFormat', $display_tab_fields, [ 'tribeEventsAdvancedSettingsTitle' => [ 'type' => 'html', 'html' => '

' . esc_html__( 'Advanced Template Settings', 'the-events-calendar' ) . '

', ], 'tribeEventsBeforeHTML' => [ 'type' => 'wysiwyg', 'label' => esc_html__( 'Add HTML before event content', 'the-events-calendar' ), 'tooltip' => esc_html__( 'If you are familiar with HTML, you can add additional code before the event template. Some themes may require this to help with styling or layout.', 'the-events-calendar' ), 'validation_type' => 'html', ], 'tribeEventsAfterHTML' => [ 'type' => 'wysiwyg', 'label' => esc_html__( 'Add HTML after event content', 'the-events-calendar' ), 'tooltip' => esc_html__( 'If you are familiar with HTML, you can add additional code after the event template. Some themes may require this to help with styling or layout.', 'the-events-calendar' ), 'validation_type' => 'html', ], ] );