engelsystem/includes/sys_menu.php

206 lines
6.4 KiB
PHP
Raw Normal View History

2011-06-02 00:48:29 +02:00
<?php
2013-10-13 00:52:44 +02:00
2016-09-30 16:55:23 +02:00
function page_link_to($page = "") {
if ($page == "") {
2014-08-22 22:34:13 +02:00
return '?';
}
2013-10-13 00:52:44 +02:00
return '?p=' . $page;
2011-06-02 00:48:29 +02:00
}
2011-10-11 22:18:36 +02:00
function page_link_to_absolute($page) {
2013-10-13 00:52:44 +02:00
return (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . preg_replace("/\?.*$/", '', $_SERVER['REQUEST_URI']) . page_link_to($page);
}
/**
2016-11-14 19:10:29 +01:00
* Render the user hints
2013-10-13 00:52:44 +02:00
*/
2016-11-14 19:10:29 +01:00
function header_render_hints($user, $page, $enable_tshirt_size) {
2014-12-06 22:26:56 +01:00
$hints = [];
if (isset($user)) {
2014-12-06 22:31:42 +01:00
$hint_class = 'info';
2014-12-07 00:10:09 +01:00
$glyphicon = 'info-sign';
2014-12-06 22:31:42 +01:00
// Erzengel Hinweis für unbeantwortete Fragen
2016-09-29 19:31:26 +02:00
if ($page != "admin_questions") {
2014-12-06 22:31:42 +01:00
$new_questions = admin_new_questions();
if ($new_questions != "") {
2014-12-06 22:31:42 +01:00
$hints[] = $new_questions;
}
2014-12-06 22:31:42 +01:00
}
2014-12-16 09:25:36 +01:00
2014-12-06 22:31:42 +01:00
$unconfirmed_hint = user_angeltypes_unconfirmed_hint();
if ($unconfirmed_hint != '') {
2014-12-06 22:31:42 +01:00
$hints[] = $unconfirmed_hint;
}
2014-12-16 09:25:36 +01:00
if (! isset($user['planned_departure_date']) || $user['planned_departure_date'] == null) {
2015-08-15 14:54:25 +02:00
$hints[] = info(_("Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities."), true);
}
2015-08-15 14:54:25 +02:00
$driver_license_required = user_driver_license_required_hint();
if ($driver_license_required != '') {
$hints[] = $driver_license_required;
}
2014-12-06 22:31:42 +01:00
if (User_is_freeloader($user)) {
2014-12-06 22:26:56 +01:00
$hints[] = error(sprintf(_("You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."), $max_freeloadable_shifts), true);
2014-12-06 22:31:42 +01:00
$hint_class = 'danger';
2014-12-07 00:10:09 +01:00
$glyphicon = 'warning-sign';
2014-12-06 22:31:42 +01:00
}
2014-12-16 09:25:36 +01:00
2014-12-06 22:31:42 +01:00
// Hinweis für Engel, die noch nicht angekommen sind
if ($user['Gekommen'] == 0) {
2014-12-06 22:26:56 +01:00
$hints[] = error(_("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already."), true);
2014-12-06 22:31:42 +01:00
$hint_class = 'danger';
2014-12-07 00:10:09 +01:00
$glyphicon = 'warning-sign';
2014-12-06 22:31:42 +01:00
}
2014-12-16 09:25:36 +01:00
2014-12-06 22:31:42 +01:00
if ($enable_tshirt_size && $user['Size'] == "") {
2014-12-06 22:26:56 +01:00
$hints[] = error(_("You need to specify a tshirt size in your settings!"), true);
2014-12-06 22:31:42 +01:00
$hint_class = 'danger';
2014-12-07 00:10:09 +01:00
$glyphicon = 'warning-sign';
2014-12-06 22:31:42 +01:00
}
2014-12-16 09:25:36 +01:00
2014-12-06 22:31:42 +01:00
if ($user['DECT'] == "") {
2014-12-06 22:26:56 +01:00
$hints[] = error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."), true);
2014-12-06 22:31:42 +01:00
$hint_class = 'danger';
2014-12-07 00:10:09 +01:00
$glyphicon = 'warning-sign';
2014-12-06 22:26:56 +01:00
}
}
if (count($hints) > 0) {
2016-11-14 19:10:29 +01:00
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') . '&amp;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());
}
2014-12-16 09:25:36 +01:00
2016-11-14 19:10:29 +01:00
$toolbar_items[] = header_render_hints($user, $page, $enable_tshirt_size);
2014-09-24 15:11:50 +02:00
$user_submenu = make_langselect();
$user_submenu[] = toolbar_item_divider();
if (in_array('user_myshifts', $privileges)) {
2016-09-29 19:31:26 +02:00
$toolbar_items[] = toolbar_item_link(page_link_to('users') . '&amp;action=view', ' icon-icon_angel', $user['Nick'], $page == 'users');
}
2014-12-16 09:25:36 +01:00
if (in_array('user_settings', $privileges)) {
2016-09-29 19:31:26 +02:00
$user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $page == 'user_settings');
}
2014-12-16 09:25:36 +01:00
if (in_array('logout', $privileges)) {
2016-09-29 19:31:26 +02:00
$user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $page == 'logout');
}
2014-12-16 09:25:36 +01:00
if (count($user_submenu) > 0) {
$toolbar_items[] = toolbar_dropdown('', '', $user_submenu);
}
2014-12-16 09:25:36 +01:00
return toolbar($toolbar_items, true);
2011-10-11 22:18:36 +02:00
}
2011-06-02 00:48:29 +02:00
function make_navigation() {
2016-09-29 19:31:26 +02:00
global $page, $privileges;
2014-12-16 09:25:36 +01:00
$menu = [];
$pages = [
2013-11-25 21:04:58 +01:00
"news" => news_title(),
"user_meetings" => meetings_title(),
"user_shifts" => shifts_title(),
"angeltypes" => angeltypes_title(),
2014-12-16 09:25:36 +01:00
"user_questions" => questions_title()
];
2014-12-16 09:25:36 +01:00
2016-09-30 16:55:23 +02: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);
}
}
2014-12-16 09:25:36 +01:00
$menu = make_room_navigation($menu);
$admin_menu = [];
$admin_pages = [
2013-11-25 21:04:58 +01:00
"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(),
2014-12-16 09:25:36 +01:00
"shifttypes" => shifttypes_title(),
2013-11-25 21:04:58 +01:00
"admin_shifts" => admin_shifts_title(),
"admin_rooms" => admin_rooms_title(),
"admin_groups" => admin_groups_title(),
"admin_import" => admin_import_title(),
2016-07-14 10:19:38 +02:00
"admin_log" => admin_log_title(),
"admin_event_config" => event_config_title()
];
2014-12-16 09:25:36 +01:00
2016-09-30 16:55:23 +02:00
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);
}
}
2014-12-16 09:25:36 +01:00
if (count($admin_menu) > 0) {
$menu[] = toolbar_dropdown('', _("Admin"), $admin_menu);
}
2014-12-16 09:25:36 +01:00
return toolbar($menu);
2011-06-02 17:15:03 +02:00
}
/**
* Adds room navigation to the given menu.
*
* @param string[] $menu
* Rendered menu
*/
function make_room_navigation($menu) {
global $privileges;
2016-10-07 17:22:48 +02:00
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;
}
2011-06-02 00:48:29 +02:00
function make_menu() {
2014-08-23 02:16:12 +02:00
return make_navigation();
2011-06-02 00:48:29 +02:00
}
?>