user(); $hints_renderer = new UserHintsRenderer(); if ($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(); } /** * Returns the path of the current path with underscores instead of hyphens * * @return string */ function current_page() { return request()->query->get('p') ?: str_replace('-', '_', request()->path()); } /** * @return array */ function make_user_submenu() { $page = current_page(); $user_submenu = make_language_select(); if (auth()->can('user_settings') || auth()->can('logout')) { $user_submenu[] = toolbar_item_divider(); } if (auth()->can('user_settings')) { $user_submenu[] = toolbar_item_link( page_link_to('user_settings'), 'list-alt', __('Settings'), $page == 'user_settings' ); } if (auth()->can('logout')) { $user_submenu[] = toolbar_item_link( page_link_to('logout'), 'log-out', __('Logout'), $page == 'logout' ); } return $user_submenu; } /** * @return string */ function make_navigation() { $page = current_page(); $menu = []; $pages = [ 'news' => __('News'), 'user_meetings' => __('Meetings'), 'user_shifts' => __('Shifts'), 'angeltypes' => __('Angeltypes'), 'user_questions' => __('Ask the Heaven'), ]; foreach ($pages as $menu_page => $title) { if (auth()->can($menu_page)) { $menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); } } $menu = make_room_navigation($menu); $admin_menu = []; $admin_pages = [ 'admin_arrive' => 'Arrived angels', 'admin_active' => 'Active angels', 'admin_user' => 'All Angels', 'admin_free' => 'Free angels', 'admin_questions' => 'Answer questions', 'shifttypes' => 'Shifttypes', 'admin_shifts' => 'Create shifts', 'admin_rooms' => 'Rooms', 'admin_groups' => 'Grouprights', 'admin-schedule' => ['schedule.import', 'schedule.import'], 'admin_log' => 'Log', 'admin_event_config' => 'Event config', ]; if (config('autoarrive')) { unset($admin_pages['admin_arrive']); } foreach ($admin_pages as $menu_page => $options) { $options = (array)$options; $permissions = $menu_page; $title = $options[0]; if (isset($options[1])) { $permissions = $options[1]; } if (auth()->can($permissions)) { $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 ''; } /** * Adds room navigation to the given menu. * * @param string[] $menu Rendered menu * @return string[] */ function make_room_navigation($menu) { if (!auth()->can('view_rooms')) { return $menu; } // Get a list of all rooms $rooms = Rooms(); $room_menu = []; if (auth()->can('admin_rooms')) { $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; } /** * Renders language selection. * * @return array */ function make_language_select() { $request = app('request'); $activeLocale = session()->get('locale'); $items = []; foreach (config('locales') as $locale => $name) { $url = url($request->getPathInfo(), ['set-locale' => $locale]); $items[] = toolbar_item_link( htmlspecialchars($url), '', $name, $locale == $activeLocale ); } return $items; }