From d7bf050ae76d1ee5fc80bf68c9ce3cbdfddfdd91 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Mon, 25 Mar 2024 11:27:36 +0000
Subject: [PATCH] fixes #3888

Closes #3888

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

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index db9c2d1ef40..bee38d19b35 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -305,7 +305,7 @@ class Admin_CoursesController extends AuthenticatedController
     public function index_action()
     {
         $this->fields = $this->getViewFilters();
-        $this->sortby = $GLOBALS['user']->cfg->MEINE_SEMINARE_SORT ?? 'name';
+        $this->sortby = $GLOBALS['user']->cfg->MEINE_SEMINARE_SORT ?? (Config::get()->IMPORTANT_SEMNUMBER ? 'number' : 'name');
         $this->sortflag = $GLOBALS['user']->cfg->MEINE_SEMINARE_SORT_FLAG ?? 'ASC';
 
         $this->buildSidebar();
diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue
index 9c6e28c84b0..7d39345d038 100644
--- a/resources/vue/components/AdminCourses.vue
+++ b/resources/vue/components/AdminCourses.vue
@@ -235,6 +235,16 @@ export default {
 
             if (sortby === 'last_activity') {
                 sortFunction = (a, b) => a.last_activity_raw - b.last_activity_raw;
+            } else if (sortby === 'name') {
+                sortFunction = (a, b) => {
+                    return collator.compare(striptags(a.name), striptags(b.name))
+                        || collator.compare(striptags(a.number), striptags(b.number));
+                };
+            } else if (sortby === 'number') {
+                sortFunction = (a, b) => {
+                    return collator.compare(striptags(a.number), striptags(b.number))
+                        || collator.compare(striptags(a.name), striptags(b.name));
+                };
             } else {
                 let is_numeric = true;
                 for (let i in array) {
-- 
GitLab