diff options
Diffstat (limited to 'includes/sys_menu.php')
-rw-r--r-- | includes/sys_menu.php | 86 |
1 files changed, 63 insertions, 23 deletions
diff --git a/includes/sys_menu.php b/includes/sys_menu.php index 112c490f..d8a81324 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -12,29 +12,9 @@ function page_link_to_absolute($page) { } /** - * Renders the header toolbar containing search, login/logout, user and settings links. + * Render the user hints */ -function header_toolbar() { - global $page, $privileges, $user, $enable_tshirt_size, $max_freeloadable_shifts; - - $toolbar_items = []; - - if (isset($user)) { - $toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user)); - } - - if (! isset($user) && in_array('register', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register'); - } - - if (in_array('login', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login'); - } - - if (isset($user) && in_array('user_messages', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); - } - +function header_render_hints($user, $page, $enable_tshirt_size) { $hints = []; if (isset($user)) { $hint_class = 'info'; @@ -87,9 +67,37 @@ function header_toolbar() { } } if (count($hints) > 0) { - $toolbar_items[] = toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class); + return toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class); + } + return ''; +} + +/** + * Renders the header toolbar containing search, login/logout, user and settings links. + */ +function header_toolbar() { + global $page, $privileges, $user, $enable_tshirt_size, $max_freeloadable_shifts; + + $toolbar_items = []; + + if (isset($user)) { + $toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user)); + } + + if (! isset($user) && in_array('register', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register'); + } + + if (in_array('login', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login'); + } + + if (isset($user) && in_array('user_messages', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); } + $toolbar_items[] = header_render_hints($user, $page, $enable_tshirt_size); + $user_submenu = make_langselect(); $user_submenu[] = toolbar_item_divider(); if (in_array('user_myshifts', $privileges)) { @@ -129,6 +137,8 @@ function make_navigation() { } } + $menu = make_room_navigation($menu); + $admin_menu = []; $admin_pages = [ "admin_arrive" => admin_arrive_title(), @@ -158,6 +168,36 @@ function make_navigation() { return toolbar($menu); } +/** + * Adds room navigation to the given menu. + * + * @param string[] $menu + * Rendered menu + */ +function make_room_navigation($menu) { + global $privileges; + + if (! in_array('view_rooms', $privileges)) { + return $menu; + } + + $rooms = Rooms(); + $room_menu = []; + if (in_array('admin_rooms', $privileges)) { + $room_menu[] = toolbar_item_link(page_link_to('admin_rooms'), 'list', _("Manage rooms")); + } + if (count($room_menu) > 0) { + $room_menu[] = toolbar_item_divider(); + } + foreach ($rooms as $room) { + $room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']); + } + if (count($room_menu > 0)) { + $menu[] = toolbar_dropdown('map-marker', _("Rooms"), $room_menu); + } + return $menu; +} + function make_menu() { return make_navigation(); } |