Tribe__Events__Filterbar__Settings
Source
File: src/Tribe/Settings.php
class Tribe__Events__Filterbar__Settings { const OPTION_ACTIVE_FILTERS = 'tribe_events_filters_current_active_filters'; public function set_hooks() { add_action( 'admin_enqueue_scripts', array( $this, 'addAdminScriptsAndStyles' ) ); add_action( 'tribe_settings_do_tabs', array( $this, 'addSettingsTab' ), 10, 0 ); add_action( 'tribe_settings_after_content_tab_filter-view', array( $this, 'addSettingsContent' ) ); add_action( 'tribe_settings_save_tab_filter-view', array( $this, 'save_settings_tab' ), 10, 0 ); add_action( 'wp_before_admin_bar_render', array( $this, 'add_toolbar_item' ), 12 ); add_filter( 'tribe_field_tooltip', array( $this, 'accessibility_notification' ), 10, 2 ); } public function addAdminScriptsAndStyles() { global $current_screen; // settings screen if ( isset( $current_screen->id ) && $current_screen->id == 'tribe_events_page_' . Tribe__Settings::$parent_slug ) { wp_enqueue_style( 'TribeEventsFilterAdmin-css', Tribe__Events__Filterbar__View::instance()->pluginUrl . 'src/resources/css/filter-admin.css', array(), apply_filters( 'tribe_events_filters_css_version', Tribe__Events__Filterbar__View::VERSION ) ); } } /** * Add the Filters settings tab. * * @return void */ public function addSettingsTab() { $fields = $this->get_field_definitions(); new Tribe__Settings_Tab( 'filter-view', __( 'Filters', 'tribe-events-filter-view' ), array( 'priority' => 36, 'fields' => $fields ) ); } /** * Add the content to the settings tab. * * @return void */ public function addSettingsContent() { require_once( Tribe__Events__Filterbar__View::plugin_path( 'src/admin-views/tribe-filter-view-options.php' ) ); } public function render_available_filters_box() { $filters = Tribe__Events__Filterbar__View::instance()->get_registered_filters(); $current_filters = Tribe__Events__Filterbar__View::instance()->get_active_filters(); include( Tribe__Events__Filterbar__View::plugin_path( 'src/admin-views/settings-field-available-filters.php' ) ); } public function render_active_filters_box() { $filters = Tribe__Events__Filterbar__View::instance()->get_registered_filters(); $sorted_filters = array(); foreach ( Tribe__Events__Filterbar__View::instance()->get_active_filters() as $slug ) { if ( isset( $filters[ $slug ] ) ) { $sorted_filters[ $slug ] = $filters[ $slug ]; unset( $filters[ $slug ] ); } } $filters = array_merge( $sorted_filters, $filters ); include( Tribe__Events__Filterbar__View::plugin_path( 'src/admin-views/settings-field-active-filters.php' ) ); } /** * Save submitted settings from the filters tab * @return void */ public function save_settings_tab() { $active_filters = array(); $active_filter_slugs = (array) ( isset( $_POST['tribe_active_filters'] ) ? $_POST['tribe_active_filters'] : array() ); foreach ( $active_filter_slugs as $filter_slug ) { $filter_options = (array) ( isset( $_POST['tribe_filter_options'][ $filter_slug ] ) ? $_POST['tribe_filter_options'][ $filter_slug ] : array() ); $active_filters[ $filter_slug ] = $filter_options; } uasort( $active_filters, array( $this, 'compare_filters_by_priority' ) ); update_option( self::OPTION_ACTIVE_FILTERS, $active_filters ); } private function compare_filters_by_priority( $a, $b ) { if ( $a['priority'] == $b['priority'] ) { return 0; } return ( $a['priority'] < $b['priority'] ) ? -1 : 1; } private function get_field_definitions() { $fields = array( 'events_filters_section_title' => array( 'type' => 'html', 'html' => '<h3>' . __( 'Filters', 'tribe-events-filter-view' ) . '</h3>', ), 'events_filters_section_description' => array( 'type' => 'html', 'html' => '<p class="description">' . __( 'The settings below allow you to enable or disable front-end event filters. Uncheck the box to hide the filter. Drag and drop active filters to re-arrange them.', 'tribe-events-filter-view' ) . '</p> <p class="description">' . __( 'Expand an active filter to edit the label and choose from a subset of input types (dropdown, select, range slider, checkbox and radio).', 'tribe-events-filter-view' ) . '</p>', ), 'events_filters_available_filters' => array( 'type' => 'html', 'display_callback' => array( $this, 'render_available_filters_box' ), ), 'events_filters_active_filters' => array( 'type' => 'html', 'display_callback' => array( $this, 'render_active_filters_box' ), ), 'events_filters_layout' => array( 'type' => 'radio', 'label' => __( 'Filters Layout', 'tribe-events-filter-view' ), 'default' => 'vertical', 'options' => array( 'vertical' => __( 'Vertical', 'tribe-events-filter-view' ), 'horizontal' => __( 'Horizontal', 'tribe-events-filter-view' ), ), 'validation_type' => 'options', ), 'events_filters_default_state' => array( 'type' => 'radio', 'label' => __( 'Filter Bar default state', 'tribe-events-filter-view' ), 'default' => 'closed', 'options' => array( 'closed' => __( 'Stay collapsed until visitors open it', 'tribe-events-filter-view' ), 'open' => __( 'Show on initial page load', 'tribe-events-filter-view' ), ), 'validation_type' => 'options', ), ); $fields = apply_filters( 'tribe-event-filters-settings-fields', $fields ); return $fields; } /** * Adds a link to the Filter Settings tab in the admin toolbar. */ public function add_toolbar_item() { global $wp_admin_bar; $parent = 'tribe-events-settings'; $link = Tribe__Settings::instance()->get_url( array( 'tab' => 'filter-view' ) ); if ( ! current_user_can( 'manage_options' ) || null === $wp_admin_bar->get_node( $parent ) ) return; $wp_admin_bar->add_menu( array( 'id' => 'tribe-events-filter-settings', 'parent' => $parent, 'href' => $link, 'title' => __( 'Filter Bar', 'tribe-events-filter-view' ), ) ); } /** * Modifies the General Tab Ajax Option to alert users of a11y concerns by having this turned on */ public function accessibility_notification( $return, $text ) { if ( $text === 'liveFiltersUpdate' ) { $return .= __( ' (Note: When Live Refresh is enabled, TEC functionality may not be fully compliant with Web Accessibility Standards)', 'tribe-events-filter-view' ); } return $return; } }
Methods
- accessibility_notification — Modifies the General Tab Ajax Option to alert users of a11y concerns by having this turned on
- add_links_to_plugin_actions — Add Filter Bar settings link the the plugin admin list.
- add_toolbar_item — Adds a link to the Filter Settings tab in the admin toolbar.
- addAdminScriptsAndStyles
- addSettingsContent — Add the content to the settings tab.
- addSettingsTab — Add the Filters settings tab.
- filter_live_update_tooltip — Modifies the Live update tooltip properly.
- liveupdate_automatic_label_text — Modify the live update label when Filterbar Is active and is automatic.
- liveupdate_manual_label_text — Modify the live update label when Filterbar Is active and is manual.
- render_active_filters_box
- render_available_filters_box
- save_settings_tab — Save submitted settings from the filters tab
- set_hooks