aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMurtaza Sultani <sultani@data-quest.de>2025-05-12 15:05:16 +0200
committerMurtaza Sultani <sultani@data-quest.de>2025-05-12 15:07:06 +0200
commitd946dc329cdd57b05a71fbcfcbc74d61ff9828e8 (patch)
tree829d184d5f1fe26deb77378085d174f55ec353c3
parent6e98cca1a9f434d3045bd84dd8545d632d3a5f04 (diff)
Add user room groups sidebar templatesissue-5605
-rw-r--r--app/controllers/room_management/planning.php34
-rw-r--r--app/views/room_management/templates/user_room_groups.php43
-rw-r--r--resources/assets/stylesheets/scss/resources.scss33
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;
+ }
+ }
+}