diff options
| -rw-r--r-- | app/controllers/room_management/planning.php | 34 | ||||
| -rw-r--r-- | app/views/room_management/templates/user_room_groups.php | 43 | ||||
| -rw-r--r-- | resources/assets/stylesheets/scss/resources.scss | 33 |
3 files changed, 92 insertions, 18 deletions
diff --git a/app/controllers/room_management/planning.php b/app/controllers/room_management/planning.php index c7fda25..743162a 100644 --- a/app/controllers/room_management/planning.php +++ b/app/controllers/room_management/planning.php @@ -30,6 +30,7 @@ class RoomManagement_PlanningController extends AuthenticatedController if (Navigation::hasItem('/resources/planning/index')) { Navigation::activateItem('/resources/planning/index'); } + $selected_clipboard_id = Request::int('clipboard_id', $selected_clipboard_id); $this->no_clipboard = false; @@ -88,24 +89,6 @@ class RoomManagement_PlanningController extends AuthenticatedController $this->get_template_factory()->open('resources/room_planning/_sidebar_date_selection.php') )); - $clipboards = Clipboard::getClipboardsForUser($GLOBALS['user']->id); - if (!empty($clipboards)) { - $clipboard_widget = new SelectWidget( - _('Individuelle Raumgruppen'), - $this->indexURL(), - 'clipboard_id', - 'get' - ); - foreach ($clipboards as $clipboard) { - $clipboard_widget->addElement(new SelectElement( - $clipboard->id, - $clipboard->name, - $clipboard->id === $selected_clipboard_id - ), "clipboard_id-{$clipboard->id}"); - } - $sidebar->addWidget($clipboard_widget); - } - $rooms = []; if ($selected_clipboard_id) { $clipboard = Clipboard::find($selected_clipboard_id); @@ -128,6 +111,20 @@ class RoomManagement_PlanningController extends AuthenticatedController return; } + $clipboards = Clipboard::getClipboardsForUser(User::findCurrent()->user_id); + if ($clipboards) { + $sidebar->addWidget(new TemplateWidget( + _('Individuelle Raumgruppen'), + $this->get_template_factory()->open('room_management/templates/user_room_groups.php'), + [ + 'url' => $this->indexURL(), + 'user_groups' => $clipboards, + 'active_group' => $this->clipboard, + 'rooms' => $rooms + ] + )); + } + //Generate the resources array for the fullcalendar scheduler plugin: $this->scheduler_resources = []; foreach ($rooms as $room) { @@ -258,6 +255,7 @@ class RoomManagement_PlanningController extends AuthenticatedController 'text' => _('Anfrage') ]; } + } public function semester_plan_action($selected_clipboard_id = null) diff --git a/app/views/room_management/templates/user_room_groups.php b/app/views/room_management/templates/user_room_groups.php new file mode 100644 index 0000000..4ff654e --- /dev/null +++ b/app/views/room_management/templates/user_room_groups.php @@ -0,0 +1,43 @@ +<?php +/** + * @var string $url + * @var SimpleORMapCollection<Clipboard> $user_groups + * @var Clipboard $active_group + * @var SimpleORMapCollection<Room> $rooms + * @var Array $params + */ +?> + +<div class="user-room-groups-widget"> + <form action="<?= URLHelper::getLink($url) ?>" class="default" method="get"> + <select name="clipboard_id" class="submit-upon-select"> + <?php foreach ($user_groups as $user_group): ?> + <option value="<?= $user_group->id ?>" <?= $user_group->id === $active_group->id ? 'selected' : '' ?>> + <?= $user_group->name ?> + </option> + <?php endforeach; ?> + </select> + </form> + + <ul class="user-room-groups-widget__rooms"> + <?php foreach ($rooms as $room): ?> + <li class="user-room-groups-widget__room-item"> + <?= $room->name ?> + <div class="actions"> + <a href="<?= Room::getLinkForAction('show', $room->id) ?>" data-dialog> + <?= Icon::create('info-circle')->asImg([ + 'title' => _('Rauminformationen'), + 'class' => 'text-bottom' + ])?> + </a> + <a href="<?= Room::getLinkForAction('semester_plan', $room->id) ?>" target="_blank"> + <?= Icon::create('timetable')->asImg([ + 'title' => _('Semesterbelegung'), + 'class' => 'text-bottom' + ])?> + </a> + </div> + </li> + <?php endforeach; ?> + </ul> +</div> diff --git a/resources/assets/stylesheets/scss/resources.scss b/resources/assets/stylesheets/scss/resources.scss index 517ad47..ec2d0e5 100644 --- a/resources/assets/stylesheets/scss/resources.scss +++ b/resources/assets/stylesheets/scss/resources.scss @@ -523,3 +523,36 @@ button.takes-place-status-toggle { border: none; background: none; } + +.user-room-groups-widget { + &__rooms { + list-style: none; + margin-top: 5px; + padding: 0 6px; + border: 1px solid $light-gray-color-40; + border-radius: $border-radius; + max-height: 200px; + overflow-y: scroll; + overflow-x: hidden; + } + + &__room-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + padding: 4px; + margin: 0 -6px; + transition: background-color 0.2s; + + &:hover { + background-color: $color--action-menu-hover; + } + + .actions { + display: inline-flex; + gap: 5px; + align-items: center; + } + } +} |
