add update, delete and view for shift type

This commit is contained in:
Philip Häusler 2014-12-16 10:19:38 +01:00
parent 526167ed11
commit 3f8e5e47c0
3 changed files with 90 additions and 3 deletions

View File

@ -6,6 +6,8 @@ CREATE TABLE IF NOT EXISTS `ShiftTypes` (
`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;
ALTER TABLE `ShiftTypes` ADD INDEX ( `angeltype_id` );
ALTER TABLE `ShiftTypes` ADD FOREIGN KEY ( `angeltype_id` ) REFERENCES `engelsystem`.`AngelTypes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
INSERT INTO `engelsystem`.`Privileges` (`id`, `name`, `desc`) VALUES (NULL , 'shifttypes', 'Administrate shift types'); 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'); INSERT INTO `GroupPrivileges` SET `group_id`=-5, `privilege_id`=(SELECT `id` FROM `Privileges` WHERE `name`='shifttypes');

View File

@ -1,6 +1,31 @@
<?php <?php
/**
* Delete a shifttype.
*/
function shifttype_delete_controller() { function shifttype_delete_controller() {
if (! isset($_REQUEST['shifttype_id']))
redirect(page_link_to('shifttypes'));
$shifttype = ShiftType($_REQUEST['shifttype_id']);
if ($shifttype === false)
engelsystem_error('Unable to load shifttype.');
if ($shifttype == null)
redirect(page_link_to('shifttypes'));
if (isset($_REQUEST['confirmed'])) {
$result = ShiftType_delete($shifttype['id']);
if ($result === false)
engelsystem_error('Unable to delete shifttype.');
engelsystem_log('Deleted shifttype ' . $shifttype['name']);
success(sprintf(_('Shifttype %s deleted.'), $shifttype['name']));
redirect(page_link_to('shifttypes'));
}
return array(
sprintf(_("Delete shifttype %s"), $shifttype['name']),
ShiftType_delete_view($shifttype)
);
} }
/** /**
@ -16,6 +41,20 @@ function shifttype_edit_controller() {
if ($angeltypes === false) if ($angeltypes === false)
engelsystem_error("Unable to load angel types."); engelsystem_error("Unable to load angel types.");
if (isset($_REQUEST['shifttype_id'])) {
$shifttype = ShiftType($_REQUEST['shifttype_id']);
if ($shifttype === false)
engelsystem_error('Unable to load shifttype.');
if ($shifttype == null) {
error(_('Shifttype not found.'));
redirect(page_link_to('shifttypes'));
}
$shifttype_id = $shifttype['id'];
$name = $shifttype['name'];
$angeltype_id = $shifttype['angeltype_id'];
$description = $shifttype['description'];
}
if (isset($_REQUEST['submit'])) { if (isset($_REQUEST['submit'])) {
$ok = true; $ok = true;
@ -35,10 +74,16 @@ function shifttype_edit_controller() {
$description = strip_request_item_nl('description'); $description = strip_request_item_nl('description');
if ($ok) { if ($ok) {
if ($shifttype_id) {} else { if ($shifttype_id) {
$result = ShiftType_update($shifttype_id, $name, $angeltype_id, $description);
if ($result === false)
engelsystem_error('Unable to update shifttype.');
engelsystem_log('Updated shifttype ' . $name);
success(_('Updated shifttype.'));
} else {
$shifttype_id = ShiftType_create($name, $angeltype_id, $description); $shifttype_id = ShiftType_create($name, $angeltype_id, $description);
if ($shifttype_id === false) if ($shifttype_id === false)
engelsystem_error('Unable to create shift type.'); engelsystem_error('Unable to create shifttype.');
engelsystem_log('Created shifttype ' . $name); engelsystem_log('Created shifttype ' . $name);
success(_('Created shifttype.')); success(_('Created shifttype.'));
} }
@ -53,6 +98,25 @@ function shifttype_edit_controller() {
} }
function shifttype_controller() { function shifttype_controller() {
if (! isset($_REQUEST['shifttype_id']))
redirect(page_link_to('shifttypes'));
$shifttype = ShiftType($_REQUEST['shifttype_id']);
if ($shifttype === false)
engelsystem_error('Unable to load shifttype.');
if ($shifttype == null)
redirect(page_link_to('shifttypes'));
$angeltype = null;
if ($shifttype['angeltype_id'] != null) {
$angeltype = AngelType($shifttype['angeltype_id']);
if ($angeltype === false)
engelsystem_error('Unable to load angeltype.');
}
return [
$shifttype['name'],
ShiftType_view($shifttype, $angeltype)
];
} }
/** /**

View File

@ -1,6 +1,13 @@
<?php <?php
function ShiftType_delete_view($shifttype) { function ShiftType_delete_view($shifttype) {
return page_with_title(sprintf(_("Delete shifttype %s"), $shifttype['name']), array(
info(sprintf(_("Do you want to delete shifttype %s?"), $shifttype['name']), true),
buttons(array(
button(page_link_to('shifttypes'), _("cancel"), 'cancel'),
button(page_link_to('shifttypes') . '&action=delete&shifttype_id=' . $shifttype['id'] . '&confirmed', _("delete"), 'ok')
))
));
} }
function ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $shifttype_id) { function ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $shifttype_id) {
@ -25,7 +32,21 @@ function ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $s
]); ]);
} }
function ShiftType_view($shifttype) { function ShiftType_view($shifttype, $angeltype) {
$parsedown = new Parsedown();
$title = $shifttype['name'];
if ($angeltype)
$title .= ' <small>' . sprintf(_('for team %s'), $angeltype['name']) . '</small>';
return page_with_title($title, [
msg(),
buttons([
button(page_link_to('shifttypes'), shifttypes_title(), 'back'),
$angeltype ? button(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id'], $angeltype['name']) : '',
button(page_link_to('shifttypes'), _('edit'), 'edit'),
button(page_link_to('shifttypes'), _('delete'), 'delete')
]),
$parsedown->parse($shifttype['description'])
]);
} }
function ShiftTypes_list_view($shifttypes) { function ShiftTypes_list_view($shifttypes) {