From fe1aecd55bdcdf1250804fcec5416c7e98ada79d Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 3 Apr 2024 07:41:46 +0000
Subject: [PATCH] fixes #3926

Closes #3926

Merge request studip/studip!2782
---
 app/controllers/admin/courses.php         | 1 +
 resources/vue/components/AdminCourses.vue | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index b8cb83e034d..7130cd2d221 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -604,6 +604,7 @@ class Admin_CoursesController extends AuthenticatedController
         }
         if (in_array('semester', $activated_fields)) {
             $d['semester'] = $course->semester_text;
+            $d['semester_sort'] = $course->start_semester ? $course->start_semester->beginn : 0;
         }
         if (in_array('institute', $activated_fields)) {
             $d['institute'] = $course->home_institut ? $course->home_institut->name : $course->institute;
diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue
index a2f61d7739b..4c5d79c5707 100644
--- a/resources/vue/components/AdminCourses.vue
+++ b/resources/vue/components/AdminCourses.vue
@@ -261,6 +261,8 @@ export default {
                     return collator.compare(striptags(a.number), striptags(b.number))
                         || collator.compare(striptags(a.name), striptags(b.name));
                 };
+            } else if (sortby === 'semester') {
+                sortFunction = (a, b) => a.semester_sort - b.semester_sort;
             } else {
                 let is_numeric = true;
                 for (let i in array) {
-- 
GitLab