PluginProbe
Booking Calendar / 11.8.4
Booking Calendar v11.8.4
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 10.11 All 204 releases
booking / includes / ui_settings / parts / ui__nav_horis.php

ui__nav_horis.php in Booking Calendar 11.8.4, at includes/ui_settings/parts/ui__nav_horis.php

211 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Admin Panel UI - Parts
4 *
5 * @version 1.2
6 * @package Any
7 * @category Page Structure in Admin Panel
8 * @author wpdevelop
9 *
10 * @web-site https://wpbookingcalendar.com/
11 * @email info@wpbookingcalendar.com
12 *
13 * @modified 2025-03-20
14 */
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit; // Exit, if accessed directly.
18 }
19
20 /**
21 * Show Top Horisontal Navigation Bar
22 *
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.
26 *
27 * @return void
28 */
29 function wpbc_ui__top_horisontal_nav( $args =array() ) {
30
31 $defaults = array(
32 'attr' => array(),
33 );
34 $params = wp_parse_args( $args, $defaults );
35
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 }
50
51 // Available Main Menu - slug => titles.
52 $show_these_pages_arr = array(
53 'wpbc' => __( 'Bookings', 'booking' ),
54 'wpbc-availability' => __( 'Availability', 'booking' ),
55 'wpbc-prices' => __( 'Prices', 'booking' ),
56 'wpbc-resources' => __( 'Resources', 'booking' ),
57 'wpbc-settings' => __( 'Settings', 'booking' ),
58 'wpbc-setup' => __( 'Setup', 'booking' ),
59 );
60 // Ability to click on panel, only if there 'min' class - panel minimized!
61 echo '<div class="wpbc_ui_el__horis_top_bar__wrapper">';
62
63 echo ' <div class="wpbc_ui_el__horis_top_bar__content">';
64
65 $main_page_slug = $active_page_arr['active_page'];
66 $page_title = $show_these_pages_arr[ $main_page_slug ];
67
68 // Loop to show all main sections in horisontal menu.
69 foreach ( $show_these_pages_arr as $main_page_slug => $page_title ) {
70
71 // Show only active page settings list.
72 if ( $main_page_slug !== $active_page_arr['active_page'] ) {
73 continue;
74 }
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 }
88
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
98
99 wpbc_ui__horis_menu__item_main( $main_menu_slug, $menu_item_arr );
100
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
102 }
103 do_action( 'hook__wpbc_ui__top_horisontal_nav__end', $active_page_arr['active_page'], $active_page_arr['active_tab'] ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
104
105 // wpbc_ui_el__divider_vertical();
106 } // Loop to show all main sections in horisontal menu.
107 echo ' </div><!-- wpbc_ui_el__horis_top_bar__content -->';
108
109 echo '</div><!-- wpbc_ui_el__horis_top_bar__wrapper -->';
110 }
111
112
113 /**
114 * Remove New labels from titles rendered in the top horizontal navigation.
115 *
116 * @param string $title Horizontal navigation title.
117 *
118 * @return string
119 */
120 function wpbc_ui__horis_menu__item_main__remove_new_label( $title ) {
121
122 if ( ! is_string( $title ) || '' === $title ) {
123 return $title;
124 }
125
126 $filtered_title = preg_replace(
127 '/<span\b[^>]*\bclass\s*=\s*(["\'])[^"\']*\bwpbc_new_label\b[^"\']*\1[^>]*>.*?<\/span>(?:\s|&nbsp;)*/is',
128 '',
129 $title
130 );
131
132 return ( null === $filtered_title ) ? $title : $filtered_title;
133 }
134 add_filter( 'wpbc_ui__horis_menu__item_main__title', 'wpbc_ui__horis_menu__item_main__remove_new_label', PHP_INT_MAX );
135
136
137 /**
138 * Show Horisontal - "Menu Item".
139 *
140 * @param string $menu_slug - 'calendar_appearance'.
141 * @param array $menu_item_arr - [ [title] => Skin
142 * [page_title] => Calendar General Settings 3
143 * [hint] => Calendar General Settings 2
144 * [link] =>
145 * [position] =>
146 * [css_classes] =>
147 * [folder_style] => order:93;
148 * [icon] =>
149 * [font_icon] => wpbc-bi-calendar2-range
150 * [default] =>
151 * [disabled] =>
152 * [hided] =>
153 * [top_navigation_hidden] =>
154 * [is_active] => 1
155 * [url] => http://beta/wp-admin/admin.php?page=wpbc-settings&#038;tab=calendar_appearance
156 * [subtabs] => [....]
157 * ]
158 *
159 * @return void
160 */
161 function wpbc_ui__horis_menu__item_main( $menu_slug, $menu_item_arr ) {
162
163 $defaults = 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(),
180 );
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.
183
184 /**
185 * Filter the title displayed in the top horizontal navigation.
186 *
187 * @param string $title Horizontal navigation title.
188 * @param string $menu_slug Menu item slug.
189 * @param array $menu_item_arr Complete menu item configuration.
190 */
191 $menu_item_arr['title'] = apply_filters( 'wpbc_ui__horis_menu__item_main__title', $menu_item_arr['title'], $menu_slug, $menu_item_arr );
192
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 ); ?>">
195 <?php
196 // Single Item.
197 ?>
198 <a href="<?php echo esc_url( $menu_item_arr['url'] ); ?>"
199 class="wpbc_ui_el__horis_nav_item__a wpbc_ui_el__horis_nav_item__single">
200 <?php if ( ! empty( $menu_item_arr['font_icon'] ) ) { ?>
201 <i class="wpbc_ui_el__horis_nav_icon tooltip_top menu_icon icon-1x <?php echo esc_attr( $menu_item_arr['font_icon'] ); ?>"
202 data-original-title="<?php echo esc_attr( $menu_item_arr['title'] ); ?>"></i>
203 <?php } ?>
204 <span class="wpbc_ui_el__horis_nav_title"><?php
205 echo wp_kses_post( $menu_item_arr['title'] );
206 ?></span>
207 </a>
208 </div>
209 <?php
210 }
211