shift type list

This commit is contained in:
Philip Häusler 2014-12-16 09:25:36 +01:00
parent a73e98a8e0
commit c8cc46886b
5 changed files with 63 additions and 28 deletions

View File

@ -5,7 +5,9 @@ CREATE TABLE IF NOT EXISTS `ShiftTypes` (
`angeltype_id` int(11) DEFAULT NULL, `angeltype_id` int(11) DEFAULT NULL,
`description` text NOT NULL, `description` text NOT NULL,
PRIMARY KEY (`id`) 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 */ /* cleanup */
ALTER TABLE `User` DROP `ICQ` ; ALTER TABLE `User` DROP `ICQ` ;

View File

@ -10,6 +10,19 @@ function shifttype_controller() {
} }
function shifttypes_list_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)
);
} }
/** /**

View File

@ -15,21 +15,21 @@ function page_link_to_absolute($page) {
*/ */
function header_toolbar() { function header_toolbar() {
global $p, $privileges, $user, $enable_tshirt_size; global $p, $privileges, $user, $enable_tshirt_size;
$toolbar_items = array(); $toolbar_items = array();
if (isset($user)) if (isset($user))
$toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', 'time', User_shift_state_render($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)) if (! isset($user) && in_array('register', $privileges))
$toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $p == 'register'); $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $p == 'register');
if (in_array('login', $privileges)) if (in_array('login', $privileges))
$toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $p == 'login'); $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $p == 'login');
if (isset($user) && in_array('user_messages', $privileges)) if (isset($user) && in_array('user_messages', $privileges))
$toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages());
$hints = []; $hints = [];
if (isset($user)) { if (isset($user)) {
$hint_class = 'info'; $hint_class = 'info';
@ -40,30 +40,30 @@ function header_toolbar() {
if ($new_questions != "") if ($new_questions != "")
$hints[] = $new_questions; $hints[] = $new_questions;
} }
$unconfirmed_hint = user_angeltypes_unconfirmed_hint(); $unconfirmed_hint = user_angeltypes_unconfirmed_hint();
if ($unconfirmed_hint != '') if ($unconfirmed_hint != '')
$hints[] = $unconfirmed_hint; $hints[] = $unconfirmed_hint;
if (User_is_freeloader($user)) { 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); $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'; $hint_class = 'danger';
$glyphicon = 'warning-sign'; $glyphicon = 'warning-sign';
} }
// Hinweis für Engel, die noch nicht angekommen sind // Hinweis für Engel, die noch nicht angekommen sind
if ($user['Gekommen'] == 0) { 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); $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'; $hint_class = 'danger';
$glyphicon = 'warning-sign'; $glyphicon = 'warning-sign';
} }
if ($enable_tshirt_size && $user['Size'] == "") { if ($enable_tshirt_size && $user['Size'] == "") {
$hints[] = error(_("You need to specify a tshirt size in your settings!"), true); $hints[] = error(_("You need to specify a tshirt size in your settings!"), true);
$hint_class = 'danger'; $hint_class = 'danger';
$glyphicon = 'warning-sign'; $glyphicon = 'warning-sign';
} }
if ($user['DECT'] == "") { 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); $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'; $hint_class = 'danger';
@ -72,40 +72,40 @@ function header_toolbar() {
} }
if (count($hints) > 0) if (count($hints) > 0)
$toolbar_items[] = toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class); $toolbar_items[] = toolbar_popover($glyphicon . ' text-' . $hint_class, '', $hints, 'bg-' . $hint_class);
$user_submenu = make_langselect(); $user_submenu = make_langselect();
$user_submenu[] = toolbar_item_divider(); $user_submenu[] = toolbar_item_divider();
if (in_array('user_myshifts', $privileges)) if (in_array('user_myshifts', $privileges))
$toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $p == 'users'); $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $p == 'users');
if (in_array('user_settings', $privileges)) if (in_array('user_settings', $privileges))
$user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $p == 'user_settings'); $user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $p == 'user_settings');
if (in_array('logout', $privileges)) if (in_array('logout', $privileges))
$user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $p == 'logout'); $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $p == 'logout');
if (count($user_submenu) > 0) if (count($user_submenu) > 0)
$toolbar_items[] = toolbar_dropdown('', '', $user_submenu); $toolbar_items[] = toolbar_dropdown('', '', $user_submenu);
return toolbar($toolbar_items, true); return toolbar($toolbar_items, true);
} }
function make_navigation() { function make_navigation() {
global $p, $privileges; global $p, $privileges;
$menu = array(); $menu = array();
$pages = array( $pages = array(
"news" => news_title(), "news" => news_title(),
"user_meetings" => meetings_title(), "user_meetings" => meetings_title(),
"user_shifts" => shifts_title(), "user_shifts" => shifts_title(),
"angeltypes" => angeltypes_title(), "angeltypes" => angeltypes_title(),
"user_questions" => questions_title() "user_questions" => questions_title()
); );
foreach ($pages as $page => $title) foreach ($pages as $page => $title)
if (in_array($page, $privileges)) if (in_array($page, $privileges))
$menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p); $menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p);
$admin_menu = array(); $admin_menu = array();
$admin_pages = array( $admin_pages = array(
"admin_arrive" => admin_arrive_title(), "admin_arrive" => admin_arrive_title(),
@ -113,31 +113,32 @@ function make_navigation() {
"admin_user" => admin_user_title(), "admin_user" => admin_user_title(),
"admin_free" => admin_free_title(), "admin_free" => admin_free_title(),
"admin_questions" => admin_questions_title(), "admin_questions" => admin_questions_title(),
"shifttypes" => shifttypes_title(),
"admin_shifts" => admin_shifts_title(), "admin_shifts" => admin_shifts_title(),
"admin_rooms" => admin_rooms_title(), "admin_rooms" => admin_rooms_title(),
"admin_groups" => admin_groups_title(), "admin_groups" => admin_groups_title(),
"admin_import" => admin_import_title(), "admin_import" => admin_import_title(),
"admin_log" => admin_log_title() "admin_log" => admin_log_title()
); );
foreach ($admin_pages as $page => $title) foreach ($admin_pages as $page => $title)
if (in_array($page, $privileges)) if (in_array($page, $privileges))
$admin_menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p); $admin_menu[] = toolbar_item_link(page_link_to($page), '', $title, $page == $p);
if (count($admin_menu) > 0) if (count($admin_menu) > 0)
$menu[] = toolbar_dropdown('', _("Admin"), $admin_menu); $menu[] = toolbar_dropdown('', _("Admin"), $admin_menu);
return toolbar($menu); return toolbar($menu);
} }
function make_navigation_for($name, $pages) { function make_navigation_for($name, $pages) {
global $privileges, $p; global $privileges, $p;
$menu = ""; $menu = "";
foreach ($pages as $page) foreach ($pages as $page)
if (in_array($page, $privileges)) if (in_array($page, $privileges))
$menu .= '<li' . ($page == $p ? ' class="selected"' : '') . '><a href="' . page_link_to($page) . '">' . $title . '</a></li>'; $menu .= '<li' . ($page == $p ? ' class="selected"' : '') . '><a href="' . page_link_to($page) . '">' . $title . '</a></li>';
if ($menu != "") if ($menu != "")
$menu = '<nav class="container"><h4>' . $name . '</h4><ul class="content">' . $menu . '</ul></nav>'; $menu = '<nav class="container"><h4>' . $name . '</h4><ul class="content">' . $menu . '</ul></nav>';
return $menu; return $menu;

View File

@ -9,7 +9,24 @@ function ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $s
function ShiftType_view($shifttype) { function ShiftType_view($shifttype) {
} }
function ShiftTypes_list_view() { function ShiftTypes_list_view($shifttypes) {
foreach ($shifttypes as &$shifttype) {
$shifttype['actions'] = table_buttons([
button(page_link_to('shifttypes') . '&action=edit&shifttype_id=' . $shifttype['id'], _("edit"), "btn-xs"),
button(page_link_to('shifttypes') . '&action=delete&shifttype_id=' . $shifttypes['id'], _("delete"), "btn-xs")
]);
}
return page_with_title(shifttypes_title(), array(
msg(),
buttons(array(
button(page_link_to('shifttypes') . '&action=edit', _("New shifttype"), 'add')
)),
table(array(
'name' => _("Name"),
'actions' => ""
), $shifttypes)
));
} }
?> ?>

View File

@ -131,6 +131,8 @@ if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && (i
list($title, $content) = users_controller(); list($title, $content) = users_controller();
} elseif ($p == "user_angeltypes") { } elseif ($p == "user_angeltypes") {
list($title, $content) = user_angeltypes_controller(); list($title, $content) = user_angeltypes_controller();
} elseif ($p == "shifttypes") {
list($title, $content) = shifttypes_controller();
} elseif ($p == "news") { } elseif ($p == "news") {
$title = news_title(); $title = news_title();
$content = user_news(); $content = user_news();