summaryrefslogtreecommitdiff
path: root/includes/view
diff options
context:
space:
mode:
authorPhilip Häusler <msquare@notrademark.de>2014-12-19 22:41:55 +0100
committerPhilip Häusler <msquare@notrademark.de>2014-12-19 22:41:55 +0100
commitd02272afd6725d46c37b7ba781c5d40268aa09a6 (patch)
treec7bd969a455aed4e57524df6cfaf13a766fb01c9 /includes/view
parenta791a75b0a893308f35865542149c77f8761b3a0 (diff)
add basic shift view
Diffstat (limited to 'includes/view')
-rw-r--r--includes/view/Shifts_view.php89
-rw-r--r--includes/view/User_view.php84
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 &amp; 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) {