begin room view and shifts filter renderer
parent
27c9650dc4
commit
6fff6a6c1a
@ -0,0 +1,2 @@
|
||||
INSERT INTO `Privileges` (`id`, `name`, `desc`) VALUES (40, 'view_rooms', 'User can view rooms');
|
||||
INSERT INTO `GroupPrivileges` (`id`, `group_id`, `privilege_id`) VALUES (NULL, '-2', '40');
|
@ -1,7 +1,87 @@
|
||||
<?php
|
||||
use Engelsystem\ShiftsFilterRenderer;
|
||||
use Engelsystem\ShiftsFilter;
|
||||
|
||||
/**
|
||||
* Room controllers for managing everything room related.
|
||||
*/
|
||||
|
||||
/**
|
||||
* View a room with its shifts.
|
||||
*/
|
||||
function room_controller() {
|
||||
global $privileges, $user;
|
||||
|
||||
if (! in_array('view_rooms', $privileges)) {
|
||||
redirect(page_link_to());
|
||||
}
|
||||
|
||||
$room = load_room();
|
||||
$all_shifts = Shifts_by_room($room);
|
||||
$days = [];
|
||||
foreach ($all_shifts as $shift) {
|
||||
$day = date("Y-m-d", $shift['start']);
|
||||
if (! in_array($day, $days)) {
|
||||
$days[] = $day;
|
||||
}
|
||||
}
|
||||
|
||||
$shiftsFilter = new ShiftsFilter(false, [
|
||||
$room['RID']
|
||||
], []);
|
||||
$shiftsFilter->setStartTime(time());
|
||||
$shiftsFilter->setEndTime(time() + 24 * 60 * 60);
|
||||
|
||||
$shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter);
|
||||
$shiftsFilterRenderer->enableDaySelection($days, EventConfig());
|
||||
|
||||
return [
|
||||
$room['Name'],
|
||||
Room_view($room, $shiftsFilterRenderer)
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch different room actions.
|
||||
*/
|
||||
function rooms_controller() {
|
||||
global $privileges;
|
||||
|
||||
if (! isset($_REQUEST['action'])) {
|
||||
$_REQUEST['action'] = 'list';
|
||||
}
|
||||
|
||||
switch ($_REQUEST['action']) {
|
||||
default:
|
||||
case 'list':
|
||||
redirect(page_link_to('admin_rooms'));
|
||||
case 'view':
|
||||
return room_controller();
|
||||
}
|
||||
}
|
||||
|
||||
function room_link($room) {
|
||||
return page_link_to('rooms') . '&action=view&room_id=' . $room['RID'];
|
||||
}
|
||||
|
||||
function room_edit_link($room) {
|
||||
return page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads room by request param room_id
|
||||
*/
|
||||
function load_room() {
|
||||
if (! test_request_int('room_id')) {
|
||||
redirect(page_link_to());
|
||||
}
|
||||
|
||||
$room = Room($_REQUEST['room_id']);
|
||||
if ($room == null) {
|
||||
redirect(page_link_to());
|
||||
}
|
||||
|
||||
return $room;
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace Engelsystem;
|
||||
|
||||
class ShiftsFilterRenderer {
|
||||
|
||||
/**
|
||||
* The shiftFilter to render.
|
||||
*
|
||||
* @var ShiftsFilter
|
||||
*/
|
||||
private $shiftsFilter;
|
||||
|
||||
/**
|
||||
* Should the filter display a day selection.
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $daySelectionEnabled = false;
|
||||
|
||||
private $days = [];
|
||||
|
||||
private $event_config = null;
|
||||
|
||||
public function __construct(ShiftsFilter $shiftsFilter) {
|
||||
$this->shiftsFilter = $shiftsFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the filter.
|
||||
*
|
||||
* @return Generated HTML
|
||||
*/
|
||||
public function render() {
|
||||
$toolbar = [];
|
||||
if ($this->daySelectionEnabled && ! empty($this->days)) {
|
||||
$today = date("Y-m-d");
|
||||
$selected_day = date("Y-m-d", $this->shiftsFilter->getStartTime());
|
||||
$day_dropdown_items = [];
|
||||
foreach ($this->days as $day) {
|
||||
$day_dropdown_items[] = toolbar_item_link('', '', $day);
|
||||
}
|
||||
$toolbar[] = toolbar_dropdown('', $selected_day, $day_dropdown_items, 'active');
|
||||
}
|
||||
return toolbar_pills($toolbar);
|
||||
}
|
||||
|
||||
/**
|
||||
* Should the filter display a day selection.
|
||||
*/
|
||||
public function enableDaySelection($days, $event_config) {
|
||||
$this->daySelectionEnabled = true;
|
||||
$this->days = $days;
|
||||
$this->event_config = $event_config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should the filter display a day selection.
|
||||
*/
|
||||
public function isDaySelectionEnabled() {
|
||||
return $this->daySelectionEnabled;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue