summaryrefslogtreecommitdiff
path: root/includes/sys_menu.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/sys_menu.php')
-rw-r--r--includes/sys_menu.php86
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();
}