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 = " " ) {
2016-09-29 11:28:42 +02:00
if ( $page == " " ) {
2014-08-22 22:34:13 +02:00
return '?' ;
2016-09-29 11:28:42 +02:00
}
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 ();
2016-09-29 11:28:42 +02:00
if ( $new_questions != " " ) {
2014-12-06 22:31:42 +01:00
$hints [] = $new_questions ;
2016-09-29 11:28:42 +02:00
}
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 ();
2016-09-29 11:28:42 +02:00
if ( $unconfirmed_hint != '' ) {
2014-12-06 22:31:42 +01:00
$hints [] = $unconfirmed_hint ;
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2016-09-29 11:28:42 +02: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 );
2016-09-29 11:28:42 +02:00
}
2015-08-15 14:54:25 +02:00
2015-12-20 11:36:12 +01:00
$driver_license_required = user_driver_license_required_hint ();
2016-09-29 11:28:42 +02:00
if ( $driver_license_required != '' ) {
2015-12-20 11:36:12 +01:00
$hints [] = $driver_license_required ;
2016-09-29 11:28:42 +02:00
}
2015-12-20 11:36:12 +01:00
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
}
}
2016-09-29 11:28:42 +02: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' ) . '&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 ());
2016-09-29 11:28:42 +02:00
}
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 ();
2016-09-29 11:28:42 +02:00
if ( in_array ( 'user_myshifts' , $privileges )) {
2016-09-29 19:31:26 +02:00
$toolbar_items [] = toolbar_item_link ( page_link_to ( 'users' ) . '&action=view' , ' icon-icon_angel' , $user [ 'Nick' ], $page == 'users' );
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2016-09-29 11:28:42 +02: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' );
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2016-09-29 11:28:42 +02: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' );
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2016-09-29 11:28:42 +02:00
if ( count ( $user_submenu ) > 0 ) {
2014-09-08 14:45:41 +02:00
$toolbar_items [] = toolbar_dropdown ( '' , '' , $user_submenu );
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2014-09-08 14:45:41 +02: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
2016-09-29 11:28:42 +02:00
$menu = [];
$pages = [
2013-11-25 21:04:58 +01:00
" news " => news_title (),
" user_meetings " => meetings_title (),
" user_shifts " => shifts_title (),
2014-01-05 19:30:06 +01:00
" angeltypes " => angeltypes_title (),
2014-12-16 09:25:36 +01:00
" user_questions " => questions_title ()
2016-09-29 11:28:42 +02:00
];
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 );
2016-09-29 11:28:42 +02:00
}
}
2014-12-16 09:25:36 +01:00
2016-10-05 18:56:50 +02:00
$menu = make_room_navigation ( $menu );
2016-09-29 11:28:42 +02:00
$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 (),
2016-09-27 17:49:13 +02:00
" admin_event_config " => event_config_title ()
2016-09-29 11:28:42 +02:00
];
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 );
2016-09-29 11:28:42 +02:00
}
}
2014-12-16 09:25:36 +01:00
2016-09-29 11:28:42 +02:00
if ( count ( $admin_menu ) > 0 ) {
2014-09-08 14:45:41 +02:00
$menu [] = toolbar_dropdown ( '' , _ ( " Admin " ), $admin_menu );
2016-09-29 11:28:42 +02:00
}
2014-12-16 09:25:36 +01:00
2014-09-08 14:45:41 +02:00
return toolbar ( $menu );
2011-06-02 17:15:03 +02:00
}
2016-10-05 18:56:50 +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 ;
}
2016-10-05 18:56:50 +02:00
$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
}
2011-07-12 16:03:07 +02:00
?>