From 6ceec76e7d27798aeaf968afe2b800bffb9b30f1 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Wed, 27 Dec 2017 13:36:38 +0100 Subject: [PATCH 1/2] feature request: filter angel types based on account settings, closes #362 --- includes/model/UserAngelTypes_model.php | 17 ++++++++ includes/pages/user_shifts.php | 49 ++++++++++++++++------ locale/de_DE.UTF-8/LC_MESSAGES/default.mo | Bin 43684 -> 43711 bytes locale/de_DE.UTF-8/LC_MESSAGES/default.po | 8 +++- public/js/forms.js | 37 +++++++++------- 5 files changed, 80 insertions(+), 31 deletions(-) diff --git a/includes/model/UserAngelTypes_model.php b/includes/model/UserAngelTypes_model.php index 7b22e347..71901b97 100644 --- a/includes/model/UserAngelTypes_model.php +++ b/includes/model/UserAngelTypes_model.php @@ -226,3 +226,20 @@ function UserAngelType_by_User_and_AngelType($user, $angeltype) ] ); } + +/** + * Get an UserAngelTypes by user + * + * @param array $user + * @return array[]|null + */ +function UserAngelTypes_by_User($user) +{ + return DB::select(' + SELECT * + FROM `UserAngelTypes` + WHERE `user_id`=? + ', + [$user['UID']] + ); +} diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php index 2c30c86a..d822054e 100644 --- a/includes/pages/user_shifts.php +++ b/includes/pages/user_shifts.php @@ -186,6 +186,7 @@ function view_user_shifts() $session->set('ShiftsFilter', $shiftsFilter); } + /** @var ShiftsFilter $shiftsFilter */ $shiftsFilter = $session->get('ShiftsFilter'); update_ShiftsFilter($shiftsFilter, in_array('user_shifts_admin', $privileges), $days); @@ -214,6 +215,11 @@ function view_user_shifts() info(render_user_arrived_hint()); } + $ownTypes = []; + foreach (UserAngelTypes_by_User($user) as $type) { + $ownTypes[] = (int)$type['angeltype_id']; + } + return page([ div('col-md-12', [ msg(), @@ -238,7 +244,13 @@ function view_user_shifts() $types, $shiftsFilter->getTypes(), 'types', - _('Angeltypes') . '1' + _('Angeltypes') . '1', + [ + button( + 'javascript: checkOwnTypes(\'selection_types\', ' . json_encode($ownTypes) . ')', + _('Own') + ), + ] ), 'filled_select' => make_select($filled, $shiftsFilter->getFilled(), 'filled', _('Occupancy')), 'task_notice' => @@ -269,12 +281,12 @@ function view_user_shifts() /** * Returns a hint for the user how the ical feature works. */ -function ical_hint() { +function ical_hint() +{ global $user; return heading( - _('iCal export'), 2) - . '

' . sprintf( + _('iCal export'), 2) . '

' . sprintf( _('Export of shown shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key).'), page_link_to('ical', ['key' => $user['api_key']]), page_link_to('shifts_json_export', ['key' => $user['api_key']]), @@ -291,15 +303,23 @@ function get_ids_from_array($array) return $array['id']; } -function make_select($items, $selected, $name, $title = null) +/** + * @param array $items + * @param array $selected + * @param string $name + * @param string $title + * @param array $additionalButtons + * @return string + */ +function make_select($items, $selected, $name, $title = null, $additionalButtons = []) { - $html_items = []; + $htmlItems = []; if (isset($title)) { - $html_items[] = '

' . $title . '

' . "\n"; + $htmlItems[] = '

' . $title . '

' . "\n"; } foreach ($items as $i) { - $html_items[] = '
' + $htmlItems[] = '
' . '' @@ -307,11 +327,14 @@ function make_select($items, $selected, $name, $title = null) . '

'; } $html = '
' . "\n"; - $html .= implode("\n", $html_items); - $html .= buttons([ - button('javascript: checkAll(\'selection_' . $name . '\', true)', _('All'), ''), - button('javascript: checkAll(\'selection_' . $name . '\', false)', _('None'), '') - ]); + $html .= implode("\n", $htmlItems); + + $buttons = []; + $buttons[] = button('javascript: checkAll(\'selection_' . $name . '\', true)', _('All')); + $buttons[] = button('javascript: checkAll(\'selection_' . $name . '\', false)', _('None')); + $buttons = array_merge($buttons, $additionalButtons); + $html .= buttons($buttons); + $html .= '
' . "\n"; return $html; } diff --git a/locale/de_DE.UTF-8/LC_MESSAGES/default.mo b/locale/de_DE.UTF-8/LC_MESSAGES/default.mo index a58c3a058f222f5f8b1c408670462b33c8e978a7..b7f8e94120f84e567df8664aac6498a46ecfbd89 100644 GIT binary patch delta 11467 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 delta 11448 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\n" "Language-Team: \n" "Language: de_DE\n" @@ -1867,6 +1867,10 @@ msgstr "belegt" msgid "free" msgstr "frei" +#: /Users/msquare/workspace/projects/engelsystem/includes/pages/user_shifts.php:251 +msgid "Own" +msgstr "Eigene" + #: /Users/msquare/workspace/projects/engelsystem/includes/pages/user_shifts.php:243 msgid "Occupancy" msgstr "Belegung" diff --git a/public/js/forms.js b/public/js/forms.js index c7f4a095..1efd80bb 100644 --- a/public/js/forms.js +++ b/public/js/forms.js @@ -1,20 +1,25 @@ /** - * Runs through the DOM under the element with the given id, finds all - * checkboxes and sets them to the wanted state. + * Sets all checkboxes to the wanted state * - * @param String - * id Id of the element containing all the checkboxes - * @param Boolean - * checked True if the checkboxes should be checked + * @param {string} id Id of the element containing all the checkboxes + * @param {bool} checked True if the checkboxes should be checked */ function checkAll(id, checked) { - var obj = document.getElementById(id); - var boxes = obj.getElementsByTagName("input"); - for (var i = 0; i < boxes.length; i++) { - if (boxes[i].type === "checkbox" && !boxes[i].disabled) { - boxes[i].checked = checked; - } - } + $("#" + id + " input[type='checkbox']").each(function () { + this.checked = checked; + }); +} + +/** + * Sets the checkboxes according to the given type + * + * @param {string} id The elements ID + * @param {list} shifts_list A list of numbers + */ +function checkOwnTypes(id, shifts_list) { + $('#' + id + ' input[type=checkbox]').each(function () { + this.checked = $.inArray(parseInt(this.value), shifts_list); + }); } /** @@ -82,8 +87,8 @@ $(function () { $("input[type='submit']").prop("readonly", true).addClass("disabled"); return true; }); - - $(".dropdown-menu").css("max-height", function() { - return ($(window).height() - 50) + "px"; + + $(".dropdown-menu").css("max-height", function () { + return ($(window).height() - 50) + "px"; }).css("overflow-y", "scroll"); }); From b00743d6d3a47abf606cf6fc10e1a5792873893b Mon Sep 17 00:00:00 2001 From: Bot Date: Wed, 27 Dec 2017 13:50:53 +0100 Subject: [PATCH 2/2] Formatting --- .../controller/shift_entries_controller.php | 4 +-- includes/view/User_view.php | 26 ++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php index 818557a4..ea5e319e 100644 --- a/includes/controller/shift_entries_controller.php +++ b/includes/controller/shift_entries_controller.php @@ -10,8 +10,8 @@ use Engelsystem\ShiftSignupState; function shift_entries_controller() { global $user; - - if(!isset($user)) { + + if (!isset($user)) { redirect(page_link_to('login')); } diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 198897f3..16267635 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -351,8 +351,11 @@ function User_view_myshift($shift, $user_source, $its_me) } $myshift = [ - 'date' => glyph('calendar') . date('Y-m-d', $shift['start']) . '
' - . glyph('time') . date('H:i', $shift['start']) . ' - ' . date('H:i', $shift['end']), + 'date' => glyph('calendar') + . date('Y-m-d', $shift['start']) . '
' + . glyph('time') . date('H:i', $shift['start']) + . ' - ' + . date('H:i', $shift['end']), 'duration' => round(($shift['end'] - $shift['start']) / 3600, 2) . ' h', 'room' => Room_name_render($shift), 'shift_info' => $shift_info, @@ -364,7 +367,9 @@ function User_view_myshift($shift, $user_source, $its_me) } if ($shift['freeloaded']) { - $myshift['duration'] = '

' . round(-($shift['end'] - $shift['start']) / 3600 * 2, 2) . ' h' . '

'; + $myshift['duration'] = '

' + . round(-($shift['end'] - $shift['start']) / 3600 * 2, 2) . ' h' + . '

'; if (in_array('user_shifts_admin', $privileges)) { $myshift['comment'] .= '
' . '

' . _('Freeloaded') . ': ' . $shift['freeload_comment'] . '

'; @@ -424,7 +429,7 @@ function User_view_myshifts($shifts, $user_source, $its_me, $tshirt_score, $tshi 'comment' => '', 'actions' => '' ]; - if($its_me || $tshirt_admin) { + if ($its_me || $tshirt_admin) { $myshifts_table[] = [ 'date' => '' . _('Your t-shirt score') . '™:', 'duration' => '' . round($tshirt_score, 2) . ' h', @@ -452,8 +457,17 @@ function User_view_myshifts($shifts, $user_source, $its_me, $tshirt_score, $tshi * @param bool $tshirt_admin * @return string */ -function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me, $tshirt_score, $tshirt_admin) -{ +function User_view( + $user_source, + $admin_user_privilege, + $freeloader, + $user_angeltypes, + $user_groups, + $shifts, + $its_me, + $tshirt_score, + $tshirt_admin +) { $user_name = htmlspecialchars($user_source['Vorname']) . ' ' . htmlspecialchars($user_source['Name']); $myshifts_table = User_view_myshifts($shifts, $user_source, $its_me, $tshirt_score, $tshirt_admin);