From e278ef0a79fbd9ef33b9fa5af1ac7e3e6145c8eb Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Mon, 6 May 2024 11:44:58 +0000
Subject: [PATCH] fixes #3672

Closes #3672

Merge request studip/studip!2649
---
 app/controllers/course/statusgroups.php   | 16 ++++++++++++
 app/views/course/dates/_date_row.php      | 17 ++++++++++++-
 app/views/course/statusgroups/details.php | 30 +++++++++++++++++++++++
 3 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 app/views/course/statusgroups/details.php

diff --git a/app/controllers/course/statusgroups.php b/app/controllers/course/statusgroups.php
index c15733dfc46..48939bdea8d 100644
--- a/app/controllers/course/statusgroups.php
+++ b/app/controllers/course/statusgroups.php
@@ -1487,4 +1487,20 @@ class Course_StatusgroupsController extends AuthenticatedController
         return $members->orderBy($order);
 
     }
+
+    public function details_action(Statusgruppen $group): void
+    {
+        $course = Course::findCurrent();
+
+        if ($course->id !== $group->range_id) {
+            throw new AccessDeniedException();
+        }
+
+        PageLayout::setTitle(sprintf(
+            _('Personen der Gruppe %s'),
+            $group->name
+        ));
+
+        $this->group = $group;
+    }
 }
diff --git a/app/views/course/dates/_date_row.php b/app/views/course/dates/_date_row.php
index 0246455cf82..8aea8b36505 100644
--- a/app/views/course/dates/_date_row.php
+++ b/app/views/course/dates/_date_row.php
@@ -1,4 +1,15 @@
 <?php
+/**
+ * @var bool $show_raumzeit
+ * @var bool $has_access
+ * @var bool $is_next_date
+ * @var bool $cancelled_dates_locked
+ * @var Course_DatesController $controller
+ * @var CourseDate $date
+ * @var Course $course
+ */
+?>
+<?php
 $icon = 'date';
 $dialog_url = $show_raumzeit
             ? $controller->url_for('course/dates/details/' . $date->id)
@@ -30,7 +41,11 @@ $dialog_url = $show_raumzeit
     <? if (count($date->statusgruppen) > 0) : ?>
         <ul class="clean">
         <? foreach ($date->statusgruppen as $statusgruppe) : ?>
-            <li><?= htmlReady($statusgruppe->name) ?></li>
+            <li>
+                <a href="<?= $controller->link_for('course/statusgroups/details', $statusgruppe) ?>" data-dialog="size=default">
+                    <?= htmlReady($statusgruppe->name) ?>
+                </a>
+            </li>
         <? endforeach ?>
         </ul>
     <? else : ?>
diff --git a/app/views/course/statusgroups/details.php b/app/views/course/statusgroups/details.php
new file mode 100644
index 00000000000..db807777b55
--- /dev/null
+++ b/app/views/course/statusgroups/details.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * @var Statusgruppen $group
+ */
+?>
+<table class="default">
+    <caption class="hide-in-dialog">
+        <?= sprintf(_('Gruppe %s'), htmlReady($group->name)) ?>
+    </caption>
+    <colgroup>
+        <col style="width: 32px">
+        <col>
+    </colgroup>
+    <tbody>
+    <? foreach ($group->members as $member): ?>
+        <tr>
+            <td>
+                <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $member->user->username], true) ?>">
+                    <?= $member->avatar() ?>
+                </a>
+            </td>
+            <td>
+                <a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $member->user->username], true) ?>">
+                    <?= htmlReady($member->user->getFullname()) ?>
+                </a>
+            </td>
+        </tr>
+    <? endforeach; ?>
+    </tbody>
+</table>
-- 
GitLab