summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/controller/shifttypes_controller.php61
-rw-r--r--includes/sys_template.php32
-rw-r--r--includes/view/ShiftTypes_view.php41
3 files changed, 100 insertions, 34 deletions
diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php
index 6d061111..aaefaa33 100644
--- a/includes/controller/shifttypes_controller.php
+++ b/includes/controller/shifttypes_controller.php
@@ -3,26 +3,70 @@
function shifttype_delete_controller() {
}
+/**
+ * Edit or create shift type.
+ */
function shifttype_edit_controller() {
+ $shifttype_id = null;
+ $name = "";
+ $angeltype_id = null;
+ $description = "";
+
+ $angeltypes = AngelTypes();
+ if ($angeltypes === false)
+ engelsystem_error("Unable to load angel types.");
+
+ if (isset($_REQUEST['submit'])) {
+ $ok = true;
+
+ if (isset($_REQUEST['name']) && $_REQUEST['name'] != '')
+ $name = strip_request_item('name');
+ else {
+ $ok = false;
+ error(_('Please enter a name.'));
+ }
+
+ if (isset($_REQUEST['angeltype_id']) && preg_match("/^[0-9]+$/", $_REQUEST['angeltype_id']))
+ $angeltype_id = $_REQUEST['angeltype_id'];
+ else
+ $angeltype_id = null;
+
+ if (isset($_REQUEST['description']))
+ $description = strip_request_item_nl('description');
+
+ if ($ok) {
+ if ($shifttype_id) {} else {
+ $shifttype_id = ShiftType_create($name, $angeltype_id, $description);
+ if ($shifttype_id === false)
+ engelsystem_error('Unable to create shift type.');
+ engelsystem_log('Created shifttype ' . $name);
+ success(_('Created shifttype.'));
+ }
+ redirect(page_link_to('shifttypes') . '&action=view&shifttype_id=' . $shifttype_id);
+ }
+ }
+
+ return [
+ shifttypes_title(),
+ ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $shifttype_id)
+ ];
}
function shifttype_controller() {
}
+/**
+ * List all shift types.
+ */
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(
+ return [
shifttypes_title(),
ShiftTypes_list_view($shifttypes)
- );
+ ];
}
/**
@@ -32,6 +76,9 @@ function shifttypes_title() {
return _("Shifttypes");
}
+/**
+ * Route shift type actions
+ */
function shifttypes_controller() {
if (! isset($_REQUEST['action']))
$_REQUEST['action'] = 'list';
diff --git a/includes/sys_template.php b/includes/sys_template.php
index d7017bd9..b9ae39de 100644
--- a/includes/sys_template.php
+++ b/includes/sys_template.php
@@ -6,13 +6,13 @@
$themes = array(
"0" => "Engelsystem light",
"1" => "Engelsystem dark",
- "2" => "Engelsystem 31c3"
+ "2" => "Engelsystem 31c3"
);
/**
* Render glyphicon
*
- * @param string $glyph_name
+ * @param string $glyph_name
*/
function glyph($glyph_name) {
return ' <span class="glyphicon glyphicon-' . $glyph_name . '"></span> ';
@@ -21,7 +21,7 @@ function glyph($glyph_name) {
/**
* Renders a tick or a cross by given boolean
*
- * @param boolean $boolean
+ * @param boolean $boolean
*/
function glyph_bool($boolean) {
return '<span class="text-' . ($boolean ? 'success' : 'danger') . '">' . glyph($boolean ? 'ok' : 'remove') . '</span>';
@@ -39,7 +39,7 @@ function heading($content, $number = 1) {
/**
* Render a toolbar.
*
- * @param array $items
+ * @param array $items
* @return string
*/
function toolbar($items = array(), $right = false) {
@@ -49,10 +49,10 @@ function toolbar($items = array(), $right = false) {
/**
* Render a link for a toolbar.
*
- * @param string $href
- * @param string $glyphicon
- * @param string $label
- * @param bool $selected
+ * @param string $href
+ * @param string $glyphicon
+ * @param string $label
+ * @param bool $selected
* @return string
*/
function toolbar_item_link($href, $glyphicon, $label, $selected = false) {
@@ -125,9 +125,9 @@ function form_checkboxes($name, $label, $items, $selected) {
$html = form_element($label, '');
foreach ($items as $key => $item)
$html .= form_checkbox($name . '_' . $key, $item, array_search($key, $selected) !== false);
-
+
return $html;
-
+
$html = "<ul>";
foreach ($items as $key => $item) {
$id = $name . '_' . $key;
@@ -283,17 +283,17 @@ function table($columns, $rows_raw, $data = true) {
// If only one column is given
if (! is_array($columns)) {
$columns = array(
- 'col' => $columns
+ 'col' => $columns
);
-
+
$rows = array();
foreach ($rows_raw as $row)
$rows[] = array(
- 'col' => $row
+ 'col' => $row
);
} else
$rows = $rows_raw;
-
+
if (count($rows) == 0)
return info(_("No data found."), true);
$html = "";
@@ -381,7 +381,7 @@ function html_options($name, $options, $selected = "") {
$html = "";
foreach ($options as $value => $label)
$html .= '<input type="radio"' . ($value == $selected ? ' checked="checked"' : '') . ' name="' . $name . '" value="' . $value . '"> ' . $label;
-
+
return $html;
}
@@ -419,7 +419,7 @@ function ReplaceSmilies($neueckig) {
$neueckig = str_replace(";P", "<img src=\"pic/smiles/icon_mad.gif\">", $neueckig);
$neueckig = str_replace(";oP", "<img src=\"pic/smiles/icon_mad.gif\">", $neueckig);
$neueckig = str_replace("?)", "<img src=\"pic/smiles/icon_question.gif\">", $neueckig);
-
+
return $neueckig;
}
?>
diff --git a/includes/view/ShiftTypes_view.php b/includes/view/ShiftTypes_view.php
index a7df2c87..580e4c45 100644
--- a/includes/view/ShiftTypes_view.php
+++ b/includes/view/ShiftTypes_view.php
@@ -4,6 +4,25 @@ function ShiftType_delete_view($shifttype) {
}
function ShiftType_edit_view($name, $angeltype_id, $angeltypes, $description, $shifttype_id) {
+ $angeltypes_select = [
+ '' => _('All')
+ ];
+ foreach ($angeltypes as $angeltype)
+ $angeltypes_select[$angeltype['id']] = $angeltype['name'];
+
+ return page_with_title($shifttype_id ? _('Edit shifttype') : _('Create shifttype'), [
+ msg(),
+ buttons([
+ button(page_link_to('shifttypes'), shifttypes_title(), 'back')
+ ]),
+ form([
+ form_text('name', _('Name'), $name),
+ form_select('angeltype_id', _('Angeltype'), $angeltypes_select, $angeltype_id),
+ form_textarea('description', _('Description'), $description),
+ form_info('', _('Please use markdown for the description.')),
+ form_submit('submit', _('Save'))
+ ])
+ ]);
}
function ShiftType_view($shifttype) {
@@ -12,21 +31,21 @@ function ShiftType_view($shifttype) {
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")
+ button(page_link_to('shifttypes') . '&action=edit&shifttype_id=' . $shifttype['id'], _('edit'), 'btn-xs'),
+ button(page_link_to('shifttypes') . '&action=delete&shifttype_id=' . $shifttype['id'], _('delete'), 'btn-xs')
]);
}
- return page_with_title(shifttypes_title(), array(
+ return page_with_title(shifttypes_title(), [
msg(),
- buttons(array(
- button(page_link_to('shifttypes') . '&action=edit', _("New shifttype"), 'add')
- )),
- table(array(
- 'name' => _("Name"),
- 'actions' => ""
- ), $shifttypes)
- ));
+ buttons([
+ button(page_link_to('shifttypes') . '&action=edit', _('New shifttype'), 'add')
+ ]),
+ table([
+ 'name' => _('Name'),
+ 'actions' => ''
+ ], $shifttypes)
+ ]);
}
?> \ No newline at end of file