summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/update.sql2
-rw-r--r--includes/controller/shifttypes_controller.php68
-rw-r--r--includes/view/ShiftTypes_view.php23
3 files changed, 90 insertions, 3 deletions
diff --git a/db/update.sql b/db/update.sql
index 8c9bdaec..7375b507 100644
--- a/db/update.sql
+++ b/db/update.sql
@@ -6,6 +6,8 @@ CREATE TABLE IF NOT EXISTS `ShiftTypes` (
`description` text NOT NULL,
PRIMARY KEY (`id`)
) 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 `GroupPrivileges` SET `group_id`=-5, `privilege_id`=(SELECT `id` FROM `Privileges` WHERE `name`='shifttypes');
diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php
index aaefaa33..f5760ad5 100644
--- a/includes/controller/shifttypes_controller.php
+++ b/includes/controller/shifttypes_controller.php
@@ -1,6 +1,31 @@
<?php
+/**
+ * Delete a shifttype.
+ */
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)
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'])) {
$ok = true;
@@ -35,10 +74,16 @@ function shifttype_edit_controller() {
$description = strip_request_item_nl('description');
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);
if ($shifttype_id === false)
- engelsystem_error('Unable to create shift type.');
+ engelsystem_error('Unable to create shifttype.');
engelsystem_log('Created shifttype ' . $name);
success(_('Created shifttype.'));
}
@@ -53,6 +98,25 @@ function shifttype_edit_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)
+ ];
}
/**
diff --git a/includes/view/ShiftTypes_view.php b/includes/view/ShiftTypes_view.php
index 580e4c45..5210f29c 100644
--- a/includes/view/ShiftTypes_view.php
+++ b/includes/view/ShiftTypes_view.php
@@ -1,6 +1,13 @@
<?php
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) {
@@ -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) {