From 0142b925f6e4d3f8e3c0660b5c8c4bc9377b3a0e Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 23 Oct 2024 07:04:26 +0000
Subject: [PATCH] preselect only institute, fixes #4241

Closes #4241

Merge request studip/studip!3450
---
 app/controllers/admin/courses.php         | 9 +++++++--
 lib/classes/sidebar/SelectListElement.php | 5 +++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index 8a641901e73..7cdf64e79c2 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -171,11 +171,16 @@ class Admin_CoursesController extends AuthenticatedController
             Now draw the configurable elements according
             to the values inside the visibleElements array.
         */
+        $institute_id = null;
+
         if (!empty($visibleElements['search'])) {
             $this->setSearchWiget();
         }
         if (!empty($visibleElements['institute'])) {
-            $filter->addElement($this->getInstSelector());
+            $inst_selector = $filter->addElement($this->getInstSelector());
+            if (count($inst_selector->getOptions()) === 1) {
+                $institute_id = $this->insts[0]['Institut_id'];
+            }
         }
         if (!empty($visibleElements['semester'])) {
             $filter->addElement($this->getSemesterSelector());
@@ -187,7 +192,7 @@ class Admin_CoursesController extends AuthenticatedController
             $filter->addElement($this->getCourseTypeWidget());
         }
         if (!empty($visibleElements['teacher'])) {
-            $filter->addElement($this->getTeacherWidget());
+            $filter->addElement($this->getTeacherWidget($institute_id));
         }
 
         $sidebar->addWidget($filter, 'filter');
diff --git a/lib/classes/sidebar/SelectListElement.php b/lib/classes/sidebar/SelectListElement.php
index 479961791b5..1927d653464 100644
--- a/lib/classes/sidebar/SelectListElement.php
+++ b/lib/classes/sidebar/SelectListElement.php
@@ -30,6 +30,11 @@ class SelectListElement extends WidgetElement implements ArrayAccess
         $this->options = $options;
     }
 
+    public function getOptions(): array
+    {
+        return $this->options;
+    }
+
     public function render()
     {
         $option_content = '';
-- 
GitLab