From f5a094fd8b32d44767f7fc30a65f407f4e1d9945 Mon Sep 17 00:00:00 2001 From: Philip Häusler Date: Sat, 23 Aug 2014 01:55:18 +0200 Subject: add user view, better bootstrap --- includes/view/User_view.php | 148 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 3 deletions(-) (limited to 'includes/view/User_view.php') diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 20a6de6e..f7011ffd 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -1,8 +1,126 @@ ' . _("Free") . ''; + if ($shift_mode > 8 * 3600) + return '' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . ''; + if ($shift_mode > 0) + return '' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . ''; + if ($shift_mode < 0) + return '' . sprintf(_("Current ends in %s min"), floor($shift_mode / 60)) . ''; +} + +function User_view($user_source, $admin_user_privilege, $freeloader, $user_shift_mode, $user_angeltypes, $user_groups, $shifts, $its_me) { + global $LETZTES_AUSTRAGEN, $privileges; + $user_name = htmlspecialchars($user_source['Vorname']) . " " . htmlspecialchars($user_source['Name']); - return page_with_title(' ' . htmlspecialchars($user_source['Nick']) . ' ' . $user_name . '', array()); + + $myshifts_table = array(); + $html = ""; + $timesum = 0; + foreach ($shifts as $shift) { + $shift_info = $shift['name']; + foreach ($shift['needed_angeltypes'] as $needed_angel_type) { + $shift_info .= '
' . $needed_angel_type['name'] . ': '; + + $shift_entries = array(); + foreach ($needed_angel_type['users'] as $user_source) { + if ($its_me) + $member = '' . User_Nick_render($user_source) . ''; + else + $member = User_Nick_render($user_source); + if ($user_source['freeloaded']) + $member = '' . $member . ''; + + $shift_entries[] = $member; + } + $shift_info .= join(", ", $shift_entries); + } + + $myshift = array( + 'date' => date("Y-m-d", $shift['start']), + 'time' => date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']), + 'room' => $shift['Name'], + 'shift_info' => $shift_info, + 'comment' => $shift['Comment'] + ); + + if ($shift['freeloaded']) { + if (in_array("user_shifts_admin", $privileges)) + $myshift['comment'] .= '

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

'; + else + $myshift['comment'] .= '

' . _("Freeloaded") . '

'; + } + + $myshift['actions'] = ""; + if ($its_me || in_array('user_shifts_admin', $privileges)) + $myshift['actions'] .= img_button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $user_source['UID'], 'pencil', _("edit")); + if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) + $myshift['actions'] .= img_button(page_link_to('user_myshifts') . ((! $its_me) ? '&id=' . $id : '') . '&cancel=' . $shift['id'], 'cross', _("sign off")); + + if ($shift['freeloaded']) + $timesum += - 2 * ($shift['end'] - $shift['start']); + else + $timesum += $shift['end'] - $shift['start']; + $myshifts_table[] = $myshift; + } + if (count($myshifts_table) > 0) + $myshifts_table[] = array( + 'date' => '' . _("Sum:") . '', + 'time' => "" . round($timesum / (60 * 60), 1) . " h", + 'room' => "", + 'shift_info' => "", + 'comment' => "", + 'actions' => "" + ); + + return page_with_title(' ' . htmlspecialchars($user_source['Nick']) . ' ' . $user_name . '', array( + msg(), + div('row', array( + div('col-md-3', array( + '

', + '', + $user_source['DECT'], + '

' + )), + div('col-md-3', array( + '

' . _("User state") . '

', + ($admin_user_privilege && $freeloader) ? ' ' . _("Freeloader") . '
' : '', + $user_source['Gekommen'] ? User_shift_mode_render($user_shift_mode) . '
' : '', + ($user_source['Gekommen'] ? ' ' . _("Arrived") . '' : '' . _("Not arrived") . ''), + ($user_source['Gekommen'] && $admin_user_privilege && $user_source['Aktiv']) ? ' ' . _("Active") . '' : '', + ($user_source['Gekommen'] && $admin_user_privilege && $user_source['Tshirt']) ? ' ' . _("T-Shirt") . '' : '' + )), + div('col-md-3', array( + '

' . _("Angeltypes") . '

', + User_angeltypes_render($user_angeltypes) + )), + div('col-md-3', array( + '

' . _("Rights") . '

', + User_groups_render($user_groups) + )) + )), + $admin_user_privilege ? buttons(array( + button(page_link_to('admin_user') . '&id=' . $user_source['UID'], ' ' . _("edit")) + )) : '', + ($its_me || $admin_user_privilege) ? '

' . _("Shifts") . '

' : '', + ($its_me || $admin_user_privilege) ? table(array( + 'date' => _("Day"), + 'time' => _("Time"), + 'room' => _("Location"), + 'shift_info' => _("Name & workmates"), + 'comment' => _("Comment"), + 'actions' => _("Action") + ), $myshifts_table) : '', + $its_me && count($shifts) == 0 ? error(sprintf(_("Go to the shifts table to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : '', + ($its_me || $admin_user_privilege) ? '

' . _("Exports") . '

' : '', + $its_me ? (sprintf(_("Export of shown shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key)."), page_link_to_absolute('ical') . '&key=' . $user_source['api_key'], page_link_to_absolute('shifts_json_export') . '&key=' . $user_source['api_key'], page_link_to('user_myshifts') . '&reset')) : '', + (! $its_me && $admin_user_privilege) ? buttons(array( + button(page_link_to_absolute('ical') . '&key=' . $user_source['api_key'], ' ' . _("iCal Export")), + button(page_link_to_absolute('shifts_json_export') . '&key=' . $user_source['api_key'], ' ' . _("JSON Export")) + )) : '' + )); } /** @@ -53,6 +171,30 @@ function User_password_set_view() { )); } +function User_angeltypes_render($user_angeltypes) { + $output = array(); + foreach ($user_angeltypes as $angeltype) { + $class = ""; + if ($angeltype['restricted'] == 1) + if ($angeltype['confirm_user_id'] != null) + $class = 'text-success'; + else + $class = 'text-warning'; + else + $class = 'text-success'; + $output[] = '' . ($angeltype['coordinator'] ? ' ' : '') . $angeltype['name'] . ''; + } + return join('
', $output); +} + +function User_groups_render($user_groups) { + $output = array(); + foreach ($user_groups as $group) { + $output[] = substr($group['Name'], 2); + } + return join('
', $output); +} + /** * Render a users avatar. * @@ -72,7 +214,7 @@ function User_Avatar_render($user) { function User_Nick_render($user_source) { global $user, $privileges; if ($user['UID'] == $user_source['UID'] || in_array('user_shifts_admin', $privileges)) - return ' ' . htmlspecialchars($user_source['Nick']) . ''; + return ' ' . htmlspecialchars($user_source['Nick']) . ''; else return htmlspecialchars($user_source['Nick']); } -- cgit v1.3.1