diff options
Diffstat (limited to 'includes/sys_menu.php')
-rw-r--r-- | includes/sys_menu.php | 352 |
1 files changed, 194 insertions, 158 deletions
diff --git a/includes/sys_menu.php b/includes/sys_menu.php index cb90fb7b..385a6948 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -1,185 +1,221 @@ <?php -use Engelsystem\UserHintsRenderer; -function page_link_to($page = "") { - if ($page == "") { - return '?'; - } - return '?p=' . $page; -} +use Engelsystem\UserHintsRenderer; -function page_link_to_absolute($page) { - return (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . preg_replace("/\?.*$/", '', $_SERVER['REQUEST_URI']) . page_link_to($page); +/** + * @param string $page + * @param array $parameters get parameters + * @return string + */ +function page_link_to($page = '', $parameters = []) +{ + $page = str_replace('_', '-', $page); + return url($page, $parameters); } /** * Render the user hints + * + * @return string */ -function header_render_hints() { - global $user; - - $hints_renderer = new UserHintsRenderer(); - - if (isset($user)) { - $hints_renderer->addHint(admin_new_questions()); - $hints_renderer->addHint(user_angeltypes_unconfirmed_hint()); - $hints_renderer->addHint(render_user_departure_date_hint()); - $hints_renderer->addHint(user_driver_license_required_hint()); - - // Important hints: - $hints_renderer->addHint(render_user_freeloader_hint(), true); - $hints_renderer->addHint(render_user_arrived_hint(), true); - $hints_renderer->addHint(render_user_tshirt_hint(), true); - $hints_renderer->addHint(render_user_dect_hint(), true); - } - - return $hints_renderer->render(); +function header_render_hints() +{ + global $user; + + $hints_renderer = new UserHintsRenderer(); + + if (isset($user)) { + $hints_renderer->addHint(admin_new_questions()); + $hints_renderer->addHint(user_angeltypes_unconfirmed_hint()); + $hints_renderer->addHint(render_user_departure_date_hint()); + $hints_renderer->addHint(user_driver_license_required_hint()); + + // Important hints: + $hints_renderer->addHint(render_user_freeloader_hint(), true); + $hints_renderer->addHint(render_user_arrived_hint(), true); + $hints_renderer->addHint(render_user_tshirt_hint(), true); + $hints_renderer->addHint(render_user_dect_hint(), true); + } + + return $hints_renderer->render(); } /** * Renders the header toolbar containing search, login/logout, user and settings links. + * + * @return string */ -function header_toolbar() { - global $page, $privileges, $user; - - $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(); - if (in_array('user_myshifts', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $page == 'users'); - } - - $user_submenu = make_user_submenu(); - if (count($user_submenu) > 0) { - $toolbar_items[] = toolbar_dropdown('', '', $user_submenu); - } - - return toolbar($toolbar_items, true); +function header_toolbar() +{ + global $page, $privileges, $user; + + $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) && config('registration_enabled')) { + $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(); + if (in_array('user_myshifts', $privileges)) { + $toolbar_items[] = toolbar_item_link( + page_link_to('users', ['action' => 'view']), + ' icon-icon_angel', + $user['Nick'], + $page == 'users' + ); + } + + $user_submenu = make_user_submenu(); + if (count($user_submenu) > 0) { + $toolbar_items[] = toolbar_dropdown('', '', $user_submenu); + } + + return toolbar($toolbar_items, true); } -function make_user_submenu() { - global $privileges, $page; - - $user_submenu = make_langselect(); - - if (in_array('user_settings', $privileges) || in_array('logout', $privileges)) { - $user_submenu[] = toolbar_item_divider(); - } - - if (in_array('user_settings', $privileges)) { - $user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $page == 'user_settings'); - } - - if (in_array('logout', $privileges)) { - $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $page == 'logout'); - } - - return $user_submenu; +/** + * @return array + */ +function make_user_submenu() +{ + global $privileges, $page; + + $user_submenu = make_langselect(); + + if (in_array('user_settings', $privileges) || in_array('logout', $privileges)) { + $user_submenu[] = toolbar_item_divider(); + } + + if (in_array('user_settings', $privileges)) { + $user_submenu[] = toolbar_item_link( + page_link_to('user_settings'), + 'list-alt', + settings_title(), + $page == 'user_settings' + ); + } + + if (in_array('logout', $privileges)) { + $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $page == 'logout'); + } + + return $user_submenu; } -function make_navigation() { - global $page, $privileges; - - $menu = []; - $pages = [ - "news" => news_title(), - "user_meetings" => meetings_title(), - "user_shifts" => shifts_title(), - "angeltypes" => angeltypes_title(), - "user_questions" => questions_title() - ]; - - foreach ($pages as $menu_page => $title) { - if (in_array($menu_page, $privileges)) { - $menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); - } - } - - $menu = make_room_navigation($menu); - - $admin_menu = []; - $admin_pages = [ - "admin_arrive" => admin_arrive_title(), - "admin_active" => admin_active_title(), - "admin_user" => admin_user_title(), - "admin_free" => admin_free_title(), - "admin_questions" => admin_questions_title(), - "shifttypes" => shifttypes_title(), - "admin_shifts" => admin_shifts_title(), - "admin_rooms" => admin_rooms_title(), - "admin_groups" => admin_groups_title(), - "admin_import" => admin_import_title(), - "admin_log" => admin_log_title(), - "admin_event_config" => event_config_title() - ]; - - foreach ($admin_pages as $menu_page => $title) { - if (in_array($menu_page, $privileges)) { - $admin_menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); - } - } - - if (count($admin_menu) > 0) { - $menu[] = toolbar_dropdown('', _("Admin"), $admin_menu); - } - - return toolbar($menu); +/** + * @return string + */ +function make_navigation() +{ + global $page, $privileges; + + $menu = []; + $pages = [ + 'news' => news_title(), + 'user_meetings' => meetings_title(), + 'user_shifts' => shifts_title(), + 'angeltypes' => angeltypes_title(), + 'user_questions' => questions_title() + ]; + + foreach ($pages as $menu_page => $title) { + if (in_array($menu_page, $privileges)) { + $menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + } + } + + $menu = make_room_navigation($menu); + + $admin_menu = []; + $admin_pages = [ + 'admin_arrive' => admin_arrive_title(), + 'admin_active' => admin_active_title(), + 'admin_user' => admin_user_title(), + 'admin_free' => admin_free_title(), + 'admin_questions' => admin_questions_title(), + 'shifttypes' => shifttypes_title(), + 'admin_shifts' => admin_shifts_title(), + 'admin_rooms' => admin_rooms_title(), + 'admin_groups' => admin_groups_title(), + 'admin_import' => admin_import_title(), + 'admin_log' => admin_log_title(), + 'admin_event_config' => event_config_title() + ]; + + foreach ($admin_pages as $menu_page => $title) { + if (in_array($menu_page, $privileges)) { + $admin_menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + } + } + + if (count($admin_menu) > 0) { + $menu[] = toolbar_dropdown('', _('Admin'), $admin_menu); + } + + return toolbar($menu); } /** * Adds room navigation to the given menu. * - * @param string[] $menu - * Rendered menu + * @param string[] $menu Rendered menu + * @return string[] */ -function make_room_navigation($menu) { - global $privileges; - - if (! in_array('view_rooms', $privileges)) { +function make_room_navigation($menu) +{ + global $privileges; + + if (!in_array('view_rooms', $privileges)) { + return $menu; + } + + // Get a list of all rooms + $rooms = Rooms(true); + $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) { + if ( + $room['show'] == 'Y' // room is public + || ( + // room is not public, but user can admin_rooms + $room['show'] != 'Y' + && in_array('admin_rooms', $privileges) + ) + ) { + $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; - } - - //get a list of all rooms - $rooms = Rooms(true); - - $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) { - if($room['show'] == 'Y' || // room is public - ($room['show'] != 'Y' && in_array('admin_rooms', $privileges)) // room is not public, but user can admin_rooms - ) { - $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(); +/** + * @return string + */ +function make_menu() +{ + return make_navigation(); } - -?> |