2011-06-02 00:48:29 +02:00
|
|
|
<?php
|
2017-08-28 16:21:10 +02:00
|
|
|
|
2016-11-15 16:28:20 +01:00
|
|
|
use Engelsystem\UserHintsRenderer;
|
2013-10-13 00:52:44 +02:00
|
|
|
|
2017-01-03 03:22:48 +01:00
|
|
|
/**
|
|
|
|
* @param string $page
|
2017-08-28 16:21:10 +02:00
|
|
|
* @param array $parameters get parameters
|
2017-01-03 03:22:48 +01:00
|
|
|
* @return string
|
|
|
|
*/
|
2017-08-28 16:21:10 +02:00
|
|
|
function page_link_to($page = '', $parameters = [])
|
2017-01-02 03:57:23 +01:00
|
|
|
{
|
2017-08-28 16:21:10 +02:00
|
|
|
$page = str_replace('_', '-', $page);
|
2017-08-29 16:21:25 +02:00
|
|
|
return url($page, $parameters);
|
2013-10-13 00:52:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2016-11-14 19:10:29 +01:00
|
|
|
* Render the user hints
|
2017-01-03 03:22:48 +01:00
|
|
|
*
|
|
|
|
* @return string
|
2013-10-13 00:52:44 +02:00
|
|
|
*/
|
2017-01-02 03:57:23 +01:00
|
|
|
function header_render_hints()
|
|
|
|
{
|
2018-10-31 12:48:22 +01:00
|
|
|
$user = auth()->user();
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$hints_renderer = new UserHintsRenderer();
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2018-10-08 21:15:56 +02:00
|
|
|
if ($user) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$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());
|
2017-01-02 15:43:36 +01:00
|
|
|
|
|
|
|
// Important hints:
|
|
|
|
$hints_renderer->addHint(render_user_freeloader_hint(), true);
|
2017-01-02 03:57:23 +01:00
|
|
|
$hints_renderer->addHint(render_user_arrived_hint(), true);
|
|
|
|
$hints_renderer->addHint(render_user_tshirt_hint(), true);
|
|
|
|
$hints_renderer->addHint(render_user_dect_hint(), true);
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
return $hints_renderer->render();
|
2016-11-14 19:10:29 +01:00
|
|
|
}
|
|
|
|
|
2017-01-03 03:22:48 +01:00
|
|
|
/**
|
|
|
|
* @return array
|
|
|
|
*/
|
2017-01-02 03:57:23 +01:00
|
|
|
function make_user_submenu()
|
|
|
|
{
|
|
|
|
global $privileges, $page;
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2018-08-28 22:23:59 +02:00
|
|
|
$user_submenu = make_language_select();
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
if (in_array('user_settings', $privileges) || in_array('logout', $privileges)) {
|
|
|
|
$user_submenu[] = toolbar_item_divider();
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
if (in_array('user_settings', $privileges)) {
|
2017-01-02 15:43:36 +01:00
|
|
|
$user_submenu[] = toolbar_item_link(
|
|
|
|
page_link_to('user_settings'),
|
|
|
|
'list-alt',
|
2018-09-02 02:09:56 +02:00
|
|
|
__('Settings'),
|
2017-01-02 15:43:36 +01:00
|
|
|
$page == 'user_settings'
|
|
|
|
);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
if (in_array('logout', $privileges)) {
|
2017-12-25 23:12:52 +01:00
|
|
|
$user_submenu[] = toolbar_item_link(
|
|
|
|
page_link_to('logout'),
|
|
|
|
'log-out',
|
2018-09-02 02:09:56 +02:00
|
|
|
__('Logout'),
|
2017-12-25 23:12:52 +01:00
|
|
|
$page == 'logout'
|
|
|
|
);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
return $user_submenu;
|
2011-10-11 22:18:36 +02:00
|
|
|
}
|
|
|
|
|
2017-01-03 03:22:48 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
2017-01-02 03:57:23 +01:00
|
|
|
function make_navigation()
|
|
|
|
{
|
|
|
|
global $page, $privileges;
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$menu = [];
|
|
|
|
$pages = [
|
2018-09-02 02:09:56 +02:00
|
|
|
'news' => __('News'),
|
|
|
|
'user_meetings' => __('Meetings'),
|
|
|
|
'user_shifts' => __('Shifts'),
|
|
|
|
'angeltypes' => __('Angeltypes'),
|
|
|
|
'user_questions' => __('Ask the Heaven'),
|
2017-01-02 15:43:36 +01:00
|
|
|
];
|
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
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);
|
|
|
|
}
|
2016-09-29 11:28:42 +02:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$menu = make_room_navigation($menu);
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$admin_menu = [];
|
|
|
|
$admin_pages = [
|
2018-09-02 02:09:56 +02:00
|
|
|
'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_import' => __('Frab import'),
|
|
|
|
'admin_log' => __('Log'),
|
|
|
|
'admin_event_config' => __('Event config'),
|
2017-01-02 15:43:36 +01:00
|
|
|
];
|
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
foreach ($admin_pages as $menu_page => $title) {
|
|
|
|
if (in_array($menu_page, $privileges)) {
|
2017-12-25 23:12:52 +01:00
|
|
|
$admin_menu[] = toolbar_item_link(
|
|
|
|
page_link_to($menu_page),
|
|
|
|
'',
|
|
|
|
$title,
|
|
|
|
$menu_page == $page
|
|
|
|
);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2016-09-29 11:28:42 +02:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
if (count($admin_menu) > 0) {
|
2018-08-29 21:55:32 +02:00
|
|
|
$menu[] = toolbar_dropdown('', __('Admin'), $admin_menu);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2018-09-02 02:09:56 +02:00
|
|
|
return '<ul class="nav navbar-nav">' . join("\n", $menu) . '</ul>';
|
2011-06-02 17:15:03 +02:00
|
|
|
}
|
|
|
|
|
2016-10-05 18:56:50 +02:00
|
|
|
/**
|
|
|
|
* Adds room navigation to the given menu.
|
|
|
|
*
|
2017-01-03 03:22:48 +01:00
|
|
|
* @param string[] $menu Rendered menu
|
|
|
|
* @return string[]
|
2016-10-05 18:56:50 +02:00
|
|
|
*/
|
2017-01-02 03:57:23 +01:00
|
|
|
function make_room_navigation($menu)
|
|
|
|
{
|
|
|
|
global $privileges;
|
2017-01-02 15:43:36 +01:00
|
|
|
|
|
|
|
if (!in_array('view_rooms', $privileges)) {
|
2017-01-02 03:57:23 +01:00
|
|
|
return $menu;
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-07-17 23:08:15 +02:00
|
|
|
// Get a list of all rooms
|
2017-12-10 15:02:37 +01:00
|
|
|
$rooms = Rooms();
|
2017-01-02 03:57:23 +01:00
|
|
|
$room_menu = [];
|
|
|
|
if (in_array('admin_rooms', $privileges)) {
|
2018-08-29 21:55:32 +02:00
|
|
|
$room_menu[] = toolbar_item_link(page_link_to('admin_rooms'), 'list', __('Manage rooms'));
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
|
|
|
if (count($room_menu) > 0) {
|
|
|
|
$room_menu[] = toolbar_item_divider();
|
|
|
|
}
|
|
|
|
foreach ($rooms as $room) {
|
2017-12-10 15:02:37 +01:00
|
|
|
$room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2017-01-03 03:22:48 +01:00
|
|
|
if (count($room_menu) > 0) {
|
2018-08-29 21:55:32 +02:00
|
|
|
$menu[] = toolbar_dropdown('map-marker', __('Rooms'), $room_menu);
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2016-10-07 17:22:48 +02:00
|
|
|
return $menu;
|
2016-10-05 18:56:50 +02:00
|
|
|
}
|
|
|
|
|
2018-08-28 22:23:59 +02:00
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
}
|