diff options
author | Philip Häusler <msquare@notrademark.de> | 2014-12-19 22:41:55 +0100 |
---|---|---|
committer | Philip Häusler <msquare@notrademark.de> | 2014-12-19 22:41:55 +0100 |
commit | d02272afd6725d46c37b7ba781c5d40268aa09a6 (patch) | |
tree | c7bd969a455aed4e57524df6cfaf13a766fb01c9 /includes/view | |
parent | a791a75b0a893308f35865542149c77f8761b3a0 (diff) |
add basic shift view
Diffstat (limited to 'includes/view')
-rw-r--r-- | includes/view/Shifts_view.php | 89 | ||||
-rw-r--r-- | includes/view/User_view.php | 84 |
2 files changed, 131 insertions, 42 deletions
diff --git a/includes/view/Shifts_view.php b/includes/view/Shifts_view.php index d0e7d809..47f83a9f 100644 --- a/includes/view/Shifts_view.php +++ b/includes/view/Shifts_view.php @@ -1,7 +1,94 @@ <?php + +function Shift_view($shift, $shifttype, $room, $shift_admin, $angeltypes_source, $user_shift_admin) { + $parsedown = new Parsedown(); + + $angeltypes = []; + foreach ($angeltypes_source as $angeltype) + $angeltypes[$angeltype['id']] = $angeltype; + + $needed_angels = ''; + foreach ($shift['NeedAngels'] as $needed_angeltype) { + $class = 'progress-bar-warning'; + if ($needed_angeltype['taken'] == 0) + $class = 'progress-bar-danger'; + if ($needed_angeltype['taken'] >= $needed_angeltype['count']) + $class = 'progress-bar-success'; + $needed_angels .= '<div class="list-group-item">'; + $needed_angels .= '<div class="pull-right">' . button(page_link_to('user_shifts') . '&shift_id=' . $shift['SID'] . '&type_id=' . $needed_angeltype['TID'], _('Sign up')) . '</div>'; + $needed_angels .= '<h3>' . $angeltypes[$needed_angeltype['TID']]['name'] . '</h3>'; + $needed_angels .= progress_bar(0, $needed_angeltype['count'], $needed_angeltype['taken'], $class, $needed_angeltype['taken'] . ' / ' . $needed_angeltype['count']); + + $angels = []; + foreach ($shift['ShiftEntry'] as $shift_entry) { + if ($shift_entry['TID'] == $needed_angeltype['TID']) { + $entry = User_Nick_render(User($shift_entry['UID'])); + if ($shift_entry['freeloaded']) + $entry = '<strike>' . $entry . '</strike>'; + if ($user_shift_admin) { + $entry .= ' <div class="btn-group">'; + $entry .= button_glyph(page_link_to('user_myshifts') . '&edit=' . $shift['SID'] . '&id=' . $shift_entry['UID'], 'pencil', 'btn-xs'); + $entry .= button_glyph(page_link_to('user_shifts') . '&entry_id=' . $shift_entry['id'], 'trash', 'btn-xs'); + $entry .= '</div>'; + } + $angels[] = $entry; + } + } + + $needed_angels .= join(', ', $angels); + + $needed_angels .= '</div>'; + } + + return page_with_title($shift['name'] . ' <small class="moment-countdown" data-timestamp="' . $shift['start'] . '">%c</small>', [ + msg(), + $shift_admin ? buttons([ + button(shift_edit_link($shift), glyph('pencil') . _('edit')), + button(shift_delete_link($shift), glyph('trash') . _('delete')) + ]) : '', + div('row', [ + div('col-sm-3', [ + '<h4>' . _('Start') . '</h4>', + '<p class="lead">', + date('y-m-d', $shift['start']), + '<br />', + date('H:i', $shift['start']), + '</p>' + ]), + div('col-sm-3', [ + '<h4>' . _('End') . '</h4>', + '<p class="lead">', + date('y-m-d', $shift['end']), + '<br />', + date('H:i', $shift['end']), + '</p>' + ]), + div('col-sm-3', [ + '<h4>' . _('Location') . '</h4>', + '<p class="lead">' . $room['Name'] . '</p>' + ]), + div('col-sm-3', [ + '<h4>' . _('More info') . '</h4>', + $shift['URL'] != '' ? '<a href="' . $shift['URL'] . '">' . $shift['URL'] . '</a>' : '' + ]) + ]), + div('row', [ + div('col-sm-6', [ + '<h2>' . _('Needed angels') . '</h2>', + '<div class="list-group">' . $needed_angels . '</div>' + ]), + div('col-sm-6', [ + '<h2>' . _('Description') . '</h2>', + $parsedown->parse($shifttype['description']) + ]) + ]) + ]); +} + /** * Calc shift length in format 12:23h. - * @param Shift $shift + * + * @param Shift $shift */ function shift_length($shift) { $length = floor(($shift['end'] - $shift['start']) / (60 * 60)) . ":"; diff --git a/includes/view/User_view.php b/includes/view/User_view.php index 99ca3eeb..59456946 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -16,7 +16,7 @@ $tshirt_sizes = array( 'S-G' => "S Girl", 'M-G' => "M Girl", 'L-G' => "L Girl", - 'XL-G' => "XL Girl" + 'XL-G' => "XL Girl" ); function Users_view($users, $order_by, $arrived_count, $active_count, $force_active_count, $freeloads_count, $tshirts_count) { @@ -28,7 +28,7 @@ function Users_view($users, $order_by, $arrived_count, $active_count, $force_act $user['Tshirt'] = glyph_bool($user['Tshirt']); $user['lastLogIn'] = date(_('m/d/Y h:i a'), $user['lastLogIn']); $user['actions'] = table_buttons(array( - button_glyph(page_link_to('admin_user') . '&id=' . $user['UID'], 'edit', 'btn-xs') + button_glyph(page_link_to('admin_user') . '&id=' . $user['UID'], 'edit', 'btn-xs') )); } $users[] = array( @@ -38,13 +38,13 @@ function Users_view($users, $order_by, $arrived_count, $active_count, $force_act 'force_active' => $force_active_count, 'freeloads' => $freeloads_count, 'Tshirt' => $tshirts_count, - 'actions' => '<strong>' . count($users) . '</strong>' + 'actions' => '<strong>' . count($users) . '</strong>' ); - + return page_with_title(_('All users'), array( msg(), buttons(array( - button(page_link_to('register'), glyph('plus') . _('New user')) + button(page_link_to('register'), glyph('plus') . _('New user')) )), table(array( 'Nick' => Users_table_header_link('Nick', _('Nick'), $order_by), @@ -58,8 +58,8 @@ function Users_view($users, $order_by, $arrived_count, $active_count, $force_act 'Tshirt' => Users_table_header_link('Tshirt', _('T-Shirt'), $order_by), 'Size' => Users_table_header_link('Size', _('Size'), $order_by), 'lastLogIn' => Users_table_header_link('lastLogIn', _('Last login'), $order_by), - 'actions' => '' - ), $users) + 'actions' => '' + ), $users) )); } @@ -71,18 +71,18 @@ function User_shift_state_render($user) { $upcoming_shifts = ShiftEntries_upcoming_for_user($user); if ($upcoming_shifts === false) return false; - + if (count($upcoming_shifts) == 0) return '<span class="text-success">' . _("Free") . '</span>'; - + if ($upcoming_shifts[0]['start'] > time()) if ($upcoming_shifts[0]['start'] - time() > 3600) return '<span class="text-success moment-countdown" data-timestamp="' . $upcoming_shifts[0]['start'] . '">' . _("Next shift %c") . '</span>'; else return '<span class="text-warning moment-countdown" data-timestamp="' . $upcoming_shifts[0]['start'] . '">' . _("Next shift %c") . '</span>'; - + $halfway = ($upcoming_shifts[0]['start'] + $upcoming_shifts[0]['end']) / 2; - + if (time() < $halfway) return '<span class="text-danger moment-countdown" data-timestamp="' . $upcoming_shifts[0]['start'] . '">' . _("Shift starts %c") . '</span>'; else @@ -91,17 +91,17 @@ function User_shift_state_render($user) { function User_view($user_source, $admin_user_privilege, $freeloader, $user_angeltypes, $user_groups, $shifts, $its_me) { global $LETZTES_AUSTRAGEN, $privileges; - + $user_name = htmlspecialchars($user_source['Vorname']) . " " . htmlspecialchars($user_source['Name']); - + $myshifts_table = array(); $html = ""; $timesum = 0; foreach ($shifts as $shift) { - $shift_info = $shift['name']; + $shift_info = '<a href="' . shift_link($shift) . '">' . $shift['name'] . '</a>'; foreach ($shift['needed_angeltypes'] as $needed_angel_type) { $shift_info .= '<br><b>' . $needed_angel_type['name'] . ':</b> '; - + $shift_entries = array(); foreach ($needed_angel_type['users'] as $user_shift) { if ($its_me) @@ -110,34 +110,36 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel $member = User_Nick_render($user_shift); if ($user_shift['freeloaded']) $member = '<strike>' . $member . '</strike>'; - + $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'] + 'comment' => $shift['Comment'] ); - + if ($shift['freeloaded']) { if (in_array("user_shifts_admin", $privileges)) $myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . ': ' . $shift['freeload_comment'] . '</p>'; else $myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . '</p>'; } - - $myshift['actions'] = array(); + + $myshift['actions'] = [ + button(shift_link($shift), glyph('eye-open') . _('view'), 'btn-xs') + ]; if ($its_me || in_array('user_shifts_admin', $privileges)) $myshift['actions'][] = button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $user_source['UID'], glyph('edit') . _('edit'), 'btn-xs'); if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) $myshift['actions'][] = button(page_link_to('user_myshifts') . ((! $its_me) ? '&id=' . $user_source['UID'] : '') . '&cancel=' . $shift['id'], glyph('trash') . _('sign off'), 'btn-xs'); $myshift['actions'] = table_buttons($myshift['actions']); - + if ($shift['freeloaded']) $timesum += - 2 * ($shift['end'] - $shift['start']); else @@ -151,9 +153,9 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel 'room' => "", 'shift_info' => "", 'comment' => "", - 'actions' => "" + 'actions' => "" ); - + return page_with_title('<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . ' <small>' . $user_name . '</small>', array( msg(), div('row', array( @@ -161,7 +163,7 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel '<h1>', '<span class="glyphicon glyphicon-phone"></span>', $user_source['DECT'], - '</h1>' + '</h1>' )), div('col-md-3', array( '<h4>' . _("User state") . '</h4>', @@ -169,28 +171,28 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel $user_source['Gekommen'] ? User_shift_state_render($user_source) . '<br />' : '', ($user_source['Gekommen'] ? '<span class="text-success"><span class="glyphicon glyphicon-home"></span> ' . _("Arrived") . '</span>' : '<span class="text-danger">' . _("Not arrived") . '</span>'), ($user_source['Gekommen'] && $admin_user_privilege && $user_source['Aktiv']) ? ' <span class="text-success">' . _("Active") . '</span>' : '', - ($user_source['Gekommen'] && $admin_user_privilege && $user_source['Tshirt']) ? ' <span class="text-success">' . _("T-Shirt") . '</span>' : '' + ($user_source['Gekommen'] && $admin_user_privilege && $user_source['Tshirt']) ? ' <span class="text-success">' . _("T-Shirt") . '</span>' : '' )), div('col-md-3', array( '<h4>' . _("Angeltypes") . '</h4>', - User_angeltypes_render($user_angeltypes) + User_angeltypes_render($user_angeltypes) )), div('col-md-3', array( '<h4>' . _("Rights") . '</h4>', - User_groups_render($user_groups) - )) + User_groups_render($user_groups) + )) )), div('row space-top', array( div('col-md-12', array( buttons(array( $admin_user_privilege ? button(page_link_to('admin_user') . '&id=' . $user_source['UID'], glyph("edit") . _("edit")) : '', - ($admin_user_privilege && !$user_source['Gekommen']) ? button(page_link_to('admin_arrive') . '&arrived=' . $user_source['UID'], _("arrived")) : '', + ($admin_user_privilege && ! $user_source['Gekommen']) ? button(page_link_to('admin_arrive') . '&arrived=' . $user_source['UID'], _("arrived")) : '', $its_me ? button(page_link_to('user_settings'), glyph('list-alt') . _("Settings")) : '', $its_me ? button(page_link_to('ical') . '&key=' . $user_source['api_key'], glyph('calendar') . _("iCal Export")) : '', $its_me ? button(page_link_to('shifts_json_export') . '&key=' . $user_source['api_key'], glyph('export') . _("JSON Export")) : '', - $its_me ? button(page_link_to('user_myshifts') . '&reset', glyph('repeat') . _('Reset API key')) : '' - )) - )) + $its_me ? button(page_link_to('user_myshifts') . '&reset', glyph('repeat') . _('Reset API key')) : '' + )) + )) )), ($its_me || $admin_user_privilege) ? '<h2>' . _("Shifts") . '</h2>' : '', ($its_me || $admin_user_privilege) ? table(array( @@ -199,9 +201,9 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel 'room' => _("Location"), 'shift_info' => _("Name & workmates"), 'comment' => _("Comment"), - 'actions' => _("Action") + 'actions' => _("Action") ), $myshifts_table) : '', - $its_me && count($shifts) == 0 ? error(sprintf(_("Go to the <a href=\"%s\">shifts table</a> to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : '' + $its_me && count($shifts) == 0 ? error(sprintf(_("Go to the <a href=\"%s\">shifts table</a> to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : '' )); } @@ -214,8 +216,8 @@ function User_password_recovery_view() { _("We will send you an e-mail with a password recovery link. Please use the email address you used for registration."), form(array( form_text('email', _("E-Mail"), ""), - form_submit('submit', _("Recover")) - )) + form_submit('submit', _("Recover")) + )) )); } @@ -229,8 +231,8 @@ function User_password_set_view() { form(array( form_password('password', _("Password")), form_password('password2', _("Confirm password")), - form_submit('submit', _("Save")) - )) + form_submit('submit', _("Save")) + )) )); } @@ -261,7 +263,7 @@ function User_groups_render($user_groups) { /** * Render a users avatar. * - * @param User $user + * @param User $user * @return string */ function User_Avatar_render($user) { @@ -271,7 +273,7 @@ function User_Avatar_render($user) { /** * Render a user nickname. * - * @param User $user_source + * @param User $user_source * @return string */ function User_Nick_render($user_source) { |