diff --git a/db/update.sql b/db/update.sql index d7d91a80..8c9bdaec 100644 --- a/db/update.sql +++ b/db/update.sql @@ -5,7 +5,9 @@ CREATE TABLE IF NOT EXISTS `ShiftTypes` ( `angeltype_id` int(11) DEFAULT NULL, `description` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; +INSERT INTO `engelsystem`.`Privileges` (`id`, `name`, `desc`) VALUES (NULL , 'shifttypes', 'Administrate shift types'); +INSERT INTO `GroupPrivileges` SET `group_id`=-5, `privilege_id`=(SELECT `id` FROM `Privileges` WHERE `name`='shifttypes'); /* cleanup */ ALTER TABLE `User` DROP `ICQ` ; diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php index 3ceb5c0d..6d061111 100644 --- a/includes/controller/shifttypes_controller.php +++ b/includes/controller/shifttypes_controller.php @@ -10,6 +10,19 @@ function shifttype_controller() { } function shifttypes_list_controller() { + global $privileges, $user; + + if (! in_array('shifttypes', $privileges)) + redirect('?'); + + $shifttypes = ShiftTypes(); + if ($shifttypes === false) + engelsystem_error("Unable to load shifttypes."); + + return array( + shifttypes_title(), + ShiftTypes_list_view($shifttypes) + ); } /** diff --git a/includes/sys_menu.php b/includes/sys_menu.php index ffe76219..75c7c3db 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -15,21 +15,21 @@ function page_link_to_absolute($page) { */ function header_toolbar() { global $p, $privileges, $user, $enable_tshirt_size; - + $toolbar_items = array(); - + if (isset($user)) $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', '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(), $p == 'register'); - + if (in_array('login', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $p == 'login'); - + if (isset($user) && in_array('user_messages', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); - + $hints = []; if (isset($user)) { $hint_class = 'info'; @@ -40,30 +40,30 @@ function header_toolbar() { if ($new_questions != "") $hints[] = $new_questions; } - + $unconfirmed_hint = user_angeltypes_unconfirmed_hint(); if ($unconfirmed_hint != '') $hints[] = $unconfirmed_hint; - + if (User_is_freeloader($user)) { $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); $hint_class = 'danger'; $glyphicon = 'warning-sign'; } - + // Hinweis für Engel, die noch nicht angekommen sind if ($user['Gekommen'] == 0) { $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); $hint_class = 'danger'; $glyphicon = 'warning-sign'; } - + if ($enable_tshirt_size && $user['Size'] == "") { $hints[] = error(_("You need to specify a tshirt size in your settings!"), true); $hint_class = 'danger'; $glyphicon = 'warning-sign'; } - + if ($user['DECT'] == "") { $hints[] = error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."), true); $hint_class = 'danger'; @@ -72,40 +72,40 @@ function header_toolbar() { } if (count($hints) > 0) $toolbar_items[] = toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class); - + $user_submenu = make_langselect(); $user_submenu[] = toolbar_item_divider(); if (in_array('user_myshifts', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $p == 'users'); - + if (in_array('user_settings', $privileges)) $user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $p == 'user_settings'); - + if (in_array('logout', $privileges)) $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $p == 'logout'); - + if (count($user_submenu) > 0) $toolbar_items[] = toolbar_dropdown('', '', $user_submenu); - + return toolbar($toolbar_items, true); } function make_navigation() { global $p, $privileges; - + $menu = array(); $pages = array( "news" => news_title(), "user_meetings" => meetings_title(), "user_shifts" => shifts_title(), "angeltypes" => angeltypes_title(), - "user_questions" => questions_title() + "user_questions" => questions_title() ); - + foreach ($pages as $page => $title) if (in_array($page, $privileges)) $menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p); - + $admin_menu = array(); $admin_pages = array( "admin_arrive" => admin_arrive_title(), @@ -113,31 +113,32 @@ function make_navigation() { "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_log" => admin_log_title() ); - + foreach ($admin_pages as $page => $title) if (in_array($page, $privileges)) $admin_menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p); - + if (count($admin_menu) > 0) $menu[] = toolbar_dropdown('', _("Admin"), $admin_menu); - + return toolbar($menu); } function make_navigation_for($name, $pages) { global $privileges, $p; - + $menu = ""; foreach ($pages as $page) if (in_array($page, $privileges)) $menu .= '