From f118b8799b356f26c1746e5350955092e03661a9 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 13 Jun 2023 09:24:57 +0000
Subject: [PATCH] fix and failproof STUDIP.Tables.enhanceSortableTable, fixes
 #2728

Closes #2728

Merge request studip/studip!1846
---
 resources/assets/javascripts/lib/table.js |  8 +++++++-
 resources/assets/javascripts/mvv.js       | 14 +++++++++-----
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/resources/assets/javascripts/lib/table.js b/resources/assets/javascripts/lib/table.js
index d3f2ab32d77..d9507d93ba8 100644
--- a/resources/assets/javascripts/lib/table.js
+++ b/resources/assets/javascripts/lib/table.js
@@ -23,6 +23,12 @@ class Table
             table = table.get(0);
         }
 
+        // Failproof
+        if (!table) {
+            console.error('Called enhanceSortableTable with invalid table object');
+            return;
+        }
+
         await STUDIP.loadChunk('tablesorter');
 
         // Iterate over the header columns and determine sorting mechanism
@@ -63,7 +69,7 @@ class Table
         }
 
         // Get additional widgets
-        const widgets = $(table).data().sortWidgets ?? [];
+        const widgets = table.dataset.sortWidgets ?? [];
 
         // Actually activate table sorter
         $(table).tablesorter({
diff --git a/resources/assets/javascripts/mvv.js b/resources/assets/javascripts/mvv.js
index 5caba3f8c21..5b3b21f506d 100644
--- a/resources/assets/javascripts/mvv.js
+++ b/resources/assets/javascripts/mvv.js
@@ -560,7 +560,9 @@ STUDIP.MVV.Content = {
             jQuery('body').trigger('ajaxLoaded');
             jQuery(row).show();
             STUDIP.MVV.Sort.init(jQuery('.sortable'));
-            STUDIP.Table.enhanceSortableTable(row.find('.sortable-table'));
+            row.find('.sortable-table').each((index, element) => {
+                STUDIP.Table.enhanceSortableTable(element);
+            });
         });
         element.closest('tbody').toggleClass('collapsed not-collapsed');
         return false;
@@ -808,8 +810,9 @@ STUDIP.MVV.Aufbaustg = {
                 data: $(df).serialize(),
                 type: 'POST',
                 success: function (data) {
-                    $('#mvv-aufbaustg-table').html($(data).html());
-                    STUDIP.Table.enhanceSortableTable($('#mvv-aufbaustg-table').find('.sortable-table'));
+                    $('#mvv-aufbaustg-table').html($(data).html()).find('.sortable-table').each((index, element) => {
+                        STUDIP.Table.enhanceSortableTable(element);
+                    });
                 }
             })
         }, 100);
@@ -820,8 +823,9 @@ STUDIP.MVV.Aufbaustg = {
                 url: STUDIP.URLHelper.getURL('dispatch.php/studiengaenge/studiengaenge/aufbaustg_table/' + stg_id),
                 type: 'GET',
                 success: function (data) {
-                    $('#mvv-aufbaustg-table').html($(data).html());
-                    STUDIP.Table.enhanceSortableTable($('#mvv-aufbaustg-table').find('.sortable-table'));
+                    $('#mvv-aufbaustg-table').html($(data).html()).find('.sortable-table').each((index, element) => {
+                        STUDIP.Table.enhanceSortableTable(element);
+                    });
                 }
             })
         }, 100);
-- 
GitLab