PluginProbe
Booking Calendar / 11.9
Booking Calendar v11.9
11.9 11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 All 205 releases
← All changes | includes/ui_settings/parts/ui__nav_horis.php +69 -37 11.4.1 → 11.9 View file →
@@ -19,9 +19,11 @@
19 19
20 20 /**
21 21 * Show Top Horisontal Navigation Bar
22 22 *
23 - * @param array $args - parameters.
23 + * @param array $args Navigation parameters. An active tab can set
24 + * top_navigation_use_subtabs to render its subtabs in this
25 + * bar instead of every top-level tab on the page.
24 26 *
25 27 * @return void
26 28 */
27 29 function wpbc_ui__top_horisontal_nav( $args =array() ) {
@@ -30,26 +32,33 @@
30 32 'attr' => array(),
31 33 );
32 34 $params = wp_parse_args( $args, $defaults );
33 35
34 - $active_page_arr = array(
35 - 'active_page' => $args['active_page'], // wpbc-settings.
36 - 'active_tab' => $args ['active_tab'], // calendar_appearance.
37 - 'active_subtab' => $args['active_subtab'], // calendar_appearance_skin.
38 - );
36 + $active_page_arr = array(
37 + 'active_page' => $args['active_page'], // wpbc-settings.
38 + 'active_tab' => $args ['active_tab'], // calendar_appearance.
39 + 'active_subtab' => $args['active_subtab'], // calendar_appearance_skin.
40 + );
41 +
42 + if ( function_exists( 'wpbc_booking_modes_v3_compile_horizontal_navigation' ) ) {
43 + $args['page_nav_tabs'] = wpbc_booking_modes_v3_compile_horizontal_navigation(
44 + $args['page_nav_tabs'],
45 + $active_page_arr['active_page'],
46 + $active_page_arr['active_tab'],
47 + $active_page_arr['active_subtab']
48 + );
49 + }
39 50
40 51 // Available Main Menu - slug => titles.
41 - $show_these_pages_arr = array(
52 + $show_these_pages_arr = array(
42 53 'wpbc' => __( 'Bookings', 'booking' ),
43 54 'wpbc-availability' => __( 'Availability', 'booking' ),
44 55 'wpbc-prices' => __( 'Prices', 'booking' ),
45 56 'wpbc-resources' => __( 'Resources', 'booking' ),
46 57 'wpbc-settings' => __( 'Settings', 'booking' ),
47 - 'wpbc-setup' => __( 'Setup', 'booking' ),
48 - );
49 -
50 -
51 - // Ability to click on panel, only if there 'min' class - panel minimized!
58 + 'wpbc-setup' => __( 'Setup', 'booking' ),
59 + );
60 + // Ability to click on panel, only if there 'min' class - panel minimized!
52 61 echo '<div class="wpbc_ui_el__horis_top_bar__wrapper">';
53 62
54 63 echo ' <div class="wpbc_ui_el__horis_top_bar__content">';
55 64
@@ -62,15 +71,32 @@
62 71 // Show only active page settings list.
63 72 if ( $main_page_slug !== $active_page_arr['active_page'] ) {
64 73 continue;
65 74 }
66 - $page_item_arr = $args['page_nav_tabs'][ $main_page_slug ];
75 + $page_item_arr = $args['page_nav_tabs'][ $main_page_slug ];
76 + $active_tab = isset( $page_item_arr[ $active_page_arr['active_tab'] ] ) && is_array( $page_item_arr[ $active_page_arr['active_tab'] ] )
77 + ? $page_item_arr[ $active_page_arr['active_tab'] ]
78 + : array();
79 +
80 + // Some focused settings pages use their subtabs as the horizontal page-level navigation.
81 + if (
82 + ! empty( $active_tab['top_navigation_use_subtabs'] )
83 + && ! empty( $active_tab['subtabs'] )
84 + && is_array( $active_tab['subtabs'] )
85 + ) {
86 + $page_item_arr = $active_tab['subtabs'];
87 + }
67 88
68 - do_action( 'hook__wpbc_ui__top_horisontal_nav__start', $active_page_arr['active_page'], $active_page_arr['active_tab'] ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
89 + do_action( 'hook__wpbc_ui__top_horisontal_nav__start', $active_page_arr['active_page'], $active_page_arr['active_tab'] ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
90 +
91 + foreach ( $page_item_arr as $main_menu_slug => $menu_item_arr ) {
92 + // Legacy hided/disabled flags control other navigation surfaces; the top bar uses its own explicit flag.
93 + if ( ! empty( $menu_item_arr['top_navigation_hidden'] ) ) {
94 + continue;
95 + }
96 +
97 + do_action( 'hook__wpbc_ui__top_horisontal_nav__item_start', $active_page_arr['active_page'], $active_page_arr['active_tab'], $main_menu_slug ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
69 98
70 - foreach ( $page_item_arr as $main_menu_slug => $menu_item_arr ) {
71 - do_action( 'hook__wpbc_ui__top_horisontal_nav__item_start', $active_page_arr['active_page'], $active_page_arr['active_tab'], $main_menu_slug ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
72 -
73 99 wpbc_ui__horis_menu__item_main( $main_menu_slug, $menu_item_arr );
74 100
75 101 do_action( 'hook__wpbc_ui__top_horisontal_nav__item_end', $active_page_arr['active_page'], $active_page_arr['active_tab'], $main_menu_slug ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
76 102 }
@@ -116,15 +142,17 @@
116 142 * [page_title] => Calendar General Settings 3
117 143 * [hint] => Calendar General Settings 2
118 144 * [link] =>
119 145 * [position] =>
120 - * [css_classes] =>
121 - * [icon] =>
146 + * [css_classes] =>
147 + * [folder_style] => order:93;
148 + * [icon] =>
122 149 * [font_icon] => wpbc-bi-calendar2-range
123 150 * [default] =>
124 - * [disabled] =>
125 - * [hided] =>
126 - * [is_active] => 1
151 + * [disabled] =>
152 + * [hided] =>
153 + * [top_navigation_hidden] =>
154 + * [is_active] => 1
127 155 * [url] => http://beta/wp-admin/admin.php?page=wpbc-settings&#038;tab=calendar_appearance
128 156 * [subtabs] => [....]
129 157 * ]
130 158 *
@@ -132,24 +160,27 @@
132 160 */
133 161 function wpbc_ui__horis_menu__item_main( $menu_slug, $menu_item_arr ) {
134 162
135 163 $defaults = array(
136 - 'title' => '',
137 - 'page_title' => '',
138 - 'hint' => '',
139 - 'link' => '',
140 - 'position' => '',
141 - 'css_classes' => '',
142 - 'icon' => '',
143 - 'font_icon' => '',
144 - 'default' => false,
145 - 'disabled' => false,
146 - 'hided' => false,
147 - 'is_active' => 0,
148 - 'url' => '',
149 - 'subtabs' => array(),
164 + 'title' => '',
165 + 'page_title' => '',
166 + 'hint' => '',
167 + 'link' => '',
168 + 'position' => '',
169 + 'css_classes' => '',
170 + 'folder_style' => '',
171 + 'icon' => '',
172 + 'font_icon' => '',
173 + 'default' => false,
174 + 'disabled' => false,
175 + 'hided' => false,
176 + 'top_navigation_hidden' => false,
177 + 'is_active' => 0,
178 + 'url' => '',
179 + 'subtabs' => array(),
150 180 );
151 181 $menu_item_arr = wp_parse_args( $menu_item_arr, $defaults );
182 + $folder_style = ( ! empty( $menu_item_arr['folder_style'] ) ) ? esc_attr( $menu_item_arr['folder_style'] ) : ''; // FixIn: 11.4.2.
152 183
153 184 /**
154 185 * Filter the title displayed in the top horizontal navigation.
155 186 *
@@ -158,9 +189,10 @@
158 189 * @param array $menu_item_arr Complete menu item configuration.
159 190 */
160 191 $menu_item_arr['title'] = apply_filters( 'wpbc_ui__horis_menu__item_main__title', $menu_item_arr['title'], $menu_slug, $menu_item_arr );
161 192
162 - ?><div class="wpbc_ui_el__horis_nav_item wpbc_ui_el__horis_nav_item__<?php echo esc_attr( $menu_slug ); ?> <?php echo ( ! empty( $menu_item_arr['is_active'] ) ) ? ' active ' : ''; ?>">
193 + ?><div class="wpbc_ui_el__horis_nav_item wpbc_ui_el__horis_nav_item__<?php echo esc_attr( $menu_slug ); ?> <?php echo ( ! empty( $menu_item_arr['is_active'] ) ) ? ' active ' : ''; ?>"
194 + style="<?php echo esc_attr( $folder_style ); ?>">
163 195 <?php
164 196 // Single Item.
165 197 ?>
166 198 <a href="<?php echo esc_url( $menu_item_arr['url'] ); ?>"