From f5681411642b7da1b175fa153d3c234ba97b472a Mon Sep 17 00:00:00 2001 From: msquare Date: Mon, 14 Nov 2016 17:58:15 +0100 Subject: add shift legend and fix dark theme --- includes/model/Shifts_model.php | 35 +++++++++++++++++---------------- includes/sys_template.php | 12 +++++++++++ includes/view/ShiftCalendarRenderer.php | 19 +++++++++++++++--- 3 files changed, 46 insertions(+), 20 deletions(-) (limited to 'includes') diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php index 3d3fa356..2db0a3d3 100644 --- a/includes/model/Shifts_model.php +++ b/includes/model/Shifts_model.php @@ -133,6 +133,24 @@ function Shift_signup_allowed($user, $shift, $angeltype, $user_angeltype = null, return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); } + + if ($user_shifts == null) { + $user_shifts = Shifts_by_user($user); + } + + $signed_up = false; + foreach ($user_shifts as $user_shift) { + if ($user_shift['SID'] == $shift['SID']) { + $signed_up = true; + break; + } + } + + if ($signed_up) { + // you cannot join if you already singed up for this shift + return new ShiftSignupState(ShiftSignupState::SIGNED_UP, $free_entries); + } + if (time() > $shift['start']) { // you can only join if the shift is in future return new ShiftSignupState(ShiftSignupState::SHIFT_ENDED, $free_entries); @@ -152,28 +170,11 @@ function Shift_signup_allowed($user, $shift, $angeltype, $user_angeltype = null, return new ShiftSignupState(ShiftSignupState::ANGELTYPE, $free_entries); } - if ($user_shifts == null) { - $user_shifts = Shifts_by_user($user); - } - if (Shift_collides($shift, $user_shifts)) { // you cannot join if user alread joined a parallel or this shift return new ShiftSignupState(ShiftSignupState::COLLIDES, $free_entries); } - $signed_up = false; - foreach ($user_shifts as $user_shift) { - if ($user_shift['SID'] == $shift['SID']) { - $signed_up = true; - break; - } - } - - if ($signed_up) { - // you cannot join if you already singed up for this shift - return new ShiftSignupState(ShiftSignupState::SIGNED_UP, $free_entries); - } - // Hooray, shift is free for you! return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); } diff --git a/includes/sys_template.php b/includes/sys_template.php index 5d450493..bd53ecaa 100644 --- a/includes/sys_template.php +++ b/includes/sys_template.php @@ -19,6 +19,18 @@ function mute($text) { return '' . $text . ''; } +/** + * Renders a bootstrap label with given content and class. + * + * @param string $content + * The text + * @param string $class + * default, primary, info, success, warning, danger + */ +function label($content, $class = 'default') { + return '' . $content . ''; +} + function progress_bar($valuemin, $valuemax, $valuenow, $class = '', $content = '') { return '
' . $content . '
'; } diff --git a/includes/view/ShiftCalendarRenderer.php b/includes/view/ShiftCalendarRenderer.php index 989bd890..89c1be4c 100644 --- a/includes/view/ShiftCalendarRenderer.php +++ b/includes/view/ShiftCalendarRenderer.php @@ -25,7 +25,7 @@ class ShiftCalendarRenderer { private $shiftsFilter; private $firstBlockStartTime = null; - + private $lastBlockEndTime = null; private $blocksPerSlot = null; @@ -85,7 +85,7 @@ class ShiftCalendarRenderer { public function getFirstBlockStartTime() { return $this->firstBlockStartTime; } - + public function getLastBlockEndTime() { return $this->lastBlockEndTime; } @@ -106,7 +106,7 @@ class ShiftCalendarRenderer { return div('shift-calendar', [ $this->renderTimeLane(), $this->renderShiftLanes() - ]); + ]) . $this->renderLegend(); } /** @@ -222,6 +222,19 @@ class ShiftCalendarRenderer { private function calcBlocksPerSlot() { return ceil(($this->getLastBlockEndTime() - $this->getFirstBlockStartTime()) / ShiftCalendarRenderer::SECONDS_PER_ROW); } + + /** + * Renders a legend explaining the shift coloring + */ + private function renderLegend() { + return div('legend', [ + label(_('Your shift'), 'primary'), + label(_('Help needed'), 'danger'), + label(_('Other angeltype needed / collides with my shifts'), 'warning'), + label(_('Shift is full'), 'success'), + label(_('Shift running/ended'), 'default') + ]); + } } ?> \ No newline at end of file -- cgit v1.3.1