diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/controller/shifts_controller.php | 23 | ||||
-rw-r--r-- | includes/sys_menu.php | 2 | ||||
-rw-r--r-- | includes/view/AngelTypes_view.php | 74 | ||||
-rw-r--r-- | includes/view/Shifts_view.php | 10 |
4 files changed, 70 insertions, 39 deletions
diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php index 58131d2e..041f21e2 100644 --- a/includes/controller/shifts_controller.php +++ b/includes/controller/shifts_controller.php @@ -16,7 +16,7 @@ function shift_controller() { global $user, $privileges; if (! in_array('user_shifts', $privileges)) - redirect(page_link_to('user_shifts')); + redirect(page_link_to('?')); if (! isset($_REQUEST['shift_id'])) redirect(page_link_to('user_shifts')); @@ -58,10 +58,31 @@ function shifts_controller() { redirect(page_link_to('?')); case 'view': return shift_controller(); + case 'next': + return shift_next_controller(); } } /** + * Redirects the user to his next shift. + */ +function shift_next_controller() { + global $user, $privileges; + + if (! in_array('user_shifts', $privileges)) + redirect(page_link_to('?')); + + $upcoming_shifts = ShiftEntries_upcoming_for_user($user); + if ($upcoming_shifts === false) + return false; + + if (count($upcoming_shifts) > 0) + redirect(shift_link($upcoming_shifts[0])); + + redirect(page_link_to('user_shifts')); +} + +/** * Export all shifts using api-key. */ function shifts_json_export_all_controller() { diff --git a/includes/sys_menu.php b/includes/sys_menu.php index c5cded11..16577cbc 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -19,7 +19,7 @@ function header_toolbar() { $toolbar_items = array(); if (isset($user)) - $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', 'time', User_shift_state_render($user)); + $toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user)); if (! isset($user) && in_array('register', $privileges)) $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $p == 'register'); diff --git a/includes/view/AngelTypes_view.php b/includes/view/AngelTypes_view.php index 7b3e162a..78563c0b 100644 --- a/includes/view/AngelTypes_view.php +++ b/includes/view/AngelTypes_view.php @@ -1,9 +1,19 @@ <?php + /** * AngelTypes */ /** + * Renders the angeltypes name as link. + * + * @param AngelType $angeltype + */ +function AngelType_name_render($angeltype) { + return '<a href="' . page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id'] . '">' . ($angeltype['restricted'] ? glyph('lock') : '') . $angeltype['name'] . '</a>'; +} + +/** * Render angeltype membership state * * @param UserAngelType $user_angeltype @@ -35,15 +45,15 @@ function AngelType_delete_view($angeltype) { info(sprintf(_("Do you want to delete angeltype %s?"), $angeltype['name']), true), buttons(array( button(page_link_to('angeltypes'), _("cancel"), 'cancel'), - button(page_link_to('angeltypes') . '&action=delete&angeltype_id=' . $angeltype['id'] . '&confirmed', _("delete"), 'ok') - )) + button(page_link_to('angeltypes') . '&action=delete&angeltype_id=' . $angeltype['id'] . '&confirmed', _("delete"), 'ok') + )) )); } function AngelType_edit_view($name, $restricted, $description, $coordinator_mode) { return page_with_title(sprintf(_("Edit %s"), $name), array( buttons(array( - button(page_link_to('angeltypes'), _("Angeltypes"), 'back') + button(page_link_to('angeltypes'), _("Angeltypes"), 'back') )), msg(), form(array( @@ -52,16 +62,16 @@ function AngelType_edit_view($name, $restricted, $description, $coordinator_mode form_info("", _("Restricted angel types can only be used by an angel if enabled by an archangel (double opt-in).")), form_textarea('description', _("Description"), $description), form_info("", _("Please use markdown for the description.")), - form_submit('submit', _("Save")) - )) + form_submit('submit', _("Save")) + )) )); } function AngelType_view($angeltype, $members, $user_angeltype, $admin_user_angeltypes, $admin_angeltypes, $coordinator) { $buttons = array( - button(page_link_to('angeltypes'), _("Angeltypes"), 'back') + button(page_link_to('angeltypes'), _("Angeltypes"), 'back') ); - + if ($user_angeltype == null) $buttons[] = button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("join"), 'add'); else { @@ -69,24 +79,24 @@ function AngelType_view($angeltype, $members, $user_angeltype, $admin_user_angel error(sprintf(_("You are unconfirmed for this angeltype. Please go to the introduction for %s to get confirmed."), $angeltype['name'])); $buttons[] = button(page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $user_angeltype['id'], _("leave"), 'cancel'); } - + if ($admin_angeltypes || $coordinator) $buttons[] = button(page_link_to('angeltypes') . '&action=edit&angeltype_id=' . $angeltype['id'], _("edit"), 'edit'); if ($admin_angeltypes) $buttons[] = button(page_link_to('angeltypes') . '&action=delete&angeltype_id=' . $angeltype['id'], _("delete"), 'delete'); - + $page = array( msg(), - buttons($buttons) + buttons($buttons) ); - + $page[] = '<h3>' . _("Description") . '</h3>'; $parsedown = new Parsedown(); if ($angeltype['description'] != "") $page[] = '<div class="well">' . $parsedown->parse($angeltype['description']) . '</div>'; - + // Team-Coordinators list missing - + $coordinators = array(); $members_confirmed = array(); $members_unconfirmed = array(); @@ -95,7 +105,7 @@ function AngelType_view($angeltype, $members, $user_angeltype, $admin_user_angel if ($angeltype['restricted'] && $member['confirm_user_id'] == null) { $member['actions'] = join(" ", array( '<a href="' . page_link_to('user_angeltypes') . '&action=confirm&user_angeltype_id=' . $member['user_angeltype_id'] . '" class="ok">' . _("confirm") . '</a>', - '<a href="' . page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $member['user_angeltype_id'] . '" class="cancel">' . _("deny") . '</a>' + '<a href="' . page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $member['user_angeltype_id'] . '" class="cancel">' . _("deny") . '</a>' )); $members_unconfirmed[] = $member; } elseif ($member['coordinator']) { @@ -108,7 +118,7 @@ function AngelType_view($angeltype, $members, $user_angeltype, $admin_user_angel if ($admin_user_angeltypes) $member['actions'] = join(" ", array( $admin_angeltypes ? '<a href="' . page_link_to('user_angeltypes') . '&action=update&user_angeltype_id=' . $member['user_angeltype_id'] . '&coordinator=1" class="add">' . _("Add coordinator rights") . '</a>' : '', - '<a href="' . page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $member['user_angeltype_id'] . '" class="cancel">' . _("remove") . '</a>' + '<a href="' . page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $member['user_angeltype_id'] . '" class="cancel">' . _("remove") . '</a>' )); $members_confirmed[] = $member; } @@ -118,74 +128,74 @@ function AngelType_view($angeltype, $members, $user_angeltype, $admin_user_angel $page[] = table(array( 'Nick' => _("Nick"), 'DECT' => _("DECT"), - 'actions' => "" + 'actions' => "" ), $coordinators); } $page[] = '<h3>' . _("Members") . '</h3>'; if ($admin_user_angeltypes) $page[] = buttons(array( - button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("Add"), 'add') + button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("Add"), 'add') )); $page[] = table(array( 'Nick' => _("Nick"), 'DECT' => _("DECT"), - 'actions' => "" + 'actions' => "" ), $members_confirmed); - + if ($admin_user_angeltypes && $angeltype['restricted'] && count($members_unconfirmed) > 0) { $page[] = '<h3>' . _("Unconfirmed") . '</h3>'; $page[] = buttons(array( button(page_link_to('user_angeltypes') . '&action=confirm_all&angeltype_id=' . $angeltype['id'], _("confirm all"), 'ok'), - button(page_link_to('user_angeltypes') . '&action=delete_all&angeltype_id=' . $angeltype['id'], _("deny all"), 'cancel') + button(page_link_to('user_angeltypes') . '&action=delete_all&angeltype_id=' . $angeltype['id'], _("deny all"), 'cancel') )); $page[] = table(array( 'Nick' => _("Nick"), 'DECT' => _("DECT"), - 'actions' => "" + 'actions' => "" ), $members_unconfirmed); } - + return page_with_title(sprintf(_("Team %s"), $angeltype['name']), $page); } /** * Display the list of angeltypes. * - * @param array $angeltypes + * @param array $angeltypes */ function AngelTypes_list_view($angeltypes, $admin_angeltypes) { return page_with_title(angeltypes_title(), array( msg(), buttons(array( $admin_angeltypes ? button(page_link_to('angeltypes') . '&action=edit', _("New angeltype"), 'add') : '', - button(page_link_to('angeltypes') . '&action=about', _("Teams/Job description")) + button(page_link_to('angeltypes') . '&action=about', _("Teams/Job description")) )), table(array( 'name' => _("Name"), 'restricted' => glyph('lock') . _("Restricted"), 'membership' => _("Membership"), - 'actions' => "" - ), $angeltypes) + 'actions' => "" + ), $angeltypes) )); } function AngelTypes_about_view($angeltypes, $user_logged_in) { global $faq_url; - + $content = array( buttons(array( ! $user_logged_in ? button(page_link_to('register'), register_title()) : '', ! $user_logged_in ? button(page_link_to('login'), login_title()) : '', $user_logged_in ? button(page_link_to('angeltypes'), angeltypes_title(), 'back') : '', - button($faq_url, _("FAQ"), "btn-primary") + button($faq_url, _("FAQ"), "btn-primary") )), '<p>' . _("Here is the list of teams and their tasks. If you have questions, read the FAQ.") . '</p>', - '<hr />' + '<hr />' ); $parsedown = new Parsedown(); foreach ($angeltypes as $angeltype) { $content[] = '<h2>' . $angeltype['name'] . '</h2>'; - + if (isset($angeltype['user_angeltype_id'])) { $buttons = array(); if ($angeltype['user_angeltype_id'] != null) @@ -194,14 +204,14 @@ function AngelTypes_about_view($angeltypes, $user_logged_in) { $buttons[] = button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("join"), 'add'); $content[] = buttons($buttons); } - + if ($angeltype['restricted']) $content[] = info(_("This angeltype is restricted by double-opt-in by a team coordinator. Please show up at the according introduction meetings."), true); if ($angeltype['description'] != "") $content[] = '<div class="well">' . $parsedown->parse($angeltype['description']) . '</div>'; $content[] = '<hr />'; } - + return page_with_title(_("Teams/Job description"), $content); } diff --git a/includes/view/Shifts_view.php b/includes/view/Shifts_view.php index 47f83a9f..c796b13e 100644 --- a/includes/view/Shifts_view.php +++ b/includes/view/Shifts_view.php @@ -16,7 +16,7 @@ function Shift_view($shift, $shifttype, $room, $shift_admin, $angeltypes_source, $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 .= '<h3>' . AngelType_name_render($angeltypes[$needed_angeltype['TID']]) . '</h3>'; $needed_angels .= progress_bar(0, $needed_angeltype['count'], $needed_angeltype['taken'], $class, $needed_angeltype['taken'] . ' / ' . $needed_angeltype['count']); $angels = []; @@ -47,7 +47,7 @@ function Shift_view($shift, $shifttype, $room, $shift_admin, $angeltypes_source, button(shift_delete_link($shift), glyph('trash') . _('delete')) ]) : '', div('row', [ - div('col-sm-3', [ + div('col-sm-3 col-xs-6', [ '<h4>' . _('Start') . '</h4>', '<p class="lead">', date('y-m-d', $shift['start']), @@ -55,7 +55,7 @@ function Shift_view($shift, $shifttype, $room, $shift_admin, $angeltypes_source, date('H:i', $shift['start']), '</p>' ]), - div('col-sm-3', [ + div('col-sm-3 col-xs-6', [ '<h4>' . _('End') . '</h4>', '<p class="lead">', date('y-m-d', $shift['end']), @@ -63,11 +63,11 @@ function Shift_view($shift, $shifttype, $room, $shift_admin, $angeltypes_source, date('H:i', $shift['end']), '</p>' ]), - div('col-sm-3', [ + div('col-sm-3 col-xs-6', [ '<h4>' . _('Location') . '</h4>', '<p class="lead">' . $room['Name'] . '</p>' ]), - div('col-sm-3', [ + div('col-sm-3 col-xs-6', [ '<h4>' . _('More info') . '</h4>', $shift['URL'] != '' ? '<a href="' . $shift['URL'] . '">' . $shift['URL'] . '</a>' : '' ]) |