summaryrefslogtreecommitdiff
path: root/includes/view
diff options
context:
space:
mode:
authorPhilip Häusler <msquare@notrademark.de>2014-08-23 01:55:18 +0200
committerPhilip Häusler <msquare@notrademark.de>2014-08-23 01:55:18 +0200
commitf5a094fd8b32d44767f7fc30a65f407f4e1d9945 (patch)
treeeac9a223e103c3066ef6e0b57e0bf215eaa89a72 /includes/view
parent74647e16d37fac9425a4561b49618b52cdc3e75c (diff)
add user view, better bootstrap
Diffstat (limited to 'includes/view')
-rw-r--r--includes/view/User_view.php148
1 files changed, 145 insertions, 3 deletions
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 @@
<?php
-function User_view($user_source) {
+function User_shift_mode_render($shift_mode) {
+ if ($shift_mode == 0)
+ return '<span class="text-success">' . _("Free") . '</span>';
+ if ($shift_mode > 8 * 3600)
+ return '<span class="text-success">' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . '</span>';
+ if ($shift_mode > 0)
+ return '<span class="text-warning">' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . '</span>';
+ if ($shift_mode < 0)
+ return '<span class="text-danger">' . sprintf(_("Current ends in %s min"), floor($shift_mode / 60)) . '</span>';
+}
+
+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('<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . ' <small>' . $user_name . '</small>', 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 .= '<br><b>' . $needed_angel_type['name'] . ':</b> ';
+
+ $shift_entries = array();
+ foreach ($needed_angel_type['users'] as $user_source) {
+ if ($its_me)
+ $member = '<strong>' . User_Nick_render($user_source) . '</strong>';
+ else
+ $member = User_Nick_render($user_source);
+ if ($user_source['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']
+ );
+
+ 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'] = "";
+ 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' => '<b>' . _("Sum:") . '</b>',
+ 'time' => "<b>" . round($timesum / (60 * 60), 1) . " h</b>",
+ 'room' => "",
+ 'shift_info' => "",
+ 'comment' => "",
+ 'actions' => ""
+ );
+
+ return page_with_title('<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . ' <small>' . $user_name . '</small>', array(
+ msg(),
+ div('row', array(
+ div('col-md-3', array(
+ '<h1>',
+ '<span class="glyphicon glyphicon-phone"></span>',
+ $user_source['DECT'],
+ '</h1>'
+ )),
+ div('col-md-3', array(
+ '<h4>' . _("User state") . '</h4>',
+ ($admin_user_privilege && $freeloader) ? '<span class="text-danger"><span class="glyphicon glyphicon-exclamation-sign"></span> ' . _("Freeloader") . '</span><br />' : '',
+ $user_source['Gekommen'] ? User_shift_mode_render($user_shift_mode) . '<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>' : ''
+ )),
+ div('col-md-3', array(
+ '<h4>' . _("Angeltypes") . '</h4>',
+ User_angeltypes_render($user_angeltypes)
+ )),
+ div('col-md-3', array(
+ '<h4>' . _("Rights") . '</h4>',
+ User_groups_render($user_groups)
+ ))
+ )),
+ $admin_user_privilege ? buttons(array(
+ button(page_link_to('admin_user') . '&id=' . $user_source['UID'], '<span class="glyphicon glyphicon-edit"></span> ' . _("edit"))
+ )) : '',
+ ($its_me || $admin_user_privilege) ? '<h2>' . _("Shifts") . '</h2>' : '',
+ ($its_me || $admin_user_privilege) ? table(array(
+ 'date' => _("Day"),
+ 'time' => _("Time"),
+ 'room' => _("Location"),
+ 'shift_info' => _("Name &amp; workmates"),
+ 'comment' => _("Comment"),
+ '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 || $admin_user_privilege) ? '<h2>' . _("Exports") . '</h2>' : '',
+ $its_me ? (sprintf(_("Export of shown shifts. <a href=\"%s\">iCal format</a> or <a href=\"%s\">JSON format</a> available (please keep secret, otherwise <a href=\"%s\">reset the api key</a>)."), 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'], '<span class="glyphicon glyphicon-calendar"></span> ' . _("iCal Export")),
+ button(page_link_to_absolute('shifts_json_export') . '&key=' . $user_source['api_key'], '<span class="glyphicon glyphicon-export"></span> ' . _("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[] = '<span class="' . $class . '">' . ($angeltype['coordinator'] ? '<span class="glyphicon glyphicon-certificate"></span> ' : '') . $angeltype['name'] . '</span>';
+ }
+ return join('<br />', $output);
+}
+
+function User_groups_render($user_groups) {
+ $output = array();
+ foreach ($user_groups as $group) {
+ $output[] = substr($group['Name'], 2);
+ }
+ return join('<br />', $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 '<a href="' . page_link_to('user_myshifts') . '&amp;id=' . $user_source['UID'] . '"><span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . '</a>';
+ return '<a href="' . page_link_to('users') . '&amp;action=view&amp;user_id=' . $user_source['UID'] . '"><span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . '</a>';
else
return htmlspecialchars($user_source['Nick']);
}